function check_pl_exp($login) { //$login = preg_replace ('/[^a-z0-9_]/i', '', $login); $id = is_player($login); if (!$id) { return 0; } $q = do_mysql("SELECT stats FROM players WHERE id_player = '" . $id . "';"); $stats = mysql_result($q, 0); $stats = explode('|', $stats); if ($stats[1] >= $stats[2]) { $q = do_mysql("SELECT skills, rase FROM players WHERE id_player = '" . $id . "';"); $sk = mysql_fetch_assoc($q); $sk['skills'] = explode('|', $sk['skills']); switch ($sk['rase']) { case 1: $sk['skills'][0] += 1; $sk['skills'][2] += 1; break; case 2: $sk['skills'][1] += 1; $sk['skills'][3] += 1; break; case 3: $sk['skills'][0] += 1; $sk['skills'][3] += 1; break; } $sk['skills'] = implode('|', $sk['skills']); if (substr($sk['skills'], 0, 1) == '|') { $sk['skills'] = substr($sk['skills'], 1); } $stats[0] += 1; if ($stats[0] <= 12 || $stats[0] % 10 == 0) { $stats[3] += 1; } $stats[1] -= $stats[2]; $stats[2] = 600 * $stats[0] * $stats[0] + 1000 * $stats[0]; $nstats = $stats[0] . '|' . $stats[1] . '|' . $stats[2] . '|' . $stats[3] . '|' . $stats[4] . '|' . $stats[5] . '|' . $stats[6] . '|' . $stats[7]; do_mysql("UPDATE players SET stats = '" . $nstats . "', skills = '" . $sk['skills'] . "' WHERE id_player = '" . $id . "';"); add_journal('новый уровень: ' . $stats[0] . '!', $login); add_journal('вы получили очко навыка!', $login); } if ($stats[4] >= $stats[5]) { // poluchitq ochko opyta: $stats[6] += 1; $stats[4] -= $stats[5]; $stats[7] += 1; $stats[5] = round((600 * $stats[0] * $stats[0] + 1000 * $stats[0]) / 9); $nstats = $stats[0] . '|' . $stats[1] . '|' . $stats[2] . '|' . $stats[3] . '|' . $stats[4] . '|' . $stats[5] . '|' . $stats[6] . '|' . $stats[7]; do_mysql("UPDATE players SET stats = '" . $nstats . "' WHERE id_player = '" . $id . "';"); add_journal('вы получили очко опыта!', $login); } return 1; }
function increase_karma($login, $plus) { //$login = preg_replace ('/[^a-z0-9_]/i', '', $login); $plus = preg_replace('/[^0-9]/', '', $plus); $id = is_player($login); $q = do_mysql("SELECT karma FROM players WHERE id_player = '" . $id . "';"); $karma = mysql_result($q, 0); $karma += $plus; do_mysql("UPDATE players SET karma = '" . $karma . "' WHERE id_player = '" . $id . "';"); add_journal('карма +' . $plus, $login); return 1; }
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 block($to) { $id = is_player($to); if ($id) { $q = do_mysql("SELECT name, location FROM players WHERE id_player = '" . $id . "';"); $p = mysql_fetch_assoc($q); add_journal($p['name'] . ' блокировал!', 'l.' . $p['location']); } else { $id = is_npc($to); $q = do_mysql("SELECT name, location FROM npc WHERE id_npc = '" . $id . "';"); $n = mysql_fetch_assoc($q); add_journal($n['name'] . ' блокировал!', 'l.' . $n['location']); } return 1; }
function gain_silver($silver, $login) { $silver = preg_replace('/[^-0-9]/', '', $silver); //$login = preg_replace ('/[^a-z0-9_]/', '', $login); $id = is_player($login); if (!$id) { return 0; } do_mysql("UPDATE players SET money = money + '" . $silver . "' WHERE id_player = '" . $id . "';"); if ($silver > -1) { add_journal('серебро +' . $silver, $login); } else { add_journal('серебро ' . $silver, $login); } //add_journal ('[green]'.$login.' +'.$silver.'[/end]', 'maxx'); return 1; }
function gain_peace_exp($exp, $login) { $exp = preg_replace('/[^0-9]/', '', $exp); //$login = preg_replace ('/[^a-z0-9_]/', '', $login); $id = is_player($login); $q = do_mysql("SELECT stats FROM players WHERE id_player = '" . $id . "';"); $stats = mysql_result($q, 0); $stats = explode('|', $stats); $stats[1] += $exp; $stats[4] += $exp; $nstats = $stats[0] . '|' . $stats[1] . '|' . $stats[2] . '|' . $stats[3] . '|' . $stats[4] . '|' . $stats[5] . '|' . $stats[6] . '|' . $stats[7]; include_once 'modules/f_check_pl_exp.php'; do_mysql("UPDATE players SET stats = '" . $nstats . "' WHERE id_player = '" . $id . "';"); add_journal('exp +' . $exp, $login); check_pl_exp($login); return 1; }
function mag_summon($spell, $login) { //$spell = preg_replace ('/[^a-z0-9_]/i', '', $spell); //$login = preg_replace ('/[^a-z0-9_]/i', '', $login); $id = is_player($login); $q = do_mysql("SELECT cname FROM magic WHERE fullname = '" . $spell . "';"); if (!mysql_num_rows($q)) { return 0; } $fullname = mysql_result($q, 0); if (!$fullname) { return 0; } // zapros na lokaciju igroka i kolichestvo priruchennyh zhivotnyh $q = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); if (!mysql_num_rows($q)) { return 0; } $loc = mysql_result($q, 0); $q = do_mysql("SELECT COUNT(*) FROM npc WHERE belongs = '" . $login . "';"); $c = mysql_result($q, 0); if ($c > 0) { put_g_error('у вас уже есть нпц, принадлежащие вам'); } // sozdaem npc: include_once 'modules/f_create_npc.php'; $npc = create_npc($fullname, substr($loc, 0, 4), $loc); $nid = is_npc($npc); // izmenim imja: $q = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $nid . "';"); $name = mysql_result($q, 0); $nname = 'призванный ' . $name; $fullname = $npc . '.' . $login; // ataka: $q = do_mysql("SELECT in_battle FROM players WHERE id_player = '" . $id . "';"); $inb = mysql_result($q, 0); do_mysql("UPDATE npc SET fullname = '" . $fullname . "', name = '" . $nname . "', belongs = '" . $login . "', move = '30', in_battle = '" . $inb . "', type = 'a' WHERE id_npc = '" . $nid . "';"); $q = do_mysql("SELECT name FROM players WHERE id_player = '" . $id . "';"); $pn = mysql_result($q, 0); add_journal($pn . ': призвал ' . $name . '!', 'l.' . $loc); return 1; }
function drop_item($item, $login) { //$item = preg_replace ('/[^a-z0-9\._]/i', '', $item); //$login = mysql_real_escape_string ($login); $id = is_player($login); $q = do_mysql("SELECT name FROM items WHERE belongs = '" . $login . "' AND is_in <> 'ban' AND fullname = '" . $item . "';"); if (!mysql_num_rows($q)) { put_g_error('у вас нету этой вещи'); } $name = mysql_result($q, 0); // raz vse estq, vykinem v lokaciju. $q = do_mysql("SELECT location FROM players WHERE id_player = '" . $id . "';"); $loc = mysql_result($q, 0); include_once 'modules/f_add_item_to_loc.php'; add_item_to_loc($loc, $item); $q = do_mysql("SELECT gender, name FROM players WHERE id_player = '" . $id . "';"); $p = mysql_fetch_assoc($q); if ($p['gender'] == 'male') { $text = $p['name'] . ' 6poccul'; } else { $text = $p['name'] . ' 6poccula'; } add_journal($text . ' ' . $name . '!', 'l.' . $loc); }
$nn['move'] = 30; $f .= $nn['name'] . ' сного пойдет за вами!'; } do_mysql("UPDATE npc SET move = '" . $nn['move'] . "' WHERE id_npc = '" . $nid . "';"); } else { if ($part == 'sit') { $f .= $nn['name'] . ' сел'; add_journal('<p>' . $nn['name'] . ' сел</p>', 'l.' . $p['location'], 0); } else { if ($part == 'lay') { $f .= $nn['name'] . ' лег'; add_journal('<p>' . $nn['name'] . ' лег</p>', 'l.' . $p['location'], 0); } else { if ($part == 'give_hand') { $f .= $nn['name'] . ' дал вам лапу'; add_journal('<p>' . $nn['name'] . ' дал ' . $LOGIN . ' лапу</p>', 'l.' . $p['location'], 0); } else { if ($part == 'go_away') { if (substr($npc, strlen($npc) - strlen($LOGIN)) == $LOGIN) { // prizvannyj do_mysql("DELETE FROM npc WHERE id_npc = '" . $nid . "';"); $f .= $nn['name'] . ' изчез.'; } else { $nn['name'] = preg_replace('/[a-z]/', '', $nn['name']); do_mysql("UPDATE npc SET name = '" . $nn['name'] . "', belongs = '0', in_battle = '0' WHERE id_npc = '" . $nid . "';"); $f .= $nn['name'] . ' обиделся и ушел.'; } } else { if ($part == 'har') { $f .= '<b>характеристика:</b><br/>'; $f .= 'сила: ' . $nn['str'] . '<br/>';
} if (!$p['skills'][35]) { put_g_error('нема навыка - нема дров }=['); } $f = ''; $q = do_mysql("SELECT on_use FROM items WHERE fullname = '" . $item . "';"); $time = mysql_result($q, 0); if ($time > 0 && $time > time()) { add_journal('Нету гринписа на вас! Глянь во что дерево превратили!!!', $LOGIN); } else { $q = do_mysql("SELECT on_take FROM items WHERE fullname = '" . $item . "';"); $count = mysql_result($q, 0); if ($time > 0) { do_mysql("UPDATE items SET on_use = '' WHERE fullname = '" . $item . "';"); $count = 5; } if ($p['skills'][35] * 10 >= rand(0, 100)) { // рубим ветви - $count--; include_once 'modules/f_gain_item.php'; gain_item('i.q.que.vetka', 1, $LOGIN); } else { add_journal('Вам неудалось срубить ветки!', $LOGIN); $count--; } // obnovim kolichestvo do_mysql("UPDATE items SET on_take = '" . $count . "' WHERE fullname = '" . $item . "';"); if ($count == 0) { do_mysql("UPDATE items SET on_use = '" . (time() + 300) . "' WHERE fullname = '" . $item . "';"); } }
} $count_i = mysql_result($q, 0); if ($count > $count_i) { $count = $count_i; } if (!$count) { $count = 1; } $iq = do_mysql("SELECT name FROM items WHERE fullname = '" . $item . "';"); $itname = mysql_result($iq, 0); include_once 'modules/f_add_item_to_loc.php'; // esli kidaetsja vse: if ($count == $count_i) { add_item_to_loc($p['location'], $item); } else { include_once 'modules/f_decrease_misc.php'; include_once 'modules/f_create_item_m.php'; include_once 'modules/f_real_name.php'; $rn = real_name($item); $nitem = create_item_m($rn, $count); decrease_misc($item, $count); add_item_to_loc($p['location'], $nitem); } if ($p['gender'] == 'male') { $vz = 'бросил'; } else { $vz = 'бросила'; } add_journal('<p>' . $p['name'] . ' ' . $vz . ' ' . $itname . ' (' . $count . ')</p>', 'l.' . $p['location']); $NO_CONTINUE = 1; include 'modules/s_journal.php';
<?php // butylka: // esli rjadom estq bereg reki ili bereg ozera, to ona prevratitsja v vodu $q = do_mysql("SELECT COUNT(*) FROM items WHERE (realname = 'i.o.sta.seashore' OR realname = 'i.o.sta.riverbank' OR realname = 'i.o.sta.lake') AND location = '" . $p['location'] . "';"); $c = mysql_result($q, 0); if ($c) { // naberem vody: include_once 'modules/f_delete_item.php'; include_once 'modules/f_gain_item.php'; delete_item($item); gain_item('i.f.dri.nor.water21', 1, $LOGIN); } else { add_journal('никакого эффекта', $LOGIN); } $action = '';
<?php // novyj rjugzak 5 $p['settings'][5] = 5; do_mysql("UPDATE players SET settings = '" . $p['settings'] . "' WHERE login = '******';"); add_journal('вы сменили заплесный мешок!', $LOGIN); include_once 'modules/f_delete_item.php'; delete_item($item);
$to = real_name($to); // dalee, berem shans prigotovitq // on raven 100 - ves * 10 + navyk * 10. // esli ves > 30, on raven navyku prigotovlenija // esli navyk 0, shans 0 $chanse = 0; if ($wgh < 30) { $chanse = 100 - $wgh * 10 + $p['skills'][37] * 10; } else { $chanse = $p['skills'][37]; } if (!$p['skills'][37]) { $chanse = 0; } // proverjaem vyshlo li prigotovitq - if (rand(0, 100) <= $chanse) { $to = str_replace('raw_', 'fry_', $to); $to = str_replace('fish', 'fry_fish', $to); include_once 'modules/f_gain_item.php'; gain_item($to, 1, $LOGIN); } else { add_journal('еда обуглилась...', $LOGIN); } } } else { if ($_GET['sa'] == 'takeugolq') { include_once 'modules/f_gain_item.php'; gain_item('i.q.que.alch.ugolq', 1, $LOGIN); } } }
<?php // skript ispolqzovanija regeneracii: $lp = rand(0, $p['skills'][5]) * $p['skills'][0]; $p['life'][0] += $lp; if ($p['life'][0] > $p['life'][1]) { $p['life'][0] = $p['life'][1]; } $nlife = $p['life'][0] . '|' . $p['life'][1]; add_journal('жизнь +' . $lp . '!', $LOGIN); // zalechivanie ran - $pp = $p['skills'][5] * 10; if (rand(0, 100) <= $pp && $p['status1'][2] == 1) { $p['status1'][2] = 0; add_journal('ваши раны зажили!', $LOGIN); } do_mysql("UPDATE players SET life = '" . $nlife . "', status1 = '" . $p['status1'] . "' WHERE id_player = '" . $p['id_player'] . "';");
break; } if ($p['skills'][0] < $itinf[0] || $p['skills'][1] < $itinf[1] || $p['skills'][2] < $itinf[2] || $p['skills'][3] < $itinf[3] || $p['skills'][$numb] < $itinf[4]) { put_g_error('вы не можете одеть вещь, у нее слишком высокие характеристики'); } $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $LOGIN . "' AND is_in = 'wea';"); if (!mysql_num_rows($q)) { $weap = ''; } else { $weap = mysql_result($q, 0); } if (strpos($weap, '.2h.') !== false) { put_g_error('вы неможете одеть второе оружие, у вас двуручное оружие в руках'); } // togda chto tam? $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $LOGIN . "' AND is_in = 'shi';"); if (!mysql_num_rows($q)) { do_mysql("UPDATE items SET is_in = 'shi' WHERE fullname = '" . $item . "';"); } else { // mestami menjaem $fn = mysql_result($q, 0); do_mysql("UPDATE items SET is_in = 'inv' WHERE fullname = '" . $fn . "';"); do_mysql("UPDATE items SET is_in = 'shi' WHERE fullname = '" . $item . "';"); } $f .= 'вы одели ' . $is_in['name'] . '!'; } add_journal($f, $LOGIN); $_GET['type'] = 3; include 'modules/s_journal.php'; // zhurnal na posledok include 'modules/s_showinventory.php';
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; }
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; }
$mult = rand(50, 200) / 100; } // udaljaem starye travy include_once 'modules/f_delete_count.php'; delete_count($rtra1, $c, $LOGIN); delete_count($rtra2, $c, $LOGIN); $fullname = $tn; $on_use = array(0, 0, 0, 0, 0); $on_use[0] = round(($tra1_i[0] + $tra2_i[0]) * $mult * (ceil($p['skills'][6] / 3) + 1)); $on_use[1] = round(($tra1_i[1] + $tra2_i[1]) * $mult * (ceil($p['skills'][6] / 3) + 1)); if ($tra1_i[2] || $tra2_i[2]) { $on_use[2] = 1; } if ($tra1_i[3] || $tra2_i[3]) { $on_use[3] = 1; } if ($tra1_i[4] || $tra2_i[4]) { $on_use[4] = 1; } $price = round(($on_use[0] + $on_use[1]) / 10); $on_use = implode('~', $on_use); $realname = $fullname; $fullname = $wat['fullname'] . '.' . $fullname; // obnovljaem i sozdaem: esli udastsja if (rand(1, 10) <= $p['skills'][6]) { do_mysql("UPDATE items SET fullname = '" . $fullname . "', name = '" . $name . "', on_use = '" . $on_use . "', price = '" . $price . "', realname = '" . $realname . "', belongs = '" . $LOGIN . "' WHERE id_item = '" . $wat['id_item'] . "';"); // i soobshaem v zhurbal: add_journal('вы сварили ' . $name . '!', $LOGIN); } else { add_journal('вы переварили ' . $name . ' и трава как-то растворилась в воде...', $LOGIN); }
function do_dmg($who, $to, $type, $PAR, $KOMBO = 1) { include_once 'modules/f_get_dmg.php'; include_once 'modules/f_get_armor.php'; ////////////////////////////// NAPADAJUSHIJ ///////////////////// // esli napadajushij igrok to uron poluchim funkciej, esli npc to vozqmem sami: $wid; $pi = is_player($who); if ($pi) { $wid = $pi; include_once 'modules/f_get_dmg.php'; $dmg = get_dmg($who); // lomaem mechq include_once 'modules/f_damage_weapons.php'; damage_weapons($who); // razberemsja s oruzhiem, dobavim effekty i oglushim esli eto drob uron (prodelaet eto funkcija) $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $who . "' AND is_in = 'wea';"); if (!mysql_num_rows($q)) { $weapon = ''; } else { $weapon = mysql_result($q, 0); } if ($weapon) { include_once 'modules/f_set_w_effects.php'; set_w_effects($weapon, $type, $to); } // lokacija igroka $q = do_mysql("SELECT location FROM players WHERE id_player = '" . $wid . "';"); $who_loc = mysql_result($q, 0); // letaet li $q = do_mysql("SELECT walking FROM players WHERE id_player = '" . $wid . "';"); $who_fly = mysql_result($q, 0); $q = do_mysql("SELECT clan FROM players WHERE id_player = '" . $wid . "';"); $who_clan = mysql_result($q, 0); $who_clan = explode('|', $who_clan); } else { $wid = is_npc($who); $npc = 1; if (!$wid) { return 0; } $q = do_mysql("SELECT dmg FROM npc WHERE id_npc = '" . $wid . "';"); if (!mysql_num_rows($q)) { return 0; } $dmg = mysql_result($q, 0); $dmg = explode('~', $dmg); for ($i = 0; $i < 5; $i++) { $dmg[$i] = explode('-', $dmg[$i]); } $weapon = ''; // lokacija npc $q = do_mysql("SELECT location FROM npc WHERE id_npc = '" . $wid . "';"); $who_loc = mysql_result($q, 0); // effekt $q = do_mysql("SELECT effect FROM npc WHERE id_npc = '" . $wid . "';"); $who_effect = mysql_result($q, 0); // letanie $q = do_mysql("SELECT move FROM npc WHERE id_npc = '" . $wid . "';"); $who_fly = mysql_result($q, 0); if ($who_fly != 7) { $who_fly = 0; } else { $who_fly = 2; } } //////////////////////////// ORONJAJUSHIJSJA //////////////////// $ni = is_npc($to); if ($ni) { $tid = $ni; $tonpc = 1; $q = do_mysql("SELECT armor FROM npc WHERE id_npc = '" . $tid . "';"); if (!mysql_num_rows($q)) { return 0; } $armor = mysql_result($q, 0); $armor = explode('~', $armor); // lokacija npc $q = do_mysql("SELECT location FROM npc WHERE id_npc = '" . $tid . "';"); $to_loc = mysql_result($q, 0); // letanie $q = do_mysql("SELECT move FROM npc WHERE id_npc = '" . $tid . "';"); $to_fly = mysql_result($q, 0); if ($to_fly != 7) { $to_fly = 0; } else { $to_fly = 2; } // golem soklana - $q = do_mysql("SELECT fullname FROM npc WHERE id_npc = '" . $tid . "';"); $to_fn = mysql_result($q, 0); if ($to_fn == 'n.x.golem' && isset($who_clan)) { $qc = do_mysql("SELECT belongs FROM castle WHERE name = 'telir'"); $bel = mysql_result($qc, 0); if ($bel == $who_clan[0]) { return 1; } } } else { $tid = is_player($to); if (!$tid) { return 0; } $armor = get_armor($to); // lomaem bronju include_once 'modules/f_damage_armor.php'; damage_armor($to, $PAR); // lokacija igroka $q = do_mysql("SELECT location FROM players WHERE id_player = '" . $tid . "';"); $to_loc = mysql_result($q, 0); // letit li igrok $q = do_mysql("SELECT walking FROM players WHERE id_player = '" . $tid . "';"); $to_fly = mysql_result($q, 0); } if ($to_fly == 2 && substr($weapon, 4, 3) != 'bow' && substr($weapon, 4, 3) != 'arb' && $who_fly != 2) { // nelzja dostatq include_once 'modules/f_comp_reaction.php'; if (!comp_reaction($who, $to) || !comp_reaction($who, $to) || !comp_reaction($who, $to)) { add_journal('нелзя так просто достать летящего!', $who); return 0; } } if (substr($weapon, 4, 3) == 'bow' || substr($weapon, 4, 3) == 'arb') { $RANGE = 1; } else { $RANGE = 0; } ////////////////////////////// lokacija //////////////////////////// if ($who_loc != $to_loc) { // esli ne na odnoj lokacii // ne dalqnostreljajushimi streljatq nelzja if (!$RANGE) { add_journal('1цель недоступна', $who); return 0; } // dalee berem zapros na okruzhajushie lokacii include_once 'modules/f_loc.php'; $near = loc($who_loc, 'near'); // teperq nado proveritq, netu li gde nechajanno takoj lokacii $all_ok = 0; for ($i = 1; $i < 9; $i++) { if (!isset($near[$i])) { continue; } if ($near[$i][0] == $to_loc) { $all_ok = 1; } } if (!$all_ok) { // nanesti uron nelzja: add_journal('цель недоступна', $who); return 0; } //////////////////////////////////// // TUT NPC HODJAT K LUCHNIKAM :D //////////////////////////////////// if (isset($tonpc)) { include_once 'modules/f_comp_reaction.php'; if (comp_reaction($to, $who)) { do_mysql("UPDATE npc SET location = '" . $who_loc . "' WHERE id_npc = '" . $tid . "';"); } } } if ($RANGE) { // 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; } } ////////////////////////////// podschet urona ////////////////////// switch ($type) { case 'rez': $num = 0; break; case 'kol': $num = 1; break; case 'drob': $num = 2; break; case 'rub': $num = 3; break; case 'mag': $num = 4; break; default: $tmp = 1; } if (isset($tmp)) { // vyberem sami nomer: do { $arr = array('rez', 'kol', 'drob', 'rub'); if (!$dmg[0][1] && !$dmg[1][1] && !$dmg[2][1] && !$dmg[3][1] || isset($npc)) { $arr[4] = 'mag'; } $num = array_rand($arr); $type = $arr[$num]; } while (!$dmg[$num][1]); } $damage = rand($dmg[$num][0], $dmg[$num][1]); include_once 'modules/f_crit.php'; $crit = crit($who); $damage *= $crit; // kombo $damage *= $KOMBO; if ($crit > 1) { $CR = 1; } else { $CR = 0; } if ($damage == 0) { $CR = 0; } ///////////////////////////// // magicheskij uron if ($dmg[4][1] > 0 && $type != 'mag') { $mdamage = rand($dmg[4][0], $dmg[4][1]); $marm = $armor[4]; $mdamage -= $marm; if ($mdamage < 0) { $mdamage = 0; } } else { $mdamage = 0; } //////////////////////// parirovanie ////////////////////// if ($PAR && is_player($to) && $type != 'mag') { $q = do_mysql("SELECT fullname FROM items WHERE belongs = '" . $to . "' AND is_in = 'shi' AND type = 'x';"); if (mysql_num_rows($q)) { $shi = mysql_result($q, 0); $q = do_mysql("SELECT armor FROM items WHERE fullname = '" . $shi . "';"); $shi_arm = mysql_result($q, 0); $shi_arm = explode('~', $shi_arm); $sta = round($shi_arm[$num] * 0.9); $shi_m = rand($sta, $shi_arm[$num]); $damage -= $shi_m; } } //////////////////////////// // bronja $arm = $armor[$num]; $damage -= $arm; if ($damage < 0) { $damage = 1; } $damage = round($damage); //////////////////////////// //////////////////////////// dalaem uron //////////////////// if (is_npc($to)) { $q = do_mysql("SELECT life FROM npc WHERE id_npc = '" . $tid . "';"); } else { if (is_player($to)) { $q = do_mysql("SELECT life FROM players WHERE id_player = '" . $tid . "';"); } } $life = mysql_result($q, 0); $life = explode('|', $life); if ($damage > $life[0]) { $damage = $life[0]; } $life[0] -= $damage; if ($mdamage) { $life[0] -= $mdamage; } if ($life[0] < 0) { $life[0] = 0; } $nlife = $life[0] . '|' . $life[1]; ///////////////////////EFFEKTY URONA NPC /////////////// if (isset($who_effect) && $who_effect) { if (rand(0, 100) < 33) { include_once 'modules/f_set_affected.php'; set_affected($to, $who_effect); } } /////////////////////// ITOGI //////////////////////////// if ($CR) { include_once 'modules/f_start_blood.php'; if (rand(0, 100) < 33) { start_blood($to); } $cz = '!!!'; } else { $cz = ''; } if (substr($to, 0, 2) == 'n.') { do_mysql("UPDATE npc SET life = '" . $nlife . "' WHERE id_npc = '" . $tid . "';"); } else { do_mysql("UPDATE players SET life = '" . $nlife . "' WHERE id_player = '" . $tid . "';"); } //include_once ('modules/f_add_b_journal.php'); if (substr($who, 0, 2) == 'n.') { $q = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $wid . "';"); $name = mysql_result($q, 0); } else { $q = do_mysql("SELECT name FROM players WHERE id_player = '" . $wid . "';"); $name = mysql_result($q, 0); } if (substr($to, 0, 2) == 'n.') { $q = do_mysql("SELECT name FROM npc WHERE id_npc = '" . $tid . "';"); $name2 = mysql_result($q, 0); } else { $q = do_mysql("SELECT name FROM players WHERE id_player = '" . $tid . "';"); $name2 = mysql_result($q, 0); } if ($mdamage) { $mt = '< -' . $mdamage . '(M)>'; } else { $mt = ''; } if (isset($shi_m)) { $st = '< +' . $shi_m . '(X)>'; } else { $st = ''; } // tip urona include_once 'modules/f_translit.php'; $type = translit($type); // chem napadali include_once 'modules/f_attacked_with.php'; $attw = attacked_with($weapon); if ($to_loc == $who_loc) { add_journal($name2 . ' - ' . $damage . '' . $cz . ' [D: ' . $arm . ']' . $st . '' . $mt . ' (' . $name . ', ' . $type . '. ' . $attw . ')', 'l.' . $to_loc); } else { add_journal($name2 . ' - ' . $damage . '' . $cz . ' [D: ' . $arm . ']' . $st . '' . $mt . ' (' . $name . ', ' . $type . '. ' . $attw . ')', 'l.' . $to_loc); add_journal($name2 . ' - ' . $damage . '' . $cz . ' [D: ' . $arm . ']' . $st . '' . $mt . ' (' . $name . ', ' . $type . '. ' . $attw . ')', 'l.' . $who_loc); } /////////////////////// OPYT ///////////////////////////// include_once 'modules/f_gain_battle_exp.php'; gain_battle_exp($who, $to, $damage + $mdamage); }
<?php // skript ispolqzovanija meditacii: $mp = rand(0, $p['skills'][4]) * $p['skills'][2]; $p['mana'][0] += $mp; if ($p['mana'][0] > $p['mana'][1]) { $p['mana'][0] = $p['mana'][1]; } $nmana = $p['mana'][0] . '|' . $p['mana'][1]; add_journal('мана +' . $mp . '!', $LOGIN); do_mysql("UPDATE players SET mana = '" . $nmana . "' WHERE id_player = '" . $p['id_player'] . "';");
<?php // pustoj svitok. pri prjamom ispolqzovanii ego mozhno pometitq pod portal, vtoroj raz portal sozdaetsja $q = do_mysql("SELECT on_take FROM items WHERE fullname = '" . $item . "';"); $loc = mysql_result($q, 0); if ($loc) { // sozdaem portal // maksimalqnyj navyk magii $max = -1; $sk = -1; for ($i = 22; $i < 30; $i++) { if ($p['skills'][$i] > $max) { $sk = $i; $max = $p['skills'][$sk]; } } if (rand(0, 100) <= $p['skills'][2] * 5 + $p['skills'][$sk] * 4 + $p['skills'][4] && $sk) { $t = ($p['skills'][2] + $p['skills'][$sk] + $p['skills'][4]) * 2; $itn = 'i.o.sta.portal~' . $loc . '~' . $p['location'] . '~' . $t; include_once 'modules/f_create_item.php'; $portal = create_item($itn); include_once 'modules/f_add_item_to_loc.php'; add_item_to_loc($p['location'], $portal); add_journal('Вы долго вглядывались в намалеванный пейзаж, пока тот четко не возник перед глазами.', $LOGIN); add_journal('<b>Вдруг воздух расступился, и появилась пустота. Через какое-то мгновенье пустота привратилась в пейзаж, отличный от укружающей вас местности.</b>', 'l.' . $p['location']); add_journal('<b>Вдруг воздух расступился, и появилась пустота. Через какое-то мгновенье пустота привратилась в пейзаж, отличный от укружающей вас местности.</b>', 'l.' . $loc); } else { include_once 'modules/f_delete_item.php'; delete_item($item); add_journal('Вы долго любовались намалеванным пейзажом, и решили что ему самое место в фондах эрмитажа. Тут свиток изщез.', $LOGIN); } }
$pts = rand(1, $maxp); $fs = 0; foreach ($fish as $key => $value) { if ($pts < $key) { $pts = $key; $fs = $value; break; } } // esli pojmali rybu if ($fs) { $fs = explode('|', $fs); // proverka na to chto vytashishq $maxcatch = $p['skills'][31] * 5 + $p['skills'][0] * 3 + $p['skills'][1] * 2; if (rand(0, $maxcatch) <= rand(0, $pts)) { add_journal('Пусто как в колодце :/', $LOGIN); } else { if (rand(0, $fs[1]) <= rand(0, $maxcatch)) { // lovim include_once 'modules/f_gain_item.php'; gain_item($fs[0], 1, $LOGIN); } else { // lomaem udochku include_once 'modules/f_delete_item.php'; delete_item($p['weapon']); add_journal('Ваша удочка не выдержала такой нагрузки. Рыба ее сломала!', $LOGIN); } } } else { add_journal('Пусто как в колодце :/', $LOGIN); }
function mag_def($off, $skill, $location, $def) { //$off = preg_replace ('/[^a-z0-9_\.]/i', '', $off); //$def = preg_replace ('/[^a-z0-9_\.]/i', '', $def); // berem shansy $id = is_player($off); if ($id) { include_once 'modules/f_get_pl_battle_har.php'; $off_har = get_pl_battle_har($off); $off_har[5] += $skill * 3; $off_har[6] += $skill * 3; $off_har[7] += $skill * 3; $q = do_mysql("SELECT life FROM players WHERE id_player = '" . $id . "';"); $off_life = mysql_result($q, 0); $off_life = explode('|', $off_life); $off_name = $off; } else { $id = is_npc($off); include_once 'modules/f_get_npc_battle_har.php'; $off_har = get_npc_battle_har($off); $q = do_mysql("SELECT life, name FROM npc WHERE id_npc = '" . $id . "';"); $off_a = mysql_fetch_assoc($q); $off_life = explode('|', $off_a['life']); $off_name = $off_a['name']; } $tid = is_player($def); if ($tid) { include_once 'modules/f_get_pl_battle_har.php'; $def_har = get_pl_battle_har($def); $q = do_mysql("SELECT life FROM players WHERE id_player = '" . $tid . "';"); $def_life = mysql_result($q, 0); $def_life = explode('|', $def_life); $def_name = $def; } else { $tid = is_npc($def); include_once 'modules/f_get_npc_battle_har.php'; $def_har = get_npc_battle_har($def); $q = do_mysql("SELECT life, name FROM npc WHERE id_npc = '" . $tid . "';"); $def_a = mysql_fetch_assoc($q); $def_life = explode('|', $def_a['life']); $def_name = $def_a['name']; } // teperq formiruem shansy proporcianalqno: include_once 'modules/f_get_chanses.php'; $ch = get_chanses($off_har, $off_life, $def_har, $def_life); // ch[0] eto napadajushij, ch[1] eto zashishjajushijsja // 5 - blok, 6 - sopr, 7 - uklon // vyberem sluchaino: $do = rand(5, 7); // teperq shans eto sdelatq: $proc = rand(0, 100); // esli vyjdet to sdelaem i vozvratim znachenie: if ($proc <= $ch[1][$do]) { // znachit taki sdelali if ($do == 5) { // blok: add_journal($def_name . ' блокировал магию ' . $off_name . '!', 'l.' . $location); return 1; } elseif ($do == 6) { // soprotivlenie: add_journal($def_name . ' сопротивился магии ' . $off_name . '!', 'l.' . $location); return 2; } else { // uklon: add_journal($def_name . ' уклонился от магии ' . $off_name . '!', 'l.' . $location); return 3; } } else { return 0; } }
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']); } } }
} // proverjaem nalichie include_once 'modules/f_has_item.php'; if (!has_item($scroll, $LOGIN)) { put_error('netu etogo svitka'); } if (!has_item($weapon, $LOGIN)) { put_error('netu etogo oruzhija'); } // berem nazvanija magii - $q = do_mysql("SELECT on_take FROM items WHERE fullname = '" . $scroll . "';"); $spell = mysql_result($q, 0); // berem effect $q = do_mysql("SELECT effect FROM magic WHERE fullname = '" . $spell . "';"); $eff = mysql_result($q, 0); if (!$eff) { put_g_error('этот свиток без эффекта'); } // dalee udaljaem svitok include_once 'modules/f_delete_item.php'; delete_item($scroll, $LOGIN); // kazhdyj +1 k navyku daet 10% include_once 'modules/f_check_cast.php'; if (check_cast($spell, $LOGIN)) { // obnovljaem u oruzhija effekt do_mysql("UPDATE items SET on_drop = '" . $eff . "' WHERE fullname = '" . $weapon . "';"); add_journal('эффект наложен!', $LOGIN); } else { add_journal('магия расеилась!', $LOGIN); } }
<?php // pokupka veshi iz marketa: $item = mysql_real_escape_string($_GET['buy']); $q = do_mysql("SELECT name, pprice, belongs FROM items WHERE fullname = '" . $item . "' AND is_in = 'mar';"); if (!mysql_num_rows($q)) { put_g_error('нет такой вещи'); } $it = mysql_fetch_assoc($q); if ($p['money'] < $it['pprice'] && $it['belongs'] != $LOGIN) { put_g_error('денег нехватает'); } // ne proverjatq, lezet li v rjukzak po vesu, lishq po slotam: $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('в рюгзаке нехватает места'); } // pokupaem: if ($it['belongs'] != $LOGIN) { do_mysql("UPDATE players SET money = money - " . $it['pprice'] . " WHERE id_player = '" . $p['id_player'] . "';"); do_mysql("UPDATE players SET money = money + " . $it['pprice'] . " WHERE login = '******'belongs'] . "';"); add_journal('<b>у вас купили ' . $it['name'] . '!</b>', $it['belongs']); } do_mysql("UPDATE items SET is_in = 'inv', belongs = '" . $LOGIN . "' WHERE fullname = '" . $item . "';"); $SYSMSG = 'вы купили ' . $it['name'] . ' за ' . $it['pprice'] . ' серебренных!';
} 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); if (rand(0, $price / 10) <= $p['skills'][30]) { // sozdaem svitok include_once 'modules/f_gain_item.php'; gain_item($rn, 1, $LOGIN); add_journal('вы скопировали свиток', $LOGIN); } else { add_journal('вы испортили пустой свиток', $LOGIN); } }
// teperq obnovim poslednee zaklinanie: include_once 'modules/f_upd_last_cast.php'; upd_last_cast($LOGIN, $spell); // skazhem slova: $q = do_mysql("SELECT words FROM magic WHERE fullname = '" . $spell . "';"); $words = mysql_result($q, 0); add_journal($p['name'] . ': ' . $words . '!', 'l.' . $p['location']); // potom proverka, vyshlo li kastanutq zakl - include_once 'modules/f_check_cast.php'; if (check_cast($spell, $LOGIN)) { // magija udalasq: // zapros na tip: $q = do_mysql("SELECT type FROM magic WHERE fullname = '" . $spell . "';"); $type = mysql_result($q, 0); if ($type == 'war') { include 'modules/sp/sp_cast_war.php'; } else { if ($type == 'cre') { include 'modules/sp/sp_cast_cre.php'; } else { if ($type == 'sum') { include 'modules/sp/sp_cast_sum.php'; } else { include 'modules/sp/sp_cast_hea.php'; } } } } else { add_journal('заклинание сорвалось!', 'l.' . $p['location']); } include 'modules/s_main.php';
include 'modules/sp/sp_rand_armor.php'; } else { if ($rnd < 48) { // kvestavaja veshq: include 'modules/sp/sp_rand_quest_item.php'; } else { if ($rnd < 59) { // wit include 'modules/sp/sp_rand_shield.php'; } else { if ($rnd < 79) { // eda include 'modules/sp/sp_rand_food.php'; } else { if ($rnd < 89) { // svitok: include 'modules/sp/sp_rand_scroll.php'; } else { // reagenty include 'modules/sp/sp_rand_rea.php'; } } } } } } add_journal('Свечка ярко вспыхнула и расстворилась в воздухе, оставив за собой едкий болотный запах.', $LOGIN); include_once 'modules/f_delete_item.php'; delete_item($item); include_once 'modules/f_gain_item.php'; gain_item($npc['drop2'], 1, $LOGIN);