Вход Регистрация
Файл: system/user.php
Строк: 290
<?php
/* Обновление игры под PHP 8.4 / PDO и усиление безопасности: by Метриум (Стэлп) */
$user null;
$id security_auth_user_id();
if(
$id 0) {
    
$user db_fetch_one('SELECT * FROM `users` WHERE `id` = :id LIMIT 1', ['id'=>$id]);

  if(!
$user) {
      
security_auth_logout();
      
$id 0;
      return;
  }
  
// Presence пишем не на каждый запрос: это резко снижает количество UPDATE при навигации.
  
$now=time(); $remoteIp=(string)($_SERVER['REMOTE_ADDR'] ?? ''); $ua=(string)($_SERVER['HTTP_USER_AGENT'] ?? ''); $self=(string)($_SERVER['PHP_SELF'] ?? '');
  if ((int)(
$user['online'] ?? 0) < $now-15 || (string)($user['ip'] ?? '') !== $remoteIp || (string)($user['self'] ?? '') !== $self) {
      
db_execute('UPDATE `users` SET `online`=:online,`ip`=:ip,`ua`=:ua,`self`=:self WHERE `id`=:id',[
        
'online'=>$now,'ip'=>$remoteIp,'ua'=>substr($ua,0,255),'self'=>substr($self,0,255),'id'=>(int)$user['id']
      ]);
      
$user['online']=$now$user['ip']=$remoteIp$user['self']=$self;
  }
  
$_time 2;
if ((
time() - $user['last_update']) > $_time) {

$hp $user['vit'] * 2;
if (
$user['hp'] < $hp) {
$_hp round((((time() - $user['last_update']) / $_time) - 1));
if (
$_hp $hp) {
$_hp $hp $user['hp'];
}
$user['hp'] = $user['hp'] + $_hp;
}
if (
$user['mp'] < $user['mana']) {
$_mp round((((time() - $user['last_update']) / $_time) - 1));
if (
$_mp $user['mana']) {
$_mp $user['mana'] - $user['mp'];
}
$user['mp'] = $user['mp'] + $_mp;
}
$user['last_update'] = time();
}
elseif (
$user['last_update'] < (time() - $_time)) {
$user['last_update'] = time();
}
if (
$user['hp'] > $user['vit'] * 2) {
$user['hp'] = $user['vit'] * 2;
}
if (
$user['hp'] < 0) {
$user['hp'] = 0;
}
if (
$user['mp'] > $user['mana']) {
$user['mp'] = $user['mana'];
}
if (
$user['mp'] < 0) {
$user['mp'] = 0;
}

db_query('UPDATE `users` SET `last_update` = "'.$user['last_update'].'", `hp` = "'.$user['hp'].'", `mp` = "'.$user['mp'].'" WHERE `id` = "'.$user['id'].'"');

      


 
     if(
$user['essence'] > 0) {

    

      
$user['str'] += $user['essence'];

      
$user['vit'] += $user['essence'];

      
$user['agi'] += $user['essence'];

      
$user['def'] += $user['essence'];
}


 
//




//

    
if($user['last_update'] - $user['duel_last_update'] > (60 30)) {

        
db_query('UPDATE `users` SET `duel_last_update` = "'.($user['duel_last_update'] + (60 30)).'",
                                             `duel_fights` = "'
.($user['duel_fights']  + (($user['duel_fights'] < 11) ? 1:0)).'",
                                            `duel_changes` = "'
.($user['duel_changes'] + (($user['duel_changes'] < 11) ? 1:0)).'" WHERE `id` = "'.$user['id'].'"');

    }
/*
  if($user['hp'] > $user['vit'] * 2) {
    db_query('UPDATE `users` SET `hp` = "'.($user['vit'] * 2).'" WHERE `id` = "'.$user['id'].'"');
  }
  
  if($user['hp'] < 0) {
    db_query('UPDATE `users` SET `hp` = "0" WHERE `id` = "'.$user['id'].'"');
  }

  if($user['mp'] > $user['mana']) {
    db_query('UPDATE `users` SET `mp` = "'.$user['mana'].'" WHERE `id` = "'.$user['id'].'"');
  }

  if($user['mp'] < 0) {
    db_query('UPDATE `users` SET `mp` = "0" WHERE `id` = "'.$user['id'].'"');
  }
*/
$exchange db_fetch_assoc(db_query('SELECT * FROM `exchange` WHERE `user_id` = '.(int)$user['id'].' LIMIT 1'));
if (!
$exchange) {
    
$exchange = [
        
'user_id' => (int)$user['id'],
        
'count'   => max(1, (int)$user['level']),
        
'time'    => time(),
    ];
    
db_query('INSERT INTO `exchange` (`user_id`,`count`,`time`) VALUES ('.(int)$exchange['user_id'].','.(int)$exchange['count'].','.(int)$exchange['time'].')');
}

$exchangeLevel max(1, (int)$user['level']);
$exchangeStep max(1, (int)round(86400 $exchangeLevel));
$k_point max(0intdiv(max(0time() - (int)$exchange['time']), $exchangeStep));
if (
$k_point >= 1) {
    
$exchange['count'] = (int)$exchange['count'] + $k_point;
    
$exchange['time'] = time();
    
db_query('UPDATE `exchange` SET `count` = '.(int)$exchange['count'].', `time` = '.(int)$exchange['time'].' WHERE `user_id` = '.(int)$user['id'].' LIMIT 1');
}
if ((int)
$exchange['count'] > $exchangeLevel) {
    
$exchange['count'] = $exchangeLevel;
    
$exchange['time'] = time();
    
db_query('UPDATE `exchange` SET `count` = '.$exchangeLevel.', `time` = '.(int)$exchange['time'].' WHERE `user_id` = '.(int)$user['id'].' LIMIT 1');
}


  
$clan_memb db_query('SELECT * FROM `clan_memb` WHERE `user` = "'.$user['id'].'"');
  
$clan_memb db_fetch_array($clan_memb);

  function 
clan_buff($i) {
    
$level=max(0,min(51,(int)$i));
    if(
function_exists('game_v51_clan_buff_value')) return game_v51_clan_buff_value($level);
    return 
min(400,$level<=3?$level*4:(int)round($level*7.84));
  }



    if(
$clan_memb) {

       
$clan db_fetch_array(db_query('SELECT * FROM `clans` WHERE `id` = "'.$clan_memb['clan'].'"'));

    if(
$clan_memb['last_update'] <= time()) {
        
      
db_query('UPDATE `clan_memb` SET `last_update` = "'.($clan_memb['last_update'] + ((60 60) * 24 )).'",
                                                    `v` = `v` + 3 WHERE `id` = "'
.$clan_memb['id'].'"');

    }
    
    
$clan_buff clan_buff($clan['built_1']);
    
    if(
$clan['built_1'] > && $clan_buff && (int)($clan['built_2_time'] ?? 0) > time()) {
      
// Статуя указывает бонус К СУММЕ параметров, поэтому не умножаем его в 4 раза.
      
if(function_exists('game_v51_clan_buff_parts')) {
        [
$__cbStr,$__cbVit,$__cbAgi,$__cbDef]=game_v51_clan_buff_parts((int)$clan_buff);
      } else {
        
$__q=intdiv((int)$clan_buff,4); $__r=(int)$clan_buff%4;
        
$__cbStr=$__q+($__r>0?1:0); $__cbVit=$__q+($__r>1?1:0); $__cbAgi=$__q+($__r>2?1:0); $__cbDef=$__q+($__r>3?1:0);
      }
      
$user['str'] += $__cbStr;
      
$user['vit'] += $__cbVit;
      
$user['agi'] += $__cbAgi;
      
$user['def'] += $__cbDef;
    }
    

  }






//




//




    
$ban db_fetch_array(db_query('SELECT * FROM `ban` WHERE `user` = "'.$user['id'].'"'));
if(
$ban) {
  if(
$ban['time'] <=time()) {
      
db_query('DELETE FROM `ban` WHERE `user` = "'.$user['id'].'"');
  }
  if(
$ban['time'] > time() && $_SERVER['PHP_SELF'] != '/ban.php') {
    
header('location: /ban');
    exit;
  }

  }    
  
$premium db_fetch_array(db_query('SELECT * FROM `premium` WHERE `user` = "'.$user['id'].'"'));
  
  if(
$premium) {
  
    if(
$premium['time'] <= time()) {
    
db_query('UPDATE `users` SET `str` = `str` - 500,
                                     
`vit` = `vit` - 500,
                                     
`agi` = `agi` - 500,
                                    
`def` = `def` - 500 WHERE `id` = ''.$user['
id'].''');

      
db_query('DELETE FROM `premium` WHERE `user` = ''.$user['id'].''');
  
    }
  
  }





//Если расса инрока не совподает с рассой клана, то удоляем игрока из клана
if($clan_memb){
if(!isset(
$clan) || !$clan$clan db_fetch_array(db_query('SELECT * FROM `clans` WHERE `id` = "'.$clan_memb['clan'].'"'));
if(
$user['r'] != $clan['r'] && (int)($user['access']??0) < 2){
db_query('DELETE FROM `clan_memb` WHERE `clan` = "'.$clan['id'].'" AND `user` = "'.$user['id'].'"');
}
}

}

if (
is_array($user) && !empty($user['id'])) {
$clan $clan ?? null// safe default only when membership did not load a clan — by Метриум (Стэлп)
if (function_exists('game_apply_trophy_bonus')) { game_apply_trophy_bonus($user); }
// Учёт потраченной боевой энергии для сундуков заданий — by Метриум (Стэлп).
if (function_exists('game_energy_spend') && isset($_GET['attack']) && !isset($GLOBALS['__energy_counted'])) {
    
$route=(string)parse_url($_SERVER['REQUEST_URI'] ?? '/'PHP_URL_PATH);
    
$energyCosts=['/arena'=>220,'/duel'=>180,'/campaign'=>260,'/coliseum'=>250,'/hunting'=>160,'/undying'=>240,'/league'=>200];
    foreach(
$energyCosts as $prefix=>$cost){ if(str_starts_with($route,$prefix)){ $GLOBALS['__energy_counted']=1game_energy_spend((int)$user['id'],$cost); break; } }
}

// Коллекции дают бонус К СУММЕ четырёх основных параметров. Старые версии ошибочно
// прибавляли полную сумму к каждому параметру (x4); mode=0 конвертируется один раз.
$oldCollector=(int)($user['bonus_col'] ?? 0);
$newCollector=(int)($user['collector_bonus'] ?? 0);
$collectorMode=(int)($user['collector_bonus_mode'] ?? 0);
if(
$collectorMode===|| $oldCollector!==$newCollector){
    
$newParts=function_exists('game_stat_sum_parts') ? game_stat_sum_parts($newCollector) : [0,0,0,0];
    if(
$collectorMode===0){
        
// Legacy stored bonus was applied in full to every stat. Remove that exact legacy amount.
        
$oldParts=[$oldCollector,$oldCollector,$oldCollector,$oldCollector];
    }else{
        
$oldParts=function_exists('game_stat_sum_parts') ? game_stat_sum_parts($oldCollector) : [0,0,0,0];
    }
    
$delta=[]; for($i=0;$i<4;$i++) $delta[$i]=$newParts[$i]-$oldParts[$i];
    
db_execute('UPDATE `users` SET `bonus_col`=:new,`collector_bonus_mode`=1,`str`=GREATEST(1,`str`+:ds),`vit`=GREATEST(1,`vit`+:dv),`agi`=GREATEST(1,`agi`+:da),`def`=GREATEST(1,`def`+:dd) WHERE `id`=:id',[
        
'new'=>$newCollector,'ds'=>$delta[0],'dv'=>$delta[1],'da'=>$delta[2],'dd'=>$delta[3],'id'=>(int)$user['id']
    ]);
    foreach([
'str','vit','agi','def'] as $i=>$k$user[$k]=max(1,(int)($user[$k]??0)+$delta[$i]);
    
$user['bonus_col']=$newCollector$user['collector_bonus_mode']=1;
}

if (
function_exists('game_achievement_v50_sync')) { game_achievement_v50_sync($user); }



/**
* Трофеи
*/

$names = array (0,'Трофей бойца<br/> Сила +50 | Жизнь +50 | Защита +50','Трофей воина<br/> Сила +75 | Защита +75','Трофей избранного<br/> Сила +75 | Жизнь +75 | Защита +75 | Удача +75',
'Трофей идущего к славе<br/> Сила +85 | Жизнь +85 | Защита +85 | Удача +85','Трофей несокрушимогo<br/> Защита +250',
        
'Трофей силы<br/> Сила +250','Трофей могущества<br/> Мана +500','Трофей титана<br/> Защита +350','Трофей полубога<br/> Сила +300 | Жизнь +300 | Защита +300 | Удача +300');
$quests = array (0,10,20,35,50,220,500,1500,2300,3500);
$undying_kills = array (0,50,200,350,500,2200,5000,7500,8300,10000);
$skill = array (0,10,24,35,50,100,150,200,250,300);

if (isset(
$user))
{
  for (
$i =1;$i<10;$i++)
  {
    if (
$user['troph'.$i] == 0)
    {
      if ((
function_exists('game_trophy_requirements_met_v36') ? game_trophy_requirements_met_v36($user,$i) : ($user['undying']>= $undying_kills[$i] && $user['quests']>=$quests[$i] && $user['skill']>=$skill[$i])) && $user['troph'.$i] == 0)
      {
        if (
$i == '1')
        {
          
db_query("UPDATE `users` SET `str`=`str`+'50',`vit`=`vit`+'50',`def`=`def`+'50' WHERE `id`='".$user['id']."'");
        }
        elseif (
$i =='2')
        {
          
db_query("UPDATE `users` SET `str`=`str`+'75',`def`=`def`+'75' WHERE `id`='".$user['id']."'");
        }
        elseif (
$i == '3')
        {
          
db_query("UPDATE `users` SET `str`=`str`+'75',`vit`=`vit`+'75',`def`=`def`+'75',`agi`=`agi`+'75' WHERE `id`='".$user['id']."'");
        }
        elseif (
$i =='4')
        {
          
db_query("UPDATE `users` SET `str`=`str`+'85',`vit`=`vit`+'85',`def`=`def`+'85',`agi`=`agi`+'85' WHERE `id`='".$user['id']."'");
        }elseif (
$i == '5')
        {
          
db_query("UPDATE `users` SET `def`=`def`+'250' WHERE `id`='".$user['id']."'");
        }elseif (
$i =='6')
        {
          
db_query("UPDATE `users` SET `str`=`str`+'250' WHERE `id`='".$user['id']."'");
        }elseif (
$i == '7')
        {
          
db_query("UPDATE `users` SET `mana`=`mana`+'500' WHERE `id`='".$user['id']."'");
        }elseif (
$i =='8')
        {
          
db_query("UPDATE `users` SET `def`=`def`+'350' WHERE `id`='".$user['id']."'");
        }elseif (
$i == '9')
        {
          
db_query("UPDATE `users` SET `str`=`str`+'300',`vit`=`vit`+'300',`def`=`def`+'300',`agi`=`agi`+'300' WHERE `id`='".$user['id']."'");
        }

        
db_query("UPDATE `users` SET `troph$i` = '1' WHERE `id`='".$user['id']."' ")or die (db_error());
        
?>
        <div class ='block'/>
        <center>
          <img src='/images/medals/50x50/<?=$i;?>.png'/><br/>
          <?=$names[$i];?>
          <br/>
          Трофей получен!
        </center>
        </div>
        <?php

      
}
    }
  }




}


    
    
$stone db_fetch_array(db_query('SELECT * FROM `stone` WHERE `user` = "'.$user['id'].'"'));
  
    if(
$stone) {
  
    if(
$stone['time'] < time()) {
    
db_query('UPDATE `users` SET `str` = `str` - 0,
                                     
`vit` = `vit` - 0,
                                     
`agi` = `agi` - 0,
                                    
`def` = `def` - 0 WHERE `id` = ''.$user['
id'].''');

      
db_query('DELETE FROM `stone` WHERE `user` = ''.$user['id'].''');
  
    }
  
}
/*
*
by Метриум (Стэлп)
*
*/

       
$_belt db_fetch_array(db_query("SELECT * FROM `belt` WHERE `user` = ".(int)$user['id']));
           if (!
is_array($_belt)) { $_belt = ['1'=>0,'2'=>0,'3'=>0,'4'=>0,'belt_1'=>0,'belt_2'=>0,'belt_3'=>0,'belt_4'=>0]; }
       
       
$__belt_param = array(=> 'str'=> 'vit'=> 'agi'=> 'def');
       
       for(
$i 1$i <= 4$i++) {
           
           if((int)(
$_belt['belt_'.$i] ?? 0) > time())  $user[$__belt_param[$i]] += $user['skill'];
           
           if((int)(
$_belt['belt_'.$i] ?? 0) > && (int)($_belt['belt_'.$i] ?? 0) < time()) {
               
db_query("UPDATE `belt` SET `belt_".$i."` = '0' WHERE `user` = ".$user['id']."");
           }
           
       }
            
$_effshop db_fetch_array(db_query('SELECT * FROM `effshop` WHERE `user` = "'.$user['id'].'"'));
if (!
is_array($_effshop)) {
    
$_effshop = [];
}

 if((int)(
$_effshop['effshop_2'] ?? 0) > time()) $user['str'] += 100;
 if((int)(
$_effshop['effshop_2'] ?? 0) > time()) $user['vit'] += 100;
 if((int)(
$_effshop['effshop_2'] ?? 0) > time()) $user['agi'] += 100;
 if((int)(
$_effshop['effshop_2'] ?? 0) > time()) $user['def'] += 100;
       
       for(
$i 1$i <= 3$i++) {
           
           if((int)(
$_effshop['effshop_'.$i] ?? 0) > && (int)($_effshop['effshop_'.$i] ?? 0) < time()) {
               
db_query("UPDATE `effshop` SET `effshop_".$i."` = '0' WHERE `user` = ".$user['id']."");
           }
           
       }
# Parse 
# @ void
# Code
                 
$ExpParse = array (0,10,45,90,140,200,325,425,575,750,1000,1500,1700,2100,2600,2955,3566,4254,5450,8900);
                 if (
$user['parse_exp'] >= $ExpParse[$user['parse']]) 
                 {
                     
                           
db_query('UPDATE `users` SET 
                                                     `str` = `str` + 10,
                                                     `vit` = `vit` + 10,
                                                     `agi` = `agi` + 10,
                                                     `def` = `def` + 10,
                                                     `parse` = `parse` + 1,
                                                     `parse_exp` = "0" WHERE `id` = "'
.$user['id'].'"');
?>



</div>

<?php
                     
                     
                 
}
            
function 
isMobile() {
return 
preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up.browser|up.link|webos|wos)/i"$_SERVER["HTTP_USER_AGENT"]);
}

$desiredOns isMobile() ? 1;
if ((int)(
$user['ons'] ?? -1) !== $desiredOns) {
  
db_execute('UPDATE `users` SET `ons`=:ons WHERE `id`=:id',['ons'=>$desiredOns,'id'=>(int)$user['id']]);
  
$user['ons']=$desiredOns;
}

        
$prem db_fetch_assoc(db_query("SELECT * FROM `alex_premium` WHERE `user_id` = ".$user['id'].""));


if(!
$prem){
     
db_query('INSERT INTO `alex_premium` (`user_id`)VALUES('.$user['id'].')'); 
    
}



      

if(
$user['med'] == 1) {
    
$user['str'] += 50;
      
$user['vit'] += 50;
      
$user['def'] += 50;
}
if(
$user['med'] == 2) {
    
$user['str'] += 100;
      
$user['vit'] += 100;
      
$user['def'] += 100;
}
if(
$user['med'] == 3) {
    
$user['str'] += 200;
      
$user['vit'] += 200;
      
$user['def'] += 200;
}
if(
$user['med'] == 4) {
    
$user['str'] += 300;
      
$user['vit'] += 300;
      
$user['def'] += 300;
}
if(
$user['med'] == 5) {
    
$user['str'] += 400;
      
$user['vit'] += 400;
      
$user['def'] += 400;
}
 if(
$user['ar_time']<time()){db_query("UPDATE `users` SET `ar_boi`='25',`ar_time`='".(time()+60*60)."' WHERE `id` = ".$user['id']." ");}
if(
function_exists('game_v37_repair_saved_state')) game_v37_repair_saved_state($user);
/*Включаем показ ошибок только для админа и меня*/
/*
if($user['id']==18773 || $user['id']==1){
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
}
*/
}
?>
Онлайн: 3
Реклама