Вход Регистрация
Файл: system/tutorial.php
Строк: 121
<?php
/* Единая централизованная система обучения новичков: by Метриум (Стэлп) */
declare(strict_types=1);
function 
tutorial_is_active(?array $user): bool { return is_array($user) && (int)($user['save'] ?? 1)===&& (int)($user['new'] ?? 1)===0; }
function 
tutorial_progress_get(string $key): int { if(session_status()!==PHP_SESSION_ACTIVE) @session_start(); return max(0,(int)($_SESSION['_tutorial_progress'][$key]??0)); }
function 
tutorial_record_action(?array $user,string $action): void { if(!tutorial_is_active($user)) return; if(session_status()!==PHP_SESSION_ACTIVE) @session_start(); if($action==='duel'){ $n=tutorial_progress_get('duel'); $_SESSION['_tutorial_progress']['duel']=min(5,$n+1); } }
function 
tutorial_clear_progress(): void { if(session_status()!==PHP_SESSION_ACTIVE) @session_start(); unset($_SESSION['_tutorial_progress']); }
function 
tutorial_stage(array $user): array {
 
$arena=max(0,(int)($user['boy_arena']??0)); if($arena<10) return ['key'=>'arena','title'=>'Наставник Арены','text'=>'Начнём с Арены. Проведи 10 боёв, чтобы освоиться с боевой системой.','progress'=>min(10,$arena),'max'=>10,'url'=>'/arena/','button'=>'Перейти на Арену','icon'=>'/images/icon/arena.png'];
 
$abil=max(0,(int)($user['abil']??0)); if($abil<7) return ['key'=>'ability','title'=>'Наставник','text'=>'Отлично, 10 боёв позади. Теперь усили героя: прокачай суммарно 7 уровней умений.','progress'=>min(7,$abil),'max'=>7,'url'=>'/ability/'.(int)$user['id'].'/','button'=>'Перейти к умениям','icon'=>'/images/icon/train.png'];
 
$duels=tutorial_progress_get('duel'); if($duels<5) return ['key'=>'duel','title'=>'Наставник','text'=>'Проведи 5 настоящих дуэлей. Победа или поражение — засчитывается только завершённый бой.','progress'=>min(5,$duels),'max'=>5,'url'=>'/duel/','button'=>'Перейти в Дуэли','icon'=>'/images/icon/league.png'];
 
$skill=max(0,(int)($user['skill']??0)); if($skill<10) return ['key'=>'train','title'=>'Наставник','text'=>'Хорошая работа. Теперь доведи мастерство до 10 в Тренировке.','progress'=>min(10,$skill),'max'=>10,'url'=>'/train/','button'=>'Перейти в Тренировку','icon'=>'/images/icon/train.png'];
 
$token=function_exists('security_flow_token')?security_flow_token('save'):''; return ['key'=>'save','title'=>'Наставник','text'=>'Основы пройдены. Сохрани героя, придумай имя и пароль — после этого обучение завершится.','progress'=>1,'max'=>1,'url'=>'/save?unic_code='.rawurlencode($token),'button'=>'Сохранить героя','icon'=>'/images/icon/user.png'];
}
function 
tutorial_render(?array $user,string $location=''): void { if(!tutorial_is_active($user)) return; $stage=tutorial_stage($user); $pct=(int)round(((int)$stage['progress']/max(1,(int)$stage['max']))*100); echo '<div class="tutorial-guide"><div class="tutorial-guide__npc"><img src="/images/town/sage.png" alt="Наставник"></div><div class="tutorial-guide__body"><div class="tutorial-guide__head"><img src="'.htmlspecialchars((string)$stage['icon'],ENT_QUOTES,'UTF-8').'" alt=""> <b>'.htmlspecialchars((string)$stage['title'],ENT_QUOTES,'UTF-8').'</b></div><div class="tutorial-guide__text">'.htmlspecialchars((string)$stage['text'],ENT_QUOTES,'UTF-8').'</div>'; if((int)$stage['max']>1){ echo '<div class="tutorial-guide__progress"><span style="width:'.$pct.'%"></span></div><div class="tutorial-guide__count">Прогресс: '.(int)$stage['progress'].' / '.(int)$stage['max'].'</div>'; } echo '<div class="tutorial-guide__action"><a class="btns _g" href="'.htmlspecialchars((string)$stage['url'],ENT_QUOTES,'UTF-8').'"><span class="end"><span class="label">'.htmlspecialchars((string)$stage['button'],ENT_QUOTES,'UTF-8').'</span></span></a></div></div><div class="clb"></div></div><div class="mini-line"></div>'; }
Онлайн: 3
Реклама