$aff = translit($aff); $eff .= $aff . '</small>'; } $f .= $eff . ' - '; //// $f .= '<small><u>Att:</u></small>'; if ($pl_dmg[0][1] > 0) { $f .= ' <a class="red" href="game.php?sid=' . $sid . '&action=do_dmg&type=rez&to=' . $to . '">></a>'; } if ($pl_dmg[1][1] > 0) { $f .= ' <a class="red" href="game.php?sid=' . $sid . '&action=do_dmg&type=kol&to=' . $to . '">x</a>'; } if ($pl_dmg[2][1] > 0) { $f .= ' <a class="red" href="game.php?sid=' . $sid . '&action=do_dmg&type=drob&to=' . $to . '">o</a>'; } if ($pl_dmg[3][1] > 0) { $f .= ' <a class="red" href="game.php?sid=' . $sid . '&action=do_dmg&type=rub&to=' . $to . '">^</a>'; } if ($p['mbook']) { // ispolqzovatq magiju iz knigi: $f .= '<form action="game.php" method="get"/><input type="hidden" name="sid" value="' . $sid . '"/>книга маг.:<input type="text" name="num" size="2"/><input type="hidden" name="action" value="quick_use_magic_b"/><input type="hidden" name="to" value="' . $to . '"/><input type="submit" value="»"/></form>'; } $f .= '<br/>'; $c_inb++; } if ($c_inb == 0) { include_once 'modules/f_end_battle.php'; end_battle($LOGIN); } $f .= '</div>'; //exit_msg ('бой', $f);
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; }
function make_die($who) { // $who = preg_replace ('/[^a-z\._0-9]/i', '', $who); $id = is_npc($who); $n = 0; if ($id) { $n = 1; $q = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $id . "';"); $name = mysql_result($q, 0); $q = do_mysql("SELECT location FROM npc WHERE id_npc = '" . $id . "';"); } else { $id = is_player($who); if (!$id) { return 0; } $q = do_mysql("SELECT name FROM players WHERE id_player = '" . $id . "';"); $name = mysql_result($q, 0); $q = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); } $loc_who = mysql_result($q, 0); add_journal($name . ' погиб', 'l.' . $loc_who); // dlja kazhdogo po raznomu include_once 'modules/f_end_battle.php'; // okonchitq bitvu end_battle($who); if (!$n) { $p = get_pl_info($who, 'all'); // sozdatq trup: include_once 'modules/f_create_dead_body.php'; create_dead_body($who); // takzhe vypadut i veshi v trup //=========================================== //if ($p['rase'] == 1 && $p['qlvl'] < 10) $loc = 'rele|2x11'; // ostavim do luchshih vremen //if ($p['rase'] == 2 && $p['qlvl'] < 10) $loc = 'epf1|4x1'; //if ($p['rase'] == 3 && $p['qlvl'] < 10) $loc = 'nvsh|5x1'; if ($p['qlvl'] == 0) { $loc = 'novc|1x1'; } else { $loc = 'rele|2x11'; } if ($p['karma'] < -99) { $loc = 'pris|1x1'; } //=========================================== /* potom ostalqnye */ // statusy vernem na normalqnyj urovenq $p['status1'] = '01000'; // zhiznq 10: if ($p['qlvl'] > 0) { $life = '10|' . $p['life'][1]; } else { $life = $p['life'][1] . '|' . $p['life'][1]; } do_mysql("UPDATE players SET status1 = '" . $p['status1'] . "', life = '" . $life . "' WHERE id_player = '" . $id . "';"); include_once 'modules/f_teleport.php'; teleport($who, $loc); } else { include_once 'modules/f_real_name.php'; // sozdatq trup: include_once 'modules/f_create_dead_body.php'; create_dead_body($who); // takzhe vypadut i veshi v trup // udalitq nafig do_mysql("DELETE FROM npc WHERE id_npc = '" . $id . "';"); $rfn = real_name($who); global $pl_map; include 'modules/mapinfo/load_' . $pl_map . '.php'; //print_r ($npc); //echo '<br/>'.$rfn; if (!isset($npc)) { return 1; } if (array_key_exists($rfn, $npc)) { //echo "exists"; // $npc podkljuchen v faile s_loadmaps.php // znachit nado vernutq $time = time(); $time += 300; $nacti = 'npc|' . $rfn . '|' . $time; $act = do_mysql("SELECT actions FROM maps WHERE map = '" . $pl_map . "';"); $act = mysql_result($act, 0); //echo '<br/>act = '.$act.'<br/>'; $subc = substr_count($act, $rfn); $itmp = explode(':', $npc[$rfn]); if ($itmp[2] > $subc) { if (!$act) { $act = $nacti; } else { $act .= '~' . $nacti; } //echo 'act = '.$act.'<br/>'; do_mysql("UPDATE maps SET actions = '" . $act . "' WHERE map = '" . $pl_map . "';"); } } } }