Файл: 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()) ? 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);
}
?>