Файл: wenr.online/app/game/dragons_fight.php
Строк: 63
<?php
if (!$user->isAuth()) {
redirect('/');
exit;
}
if($user->get()->lvl < 7){
Notif :: error('Доступно только с 7-го уровня','/game');
exit;
}
$rolls = $db->prepare('select * from `bag` where `user` = ? and `type` = ? limit 4');
$rolls -> execute([$user->get()->user_id,'rolls']);
$rolls = $rolls -> fetchAll();
$mob = $db->prepare('select * from dragons where id = ?');
$mob -> execute([Clean :: int($_GET['id'])]);
$mob = $mob -> fetch(PDO :: FETCH_OBJ);
if(!isset($mob->id)){
redirect('/dragons');
exit;
}
$mobArray = $_SESSION['dragons'];
if(!isset($mobArray['mob']) or $mobArray['mob'] != $mob->id){
$session = ['mob' => $mob->id, 'hp' => $mob->hp];
$_SESSION['dragons'] = $session;
redirect('/dragons/fight?id='.$mob->id);
exit;
}
if(isset($_GET['attack'])){
if($user->get()->hp < 2){
Notif :: error('Слишком мало здоровья для нападения','/dragons/fight?id='.$mob->id);
exit;
}
$magic = $db->prepare('select * from `bag` where `id` = ? and `user` = ?');
$magic -> execute([Clean :: int($_GET['rolls']),$user->get()->user_id]);
$magic = $magic -> fetch(PDO :: FETCH_OBJ);
$dop_uron = 0;
$fight_skill = $user->get()->one_handed+$user->get()->two_handed+$user->get()->bow+$user->get()->crossbow;
if($figth_skill > 200) $dop_uron .= rand(1,$fight_skill);
if($magic->mana > $user->get()->mana and isset($magic->id)){
Notif :: error('Нехватает маны для использования свитка','/dragons/fight?id='.$mob->id);
exit;
}
if(isset($magic->force)) $dop_uron .= $magic->force;
$uron = ['user' => $user->get()->force+$user->get()->dex+$dop_uron,
'mob' => $mob->force+$mob->dex];
$hp_mob = $mobArray['hp']-$uron['user'];
$hp_user = $user->get()->hp-$uron['mob'];
if($hp_user <= 0) $hp_user = 0;
$udar_mob = $db->prepare('update `users` set `hp` = ? where `user_id` = ?');
$udar_mob -> execute([$hp_user,$user->get()->user_id]);
if(isset($magic->id)){
$del_magic = $db->prepare('DELETE FROM `bag` WHERE `id` = ?');
$del_magic -> execute([$magic->id]);
}
if($hp_user == 0){
unset($_SESSION['mob']);
$sql = $db->prepare('update `users` set `exp` = ? where `user_id` = ?');
$sql -> execute([$user->get()->exp+1,$user->get()->user_id]);
Notif :: message($mob->name.' победил. Награда: <img src="/public/assets/images/xp.png"> 1','/dragons/fight?id='.$mob->id);
exit;
}
if($hp_mob < 1){
unset($_SESSION['mob']);
$sql = $db->prepare('update `users` set `exp` = ? where `user_id` = ?');
$sql -> execute([$user->get()->exp+$mob->exp,$user->get()->user_id]);
$kill = $db->prepare('insert into `kills` (`user`,`dragon`) values (?,?)');
$kill -> execute([$user->get()->user_id,$mob->id]);
unset($_SESSION['dragons']);
Notif :: message('Вы убили дракона «'.$mob->name.'» Награда: <img src="/public/assets/images/xp.png"> '.$mob->exp,'/dragons/fight?id='.$mob->id);
exit;
}else{
$session = ['mob' => $mob->id, 'hp' => $hp_mob];
$_SESSION['dragons'] = $session;
Notif :: message('Вы нанесли '.$uron['user'].' урона дракону «'.$mob->name.'»','/dragons/fight?id='.$mob->id);
exit;
}
}
function hp_pr($hp,$max_hp){
return intval($hp/$max_hp*100);
}
function button_name($hp,$max_hp,$name){
if($hp < $max_hp) return 'Добить «'.$name.'»';
else
return 'Атаковать';
}
echo $template->render('game.dragons_fight', ['mob' => $mob, 'hp' => $mobArray['hp'],'rolls'=>$rolls]);