Вход Регистрация
Файл: element_function/element_function_users.php
Строк: 366
<?php
    
// Высчитываем процент алтаря
    
function SetAltar($altar_procent$altar_time$town) {
        
        
// Если я состою в городе, проверяем, активен ли алтарь города
        
if ($town 0) { 
            global 
$user_town
            
$other_altar = (($user_town['lost_altar_time'] < time()) ? $user_town['lost_altar']);
        } else { 
$other_altar 0$user_town false; }
    
        
// Если активирован мой алтарь
        
if ($altar_time time()) {
            
$user_altar = (($user_town) ? $user_town['lost_altar'] : 0);
        } else 
$user_altar 0;

        
$summa_altar $other_altar $user_altar;
        if (
$summa_altar != $altar_procent$update true; else $update false;
        return array(
'altar' => $summa_altar'update' => $update);
    }
    
    
// Обработчик параметров
    
function SetParams($user$str$hp$pr$type) {
        global 
$user_altar;
        if (
$str == AND $hp == AND $pr == 0$update false; else $update true;
        
        
// Если алтарь ещё включен, но время действия истекло, выключаем его
        
if ($user_altar['altar'] == AND !empty($user['lost_town_altar_params'])) {
            
$params explode(':'$user['lost_town_altar_params']);
            
$user['lost_params_strlen'] = $user['lost_params_strlen'] - $params[0];
            
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] - $params[1];
            
$user['lost_params_protection'] = $user['lost_params_protection'] - $params[2];
            
$user['lost_params_summa'] = $user['lost_params_strlen'] + $user['lost_params_heatpoints'] + $user['lost_params_protection'];
            
$user['lost_town_altar_params'] = '';
            
$user['lost_town_altar'] = 0;
            if (!
$update$okay true;
        }
        
        
// Если алтарь включен, но не равен сохраненному
        
if ($user_altar['altar'] > AND $user_altar['update'] == true) {
            
            
// Если параметры ещё не начислены, то добавляем их
            
if (empty($user['lost_town_altar_params'])) {
                
$plus_1 = (int)(($user['lost_params_strlen'] / 100) * $user_altar['altar']);        // Плюс к силе
                
$plus_2 = (int)(($user['lost_params_heatpoints'] / 100) * $user_altar['altar']);    // Пдюс к здоровью
                
$plus_3 = (int)(($user['lost_params_protection'] / 100) * $user_altar['altar']);     // Плюс к защите
            
                
$user['lost_params_strlen'] = $user['lost_params_strlen'] + $plus_1;
                
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] + $plus_2;
                
$user['lost_params_protection'] = $user['lost_params_protection'] + $plus_3;
                
$user['lost_params_summa'] = $user['lost_params_strlen'] + $user['lost_params_heatpoints'] + $user['lost_params_protection'];
                
$user['lost_town_altar_params'] = $plus_1.':'.$plus_2.':'.$plus_3;
                
$user['lost_town_altar'] = $user_altar['altar'];
            } else {
                
// Если параметры уже начислены, но алтарь иначе чём текущий, перезаписываем бонус
                
$plus explode(':'$user['lost_town_altar_params']);
                
$user['lost_params_strlen'] = $user['lost_params_strlen'] - $plus[0];
                
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] - $plus[1];
                
$user['lost_params_protection'] = $user['lost_params_protection'] - $plus[2];
                
                
$plus_1 = (int)(($user['lost_params_strlen'] / 100) * $user_altar['altar']);        // Плюс к силе
                
$plus_2 = (int)(($user['lost_params_heatpoints'] / 100) * $user_altar['altar']);    // Пдюс к здоровью
                
$plus_3 = (int)(($user['lost_params_protection'] / 100) * $user_altar['altar']);     // Плюс к защите
            
                
$user['lost_params_strlen'] = $user['lost_params_strlen'] + $plus_1;
                
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] + $plus_2;
                
$user['lost_params_protection'] = $user['lost_params_protection'] + $plus_3;
                
$user['lost_params_summa'] = $user['lost_params_strlen'] + $user['lost_params_heatpoints'] + $user['lost_params_protection'];
                
$user['lost_town_altar_params'] = $plus_1.':'.$plus_2.':'.$plus_3;
                
$user['lost_town_altar'] = $user_altar['altar'];
            }
            if (!
$update$okay true;
        }
        
        if (
$update) {
        
            
// Если алтарь включен и нужно отнять параметры, делаем
            
if ($user_altar['altar'] > AND !empty($user['lost_town_altar_params'])) {
                
$plus explode(':'$user['lost_town_altar_params']);
                
$user['lost_params_strlen'] = $user['lost_params_strlen'] - $plus[0];
                
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] - $plus[1];
                
$user['lost_params_protection'] = $user['lost_params_protection'] - $plus[2];
            }
        
            
$user['lost_params_strlen'] = $user['lost_params_strlen'] + $str;
            
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] + $hp;
            
$user['lost_params_protection'] = $user['lost_params_protection'] + $pr;
            
$user['lost_params_summa'] = $user['lost_params_strlen'] + $user['lost_params_heatpoints'] + $user['lost_params_protection'];
            
            
// Если алтарь включен, то добавляем плюс к параметрам
            
if ($user_altar['altar'] > 0) {
                
$plus_1 = (int)(($user['lost_params_strlen'] / 100) * $user_altar['altar']);        // Плюс к силе
                
$plus_2 = (int)(($user['lost_params_heatpoints'] / 100) * $user_altar['altar']);    // Пдюс к здоровью
                
$plus_3 = (int)(($user['lost_params_protection'] / 100) * $user_altar['altar']);     // Плюс к защите
                
                
$user['lost_params_strlen'] = $user['lost_params_strlen'] + $plus_1;
                
$user['lost_params_heatpoints']    = $user['lost_params_heatpoints'] + $plus_2;
                
$user['lost_params_protection'] = $user['lost_params_protection'] + $plus_3;
                
$user['lost_params_summa'] = $user['lost_params_strlen'] + $user['lost_params_heatpoints'] + $user['lost_params_protection'];
                
$user['lost_town_altar_params'] = $plus_1.':'.$plus_2.':'.$plus_3;
                
$user['lost_town_altar'] = $user_altar['altar'];
            }
            
            
mysql_query("UPDATE `element_user` SET `lost_params_strlen` = '$user[lost_params_strlen]',
                                                   `lost_params_heatpoints` = '
$user[lost_params_heatpoints]',
                                                   `lost_params_protection` = '
$user[lost_params_protection]',
                                                   `lost_params_summa` = '
$user[lost_params_summa]'
                                                   WHERE `lost_id` = '
$user[lost_id]' LIMIT 1");
            
writecache('element_users_id_'.$user['lost_id'], $user);
            if (
$type) return $user;
        }
        
        if (!
$update AND isset($okay)) {
            
mysql_query("UPDATE `element_user` SET `lost_params_strlen` = '$user[lost_params_strlen]',
                                               `lost_params_heatpoints` = '
$user[lost_params_heatpoints]',
                                               `lost_params_protection` = '
$user[lost_params_protection]',
                                               `lost_params_summa` = '
$user[lost_params_summa]'
                                               WHERE `lost_id` = '
$user[lost_id]' LIMIT 1");
            
writecache('element_users_id_'.$user['lost_id'], $user);
            if (
$type) return $user;
        }
    }
    
//SetParams($user, -439, -431, -426, false);
    
    // Обработчик опыта
    
function handler_expoint($expoint$add_user_exp$add_town_exp) {
        
$exp_x = (int)element_settings_game('lost_expoint');     // Получаем игровой опыт ( по умолч. 100 - x1 )
        
$x_user $exp_x $add_user_exp;                         // Получаем умножитель личного опыта
        
$x_town $exp_x $add_town_exp;                         // Получаем умножитель личного опыта
        
        
$exp['user'] = (int)(($expoint 100) * $x_user);        // Получаем личный опыт
        
$exp['town'] = (int)(($expoint 100) * $x_town);        // Получаем городской опыт
        
return $exp;                                            // Возвращаем массив с опытом
    
}
    
    
// Обработчик кристаллов
    
function handler_cristalls($cristalls$add) {
        if (
$add) {
            
$cristalls_1 = (int)(($cristalls 100) * $add);
            if (
$cristalls_1 3$cristalls_1 3;
            
$cristalls $cristalls $cristalls_1;
            return 
$cristalls;
        } else return 
$cristalls;
    }

    
// Функция добавления опыта, кристаллом, ирридия, золота указанному юзеру
    
function update_money_exp($user$add_exp$add_cristall$add_irridiy$add_gold) { 
        
        
// Если прибавляемое золото, не равно 0, добавляем к текущему
        
if ($add_gold != 0$user['lost_money_gold'] = $user['lost_money_gold'] + $add_gold;
        
        
// Если прибавляемые кристаллы, не равно 0, добавляем к текущему
        
if ($add_cristall != 0$user['lost_resourse_cristalls'] = $user['lost_resourse_cristalls'] + $add_cristall;
        
        
// Если прибавляемый ирридий, не равен 0, добавляем к текущему
        
if ($add_irridiy != 0$user['lost_resourse_irridyi'] = $user['lost_resourse_irridyi'] + $add_irridiy;
    
        
// Если опыт не в массиве, заносим в массив: личный / городской
        
if (!is_array($add_exp)) $add_exp handler_expoint($add_exp$add_user_exp$add_town_exp);
    
        
// Если личный/городской опыт не равен нулю, добавляем
        
if ($add_exp['user'] != OR $add_exp['town'] != 0) {
            
            
$user_exp explode(' '$user['lost_exp']);             // Разбиваем на подстроки ( опыт )
            
$user_exp[0] = $user_exp[0] + $add_exp['user'];            // Добавляем личный опыт
            
$user_exp[1] = $user_exp[1] + $add_exp['user'];            // Добавляем глобальный опыт
        
            // Если личного/глобального опыта меньше нуля, присваиваем нуль
            
if($user_exp[0] < 0$user_exp[2] = 0;
            if(
$user_exp[1] < 0$user_exp[2] = 0;
        
                
// Если я нахожусь в городе
                
if ($user['lost_town'] > AND $add_exp['town'] != 0) {
                    
$town cache_town($user['lost_town']);                      // Кэш с массивом, данные города
                    
$user_town explode(':'$user['lost_town_other']);      // На подстроки: 0 - звание, 1 - таймер
                    
$town['lost_exp'] = $town['lost_exp'] + $add_exp['town']; // Добавляем опыт к городскому ( общий )    
                    
$user_exp[2] = $user_exp[2] + $add_exp['town'];              // Добавляем в ГО пользователя
                    
                    // Если опыт города и городской юзера меньше нуля, присваеваем нуль
                    
if ($town['lost_exp'] < 0$town['lost_exp'] = 0
                    if (
$user_exp[2] < 0$user_exp[2] = 0;
                    
                    
$list_user readcache('element_list_user_town'.$user['lost_town']);
                        if (!empty(
$list_user)) {
                            
$list_user[$user_town[0]][$user['lost_id']] = $user_exp[2];
                            
writecache('element_list_user_town'.$user['lost_town'], $list_user);
                        }
                    
writecache('element_town_id_'.$user['lost_town'],$town);    // Обновляем данные города в кэш
                    
town_list_update($user['lost_town']);                        // Заносим город в список обновления
                
}
            
$user['lost_exp'] = implode(' '$user_exp);        // Объединяем все типы опыта в строку
        
}
        
            global 
$statistika_user;
            if (
$statistika_user) {
                
$statistika_user_1 .= '<br/>Ресурсы: <img src="/images/icons/gold.png">'.$user['lost_money_gold'].', <img src="/images/icons/cristall.png"> '.$user['lost_resourse_cristalls'].', <img src="/images/icons/irridyi.png"> '.$user['lost_resourse_irridyi'].'';
        
                
$insert_statistika '<div class="ml5 mr5">
                                        <div class="bl p5 small white block odd">
                                            '
.$statistika_user.$statistika_user_1.'
                                        </div><div class="hr"></div>
                                      </div>'
;
                
mysql_query("INSERT INTO `element_history_user` SET `lost_user` = '$user[lost_id]', `lost_text` = '$insert_statistika', `lost_time` = '".time()."'");
            }
        
        
writecache('element_users_id_'.$user['lost_id'],$user);        // Обновляем данные юзера в кэш
        
user_list_update($user['lost_id']);                            // Заносим юзера в список обновления
    
}
    
    
// Звания в городе
    
function town_users_zvanie($z) {
        
$array = array('Правитель''Казначей','Зодчий','Рыцарь','Оружейник','Дрессировщик','Монах','Стражник');
        return 
$array[$z];
    }
    
    
// Функция возвращает массив с заданиями определенного пользователя
    
function user_quests($user) {
    
$user_quests readcache('element_quests_user'.$user);
        if (empty(
$user_quests)) {
            
$query mysql_fetch_array(mysql_query("SELECT * FROM `element_quests_user` WHERE `lost_user` = '$user' LIMIT 1"));
            if (!
$query) {
                
mysql_query("INSERT INTO `element_quests_user` SET `lost_user` = '$user'");
                
$query mysql_fetch_array(mysql_query("SELECT * FROM `element_quests_user` WHERE `lost_user` = '$user' LIMIT 1"));
                
$user_quests $query;
            } else {
                
$user_quests $query;
            }
            
writecache('element_quests_user'.$user$user_quests);
        }
    return 
$user_quests;
    }
    
    
// Функция с названиями и иконками качеств
    
function quality_item_name($quality) {
        
$quality_name = array('Обычный','Эпический','Легендарный','Дары Богов','Трофейный''Уникальный');
        return array(
'image' => '<img width="12" height="12" src="/images/icons/quality_'.$quality.'.png">','name' => $quality_name[$quality]);
    }
    
    
    function 
chanse_drop() {
        
// $rand = rand(0,100);
             
if ( >= rand(0,100)) return 5;
        else if ( 
>= rand(0,100)) return 4;
        else if ( 
>= rand(0,100)) return 3;
        else if (
12 >= rand(0,100)) return 2;
        else if (
30 >= rand(0,100)) return 1;
        else return 
0;
    }
    
    function 
chanse_mission() {
            
$rand rand(0100);
            if ( 
>= $rand) return 2;
        else if ( 
>= $rand) return 1;
        else return 
0;
    }
    
    
// Функция выбирает определенное пользовательское задание
    
function quests_id_count($quests) {
        
$readcache readcache('element_quests_name_'.$quests);
        if (empty(
$readcache) OR !$readcache) {
            
$quests mysql_fetch_array(mysql_query("SELECT `lost_count` FROM `element_quests` WHERE `lost_quests` = '$quests' LIMIT 1"));
            if (
$quests) {
                
$readcache $quests['lost_count'];
                
writecache('element_quests_name_'.$quests$readcache);
            } else 
$readcache false;
        }
        return 
$readcache;
    }
    
    
// Функция возвращает отсортированный список игроков в города
    
function array_users_town($town) {
    
$list_user readcache('element_list_user_town'.$town);
        if (empty(
$list_user)) {
            
$list_user = array(=> array(),=> array(),=> array(),=> array(),=> array(),=> array(),=> array(),=> array());
            
$query mysql_query("SELECT `lost_id`,`lost_exp`,`lost_town_other` FROM `element_user` WHERE `lost_town` = '$town'");
            
            while(
$myrrow mysql_fetch_array($query)) {
                
$expl_exp explode(' '$myrrow['lost_exp']);
                
$expl_town explode(':'$myrrow['lost_town_other']);
                
$list_user[$expl_town[0]][$myrrow['lost_id']] = $expl_exp[2];
            }
            
writecache('element_list_user_town'.$town$list_user);
        }
        
arsort($list_user[0]);
        
arsort($list_user[1]);
        
arsort($list_user[2]);
        
arsort($list_user[3]);
        
arsort($list_user[4]);
        
arsort($list_user[5]);
        
arsort($list_user[6]);
        
arsort($list_user[7]);
        return (
$list_user[0] + $list_user[1] + $list_user[2] + $list_user[3] + $list_user[4] + $list_user[5] + $list_user[6] + $list_user[7]);
    }
    
    
// Восстановление энергии
    
function element_update_params_energy($array_params$time_update) {
    
$array explode(':'$array_params);     // Текущая / Максимальная / Время восстановления
    
$time_1 time() - $array[2];             // Получаем количество секунд от последнего восстановления ( тек. вр. минус записанное вр.)
    
$refresh 0;                            // Не обновляем
    
$import $array_params;
    
        
// Если текущая эн меньше макс. и время позволяет восстановить - работаем.
        
if ($time_1 >= $time_update AND $array[0] < $array[1]) {
            
$count_v = (int)($time_1 $time_update);                    // Получаем энергию, которую нужно прибавить
            
$plus_time = (int)($array[2] + ($count_v $time_update));    // Прибавляем время пол. эн к таймеру
            
            
            // Прибавляем энергию, если больше максимальной = устанавливаем максимальную энергию
            
$array[0] = (($array[0] + $count_v) > $array[1]) ? $array[1] : ($array[0] + $count_v);
            
$array[2] = $plus_time;                                        // Записываем время
            
$refresh 1;                                                // Говорим, что нужно обновить кэш
            
$import implode(':'$array);
            
$time_1 = ($time_update - ($time_1 - ($count_v $time_update)));
        } else 
$time_1 $time_update $time_1;
        return array(
$array[0], $array[1], $time_1$refresh$import$array[2]);
    }
    
    
// Заменяет $replace на цветной $replace
    
function ReplaceText($replace,$text) {
        return 
str_replace($replace'<span class="lngreen bold">'.$replace.'</span>'$text);
    }
    
    
// Функция поднятия уровня игрока
    
function update_up_level($nex_level$nex_exp$user) {
    
$update 0;
        if (
$nex_level $user['lost_level']) {
        
$exp_user explode(' '$user['lost_exp']);
            if (
$exp_user[0] >= $nex_exp) {
                
$update 1;
                
$exp_user[0] = $exp_user[0] - $nex_exp;
                
$user['lost_exp'] = implode(' '$exp_user);
                
$user['lost_level'] = $nex_level;
                
$user['lost_money_gold'] = $user['lost_money_gold'] + ($nex_level 10);
                
                
$user SetParams($user$nex_level$nex_level$nex_leveltrue);
                
                
$text '<div class="nfl mt5 cntr p5 mb5 small mlra lngreen">';
                
$text .= 'Поздравляем! Ваш уровень поднялся к <span class="bold">'.$nex_level.'</span><br/>';
                
$text .= 'Награда: <img src="/images/icons/gold.png">'.($nex_level 10).', +'.$nex_level.' к параметрам</div>';
                return array(
$text$update$user);
            } return array(
''$update);
        } return array(
''$update);
    }
    
    
    
// Функция, с массивом одетых вещей на юзере
    
function users_wear_item($user) {
    
$wear_item readcache('element_wear_item_user_id'.$user);
        if (!
is_array($wear_item)) {
            
$wear_item = array();
            
$query mysql_query("SELECT `lost_id`,`lost_mesto` FROM `element_item` WHERE `lost_user` = '$user' AND `lost_bag` = '1'");
                
            while(
$myrrow mysql_fetch_array($query)) { $wear_item[$myrrow['lost_mesto']] = $myrrow['lost_id']; }
            
writecache('element_wear_item_user_id'.$user$wear_item);
        }
    return 
$wear_item;
    }
    
    
// Функция, с массивом вещей в рюкзаке юзере
    
function users_shoot_item($user) {
    
$shoot_item readcache('element_shoot_item_user_id'.$user);
        if (!
is_array($shoot_item)) {
            
$shoot_item = array();
            
$query mysql_query("SELECT `lost_id` FROM `element_item` WHERE `lost_user` = '$user' AND `lost_bag` = '0'");
                
            while(
$myrrow mysql_fetch_array($query)) { $shoot_item[$myrrow['lost_id']] = $myrrow['lost_id']; }
            
writecache('element_shoot_item_user_id'.$user$shoot_item);
        }
    return 
$shoot_item;
    }
    
    function 
SetBlessing($blessing) {
        if (
$blessing 0) {
             if (
$blessing == 1) return array('user_exp' =>  25'town_exp' => 10'duh' => 'params' =>  50'energy' =>  60'nagrada' => 10'image' => 'blessing_bronze.gif',  'name' => 'Бронзовое благословение',  'gold' => 800);
        else if (
$blessing == 2) return array('user_exp' =>  50'town_exp' => 25'duh' => 10'params' => 100'energy' =>  90'nagrada' => 15'image' => 'blessing_serebro.gif''name' => 'Серебряное благословение''gold' => 1200);    
        else return array(
'user_exp' => 100'town_exp' => 50'duh' => 15'params' => 150'energy' => 120'nagrada' => 25'image' => 'blessing_gold.gif',    'name' => 'Золотое благословение',    'gold' => 1600);
        } else return 
false;
    }
    
    function 
BanUserCountActive($id) {
        return 
mysql_result(mysql_query("SELECT COUNT(`lost_id`) FROM `element_ban_list` WHERE `lost_user` = '$id' AND `lost_time_ban` > '".time()."'"), 0);
    }
    
?>
Онлайн: 0
Реклама