Просмотр файла element_function/element_function_users.php

Размер файла: 22.68Kb
<?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>';
			
		} 
	}
	
	
?>