Файл: pages/combat/league.php
Строк: 349
<?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']='/league.php'; $_SERVER['SCRIPT_NAME']='/league.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';
if(!$user){
header('location: /');
exit;
}
$league = array( '', 'новичков', 'опытных', 'претендентов', 'мастеров', 'титанов', 'избранных');
$title = 'Лига ' . $league[$user['league']];
require_once './system/h.php';
echo '<div class='title'><span style='float: right;'> '.$user['league_place'].' место</span> Лига '.$league[$user['league']].'</div>
';
if($user['lig_priz']==1 && $user['lig_resp']<=time()){ db_query('UPDATE `users` SET
`lig_priz`=0 WHERE `id` = "'.$user['id'].'"'); header('location: league');exit;}
if($user['league_place'] <= 1000 && $user['league_place'] > 900) {
$oput = 1000;
$sera = 1000;
}
if($user['league_place'] <= 900 && $user['league_place'] > 800) {
$oput = 2000;
$sera = 2000;
}
if($user['league_place'] <= 800 && $user['league_place'] > 700) {
$oput = 5000;
$sera = 5000;
}
if($user['league_place'] <= 700 && $user['league_place'] > 600) {
$oput = 10000;
$sera = 10000;
}
if($user['league_place'] <= 600 && $user['league_place'] > 500) {
$oput = 15000;
$sera = 15000;
}
if($user['league_place'] <= 500 && $user['league_place'] > 400) {
$oput = 20000;
$sera = 20000;
}
if($user['league_place'] <= 400 && $user['league_place'] > 300) {
$oput = 25000;
$sera = 25000;
}
if($user['league_place'] <= 300 && $user['league_place'] > 200) {
$oput = 30000;
$sera = 30000;
}
if($user['league_place'] <= 200 && $user['league_place'] > 100) {
$oput = 40000;
$sera = 40000;
}
if($user['league_place'] <= 100 && $user['league_place'] >= 1) {
$oput = 50000;
$sera = 50000;
}
if(isset($user['id'])){
if (isset($_SESSION['light'])){
echo "$_SESSION[light]";
$_SESSION['light']=NULL;
}
}
if(isset($_GET['nag'])){
if($user['lig_priz']=='1'){
$_SESSION['light']="дождитесь окончание времени.";
header("location:?");
exit;
}else if ($user['lig_priz']=='0') {
db_query("UPDATE `users` SET `exp`=`exp`+'".$oput."',`s`=`s`+'".$sera."' WHERE `id`='".$user['id']."'");
db_query('UPDATE `users` SET `lig_priz` = "1",
`lig_resp` = "'.(time() + 10800).'" WHERE `id` = "'.$user['id'].'"');
$_SESSION['light']="<div class='content'><center><img src='/lig/cr.png' alt=''/> <b><font color='#90c090'>Задание выполнено!</font></b><img src='/lig/cr.png' alt=''/></h2><div class='separator'></div><font color='blue'>Награда:</font> <img src='/images/icon/exp.png' alt='Опыт'/> $oput <img src='/images/icon/silver.png' alt='Серебро'/> $sera<br/>Следующая награда через: 02:59:59</div></center>";
header("location:?");
exit;
}
}
if($user['league_fights']=='0'){
if(isset($_GET['respawn'])){
if($user['g']<'60'){
$_SESSION['light']="У вас не достаточно золота.";
header("location:/league/");
exit;
}else if ($user['g']>='60') {
db_query("UPDATE `users` SET `league_fights`='25',`g`='".($user['g']-60)."' WHERE `id`='".$user['id']."'");
$_SESSION['light']='<div class="main" align="center">Вы приобрели 25 боев в лиге!</div>';
header("location:?");
exit;
}
}
}
echo '<div class='main'> <img src='/images/icon/2hit.png' alt=''/> Осталось боев: <b>' . $user['league_fights'] . '</b>
';
?><div class='mini-line'></div><div class='block_zero center blue'>Чем выше место в лиге, тем больше награда!</div><div class='mini-line'></div><?php
echo '</div>';
if($user['league_place'] == 1){
echo '<div class='block'><img src='/images/league/' . $user['league_place'] . '.png' width='50' height='50' style='float:left; margin-right:3px; margin-top:3px;' alt=''/> <span class='yellow'>Поздравляем!</span><br/>';
if($user['league_place'] == 1) echo'Вы лучший в лиге '.$league[$user['league']].'';
echo '<div style='clear: both;'></div>
</div>';
}
$mesto=max(1,(int)($user['league_place']??1000));
$offsets=$mesto<=10?[1]:[8,3,1];
$multipliers=[3,2,1];
$__str=max(4,(int)($user['str']??4));
$baseBot=random_int(max(1,intdiv($__str,4)),max(2,intdiv($__str,2)));
$w_items=((int)($user['league']??1)===1)?[
[17,25,9],[26,10,18],[27,11,19],[12,20,28],[13,21,29],[30,22,14],[23,31,15],[16,32,24]
]:[
[226,234,242],[227,235,243],[228,236,244],[229,237,245],[230,238,246],[231,239,247],[232,240,248],[233,241,249]
];
$leagueOpponents=[];
foreach($offsets as $idx=>$offset){
$target=max(1,$mesto-(int)$offset);
if($target >= $mesto) continue;
$mult=$multipliers[$idx]??1;
$items=[];
for($slot=0;$slot<8;$slot++) $items[$slot+1]=$w_items[$slot][array_rand($w_items[$slot])];
$leagueOpponents[]=[
'place'=>$target,
'name'=>NameBot(),
'stats'=>['str'=>$baseBot*$mult,'vit'=>$baseBot*$mult,'agi'=>$baseBot*$mult,'def'=>$baseBot*$mult],
'items'=>$items,
];
}
$attackTarget=max(0,(int)($_GET['attack']??0));
if($attackTarget>0){
$chosen=null;
foreach($leagueOpponents as $opp){ if((int)$opp['place']===$attackTarget){$chosen=$opp;break;} }
if(!$chosen){ $_SESSION['light']='Соперник уже недоступен. Обновите список.'; header('Location:/league/'); exit; }
if((int)($user['league_fights']??0)<=0){
$_SESSION['light']='<div class="main" align="center">У вас закончились бои.<br><br><a href="?respawn" class="button">Купить 25 боев за 60 <img src="/images/icon/gold.png" alt=""> золота</a></div>';
header('Location:/league/');exit;
}
$minHp=(int)ceil(((int)($user['vit']??1)*2)*0.10);
if((int)($user['mp']??0)<50 || (int)($user['hp']??0)<max(1,$minHp)){
$_SESSION['light']='<div class="main center"><span class="red">Для нападения нужно минимум 10% жизни и 50 маны.</span><br><a href="/lab/wiz/?potion=true&referal=/league/" class="button">Купить настойку</a></div>';
header('Location:/league/');exit;
}
$opponent=$chosen['stats'];
$ustr=max(1,(int)($user['str']??1)); $uagi=max(0,(int)($user['agi']??0)); $udef=max(0,(int)($user['def']??0));
$ostr=max(1,(int)$opponent['str']); $oagi=max(0,(int)$opponent['agi']); $odef=max(0,(int)$opponent['def']);
$dmg=random_int(max(1,intdiv($ustr,6)),max(1,intdiv($ustr,4)));
$crit=max(-100,min(100,random_int(1,2)*intdiv($uagi,100)-random_int(1,2)*intdiv($oagi,100)));
if(random_int(0,100)<=max(0,$crit)) $dmg*=2;
$dodge=max(-100,min(100,random_int(1,2)*intdiv($oagi,100)-random_int(1,2)*intdiv($uagi,100)));
if(random_int(0,100)<=max(0,$dodge)) $dmg=0;
$dmg=max(0,$dmg-random_int(max(0,intdiv($odef,12)),max(0,intdiv($odef,7))));
$opponentDmg=random_int(max(1,intdiv($ostr,6)),max(1,intdiv($ostr,4)));
$ocrit=max(-100,min(100,random_int(1,2)*intdiv($oagi,100)-random_int(1,2)*intdiv($uagi,100)));
if(random_int(0,100)<=max(0,$ocrit)) $opponentDmg*=2;
$ododge=max(-100,min(100,random_int(1,2)*intdiv($uagi,100)-random_int(1,2)*intdiv($oagi,100)));
if(random_int(0,100)<=max(0,$ododge)) $opponentDmg=0;
$opponentDmg=max(0,$opponentDmg-random_int(max(0,intdiv($udef,12)),max(0,intdiv($udef,7))));
$won=$dmg>$opponentDmg;
$hpLoss=$won?(int)ceil($opponentDmg/4):(int)ceil($opponentDmg/2);
db_execute('UPDATE `users` SET `hp`=GREATEST(`hp`-:h,1),`mp`=GREATEST(`mp`-50,0) WHERE `id`=:u',['h'=>$hpLoss,'u'=>(int)$user['id']]);
if($won){
db_execute('UPDATE `users` SET `league_place`=:p WHERE `id`=:u',['p'=>$attackTarget,'u'=>(int)$user['id']]);
$_silver=random_int(7,10)*max(1,1000-$mesto); $_exp=random_int(5,7)*max(1,1000-$mesto);
$_SESSION['light']='<div class="block center"><img src="/images/icon/2hit.png" alt=""> <span class="green"><b>Победа!</b></span> <img src="/images/icon/2hit.png" alt=""><div class="separator"></div><img src="/images/icon/silver.png" alt=""> '.n_f($_silver).' серебра <img src="/images/icon/exp.png" alt=""> '.n_f($_exp).' опыта</div>';
}else{
$_silver=random_int(2,200); $_exp=1;
$_SESSION['light']='<div class="block center"><img src="/images/icon/2hit.png" alt=""> <span class="red"><b>Поражение!</b></span> <img src="/images/icon/2hit.png" alt=""><div class="separator"></div><img src="/images/icon/silver.png" alt=""> '.n_f($_silver).' серебра <img src="/images/icon/exp.png" alt=""> '.n_f($_exp).' опыта</div>';
}
game_quest_progress_event((int)$user['id'],9,1,$won?1:0);
if($clan_memb && (int)($clan_memb['v']??0)>0) $_exp+=(int)round($_exp/1000)*(int)$clan_memb['v'];
if($premium) $_exp+=(int)ceil($_exp*.25);
if($clan){
if(game_clan_quest_is_week_open()){
game_clan_quest_increment((int)$clan['id'],3,(int)$user['id'],1);
if($won) game_clan_quest_increment((int)$clan['id'],4,(int)$user['id'],1);
}
db_execute('UPDATE `clans` SET `exp`=`exp`+:x WHERE `id`=:c',['x'=>$_exp,'c'=>(int)$clan['id']]);
db_execute('UPDATE `clan_memb` SET `exp`=`exp`+:x WHERE `clan`=:c AND `user`=:u',['x'=>$_exp,'c'=>(int)$clan['id'],'u'=>(int)$user['id']]);
}
db_execute('UPDATE `users` SET `exp`=`exp`+:x,`s`=`s`+:s,`league_fights`=GREATEST(`league_fights`-1,0) WHERE `id`=:u',['x'=>$_exp,'s'=>$_silver,'u'=>(int)$user['id']]);
header('Location:/league/');exit;
}
foreach($leagueOpponents as $opp){
$items=$opp['items']; $opponent=$opp['stats']; $target=(int)$opp['place'];
echo "<div class='main'>";
echo '<span style="float:left"><a href="/league/?attack='.$target.'"><img src="/manekenImage/0/'.implode('/',array_map('intval',$items)).'/" width="120" height="160" style="margin-right:10px;margin-top:3px" alt=""></a></span>';
echo '<b>'.$target.' '.security_html((string)$opp['name']).'</b><br><br>';
echo "<img src='/images/icon/str.png' alt=''> Сила: ".n_f((int)$opponent['str'])."<br>";
echo "<img src='/images/icon/vit.png' alt=''> Жизнь: ".n_f((int)$opponent['vit'])."<br>";
echo "<img src='/images/icon/agi.png' alt=''> Удача: ".n_f((int)$opponent['agi'])."<br>";
echo "<img src='/images/icon/def.png' alt=''> Защита: ".n_f((int)$opponent['def'])."<br><br>";
echo '<a href="/league/?attack='.$target.'" class="btn"><span class="end"><span class="label">Атаковать</span></span></a><div style="clear:both"></div></div>';
}
echo '<div class='main'>';
echo "Ваши параметры:<br/>";
echo "<img src='/images/icon/str.png' alt='*'/> ".$user['str']." <img src='/images/icon/vit.png' alt='*'/> ".$user['vit']." <img src='/images/icon/agi.png' alt='*'/> ".$user['agi']." <img src='/images/icon/def.png' alt='*'/> ".$user['def']."";
echo "</br></br></div>";
?><center><div class='main'><img src='/lig/cr.png' alt=''/> <b><font color='#90c090'>Награда за место в лиге</font> </b><img src='/lig/cr.png' alt=''/><br/><div class='separator'></div>Ваше место в лиге: <img src='/images/icon/2hit.png' alt=''/> <b><?=$user['league_place']?></b><br/><font color='blue'>Награда:</font> <img src='/images/icon/exp.png' alt='Опыт'/> <?=$oput?> <img src='/images/icon/silver.png' alt='Серебро'/> <?=$sera?><br/><?php
if($user['lig_priz']==1){
?><font color='grey'>До выдачи награды: <?=_time($user['lig_resp'] - time())?></font><?php
}
if($user['lig_priz']==0){
?><center><a href="?nag" class='btn'><span class='end'><span class='label'>Забрать Награду</a></span></span></center>
<?php
}
?><center><ul>Награда выдается один раз в 3 часа<br/> Чем выше место, тем больше награда</ul></div></center><?php
echo '<div class='main'><div class='menuList'>
<a href='/arena'><img src='/images/icon/arrow.png' alt=''/> Арена</a></li>
</div></div>';
require_once './system/f.php';
?>