コード例 #1
0
function gen_rnd_loc($region, $loc = 0)
{
    // esli neukazan loc, to iz karty
    if (!$loc) {
        // zagruzim fail lokacij
        global $LOC;
        if (!isset($LOC[$region])) {
            if (!make_namespace($region)) {
                return 0;
            }
        }
        $l = $LOC[$region];
        // sluchajnyj indeks
        $ind = array_rand($l);
        $loc = explode('~', $l[$ind]);
        return $loc[0];
    }
    // esli kazan to iz teh chto ukazany
    if ($loc) {
        $loc = explode('~', $loc);
        $ind = array_rand($loc);
        return $loc[$ind];
    }
}
コード例 #2
0
// proverka otkryta li igra
if (file_exists('modules/posts/closed.txt')) {
    $fr = file('modules/posts/closed.txt');
    if ($p['admin'] < $fr[0]) {
        die('the game data is updating, so the game is closed');
    }
}
// lokacii
include_once 'modules/f_loc.php';
// vkljuchaem lokacii... chtob izbezhatq dvadcati vkljuchenij
$loc = substr($p['location'], 0, 4);
$p['map'] = $loc;
$pl_map = $loc;
//etime('start');
//stime();
make_namespace($loc);
//etime ('namespace');
//stime();
// nu a teperq mozhno nachatq delatq stranicu
//-------------------------------
//-------------------------------
// udalim starye teleporty:
do_mysql("DELETE FROM items WHERE realname LIKE 'i.o.sta.portal%' AND on_drop < '" . $time . "';");
//etime ('teleport');
//stime();
////////////////////////////////////////
// perehod samoe pervoe
///////////////////////////////////////
if ($p['admin'] == -2) {
    $action = 'forum';
}
コード例 #3
0
function loc($loc, $what, $del = 0)
{
    //$what = preg_replace ('/[^a-z\._0-9]/i', '', $what);
    //$loc = preg_replace ('/[^a-z0-9\|]/i', '', $loc);
    // beret infu loki
    // esli what - near, to nada vsju infu i perehody
    // esli what = locinfo, to berem vsju infu konkretnoj lokacii;
    // esli what = temperatue, to berem temperaturu
    // berem infu i perehody
    // pervyj etap : chtenija karty s faila
    global $LOC;
    $loc = explode('|', $loc);
    $l2 = $loc[1];
    //echo '<br/> l2 = '.$l2.'<br/>';
    $loc[1] = explode('x', $loc[1]);
    if (!isset($LOC[$loc[0]])) {
        // HALTURA, mozhet zaciklitsja tut
        if (!make_namespace($loc[0])) {
            include 'modules/s_main.php';
        }
    }
    $l = $LOC[$loc[0]];
    if (!$l[$l2]) {
        echo $loc[0] . '|' . $l2 . ' is bad <br/>';
        return 0;
    }
    //if (!isset($l[$l2])) put_error ('<p>нету такой локации: '.$loc[0].'|'.$l2.'</p>');
    //------------------------
    if ($what == 'near') {
        // teperq nado najti lokaciju igroka ($r[0]) i lokacii okruzhajushie ih
        $r[0] = explode('~', $l[$l2]);
        // teperq algoritm koordinat okruzhenija ;)
        // snachala zapisyvajutsja vse vozmozhnye loki vokrug
        $a[1] = $loc[1][0] - 1 . "x" . ($loc[1][1] + 1);
        $a[2] = $loc[1][0] . "x" . ($loc[1][1] + 1);
        $a[3] = $loc[1][0] + 1 . "x" . ($loc[1][1] + 1);
        $a[4] = $loc[1][0] - 1 . "x" . $loc[1][1];
        $a[5] = $loc[1][0] + 1 . "x" . $loc[1][1];
        $a[6] = $loc[1][0] - 1 . "x" . ($loc[1][1] - 1);
        $a[7] = $loc[1][0] . "x" . ($loc[1][1] - 1);
        $a[8] = $loc[1][0] + 1 . "x" . ($loc[1][1] - 1);
        // teperq proverim kakie iz nih ukazany v faile
        // ukazano v r[0][4]
        // dlina stroki
        $len = strlen($r[0][4]);
        for ($i = 0; $i < $len; $i++) {
            // v $r budet zapolnjatsja tolqko ukazanye tam
            // OBXJASNENIE V HELPE
            $r[$r[0][4][$i]] = explode('~', $l[$a[$r[0][4][$i]]]);
        }
        if ($r[0][7]) {
            // dobavljaem perehod na novuju lokaciju
            $ln = $r[0][7];
            $ln = explode(':', $ln);
            $r[$ln[1]] = loc($ln[0], 'locinfo');
            $r[0][4] .= $ln[1];
        }
        return $r;
    }
    //--------
    if ($what == 'temperature') {
        $d = explode('~', $l[$l2]);
        return $d[3];
    }
    if ($what == 'locinfo') {
        $d = explode('~', $l[$l2]);
        return $d;
    }
}