<?php
//Файл боя
include_once "./#sys/bd.php";
include_once SYS."/aut.php";

//
function addToLog($logfile,$text)
{
  if (file_exists($logfile))
    {
    $fp = fopen($logfile,"a");
    flock ($fp,LOCK_EX);
    fputs($fp,$text);
    flock ($fp,LOCK_UN);
    fclose($fp);
    $retvar=true;
    }else{
    $retvar=false;
    }
return $retvar; 
}
//
//
#include_once GH."#inc/cutinfo.php";
#include_once GH."#inc/mess.php";
// Старт боя если установлена fight и найден пользователь
$err="";
if(isset($_GET['fight']) and $user['fight']<=0)
{
$fight=intval(abs($_GET['fight']));
$interval=$time-300; //Время онлайна
$ank=mysql_fetch_array(mysql_query("SELECT * FROM `guser` WHERE `uid`='$fight' AND `uptime`>'$interval' LIMIT 1"),MYSQL_ASSOC);

if(!$ank){$err.="Пользователь не найден!<br />";}
//Проверка локации
if($ank['locate']!=$guser['locate']){$err="Пользователя нет в Вашей локации!<br />";}
#if($ank['fight']>0){$err.="Пользователь уже в бою!<br />";}
  if($err=="" and $ank['fight']<=0) //если нет ошибок то создаем новый бой
    {
      //
       mysql_query("INSERT INTO `gfight` SET 
       `akom`='$guser[uid]',
       `bkom`='$ank[uid]',
       `up_a`='$time',
       `up_b`='$time',
       `start`='$time',
       `stop`='',
       `locate`='$guser[locate]' 
       ");
       if(mysql_affected_rows()>0)  //если бой создан
       {
       $id_new_fight=mysql_insert_id();
       // Лог файл и лог сообщение
        (string)$log_file=GH."#fight_log/".$id_new_fight.'.log';
        $log_mess='';
        //
       mysql_query("UPDATE `guser` SET `fight`='$id_new_fight', `fight_com`='a' WHERE `uid`='$guser[uid]' LIMIT 1");
       mysql_query("UPDATE `guser` SET `fight`='$id_new_fight', `fight_com`='b' WHERE `uid`='$ank[uid]' LIMIT 1");
        $log_mess.=date("H:i.s ",$time)."<b>$guser[nick]</b> напал на <b>$ank[nick]</b>!";
        file_put_contents($log_file,$log_mess);
       }
    }
  if($err=="" and $ank['fight']>0) //если пользователь уже в бою (вмешательство в бой)
    {
    $fight=mysql_fetch_array(mysql_query("SELECT * FROM `gfight` WHERE `id`='$ank[fight]' LIMIT 1"),MYSQL_ASSOC);
    (string)$log_file=GH."#fight_log/".$fight['id'].'.log';
    $log_mess='';
    #if($fight)
    if($ank['fight_com']=='a'){$m_fight_com='b';}else{$m_fight_com='a';}    
    mysql_query("UPDATE `guser` SET `fight`='$fight[id]', `fight_com`='$m_fight_com' WHERE `uid`='$guser[uid]' LIMIT 1");
    $log_mess.="\n".date("H:i.s ",$time)."<b>$guser[nick]</b> вмешался в бой против <b>$ank[nick]</b>!";
    addToLog($log_file,$log_mess);      
    }
$_SESSION['err'].=$err;
header("Location: ".M."/pvp.php?".SU);
exit;
echo  $err;
}else{
// Сам бой
#$_SESSION['err'].="Вы находитесь в бою!<br />";
$fight=mysql_fetch_array(mysql_query("SELECT * FROM `fight` WHERE `id`='$user[fight]' AND `stop`='0' LIMIT 1"),MYSQL_ASSOC);
  if($fight)
  {
  // Определяем литеры команд
    $mk_lit=('count_'."$guser[fight_com]"); //Литера моей команды
    if($guser['fight_com']=='a'){$tmp_lit='b';}else{$tmp_lit='a';}
    $pk_lit=('count_'."$tmp_lit"); // Литера команды противника
  #echo $mk_lit." - литера моей команды<br />";                        // DEBUG
  #echo $pk_lit." - Литера команды противника<br />";                  // DEBUG
    // Создаем лог файл
    (string)$log_file=H."/#fight_log/".$fight['id'].'.log';
    $log_mess='';
    #echo "Номер боя $fight[id]<br />";
    $maykom=mysql_query("SELECT * FROM `guser` WHERE `fight`='$fight[id]' AND `live`>'0' AND `fight_com`='$guser[fight_com]'");
    #echo mysql_error()."$fight[akom]<br />";
    if($guser['fight_com']=='a'){$protkom_l='b';}else{$protkom_l='a';} 
    $protkom=mysql_query("SELECT * FROM `guser` WHERE `fight`='$fight[id]' AND `live`>'0' AND `fight_com`='$protkom_l'");
    #echo mysql_error()."$fight[bkom]<br />";
// Определение времени таймаута (пропуска удара)
    #if($guser['fight_com']=='a'){$kp_timeaut=='up_b';}else{$kp_timeaut=='up_a';}                  
    $time_aut=$time-$fight['up_'.$protkom_l];
    echo  $time_aut." таймаут<br />";
    if($time_aut>60 and $fight['up_'.$protkom_l]<$fight['up_'.$guser['fight_com']])  //Здесь 180 тайм аут 3 минуты
    {
      // Дополнительный удар
      $tmp_lit='count_'.$protkom_l;  // count_
      $tmp_lit2='up_'.$protkom_l;
      mysql_query("UPDATE `gfight` SET `$tmp_lit`=(`$tmp_lit`+1), `$tmp_lit2`='$time' WHERE `id`='$fight[id]' LIMIT 1");
      if(mysql_affected_rows()>0)
      {
      $log_mess="\n".date("H:i.s ",$time)."Команда <b>".strtoupper($protkom_l)."</b> пропускает ход по таймауту!";
      addToLog($log_file,$log_mess);
      unset($tmp_lit,$tmp_lit2);
      }
    }
// Обработка атаки
if(isset($_POST['attack']) and $fight[$mk_lit]<=$fight[$pk_lit] and $guser['live']>0)
{
$protivnik_uid=intval(abs($_POST['protivnik']));
$orujie_id=intval($_POST['orujie']);
//  Чтение типов оружия
$t_oruz=file(GH."#dat/oruz_attack.dat");
$types_or=array();
foreach($t_oruz as $key=>$val)
{
$t_oruz=explode(':',$val);
$types_or[$t_oruz['0']]=trim($t_oruz['1'].":".$t_oruz['2'].":".$t_oruz['3'].":".$t_oruz['4']);
#echo $t_oruz['0']." - ".$t_oruz['1']." - ".$t_oruz['2']." - ".$t_oruz['3']."<br />"; // DEBUG
}
unset($t_oruz);
//
$err="";
#echo $protivnik_uid." - uid противника<br />"; // DEBUG
#echo $orujie_id." - id позиции рюкзака<br />"; // DEBUG

// Читаем данные противника
$protivnik=mysql_fetch_array(mysql_query("SELECT * FROM `guser` WHERE `uid`='$protivnik_uid' AND `fight`='$guser[fight]' LIMIT 1"),MYSQL_ASSOC);
if(!$protivnik){$err.="Противник не найден!<br />";}
// Читаем данные оружия
  if($orujie_id>0)
  {
    $orujie=mysql_fetch_array(mysql_query("SELECT * FROM `grukzak` WHERE `uid`='$guser[uid]' AND `id`='$orujie_id' AND `kol`>'0' LIMIT 1"),MYSQL_ASSOC);
  }else{
  //
  if($orujie_id==-1)
    {
    $orujie['type']="ruka";
    }else{
    $orujie['type']="noga";
    }
  }
$or_tmp=explode(':',$types_or[$orujie['type']]);
$or_min=$or_tmp['1'];
$or_max=$or_tmp['2'];
$or_patron=intval($or_tmp['3']);
$or_name=$or_tmp['0'];
(int)$udar_int=mt_rand($or_min,$or_max)+$guser['glevel'];

#echo $types_or[$orujie['type']]." - тип оружия<br />"; // DEBUG
#echo $udar_int." - сила удара<br />";                  // DEBUG
  if($err=='')  //Записываем удар
  { /*
    (string)$log_file=GH."#fight_log/".$fight['id'].'.log';
    echo  $log_file." - лог файл<br />";
    */
    mysql_query("UPDATE `guser` SET `live`=(`live`-$udar_int) WHERE `uid`='$protivnik[uid]' AND `live`>'0' LIMIT 1");
    if(mysql_affected_rows()>0){$log_mess.="\n".date("H:i.s ",$time)."<b>$guser[nick]</b> атаковал <b>$protivnik[nick]</b> используя $or_name ослабив его на $udar_int хр";}else{$log_mess.="\n".date("H:i.s ",$time)."<b>$guser[nick]</b> атаковал <b>$protivnik[nick]</b> используя $or_name, но промахнулся!";}
    if($udar_int>=$protivnik['live']){$log_mess.="\n".date("H:i.s ",$time)."<b>$protivnik[nick]</b> повержен!";}
    // Убавить патроны если есть
    if($or_patron>0)
    {
    mysql_query("UPDATE `grukzak` SET `kol`=(`kol`-1) WHERE `uid`='$guser[uid]' AND `id`='$orujie[id]' LIMIT 1");
   #$_SESSION['err'].=mysql_error().$orujie['id']."<br />";
    }
    // Обновляем данные боя
    $up_com=('up_'."$guser[fight_com]");
    $count_com=('count_'."$guser[fight_com]");
    mysql_query("UPDATE `gfight` SET `$up_com`='$time', `$count_com`=(`$count_com`+1) WHERE `id`='$fight[id]' LIMIT 1");
    addToLog($log_file,$log_mess);
  }                  
 
#$_SESSION['err'].=$err;
mset_err($err);
header("Location: ".M."/pvp.php?".SU);
exit;
}
//
    
    //    
    if(mysql_num_rows($maykom))
    {
    echo "Ваша команда (".strtoupper($guser['fight_com']).")<br />";
      while($data_kom=mysql_fetch_array($maykom, MYSQL_ASSOC))
        {
          echo $data_kom['nick']."(".ceil($data_kom['live']).") хр<br />";
        }
    }
    //
    if(mysql_num_rows($protkom))
    {
    echo "Команда противника (".strtoupper($protkom_l).")<br />";
      while($data_kom=mysql_fetch_array($protkom, MYSQL_ASSOC))
        {
          echo $data_kom['nick']."(".ceil($data_kom['live']).") хр<br />";
        }
    }else{  //Команда противника повержена
    // Перечислить команду победителей
    #mysql_data_seek($protkom,0);
    #mysql_data_seek($maykom,0);
    $com_all=mysql_query("SELECT * FROM `guser` WHERE `fight`='$fight[id]'");  //выбор всех участников боя
    if(mysql_num_rows($com_all))
    {
    $maykom_sp='';
    $protkom_sp='';
    $log_mess='';
      while($data_kom=mysql_fetch_array($com_all, MYSQL_ASSOC))
        {
          if($data_kom['fight_com']==$guser['fight_com']){$maykom_sp.=$data_kom['nick'].', ';}else{$protkom_sp.=$data_kom['nick'].', ';}
        }
    }
    // Перечислить команду проиг8равших
    $log_mess.="\n".date("H:i.s ",$time).'Бой закончен! Победа за '.$maykom_sp." не повезло ".$protkom_sp." удачи в следующий раз!";
    addToLog($log_file,$log_mess);
    // Остановка боя
    mysql_query("UPDATE `gfight` SET `stop`='$time' WHERE `id`='$fight[id]' LIMIT 1");
    #echo mysql_error()."<br />";
    // Снять все идентификаторы и литеры боя со всех участников
    mysql_query("UPDATE `guser` SET `fight`='0', `fight_com`='', `locate`='$fight[locate]' WHERE `fight`='$fight[id]'");
    #echo mysql_error()."<br />";
    }
    //Обновление страницы (вручную)
    $x_rand=mt_rand(1000,9999);
    echo "<a href='?$x_rand'>обновить</a>";
    // Ограничение если пользователь уже убит
    if($guser['live']<=0)
    {
    $guser['live']=0;
    echo "<div class='err'>Вы повержены!<br />Дождитесь окончания боя!</div>";
    // Вывод лог файла
    $read_log=file($log_file);
    #echo  $log_file." - лог файл<br />";
    $read_log=array_reverse($read_log,false);
    for($i=0;$i<=10;$i++)
    {
    if(isset($read_log[$i]))echo  $read_log[$i]."<br />";
    }
    include_once GH."#inc/mainmenu.php";
    include_once H.'sys/inc/tfoot.php';
    exit;
    }
    //
    if($fight[$mk_lit]<=$fight[$pk_lit]) //Если количество ударов нашей команды меньше или ровно количества ударов противника
    {  
    // Интерфейс расстановки ударов
    echo"<form action='' method='post'>";
    echo"Выбор противника<br />";
    echo"<select name='protivnik'><br />";
    {
    #echo "Команда противника <br />";
    mysql_data_seek($protkom,0);
    echo mysql_error()."<br />";    
      while($data_kom=mysql_fetch_array($protkom, MYSQL_ASSOC))
        {
          echo "<option value='$data_kom[uid]'>$data_kom[nick] (".ceil($data_kom[live])." xp)</option>";
        }
    }
    echo"</select><br />";
    // Выбор оружия
    $orujie=mysql_query("SELECT * FROM `grukzak` WHERE `uid`='$guser[uid]' AND `subtype` LIKE '%oruz,%' AND `kol`>'0'");
    echo"Атаковать используя:<br />";
    echo"<select name='orujie'><br />";
    if(mysql_num_rows($orujie))
    {
      while($data_or=mysql_fetch_array($orujie, MYSQL_ASSOC))
        {
          echo "<option value='$data_or[id]'>$data_or[name] ($data_or[kol])</option>";
        }
    }
    echo "<option value='-1'>Рукой</option>";
    echo "<option value='-2'>Ногой</option>";
    echo"</select><br />";
    //
    echo "<input type='submit' name='attack' value='удар' />";
    echo"</form>";
    //
    }else{echo "<div class='err'>Ждем команду противника!</div>";}
// Вывод лог файла
$read_log=file($log_file);
#echo  $log_file." - лог файл<br />";
$read_log=array_reverse($read_log,false);
for($i=0;$i<=10;$i++)
{
if(isset($read_log[$i]))echo  $read_log[$i]."<br />";
}
//     
  }else{
  #$_SESSION['err'].="Бой закончен!<br />";
  mset_err("Бой закончен!");
  #$_SESSION['err'].=$err;
  mset_err($err);
  // Принудительный выход из боя
  mysql_query("UPDATE `user` SET `fight`='0', `fight_com`='' WHERE `id`='$user[id]' LIMIT 1");
  header("Location: ".M."/index.php?l=locat");
  exit;
  }
}

//




//
#include_once GH."#inc/mainmenu.php";
#include_once H.'sys/inc/tfoot.php';
?>
