function is_attack_successful($who, $to, $re = 0) { // re oznachaet chto udar otvetnyj. // a esli udar otvetnyj, mozhno ne smotretq mozhet li on atakovatq, i ne fiksirovatq // etoj funkciej budem sravnivatq shansy include_once 'modules/f_get_chanses.php'; // proverjaem effekty // esli odin iz paralizujushih, to vsegda kto-to proigraet/vyjgraet include_once 'modules/f_get_affected.php'; $aff = get_affected($who); if (is_in('oglushen', $aff)) { return 0; } if (is_in('zamerz', $aff)) { return 0; } if (is_in('okamenel', $aff)) { return 0; } if (is_in('odubel', $aff)) { return 0; } if (is_in('paralizovan', $aff)) { return 0; } $aff = get_affected($to); if (is_in('oglushen', $aff)) { return 1; } if (is_in('zamerz', $aff)) { return 1; } if (is_in('okamenel', $aff)) { return 1; } if (is_in('odubel', $aff)) { return 1; } if (is_in('paralizovan', $aff)) { return 1; } $wid; $who_ranged = 0; $pi = is_player($who); if ($pi) { $wid = $pi; // berem informaciju igroka // shansy nanesti udar include_once 'modules/f_get_pl_battle_har.php'; $who_har = get_pl_battle_har($who); // kakoe oruzhie. toestq rasschityvatq li po sisteme dalqnego boja ili blizhnego // esli who_ranged == 1,, to togda schitajutsja formuly luchnikov $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $who . "' AND is_in = 'wea'"); if (!mysql_num_rows($q)) { $who_ranged = 0; } else { $who_ranged = mysql_result($q, 0); } if (substr($who_ranged, 4, 3) == 'bow' || substr($who_ranged, 4, 3) == 'arb') { $who_ranged = 1; } else { $who_ranged = 0; } // zhiznq igroka dlja shansov (massiv) $q = do_mysql("SELECT life FROM players WHERE id_player = '" . $wid . "';"); $who_life = mysql_result($q, 0); $who_life = explode('|', $who_life); // proverka onlajn: do_mysql("SELECT active FROM players WHERE id_player = '" . $wid . "';"); $active = mysql_result($q, 0); if (!$active) { include_once 'modules/f_end_battle.php'; end_battle($who); } } else { $wid = is_npc($who); if (!$wid) { return -1; } // informacija npc : include_once 'modules/f_get_npc_battle_har.php'; $who_har = get_npc_battle_har($who); // napadatq s dali nemozhet npc // zhiznq npc dlja shansov (massiv) $q = do_mysql("SELECT life FROM npc WHERE id_npc = '" . $wid . "';"); $who_life = mysql_result($q, 0); $who_life = explode('|', $who_life); } // proverka vremeni ataki include_once 'modules/f_check_last_attack.php'; if (!check_last_attack($who, $re)) { return -1; } // esli ataka ne vovremja (s uchetom otvetki) // obnovim posledniju ataku, takzhe s uchetom otvetki if (!$re) { // ne proverjaem estq li patrony, lenq, proverim v do_dmg include_once 'modules/f_upd_last_attack.php'; upd_last_attack($who); } else { $aff = get_affected($to); if (is_in('ispugan', $aff)) { return 0; } // pri ispuge otvetka nevozmozhna } // harakteristika zawiwajusjago $tid; $pi = is_player($to); if ($pi) { $tid = $pi; // berem informaciju igroka // shansy nanesti udar include_once 'modules/f_get_pl_battle_har.php'; $to_har = get_pl_battle_har($to); // estq li shit (1, 0) $q = do_mysql("SELECT COUNT(*) FROM items WHERE belongs = '" . $to . "' AND is_in = 'shi' AND type = 'x'"); $to_shield = mysql_result($q, 0); // zhiznq igroka dlja shansov (massiv) $q = do_mysql("SELECT life FROM players WHERE id_player = '" . $tid . "';"); $to_life = mysql_result($q, 0); $to_life = explode('|', $to_life); // proverka onlajn: do_mysql("SELECT active FROM players WHERE id_player = '" . $tid . "';"); $active = mysql_result($q, 0); if (!$active) { include_once 'modules/f_end_battle.php'; end_battle($to); } } else { $tid = is_npc($to); if (!$tid) { return -1; } // informacija npc : include_once 'modules/f_get_npc_battle_har.php'; $to_har = get_npc_battle_har($to); // napadatq s dali nemozhet npc // zhiznq npc dlja shansov (massiv) $q = do_mysql("SELECT life FROM npc WHERE id_npc = '" . $tid . "';"); $to_life = mysql_result($q, 0); $to_life = explode('|', $to_life); } // proschityvaem shansy - $ch = get_chanses($who_har, $who_life, $to_har, $to_life); // sluchajnoe chislo $rnd = rand(0, 100); if ($rnd <= $ch[1][1]) { // udar blokirovan: if ($who_ranged) { include_once 'modules/f_promah.php'; promah($who); } else { include_once 'modules/f_block.php'; block($to); } $NO = 1; } else { $ntdl = rand(0, 1); if ($ntdl == 0) { if ($who_ranged) { if (rand(0, 100) <= $ch[1][8]) { // uklonimsja include_once 'modules/f_uklon.php'; uklon($to); $NO = 1; } } else { if (rand(0, 100) <= $ch[1][2]) { // uklonimsja include_once 'modules/f_uklon.php'; uklon($to); $NO = 1; } } } else { if ($who_ranged) { if (rand(0, 100) <= $ch[1][3]) { // pariruem return 1; } } else { if (rand(0, 100) <= $ch[1][9]) { // pariruem return 1; } } } } if (isset($NO)) { // esli streljaem, nado rashodovatq strely, esli promahnulisq ili uklon. inache rashoduem v do_dmg if ($who_ranged) { // rashoduem odnu strelu include_once 'modules/f_decr_abstr_misc.php'; if (!decr_abstr_misc('i.m.arr.arr', $who, 1)) { add_journal('нехватает припасoв!', $who); } } return 0; } //esli vse horosho, vozvrashjaem 2: return 2; }
} include 'modules/kombo/kombo_' . $kombo . '.php'; $to = preg_replace('/[^a-z0-9_\\.-]/i', '', $_GET['to']); if ($to == $LOGIN && !isset($HEAL)) { put_g_error('такие комбинации на себя иснользовать особого смысла нету ;)'); } if (isset($HEAL) && $to != $LOGIN) { put_g_error('лечить лишь себя так можно'); } //echo $to; //echo ' '.(is_player($to)).' '.(substr($to, 0, 2)); if (!is_player($to) && substr($to, 0, 2) != 'n.') { put_error('только для живых объектов'); } include_once "modules/f_check_last_attack.php"; if (check_last_attack($LOGIN)) { include_once "modules/f_upd_last_attack.php"; upd_last_attack($LOGIN); include_once 'modules/f_comp_reaction.php'; include_once 'modules/f_is_attack_successful.php'; if (isset($DMG) && (!is_attack_successful($LOGIN, $to) || !comp_reaction($LOGIN, $to))) { // sqedaem manu include_once 'modules/f_search_kombo.php'; $k = search_kombo($LOGIN, $kombo); if (!$k) { put_g_error('нету такой комбинации'); } // hvataet li many - for ($i = 1; $i < $k[1]; $i++) { $MANA += $MANAP; }