Вход Регистрация
Файл: pvp.php
Строк: 149
<?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($maykomMYSQL_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($protkomMYSQL_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_allMYSQL_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($protkomMYSQL_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($orujieMYSQL_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';
?>
Онлайн: 0
Реклама