Файл: pages/combat/dungeon.php
Строк: 281
<?php
// Physical module map v50.6: public URL stays clean while code lives in /pages.
if (!defined('GAME_ROOT')) define('GAME_ROOT', dirname(__DIR__, 2));
chdir(GAME_ROOT);
if (PHP_SAPI !== 'cli') { $_SERVER['PHP_SELF']='/dungeon.php'; $_SERVER['SCRIPT_NAME']='/dungeon.php'; }
/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */
require_once 'system/common.php';
require_once 'system/functions.php';
require_once 'system/user.php';
include './system/menu.php';
$cernel_CH = htmlspecialchars((string)($_GET['act'] ?? ''), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
switch($cernel_CH){
case 'batlle':
$batlle = db_query("SELECT * FROM `boss_batlle` WHERE `id_user` = '".$user['id']."' ORDER BY `id` DESC LIMIT 1");
$batlle = db_fetch_array($batlle);
if($boss_user['last'] > time()){
header('Location: /dungeon/');
exit();
}
if(!$batlle){//Если не в бою
header('Location: /dungeon/');
exit();
}
$boss = db_query("SELECT * FROM `boss` WHERE `id` = '".$batlle['id_boss']."' ORDER BY `id` LIMIT 1");
$boss = db_fetch_array($boss);
$title = 'Бой с '.$boss['name'];
require_once 'system/h.php';
if(isset($_GET['exit'])){//Покинуть бой
db_query("DELETE FROM `boss_batlle` WHERE `id` = '".$batlle['id']."' LIMIT 1");
header('Location: /dungeon/');
exit();
}
if(isset($_GET['kamen']) and $user['kamen'] >= 1 and $batlle['kamen'] < time()){//Активирувать камень
db_query("UPDATE `users` SET `kamen` = `kamen` - '1' WHERE `id` = '".$user['id']."' LIMIT 1");
db_query("UPDATE `boss_batlle` SET `kamen` = '".(time()+30)."' WHERE `id` = '".$batlle['id']."' LIMIT 1");
header('Location: ?attack');
exit();
}
if(isset($_GET['trava']) and $user['trava'] >= 1 and $batlle['trava'] < time()){//Активирувать траву
db_query("UPDATE `users` SET `trava` = `trava` - '1' WHERE `id` = '".$user['id']."' LIMIT 1");
db_query("UPDATE `boss_batlle` SET `trava` = '".(time()+30)."' WHERE `id` = '".$batlle['id']."' LIMIT 1");
header('Location: ?attack');
exit();
}
if(isset($_GET['attack'])) {
$_str = rand(round($user['str']/6), round($user['str']/4));//Урон игрока
$_def = rand(round($user['def']/12), round($user['def']/7));//Защита игрока
$_str_opp = rand(round($boss['str']/6), round($boss['str']/4));//Урон противника
$_def_opp = rand(round($boss['def']/12), round($boss['def']/7));//Защита противника
if($batlle['kamen'] > time())$_str += ceil($_str*35/100);//Камень
if($batlle['trava'] > time())$_def += ceil($_def*35/100);//Трава
$_str_opp = $_str_opp - $_def;//Если урон противника меньше нуля
if($_str_opp < 0)$_str_opp = 2;
$_str = $_str - $_def_opp;//Если урон игрока меньше нуля
if($_str < 0)$_str = 2;
if($_str > $batlle['boss_health']){//Победа
$gold=min(10,max(1,(int)ceil((int)($boss['id']??1)/3)));
$exp = rand($boss['min_exp'],$boss['max_exp']);
if($effect_2['on'] == 1)$exp = $exp+($exp*25/100);
$exp = $exp;
if(isset($_GET['win'])){
echo '<div class="opisanie"><center><font color="lime"><b>Победа</b></br>Награда: <img src="/images/icon/gold.png" alt="*"/> '.$gold.' золота и <img src="/images/icon/exp.png" alt="*"/> '.$exp.' опыта</font></center></div>';
echo '<center><a class="btn" href="/dungeon/"><span class="end"><span class="label">Забрать награду</span></span></a></center>';
require_once 'system/f.php';
exit;}
db_execute('UPDATE `users` SET `exp`=`exp`+:e WHERE `id`=:u',['e'=>(int)$exp,'u'=>(int)$user['id']]);
$gold=game_economy_award_gold((int)$user['id'],(int)$gold,'dungeon',150);
if($clan){
db_query("UPDATE `clan_memb` SET `exp` = `exp` + '".($exp*15/100)."' WHERE `user` = '".$user['id']."' LIMIT 1");
db_query("UPDATE `clans` SET `exp` = `exp` + '".($exp*15/100)."' WHERE `id` = '".$clan['id']."' LIMIT 1");
}
db_query("update `boss_user` set `id_boss` = `id_boss` + '1', `last` = '".(time()+60*60*5)."' where (`id_user` = '".$user['id']."')");
if($boss_user['id_boss'] >= 24){ db_query("UPDATE `boss_user` SET `id_boss` = '24' WHERE `id_user` = '".$user['id']."'");}
db_query("DELETE FROM `boss_batlle` WHERE `id` = '".$batlle['id']."' LIMIT 1");
header('Location: /dungeon/battle/?attack&win');
exit();
}elseif($_str_opp > $batlle['user_health']){//Поражение
$exp = rand($boss['min_exp'],$boss['max_exp']);
if($effect_2['on'] == 1)$exp = $exp+($exp*25/100);
$exp = $exp;
if(isset($_GET['lose'])){
echo'<div class="opisanie"><center><font color="red"><b>Поражение</b></br>Награда: <img src="/images/icon/exp.png" alt="*"/> '.$exp.' опыта</font></center></div>';
echo '<center><a class="btn" href="/dungeon/"><span class="end"><span class="label">Забрать награду</span></span></a></center>';
require_once 'system/f.php';
exit;}
db_query("update `users` set `exp` = `exp` + '".$exp."' where `id` = '".$user['id']."'");
if($clan){
db_query("UPDATE `clan_memb` SET `exp` = `exp` + '".($exp*15/100)."' WHERE `user` = '".$user['id']."' LIMIT 1");
db_query("UPDATE `clans` SET `exp` = `exp` + '".($exp*15/100)."' WHERE `id` = '".$clan['id']."' LIMIT 1");
}
db_query("update `boss_user` set `last` = '".(time()+60*60*5)."' where (`id_user` = '".$user['id']."')");
db_query("DELETE FROM `boss_batlle` WHERE `id` = '".$batlle['id']."' LIMIT 1");
header('Location: /dungeon/battle/?attack&lose');
exit();
}else{//Записываем логи боя
db_query("INSERT INTO `boss_batlle_log` SET `uron_user` = '$_str', `tip` = 'user', `id_batlle` = '$batlle[id]'");
db_query("INSERT INTO `boss_batlle_log` SET `uron_boss` = '$_str_opp', `tip` = 'boss', `id_batlle` = '$batlle[id]'");
db_query("update `boss_batlle` set `boss_health` = '".($batlle['boss_health']-$_str)."', `user_health` = '".($batlle['user_health']-$_str_opp)."', `udar_last` = '".(time()+1)."' where (`id` = '".$batlle['id']."')");
header('Location: /dungeon/battle/');
exit();
}
}
echo'<div class="title">Битва с '.$boss['name'].'</div>';
echo '<div class="box"><table width="100%"" cellpadding="3" cellspacing="0" >
<tr><td rowspan="2" width="1%"><img src="/images/boss/'.$boss['id'].'.png" width="48px" style="margin-right:3px;margin-top:-2px;"></td>
<td>
<font color="orange">'.$boss['name'].'</font> </br>
<img src="/images/icon/health.png" alt="*"/> <font color="orange">'.$batlle['boss_health'].'</font>
<br></br>
</td>
<tr></tr>
</table>
<div class="mini-line"></div>
<center><a class="btn" href="?attack"><span class="end"><span class="label">Атаковать</span></span></a></center>
<div class="mini-line"></div>';
echo '<div class="box"><table width="100%"" cellpadding="3" cellspacing="0" >
<tr><td rowspan="2" width="1%"><img src="/manekenImage/0/0/0/0/0/0/0/0/0/" /></td>
<td>
<font color="orange">'.$user['login'].'</font> </br>
<img src="/images/icon/health.png" alt="*"/> <font color="orange">'.$batlle['user_health'].'</font>
<br></br>
</td>
<tr></tr>
</table>
<div class="mini-line"></div>';
echo"<div class='resources'>";
echo "<table cellpadding='5' cellspacing='0' align='center'><tr>";
echo "<td class='center' style='border-right: 1px solid #8D673A;'>";
if($user['kamen'] > 0)echo '<a class="btn" href="?kamen" class="end"><span class="label"> <img src="/images/campaign/stone.png" alt="*"> Камень </a><br>';
else echo '<a class="btn" href="?kamen" class="btn _green" class="end"><span class="label"><img src="/images/campaign/stone.png" alt="*"> <span class="grey">Камень</span></a><br>';
if($batlle['kamen'] > time()){
echo "<span class='ok' data-live-until='".(int)$batlle['kamen']."' data-live-format='short'>"._time($batlle['kamen']-time())."</span>";
}else{
echo "<span class='white'>+35% урон</span>";
}
echo "</td>";
echo "<td class='center'>";
if($user['trava'] > 0)echo "<a class='btn' href='?trava' class='end'><span class='label'> <img src='/images/campaign/grass.png' alt='*'> Трава</a></br>";
else echo '<a class="btn" href="?trava" class="end"><span class="label"> <img src="/images/campaign/grass.png" alt="*"> <span class="grey">Трава</span></a></br>';
if($batlle['trava'] > time()){
echo "<span class='ok' data-live-until='".(int)$batlle['trava']."' data-live-format='short'>"._time($batlle['trava']-time())."</span>";
}else{
echo "<span class='white'>-35% урон</span>";
echo"</div>";
}
echo "</td>";
echo "</tr></table>";
echo "</div>";
echo '<div class="mini-line"></div>
<div class="opisanie center">';
$k_post = db_result(db_query("SELECT COUNT(*) FROM `boss_batlle_log` WHERE `id_batlle` = '$batlle[id]'"),0);
if($k_post == 0)echo "Логов не найдено...";
$q = db_query("SELECT * FROM `boss_batlle_log` WHERE `id_batlle` = '$batlle[id]' ORDER BY `id` DESC LIMIT 15");
while($post = db_fetch_assoc($q)){
if($post['tip'] == 'user'){
echo "Вы атаковали $boss[name] на <b>$post[uron_user]</b><br>";
}else{
echo "<font color='red'>$boss[name] атаковал Вас на <b>$post[uron_boss]</b></font><br>";
}
}
echo "</div>";
echo "<a href='?exit' class='btn btn-game btn-block'> Покинуть бой</a>";
require_once ('system/f.php');
break;
default:
$title = 'Подземелья';
require_once 'system/h.php';
if(db_result(db_query('SELECT * FROM `boss_user` WHERE `id_user` = "'.$user['id'].'"'),0) == 0) {//Добавляем в бд, если зашел в первый раз
db_query('INSERT INTO `boss_user` (`id_user`, `id_boss`, `last`) VALUES ("'.$user['id'].'", "1", "0")');
header('Location: /dungeon/');
exit();
}
$boss_user = db_query("SELECT * FROM `boss_user` WHERE `id_user` = '".$user['id']."'");
$boss_user = db_fetch_array($boss_user);
$boss = db_query("SELECT * FROM `boss` WHERE `id` = '".$boss_user['id_boss']."'");
$boss = db_fetch_array($boss);
if(isset($_GET['vboi']) and $boss_user['last'] < time() and $user['level'] >= 1){
db_query("INSERT INTO `boss_batlle` SET `id_user` = '".$user['id']."', `id_boss` = '".$boss['id']."', `boss_health` = '".$boss['max_health']."', `user_health` = '".($user['vit']*2)."' ");
db_query("UPDATE `boss_user` SET `id_boss` = '".$boss['id']."' WHERE `id_boss` = '".$user['id']."' LIMIT 1");
header('Location: /dungeon/battle/');
exit();
}
echo '<div class="title">'.$title.'</div>';
if (!empty($_SESSION['msg'])) { echo ' '.htmlspecialchars((string)$_SESSION['msg'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').' '; }
unset($_SESSION['msg']); // Удаляем сообщение
if($user['level'] >= 1){
echo '<div class="box">
<table width="100%" cellpadding="2" cellspacing="0">
<tr><td rowspan="2" width="27%"">
<img src="/images/boss/'.$boss['id'].'.png" width="90px" style="margin-right:3px;margin-top:-2px;">
</td>
<td>
</a> <a>'.$boss['name'].'</a><br><br>
<img src="/images/icon/str.png" alt="*"/> Сила '.$boss['str'].'<br>
<img src="/images/icon/def.png" alt="*"/> Защита '.$boss['def'].'<br>
<img src="/images/icon/health.png" alt="*"/> Здоровье '.$boss['max_health'].'<br><br>
</tr>
<td>
</td>
<tr>
</tr>
</table></div>';
if($boss_user['last'] < time())echo '<center><a class="btn" href="?vboi"><span class="end"><span class="label">Сразиться</span></span></a></center>';
else echo '<center><a href="?">Сразиться <span data-live-until="'.(int)$boss_user['last'].'" data-live-format="short">'._time($boss_user['last']-time()).'</span></a></center>';
echo "<div class='box'><small>За победу ты получешь много золота и опыта! Но победить боссов не так уж и просто, по этому за поражение ты получишь опыт!</small></div>";
}else{
echo "<div class='box'>Подземелья откроются на 10 уровне.</div>";
}
require_once ('system/f.php');
break;
}
?>