View file element_function/element_function_battle.php

File size: 21.83Kb
<?php

	function RandEquipMission($equip) {
			 if ($equip <= 1) if (rand(0,100) < 30) return 1; else return 0; 
		else if ($equip <= 2) {
			if (rand(0,100) < 30) return 2; else return rand(0,1);
		} else if ($equip <= 3) {
			$rand = rand(0,100);
				 if ($rand < 3) return 3;
			else if ($rand < 30) return 2;
			else if ($rand < 50) return 1;
			else return 0;
		} else if ($equip <= 4) {
			$rand = rand(0,100);
				 if ($rand < 1) return 4;
			else if ($rand < 4) return 3;
			else if ($rand < 30) return 2;
			else if ($rand < 50) return 1;
			else return 0;
		}  else if ($equip <= 5) {
			$rand = rand(0,200);
				 if ($rand == 0) return 5;
			else if ($rand <  3) return 4;
			else if ($rand < 20) return 3;
			else if ($rand < 90) return 3;
			else if ($rand < 160) return 2;
			else return 0;
		}
		
	}

	function KeyJournalMassiv($time) {
		$tt = explode(' ', microtime());
		$tt[1] = $tt[1] - $time;
		$tt1 = explode('.', $tt[0]);
		return $tt[1].$tt1[1];
	}
	
	function SetAbilitiesOgon($ogon, $race) {
			if ($ogon == 0) $return = array('add_uron' => 10, 'active' => 10, 'refresh' => 25);
	   else if ($ogon == 1) $return = array('add_uron' => 15, 'active' => 12, 'refresh' => 23);
	   else if ($ogon == 2) $return = array('add_uron' => 25, 'active' => 14, 'refresh' => 21);
	   else if ($ogon == 3) $return = array('add_uron' => 40, 'active' => 16, 'refresh' => 19);
	   else if ($ogon == 4) $return = array('add_uron' => 60, 'active' => 18, 'refresh' => 17);
	   else if ($ogon == 5) $return = array('add_uron' => 85, 'active' => 20, 'refresh' => 15);
	   if ($race == 1) $return['add_uron'] = $return['add_uron'] + 10;
	   return $return;
	}
	
	function SetAbilitiesVoda($voda, $race) {
			if ($voda == 0) $return = array('add_uron' => 60, 'active' => 10, 'refresh' => 25);
	   else if ($voda == 1) $return = array('add_uron' => 60, 'active' => 12, 'refresh' => 23);
	   else if ($voda == 2) $return = array('add_uron' => 60, 'active' => 14, 'refresh' => 21);
	   else if ($voda == 3) $return = array('add_uron' => 60, 'active' => 16, 'refresh' => 19);
	   else if ($voda == 4) $return = array('add_uron' => 60, 'active' => 18, 'refresh' => 17);
	   else if ($voda == 5) $return = array('add_uron' => 60, 'active' => 20, 'refresh' => 15);
	   if ($race == 2) $return['add_uron'] = $return['add_uron'] + 10;
	   return $return;
	}

	function SetAbilitiesVosdyh($vosdyh, $race) {
			if ($vosdyh == 0) $return = array('chanse' =>  3, 'add_hp' =>  5, 'refresh' => 25);
	   else if ($vosdyh == 1) $return = array('chanse' =>  4, 'add_hp' =>  7, 'refresh' => 23);
	   else if ($vosdyh == 2) $return = array('chanse' =>  5, 'add_hp' =>  9, 'refresh' => 21);
	   else if ($vosdyh == 3) $return = array('chanse' =>  7, 'add_hp' => 11, 'refresh' => 19);
	   else if ($vosdyh == 4) $return = array('chanse' => 11, 'add_hp' => 13, 'refresh' => 17);
	   else if ($vosdyh == 5) $return = array('chanse' => 15, 'add_hp' => 20, 'refresh' => 15);
	   if ($race == 3) $return['add_hp'] = $return['add_hp'] + 10;
	   return $return;
	}
	
	function SetAbilitiesZemlya($zemlya, $race) {
			if ($zemlya == 0) $return = array('minus_uron' =>  3, 'active' => 10, 'refresh' => 25);
	   else if ($zemlya == 1) $return = array('minus_uron' =>  8, 'active' => 12, 'refresh' => 23);
	   else if ($zemlya == 2) $return = array('minus_uron' => 14, 'active' => 14, 'refresh' => 21);
	   else if ($zemlya == 3) $return = array('minus_uron' => 25, 'active' => 16, 'refresh' => 19);
	   else if ($zemlya == 4) $return = array('minus_uron' => 40, 'active' => 18, 'refresh' => 17);
	   else if ($zemlya == 5) $return = array('minus_uron' => 60, 'active' => 20, 'refresh' => 15);
	   if ($race == 4) $return['minus_uron'] = $return['minus_uron'] + 10;
	   return $return;
	}
	
	function ResetAbilitiesUser($user) {
		deletecache('element_user_id'.$user.'_abilities_vozdyh');
		deletecache('element_user_id'.$user.'_abilities_zemlya');
		deletecache('element_user_id'.$user.'_abilities_ogon');
		deletecache('element_user_id'.$user.'_abilities_voda');
	}
	
	// Умение Ловушка ветра
	function AbilitiesVozdyh($quality, $race, $activate, $user_id) {
		$cache = readcache('element_user_id'.$user_id.'_abilities_vozdyh');
		$abilit = SetAbilitiesVosdyh($quality, $race);
		$time = time();
		
		if ($activate AND $cache <= $time) {
			$cache = $time + $abilit['refresh'];
			writecache('element_user_id'.$user_id.'_abilities_vozdyh', $cache);
			if (rand(0, 100) <= $abilit['chanse']) {
				return array('active' => true, 'add_hp' => $abilit['add_hp'], 'seconds' => ($cache - $time));
			} else return array('active' => true, 'add_hp' => 0, 'seconds' => ($cache - $time));
		
		} else {
			if ($cache >= $time) { $seconds = $cache - $time; $act = true; } else { $seconds = 0; $act = false; }
			return array('active' => $act, 'add_hp' => 0, 'seconds' => $seconds);
		}
	}
	
	// Умение Земляной щит
	function AbilitiesZemlya($quality, $race, $activate, $user_id) {
		$cache = readcache('element_user_id'.$user_id.'_abilities_zemlya');
		$abilit = SetAbilitiesZemlya($quality, $race);
		$update = false;
		$time = time();
		$add_time = $abilit['active'] + $abilit['refresh'];
		
			// Если есть кэш с умением, продолжаем, иначе создаем
			if ($cache) {
				
				// Если нужно активировать умение, добавляем время
				if ($activate) {
					
					// Если умение не активно, активируем
					if ($cache <= $time) { 
						$cache = $time + $add_time;
						$update = true;
					}
				}	
				
			} else {
				$cache = $time;
				if ($activate) $cache = $time + $add_time;
				$update = true;
			}
			
			if ($update) writecache('element_user_id'.$user_id.'_abilities_zemlya', $cache);
			
			if ($cache > $time) {
				$other_time = $cache - $time;		// Отнимаем время восстановления
					
					if ($other_time >= ($add_time - $abilit['active'])) {
						return array('add_procent' => $abilit['minus_uron'], 'activate' => true, 'seconds' => ($other_time - ($add_time - $abilit['active'])));
					} else return array('add_procent' => 0, 'activate' => true, 'seconds' => $other_time);
					
			} else return array('add_procent' => 0, 'activate' => false);
	}
	
	// Умение Огненная Сила
	function AbilitiesOgon($quality, $race, $activate, $user_id) {
		$cache = readcache('element_user_id'.$user_id.'_abilities_ogon');
		$abilit = SetAbilitiesOgon($quality, $race);
		$update = false;
		$time = time();
		$add_time = $abilit['active'] + $abilit['refresh'];
		
			// Если есть кэш с умением, продолжаем, иначе создаем
			if ($cache) {
				
				// Если нужно активировать умение, добавляем время
				if ($activate) {
					
					// Если умение не активно, активируем
					if ($cache <= $time) { 
						$cache = $time + $add_time;
						$update = true;
					}
				}	
				
			} else {
				$cache = $time;
				if ($activate) $cache = $time + $add_time;
				$update = true;
			}
			
			if ($update) writecache('element_user_id'.$user_id.'_abilities_ogon', $cache);
			
			if ($cache > $time) {
				$other_time = $cache - $time;		// Отнимаем время восстановления
					
					if ($other_time >= ($add_time - $abilit['active'])) {
						return array('add_procent' => $abilit['add_uron'], 'activate' => true, 'seconds' => ($other_time - ($add_time - $abilit['active'])));
					} else return array('add_procent' => 0, 'activate' => true, 'seconds' => $other_time);
					
			} else return array('add_procent' => 0, 'activate' => false);
	}

	// Умение Водяной Крит
	function AbilitiesVoda($quality, $race, $activate, $user_id) {
		$cache = readcache('element_user_id'.$user_id.'_abilities_voda');
		$abilit = SetAbilitiesVoda($quality, $race);
		$update = false;
		$time = time();
		$add_time = $abilit['active'] + $abilit['refresh'];
		
			// Если есть кэш с умением, продолжаем, иначе создаем
			if ($cache) {
				
				// Если нужно активировать умение, добавляем время
				if ($activate) {
					
					// Если умение не активно, активируем
					if ($cache <= $time) { 
						$cache = $time + $add_time;
						$update = true;
					}
				}	
				
			} else {
				$cache = $time;
				if ($activate) $cache = $time + $add_time;
				$update = true;
			}
			
			if ($update) writecache('element_user_id'.$user_id.'_abilities_voda', $cache);
			
			if ($cache > $time) {
				$other_time = $cache - $time;		// Отнимаем время восстановления
					
					if ($other_time >= ($add_time - $abilit['active'])) {
						return array('add_procent' => $abilit['add_uron'], 'activate' => true, 'seconds' => ($other_time - ($add_time - $abilit['active'])));
					} else return array('add_procent' => 0, 'activate' => true, 'seconds' => $other_time);
					
			} else return array('add_procent' => 0, 'activate' => false);
	}
	
	function EchoAbiliteBattle($ogon, $voda, $vozdyh, $zemlya, $target, $width_class, $width_image, $training, $url) {
		echo '<div class="nfl p5 mb5 cntr small mlra">';
			
			// Тергейт. Цель
			if ($target) {
			echo '<span class="inbl '.$width_class.' mt5 va_t">
				  <a class="atask" href="'.$url.'?go=attaka&target&action='.rand(1000000, 9999999).'">
				  <span class="inbl prel">
				  <img width="'.$width_image.'" height="'.$width_image.'" src="/images/equipment/epic/weapon.jpg" alt=""/>
				  </span><br/>
				  <span class="small lngreen mt3">Цель</span>
				  </a>
				  </span>';
			}
			
			// Бить врага
			echo '<span class="inbl '.$width_class.' mt5 va_t">
				  <a class="atask" href="'.$url.'?go=attaka&action='.rand(1000000, 9999999).'">
				  <span class="inbl prel">
				  '.(($training == 1) ? '<img width="17" height="25" class="g-arrow" src="/images/green-arrow.png"/>' : '').'
				  <img width="'.$width_image.'" height="'.$width_image.'" src="/images/equipment/epic/weapon.jpg" alt=""/>
				  </span><br/>
				  <span class="small lngreen mt3">Бить</span>
				  </a>
				  </span>';
				
			// Огненная сила
			$add_uron = ($ogon['add_procent'] > 0) ? true : false;
			echo '<span class="inbl '.$width_class.' mt5 va_t">
				  <a class="atask" href="'.$url.'?go=attaka&id=1&action='.rand(1000000, 9999999).'">
				  <span class="inbl prel">
				  '.((!$ogon['activate'] AND !$add_uron AND $training == 2) ? '<img width="17" height="25" class="g-arrow" src="/images/green-arrow.png"/>' : '').'
				  <img width="'.$width_image.'" height="'.$width_image.'" src="/images/fire.png" alt=""/>
				  </span><br/>
				  '.(($ogon['activate']) ? (($add_uron) ? '<span class="small lngreen mt3">'.$ogon['seconds'].' с.</span>' : '<span class="small ccc mt3">'.$ogon['seconds'].' с.</span>') : '<span class="small lngreen mt3">Гот.</span>').'
				  </a>
				  </span>';
			
			// Водяной крит
			$add_uron = ($voda['add_procent'] > 0) ? true : false;
			echo '<span class="inbl '.$width_class.' mt5 va_t">
				  <a class="atask" href="'.$url.'?go=attaka&id=2&action='.rand(1000000, 9999999).'">
				  <span class="inbl prel">
				  '.((!$voda['activate'] AND !$add_uron AND $training == 3) ? '<img width="17" height="25" class="g-arrow" src="/images/green-arrow.png"/>' : '').'
				  <img width="'.$width_image.'" height="'.$width_image.'" src="/images/water.png" alt=""/>
				  </span><br/>
				  '.(($voda['activate']) ? (($add_uron) ? '<span class="small lngreen mt3">'.$voda['seconds'].' с.</span>' : '<span class="small ccc mt3">'.$voda['seconds'].' с.</span>') : '<span class="small lngreen mt3">Гот.</span>').'
				  </a>
				  </span>';
		
			// Ловушка Ветра
			echo '<span class="inbl '.$width_class.' mt5 va_t">
				  <a class="atask" href="'.$url.'?go=attaka&id=3&action='.rand(1000000, 9999999).'">
				  <span class="inbl prel">
				  '.((!$vozdyh['active'] AND $training == 4) ? '<img width="17" height="25" class="g-arrow" src="/images/green-arrow.png"/>' : '').'
				  <img width="'.$width_image.'" height="'.$width_image.'" src="/images/air.png" alt=""/>
				  </span><br/>
				  '.(($vozdyh['active']) ? '<span class="small ccc mt3">'.$vozdyh['seconds'].' с.</span>' : '<span class="small lngreen mt3">Гот.</span>').'
				  </a>
				  </span>';
		
			// Земляной щит
			$add_uron = ($zemlya['add_procent'] > 0) ? true : false;
			echo '<span class="inbl '.$width_class.' mt5 va_t">
				  <a class="atask" href="'.$url.'?go=attaka&id=4&action='.rand(1000000, 9999999).'">
				  <span class="inbl prel">
				  '.((!$zemlya['activate'] AND !$add_uron AND $training == 5) ? '<img width="17" height="25" class="g-arrow" src="/images/green-arrow.png"/>' : '').'
				  <img width="'.$width_image.'" height="'.$width_image.'" src="/images/ground.png" alt=""/>
				  </span><br/>
				  '.(($zemlya['activate']) ? (($add_uron) ? '<span class="small lngreen mt3">'.$zemlya['seconds'].' с.</span>' : '<span class="small ccc mt3">'.$zemlya['seconds'].' с.</span>') : '<span class="small lngreen mt3">Гот.</span>').'
				  </a>
				  </span>';
		
		echo '</div>';
	}
	 //EchoAbiliteBattle(AbilitiesOgon(1, $user['lost_race'], true, $user['lost_id']), AbilitiesVoda(1, $user['lost_race'], true, $user['lost_id']), AbilitiesVozdyh(1, $user['lost_race'], true, $user['lost_id']), AbilitiesZemlya(5, 4, true, $user['lost_id']), true, 'w15', 35, 3, '/mission');
	
	// Функция выводит мои и врага параметры в бою
	function EchoTableUsersBattle($my_info, $bot_info) {
		echo '<table><td class="mr5">'.(($my_info['user_race'] > 0) ? '<img width="50" height="50" src="/images/user_ava_'.$my_info['user_race'].'.png">' : '<img width="50" height="50" src="/images/icons/empty.png">').'</td>';
		echo '<td class="small w90 white ml5" valign="top">';
		echo '<span class="bl ml5 mb5 prg-bar"><span class="bl fl prg-blue" style="width:'.ceil(($my_info['user_hp'] / $my_info['user_other_hp']) * 100).'%">&nbsp;</span>';
		echo '<span class="bl fl prg-red" style="width:'.(($my_info['user_uron'] > 0) ? (int)(($my_info['user_uron'] / $my_info['user_other_hp']) * 100) : 0).'%">&nbsp;</span></span>';
		echo '<div class="fr bold">'.(($my_info['user_add_hp'] > 0) ? ' <span class="lngreen">+'.$my_info['user_add_hp'].'</span> ' : '').''.(($my_info['user_uron'] > 0) ? ' <span class="red">-'.$my_info['user_uron'].'</span>' : '').'</div>';
		echo '<span class="ml5 yellow1 bold">'.ikonka_user($my_info['user_race'], 'online').' '.$my_info['user_name'].', <img src="/images/icons/heatpoints.png"> '.$my_info['user_hp'].'</span>';
		echo '</td></table>';
		
		echo '<table><td class="mr5">'.(($bot_info['user_race'] > 0) ? '<img width="50" height="50" src="/images/user_ava_'.$bot_info['user_race'].'.png">' : '<img width="50" height="50" src="/images/icons/empty.png">').'</td>';
		echo '<td class="small w90 ml5" valign="top">';
		echo '<span class="bl ml5 mb5 prg-bar"><span class="bl fl prg-blue" style="width:'.ceil(($bot_info['user_hp'] / $bot_info['user_other_hp']) * 100).'%">&nbsp;</span>';
		echo '<span class="bl fl prg-red" style="width:'.(($bot_info['user_uron'] > 0) ? (int)(($bot_info['user_uron'] / $bot_info['user_other_hp']) * 100) : 0).'%">&nbsp;</span></span>';
		echo '<div class="fr bold">'.(($bot_info['user_add_hp'] > 0) ? ' <span class="lngreen">+'.$bot_info['user_uron'].'</span> ' : '').''.(($bot_info['user_uron'] > 0) ? ' <span class="red">-'.$bot_info['user_uron'].'</span>' : '').'</div>';
		echo '<span class="ml5 yellow1 bold">'.(($bot_info['user_race'] > 0) ? ikonka_user($bot_info['user_race'], 'online') : '<img src="/images/icons/arena.gif">').' '.$bot_info['user_name'].', <img src="/images/icons/heatpoints.png"> '.$bot_info['user_hp'].'</span>';
		echo '</td></table>';
	}
	
	
	
	// Генерируем максимальное здоровье в бою
	function GenerationMaxHeatpoints($heatpoints) {
		if ($heatpoints > 0) $heatpoints = $heatpoints * 2; else $heatpoints = 50;
		return $heatpoints;
	}
	
	function GenerationProtection($protection) {
		// Если защита больше 5000 (70%) то за каждые 500 защиты сверх 5000 добавляем 1% 
		if ($protection > 5000) {
			$add_pr = (int)(($protection - 5000) / 500);
			if ($add_pr > 0) $add_pr = $add_pr * 1; else $add_pr = 0;
			$procent = round((5000 / 7143) * 100, 2);
			$procent = $procent + $add_pr;
		} else $procent = round(($protection / 7143) * 100, 2);
		return $procent;
	}
	
	// Генерируем удар, в зависимости от силы, умений, защиты
	function GenerationUron($str, $time, $um_ogon, $um_voda, $um_zeml, $protection) {
		
		// Вычисляем время последнего удара, насколько его нужно умножить. Если не указано, бьем максимально
		if (!$time) { $x_time = rand(4,5).'.'.rand(10,99).''; } else {
			$time = explode(' ', $time);								// Время посл. удара, с учетом миллисекунд
			$time_1 = $time[1] + $time[0];								// Время посл. удара, с учетом миллисекунд
			$time_2 = explode(' ', microtime());						// Разбиваем текущее время на сек. и мс.
			$x_time = round(($time_2[1] + $time_2[0]) - $time_1, 2);	// Считаем, насколько умножить удар, в зависимости от посл.
			if ($x_time > 5) $x_time = '5.'.rand(10,50);
		}
		
		// Считаем силу удара
		$uron = (int)(($str / 15) * $x_time);
		if ($um_ogon > 0)	 $uron = (int)(($uron / 100) * (100 + $um_ogon));
		if ($um_voda > 0) 	 $uron = (int)(($uron / 100) * (100 + $um_voda));
		if ($um_zeml > 0)	 $uron = (int)(($uron / 100) * (100 - $um_zeml));
		if ($protection > 0) $uron = (int)(($uron / 100) * (100 - $protection));
		if ($uron <= 0) $uron = 1;
		
		return $uron;
	}

	
	function Protection($protection, $max_protection) {
		$procent = round(($protection / $max_protection) * 100, 2);
		return ($procent > 50) ? 50 : $procent;
	}

	function GenerateUron($strlen,$last_time,$protection) {
		$last_time = explode(' ', $last_time);					// Время последнего удара, с учетом миллисекунд
		$last_time_1 = $last_time[1] + $last_time[0];			// Текущие секунды + миллисекунды посл. удара
		$last_time_2 = explode(" ", microtime());				// Разбиваем текущее время на сек. и мс.
		$last_time_3 = round(($last_time_2[1] + $last_time_2[0]) - $last_time_1,2);	// Считаем время от посл. удара к текущему
		if ($last_time_3 > 5) $last_time_3 = '5.'.rand(10,50);

		$uron = (($strlen / 15) * $last_time_3);
		$minus = ($uron / 100) * $protection;
		$uron = $uron - $minus;
		return ($uron <= 0) ? 1 : ceil($uron);
	}
	
	function abilities_race_ogon($uron, $time, $procent, $time_activ, $time_refresh, $add_1) {
		$active = false; $vosst = false;
		if ($time >= time()) {
			$other_time_activate = $time - $time_refresh; 		// Вычисляем, когда закончиться активность 
				if (time() < $other_time_activate) {			// Прибавляем процент удара, если активно
					if ($add_1 == 1) $add = ceil($uron * ('1.'.$procent)); else $add = $uron;	
					$active = $other_time_activate - time();	// Скоролько секунд ещё будет активно 
				} else { 
					$add = $uron;
					$vosst = $time - time();
				}
			return array($add, $active, $vosst);
		} return array($uron, $active, $vosst);
	}
	
	function abilities_race_voda($uron, $time, $time_activ, $time_refresh, $add_1) {
		$active = false; $vosst = false;
		if ($time >= time()) {
			$other_time_activate = $time - $time_refresh; 		// Вычисляем, когда закончиться активность 
				if (time() < $other_time_activate) {			// Прибавляем процент удара, если активно
					if ($add_1 == 1) $add = ceil($uron * '1.60'); else $add = $uron;	
					$active = $other_time_activate - time();	// Скоролько секунд ещё будет активно 
				} else { 
					$add = $uron;
					$vosst = $time - time();
				}
			return array($add, $active, $vosst);
		} return array($uron, $active, $vosst);
	}
	
	function abilities_race_vozduh($procent, $bot_hp, $bot_hp_other, $user_hp, $user_hp_other) {
		$rand = rand(1,100);
		if ($procent >= $rand) {
			$proc_hp = (int)(($bot_hp_other / 100) * $procent);
			$proc_hp = ($proc_hp <= 0) ? 1 : $proc_hp;
			
			$bot_hp = $bot_hp - $proc_hp;
			$bot_hp = ($bot_hp <= 0) ? 0 : $bot_hp;
			
			$user_hp = $user_hp + $proc_hp;
			
			if ($user_hp > $user_hp_other) {
				$proc_hp = $user_hp - $user_hp_other;
				$user_hp = $user_hp_other;
			}
			
			return array(1, $bot_hp, $user_hp, $proc_hp);
		} else array(0, $bot_hp, $user_hp, 0);
	}
	
	
	function abilities_race_zemlya($uron, $time, $procent, $time_activ, $time_refresh, $add_1) {
		$active = false; $vosst = false;
		if ($time >= time()) {
			$other_time_activate = $time - $time_refresh; 		// Вычисляем, когда закончиться активность 
	
				if (time() < $other_time_activate) {			// Прибавляем процент удара, если активно
					if ($add_1 == 1) $add = ceil($uron * ('0.'.(100 - $procent))); else $add = $uron;	
					$active = $other_time_activate - time();	// Скоролько секунд ещё будет активно 
				} else { 
					$add = $uron;
					$vosst = $time - time();
				}
			return array($add, $active, $vosst);
		} return array($uron, $active, $vosst);
	}
	
?>