function crit($login) { //$login = preg_replace ('/[^a-z-0-9_\.]/i', '', $login); $id = is_player($login); if (!$id) { include_once 'modules/f_get_npc_info.php'; $life = get_npc_info($login, 'life'); $life = explode('|', $life); $cr = round(100 - $life[0] / $life[1] * 100); if (rand(0, 100) <= $cr) { return 2; } else { return 1; } } $p = do_mysql("SELECT life, skills FROM players WHERE id_player = '" . $id . "';"); $p = mysql_fetch_assoc($p); $p['skills'] = explode('|', $p['skills']); $p['life'] = explode('|', $p['life']); $cr = round(100 - $p['life'][0] / $p['life'][1] * 100 + $p['skills'][0]); include_once 'modules/f_get_affected.php'; $aff = get_affected($login); if (is_in('ispugan', $aff)) { return 1; } if (rand(0, 100) <= $cr) { return 2; } else { return 1; } }
function get_npc_battle_har($npc) { //$npc = preg_replace ('/[^a-z\._0-9]/i', '', $npc); $id = is_npc($npc); $q = do_mysql("SELECT chanse FROM npc WHERE id_npc = '" . $id . "';"); if (!mysql_num_rows($q)) { include 'modules/s_main.php'; } $c = mysql_result($q, 0); $c = explode('~', $c); include_once 'modules/f_get_affected.php'; $aff = get_affected($npc); if (is_in('osleplen', $aff)) { for ($i = 0; $i < 10; $i++) { $с[$i] = round($с[$i] / 2); } } return $c; }
$str = $_SERVER['QUERY_STRING']; // iz $str nado vyreatq sid // nam pomozhet strpos $pos = strpos($str, '&'); // esli netu &, to eto ssylka na glavnuju, my ee i tak napishem if ($pos) { $str1 = substr($str, $pos + 1); $str2 = 'sid=' . $sid . '&' . $str1; } else { $str2 = 'sid=' . $sid; } $f = gen_header('Забытая История'); $f .= '<div class="y" id="udak"><b>Пауза</b>:</div>'; $f .= '<p>'; $f .= 'Вы еще не собрались силами после прошедшего заклинания!<br/>'; $pl_eff = get_affected($LOGIN); if ($pl_eff) { $f .= 'Эффекты:<br/>-'; include_once 'modules/f_translit.php'; $pl_eff = translit($pl_eff); $pl_eff = str_replace('|', '<br/>-', $pl_eff); $f .= $pl_eff; } $f .= '<a class="blue" href="game.php?' . $str2 . '">продолжить</a> | '; $f .= '<a class="blue" href="game.php?sid=' . $sid . '">в игру</a></p>'; $f .= gen_footer(); exit($f); } // potom ispolqzuem manu: include_once 'modules/f_use_mana.php'; if (!use_mana($spell, $LOGIN)) {
function comp_reaction($off, $pass) { //$off = preg_replace ('/[^a-z0-9_\.]/i', '', $off); //$pass = preg_replace ('/[^a-z0-9_\.]/i', '', $pass); include_once 'modules/f_get_affected.php'; $aff = get_affected($off); 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($pass); 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; } $id = is_npc($off); if ($id) { $q = do_mysql("SELECT dex FROM npc WHERE id_npc = '" . $id . "';"); if (!mysql_num_rows($q)) { return 0; } $rea_off = mysql_result($q, 0); } else { $id = is_player($off); $q = do_mysql("SELECT skills FROM players WHERE id_player = '" . $id . "';"); if (!mysql_num_rows($q)) { return 0; } $off_s = mysql_result($q, 0); $off_s = explode('|', $off_s); $rea_off = $off_s[1]; } $id = is_npc($pass); if (is_npc($pass)) { $q = do_mysql("SELECT rea FROM npc WHERE id_npc = '" . $id . "';"); if (!mysql_num_rows($q)) { return 0; } $rea_pass = mysql_result($q, 0); } else { $id = is_player($pass); $q = do_mysql("SELECT skills FROM players WHERE id_player = '" . $id . "';"); if (!mysql_num_rows($q)) { return 0; } $pass_s = mysql_result($q, 0); $pass_s = explode('|', $pass_s); $rea_pass = $pass_s[3]; } $ch = $rea_off * 100 / ($rea_off + $rea_pass); if (rand(0, 100) <= $ch) { return 1; } else { return 0; } }
$lp = floor(($time - $all['life_regen']) / 5); $treg = $all['life_regen'] + $lp * 5; if (!$treg) { $treg = $time; } do_mysql("UPDATE gamesys SET life_regen = '" . $treg . "' WHERE month = '" . $mon . "';"); $qn = do_mysql("SELECT id_npc, fullname, life, affected FROM npc WHERE type <> 's' AND type <> 't';"); while ($n = mysql_fetch_assoc($qn)) { // zaodno i effekty if (isset($naff)) { unset($naff); } $naff = $n['affected']; if ($n['affected']) { upd_affected($n['fullname']); $naff = get_affected($n['fullname']); } if (is_in('zarazhen', $naff)) { continue; } $n['life'] = explode('|', $n['life']); if (is_in('krovotechenie', $naff)) { //echo 'k '; $n['life'][0] -= $lp * 10; $m = 1; } if (is_in('otravlen', $naff)) { //echo 'o '; //$n['life'][0] -= ($lp * (round ($n['life'][1] / 100))); $n['life'][0] -= $lp * 7; $m = 1;
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 get_pl_battle_har($pl) { //$pl = preg_replace ('/[^a-z0-9_]/i', '', $pl) $id = is_player($pl); $p = do_mysql("SELECT skills FROM players WHERE id_player = '" . $id . "';"); $p = mysql_fetch_assoc($p); $p['skills'] = explode('|', $p['skills']); $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $pl . "' AND is_in = 'wea';"); if (!mysql_num_rows($q)) { $p['weapon'] = ''; } else { $p['weapon'] = mysql_result($q, 0); } $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $pl . "' AND is_in = 'shi';"); if (!mysql_num_rows($q)) { $p['shield'] = ''; } else { $p['shield'] = mysql_result($q, 0); } $tp = substr($p['weapon'], 4, 3); switch ($tp) { case 'swo': $numb = 7; break; case 'axe': $numb = 8; break; case 'ham': $numb = 9; break; case 'spe': $numb = 10; break; case 'bow': $numb = 11; break; case 'arb': $numb = 12; break; case 'kni': $numb = 13; break; case 'kli': $numb = 14; break; case 'tre': case 'wan': $numb = 15; break; default: $numb = 1; break; } $dvu = $dou = 0; if (strpos($p['weapon'], '.2h.') !== false) { $dvu = $p['skills'][40]; } if (substr($p['shield'], 2, 1) == 'w') { $dou = $p['skills'][41]; } $t[0] = $p['skills'][1] * 10 + $p['skills'][$numb] * 10 + $p['skills'][3] * 2 + $dou * 10 + $dvu * 10; # udar if ($tp == 'arb') { $t[1] = 0; } $t[1] = $p['skills'][1] * 10 + $p['skills'][$numb] * 10 + $p['skills'][3] * 5 + $dou * 10 + $dvu * 10; # blok $t[2] = $p['skills'][1] * 5 + $p['skills'][17] * 5 + $p['skills'][3] * 5; # uklon $t[3] = $p['skills'][1] * 10 + $p['skills'][18] * 10 + $p['skills'][3] * 2; # parirovanie $t[4] = $p['skills'][2] * 8 + $p['skills'][4] * 3 + $p['skills'][30]; // pri primenenii dobavitq magija na 9 # uron magija $t[5] = $p['skills'][2] * 4 + $p['skills'][4] * 2 + $p['skills'][20] * 6 + $p['skills'][30]; // pri primenenii dobavitq magija na 3 # ochki blok magija $t[6] = $p['skills'][2] * 8 + $p['skills'][4] * 2 + $p['skills'][21] * 8 + $p['skills'][30]; // pri primenenii dobavitq magija na 3 # soprotivlenie magii $t[7] = $p['skills'][2] * 5 + $p['skills'][19] * 5 + $p['skills'][4] + $p['skills'][30] * 3; // pri ispolqzovanii dobavitq magija na 3; # uklon ot magii $t[8] = $p['skills'][1] * 3 + $p['skills'][3] * 3 + $p['skills'][17] * 3; # uklon ot strelqby $t[9] = $p['skills'][1] * 5 + $p['skills'][3] * 5 + $p['skills'][18] * 5; # parirovanija strelqby include_once 'modules/f_get_affected.php'; $aff = get_affected($pl); if (is_in('osleplen', $aff)) { for ($i = 0; $i < 10; $i++) { $t[$i] = round($t[$i] / 2); } } return $t; }
} /*// esli umenqshaet zhiznq, znachit jad, otravim if ($do[0] < 0) { include_once ('modules/f_start_poison.php'); start_poison ($LOGIN); $q = do_mysql ("SELECT status1 FROM players WHERE id_player = '".$p['id_player']."';"); $p['status1'] = mysql_result ($q, 0); }*/ // a esli menqshe mana, to alkogolq if ($do[1] < 0) { include_once 'modules/f_set_affected.php'; set_affected($LOGIN, 'pqjan', $do[1] * -1); $q = do_mysql("SELECT affected FROM players WHERE id_player = '" . $p['id_player'] . "';"); $p['affected'] = mysql_result($q, 0); $AFF = get_affected($LOGIN); } $f = ''; if (substr($item, 0, 7) == 'i.f.dri') { $f .= 'вы выпили ' . $itname . '!<br/>'; } else { $f .= 'вы съели ' . $itname . '!<br/>'; } if (is_in('prokljat', $AFF)) { exit_msg('проклятие', 'древнее проклятие не дает вам восстановить сил!<br/> '); } // teperq proverim igroka if ($p['life'][0] + (int) $do[0] >= $p['life'][1] && $do[0] > 0) { $p['life'][0] = $p['life'][1]; $f .= 'ваша жизнь полностью восстановленна!<br/>'; } else {
break; } // dalee if ($INL_N[$i]['quest']) { $f .= '<b>[!]</b>'; } $f .= ' : <a class="blue" href="game.php?sid=' . $sid . '&action=showinfo&to=' . $INL_N[$i]['fullname'] . '">?</a>'; // esli estq poterja zhizni - ukazhem ee kolichestvo v procentah if ($INL_N[$i]['life'][0] < $INL_N[$i]['life'][1]) { $f .= ' [' . round($INL_N[$i]['life'][0] / $INL_N[$i]['life'][1] * 100) . '%]'; } // proverka boja if ($INL_N[$i]['in_battle'] == 1) { $f .= '<span class="red">[в бою]</span>'; } if ($INL_N[$i]['in_battle'] == 2) { $f .= '<span class="green">[в бою]</span>'; } $aff = get_affected($INL_N[$i]['fullname']); if (!$aff) { $eff = ''; } else { $eff = '<small>'; $aff = implode('|', $aff); include_once 'modules/f_translit.php'; $aff = translit($aff); $eff .= $aff . '</small>'; } $f .= $eff; $f .= '<br/>'; }
} } } if (!isset($op['name'])) { $op['name'] = $op['login']; } $ch = get_chanses($pl_har, $p['life'], $npc_har, $op['life']); if (substr($p['weapon'], 4, 3) != 'bow' || substr($p['weapon'], 4, 3) != 'arb') { $f .= '<small><b>A:</b> ' . $ch[0][0] . '%; <b>D:</b> ' . $ch[0][1] . '%</small><br/>'; } else { $f .= '<small><b>A:</b> ' . (100 - $ch[1][8]) . '%; <b>D:</b> ' . $ch[0][1] . '%</small><br/>'; } $f .= '><b><span style="color:' . $clr . '">' . $op['name'] . '</span></b>[' . round($op['life'][0] / $op['life'][1] * 100) . '%]'; // effecty upd_affected($to); $aff = get_affected($to); // print_r ($aff); if (!$aff) { $eff = ''; } else { $eff = '<small>'; $aff = implode('|', $aff); include_once 'modules/f_translit.php'; $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>';
function check_last_attack($pl, $re = 0) { //$pl = preg_replace ('/[^a-z0-9_\.]/i', '', $pl); $now = time(); $id = is_player($pl); if (!$id) { $id = is_npc($pl); // npc $q = do_mysql("SELECT lastattack, attack_speed FROM npc WHERE id_npc = '" . $id . "' AND lastattack < " . $now . " - attack_speed;"); if (!mysql_num_rows($q)) { return 0; } $np = mysql_fetch_assoc($q); $time = $np['attack_speed']; $last = array(); $last[1] = $np['lastattack']; } else { $q = do_mysql("SELECT last FROM players WHERE id_player = '" . $id . "';"); $a = mysql_fetch_assoc($q); $last = $a['last']; $last = explode('|', $last); // ves oruzhija $q = do_mysql("SELECT weight FROM items WHERE belongs = '" . $pl . "' AND is_in = 'wea';"); if (mysql_num_rows($q)) { $wgh = mysql_result($q, 0); $q = do_mysql("SELECT skills FROm players WHERE id_player = '" . $id . "';"); $skills = mysql_result($q, 0); $skills = explode('|', $skills); $min = round($skills[0] / 15); $time = $wgh - $min; if ($time < 3) { $time = 3; } } else { $time = 2; } } if ($re) { $time = 0; } // teperq effektami eto vremja - uvelichim ili umenqqshim: include_once 'modules/f_get_affected.php'; // effecty: $aff = get_affected($pl); if (is_in('oglushen', $aff)) { $time += 10; } if (is_in('odubel', $aff)) { $time += 10; } if (is_in('zamerz', $aff)) { $time += 10; } if (is_in('okamenel', $aff)) { $time += 10; } if (is_in('paralizovan', $aff)) { $time += 30; } if (is_in('ispugan', $aff)) { $time += 10000; } // esli eto otvetka, ostavim lishq vremja effekta if (is_in('zamedlen', $aff)) { $time *= 2; } if ($last[1] <= $now - $time) { return 1; } return 0; }
if ($letter) { $f .= '<b>' . $letter . '</b> '; } if ($INL_P[$i]['admin'] == 2) { $f .= '<b>@</b>'; } if ($INL_P[$i]['admin'] == 1) { $f .= '<b>m</b>'; } $f .= '[' . $rase . ']'; /*if (!isset($span1)) $span1 = ''; if (!isset($span1e)) $span1e = ''; if (!isset($span2)) $span2 = ''; if (!isset($span2e)) $span2e = '';*/ // effecty $aff = get_affected($INL_P[$i]['login']); if (!$aff) { $eff = ''; } else { $eff = '<small>'; $aff = implode('|', $aff); include_once 'modules/f_translit.php'; $aff = translit($aff); $eff .= $aff . '</small>'; } // urovenq $f .= $INL_P[$i]['stats'][0]; // login -- ssylka napisatq emu soobshenie $f .= '<a class="' . $INL_P[$i]['nc'] . '" href="game.php?sid=' . $sid . '&action=wmsg&to=' . $INL_P[$i]['login'] . '">'; $f .= $INL_P[$i]['name'] . '</a>'; // esli estq poterja zhizni - ukazhem ee kolichestvo v procentah
$MIN_BET = 1; break; } } //-------------------------------------- // proverka chela (vemja PEREDVIZHENIJA I vOOBSHE AKTIVNOSTI) // proverka na ataku v sootvetstvujushem faile, tut - proverka na regeneraciju i perehod // BAZOVOE VREMJA $T = 0; include_once 'modules/f_upd_affected.php'; include_once 'modules/f_get_affected.php'; upd_affected($LOGIN); //if ($p['status1'][1] == 0) $T += 2; //if ($p['status1'][1] == 2) $T += 2; // effecty: $aff = get_affected($LOGIN); $AFF = $aff; // dlja posledueshego ispolqzovanija if (is_in('oglushen', $aff)) { $T += 10; } if (is_in('zamerz', $aff)) { $T += 10; } if (is_in('okamenel', $aff)) { $T += 10; } if (is_in('odubel', $aff)) { $T += 10; } if (is_in('paralizovan', $aff)) {