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_loc($who, $stor, $depth = 1) { // lokacija $id = is_player($who); if ($id) { $lq = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); $loc = mysql_result($lq, 0); } else { include_once 'modules/f_get_npc_info.php'; $loc = get_npc_info($who, 'location'); } $near = loc($loc, 'near'); $lc = $near[$stor][0]; if (!$lc) { return 0; } if ($depth == 2) { unset($near); $near = loc($lc, 'near'); } if (!isset($near[$stor][0])) { return 0; } return $near[$stor][0]; }
function can_u_reach($who, $loc_go, $stor, $depth = 1) { // lokacija $id = is_player($who); if ($id) { $lq = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); $loc = mysql_result($lq, 0); } else { include_once 'modules/f_get_npc_info.php'; $loc = get_npc_info($who, 'location'); } require_once 'modules/f_get_loc.php'; $near = get_loc($who, $stor, $depth); if (!$near || $near != $loc_go) { return 0; } return 1; }
function go_to_loc($who, $loc_go, $stor, $ok = 0) { # get_pl_info(), do_mysql();, get_npc_info();, loc();, put_error();, delete_from_loc();, add_to_loc();, addjournal(); require_once 'modules/f_get_pl_info.php'; require_once 'modules/f_get_npc_info.php'; require_once 'modules/f_loc.php'; require_once 'modules/f_add_to_loc.php'; // proverka dannyh // $who = preg_replace ('/[^a-z\._0-9]/i', '', $who); if (!$ok) { $loc_go = preg_replace('/[^a-z0-9\\|]/', '', $loc_go); $stor = preg_replace('/[^a-z0-9]/i', '', $stor); } // $stor - eto storona. dlja massiva // lokacija if (substr($who, 0, 2) == 'p.') { // login $login = substr($who, 2); $who = $login; $id = is_player($login); $lq = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); $loc = mysql_result($lq, 0); $lq = do_mysql("SELECT name FROM players WHERE id_player = '" . $id . "';"); $name = mysql_result($lq, 0); //$loc = get_pl_info ($login, 'location'); $qg = do_mysql("SELECT gender FROM players WHERE id_player = '" . $id . "';"); $gender = mysql_result($qg, 0); $qg = do_mysql("SELECT walking FROM players WHERE id_player = '" . $id . "';"); $w = mysql_result($qg, 0); if ($w > 0) { $CAN_JUMP = 1; } $qg = do_mysql("SELECT carry FROM players WHERE id_player = '" . $id . "';"); $carry = mysql_result($qg, 0); include_once 'modules/f_get_pl_weight.php'; if ($carry < get_pl_weight($login)) { put_g_error('вы перегруженны'); } $n = 0; $who = $login; // proverka na boj - $q = do_mysql("SELECT in_battle FROM players WHERE id_player = '" . $id . "';"); $inb = mysql_result($q, 0); $type = 'a'; } if (substr($who, 0, 2) == 'n.') { $loc = get_npc_info($who, 'location'); $id = is_npc($who); // adding npc to move log - global $NPC_MOVED; $NPC_MOVED[$id] = 1; $alo = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $id . "';"); $login = mysql_result($alo, 0); $name = $login; $alo = do_mysql("SELECT type FROM npc WHERE id_npc = '" . $id . "';"); $type = mysql_result($alo, 0); $n = 1; $inb = 0; } # vozmozhny dva puti - na druguju kartu ili prosto na druguju lokaciju # na druguju kartu ne storony, potomu prosto stor = 'nmap'; # na druguju lokaciju - togda cherez near // ESLI NA DRUGUJU KARU $show_info = 0; if (substr($loc, 0, 4) != substr($loc_go, 0, 4)) { global $NEWMAP; $NEWMAP = 1; // a eshe ustanovim flag show_info, po kotoromu potom opredelim, nado li pokazatq vstupitelqnyj tekst k loakacci $show_info = 1; // zlye npc nemogut idti v goroda if ($type == 'x') { $toloc = substr($loc_go, 0, 4); if ($toloc == 'rele' || $toloc == 'elfc' || $toloc == 'verg') { return 0; } } } $li = ''; // voobshem eto tazhe lokacija include_once 'modules/f_can_u_reach.php'; $depth = 1; if (isset($_GET['jump']) && isset($CAN_JUMP)) { $depth = 2; } // esli v okruzhnoj lokacii netu takoj loki v takuju storonu, to idti nelzja if (!can_u_reach($who, $loc_go, $stor, $depth)) { //put_error ('<p>извините, но в указаном направлении такой локации нет</p>'); return 0; } if ($depth == 2) { // get loc v can u reach $ll = get_loc($who, $stor, 1); add_journal($name . ' пронесся мимо!', 'l.' . $ll); } // est9q li loka na kotoruju idut? ////////////////////////////// // pitomec $an = do_mysql("SELECT name, fullname FROM npc WHERE belongs = '" . $who . "' AND location = '" . $loc . "' AND move <> 0;"); $an = mysql_fetch_assoc($an); if ($an['fullname']) { $pit = ' и ' . $an['name'] . ' '; add_to_loc($loc_go, $an['fullname']); } else { $pit = ''; } if (substr($who, 0, 2) == 'n.') { $map = substr($loc_go, 0, 4); do_mysql("UPDATE npc SET location = '" . $loc_go . "', map = '" . $map . "' WHERE id_npc = '" . $id . "';"); } else { do_mysql("UPDATE players SET location = '" . $loc_go . "' WHERE id_player = '" . $id . "';"); } $loc2 = 'l.' . $loc; // pogonja if ($inb && substr($loc_go, 0, 4) != 'rele' && substr($loc_go, 0, 4) != 'elfc' && substr($loc_go, 0, 4) != 'verg') { $tinb = 0; if ($inb == 1) { $tinb = 2; } else { $tinb = 1; } $q = do_mysql("SELECT fullname FROM npc WHERE location = '" . $loc . "' AND in_battle = '" . $tinb . "';"); while ($nt = mysql_fetch_assoc($q)) { go_to_loc($nt['fullname'], $loc_go, $stor, 1); } } // formiruem soobshenie. $pere = ''; if (isset($near)) { $pere = $near[$stor][2]; } if ($li) { $pere = $li[2]; } if ($pit) { $gone = 'ушли'; $come = 'пришли'; } else { if (!isset($gender)) { // dlja npc, esliimja konchaetsja na 'a', to skorej vsego devushka $len = strlen($login); $len2 = $len - 1; if (substr($login, $len2) == 'а') { $gone = 'ушла'; $come = 'пришла'; } else { $gone = 'ушел'; $come = 'пришел'; } } else { if ($gender == 'male') { $gone = 'ушел'; $come = 'пришел'; } if ($gender == 'female') { $gone = 'ушла'; $come = 'пришла'; } } } // proverim $n, esli 1 to eto npc i nado vsem pisatq, esli net to perehodjashemu ne nado if ($n) { $need = 1; } else { $need = 0; } // v byvshuju lokaciju add_journal('<b>' . $name . '' . $pit . ' ' . $gone . ' ' . $pere . '</b>', 'l.' . $loc, $need); // v novuju add_journal('<b>' . $come . ' ' . $name . '' . $pit . '</b>', 'l.' . $loc_go, $need); //echo '<br/>show info = '.$show_info.'<br/>'; //echo 'n = '.$n.'<br/>'; //echo 'settings 4 = '.$p['settings'][4].'<br/>'; // takzhe, esli showinfo = 1, perehodjashemu chelu pokazatq info toj karty if ($show_info && !$n) { global $p; if ($p['settings'][4] == 1) { $lg = loc($loc_go, 'locinfo'); // kartinki v locpics/(nazvanie karty).jpg $map = substr($loc_go, 0, 4); //$mapi = gen_header ($lg[1]); $mapi = ''; //$mapi .= '<div class="y" id="adg"><b>'.$lg[1].'</div>'; if (file_exists('modules/locpics/' . $map . '.JPEG')) { $mapi .= '<p><img src="modules/locpics/' . $map . '.JPEG" alt="."/></p>'; } // teperq infa // '/mapinfo/'.$map.'.mapi' if (file_exists('modules/mapinfo/' . $map . '.txt')) { $mapi .= '<p>'; $mapi .= file_get_contents('modules/mapinfo/' . $map . '.txt'); $mapi .= '</p>'; } else { $mapi .= '<p>нет информации</p>'; } //global $sid; //$mapi .= '<p><a class="blue" href="game.php?sid='.$sid.'">в игру</a></p>'; //$mapi .= gen_footer(); add_journal($mapi, $p['login']); } } }
function teleport($who, $loc_go) { # get_pl_info(), do_mysql();, get_npc_info();, loc();, put_error();, delete_from_loc();, add_to_loc();, addjournal(); require_once 'modules/f_get_pl_info.php'; require_once 'modules/f_get_npc_info.php'; require_once 'modules/f_loc.php'; require_once 'modules/f_add_to_loc.php'; // proverka dannyh //$who = preg_replace ('/[^a-z\._0-9]/i', '', $who); //$loc_go = preg_replace ('/[^a-z0-9\|]/i', '', $loc_go); global $LOGIN; $id; $pi = is_player($who); if ($pi) { $id = $pi; $login = $who; $lq = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); $loc = mysql_result($lq, 0); //$loc = get_pl_info ($login, 'location'); $qg = do_mysql("SELECT gender FROM players WHERE id_player = '" . $id . "';"); $gender = mysql_result($qg, 0); $n = 0; // proverka na boj - $q = do_mysql("SELECT in_battle FROM players WHERE id_player = '" . $id . "';"); $inb = mysql_result($q, 0); $qg = do_mysql("SELECT name FROM players WHERE id_player = '" . $id . "';"); $name = mysql_result($qg, 0); } else { if (substr($who, 0, 2) == 'n.') { $id = is_npc(substr($who, 2)); if (!$id) { return 0; } $loc = get_npc_info($who, 'location'); $alo = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $id . "';"); $login = mysql_result($alo, 0); $name = $login; $n = 1; } } // karta na kotoroj stoit $map_is = substr($loc, 0, 4); // karta toj loki, na kotoruju poidut $map_will = substr($loc_go, 0, 4); // ESLI NA DRUGUJU KARU if ($map_is != $map_will) { // a eshe ustanovim flag show_info, po kotoromu potom opredelim, nado li pokazatq vstupitelqnyj tekst k loakacci $show_info = 1; } else { // voobshem eto tazhe lokacija // vstupitelqnyj tekst ne pisatqi $show_info = 0; } global $NEWMAP; $NEWMAP = 1; if (!loc($loc_go, 'locinfo')) { return 0; } // sotrem byvshij inloc add_to_loc($loc_go, $who); ////////////////////////////// // pitomec $an = do_mysql("SELECT name, fullname FROM npc WHERE belongs = '" . $login . "' AND location = '" . $loc . "' AND move <> 0;"); $an = mysql_fetch_assoc($an); if ($an['fullname']) { $pit = ' и ' . $an['name'] . ' '; add_to_loc($loc_go, $an['fullname']); } else { $pit = ''; } if (substr($who, 0, 2) == 'n.') { $map = substr($loc_go, 0, 4); do_mysql("UPDATE npc SET location = '" . $loc_go . "', map = '" . $map . "' WHERE id_npc = '" . $id . "';"); } else { do_mysql("UPDATE players SET location = '" . $loc_go . "' WHERE id_player = '" . $id . "';"); } $loc2 = 'l.' . $loc; // formiruem soobshenie. if ($pit) { $gone = 'исчезли'; $come = 'появиись'; } else { if (!isset($gender)) { // dlja npc, esliimja konchaetsja na 'a', to skorej vsego devushka $len = strlen($login); $len2 = $len - 1; if (substr($login, $len2) == 'а') { $gone = 'исчезла'; $come = 'появилась'; } else { $gone = 'исчез'; $come = 'появился'; } } else { if ($gender == 'male') { $gone = 'исчез'; $come = 'появился'; } if ($gender == 'female') { $gone = 'исчезлa'; $come = 'появилась'; } } } // proverim $n, esli 1 to eto npc i nado vsem pisatq, esli net to perehodjashemu ne nado if ($n) { $need = 1; } else { $need = 0; } // v byvshuju lokaciju add_journal('<p>' . $name . '' . $pit . ' ' . $gone . '!</p>', 'l.' . $loc, $need); // v novuju add_journal('<p>' . $come . ' ' . $name . '' . $pit . '</p>', 'l.' . $loc_go, $need); $p = get_pl_info($who, 'all'); $NEWMAP = 1; include 'modules/s_loadmaps.php'; // zagruzim kartu unset($p); //echo '<br/>show info = '.$show_info.'<br/>'; //echo 'n = '.$n.'<br/>'; //echo 'settings 4 = '.$p['settings'][4].'<br/>'; // takzhe, esli showinfo = 1, perehodjashemu chelu pokazatq info toj karty if ($show_info && !$n && $who == $LOGIN) { global $p; do_mysql("UPDATE gamesys SET life_regen = 0;"); if ($p['settings'][4] == 1) { $lg = loc($loc_go, 'locinfo'); // kartinki v locpics/(nazvanie karty).jpg $map = substr($loc_go, 0, 4); $mapi = gen_header($lg[1]); $mapi .= '<div class="y" id="adg"><b>' . $lg[1] . '</div>'; if (file_exists('modules/locpics/' . $map . '.JPEG')) { $mapi .= '<p><img src="modules/locpics/' . $map . '.JPEG" alt="."/></p>'; } // teperq infa // '/mapinfo/'.$map.'.mapi' if (file_exists('modules/mapinfo/' . $map . '.txt')) { $mapi .= '<p>'; $mapi .= file_get_contents('modules/mapinfo/' . $map . '.txt'); $mapi .= '</p>'; } else { $mapi .= '<p>нет информации</p>'; } global $sid; $mapi .= '<p><a class="blue" href="game.php?sid=' . $sid . '">в игру</a></p>'; $mapi .= gen_footer(); exit($mapi); } } }
<?php // v lokacii estq npc: // npc include_once 'modules/f_get_npc_info.php'; $name = get_npc_info($inloc[$i], 'name'); // zhiznq $life = get_npc_info($inloc[$i], 'life'); $life = explode('|', $life); // - switch (substr($inloc[$i], 2, 1)) { case 'a': $f .= '<span class="green"><b>.</b></span>'; $bel = do_mysql("SELECT belongs FROM npc WHERE fullname = '" . $inloc[$i] . "';"); $bel = mysql_result($bel, 0); if (!$bel) { $f .= '<a class="blue" href="game.php?sid=' . $sid . '&action=priru&npc=' . $inloc[$i] . '">' . $name . '</a>'; } elseif ($bel == $LOGIN) { $f .= '<a class="blue" href="game.php?sid=' . $sid . '&action=talk_to_priru&npc=' . $inloc[$i] . '">' . $name . '</a>'; } else { $f .= $name; } $f .= ' : <a class="red" href="game.php?sid=' . $sid . '&action=attack&to=' . $inloc[$i] . '">x</a>'; break; case 'x': $f .= '<span class="red"><b>.</b></span>'; $f .= $name; $f .= ' : <a class="red" href="game.php?sid=' . $sid . '&action=attack&to=' . $inloc[$i] . '">x</a>'; break; case 's': case 't': $f .= '<b>.</b>';
for ($i = 0; $i < $c; $i++) { if (isset($inb[$i]['login'])) { $to = $inb[$i]['login']; } else { if (isset($inb[$i]['fullname'])) { $to = $inb[$i]['fullname']; } else { continue; } } if (!$to) { continue; } if (substr($to, 0, 2) == 'n.') { include_once 'modules/f_get_npc_info.php'; $op = get_npc_info($to, 'all'); $npc_har = get_npc_battle_har($to); $lvl = round($op['exp'] / 20); } elseif (is_player($to)) { include_once 'modules/f_get_pl_info.php'; $op = get_pl_info($to, 'all'); $npc_har = get_pl_battle_har($to); $lvl = $op['stats'][0]; } if ($op['location'] != $p['location']) { include 'modules/f_end_battle.php'; end_battle($LOGIN); continue; } $md = $lvl - $p['stats'][0]; if ($md < -1) {