function rem_sc_from_book($spell, $book, $login) { // v has_item proveritsja //$spell = preg_replace ('/[^a-z0-9_\.]/i', '', $spell); //$book = preg_replace ('/[^a-z0-9_\.]/i', '', $book); //$login = preg_replace ('/[^a-z0-9_]/i', '', $login); include_once 'modules/f_has_item.php'; if (!has_item($book, $login)) { put_g_error('у вас нету книги'); } // zapros na magiju chto v knige: $q = do_mysql("SELECT on_take FROM items WHERE fullname = '" . $book . "' AND type = 'b';"); if (!mysql_num_rows($q)) { return 0; } $magic = mysql_result($q, 0); if (strpos($magic, $spell) === false) { put_g_error('в этой книге нету этого заклинания!'); } // esli prodolzhaetsja skript, znachit magija estq, izvlekem ee (snachala udalim, togda bagov skryvatq nebvudut:) $magic = string_drop($magic, $spell); // terq sozdadim: //include_once ('modules/f_create_item.php'); $q = do_mysql("SELECT type FROM magic WHERE fullname = '" . $spell . "';"); if (!mysql_num_rows($q)) { put_error('netu takogo zaklinanija'); } $tp = mysql_result($q, 0); //#####$scroll = create_item ('i.s.'.$tp.'.'.$spell); include_once 'modules/f_gain_item.php'; gain_item('i.s.' . $tp . '.' . $spell, 1, $login); // obnovim knigu i vse: do_mysql("UPDATE items SET on_take = '" . $magic . "' WHERE fullname = '" . $book . "';"); return 1; }
function upd_last_cast($pl, $spell) { //$pl = preg_replace ('/[^a-z0-9_]/i', '', $pl); //$spell = preg_replace ('/[^a-z0-9_]/i', '', $spell); $now = time(); $id = is_player($pl); if (!$id) { put_error('npc cant cast spell'); } $q = do_mysql("SELECT last FROM players WHERE id_player = '" . $id . "';"); $last = mysql_result($q, 0); $last = explode('|', $last); // vremja zaklinanija: $q = do_mysql("SELECT timewait FROM magic WHERE fullname = '" . $spell . "';"); if (!mysql_num_rows($q)) { put_error('there are no such spell: ' . $spell . ''); } $tw = mysql_result($q, 0); $last[3] = $now + $tw; // obrabotka effektami: #include_once ('modules/f_get_affected.php'); // effecty: #$aff = get_affected ($LOGIN); // primer: if (is_in ('oglushen', $aff)) $last[3] += 10; $nlast = $last[0] . '|' . $last[1] . '|' . $last[2] . '|' . $last[3] . '|' . $last[4] . '|' . $last[5] . '|' . $last[6] . '|' . $last[7] . '|' . $last[8]; do_mysql("UPDATE players SET last = '" . $nlast . "' WHERE id_player = '" . $id . "';"); return 1; }
function set_w_effects($weapon, $dmg_type, $name) { //$weapon = preg_replace ('/[^a-z0-9_\.]/', '', $weapon); //$name = preg_replace ('/[^a-z0-9_\.]/', '', $name); if (!$weapon) { return 0; } $q = do_mysql("SELECT on_drop FROM items WHERE fullname = '" . $weapon . "';"); if (!mysql_num_rows($q)) { put_error('ner to weapo'); } $effs = mysql_result($q, 0); $effs = explode('|', $effs); $c = count($effs); for ($i = 0; $i < $c; $i++) { if (rand(0, 100) <= 30) { include_once 'modules/f_set_affected.php'; set_affected($name, $effs[$i]); } } // otdelqnyj razgovor s oglusheniem if ($dmg_type == 'drob') { if (rand(0, 100) <= 30) { include_once 'modules/f_set_affected.php'; set_affected($name, 'oglushen'); } } return 1; }
function do_mysql($query, $return = 0) { $query = mysql_real_escape_string($query); $this->a = mysql_query($query, $this->dbcnx); if (!$this->a) { put_error('error in mysql: the query was: "' . $query . '"'); } if ($return == 2) { // returning associative masive while ($this->ret = mysql_fetch_assoc($this->a)) { return $this->ret; } } else { if ($return == 1) { // returning one element, or empty if (!mysql_num_rows($this->a)) { return ''; } $this->ret = mysql_result($this->a, 0); return $this->ret; } else { // simply returns connection descriptor: return $this->a; } } }
function learn_skill($skill, $price) { global $p; global $sid; $skill = preg_replace('/[^0-9]/', '', $skill); $price = preg_replace('/[^0-9]/', '', $price); if ($skill === false) { put_error('неуказан навык'); } if ($price === false) { put_error('неуказанa цена'); } if (!isset($p['skills'][$skill])) { put_error('такого навыка нету'); } if ($p['skills'][$skill]) { put_g_error('вы уже имеете этот навык!'); } $mage = array(22, 23, 24, 25, 26, 27, 28, 29, 30); $warrior = array(7, 8, 9, 10, 41); $ranger = array(11, 12); // proverka na klassy: if ($p['classof'] != 3 && in_array($skill, $mage)) { put_g_error('только для магов!'); } if ($p['classof'] != 1 && in_array($skill, $warrior)) { put_g_error('только для воина!'); } if ($p['classof'] != 2 && in_array($skill, $ranger)) { put_g_error('только для лучников!'); } if ($p['money'] < $price) { put_g_error('у вас нехватает серебра - надо ' . $price . ' монет!'); } if (!$p['stats'][3]) { put_g_error('у вас нету очка навыка!'); } // nelzja vychitq vtoroj navyk iz serii parirovanie - dvuruchnoe - dva if (($p['skills'][18] || $p['skills'][40] || $p['skills'][41]) && ($skill == 18 || $skill == 40 || $skill == 41)) { put_g_error('нелзя выучить два навыка из серии двуручное - два - парирование. Либо щит, либо двуручное, либо два.'); } // esli vsju proverku proshli, podnimem i zabudem $p['skills'][$skill] = 1; $p['stats'][3] -= 1; $skills = implode('|', $p['skills']); $stats = implode('|', $p['stats']); $p['money'] -= $price; do_mysql("UPDATE players SET skills = '" . $skills . "', stats = '" . $stats . "', money = '" . $p['money'] . "' WHERE id_player = '" . $p['id_player'] . "';"); $f = gen_header('навыки'); $f .= '<div class="y" id="sodhg"><b>навыки:</b></div><p>'; include 'modules/sp/sp_skillnames.php'; $f .= 'вы выучили ' . $skn[$skill] . '!<br/>'; $f .= '<a class="blue" href="game.php?sid=' . $sid . '">в игру</a></p>'; $f .= gen_footer(); exit($f); }
function get_dead_info($dead) { //$dead = preg_replace ('/[^a-z0-9\.]/i', '', $dead); if (substr($dead, 0, 2) != 'd.') { put_error('это не труп'); } $q = do_mysql("SELECT * FROM dead WHERE fullname = '" . $dead . "';"); $d = mysql_fetch_assoc($q); $d['l_hunt'] = $d['hunt']; $d['hunt'] = explode('|', $d['hunt']); return $d; }
function can_reach($from, $to, $depth) { $map = substr($from, 0, 4); if ($map != substr($to, 0, 4)) { put_error('raznye karty'); } include 'modules/loc/' . $map . '.php'; $fromi = substr($from, 5); $toi = substr($to, 5); if (!isset($l[$fromi]) || !isset($l[$toi])) { put_error('нет таких лок'); } }
function gain_item($item, $count, $login) { global $I_SEP_C, $p; //$item = preg_replace ('/[^a-z0-9\._]/i', '', $item); $count = preg_replace('/[^0-9]/', '', $count); //$login = preg_replace ('/[^a-z0-9_]/', '', $login); if (!$item || !$count || !$login) { put_error('заполните усе данные (это к админу)'); } $id = is_player($login); include_once 'modules/f_create_item.php'; include_once 'modules/f_add_item_to_pl.php'; include_once 'modules/f_add_item_to_loc.php'; include_once 'modules/f_get_it_name.php'; if (substr($item, 2, 1) == 'm') { $nitem = create_item($item); //add_item_to_pl ($login, $nitem); $name = get_it_name($nitem); $q = do_mysql("SELECT COUNT(*) FROM items WHERE belongs = '" . $login . "' AND is_in = 'inv' AND weight > 0;"); $c = mysql_result($q, 0); if ($c > $I_SEP_C) { add_item_to_loc($p['location'], $nitem); } else { $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $login . "' AND is_in = 'inv' AND realname = '" . $item . "';"); if (mysql_num_rows($q)) { $fn = mysql_result($q, 0); do_mysql("UPDATE items SET on_take = on_take + " . $count . " WHERE fullname = '" . $fn . "';"); do_mysql("DELETE FROM items WHERE fullname = '" . $nitem . "';"); } else { add_item_to_pl($login, $nitem); do_mysql("UPDATE items SET on_take = '" . $count . "' WHERE fullname = '" . $nitem . "';"); } } add_journal('вы получили ' . $name . '!', $login); } else { for ($i = 0; $i < $count; $i++) { $nitem = create_item($item); $name = get_it_name($nitem); $q = do_mysql("SELECT COUNT(*) FROM items WHERE belongs = '" . $login . "' AND is_in = 'inv' AND weight > 0;"); $c = mysql_result($q, 0); if ($c > $I_SEP_C) { add_item_to_loc($p['location'], $nitem); } else { add_item_to_pl($login, $nitem); } add_journal('вы получили ' . $name . '!', $login); } } return $nitem; }
function trade_param($item) { $item = preg_replace('/[^a-z0-9\\._]/i', '', $item); $cl = substr($item, 2, 1); $tp = substr($item, 4, 3); if (!file_exists('modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php')) { put_error('<p>нету такого файла для создания веши: modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php</p>'); } include 'modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php'; if (!isset($it[$item])) { put_error('<p>такой веши нету в файлах: ' . $item . '</p>'); } $it[$item] = explode('|', $it[$item]); return $it[$item]; }
function check_last_cast($pl) { //$pl = preg_replace ('/[^a-z0-9_\.]/i', '', $pl); $now = time(); $id = is_player($pl); if (!$id) { // pokachtoo zhivotnye ne kastujut: put_error('npc cant cast'); } $q = do_mysql("SELECT last FROM players WHERE id_player = '" . $id . "';"); $a = mysql_fetch_assoc($q); $last = $a['last']; $last = explode('|', $last); // v magii pri obnovlenii ukazyvaetsja vremja, sejchas nado tolqko proveritq, nastupilo li if ($last[3] < $now) { return 1; } return 0; }
function get_max_str($item) { global $I_P_P; global $I_P_J; $pref = substr($item, 8, 3); $q = do_mysql("SELECT jewel FROM items WHERE fullname = '" . $item . "';"); if (!mysql_num_rows($q)) { put_error('вешь не существует: ' . $item); } $jewel = mysql_result($q, 0); $str = $I_P_P[$pref]; if (isset($I_P_J[$jewel])) { $str = round($str * $I_P_J[$jewel]); } //$q = do_mysql ("SELECT maxduraminus FROM items WHERE fullname = '".$item."';"); //$mdm = mysql_result ($q, 0); //$str -= $mdm; return $str; }
function delete_count($item, $count, $login) { //$item = preg_replace ('/[^a-z0-9\._]/i', '', $item); $count = preg_replace('/[^0-9]/', '', $count); //$login = preg_replace ('/[^a-z0-9_]/', '', $login); if (!$item || !$count || !$login) { put_error('заполните усе данные (это к админу): ' . $item . ', ' . $count . ', ' . $login); } $i = 1; $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $login . "' AND is_in <> 'ban' AND type <> 'm' AND realname LIKE '" . $item . "%';"); while ($it = mysql_fetch_assoc($q)) { if ($i > $count) { break; } do_mysql("DELETE FROM items WHERE fullname = '" . $it['fullname'] . "';"); $i++; } return $i - 1; }
function add_item_to_pl($pl, $item) { //$item = preg_replace ('/[^a-z\._0-9]/i', '', $item); //$pl = preg_replace ('/[^a-z\._0-9]/i', '', $pl); $t = substr($item, 2, 1); if ($t == 'o' || $t == 'l') { put_error('ne te veshi, pane!'); } //require_once ("modules/f_get_weight.php"); // kolichestvo: $q = do_mysql("SELECT COUNT(*) FROM items WHERE belongs = '" . $pl . "' AND is_in = 'inv' AND weight > 0;"); $c = mysql_result($q, 0); global $I_SEP_C; if ($c > $I_SEP_C) { put_g_error('в рюгзаке нехватает места'); } // add_journal ('[green]'.$item.' to '.$pl.'[/end]', 'maxx'); do_mysql("UPDATE items SET belongs = '" . $pl . "', location = '0', map = '', is_in = 'inv' WHERE fullname = '" . $item . "';"); return 1; }
function has_count($item, $count, $login) { //$item = preg_replace ('/[^a-z0-9\._]/i', '', $item); $count = preg_replace('/[^0-9]/', '', $count); //$login = preg_replace ('/[^a-z0-9_]/', '', $login); if (!$item || !$count || !$login) { put_error('заполните усе данные (это к админу)'); } $q = do_mysql("SELECT COUNT(*) FROM items WHERE realname LIKE '" . $item . "%' AND belongs = '" . $login . "' AND is_in <> 'ban';"); $has = mysql_result($q, 0); if ($has == 0) { return 0; } if ($has < $count) { return -1; } if ($has >= $count) { return 1; } }
function create_item_m($fullname, $count) { //$fullname = preg_replace ('/[^a-z0-9_\.]/i', '', $fullname); //$count = preg_replace ('/[^0-9]/', '', $count); // v princype v etu funkciju iz faila vvodjatsja vse dannye // klass: $cl = substr($fullname, 2, 1); // tip $tp = substr($fullname, 4, 3); // podkljuchim //echo $fullname; if (!file_exists('modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php')) { put_error('<p>нету такого файла для создания веши: modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php</p>'); } include 'modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php'; if (!isset($it[$fullname])) { put_error('<p>такой веши нету в файлах: ' . $fullname . '</p>'); } $it[$fullname] = explode('|', $it[$fullname]); // edinstvennoe chto nado sdelatq - eto izmenitq fullname // poetomu, zapolnim za dva raza, pervyj raz ukazhem lozhnyj fullname $name = mysql_real_escape_string($it[$fullname][0]); $fullname = mysql_real_escape_string($it[$fullname][1]); $type = mysql_real_escape_string($it[$fullname][2]); $on_take = mysql_real_escape_string($count); $on_use = mysql_real_escape_string($it[$fullname][4]); $on_drop = mysql_real_escape_string($it[$fullname][5]); $price = mysql_real_escape_string($it[$fullname][6]); $dmg = mysql_real_escape_string($it[$fullname][7]); $armor = mysql_real_escape_string($it[$fullname][8]); $weight = mysql_real_escape_string($it[$fullname][11]); do_mysql("INSERT INTO items VALUES (0, '" . $name . "', '" . $fullname . ".i', '" . $type . "', '" . $on_take . "', '" . $on_use . "', '" . $on_drop . "', '" . $price . "', '" . $dmg . "', '" . $armor . "', '', '', '" . $weight . "', '', '" . $fullname . "', '', '', '0', '0', '0');"); // teperq vozqmem id_item i pripishem ego k fullname $a = do_mysql("SELECT id_item FROM items WHERE fullname = '" . $fullname . ".i';"); $id_item = mysql_result($a, 0); // obnovim do_mysql("UPDATE items SET fullname = '" . $fullname . "." . $id_item . "' WHERE fullname = '" . $fullname . ".i';"); return $fullname . '.' . $id_item; }
function trade_param($item) { $item = preg_replace('/[^a-z0-9\\._]/i', '', $item); $cl = substr($item, 2, 1); $tp = substr($item, 4, 3); // podkljuchim if ($cl == 'a' || $cl == 'w' || $cl == 'x') { $else = substr($item, 12); $item2 = 'i.' . $cl . '.' . $tp . '.' . $else; } else { $item2 = $item; } if (!file_exists('modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php')) { put_error('<p>trade - нету такого файла для создания веши: modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php</p>'); } include 'modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php'; if (!isset($it[$item2])) { put_error('<p>такой веши нету в файлах: ' . $item2 . '</p>'); } $it[$item2] = explode('|', $it[$item2]); return $it[$item2][0]; }
function repair_item($item, $login, $self = 0) { include_once 'modules/f_get_max_str.php'; $strm = get_max_str($item); if (!$strm) { $strm = 1; } $q = do_mysql("SELECT str, price FROM items WHERE fullname = '" . $item . "' AND belongs = '" . $login . "';"); if (!mysql_num_rows($q)) { put_error('нема вещи ' . $item); } $i = mysql_fetch_assoc($q); if (!$self) { $id = is_player($login); $q = do_mysql("SELECT money FROM players WHERE id_player = '" . $id . "'"); $money = mysql_result($q, 0); if (!$i['str']) { $i['str'] = 1; } $cost = round($i['price'] * $i['str'] / $strm); if ($money < $cost) { put_g_error('нехватает серебра, надо ' . $cost); } $money -= $cost; do_mysql("UPDATE players SET money = '" . $money . "' WHERE id_player = '" . $id . "';"); } else { // chinim samostojatelqno, self navyk $cost = $self * 20; $i['str'] += $cost; if ($i['str'] < $strm) { $strm = $i['str']; } } do_mysql("UPDATE items SET str = '" . $strm . "' WHERE fullname = '" . $item . "';"); return $cost; }
<?php // osvezhitq $dead = preg_replace('/[^a-z0-9\\._]/i', '', $_GET['dead']); if (!$dead) { put_error('а какой труп то резать!!?'); } $q = do_mysql("SELECT * FROM dead WHERE location = '" . $p['location'] . "' AND fullname = '" . $dead . "';"); if (!mysql_num_rows($q)) { put_g_error('нет такого trupa'); } $di = mysql_fetch_assoc($q); // infa trupa if (!$di['hunt']) { put_g_error('на трупе ничего нету!'); } // esli estq nozh odetyj $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $LOGIN . "' AND is_in = 'wea';"); $q2 = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $LOGIN . "' AND is_in = 'wst';"); if (!mysql_num_rows($q) && !mysql_num_rows($q2)) { put_g_error('возьмите в руки нож!'); } if (!mysql_num_rows($q)) { $weapon = ''; } else { $weapon = mysql_result($q, 0); } if (!mysql_num_rows($q2)) { $w2 = ''; } else { $w2 = mysql_result($q2, 0); }
//////////////////////////////// // infa veshi if (substr($item, 2, 1) != 'm') { put_error('это не мелкая вещь'); } $iin = do_mysql("SELECT name, on_take, price FROM items WHERE fullname = '" . $item . "' AND belongs = '" . $LOGIN . "' AND is_in <> 'ban';"); if (!mysql_num_rows($iin)) { put_g_error('нету такой вещи'); } $iin = mysql_fetch_assoc($iin); $nid = is_npc($npc); $tr = do_mysql("SELECT drop2 FROM npc WHERE id_npc = '" . $nid . "';"); $tr = mysql_result($tr, 0); $tr = explode('|', $tr); if (strpos($tr[0], substr($item, 2, 1)) === false && $tr[0] != '*') { put_error('торговец не покупает эти виды вещей'); } if ($count > $iin['on_take']) { $count = $iin['on_take']; } // cena $cost = round($iin['price'] * $count * $tr[2]); $p['money'] += $cost; do_mysql("UPDATE players SET money = '" . $p['money'] . "' WHERE id_player = '" . $p['id_player'] . "';"); if ($count == $iin['on_take']) { // beretsja vsja veshq // udaljaem veshq von include_once 'modules/f_delete_item.php'; delete_item($item); } else { include_once 'modules/f_decrease_misc.php';
function trade_param($item) { $item = preg_replace('/[^a-z0-9\\._]/i', '', $item); $cl = substr($item, 2, 1); $tp = substr($item, 4, 3); // podkljuchim if ($cl == 'a' || $cl == 'w' || $cl == 'x') { $else = substr($item, 12); $item2 = 'i.' . $cl . '.' . $tp . '.' . $else; } else { $item2 = $item; } if (!file_exists('modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php')) { put_error('<p>trade - нету такого файла для создания веши: modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php</p>'); } include 'modules/items/items_' . $cl . '/items_' . $cl . '_' . $tp . '.php'; if (!isset($it[$item2])) { put_error('<p>такой веши нету в файлах: ' . $item2 . '</p>'); } $it[$item2] = explode('|', $it[$item2]); if ($cl == 'w' || $cl == 'a' || $cl == 'x') { $pref = substr($item, 8, 3); switch ($pref) { case 'fur': $it[$item2][6] *= 1.2; $it[$item2][11] *= 1.5; break; case 'tun': $it[$item2][6] *= 1.2; $it[$item2][11] *= 0.5; break; case 'bet': $it[$item2][6] *= 1.25; break; case 'rar': $it[$item2][6] *= 1.5; break; case 'eli': $it[$item2][6] *= 2.0; break; case 'epi': $it[$item2][6] *= 2.5; break; case 'leg': $it[$item2][6] *= 3.0; break; } $it[$item2][6] = round($it[$item2][6]); $it[$item2][11] = round($it[$item2][11]); } $name = $it[$item2][0]; if ($cl == 'w') { // teperq izmenim svojstva po prefiksu $a = explode('~', $it[$item2][7]); for ($i = 0; $i < 5; $i++) { $a[$i] = explode('-', $a[$i]); } #print_r ($a); switch ($pref) { case 'bas': $a[0] = round($a[0][0] * 1) . '-' . round($a[0][1] * 1); $a[1] = round($a[1][0] * 1) . '-' . round($a[1][1] * 1); $a[2] = round($a[2][0] * 1) . '-' . round($a[2][1] * 1); $a[3] = round($a[3][0] * 1) . '-' . round($a[3][1] * 1); $a[4] = round($a[4][0] * 1) . '-' . round($a[4][1] * 1); break; case 'nor': $a[0] = round($a[0][0] * 1) . '-' . round($a[0][1] * 1); $a[1] = round($a[1][0] * 1) . '-' . round($a[1][1] * 1); $a[2] = round($a[2][0] * 1) . '-' . round($a[2][1] * 1); $a[3] = round($a[3][0] * 1) . '-' . round($a[3][1] * 1); $a[4] = round($a[4][0] * 1) . '-' . round($a[4][1] * 1); break; case 'bet': $name = $name . ' (Улучшенное)'; $a[0] = round($a[0][0] * 1.05) . '-' . round($a[0][1] * 1.05); $a[1] = round($a[1][0] * 1.05) . '-' . round($a[1][1] * 1.05); $a[2] = round($a[2][0] * 1.05) . '-' . round($a[2][1] * 1.05); $a[3] = round($a[3][0] * 1.05) . '-' . round($a[3][1] * 1.05); $a[4] = round($a[4][0] * 1.05) . '-' . round($a[4][1] * 1.05); break; case 'rar': $name = $name . ' (Редкое)'; $a[0] = round($a[0][0] * 1.1) . '-' . round($a[0][1] * 1.1); $a[1] = round($a[1][0] * 1.1) . '-' . round($a[1][1] * 1.1); $a[2] = round($a[2][0] * 1.1) . '-' . round($a[2][1] * 1.1); $a[3] = round($a[3][0] * 1.1) . '-' . round($a[3][1] * 1.1); $a[4] = round($a[4][0] * 1.1) . '-' . round($a[4][1] * 1.1); break; case 'eli': $name = $name . ' (Элитное)'; $a[0] = round($a[0][0] * 1.15) . '-' . round($a[0][1] * 1.15); $a[1] = round($a[1][0] * 1.15) . '-' . round($a[1][1] * 1.15); $a[2] = round($a[2][0] * 1.15) . '-' . round($a[2][1] * 1.15); $a[3] = round($a[3][0] * 1.15) . '-' . round($a[3][1] * 1.15); $a[4] = round($a[4][0] * 1.15) . '-' . round($a[4][1] * 1.15); break; case 'epi': $name = $name . ' (Эпическое)'; $a[0] = round($a[0][0] * 1.2) . '-' . round($a[0][1] * 1.2); $a[1] = round($a[1][0] * 1.2) . '-' . round($a[1][1] * 1.2); $a[2] = round($a[2][0] * 1.2) . '-' . round($a[2][1] * 1.2); $a[3] = round($a[3][0] * 1.2) . '-' . round($a[3][1] * 1.2); $a[4] = round($a[4][0] * 1.2) . '-' . round($a[4][1] * 1.2); break; case 'leg': $name = $name . ' (Легендарное)'; $a[0] = round($a[0][0] * 1.25) . '-' . round($a[0][1] * 1.25); $a[1] = round($a[1][0] * 1.25) . '-' . round($a[1][1] * 1.25); $a[2] = round($a[2][0] * 1.25) . '-' . round($a[2][1] * 1.25); $a[3] = round($a[3][0] * 1.25) . '-' . round($a[3][1] * 1.25); $a[4] = round($a[4][0] * 1.25) . '-' . round($a[4][1] * 1.25); break; } $it[$item2][7] = $a[0] . '~' . $a[1] . '~' . $a[2] . '~' . $a[3] . '~' . $a[4]; } if ($cl == 'a' || $cl == 'x') { // teperq izmenim svojstva po prefiksu $a = explode('~', $it[$item2][8]); if (!isset($a[4])) { $a[4] = 0; } switch ($pref) { case 'fur': $name .= ' (мех)'; break; case 'tun': $name .= ' (хлопок)'; break; case 'bas': break; case 'nor': break; case 'bet': $name = $name . ' (Улучшенное)'; $a[0] = round($a[0] * 1.05); $a[1] = round($a[1] * 1.05); $a[2] = round($a[2] * 1.05); $a[3] = round($a[3] * 1.05); $a[4] = round($a[4] * 1.05); break; case 'rar': $name = $name . ' (Редкое)'; $a[0] = round($a[0] * 1.1); $a[1] = round($a[1] * 1.1); $a[2] = round($a[2] * 1.1); $a[3] = round($a[3] * 1.1); $a[4] = round($a[4] * 1.1); break; case 'eli': $name = $name . ' (Элитное)'; $a[0] = round($a[0] * 1.15); $a[1] = round($a[1] * 1.15); $a[2] = round($a[2] * 1.15); $a[3] = round($a[3] * 1.15); $a[4] = round($a[4] * 1.15); break; case 'epi': $name = $name . ' (Эпическое)'; $a[0] = round($a[0] * 1.2); $a[1] = round($a[1] * 1.2); $a[2] = round($a[2] * 1.2); $a[3] = round($a[3] * 1.2); $a[4] = round($a[4] * 1.2); break; case 'leg': $name = $name . ' (Легендарное)'; $a[0] = round($a[0] * 1.25); $a[1] = round($a[1] * 1.25); $a[2] = round($a[2] * 1.25); $a[3] = round($a[3] * 1.25); $a[4] = round($a[4] * 1.25); break; } $it[$item2][8] = $a[0] . '~' . $a[1] . '~' . $a[2] . '~' . $a[3] . '~' . $a[4]; } $it[$item2][0] = $name; return $it[$item2]; }
if (!isset($_GET['part'])) { // chastq pervaja: vyberaem svitok: $f .= 'выберите свиток (также имейте при себе пустой):<br/>'; include_once 'modules/f_list_inventory.php'; $f .= list_inventory($LOGIN, 'i.s.', 'clone_scroll&part=2'); $f .= ''; $f .= '<a class="blue" href="game.php?sid=' . $sid . '">в игру</a>'; $f .= gen_footer(); exit($f); } if ($_GET['part'] == 2) { // teperq sobstvenno vse i delaem $scroll = preg_replace('/[^a-z0-9_\\.]/i', '', $_GET['to']); include_once 'modules/f_has_item.php'; if (!has_item($scroll, $LOGIN)) { put_error('netu etogo svitka'); } // proverim estq li u igroka pustoj svitok: include_once 'modules/f_has_count.php'; include_once 'modules/f_delete_count.php'; if (!has_count('i.q.que.scroll', 1, $LOGIN)) { put_g_error('при себе надо иметь пустой свиток для записи'); } // udaljaem - delete_count('i.q.que.scroll', 1, $LOGIN); // berem nazvanie svitka include_once 'modules/f_real_name.php'; $rn = real_name($scroll); // berem cebnu svitka $q = do_mysql("SELECT price FROM items WHERE fullname = '" . $scroll . "';"); $price = mysql_result($q, 0);
<?php // odetq ili snjatq knigu magii na mesto: $book = preg_replace('/[^a-z0-9_\\.]/i', '', $_GET['book']); if (!$book) { put_error('neukazana kniga'); } $q = do_mysql("SELECT name, is_in FROM items WHERE fullname = '" . $book . "' AND belongs = '" . $LOGIN . "' AND is_in <> 'ban';"); if (!mysql_num_rows($q)) { put_error('нету такой книги'); } $it = mysql_fetch_assoc($q); $f = ''; if ($it['is_in'] == 'mbk') { // snimem: $q = do_mysql("SELECT COUNT(*) FROM items WHERE belongs = '" . $LOGIN . "' AND is_in = 'inv' AND weight > 0;"); $c = mysql_result($q, 0); if ($c > $I_SEP_C) { put_g_error('в рюгзаке нехватает места'); } $q = do_mysql("UPDATE items SET is_in = 'inv' WHERE fullname = '" . $book . "';"); $f .= 'вы сняли ' . $it['name'] . '!'; } else { // estq li tam eshe odna? $q = do_mysql("SELECT fullname FROM items WHERE is_in = 'mbk' AND belongs = '" . $LOGIN . "';"); if (mysql_num_rows($q)) { $itb = mysql_result($q, 0); do_mysql("UPDATE items SET is_in = 'inv' WHERE fullname = '" . $itb . "';"); do_mysql("UPDATE items SET is_in = 'mbk' WHERE fullname = '" . $book . "';"); } else { do_mysql("UPDATE items SET is_in = 'mbk' WHERE fullname = '" . $book . "';"); }
function carpenter($i) { global $LOGIN; global $p; global $arr; global $sm; // setting image $imga = substr($sm['carpenter'], 0, 7); if (!array_key_exists($imga, $arr)) { put_error('несовпадают индексы'); } $imga = str_replace('.', '_', $imga); $img = file('modules/ascii_art/carpenter/' . $imga . '.txt'); $img = implode('', $img); $img = str_replace("\n", '', $img); $img = str_replace("\r", '', $img); $sm['carpenter_img'][$i] = $img[$i]; do_mysql("UPDATE carpenter SET carpenter_img = '" . $sm['carpenter_img'] . "' WHERE id_player = '" . $p['id_player'] . "';"); // checking if all identical $found = 1; for ($i = 0; $i < 25; $i++) { if ($img[$i] == ' ') { continue; } if ($img[$i] != $sm['carpenter_img'][$i]) { $found = 0; break; } } if ($found) { // gaining item include_once 'modules/f_gain_item.php'; $it = gain_item($sm['carpenter'], 1, $LOGIN); do_mysql("DELETE FROM carpenter WHERE id_player = '" . $p['id_player'] . "';"); do_mysql("UPDATE items SET name = CONCAT(name, ' [" . $p['name'] . "]') WHERE fullname = '" . $it . "';"); exit_msg('плотник', 'изделье завершено! '); } }
<?php // bystroe ispolqzovanie veshej $num = preg_replace('/[^0-9]/', '', $_GET['num']); if ($num === false) { put_error('a num gde?'); } if ($num > count($p['magic'])) { $num = count($p['magic']); } if ($num <= 0) { $num = 1; } $num -= 1; $_GET['spell'] = $p['magic'][$num]; $action = 'cast_from_head';
<?php // razgovarivatq s priruchennym $npc = preg_replace('/[^a-z0-9\\._]/i', '', $_GET['npc']); if (!$npc) { put_error('where is animal taklk to'); } if (isset($_GET['part'])) { $part = preg_replace('/[^a-z0-9_]/i', '', $_GET['part']); } else { $part = ''; } $nid = is_npc($npc); $nn = do_mysql("SELECT * FROM npc WHERE id_npc = '" . $nid . "';"); $nn = mysql_fetch_assoc($nn); if ($nn['belongs'] != $LOGIN) { put_error('это не ваш нпц'); } if ($nn['location'] != $p['location']) { put_g_error('рядом с вами нету этого нпц'); } $f = gen_header($nn['name']); $f .= '<div class="y" href="aof"><b>' . $nn['name'] . '</b></div><p>'; if (!$part) { $f .= '» <a class="blue" href="game.php?sid=' . $sid . '&action=talk_to_priru&part=har&npc=' . $npc . '">'; $f .= 'просмотреть информацию</a><br/>'; $f .= '» <a class="blue" href="game.php?sid=' . $sid . '&action=talk_to_priru&part=name1&npc=' . $npc . '">'; $f .= 'дать кличку</a><br/>'; if ($nn['move'] != 0) { $f .= '» <a class="blue" href="game.php?sid=' . $sid . '&action=talk_to_priru&part=stay&npc=' . $npc . '">стой тут!</a><br/>'; } else { $f .= '» <a class="blue" href="game.php?sid=' . $sid . '&action=talk_to_priru&part=stay&npc=' . $npc . '">иди за мной!</a><br/>';
function check_npc_exp($npc2) { $id = is_npc($npc2); if (!$id) { return 0; } $q = do_mysql("SELECT * FROM npc WHERE id_npc = '" . $id . "';"); $n = mysql_fetch_assoc($q); $exphas = round((600 * $n['lvl'] * $n['lvl'] + 1000 * $n['lvl']) / 7); $expto = 600 * $n['lvl'] * $n['lvl'] + 1000 * $n['lvl']; // exphas - do novogo ochka, expto, do novogo urovnja. if ($exphas <= $n['exphas']) { $n['exphas'] -= $exphas; $s = array('str', 'dex', 'int', 'rea', 'other'); $num = array_rand($s); $n[$s[$num]]++; add_journal($n['name'] . ' получил очко опыта! ' . $s[$num] . '++!', 'l.' . $n['location']); $file_name = str_replace('.', '_', $n['realname']); $dir = substr($n['realname'], 2, 1); if (!file_exists('modules/npc/' . $dir . '/' . $file_name . '.php')) { put_error('файл нпц не найден ' . $fullname); } include 'modules/npc/' . $dir . '/' . $file_name . '.php'; $p['skills'][0] = $n['str']; $p['skills'][1] = $n['dex']; $p['skills'][2] = $n['int']; $p['skills'][3] = $n['rea']; $p['skills'][4] = $n['other']; $t[0] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 2; # udar $t[1] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 5; # blok $t[2] = $p['skills'][1] * 5 + $p['skills'][4] * 5 + $p['skills'][3] * 5; # uklon $t[3] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 2; # parirovanie $t[4] = $p['skills'][2] * 8 + $p['skills'][4] * 3; // pri primenenii dobavitq magija na 9 # uron magija $t[5] = $p['skills'][2] * 4 + $p['skills'][4] * 2 + $p['skills'][4] * 6; // pri primenenii dobavitq magija na 3 # ochki blok magija $t[6] = $p['skills'][2] * 8 + $p['skills'][4] * 2 + $p['skills'][4] * 8; // pri primenenii dobavitq magija na 3 # soprotivlenie magii $t[7] = $p['skills'][2] * 5 + $p['skills'][4] * 5 + $p['skills'][4] + $p['skills'][4] * 3; // pri ispolqzovanii dobavitq magija na 3; # uklon ot magii $t[8] = $p['skills'][1] * 3 + $p['skills'][4] * 3 + $p['skills'][4] * 3; # uklon ot strelqby $t[9] = $p['skills'][1] * 5 + $p['skills'][3] * 5 + $p['skills'][4] * 5; $life = $p['skills'][0] * 71 + $p['skills'][1] * 32; $n['life'] = $life . '|' . $life; $n['chanse'] = $t[0] . '~' . $t[1] . '~' . $t[2] . '~' . $t[3] . '~' . $t[4] . '~' . $t[5] . '~' . $t[6] . '~' . $t[7] . '~' . $t[8] . '~' . $t[9]; $n['exp'] = $n['lvl'] * 20 + $n['str'] * 5; $dmgmin = $n['lvl'] * 21 + $p['skills'][0] * 4 + $p['skills'][4] * 5 + $p['skills'][1] * 3; $dmgmax = $n['lvl'] * 22 + $p['skills'][0] * 8 + $p['skills'][4] * 7 + $p['skills'][1] * 4; // $n['dmg'] = str_replace ('1-1', $dmgmin.'-'.$dmgmax, $n['dmg']); $primea = round(($dmgmin + $dmgmax) / 3); $seconda = round(($dmgmin + $dmgmax) / 5); // $dmgmin = round ($dmgmin * 0.7); // $dmgmax = round ($dmgmax * 0.7); // $n['dmg'] = str_replace ('2-2', $dmgmin.'-'.$dmgmax, $n['dmg']); $n['dmg'] = explode('~', $npc['dmg']); for ($i = 0; $i < 5; $i++) { if ($n['dmg'][$i] == '1-1') { $n['dmg'][$i] = $dmgmin . '-' . $dmgmax; } if ($n['dmg'][$i] == '2-2') { $n['dmg'][$i] = round($dmgmin * 0.7) . '-' . round($dmgmax * 0.7); } } $n['dmg'] = implode('~', $n['dmg']); $n['armor'] = explode('~', $npc['armor']); for ($i = 0; $i < 5; $i++) { if ($n['armor'][$i] == 1) { $n['armor'][$i] = $primea; } if ($n['armor'][$i] == 2) { $n['armor'][$i] = $seconda; } } $n['armor'] = implode('~', $n['armor']); //echo '<pre>'; //print_r ($n); //print_r ($npc); do_mysql("UPDATE npc SET exphas = '" . $n['exphas'] . "', str = '" . $n['str'] . "', dex = '" . $n['dex'] . "', `int` = '" . $n['int'] . "', rea = '" . $n['rea'] . "', other = '" . $n['other'] . "', sp = sp + 1, dmg = '" . $n['dmg'] . "', armor = '" . $n['armor'] . "', life = '" . $n['life'] . "', chanse = '" . $n['chanse'] . "', exp = '" . $n['exp'] . "' WHERE id_npc = '" . $id . "';"); unset($npc); } if ($expto <= $n['expto']) { $n['expto'] -= $expto; $n['lvl'] += 1; $n['str'] += 1; $n['dex'] += 1; $n['other'] += 1; $n['sp'] += 3; add_journal($n['name'] . ' получил новый уровень! ', 'l.' . $n['location']); $file_name = str_replace('.', '_', $n['realname']); $dir = substr($n['realname'], 2, 1); if (!file_exists('modules/npc/' . $dir . '/' . $file_name . '.php')) { put_error('файл нпц не найден ' . $fullname); } include 'modules/npc/' . $dir . '/' . $file_name . '.php'; $p['skills'][0] = $n['str']; $p['skills'][1] = $n['dex']; $p['skills'][2] = $n['int']; $p['skills'][3] = $n['rea']; $p['skills'][4] = $n['other']; $t[0] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 2; # udar $t[1] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 5; # blok $t[2] = $p['skills'][1] * 5 + $p['skills'][4] * 5 + $p['skills'][3] * 5; # uklon $t[3] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 2; # parirovanie $t[4] = $p['skills'][2] * 8 + $p['skills'][4] * 3; // pri primenenii dobavitq magija na 9 # uron magija $t[5] = $p['skills'][2] * 4 + $p['skills'][4] * 2 + $p['skills'][4] * 6; // pri primenenii dobavitq magija na 3 # ochki blok magija $t[6] = $p['skills'][2] * 8 + $p['skills'][4] * 2 + $p['skills'][4] * 8; // pri primenenii dobavitq magija na 3 # soprotivlenie magii $t[7] = $p['skills'][2] * 5 + $p['skills'][4] * 5 + $p['skills'][4] + $p['skills'][4] * 3; // pri ispolqzovanii dobavitq magija na 3; # uklon ot magii $t[8] = $p['skills'][1] * 3 + $p['skills'][4] * 3 + $p['skills'][4] * 3; # uklon ot strelqby $t[9] = $p['skills'][1] * 5 + $p['skills'][3] * 5 + $p['skills'][4] * 5; $life = $p['skills'][0] * 71 + $p['skills'][1] * 32; $n['life'] = $life . '|' . $life; $n['chanse'] = $t[0] . '~' . $t[1] . '~' . $t[2] . '~' . $t[3] . '~' . $t[4] . '~' . $t[5] . '~' . $t[6] . '~' . $t[7] . '~' . $t[8] . '~' . $t[9]; $n['exp'] = $n['lvl'] * 20 + $n['str'] * 5; $dmgmin = $n['lvl'] * 21 + $p['skills'][0] * 4 + $p['skills'][4] * 5 + $p['skills'][1] * 3; $dmgmax = $n['lvl'] * 22 + $p['skills'][0] * 8 + $p['skills'][4] * 7 + $p['skills'][1] * 4; // $n['dmg'] = str_replace ('1-1', $dmgmin.'-'.$dmgmax, $n['dmg']); $primea = round(($dmgmin + $dmgmax) / 3); $seconda = round(($dmgmin + $dmgmax) / 5); // $dmgmin = round ($dmgmin * 0.7); // $dmgmax = round ($dmgmax * 0.7); // $n['dmg'] = str_replace ('2-2', $dmgmin.'-'.$dmgmax, $n['dmg']); $n['dmg'] = explode('~', $npc['dmg']); for ($i = 0; $i < 5; $i++) { if ($n['dmg'][$i] == '1-1') { $n['dmg'][$i] = $dmgmin . '-' . $dmgmax; } if ($n['dmg'][$i] == '2-2') { $n['dmg'][$i] = round($dmgmin * 0.7) . '-' . round($dmgmax * 0.7); } } $n['dmg'] = implode('~', $n['dmg']); $n['armor'] = explode('~', $npc['armor']); for ($i = 0; $i < 5; $i++) { if ($n['armor'][$i] == 1) { $n['armor'][$i] = $primea; } if ($n['armor'][$i] == 2) { $n['armor'][$i] = $seconda; } } $n['armor'] = implode('~', $n['armor']); //echo '<pre>'; //print_r ($n); //print_r ($npc); do_mysql("UPDATE npc SET life = '" . $n['life'] . "', dmg = '" . $n['dmg'] . "', armor = '" . $n['armor'] . "', exp = '" . $n['exp'] . "', chanse = '" . $n['chanse'] . "', str = '" . $n['str'] . "', dex = '" . $n['dex'] . "', other = '" . $n['other'] . "', expto = '" . $n['expto'] . "', sp = '" . $n['sp'] . "', lvl = '" . $n['lvl'] . "' WHERE id_npc = '" . $id . "';"); } return 1; }
<?php // odetq vtoroe oruzhie esli estq takoj navyk // $item = preg_replace('/[^a-z0-9_\\.]/i', '', $_GET['weapon']); $f = ''; if (!$p['skills'][41]) { put_g_error('вы неможете взять второе оружие - у вас нету этого навыка'); } $q = do_mysql("SELECT name, is_in, type FROM items WHERE fullname = '" . $item . "';"); $is_in = mysql_fetch_assoc($q); if ($is_in['type'] != 'w') { put_error('это не оружие: ' . $item); } // vmeste s dvuruchnym nelzja nichego: if (is_in('.2h.', $p['weapon'])) { put_g_error('вместе с двуручным второе оружие не возьмешь'); } if ($is_in['is_in'] == 'shi') { // mesto: $q = do_mysql("SELECT COUNT(*) FROM items WHERE belongs = '" . $LOGIN . "' AND is_in = 'inv' AND weight > 0;"); $c = mysql_result($q, 0); if ($c > $I_SEP_C) { put_g_error('в рюгзаке нехватает места'); } // snimem do_mysql("UPDATE items SET is_in = 'inv' WHERE fullname = '" . $item . "';"); $f .= 'вы сняли ' . $is_in['name'] . '!'; } else { // znachit gdeto ne tam // proverim harakteristiku: $itinf = do_mysql("SELECT on_take FROM items WHERE fullname = '" . $item . "';");
function create_npc($fullname, $region, $location = 0) { //$fullname = preg_replace ('/[^a-z\._0-9]/i', '', $fullname); //$region = preg_replace ('/[^a-z0-9_]/i', '', $region); //$location = preg_replace ('/[^a-z0-9_\|]/i', '', $location); // zagruzim fail npc $file_name = str_replace('.', '_', $fullname); $dir = substr($fullname, 2, 1); if (!file_exists('modules/npc/' . $dir . '/' . $file_name . '.php')) { put_error('файл нпц не найден ' . $fullname); } include 'modules/npc/' . $dir . '/' . $file_name . '.php'; // teperq imeem vazhnejshie dannye. mnogie postavim 0, nekotorye pridetsja pridumatq ////////////////////////////////// // dlja prostyh npc klassa a i x izmenim drop2 if ($npc['type'] == 'a' || $npc['type'] == 'x') { if (!isset($NO)) { $mult = 6; //$mult += round ($npc['lvl'] / 10); $pts = $npc['lvl'] * $mult + $npc['str'] * 3; $npc['pts'] = $pts; $base = $npc['lvl']; if ($base == 0) { $base = 1; } $pts -= $base * 4; // intellekt kachatq stoit lishq magam, drugim ochki raspredelim inache $npc['dmg'] = explode('~', $npc['dmg']); if ($npc['dmg'][4] != '0-0') { $p['skills'][0] = rand(0, $pts); $p['skills'][1] = rand(0, $pts - $p['skills'][0]); $p['skills'][2] = rand(0, $pts - $p['skills'][0] - $p['skills'][1]); $p['skills'][3] = rand(0, $pts - $p['skills'][0] - $p['skills'][1] - $p['skills'][2]); $p['skills'][0] += $base; $p['skills'][1] += $base; $p['skills'][2] += $base; $p['skills'][3] += $base; $p['skills'][4] = $base; } else { $p['skills'][0] = rand(0, $pts); $p['skills'][1] = rand(0, $pts - $p['skills'][0]); $p['skills'][2] = 0; $p['skills'][3] = rand(0, $pts - $p['skills'][0] - $p['skills'][1] - $p['skills'][2]); $p['skills'][0] += $base; $p['skills'][1] += $base; $p['skills'][2] += $base; $p['skills'][3] += $base; $p['skills'][4] = $base; } $npc['skills'] = $p['skills']; $t[0] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 2; # udar $t[1] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 5; # blok $t[2] = $p['skills'][1] * 5 + $p['skills'][4] * 5 + $p['skills'][3] * 5; # uklon $t[3] = $p['skills'][1] * 10 + $p['skills'][4] * 10 + $p['skills'][3] * 2; # parirovanie $t[4] = $p['skills'][2] * 8 + $p['skills'][4] * 3; // pri primenenii dobavitq magija na 9 # uron magija $t[5] = $p['skills'][2] * 4 + $p['skills'][4] * 2 + $p['skills'][4] * 6; // pri primenenii dobavitq magija na 3 # ochki blok magija $t[6] = $p['skills'][2] * 8 + $p['skills'][4] * 2 + $p['skills'][4] * 8; // pri primenenii dobavitq magija na 3 # soprotivlenie magii $t[7] = $p['skills'][2] * 5 + $p['skills'][4] * 5 + $p['skills'][4] + $p['skills'][4] * 3; // pri ispolqzovanii dobavitq magija na 3; # uklon ot magii $t[8] = $p['skills'][1] * 3 + $p['skills'][4] * 3 + $p['skills'][4] * 3; # uklon ot strelqby $t[9] = $p['skills'][1] * 5 + $p['skills'][3] * 5 + $p['skills'][4] * 5; $life = $p['skills'][0] * 71 + $p['skills'][1] * 32; $npc['life'] = $life . '|' . $life; $npc['chanse'] = $t[0] . '~' . $t[1] . '~' . $t[2] . '~' . $t[3] . '~' . $t[4] . '~' . $t[5] . '~' . $t[6] . '~' . $t[7] . '~' . $t[8] . '~' . $t[9]; $npc['exp'] = $npc['lvl'] * 20 + $npc['str'] * 5; $dmg1 = round((21 + 32 * $npc['lvl']) * 1 * 99 * 100 / 10000); $dmg2 = round((21 + 33 * $npc['lvl']) * 1 * 101 * 100 / 10000); $dmgmin = $dmg1 + $p['skills'][0] * 4 + $p['skills'][4] * 5 + $p['skills'][1] * 3; $dmgmax = $dmg2 + $p['skills'][0] * 8 + $p['skills'][4] * 7 + $p['skills'][1] * 4; // $npc['dmg'] = str_replace ('1-1', $dmgmin.'-'.$dmgmax, $npc['dmg']); $primea = round(($dmgmin + $dmgmax) / 3); $seconda = round(($dmgmin + $dmgmax) / 5); // $dmgmin = round ($dmgmin * 0.7); // $dmgmax = round ($dmgmax * 0.7); // $npc['dmg'] = str_replace ('2-2', $dmgmin.'-'.$dmgmax, $npc['dmg']); for ($i = 0; $i < 5; $i++) { if ($npc['dmg'][$i] == '1-1') { $npc['dmg'][$i] = $dmgmin . '-' . $dmgmax; } if ($npc['dmg'][$i] == '2-2') { $npc['dmg'][$i] = round($dmgmin * 0.7) . '-' . round($dmgmax * 0.7); } } $npc['dmg'] = implode('~', $npc['dmg']); $npc['armor'] = explode('~', $npc['armor']); for ($i = 0; $i < 5; $i++) { if ($npc['armor'][$i] == 1) { $npc['armor'][$i] = $primea; } if ($npc['armor'][$i] == 2) { $npc['armor'][$i] = $seconda; } } $npc['armor'] = implode('~', $npc['armor']); $lvl = $npc['lvl']; $plus = 3; $plus += $npc['str'] * 3; $expto = round((600 * $lvl * $lvl + 1000 * $lvl) / 7 * $plus); } if ($npc['drop2']) { //echo $npc['drop2']; // chtoto estq $sth = explode('~', $npc['drop2']); $num = array_rand($sth); $sth[$num] = explode(':', $sth[$num]); if (rand(0, 100) <= $sth[$num][1]) { $npc['drop2'] = $sth[$num][0]; } else { $npc['drop2'] = ''; } } if (!$npc['drop2']) { // sluchajnyj drop: if (rand(0, 100) <= 50) { // znachit kidaem to chtyo poluchitsja: $rnd = rand(0, 100); if ($rnd < 19) { // sluchajnoe oruzhie: $types = array('arb', 'axe', 'bow', 'ham', 'kli', 'kni', 'spe', 'swo', 'tre'); $arnd = array_rand($types); include 'sp/sp_rand_weapon.php'; } else { if ($rnd < 47) { // sluchajnaja bronja $types = array('amu', 'bel', 'bo1', 'bo2', 'bot', 'glo', 'hea', 'leg', 'pon', 'rin', 'sho'); $arnd = array_rand($types); include 'sp/sp_rand_armor.php'; } else { if ($rnd < 48) { // kvestavaja veshq: include 'sp/sp_rand_quest_item.php'; } else { if ($rnd < 59) { // wit include 'sp/sp_rand_shield.php'; } else { if ($rnd < 79) { // eda include 'sp/sp_rand_food.php'; } else { if ($rnd < 89) { // svitok: include 'sp/sp_rand_scroll.php'; } else { // reagenty include 'sp/sp_rand_rea.php'; } } } } } } } } } if (!isset($expto)) { $expto = 0; $lvl = 1; $npc['pts'] = 0; $npc['skills'] = array(10, 10, 10, 10, 10); } /////////////////////////////////// // LOKACIJA: // esli lokacija pod nulevym elementom imeetsja, my tolqko dobavim k inloc if (!$location) { include_once 'modules/f_gen_rnd_loc.php'; $loc = gen_rnd_loc($region); // sozdaem zapros, i ustanavlivaem flag NC = 1, chtob srazu posle npc sozdatq lokaciju // na vsjakij sluchjaj, chtob npc bez loki ne ostavitq ili naoborot $q2cl = "INSERT INTO locations Values ('" . $loc[0] . "', '" . $region . "', '');"; $location = $loc[0]; // dlja togo, chtob potom ukazatq pravilqno } $map = substr($location, 0, 4); // esli ne ukazana, pridetsja sozdatq // s lokacijami razobralisq // teperq kidaem v bazu npc // zapros na kolichestvo pohozhih $time = time(); // vremja sejchjas if (!isset($npc['hidden'])) { $npc['hidden'] = 0; } if (!isset($npc['attack_speed'])) { $npc['attack_speed'] = 4; } if (!isset($npc['effect'])) { $npc['effect'] = ''; } do_mysql("INSERT INTO npc VALUES (0, '" . $npc['name'] . "', '" . $npc['fullname'] . ".n', '" . $npc['type'] . "', '" . $npc['life'] . "', '" . $location . "', '" . $time . "', '', '" . $npc['move'] . "', '0', '', '" . $npc['dmg'] . "', '" . $npc['armor'] . "', '" . $npc['exp'] . "', '" . $npc['chanse'] . "', '" . $npc['drop2'] . "', '" . $npc['hunt'] . "', '" . $map . "', '0', '" . $time . "', '" . $npc['attack_speed'] . "', '', '" . $npc['fullname'] . "', '" . $npc['hidden'] . "', '" . $npc['skills'][0] . "', '" . $npc['skills'][1] . "', '" . $npc['skills'][2] . "', '" . $npc['skills'][3] . "', '" . $npc['skills'][4] . "', '0', '" . $expto . "', '" . $npc['pts'] . "', '" . $lvl . "', '0', '0', '" . $npc['effect'] . "');"); ////////// //die ($npc['drop2']); // fullname $qfn = do_mysql("SELECT id_npc FROM npc WHERE fullname = '" . $npc['fullname'] . ".n';"); $fn = mysql_result($qfn, 0); $npc['fullname'] .= '.' . $fn; do_mysql("UPDATE npc SET fullname = '" . $npc['fullname'] . "' WHERE id_npc = '" . $fn . "';"); return $npc['fullname']; }
$f = gen_header('магия'); $f .= '<div class="y" id="lagfi"><b>цель</b></div><p>'; $f .= list_inloc($LOGIN, 'cast_from_book&spell=' . $spell . '&book=' . $book); $f .= '<hr/>'; $f .= '<a class="blue" href="game.php?sid=' . $sid . '&action=showinventory">в инвентарь</a><br/>'; $f .= '<a class="blue" href="game.php?sid=' . $sid . '">в игру</a>'; $f .= gen_footer(); exit($f); } } else { $to = preg_replace('/[^a-z0-9_\\.-]/i', '', $_GET['to']); } // snachala proverim, estq li kniga: include_once 'modules/f_has_item.php'; if (!has_item($book, $LOGIN)) { put_error('у вас нету книги магии'); } // proverim estq li v knige zaklinanie: $q = do_mysql("SELECT on_take FROM items WHERE fullname = '" . $book . "' AND type = 'b';"); $magic = mysql_result($q, 0); if (strpos($magic, $spell) === false) { put_g_error('в этой книге нету этого заклинания!'); } // proverka na poslednee kastovanie: include_once 'modules/f_check_last_cast.php'; if (!check_last_cast($LOGIN)) { // formiruem blokirujusheju stranicu, no na nej pomestim ssylku prodolzhitq dejstvie: $str = $_SERVER['QUERY_STRING']; // iz $str nado vyreatq sid // nam pomozhet strpos $pos = strpos($str, '&');
<?php // izmenjaet sobstvennye nastrojki // $_GET['change']: // maininfo - osnovnaja infa // pgmode - tip stranica, loka ili chat //------------------------ $set = preg_replace('/[^012]/', '', $_GET['set']); if (!$_GET['change'] || $set === false) { put_error('<p>all settings required for settings..</p>'); } if ($_GET['change'] == 'maininfo') { $p['settings'][0] = $set; } if ($_GET['change'] == 'pgmode') { $p['settings'][1] = $set; } if ($_GET['change'] == 'locmode') { $p['settings'][2] = $set; } if ($_GET['change'] == 'journal') { $p['settings'][3] = $set; } if ($_GET['change'] == 'mapinfo') { $p['settings'][4] = $set; } if ($_GET['change'] == 'daynight') { $p['settings'][6] = $set; } if ($_GET['change'] == 'journal2') { $p['settings'][7] = $set; }