Файл: pvm.php
Строк: 260
<?php
//Файл боя (бой с монстром)
include_once "./#conf/bd.php";
include_once "./#conf/session_start.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); //ноги
?>