Файл: element_function/element_function_users.php
Строк: 372
<?php
    // Высчитываем процент алтаря
    function SetAltar($altar_procent, $altar_time, $town) {
        
        // Если я состою в городе, проверяем, активен ли алтарь города
        if ($town > 0) { 
            global $user_town; 
            $other_altar = (($user_town['lost_altar_time'] < time()) ? 0 : $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 == 0 AND $hp == 0 AND $pr == 0) $update = false; else $update = true;
        
        // Если алтарь ещё включен, но время действия истекло, выключаем его
        if ($user_altar['altar'] == 0 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'] > 0 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'] > 0 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'] != 0 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'] > 0 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 ( 1 >= rand(0,100)) return 5;
        else if ( 3 >= rand(0,100)) return 4;
        else if ( 6 >= 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(0, 100);
            if ( 4 >= $rand) return 2;
        else if ( 7 >= $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(0 => array(),1 => array(),2 => array(),3 => array(),4 => array(),5 => array(),6 => array(),7 => 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_level, true);
                
                $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' => 5 , '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);
    }
    
    function Smiles($text, $type) {
        
        $smiles_1 = array(':)', ';)', ':-)', ':-o', ':-O', ':good:', ':-~', ':evil:', 'xD', ':huh:', ':ok:', ':emm:', ':l:', ':green', ':stone',
                        ':(', ':D', ':p', ':-*', ':mad:', '8)', ':cry:');
        
        $smiles_2 = array('<img width="15" height="15" src="/images/smiles/1.gif">',
                         '<img width="15" height="15" src="/images/smiles/2.gif">',
                         '<img width="15" height="15" src="/images/smiles/3.gif">',
                         '<img width="15" height="15" src="/images/smiles/4.gif">',
                         '<img width="15" height="15" src="/images/smiles/5.gif">',
                         '<img width="15" height="15" src="/images/smiles/6.gif">',
                         '<img width="15" height="15" src="/images/smiles/7.gif">',
                         '<img width="15" height="15" src="/images/smiles/8.gif">',
                         '<img width="15" height="15" src="/images/smiles/9.gif">',
                         '<img width="15" height="15" src="/images/smiles/10.gif">',
                         '<img width="15" height="15" src="/images/smiles/11.gif">',
                         '<img width="15" height="15" src="/images/smiles/12.gif">',
                         '<img width="15" height="15" src="/images/smiles/13.gif">',
                         '<img width="15" height="15" src="/images/smiles/14.gif">',
                         '<img width="15" height="15" src="/images/smiles/15.gif">',
                         '<img width="15" height="15" src="/images/smiles/16.gif">',
                         '<img width="15" height="15" src="/images/smiles/17.gif">',
                         '<img width="15" height="15" src="/images/smiles/18.gif">',
                         '<img width="15" height="15" src="/images/smiles/19.gif">',
                         '<img width="15" height="15" src="/images/smiles/20.gif">',
                         '<img width="15" height="15" src="/images/smiles/21.gif">',
                         '<img width="15" height="15" src="/images/smiles/22.gif">');
        
        if ($type) {
        
        return str_replace($smiles_1, $smiles_2, $text);
        
        } else {
            
            echo '<table class="mlra cntr mt5 mb5">';
    
    
                for ($i = 2; $i <= 23; $i++) {
                    if ($i % 2) echo ''; else echo '<tr>';
                    echo '<td>'.$smiles_2[$i - 2].'</td> <td>'.$smiles_1[$i - 2].'</td>';
                    if ($i % 2) echo '</tr>'; else echo '';
                }
            
            
            echo '</table>';
            
        } 
    }
    
    
?>