Вход Регистрация
Файл: system/functions.php
Строк: 596
<?php
/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */




// Безопасная нормализация входных данных для PHP 8.4.
// Не преобразуем глобальные массивы GET/POST/COOKIE/SESSION в HTML: экранирование выполняется при выводе.
function _string($value): string {
    if (
$value === null || is_array($value) || is_object($value) || is_resource($value)) {
        return 
'';
    }
    
$value trim((string)$value);
    return 
db_real_escape_string($value);
}

    function 
_num($i) {
    
      
$i = (int) abs(intval($i));
    
    return 
$i;
    
    }
    
    function 
n_f($i) {
        
// PHP 8.4: number_format() returns a string, so never pass that string to round().
        // Legacy DB/templates sometimes contain already formatted values like "6.000.000".
        
if (is_string($i)) {
            
$raw trim(str_replace(["xC2xA0"' '"'"], ''$i));
            if (
preg_match('/^[+-]?d{1,3}(?:.d{3})+$/D'$raw)) {
                
$raw str_replace('.'''$raw);
            } elseif (
str_contains($raw',') && !str_contains($raw'.')) {
                
$raw str_replace(',''.'$raw);
            }
            
$i is_numeric($raw) ? (float)$raw 0.0;
        } elseif (!
is_int($i) && !is_float($i)) {
            
$i is_numeric($i) ? (float)$i 0.0;
        }

        
$num = (float)$i;
        
$sign $num '-' '';
        
$num abs($num);
        
$compact = static function(float $valuefloat $divisorstring $suffix) use ($sign): string {
            
$v round($value $divisor3);
            
$txt rtrim(rtrim(number_format($v3'.'''), '0'), '.');
            return 
$sign.$txt.$suffix;
        };

        if (
$num >= 1000000) return $compact($num1000000'M');
        if (
$num >= 10000)   return $compact($num1000'K');

        return 
$sign.number_format($num0''"'");
    }

    function 
pages($path) {
  
    global 
$page$pages;
    
      if((
$page 2) > 0) {

        echo 
' <a href="'.$path.'page=1">&lt;&lt;</a> ';

      }
      else
      {

        echo 
'&lt;&lt;';

      }
        
      if(
$page 0) {

        echo 
' <a href="'.$path.'page='.($page 1).'">&lt;</a> ';
        
      }
      else
      {

        echo 
' &lt; ';

      }
        
      if(
$page == $pages && $page 0) {

        echo 
' <a href="'.$path.'page='.($page 4).'">'.($page 4).'</a> ';
        
      }

        
      if(
$page == $pages && $page 0) {

        echo 
' <a href="'.$path.'page='.($page 3).'">'.($page 3).'</a> ';
        
      }
        
      if(
$page 0) {

        echo 
' <a href="'.$path.'page='.($page 2).'">'.($page 2).'</a> ';
        
      }

        
      if(
$page 0) {

        echo 
' <a href="'.$path.'page='.($page 1).'">'.($page 1).'</a> ';
        
      }


      echo 
$page;
        
       
      if(
$page <= $pages) {

        echo 
' <a href="'.$path.'page='.($page 1).'">'.($page 1).'</a> ';
        
      }

        
      if(
$page <= $pages) {

        echo 
' <a href="'.$path.'page='.($page 2).'">'.($page 2).'</a> ';
        
      }
        
      if(
$page == && $page <= $pages) {

        echo 
' <a href="'.$path.'page='.($page 3).'">'.($page 3).'</a> ';
        
      }
        
      if(
$page == && $page <= $pages) {

        echo 
' <a href="'.$path.'page='.($page 4).'">'.($page 4).'</a> ';
        
      }

        
      if(
$page <= $pages) {

        echo 
' <a href="'.$path.'page='.($page 1).'">&gt;</a> ';

      }
      else
      {

        echo 
' &gt; ';

      }
        
      if((
$page 2) <= $pages) {

        echo 
' <a href="'.$path.'page='.$pages.'">&gt;&gt;</a> ';
        
      }
      else
      {

        echo 
' &gt;&gt; ';

      }
      
    }
    
    function 
smiles($string) {
    
      
$string str_replace(array(':@)',':ded'), '<img src="/images/smiles/mini_ded.gif" alt="*"/>',      $string);

      
$string str_replace(array('O:-)','o:-)'),'<img src="/images/smiles/mini_angel.gif" alt="*"/>',      $string);

      
$string str_replace(array(']:-)',']:-]'),'<img src="/images/smiles/mini_diablo.gif" alt="*"/>',     $string);

      
$string str_replace(array(':$',':-$',':-['),'<img src="/images/smiles/mini_blush.gif" alt="*"/>',        $string);

      
$string str_replace(array(':))',':-))','-))','=))'),'<img src="/images/smiles/mini_lol.gif" alt="*"/>',         $string);

      
$string str_replace(array(':)',':-)','=)'),'<img src="/images/smiles/mini_ulibka.gif" alt="*"/>',       $string);

      
$string str_replace(array(';)',';-)'),'<img src="/images/smiles/mini_podmigivanie.gif" alt="*"/>'$string);

      
$string str_replace(array(':-D',':-d',':D',')))'),'<img src="/images/smiles/mini_spin.gif" alt="*"/>',        $string);

      
$string str_replace(array(':-P',':-p',':-Р',':-р',':P',':p'),'<img src="/images/smiles/mini_yazyk.gif" alt="*"/>'$string);

      
$string str_replace(array(':(',':-('),'<img src="/images/smiles/mini_sad.gif" alt="*"/>',        $string);

      
$string str_replace(array(':'(',':'-('),'<img src="/images/smiles/mini_cry.gif" alt="*"/>',        $string);

      
$string str_replace(array(':]',':-]'),'<img src="/images/smiles/mini_dovolen.gif" alt="*"/>',        $string);

      
$string str_replace(array(':-/',':-\'),'<img src="/images/smiles/mini_hm.gif" alt="*"/>',        $string);

      $string = str_replace(array('
8-)','%-)'),'<img src="/images/smiles/mini_krut.gif" alt="*"/>',        $string);

      $string = str_replace(array('
:*',':-*'),'<img src="/images/smiles/mini_kiss.gif" alt="*"/>',        $string);

      $string = str_replace(array('
%)','%-)'),'<img src="/images/smiles/mini_crazy.gif" alt="*"/>',        $string);

      $string = str_replace(array('
:-o',':-O',':-о',':-О','O.o','О.о','O_o','o_O'),'<img src="/images/smiles/mini_chok.gif" alt="*"/>',        $string);

      $string = str_replace(array('
О^','O^','o^'),'<img src="/images/smiles/mini_bye.gif" alt="*"/>',        $string);

      $string = str_replace(array('
:Оb',':Ob',':ob'),'<img src="/images/smiles/mini_good.gif" alt="*"/>',        $string);

      $string = str_replace(array('
%-E'),'<img src="/images/smiles/mini_gigi.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:gigi'),'<img src="/images/smiles/mini_gig.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
6-('),'<img src="/images/smiles/mini_fingal.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:bravo',':браво'),'<img src="/images/smiles/mini_bravo.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:heart',':сердце'),'<img src="/images/smiles/mini_heart.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:fig',':фиг'),'<img src="/images/smiles/mini_fig.gif" alt="*"/>',          $string);
      
      $string = str_replace(array('
:rose',':роза','@--'),'<img src="/images/smiles/mini_rose.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:krut',':крут'),'<img src="/images/smiles/mini_krut.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:vsemprivet',':всемпривет'),'<img src="/images/smiles/mini_privet.gif" alt="*"/>',        $string);

      $string = str_replace(array('
:rzhu', ':rzhu'),'<img src="/images/smiles/rzhu.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:блин',':blin'),'<img src="/images/smiles/blin.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:язык',':blum'),'<img src="/images/smiles/blum.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:баян',':boyan'),'<img src="/images/smiles/boyan.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:качаюсь',':sila'),'<img src="/images/smiles/exercise.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:любимвас',':love'),'<img src="/images/smiles/love_site.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:нештяк',':neshtyak'),'<img src="/images/smiles/krutoy.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:дискач',':disko'),'<img src="/images/smiles/impreza.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:мистер',':mr'),'<img src="/images/smiles/mister.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:упс',':oops'),'<img src="/images/smiles/oops.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:битва',':boy'),'<img src="/images/smiles/starwars.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:зажгём',':yahoo'),'<img src="/images/smiles/yahoo.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:присмотр',':spy'),'<img src="/images/smiles/spy.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:реп',':rap'),'<img src="/images/smiles/rap.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:рембо',':rembo'),'<img src="/images/smiles/rembo.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:подмиг',':wink'),'<img src="/images/smiles/girl_wink.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:танцуем',':dance'),'<img src="/images/smiles/dance3.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:фаны',':fans'),'<img src="/images/smiles/fans.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:тема',':tema'),'<img src="/images/smiles/close_tema.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:потстулом'),'<img src="/images/smiles/patstulom.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:нямням',':nyam'),'<img src="/images/smiles/nyam2.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:пока', ':пока'),'<img src="/images/smiles/poka.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
::dash1', ':dash1'),'<img src="/images/smiles/dash1.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
dOOb','doob','d00b'),'<img src="/images/smiles/mini_friends.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:igra',':игра'),'<img src="/images/smiles/igra.gif" alt="*"/>',        $string);
      ///////////////////////////////////////
      $string = str_replace(array('
:clapping',':clapping'),'<img src="/images/smiles/clapping.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:1perdun',':1perdun'),'<img src="/images/smiles/1perdun.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:26trening',':26trening'),'<img src="/images/smiles/26trening.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:25gitara',':25gitara'),'<img src="/images/smiles/25gitara.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:23gudok',':23gudok'),'<img src="/images/smiles/23gudok.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:21gun',':21gun'),'<img src="/images/smiles/21gun.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:23jason',':23jason'),'<img src="/images/smiles/23jason.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:19viselica',':19viselica'),'<img src="/images/smiles/19viselica.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:18rebenok1',':18rebenok1'),'<img src="/images/smiles/18rebenok1.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:17zvezdy',':17zvezdy'),'<img src="/images/smiles/17zvezdy.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:13telefon',':13telefon'),'<img src="/images/smiles/13telefon.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:0bc',':0bc'),'<img src="/images/smiles/0bc.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:18nakone',':18nakone'),'<img src="/images/smiles/18nakone.gif" alt="*"/>',        $string);
////////////////////////////////////////
      $string = str_replace(array('
:фото',':foto'),'<img src="/images/smiles/fotograf.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:художник',':hudozhnik'),'<img src="/images/smiles/hudozh00.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:карты',':karty'),'<img src="/images/smiles/karty000.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:куку',':kuku'),'<img src="/images/smiles/kuku0000.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:курит',':kurit'),'<img src="/images/smiles/kur00000.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:лак',':lak'),'<img src="/images/smiles/lak00000.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:неповезло',':nepovezlo'),'<img src="/images/smiles/nepovezl.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:хелов',':hello'),'<img src="/images/smiles/hello000.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:клёва',':kleva'),'<img src="/images/smiles/kleva000.gif" alt="*"/>',        $string);
      
    
      
      $string = str_replace(array('
:варвар',':varvar'),'<img src="/images/smiles/varvar00.gif" alt="*"/>',        $string);
      
      $string = str_replace(array('
:33_cofe'),'<img src="/images/smiles/33_cofe.gif" alt="*"/>',        $string);

    return $string;
    
    }


    function _time($i) {
      $i=max(0,(int)$i); $d=intdiv($i,86400); $h=intdiv($i%86400,3600); $m=intdiv($i%3600,60); $s=$i%60;
      $prefix=$d>0?$d.'
д ':''; return $prefix.($h>0?str_pad((string)$h,2,'0',STR_PAD_LEFT).':':'').str_pad((string)$m,2,'0',STR_PAD_LEFT).':'.str_pad((string)$s,2,'0',STR_PAD_LEFT);
    }
    
    function bb($string) {
      // Безопасный BBCode только для форума: by Метриум (Стэлп).
      // Сначала нейтрализуем пользовательский HTML, затем разрешаем строго белый список BB-тегов.
      $string=(string)$string;
      $placeholders=[];
      $string=preg_replace_callback('
~<imgs+src="/images/smiles/([A-Za-z0-9_.-]+)"s+alt="*"s*/?>~i', function($m) use (&$placeholders){
          $key='%%SMILE'.count($placeholders).'%%';
          $placeholders[$key]='<img src="/images/smiles/'.htmlspecialchars($m[1],ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8').'" alt="*">';
          return $key;
      }, $string) ?? $string;
      $string=htmlspecialchars($string, ENT_QUOTES|ENT_SUBSTITUTE, 'UTF-8');
      $simple=[
        'b'=>'strong','i'=>'em','u'=>'u','s'=>'s','small'=>'small','sup'=>'sup','sub'=>'sub','code'=>'code'
      ];
      foreach($simple as $bb=>$html){
        $string=preg_replace('~['.$bb.'](.*?)[/'.$bb.']~is','<'.$html.'>$1</'.$html.'>',$string) ?? $string;
      }
      $string=preg_replace_callback('~[color=([^]]{1,32})](.*?)[/color]~is', function($m){
          $c=trim(html_entity_decode($m[1],ENT_QUOTES|ENT_HTML5,'UTF-8'));
          if(!preg_match('/^(?:#[0-9a-f]{3,8}|[a-z]{3,20})$/i',$c)) return $m[2];
          return '<span style="color:'.htmlspecialchars($c,ENT_QUOTES,'UTF-8').'">'.$m[2].'</span>';
      },$string) ?? $string;
      $string=preg_replace_callback('~[size=([^]]{1,12})](.*?)[/size]~is', function($m){
          $n=(int)$m[1]; if($n<8||$n>32) return $m[2];
          return '<span style="font-size:'.$n.'px">'.$m[2].'</span>';
      },$string) ?? $string;
      $string=preg_replace_callback('~[url=([^]]{1,500})](.*?)[/url]~is', function($m){
          $url=html_entity_decode(trim($m[1]),ENT_QUOTES|ENT_HTML5,'UTF-8');
          if(!preg_match('~^(?:https?://|/)~i',$url)) return $m[2];
          return '<a href="'.htmlspecialchars($url,ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8').'" rel="nofollow noopener noreferrer">'.$m[2].'</a>';
      },$string) ?? $string;
      $string=preg_replace_callback('~[img=([^]]{1,500})](?:[/img])?~is', function($m){
          $url=html_entity_decode(trim($m[1]),ENT_QUOTES|ENT_HTML5,'UTF-8');
          if(!preg_match('~^(?:https?://|/)~i',$url)) return '';
          return '<img src="'.htmlspecialchars($url,ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8').'" alt="">';
      },$string) ?? $string;
      // Обычный формат [img]URL[/img] тоже поддерживается — by Метриум (Стэлп).
      $string=preg_replace_callback('~[img](.{1,500}?)[/img]~is', function($m){
          $url=html_entity_decode(trim($m[1]),ENT_QUOTES|ENT_HTML5,'UTF-8');
          if(!preg_match('~^(?:https?://|/)~i',$url)) return '';
          return '<img src="'.htmlspecialchars($url,ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8').'" alt="">';
      },$string) ?? $string;
      foreach(['center'=>'center','right'=>'right','left'=>'left'] as $tag=>$align){
        $string=preg_replace('~['.$tag.'](.*?)[/'.$tag.']~is','<div style="text-align:'.$align.'">$1</div>',$string) ?? $string;
      }
      $string=preg_replace('~[quote](.*?)[/quote]~is','<blockquote class="bb-quote">$1</blockquote>',$string) ?? $string;
      $string=preg_replace('~[spoiler](.*?)[/spoiler]~is','<details class="bb-spoiler"><summary>Спойлер</summary>$1</details>',$string) ?? $string;
      $string=preg_replace('~[list](.*?)[/list]~is','<ul class="bb-list">$1</ul>',$string) ?? $string;
      $string=preg_replace('~[*](.*?)(?=(?:[*]|</ul>))~is','<li>$1</li>',$string) ?? $string;
      $string=preg_replace('~[br]~i','<br>',$string) ?? $string;
      $string=preg_replace('~[hr]~i','<hr>',$string) ?? $string;
      $string=nl2br($string,false);
      foreach($placeholders as $key=>$html) $string=str_replace($key,$html,$string);
      return $string;
    }


    /**
     * Рендер доверенных системных сообщений. Поддерживает старые локальные HTML-теги
     * и новые BB-коды, но не пропускает произвольный HTML/JS из БД.
     * by Метриум (Стэлп)
     */
    function game_system_text($text) {
      $text=(string)$text;
      $safe=[];
      $put=function(string $html) use (&$safe): string { $k='%%SYSHTML'.count($safe).'%%'; $safe[$k]=$html; return $k; };

      // Старые системные сообщения также содержат внутренние ссылки на игроков/локации.
      $text=preg_replace_callback('~<a\s+[^>]*href\s*=\s*["\']?(/[^"\'\s>]+)["\']?[^>]*>(.*?)</a>~is',
        function($m) use ($put){
          $href=(string)$m[1];
          if(str_starts_with($href,'//') || preg_match('~[\r\n<>]~',$href)) return htmlspecialchars(strip_tags((string)$m[2]),ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8');
          return $put('<a href="'.htmlspecialchars($href,ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8').'">'.game_system_text($m[2]).'</a>');
        }, $text) ?? $text;
      // Старые сообщения хранили локальные иконки как <img src=/images/...>.
      $text=preg_replace_callback('~<img\s+[^>]*src\s*=\s*["\']?(/images/[A-Za-z0-9_./-]+)["\']?[^>]*>~i',
        function($m) use ($put){ return $put('<img src="'.htmlspecialchars($m[1],ENT_QUOTES|ENT_SUBSTITUTE,'UTF-8').'" alt="">'); }, $text) ?? $text;
      // Старые цветовые span. Разрешаем только известные CSS-классы игры.
      $text=preg_replace_callback('~<span\s+class\s*=\s*["\']?([A-Za-z0-9_-]+)["\']?\s*>(.*?)</span>~is',
        function($m) use ($put){
          $allowed=['dgreen','green','red','dred','blue','grey','yellow','orange','purple','white','bold','medium','small'];
          $cls=in_array(strtolower($m[1]),$allowed,true)?strtolower($m[1]):'';
          if($cls==='') return $m[2];
          return $put('<span class="'.$cls.'">'.game_system_text($m[2]).'</span>');
        }, $text) ?? $text;
      foreach(['br','hr'] as $tag){ $text=preg_replace_callback('~<'.$tag.'\s*/?>~i',fn($m)=>$put('<'.$tag.'>'),$text) ?? $text; }
      foreach(['b'=>'b','strong'=>'strong','i'=>'i','em'=>'em','u'=>'u'] as $tag=>$html){
        $text=preg_replace_callback('~<'.$tag.'>(.*?)</'.$tag.'>~is',fn($m)=>$put('<'.$html.'>'.game_system_text($m[1]).'</'.$html.'>'),$text) ?? $text;
      }
      $text=bb($text);
      foreach($safe as $k=>$html) $text=str_replace($k,$html,$text);
      return $text;
    }

    function _times($i) {

      $d  = floor($i / 86400); 
      
      $h  = floor(($i / 3600) - $d * 24); 
      
      $m  = floor(($i - $h * 3600 - $d * 86400) / 60); 
      
      $s  = $i - ($m * 60 + $h * 3600 + $d * 86400);

    
      if($d > 0) {
      
        $result = $d.' д';
       
      }
      elseif($h > 0)
                 {
       
        $result = $h.' ч';
                
      }elseif($m > 0)
                 {
       
      $result = $m.' мин';
                
      }elseif($s >= 0)
                 {
       
      $result = $s.' сек';
                
      }

  return $result.' назад';
  
  }
  
  
  // New Times
  

    function NewTime($i) {

      $d  = floor($i / 86400); 
      
      $h  = floor(($i / 3600) - $d * 24); 
      
      $m  = floor(($i - $h * 3600 - $d * 86400) / 60); 
      
      $s  = $i - ($m * 60 + $h * 3600 + $d * 86400);

    
      if($d > 0) {
      
        $result = $d.' д '.$h.' ч.';
       
      }
      elseif($h > 0)
                 {
       
         $result = $h.' ч '.$m.' м.';
                
      }elseif($m > 0)
                 {
       
       $result = $m.' мин '.$s.' сек.';
                
      }elseif($s >= 0)
                 {
       
      $result = $s.' сек';
                
      }

  return $result;
  
    }
    
   function NameBot(){
$array = array('q','w','r','t','p','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m');
            $array2 = array('e','y','u','i','o','a');
            $strlen = rand(5,6);
            $name     = '';            
for($i = 1; $i <= $strlen; $i ++) {
                if ($i == 1) {
                    $key = array_rand($array);
                    $name .= $array[$key];
                }
                elseif ($i == 2) {
                    $key = array_rand($array2);
                    $name .= $array2[$key];
                }
                elseif ($i <= 3) {
                    $key = array_rand($array);
                    $name .= $array[$key];
                }
                else
                {
                
                    $key = array_rand($array);
                    $name .= $array[$key];
                }
            }
            $name = mb_convert_case($name, MB_CASE_TITLE, "UTF-8");
            return $name;
        
        }
function tl($tl){
    $d=3600*24;
    $day=floor($tl/$d);
    $tl=$tl - ($d*$day);

    $hour=floor($tl/3600);
    $tl=$tl-(3600*$hour);

    $minute=floor($tl/60);
    $tl=$tl-(60*$minute);

    $second=floor($tl);

    $dayt="".($day>0?"$day д. ":null)."";
    $hourt="".($hour>0?"$hour ч. ":null)."";
    $minutet="".($minute>0?"$minute м. ":null)."";
    $secondt="".($second>0?"$second с. ":null)."";

    if($day>0){
        $minutet=NULL;
        $secondt=NULL;
    }
    if($hour>0 && $day==0){
        $secondt=NULL;
        $dayt=NULL;
    }

    return "$dayt $hourt $minutet $secondt";
}
function _data($timep) {
/////////////////////
$timep=str_replace("Jan","Января",$timep);
$timep=str_replace("Feb","Февраля",$timep);
$timep=str_replace("Mar","Марта",$timep);
$timep=str_replace("May","Мая",$timep);
$timep=str_replace("Apr","Апреля",$timep);
$timep=str_replace("Jun","Июня",$timep);
$timep=str_replace("Jul","Июля",$timep);
$timep=str_replace("Aug","Августа",$timep);
$timep=str_replace("Sep","Сентября",$timep);
$timep=str_replace("Oct","Октября",$timep);
$timep=str_replace("Nov","Ноября",$timep);
$timep=str_replace("Dec","Декабря",$timep);
return $timep. ' ';
}




/* Активные промо-блоки интерфейса — by Метриум (Стэлп) */
if (!function_exists('game_promo_defaults')) {
    function game_promo_defaults(): array {
        return [
            'sunduk_start'=>[1=>['name'=>'Сундуки звездной пыли','url'=>'sunduk']],
            'skilka'=>[
                1=>['name'=>'Скидка на тренировку','url'=>'train'],
                2=>['name'=>'Скидка на арену','url'=>'arena'],
                3=>['name'=>'Скидка на руны','url'=>'smith/runes'],
                4=>['name'=>'Скидка на вещи','url'=>'shop'],
                5=>['name'=>'Скидка на бонус вещей','url'=>'smith/bonus'],
                7=>['name'=>'Акция: золото ×2','url'=>'payment'],
            ],
        ];
    }
}
if (!function_exists('game_active_discount_percent')) {
    function game_active_discount_percent(int $id): int {
        $id=max(0,$id); $now=time();
        $row=db_fetch_one('SELECT `zena`,`time` FROM `skilka` WHERE `id`=:i LIMIT 1',['i'=>$id]);
        if(!$row || (int)($row['time']??0)<=$now) return 0;
        return max(0,min(100,(int)($row['zena']??0)));
    }
}
if (!function_exists('game_chest_event_active')) {
    function game_chest_event_active(): bool {
        $row=db_fetch_one('SELECT `time` FROM `sunduk_start` WHERE `id`=1 LIMIT 1');
        return $row && (int)($row['time']??0)>time();
    }
}
if (!function_exists('game_active_promos')) {
    function game_active_promos(int $limit = 8): array {
        static $cache = null;
        if ($cache === null) {
            $cache = []; $now=time(); $defs=game_promo_defaults();
            foreach (['sunduk_start','skilka'] as $table) {
                $q=db_query("SELECT * FROM `{$table}` WHERE `time` > {$now} ORDER BY `time` ASC LIMIT 12");
                while($row=db_fetch_array($q)){
                    if(!is_array($row)) continue;
                    $id=(int)($row['id']??0); $fallback=$defs[$table][$id]??null;
                    $rawName=trim((string)($row['nazvanie']??'')); $rawUrl=trim((string)($row['url']??''));
                    $name=($rawName!=='' && $rawName!=='0')?$rawName:(string)($fallback['name']??'');
                    $url=($rawUrl!=='' && $rawUrl!=='0')?$rawUrl:(string)($fallback['url']??'');
                    $until=(int)($row['time']??0); if($name===''||$url===''||$until<=$now) continue;
                    $cache[]=['name'=>$name,'url'=>'/'.trim($url,'/').'/', 'until'=>$until,
                        'discount'=>$table==='skilka'?(int)($row['zena']??0):0,'kind'=>$table,'id'=>$id];
                }
            }
            usort($cache,static fn(array $a,array $b):int=>$a['until']<=>$b['until']);
        }
        return array_slice($cache,0,max(0,$limit));
    }
}

?>
Онлайн: 3
Реклама