function take_win() { global $char, $quest_id, $book_id; $new_clevel = get_new_level($char['clevel']); $get_exp = floor(0.1 * $new_clevel); setEXP($char['user_id'], $get_exp, $book_id + 7); $get_gp = mysqlresult(myquery("SELECT gp FROM bookgame_users WHERE user_id=" . $char['user_id'] . " AND bookgame={$book_id}"), 0, 0); setGP($char['user_id'], $get_gp, $book_id + 100); myquery("UPDATE game_users SET EXP=EXP+{$get_exp},GP=GP+{$get_gp} WHERE user_id=" . $char['user_id'] . ""); myquery("DELETE FROM bookgame_users WHERE user_id=" . $char['user_id'] . " AND bookgame={$book_id}"); myquery("UPDATE game_quest_users SET last_time=UNIX_TIMESTAMP(),finish=1 WHERE user_id=" . $char['user_id'] . " AND quest_id={$quest_id}"); exit_quest(); }
$mes6 = '<b>- Чувствуешь, ты стал мудрее?</b> - загадочно произносит Эйладан. <br/>Вы смотрите наверх в ожидании падающего луча просветления, но видите лишь крышу дома. Что ж, придётся поверить на слово... '; } elseif ($map == 5) { $mes6 = 'Ведьма протянула Вам пузырёк с какой-то странной жидкостью. Вы с готовностью выпиваете его... <br/><b>- А-а, стой! Это не оно! </b>- испуганно произносит Луимвена, держа в руках другой пузырёк. <br/>Видя Ваше ошалевшее лицо, Ведьма не могла не засмеяться: <br/><b>- Да не переживай ты так, будешь жить. Подумаешь, стал мудрее, а не сильнее. Разум ещё никому не вредил!</b> <br/>Поблагодарив Ведьму, Вы покидаете её жилище. А то мало ли что ещё… '; } echo $mes6 . '<br/><br/><b><center><font color="yellow">Твой опыт увеличился на ' . $nagrad . ' единиц</font></b><br/><br/> '; myquery("Update game_users_hunter Set times=times+1 Where map={$map} and user_id={$user_id}"); myquery("Update game_users Set EXP=EXP+{$nagrad} Where user_id={$user_id}"); setEXP($user_id, $nagrad, 13); } } elseif (isset($_GET['new_lev'])) { $test = myquery("Select times From game_users_hunter Where map={$map} and user_id={$user_id} and times>level"); if (mysql_num_rows($test) > 0) { list($times) = mysql_fetch_array($test); if ($map == 18) { $mes9 = '<b>Ну чтож! Дело за малым... </b>- хитрая улыбка Эйладана не позволяет быть спокойным. - <b> Тебе необходимо лишь решить проблему с парой-тройкой вредителей в Средиземье. Удачи, Друг, а за мной награда не постоит! '; } elseif ($map == 5) { $mes9 = 'Луимвена очаровательно улыбнулась. <br/><b>- Спасибо за отзывчивость, дорогой Герой. Необходимо наказать несколько вредителей на просторах Белерианда. Награда после выполнения задания, естественно, прилагается. Удачи!</b> '; } echo $mes9 . '<br/><br/><center><font color="lightgreen"><b>Тебе необходимо устранить ' . $times . ' ' . pluralForm($times, 'вредителя', 'вредителей', 'вредителей') . ' ' . $times . ' уровня</b></font><br/><br/>'; myquery("Update game_users_hunter Set times=0, level=level+1 Where map={$map} and user_id={$user_id}");
private function nachisl_exp_gp($user_id, $par, $user_win = 0) { //Вначале дадим умирающему полный набранный опыт за проведённый бой $check_dead_exp = myquery("SELECT SUM(exp) as dead_exp FROM combat_users_exp WHERE combat_id=" . $this->combat['combat_id'] . " AND exp>0 AND user_id='" . $user_id . "' AND prot_id<>'" . $user_id . "' HAVING dead_exp>0"); if (mysql_num_rows($check_dead_exp) > 0) { list($dead_exp) = mysql_fetch_array($check_dead_exp); save_exp($user_id, $dead_exp, 17); } //проверим, а не очередная ли это дуэль между одними участниками боя $koef = $this->get_combat_koef(); //теперь дадим опыт за умершего всем кто его бил и еще жив на данный момент $sel = myquery("SELECT * FROM combat_users_exp WHERE combat_id=" . $this->combat['combat_id'] . " AND prot_id={$user_id} AND (exp>0 OR gp>0)"); while ($userwin = mysql_fetch_array($sel)) { //Опыт тем, кто атаковал умершего if ($userwin['user_id'] != $userwin['prot_id']) { if ($koef < 1) { $userwin['exp'] = max(1, $userwin['exp'] * $koef); $userwin['gp'] = max(1, $userwin['gp'] * $koef); // if ($koef<0.5) myquery("UPDATE game_users SET win=win-1 WHERE user_id=".$user_win." "); } if ($this->all[$userwin['user_id']]['HP'] <= 0) { continue; } if ($this->all[$userwin['user_id']]['npc'] == 1) { continue; } if ($this->all[$userwin['user_id']]['side'] == $this->all[$user_id]['side']) { continue; } $last_userwin_id = $userwin['user_id']; $mes = ''; if ($userwin['exp'] > 0 or $userwin['gp'] > 0) { //для 3го типа квестов движка myquery("UPDATE quest_engine_users SET par2_value=par2_value+" . $userwin['exp'] . " WHERE user_id=" . $userwin['user_id'] . " AND quest_type=3"); $mes .= '<font color="#0080C0" size="2" face="Verdana"> ' . $this->all[$user_id]['name'] . ''; if ($par == 1) { if ($this->all[$user_id]['pol'] == 'female') { $mes .= ' сбежала с поля боя.'; $this->log[$userwin['user_id']][]['action'] = 53; $index = sizeof($this->log[$userwin['user_id']]) - 1; $this->log[$userwin['user_id']][$index]['na_kogo'] = $user_id; $this->log[$userwin['user_id']][$index]['na_kogo_name'] = $this->all[$user_id]['name']; } else { $mes .= ' сбежал с поля боя.'; $this->log[$userwin['user_id']][]['action'] = 54; $index = sizeof($this->log[$userwin['user_id']]) - 1; $this->log[$userwin['user_id']][$index]['na_kogo'] = $user_id; $this->log[$userwin['user_id']][$index]['na_kogo_name'] = $this->all[$user_id]['name']; } //при вылете по таймауту не вызывается calculate, поэтому обновляем БД здесь myquery("UPDATE game_users SET EXP=EXP+" . $userwin['exp'] . ",GP=GP+" . $userwin['gp'] . " WHERE user_id=" . $last_userwin_id . ""); } elseif ($par == 2) { if ($last_userwin_id == $user_win and $this->map['not_win'] == 0) { //запишем статистику if (function_exists("save_stat")) { save_stat($user_win, '', '', 7, '', '', $user_id, $userwin['gp'], $this->all[$user_win]['clan_id'], $userwin['exp'], $this->all[$user_id]['clevel'], $this->all[$user_win]['clevel']); } } if ($user_win == $userwin['user_id']) { $mes = '<font color=\\"#eeeeee\\">Ты ' . echo_sex('победил', 'победила', $this->all[$user_win]['pol']) . ' игрока <b>' . $this->all[$user_id]['name'] . '</b> и он'; if ($this->all[$user_id]['pol'] == 'female') { $mes .= 'а бежала'; } else { $mes .= ' бежал'; } $mes .= ' в неизвестном направлении!</font> '; } else { $mes = '<font color=\\"#eeeeee\\">Игрок <b>' . $this->all[$user_id]['name'] . '</b> '; if ($this->all[$user_id]['pol'] == 'female') { $mes .= 'была побеждена и бежала'; } else { $mes .= 'был побежден и бежал'; } $mes .= ' в неизвестном направлении!</font> '; } //и сообщим об этом в логах if ($this->all[$user_id]['pol'] == 'female') { $this->log[$userwin['user_id']][]['action'] = 50; $index = sizeof($this->log[$userwin['user_id']]) - 1; $this->log[$userwin['user_id']][$index]['na_kogo'] = $user_id; $this->log[$userwin['user_id']][$index]['na_kogo_name'] = $this->all[$user_id]['name']; } else { $this->log[$userwin['user_id']][]['action'] = 51; $index = sizeof($this->log[$userwin['user_id']]) - 1; $this->log[$userwin['user_id']][$index]['na_kogo'] = $user_id; $this->log[$userwin['user_id']][$index]['na_kogo_name'] = $this->all[$user_id]['name']; } $this->all[$userwin['user_id']]['exp'] += $userwin['exp']; $this->all[$userwin['user_id']]['gp'] += $userwin['gp']; } $this->log[$userwin['user_id']][]['action'] = 52; $index = sizeof($this->log[$userwin['user_id']]) - 1; $this->log[$userwin['user_id']][$index]['add_hp'] = $userwin['exp']; $this->log[$userwin['user_id']][$index]['procent'] = $userwin['gp']; setGP($userwin['user_id'], $userwin['gp'], 25); setEXP($userwin['user_id'], $userwin['exp'], 2); $da = getdate(); $userwin_clan = $this->all[$userwin['user_id']]['clan_id']; $user_exp_store = $userwin['exp']; $npc_exp_store = 0; myquery("INSERT INTO game_combats_exp (clan_id,year,month,npc_exp,user_exp) VALUES ({$userwin_clan}," . $da['year'] . "," . $da['mon'] . ",{$npc_exp_store},{$user_exp_store}) ON DUPLICATE KEY UPDATE npc_exp=npc_exp+{$npc_exp_store},user_exp=user_exp+{$user_exp_store}"); //и сообщим об этом в логах if ($userwin['exp'] > 0 or $userwin['gp'] > 0) { $mes .= ' Ты получаешь '; $mes .= '<b><font color="#FF0000">' . $userwin['exp'] . '</font></b> очков опыта и <b><font color="#FF0000">' . $userwin['gp'] . '</font></b> монет'; $mes .= '</font><br>'; $result = myquery("INSERT game_battles SET attacker_id=" . $userwin['user_id'] . ", target_id=0, map_name=" . $this->combat['map_name'] . ", map_xpos=" . $this->combat['map_xpos'] . ", map_ypos=" . $this->combat['map_ypos'] . ", contents='" . mysql_real_escape_string($mes) . "', post_time=" . time() . ""); } } } else { $this->nachisl_exp_gp_def($user_id, $userwin['exp'], $userwin['gp'], $koef); } } myquery("DELETE FROM combat_users_exp WHERE combat_id=" . $this->combat['combat_id'] . " AND prot_id={$user_id}"); }
function save_exp($user_id, $exp, $reason_id, $type = 1) { myquery("Update game_users Set EXP=EXP+'" . $exp . "' Where user_id='" . $user_id . "'"); if ($type == 2) { myquery("Update game_users_archive Set EXP=EXP+'" . $exp . "' Where user_id='" . $user_id . "'"); } setEXP($user_id, $exp, $reason_id); }
} $char = mysql_fetch_assoc($result); if (isset($_GET['teleport_map_name']) and isset($_GET['teleport_map_xpos']) and isset($_GET['teleport_map_ypos']) and ($char['clan_id'] == 1 or $user_id == 36051 or $user_id == 612 or domain_name == 'localhost')) { $up = myquery("UPDATE game_users_map SET map_name='" . $_GET['teleport_map_name'] . "', map_xpos='" . $_GET['teleport_map_xpos'] . "', map_ypos='" . $_GET['teleport_map_ypos'] . "' WHERE user_id='" . $char['user_id'] . "'"); $char['map_name'] = $_GET['teleport_map_name']; $char['map_xpos'] = $_GET['teleport_map_xpos']; $char['map_ypos'] = $_GET['teleport_map_ypos']; } $char['func_id'] = getFunc($user_id); $char['last_active'] = $user_time; //Если игрок в первый раз зашёл сюда за день, то выдадим ему 1% до максимального уровня if (isset($_SESSION['add_exp']) and $_SESSION['add_exp'] == 1) { unset($_SESSION['add_exp']); $add_exp = get_new_level($char['clevel']) / 100; myquery("UPDATE game_users SET EXP=EXP+'" . $add_exp . "' WHERE user_id={$user_id}"); setEXP($char['user_id'], $add_exp, 15); } //Обработаем игрока с отрицательным числом жизней if ($char['HP'] <= 0) { $char['HP'] == 1; myquery("UPDATE game_users SET HP=1 WHERE user_id={$user_id}"); } if (isset($_COOKIE['rpgsu_login']) and $char['user_name'] != $_COOKIE['rpgsu_login']) { destroy_all("4"); } elseif (isset($_COOKIE['rpgsu_login']) and md5($char['user_pass']) != $_COOKIE['rpgsu_pass']) { destroy_all("5"); } else { setcookie("rpgsu_login", $char['user_name'], 0, "/"); setcookie("rpgsu_pass", md5($char['user_pass']), 0, "/"); } if (!defined('domain_name')) {
myquery("UPDATE game_users_archive SET MP_MAX='{$MP_MAX}' WHERE user_id={$user_id2}"); $log .= '<br />Изменена мана макс<br />'; } if (isset($STM_MAX) and $STM_MAX != $STM_MAX_old) { myquery("UPDATE game_users SET STM_MAX='{$STM_MAX}' WHERE user_id={$user_id2}"); myquery("UPDATE game_users_archive SET STM_MAX='{$STM_MAX}' WHERE user_id={$user_id2}"); $log .= '<br />Изменена энергия макс<br />'; } if (isset($PR_MAX) and $PR_MAX != $PR_MAX_old) { myquery("UPDATE game_users SET PR_MAX='{$PR_MAX}' WHERE user_id={$user_id2}"); myquery("UPDATE game_users_archive SET PR_MAX='{$PR_MAX}' WHERE user_id={$user_id2}"); $log .= '<br />Изменена прана макс<br />'; } if (isset($EXP) and $EXP != $EXP_old) { myquery("UPDATE game_users SET EXP='{$EXP}' WHERE user_id={$user_id2}"); setEXP($user_id2, $EXP - $EXP_old, 4); myquery("UPDATE game_users_archive SET EXP='{$EXP}' WHERE user_id={$user_id2}"); $log .= '<br />Изменен опыт<br />'; } if (isset($GP) and $GP != $GP_old) { myquery("UPDATE game_users SET GP='{$GP}' WHERE user_id={$user_id2}"); setGP($user_id2, $GP - $GP_old, 20); myquery("UPDATE game_users_archive SET GP='{$GP}' WHERE user_id={$user_id2}"); $log .= '<br />Изменен монеты<br />'; } if (isset($STR) and $STR != $STR_old) { myquery("UPDATE game_users SET STR='{$STR}' WHERE user_id={$user_id2}"); myquery("UPDATE game_users_archive SET STR='{$STR}' WHERE user_id={$user_id2}"); $log .= '<br />Изменен сила<br />'; } if (isset($NTL) and $NTL != $NTL_old) {
if (mysql_num_rows($sel_item) > 0) { if (!isset($take_head)) { QuoteTable('open'); echo '<font size=2 color=#F0F0F0><div align="center">Поздравляю! Ты ' . echo_sex('убил', 'убила') . ' монстра "' . $npc['npc_name'] . '" и мы выполним наш контракт!<br>'; echo '<form action="" method="post"><input type="submit" name="take" value="Отдать часть тела монстра"><input type="hidden" name="take_head"><input name="town_id" type="hidden" value="' . $town . '">'; QuoteTable('close'); } else { QuoteTable('open'); $it = mysql_fetch_array($sel_item); $proc = $it['item_uselife'] / 100; $npc_exp = floor($npc_exp * $proc * (100 + $guild['guild_lev']) / 100); echo '<div align="center"><font size=2 color=#F0F0F0>Поздравляю! Вот твои "' . $npc_exp . '" очков опыта за убитого монстра!<br>'; echo '<br>*** <font size=2 color=#00FF00>Ты получаешь к текущему опыту <font color=#FF0000>' . $npc_exp . '</font> очков </font> ***'; myquery("UPDATE game_npc SET npc_quest_guild=0,npc_quest_end_time=0,npc_quest_id=0 WHERE npc_quest_guild={$town}"); myquery("UPDATE game_users SET EXP=EXP+{$npc_exp} WHERE user_id={$user_id}"); setEXP($user_id, $npc_exp, 5); myquery("DELETE FROM game_items WHERE item_for_quest={$quest_id}"); myquery("DELETE FROM game_quest_users WHERE quest_id={$quest_id}"); myquery("INSERT INTO game_npc_guild_log (user_id,user_name,time_end,vremya,exp) VALUES ({$user_id},'" . $char['name'] . "'," . time() . ",'" . date("d-m-Y H:i", time()) . "',{$npc_exp})"); //Выдача шкатулки $r = mt_rand(1, 100); $base_chance = 25; if ($r < $base_chance + $guild['guild_lev'] * 3) { $r = mt_rand(1, 100); if ($r <= 30) { $prize_name = "Железная шкатулка"; } elseif ($r <= 55) { $prize_name = "Медная шкатулка"; } elseif ($r <= 75) { $prize_name = "Серебряная шкатулка"; } elseif ($r <= 90) {
$present = myquery("DELETE FROM game_items WHERE user_id='" . $char['user_id'] . "' and item_id=1248"); } if ($not_npc == 0) { fill_maze_by_npc_for_user($gorod['to_map_name'], $user_id, $not_boss); } } list($maze_from, $exp_win, $gp_win, $maze_name) = mysql_fetch_array(myquery("SELECT maze,exp_maze,gp_maze,name FROM game_maps WHERE id=" . $char['map_name'] . "")); $already = mysql_result(myquery("SELECT COUNT(*) FROM game_users_maze WHERE user_id={$user_id} AND maze_id=" . $char['map_name'] . ""), 0, 0); if ($maze_from == 1 and $exit_lab == 1 and $already == 0) { myquery("UPDATE game_users SET maze_win=maze_win+1,EXP=EXP+{$exp_win},GP=GP+{$gp_win} WHERE user_id={$user_id}"); $theme = 'Игроком пройден лабиринт: ' . $maze_name; $message = 'Игрок [b]' . $char['name'] . '[/b] прошел лабиринт: [i]' . $maze_name . '[/i]. Время выхода из лабиринта: ' . date("d.m.Y H:i:s", time()) . '.'; myquery("INSERT INTO game_pm (komu, otkogo, theme, post, view, clan, time) VALUES ('28591', '{$user_id}', '{$theme}', '{$message}', '0','0'," . time() . ")"); myquery("INSERT INTO game_users_maze (user_id,maze_id) VALUES ({$user_id}," . $char['map_name'] . ")"); setGP($user_id, $gp_win, 28); setEXP($user_id, $exp_win, 3); } } $char['map_name'] = $gorod['to_map_name']; $char['map_xpos'] = $gorod['to_map_xpos']; $char['map_ypos'] = $gorod['to_map_ypos']; $char['GP'] = $char['GP'] - $gp; } else { echo 'Плата за проход <font color=ff0000><b>' . $gp . '</b></font> золотых! У тебя их НЕТ!'; } } } } } } }
setEXP($user_id, $get_exp, 6); if ($_SESSION['quest1_take_weapon'] == 1) { add_item_to_user(4); } if ($_SESSION['quest1_take_shlem'] == 1) { add_item_to_user(8); } $sost = 99; $finish = 1; } if ($_SESSION['quest1_exit'] == 50) { $_SESSION['quest1_get_gp'] = 90; myquery("UPDATE game_users SET HP=1,MP=1,STM=1 WHERE user_id={$user_id}"); myquery("UPDATE game_users SET EXP=EXP+{$get_exp},GP=GP+" . $_SESSION['quest1_get_gp'] . ",CW=CW+" . $_SESSION['quest1_get_gp'] * money_weight . " WHERE user_id={$user_id}"); setGP($user_id, $_SESSION['quest1_get_gp'], 59); setEXP($user_id, $get_exp, 6); add_item_to_user(8); $sost = 99; $finish = 1; } if ($_SESSION['quest1_exit'] == 1) { myquery("UPDATE game_users SET HP=1,MP=1,STM=1 WHERE user_id={$user_id}"); } unset_all(); myquery("INSERT INTO game_quest_users (user_id,quest_id,last_time,sost,finish) VALUES ({$user_id},1," . time() . ",{$sost},1) ON DUPLICATE KEY UPDATE sost={$sost},last_time=" . time() . ",finish=GREATEST({$finish},finish)"); ForceFunc($user_id, 5); setLocation("../act.php"); } if (isset($return)) { $_SESSION['quest1_step'] = 0; $_SESSION['quest1_state'] = '0';