Created
May 18, 2015 15:37
-
-
Save BlackScorp/941826c7dbce3a199056 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$data = array(0 => array('gods' => '', 'ser' => '9068', 'group2' => 'pusto', 'zol' => '1000', 'op' => '447', 'id' => '1', 'fro' => 'users', 'gods1' => '0', 'login' => 'Xtra Strong', 'inc' => '10', 'pit' => 'Тьма', 'pit1' => 'Прыть', 'xp2' => '60', 'inte' => '23', 'xp' => '60', 'class' => 'Маг', 'urn' => '30', 'brn' => '14', 'murn' => '15', 'back' => '1', 'sth' => 'Огонь', 'uvr' => '8', 'krt' => '8', 'blc' => '7', 'tch' => '4', 'udh' => '0',), 1 => array('login' => 'Тьма', 'id' => '38', 'fro' => 'pit', 'inc' => '10', 'xp2' => '70', 'class' => 'Воин', 'urn' => '60', 'brn' => '10', 'murn' => '0', 'xp' => '70', 'inte' => '0', 'back' => '1', 'uvr' => '10', 'krt' => '10', 'blc' => '0', 'tch' => '10', 'udh' => '5', 'sth' => '',), 2 => array('login' => 'Прыть', 'id' => '37', 'fro' => 'pit', 'inc' => '7', 'xp2' => '100', 'murn' => '0', 'inte' => '0', 'back' => '1', 'uvr' => '5', 'xp' => '100', 'krt' => '7', 'blc' => '0', 'tch' => '15', 'udh' => '10', 'class' => 'Воин', 'urn' => '40', 'brn' => '30', 'sth' => '',), 3 => NULL, 4 => NULL, 5 => NULL, 6 => NULL, 7 => array('gods' => '', 'group2' => 'pusto', 'ser' => '7090', 'zol' => '10', 'op' => '221', 'id' => '2', 'fro' => 'users', 'gods1' => '0', 'login' => 'bavsi', 'inc' => '5', 'pit' => 'Pioner', 'pit1' => 'Волкодав', 'xp2' => '30', 'murn' => '5', 'inte' => '10', 'back' => '1', 'uvr' => '5', 'krt' => '5', 'blc' => '5', 'tch' => '5', 'sth' => 'Огонь', 'udh' => '5', 'xp' => '30', 'class' => 'Воин', 'urn' => '10', 'brn' => '10',), 8 => array('login' => 'Pioner', 'id' => '32', 'fro' => 'pit', 'inc' => '7', 'xp2' => '100', 'sth' => '', 'class' => 'Воин', 'urn' => '40', 'brn' => '30', 'murn' => '0', 'inte' => '0', 'xp' => '100', 'back' => '1', 'uvr' => '5', 'krt' => '7', 'blc' => '0', 'tch' => '15', 'udh' => '10',), 9 => array('login' => 'Волкодав', 'id' => '33', 'fro' => 'pit', 'inc' => '10', 'xp2' => '70', 'sth' => '', 'murn' => '0', 'inte' => '0', 'back' => '1', 'uvr' => '10', 'krt' => '10', 'xp' => '70', 'blc' => '0', 'tch' => '10', 'udh' => '5', 'class' => 'Воин', 'urn' => '60', 'brn' => '10',), 10 => NULL, 11 => NULL, 12 => NULL, 13 => NULL,); | |
$rr = array(); | |
foreach ($data as $entry) { | |
$rr[$entry['id']] = $entry; | |
} | |
$attackerId = 1; | |
$targets = array( | |
38, | |
37 | |
); | |
$test = true; | |
foreach ($targets as $targetId) { | |
voin($attackerId, $targetId, count($rr)); | |
} | |
$id = $rr[$attackerId]; | |
function voin($attackerId, $targetId, $counter) | |
{ | |
//$attackerId текущая цифра,$targetId выбраная пользователем,$counter кол-во жлементов в массиве | |
global $rr, $id, $test; | |
//$rr массив содержащий все элементы | |
$targetHitPoints = $rr[$targetId]['xp2']; | |
//$c число от которого отнимаем | |
$act = $id['act']; | |
//$act число на которое смещаем массив | |
$from = $rr[$targetId]['fro']; | |
$where = $rr[$targetId]['id']; | |
$attackerCriticalChance = $rr[$attackerId]['krt']; | |
$attackerDamage = $rr[$attackerId]['urn']; | |
$targetDefence = $rr[$targetId]['brn']; | |
$targetBlockChance = $rr[$targetId]['blc']; | |
$targetAvoidChance = $rr[$targetId]['uvr']; | |
$attackerAccuracy = $rr[$attackerId]['tch']; | |
$attackHitChance = $rr[$attackerId]['udh']; | |
$targetHitChance = $rr[$targetId]['udh']; | |
//решаем удачности | |
//для блока | |
$blocked = $targetBlockChance > rand(1, 100 - rand(1, $targetHitChance)); | |
//для узбежание | |
$avoided = ($targetAvoidChance - rand(1, 100 - rand(1, $targetHitChance))) > ($attackerAccuracy - rand(1, 100 - rand(1, $attackHitChance))); | |
//для опасново удара | |
$criticalHit = $attackerCriticalChance > rand(1, 100 - rand(1, $attackHitChance)); | |
//или вообще удара | |
$hit = !$blocked && !$avoided; | |
if ($hit) { //если попал | |
$realDamage = max($attackerDamage - $targetDefence, 1); //решаем как больно попал,как минимум 1 пункт снемаем | |
$message = "udar: " . $realDamage . " urona"; | |
if ($criticalHit) { | |
$realDamage = max($attackerDamage * 2 - $targetDefence, 1); //если опасный удар сделал, решаем пункты | |
$message = "krit: " . $realDamage . " urona"; | |
} | |
$targetHitPoints -= $realDamage; //снимаем ети пункты с жизни | |
if ($targetHitPoints <= 0) { //если умер, щитаем одново противника менше | |
$counter--; | |
} | |
if (!$test) { | |
mysql_query("UPDATE $from SET xp2='$targetHitPoints' WHERE id='$where'"); //храним ето в базе | |
} else { | |
echo "UPDATE $from SET xp2='$targetHitPoints' WHERE id='$where'<br>"; | |
} | |
} else { //если не попал | |
if ($blocked) { //почему не попал? | |
$message = "blok"; | |
} elseif ($avoided) { | |
$message = "uvorot"; | |
} | |
} | |
chat($attackerId, $targetId, $message); | |
//зачем ето? | |
$act++; | |
if ($act == $counter) { //я думаю суда не поподем не когда | |
$act = 0; | |
} | |
$userId = (int)$id['id']; | |
if (!$test) { | |
mysql_query("UPDATE boy SET act='$act' WHERE id='$userId'"); | |
} else { | |
echo "UPDATE boy SET act='$act' WHERE id='$userId'<br>"; | |
} | |
doBack($attackerId, $targetId, $rr, $test); | |
} | |
function chat($attackerId, $targetId, $message) | |
{ | |
echo "Message: " . $message . " Attacker-ID: " . $attackerId . " Target-ID:" . $targetId . "<br/>"; | |
} | |
function doBack($attackerId, $targetId, $rr, $test) | |
{ | |
if ($rr[$targetId]['back'] > 0) { | |
if ($rr[$targetId]['class'] == 'Маг') { | |
if (!$test) { | |
mag_back($targetId, $attackerId); | |
} | |
} elseif ($rr[$targetId]['class'] == 'Воин') { | |
if (!$test) { | |
voin_back($targetId, $attackerId); | |
} | |
} else { | |
if (!$test) { | |
luch_back($targetId, $attackerId); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment