コード例 #1
0
        $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="&#187;"/></form>';
    }
    $f .= '<br/>';
    $c_inb++;
}
if ($c_inb == 0) {
    include_once 'modules/f_end_battle.php';
    end_battle($LOGIN);
}
$f .= '</div>';
//exit_msg ('бой', $f);
コード例 #2
0
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;
}
コード例 #3
0
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 . "';");
            }
        }
    }
}