Файл: pages/minigames/travel.php
Строк: 231
<?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']='/travel.php'; $_SERVER['SCRIPT_NAME']='/travel.php'; }
/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */
include './system/common.php';
include './system/functions.php';
include './system/user.php';
include './system/menu.php';
if(!$user) {
header('location: /');
exit;}
$title = 'Набег';
include './system/h.php';
echo'<div class="title">'.$title.'</div>';
$travel = db_query('SELECT * FROM `travel` WHERE `user` = "'.$user['id'].'"');
$travel = db_fetch_array($travel);
$travel_boss = db_query('SELECT * FROM `travel_boss` WHERE `id` = "'.$travel['boss'].'"');
$travel_boss = db_fetch_array($travel_boss);
if(db_result(db_query('SELECT * FROM `travel` WHERE `user` = "'.$user['id'].'"'),0) == 0) {//Добавляем в бд, если зашел в первый раз
db_query('INSERT INTO `travel` (`user`) VALUES ("'.$user['id'].'")');
header('location: /travel');
exit;
}
if($travel['h'] == '0' && $travel['time'] == '0' && $travel['step'] == '0') {//0-й этап
$h = _string(_num($_GET['id'] ?? 0)); //Оприделяем какой набег
if($h == '1'){
$h=1;
$h2=1;
$boss=mt_rand(1,3);
$boss_stat=mt_rand(35,110);
}
if($h == '2'){
$h=2;
$h2=2;
$boss=mt_rand(4,8);
$boss_stat=mt_rand(110,400);
}
if($h == '3'){
$h=3;
$h2=4;
$boss=mt_rand(9,12);
$boss_stat=mt_rand(400,1500);
}
if($h == '4'){
$h=4;
$h2=8;
$boss=mt_rand(13,15);
$boss_stat=mt_rand(1500,4500);
}
if($h == '5'){
$h=5;
$h2=12;
$boss=mt_rand(16,18);
$boss_stat=mt_rand(4500,9000);
}
if($h) {
$hs = ($h2 * (60 * 60));
db_query('UPDATE `travel` SET `h` = "'.$h.'", `step` = "1", `boss` = "'.$boss.'", `user_hp` = "'.$user['vit'].'", `boss_hp` = "'.$boss_stat.'", `boss_attack` = "'.$boss_stat.'", `boss_def` = "'.$boss_stat.'", `time` = "'.(time() + $hs).'" WHERE `user` = "'.$user['id'].'"');
// Place
// 2 - Набег
// Type
// 0 - Провести n-е кол-во боев (неважно победа или поражени)
// 1 - Только победы
$req = db_query ('select * from `task_user` WHERE (`user`="'.$user['id'].'") AND (`complete`="0")');
if (db_num_rows ($req) != 0) {
while ($t = db_fetch_array ($req)) {
$task = db_fetch_array(db_query ('SELECT * FROM `task` WHERE (`id`="' . $t['task'] . '")'));
if ($t['how'] < $task['how']){
if($task['place']=='2' AND $task['type']=='0') {
db_query ('UPDATE `task_user` SET `how`=`how`+1 WHERE (`user`="' . $user['id'] . '") AND (`task`="' . $task['id'] . '")');
}
}
}
}
header('location: /travel');
}
echo' <div class="empty_block">
<table> <tbody><tr>
<td width="23%">
<img src="/images/travel/location_1.png">
</td><td>
Долина ветров <br>
1 час
</td></tr>
</tbody></table>
<form action="/travel?id=1" method="post">
<center><input class="button" type="submit" value="В долину"/></center>
</form>
</div><div class="line"></div>';
echo' <div class="empty_block">
<table> <tbody><tr>
<td width="23%">
<img src="/images/travel/location_2.png">
</td><td>
Ущелье грома <br>
'.($user['str'] >= 110 ? '2 часа':'Требуется 110 силы').'
</td></tr>
</tbody></table>
<form action="/travel?id=2" method="post">
<center> '.($user['str'] >= 110 ? '<input class="button" type="submit" value="В ущелье"/>':'<div class="button2">В ущелье</div>').'</center>
</form>
</div><div class="line"></div>';
echo' <div class="empty_block">
<table> <tbody><tr>
<td width="23%">
<img src="/images/travel/location_3.png">
</td><td>
Алая пустыня <br>
'.($user['str'] >= 400 ? '4 часа':'Требуется 400 силы').'
</td></tr>
</tbody></table>
<form action="/travel?id=3" method="post">
<center> '.($user['str'] >= 400 ? '<input class="button" type="submit" value="В пустыню"/>':'<div class="button2">В пустыню</div>').'</center>
</form>
</div><div class="line"></div>';
echo' <div class="empty_block">
<table> <tbody><tr>
<td width="23%">
<img src="/images/travel/location_4.png">
</td><td>
Мглистые горы <br>
'.($user['str'] >= 1500 ? '8 часов':'Требуется 1500 силы').'
</td></tr>
</tbody></table>
<form action="/travel?id=4" method="post">
<center> '.($user['str'] >= 1500 ? '<input class="button" type="submit" value="В горы"/>':'<div class="button2">В горы</div>').'</center>
</form>
</div><div class="line"></div>';
echo' <div class="empty_block">
<table> <tbody><tr>
<td width="23%">
<img src="/images/travel/location_5.png">
</td><td>
Древний лес <br>
'.($user['str'] >= 4500 ? '12 часов':'Требуется 4500 силы').'
</td></tr>
</tbody></table>
<form action="/travel?id=5" method="post">
<center> '.($user['str'] >= 4500 ? '<input class="button" type="submit" value="В лес"/>':'<div class="button2">В лес</div>').'</center>
</form>
</div><div class="line"></div>';
echo' <div class="empty_block item_center">
В набегах можно зарабатывать опыт и серебро. Чем продолжительнее набег, тем больше награда!</div>
<div class="line"></div>';
}
if($travel['step'] == '1'){//1-й этап
if($travel['time'] > time()) {
echo'
<div class="empty_block item_center">
<img src="/images/travel/travel_progress.png"> <br>
Ваш герой участвует в набеге. <br>
До конца осталось '._time($travel['time'] - time()).'<br/>
<a href="/" class="btn"><span class="end"><span class="label">На главную</div></a>
</div><div class="line"></div>';
}else{
if(($_GET['enter'] ?? '') === 'true') {
db_query('UPDATE `travel` SET `step` = "2" WHERE `user` = "'.$user['id'].'"');
header('location: /travel');
exit;
}
echo'
<div class="empty_block item_center">
Вы встретили '.$travel_boss['name2'].' <br/>
<img src="/images/travel/'.$travel['boss'].'.png"> <br>
<a href="/travel?enter=true" class="btn"><span class="end"><span class="label">Напасть</div></a>
</div><div class="line"></div>';
}
}
if($travel['step'] == '2'){//2-й этап
if($travel['boss_hp'] <= '0' OR $travel['user_hp'] <= '0') {
db_query("UPDATE `travel` SET `step` = '3' WHERE `user` = '".$user['id']."' LIMIT 1");
header("Location:/travel");
exit;
}
if (isset($_GET['attack'])){
$my_attack = _string(mt_rand($user['str'] / 3.5,$user['str'] / 3) - mt_rand($travel['boss_def'] / 12,$travel['boss_def'] / 9));
if($my_attack <= '0'){ $my_attack = 2;}
$boss_atk = _string(mt_rand($travel['boss_attack'] / 3.5,$travel['boss_attack'] / 3) - mt_rand($user['def'] / 12,$user['def'] / 9));
if($boss_atk <= '0'){ $boss_atk = 2;}
$my = "<b>Вы</b> нанесли "._string($my_attack)." урона";
$boss = "<b>".$travel_boss['name']."</b> нанес "._string($boss_atk)." урона";
$msg = "$my <br/> $boss";
db_query("update `travel` set `boss_hp` = `boss_hp` - '".$my_attack."', `user_hp` = `user_hp` - '".$boss_atk."' where (`user` = '".$user['id']."')");
db_query("INSERT INTO `travel_log` SET
`id_user`='".$user['id']."',
`text`='".$msg."'");
header("Location:/travel");
exit;
}
echo' <div class="empty_block">
<table align="center"> <tbody><tr>
<td style="width:33%;">
<span style="float:right;"> <b>Вы</b> </span> <br>
<span style="float:right;"> <img src="/images/icon/health.png" alt="hp" width="15"> '._string($travel['user_hp']).' </span>
</td><td> ';
if($user['sex'] == 'man'){
echo' <img src="/images/user/man.png" alt="user" width="48">';}
if($user['sex'] == 'woman'){
echo' <img src="/images/user/woman.png" alt="user" width="48">';}
echo'<td>
<td> <img src="'.$HOME.'/images/travel/'.$travel['boss'].'.png" alt="*" width="48"> </td>
<td style="width:33%;">
<span style="float:left;"> <b>'.$travel_boss['name'].'</b> </span> <br>
<span style="float:left;"> <img src="/images/icon/health.png" alt="hp" width="15"> '._string($travel['boss_hp']).' </span>
</td></tr>
</tbody></table>
</div> ';
echo' <center><a href="/travel?attack"class="btn"><span class="end"><span class="label"> Атаковать </a></div></center>';
$ca=db_result(db_query("SELECT COUNT(*) FROM `travel_log`"),0);
$req = db_query("SELECT * FROM `travel_log` where `id_user` = '".$user['id']."' ORDER by `id` DESC LIMIT 3 ");
$avto=db_num_rows($req);
if($avto==0){
echo'<div class="main">
<div class="menuList"> Нет истории боя </div> ';
}else{
echo' <div class="main">
<div class="menuList"> История боя </div> <div class="block">';
while($log = db_fetch_array($req))
{
echo' '.$log['text'].' <br/>';
}
echo' </div>';
}
}
if($travel['step'] == '3'){//3-й этап
if($travel['boss_hp'] <= '0'){ //Награда при победе
$_gold=min(10,max(1,(int)$travel['h']));
$_silver=round($travel['boss_attack']+$travel['user_hp']);
$_exp=round($travel['boss_attack']+$travel['user_hp']);}
if($travel['user_hp'] <= '0'){ //Награда при поражении
$_gold=0;
$_silver=round($travel['boss_attack']-$travel['boss_hp']);
$_exp=round($travel['boss_attack']/2);}
if($clan_memb && $clan_memb['v'] > 0) { //Верность клану
$_exp += round($_exp/100) * $clan_memb['v'];
}
if($premium) {$_exp+= round($_exp/ 100) * 25;} //Если премик
if(($_SERVER['REQUEST_METHOD']??'GET')==='POST' && (string)($_POST['travel_end']??'')==='1') {
security_require_csrf();
db_query('UPDATE `travel` SET `h` = "0",
`step` = "0",
`boss` = "0",
`user_hp` = "0",
`boss_hp` = "0",
`boss_attack` = "0",
`boss_def` = "0",
`time` = "0" WHERE `user` = "'.$user['id'].'"');
if($travel['user_hp'] <= '0'){ //Награда при поражении
db_query('UPDATE `users` SET `s` = `s` + "'.(int)round($_silver/2).'", `exp` = `exp` + "'.(int)round($_exp/2).'" WHERE `id` = "'.$user['id'].'"');
if($clan) {//Если в клане
db_query('UPDATE `clans` SET `exp` = `exp` + '.(int)round($_exp/2).' WHERE `id` = "'.$clan['id'].'"'); //Плюсуем в клан
db_query('UPDATE `clan_memb` SET `exp` = `exp` + '.(int)round($_exp/2).' WHERE `clan` = "'.$clan['id'].'" AND `user` = "'.$user['id'].'"'); //Плюсуем учаснику клана
}
}
if($travel['boss_hp'] <= '0'){ //Награда при победе
$grantedGold=game_economy_award_gold((int)$user['id'],(int)$_gold,'travel',150); $_gold=$grantedGold;
db_execute('UPDATE `users` SET `s`=`s`+:s,`exp`=`exp`+:e WHERE `id`=:u',['s'=>(int)$_silver,'e'=>(int)$_exp,'u'=>(int)$user['id']]);
if($clan) {//Если в клане
db_query('UPDATE `clans` SET `exp` = `exp` + '.(int)$_exp.' WHERE `id` = "'.$clan['id'].'"'); //Плюсуем в клан
db_query('UPDATE `clan_memb` SET `exp` = `exp` + '.(int)$_exp.' WHERE `clan` = "'.$clan['id'].'" AND `user` = "'.$user['id'].'"'); //Плюсуем учаснику клана
} }
header('location: /travel');
}
if($travel['boss_hp'] <= '0'){
echo 'Победа!
<div class="empty_block item_center">
<img src="/images/travel/travel_win.png"> <br>
<img src="/images/icon/gold.png"> '.(int)$_gold.'
<img src="/images/icon/silver.png"> '.(int)$_silver.'
<img src="/images/icon/exp.png"> '.(int)$_exp.'<br>
<form method="post" action="/travel" class="inline-form">'.security_csrf_field().'<input type="hidden" name="travel_end" value="1"><button class="btn" type="submit">Забрать награду</button></form>
</div><div class="line"></div>';
}
if($travel['user_hp'] <= '0'){
echo 'Поражение!
<div class="empty_block item_center">
<img src="/images/travel/travel_lose.png"> <br>
<img src="/images/icon/silver.png"> '.(int)round($_silver/2).'
<img src="/images/icon/exp.png"> '.(int)round($_exp/2).' <br>
<form method="post" action="/travel" class="inline-form">'.security_csrf_field().'<input type="hidden" name="travel_end" value="1"><button class="btn" type="submit">Забрать награду</button></form>
</div><div class="line"></div>';
}
}
include './system/f.php';
?>