Файл: pages/progress/medal.php
Строк: 80
<?php
/* Полностью переработанная система трофеев medal.php: by Метриум (Стэлп) */
declare(strict_types=1);
// 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']='/medal.php'; $_SERVER['SCRIPT_NAME']='/medal.php'; }
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';
$trophyNames=[
1=>'Трофей бойца',
2=>'Трофей воина',
3=>'Трофей избранного',
4=>'Трофей идущего к славе',
5=>'Трофей несокрушимого',
6=>'Трофей силы',
7=>'Трофей могущества',
8=>'Трофей титана',
9=>'Трофей полубога',
];
$owned=0;
for($i=1;$i<=9;$i++){
if((int)($user['troph'.$i]??0)===1) $owned++;
}
/* По умолчанию показываем текущий трофей, который ещё не получен.
* При переходе по иконке можно открыть любой трофей и увидеть его собственные требования.
*/
$active=1;
while($active<=9 && (int)($user['troph'.$active]??0)===1) $active++;
if($active>9) $active=9;
if(isset($_GET['id'])){
$requested=(int)$_GET['id'];
if($requested>=1 && $requested<=9) $active=$requested;
}
$tasks=function_exists('game_trophy_tasks_v36') ? game_trophy_tasks_v36($user,$active) : [];
$done=0;
foreach($tasks as $task){
if((int)($task['progress']??0) >= (int)($task['goal']??1)) $done++;
}
/* Информационный итог бонусов уже полученных трофеев. Бонусы в самой игре
* продолжают начисляться старой проверенной системой system/user.php.
*/
$totalStr=$totalVit=$totalAgi=$totalDef=$totalMana=0;
for($i=1;$i<=9;$i++){
if((int)($user['troph'.$i]??0)!==1) continue;
switch($i){
case 1: $totalStr+=50; $totalVit+=50; $totalDef+=50; break;
case 2: $totalStr+=75; $totalDef+=75; break;
case 3: $totalStr+=75; $totalVit+=75; $totalAgi+=75; $totalDef+=75; break;
case 4: $totalStr+=85; $totalVit+=85; $totalAgi+=85; $totalDef+=85; break;
case 5: $totalDef+=250; break;
case 6: $totalStr+=250; break;
case 7: $totalMana+=500; break;
case 8: $totalDef+=350; break;
case 9: $totalStr+=300; $totalVit+=300; $totalAgi+=300; $totalDef+=300; break;
}
}
?>
<div class="trophy-v36">
<div class="trophy-intro center">
Собирай трофеи и становись сильнее<br>
<span class="blue">У Великого титана должны быть все трофеи!</span>
</div>
<div class="trophy-main-icon">
<img src="/images/medals/50x50/<?=$active?>.png" alt="<?=security_html($trophyNames[$active])?>">
</div>
<div class="trophy-name"><?=security_html($trophyNames[$active])?></div>
<div class="trophy-count">
Выполнено заданий: <b><?=$done?></b> из <b><?=count($tasks)?></b>
</div>
<?php foreach($tasks as $task):
$goal=max(1,(int)($task['goal']??1));
$progress=max(0,(int)($task['progress']??0));
$ok=$progress >= $goal;
$pct=min(100,(int)round(($progress/$goal)*100));
?>
<div class="trophy-task <?=$ok?'done':''?>">
<div class="trophy-task-title">
<?=$ok?'✓':'🏆'?> <?=security_html((string)($task['text']??''))?>
</div>
<div class="trophy-task-progress">
Прогресс:
<?=$ok
? 'задание выполнено!'
: n_f($progress).' из '.n_f($goal)
?>
</div>
<div class="trophy-progress"><span style="width:<?=$pct?>%"></span></div>
<?php if(!$ok): ?>
<div class="center">
<a class="old-btn" href="<?=security_html((string)($task['link']??'/'))?>">Перейти к выполнению</a>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
<div class="trophy-owned-title">Мои трофеи:</div>
<div class="trophy-owned">
<?php for($i=1;$i<=9;$i++): ?>
<a href="/medal/?id=<?=$i?>">
<img
class="<?=((int)($user['troph'.$i]??0)===1?'':'locked')?>"
src="/images/medals/50x50/<?=$i?>.png"
alt="<?=security_html($trophyNames[$i])?>"
title="<?=security_html($trophyNames[$i])?>"
>
</a>
<?php endfor; ?>
</div>
<div class="trophy-bonus">
<b>Бонус трофеев:</b><br>
Получено: <?=$owned?> из 9<br>
<?php if($totalStr || $totalVit || $totalAgi || $totalDef): ?>
Сила +<?=n_f($totalStr)?> · Жизнь +<?=n_f($totalVit)?> · Удача +<?=n_f($totalAgi)?> · Защита +<?=n_f($totalDef)?><br>
<?php endif; ?>
<?php if($totalMana): ?>Мана +<?=n_f($totalMana)?><br><?php endif; ?>
<span class="orange">Каждый следующий трофей имеет собственные, более сложные требования.</span>
</div>
</div>
<?php include './system/f.php'; ?>