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]; } }
// 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'; }
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; } }