Файл: pvm.php
Строк: 257
<?php
//Файл боя  (бой с монстром)
include_once "./#sys/bd.php";
include_once SYS."/aut.php";
if(!$user)
{
mset_err("Требуется авторизация!");
header("Location: index.php?l=main"); exit;
}
//
function addToLog($text)
{
global $s_time, $user;
$freq="$user[locatid]#$user[coord]"; 
mysql_query("INSERT INTO `logs` SET
         `locid`='$user[locatid]',
         `coord`='$user[coord]',
         `freq`='$freq',
         `time`='$s_time',
         `post`='$text'
          ");
if(mysql_affected_rows()>0){return true;}else{return false;} 
}
//
// Запись боя
$fight=mysql_fetch_array(mysql_query("SELECT * FROM `fight` WHERE `id`='$user[fight]' LIMIT 1"),MYSQL_ASSOC);
$lit_com='exp_com_'.$user['fight_com'];
if(!$fight or $fight['stop']>0)
{
mysql_query("UPDATE `user` SET `fight`='0' WHERE `id`='$user[id]'");
/* mysql_query("DELETE FROM `user` WHERE `p`='m' AND `fight`='$user[fight]'"); // */
mset_msg("Бой уже завершился!");
header("Location: index.php?l=locat"); exit;
}
$err=""; $OTV=false;
###################################################################### <ДОП ДЕЙСТВИЙ> 
// Использование аптечки
foreach($_POST as $k=>$v)
{
   if(substr_count($k,'medikal_'))
   {
   $med_id=intval(str_replace('medikal_','',$k));
   #echo $med_id." идентификатор записи<br />";
   $med=mysql_fetch_array(mysql_query("SELECT * FROM `rukzak` WHERE `uid`='$user[id]' AND `type`='medikal' AND `kol`>'0' AND `id`='$med_id' LIMIT 1"),MYSQL_ASSOC);
    if(!$med){mset_err("Медикаменты не обнаружены");}else{
    mysql_query("UPDATE `user` SET `live`=(`live`+$med[pllive]), `energy`=(`energy`+$med[plener]), `uptime`='$s_time' WHERE `id`='$user[id]' LIMIT 1"); //*
      if(mysql_affected_rows()>0)
      {
      mysql_query("UPDATE `rukzak` SET `kol`=(`kol`-1) WHERE `id`='$med[id]' LIMIT 1"); //*
      mset_msg("Использовано $med[name] 1 шт. Восстановлено $med[pllive] здоровья");
      #mset_msg("Использовано $med[name] 1 шт.");  
      }
    }
   break; 
   }
}
###################################################################### < / ДОП ДЕЙСТВИЙ> 
###################################################################### <ОБРАБОТКА УДАРОВ>
// ОБРАБОТКА АТАКИ
$userpar=array();
if(isset($_POST['attack']) and $user['live']>0)
{
$userpar=GetUserParam($user['id']);
#echo "вход в процедуру атаки<br />";
$err=''; $oruz_id=0; $prot=false;
if(isset($_POST['attackoruz'])){$oruz_id=intval($_POST['attackoruz']);}
if($user['energy']<=0){$err.="У Вас нет сил атаковать противника!<br />";}
$oruz=mysql_fetch_array(mysql_query("SELECT * FROM `rukzak` WHERE `id`='$oruz_id' AND `uid`='$user[id]' AND `kol`>'0' LIMIT 1"),MYSQL_ASSOC);
if(!$oruz){$err.="Оружие не найдено!<br />";}
if($oruz['dolgov']<=0){$err.="Оружие повреждено и не может стрелять!<br />";}
if($oruz['type']!='granat')
{
$patron=mysql_fetch_array(mysql_query("SELECT * FROM `rukzak` WHERE `uid`='$user[id]' AND `type`='patron' AND `incode`='$oruz[patron]' AND `kol`>'0' LIMIT 1"),MYSQL_ASSOC);
}else{
$patron['povrej']=$oruz['povrej'];
}
if(!$patron)
{
mset_err("Нет патронов для $oruz[name]!");
 $oruz['name']='Нож';
 $oruz['tochn']=100;
 $oruz['skor']=1;
 $oruz['povrej']=0;
 #$patron=true;
 $patron['kol']=1;
 $patron['povrej']=10;
 $patron['id']=0;
}
#if($err)echo $err."<br />";
#echo "вход в процедуру чтения противника<br />";
$prot_id=intval($_POST['attackprot']);
$prot=mysql_fetch_array(mysql_query("SELECT * FROM `monstr` WHERE `id`='$prot_id' AND `fight`='$user[fight]' AND `fight_com`!='$user[fight_com]' LIMIT 1"),MYSQL_ASSOC);
if(!$prot){$err.="Противник не найден!<br />";}
if($prot['live']<=0){$err.="Противник уже повержен!<br />";}
  
#echo H."/#monstr/$prot[pass]";
if (file_exists(H."/#monstr/$prot[pass]") and $prot)
{
#echo "Чтение параметров монстра<br />";
include_once H."/#monstr/$prot[pass]";
}else{$err.="Файл параметров монстра не найден или поврежден!<br />";}
  if($err=='' and $oruz and $patron and $prot)
  { // Формируем удар
  #echo "Обработка удара пользователя<br />";
    $tochn=rand($oruz['tochn']/2,$oruz['tochn'])/100;   // Рачет точности
    #$oruz['skor']=$oruz['skor'];
    $kol_patron=$oruz['skor'];// Количество патронов
    if ($kol_patron>$patron['kol']){$kol_patron=$patron['kol'];}
    
    $udar=intval(($kol_patron*($patron['povrej']+$oruz['povrej']))*$tochn)-$m['bron']+$user['level'];  // Рачет силы удара
    if($udar>=$prot['live'])
    { // Вставка приза за убийство монстра
    $udar=$prot['live'];
    addToLog("Монстр $prot[login] уничтожен!");
      if($prot['exp']>0)
      {
      $prize=mysql_fetch_array(mysql_query("SELECT * FROM `tovar` WHERE `id`='$prot[exp]' LIMIT 1"),MYSQL_ASSOC);
        if($prize)
          {
          $check_pr=mysql_fetch_array(mysql_query("SELECT * FROM `rukzak` WHERE `uid`='$user[id]' AND `incode`='$prize[incode]' LIMIT 1"),MYSQL_ASSOC);
            if(!$check_pr)
            {
              mysql_query("INSERT INTO `rukzak` SET
              `uid`='$user[id]',
              `name`='$prize[name]',
              `type`='$prize[type]',
              `incode`='$prize[incode]',
              `ico`='$prize[ico]',
              `massa`='$prize[massa]',
              `price`='$prize[price]',
              `kol`='1',
              `type_name`='$prize[type_name]',
              `slot`='',
              `minlev`='$prize[minlev]',
              `dolgov`='1',
              `maxdolg`='1'
            ");
            #echo mysql_error()."<br />";;
            }else{
            mysql_query("UPDATE `rukzak` SET `kol`=(`kol`+1) WHERE `id`='$check_pr[id]' LIMIT 1");
            #echo mysql_error()."<br />";;
            }
          if(mysql_affected_rows()>0){addToLog("<a href="?l=uinf&id=$user[id]">$user[login]</a> подбирает 1 шт. $prize[name] ");}
          }
      }
    }
    
    if($udar<0)$udar=0;
    
    if($kol_patron==$patron['kol'])
    {
    #echo "запрос на удаление<br />";
    mysql_query("DELETE FROM `rukzak` WHERE `id`='$patron[id]' LIMIT 1"); //*
    }else{
    #echo mysql_error()." запрос на убавление<br />";
    mysql_query("UPDATE `rukzak` SET `kol`=(`kol`-$kol_patron) WHERE `id`='$patron[id]' LIMIT 1"); //*
    }
    if(mysql_affected_rows()>0)
    {
    addToLog("Использовано $kol_patron $patron[name] ($user[login])");
    }
    // Обновляем здоровье противника
    mysql_query("UPDATE `monstr` SET `live`=(`live`-$udar), `energy`=(`energy`-1), `uptime`='$s_time' WHERE `id`='$prot[id]' LIMIT 1"); //*
    // Добавляем опыт команде
    mysql_query("UPDATE `fight` SET `exp_com_$user[fight_com]`=(`exp_com_$user[fight_com]`+$udar) WHERE `id`='$user[fight]' LIMIT 1");
    // <a href="?l=uinf&id=$user[id]"> </a>
    #echo $oruz['name']."<br />";
    if (!isset($prot['name']))$prot['name']='';
    if(mysql_affected_rows()>0){addToLog("<a href="?l=uinf&id=$user[id]">$user[login]</a> атакует $prot[login], используя $oruz[name], ослабив его на  $udar");}else{addToLog("<a href="?l=uinf&id=$user[id]">$user[login]</a> атакует $prot[name], используя $oruz[name], но промахивается");}
  }
$OTV=true; #mysql_free_result($prot);
}
if($OTV)   // Ответ на удары
{ 
#echo "Вход в процедуру ответных ударов монстров<br />";
/*
foreach($userpar as $k=>$v)
{
  echo $k." - ".$v."<br />";
}
*/
#if ($userpar) echo "Чтение параметров пользователя выполнено<br />";
$prots=mysql_query("SELECT * FROM `monstr` WHERE `fight`='$user[fight]' AND `live`>'0' AND `fight_com`!='$user[fight_com]'");
  if(mysql_num_rows($prots))
    {
    $summudar=0; $logstr=''; $summenerg=0;
      while($data=mysql_fetch_array($prots,MYSQL_ASSOC))
        {
        //
        $udar=intval(rand($m['udar']/2,$m['udar'])-$userpar['bron'])+$data['level'];
        if($udar>0){$logstr.="$data[login] атакует <a href="?l=uinf&id=$user[id]">$user[login]</a>, ослабив его на $udar";$summudar=$summudar+$udar;}#else{$logstr.="$data[login] не может пробить защиту $user[login]";}
        $radudar=rand($m['radudar']/2,$m['radudar'])-$userpar['antirad'];
        if($radudar>0){$logstr.="<br />$data[login] облучает радиацией <a href="?l=uinf&id=$user[id]">$user[login]</a>, ослабив его на $radudar";$summudar=$summudar+$radudar;}#else{$logstr.="$data[login] не может пробить защиту $user[login]";}
        $himudar=rand($m['himudar']/2,$m['himudar'])-$userpar['antihim'];
        if($himudar>0){$logstr.="<br />$data[login] наносит хим ожог <a href="?l=uinf&id=$user[id]">$user[login]</a>, ослабив его на $himudar";$summudar=$summudar+$himudar;}#else{$logstr.="$data[login] не может пробить защиту $user[login]";}
        $psiudar=rand($m['psiudar']/2,$m['psiudar'])-$userpar['antipsi'];
        if($psiudar>0){$logstr.="<br />$data[login] наносит пси удар <a href="?l=uinf&id=$user[id]">$user[login]</a>, ослабив его на $psiudar";$summudar=$summudar+$psiudar;}#else{$logstr.="$data[login] не может пробить защиту $user[login]";}
        $termoudar=rand($m['termoudar']/2,$m['termoudar'])-$userpar['antitermo'];
        if($termoudar>0){$logstr.="<br />$data[login] обжигает <a href="?l=uinf&id=$user[id]">$user[login]</a>, ослабив его на $termoudar";$summudar=$summudar+$termoudar;}#else{$logstr.="$data[login] не может пробить защиту $user[login]";}
        $energy=rand($m['energy']/2,$m['energy'])-$userpar['bron'];
        if($energy>0){$logstr.="<br />$data[login] отнимает у <a href="?l=uinf&id=$user[id]">$user[login]</a> $energy энергии";$summenerg=$summenerg+$energy;}#else{$logstr.="$data[login] не может пробить защиту $user[login]";}
        //
        $summudar=$summudar-$userpar['pllive'];
        if($summudar<=0)$summudar=0;
        $summenerg=$summenerg-$userpar['plener'];
        if($summenerg<=0)$summenerg=0;
        //
        if($logstr){addToLog($logstr);$logstr='';}
        }
    // Записываем удар монстра 
    mysql_query("UPDATE `user` SET `live`=(`live`-$summudar), `energy`=(`energy`-$summenerg), `uptime`='$s_time' WHERE `id`='$user[id]' LIMIT 1"); //*
      if (mysql_affected_rows()>0)
      {
        $user['live']=$user['live']-$summudar;
        $user['energy']=$user['energy']-$summenerg;  
      }
    }else{ // если противников не осталось
    if($user['fight_com']=='a'){$p_com='bkom';$u_com='akom';}else{$p_com='akom';$u_com='bkom';}
    $count_prot=count(explode(',',$fight[$p_com]));
    $count_u=count(explode(',',$fight[$u_com]));
    // раздаем призы
    $prize_ball=intval($fight[$lit_com]/$count_u);
     addToLog("Каждый участник боя получает $prize_ball опыта");
     mysql_query("UPDATE `user` SET `exp`=(`exp`+$prize_ball) WHERE `id` IN ($fight[$u_com])");
    #echo "противников не осталось<br />";
    // Завершаем бой
    mysql_query("UPDATE `fight` SET `stop`='$s_time' WHERE `id`='$user[fight]' LIMIT 1");
    //Удаляем монстров
    mysql_query("DELETE FROM `user` WHERE `p`='m' AND `fight`='$user[fight]'"); //*
    
    // Обнуляем запись боя
    mysql_query("UPDATE `user` SET `fight`='0', `upfight`='$s_time' WHERE `fight`='$user[fight]'"); //*
    mset_msg("Ваша команда победила!");
    mysql_query("OPTIMIZE TABLE `user`, `fight`, `rukzak`, `monstr`");
    header("Location: index.php?l=locat"); exit;
    }
// Проверка на уничтожение
//
if($user['live']<=0)  // Пользователь повержен
{ // Завершение боя
// Повреждаем надетые вещи
$povr=rand(0,2);
mysql_query("UPDATE `rukzak` SET `dolgov`=(`dolgov`-$povr) WHERE `uid`='$user[id]' AND `slot`!='' AND `dolgov`>='$povr' AND (`type`='loruz' OR `type`='oruz' OR `type`='shmot') "); //
//  Закрываем бой  если пользователь один в бою
/*/ 
$check_count_pl=mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `fight`='$user[fight]' AND `live`>'0'"),0);
  if($check_count_pl==0)
  {
  #echo "Не осталось ни одного бойца<br />";
  mysql_query("UPDATE `fight` SET `stop`='$s_time' WHERE `id`='$user[fight]' LIMIT 1");
  //Удаляем монстров
  mysql_query("DELETE FROM `monstr` WHERE `fight`='$user[fight]'"); //*
  // Обнуляем запись боя
  mysql_query("UPDATE `user` SET `fight`='0', `upfight`='$s_time' WHERE `fight`='$user[fight]'"); //*
  }
/*/
}
//
}// Завершение обработки атаки и ответных ударов
if($err)mset_err($err);
//
###################################################################### </ ОБРАБОТКА УДАРОВ>
$_SESSION['title']="Бой с монстром";
heads($headers_page, $set_ob_start);   //подключение шапки
include_once SYS."/emission.php";
$user['maxlive']=(250+($user['level']*5));
#echo $user['maxlive']."<br />";
//формула расчета экспоненты  4+($guser[glevel]*4)
include_once SYS."/exp.st";
// Данные игрока  <label >
$path=M."/img/ico";
echo "<div class='ssila'>";
echo "[$user[level]] $user[login]($user[exp]/$user[maxexp]) ";
echo "Счет: ".number_format($user['kredits'],2,',',' ')." руб.<br />";
echo "<img title='Здоровье' src='$path/live.png' alt='*' />($user[live]/$user[maxlive]) <img title='Энергия' src='$path/energy.png' alt='*' />($user[energy]/$user[maxenergy])<br />";
echo "</div>";
// ВЫВОД ИНТЕРФЕЙСА БОЯ
if($user['fight_com']=='a'){$p_com='bkom';$u_com='akom';}else{$p_com='akom';$u_com='bkom';}
$count_prot=count(explode(',',$fight[$p_com]));
$count_u=count(explode(',',$fight[$u_com]));
// Выборка команды пользователя
$m_comm=mysql_query("SELECT * FROM `user` WHERE `fight`='$fight[id]' AND `fight_com`='$user[fight_com]'");
$imgpath=M."/img/ava";
echo "<table border='0' width='100%'>";
echo "<tr class='ssila'>";
echo "<td>";
echo "<img src='$imgpath/$user[ava]' alt='*' /> ";
echo "</td>";
echo "<td>";
echo "Всего бойцов $count_u<br /> ";
while($data=mysql_fetch_assoc($m_comm))
{
echo "[$data[level]] $data[login] ($data[live]) ";
}
echo "<br /> опыт команды $fight[$lit_com] ";
echo "</td></tr>";
#echo "</span>";
// Команда противника
echo "<tr class='title'><td colspan='2' alignt='center'> <b>VS</b> </td></tr>";
$p_comm=mysql_query("SELECT * FROM `monstr` WHERE `fight`='$user[fight]' AND `fight_com`!='$user[fight_com]' ORDER BY `live` ASC");
#echo "<span class='slive'>";
echo "<tr class='slive'>";
$str_prot='';
while($data=mysql_fetch_assoc($p_comm))
{
$str_prot.= "[$data[level]] $data[login] ($data[live]) ";
$ico=$data['ava'];
}
echo "<td>";
echo "<img src='$imgpath/$ico' alt='*' />"; 
echo "</td>";
echo "<td>";
echo "Всего противников $count_prot<br />";
echo $str_prot;
unset($str_prot);
echo "</td>";
echo "</tr>";
echo "</table>";
#echo "</span></div>";
// Для удара
// Выбор одетого оружия из рюкзака
if($user['live']>0)
{
$oruz=mysql_query("SELECT * FROM `rukzak` WHERE `uid`='$user[id]' AND (`type`='oruz' OR `type`='loruz' OR `type`='granat') AND `slot`!='' ORDER BY `price` DESC");
echo "<form class='title' action='' method='post'>";
#echo mysql_error()."<br />";
if(mysql_num_rows($oruz))
{
echo "Выбор оружия<br /><select size='2' name='attackoruz'>";   //Patron9_18 Patron9_19
$sort=' selected='selected'';
  while($data=mysql_fetch_assoc($oruz))
    {
     echo "<option value='$data[id]'$sort>$data[name]</option>";
     $sort=''; 
    }
echo "</select><br />";
}
// Выбираем противника
if(mysql_num_rows($p_comm))
{
mysql_data_seek($p_comm,0);
echo "Выбор противника<br /><select name='attackprot'>";   //Patron9_18 Patron9_19
  while($data=mysql_fetch_assoc($p_comm))
    {
     if($data['live']>0){echo "<option value='$data[id]'>$data[login] ($data[live])</option>";} 
    }
echo "</select><br />";
}
echo "<input type='submit' name='attack' value='атаковать' />";
//  Проверка медикаментов
$check_med=mysql_query("SELECT * FROM `rukzak` WHERE `uid`='$user[id]' AND `type`='medikal' AND `kol`>'0'");
if(mysql_num_rows($check_med))
{
echo "<div class='none'>";
$icopath=M."/img/tov";
  while($data=mysql_fetch_array($check_med,MYSQL_ASSOC))
    {
      echo "<input type='image' name='medikal_$data[id]' title='использовать $data[name]' src='$icopath/$data[ico]' width='25' height='25'  /><br />";
    }
echo "</div>";
}
//
echo "</form>";
}else{
$check_count_pl=mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `fight`='$user[fight]' AND `live`>'0' AND `fight_com`='$user[fight_com]'"),0);
#echo $check_count_pl."<br />";
if($check_count_pl==0)
  {
  #echo "Не осталось ни одного бойца<br />";
  mysql_query("UPDATE `fight` SET `stop`='$s_time' WHERE `id`='$user[fight]' LIMIT 1");
  //Удаляем монстров
  mysql_query("DELETE FROM `monstr` WHERE `p`='m' AND `fight`='$user[fight]'"); //*
  // Обнуляем запись боя
  mysql_query("UPDATE `user` SET `fight`='0', `upfight`='$s_time' WHERE `fight`='$user[fight]'"); //*
  }
$rnd=rand(1000,9999);
echo "<div class='errh'> Вы повержены!<br /> дождитесь окончания боя!<br /><a href='?$rnd'> обновить </a></div>";
}
###########################   Вывод лога
$freq="$user[locatid]#$user[coord]";
$all=mysql_result(mysql_query("SELECT COUNT(*) FROM `logs` WHERE `freq`='$freq'"),0);
#echo $all."<br />";
$pnumber=$user['pstr']; //$user['set_p_str']; //
    if(!isset($_GET['page'])){$_GET['page']=1;}
        //$n=new Navigator($all,$pnumber);
    $n=k_page($all,$pnumber);
    if($_GET['page']=='end'){$page=$n;}
    else{$page=intval($_GET['page']);}
    if($page<1){$page=1;}
    $start=$page*$pnumber-$pnumber;
    if($start<1){$start=0;}
$logs=mysql_query("SELECT * FROM `logs` WHERE `freq`='$freq' ORDER BY `id` DESC  LIMIT $start,$pnumber");
#echo mysql_num_rows($logs)."<br />";
if(mysql_num_rows($logs))
{
echo "<div class='slive'>";
  while($dlog=mysql_fetch_assoc($logs))
    {
      echo vremja($dlog['time'])." $dlog[post]<br />";
    }
echo "</div>";
#echo $n."-".$all."<br />";
  if($n>1){echo str2($link="pvm.php?",$n,$page);}
}
###########################
closed_page($headers_page,$set_ob_start);  //ноги
?>