function check_attack($char, $player, $type = 0, $map = 0) { global $user_id; $check = 'Бой невозможен'; if (close_combat == 1 and $user_id != 612) { return 'Все бои закрыты'; } /*if ($map==0) */ $map = mysql_fetch_array(myquery("SELECT * FROM game_maps WHERE id='" . $char['map_name'] . "'")); if (clans_war == 0 or $player['user_id'] == 612 or $map['dolina'] == 0) { $est_plash_monaha_char = mysql_result(myquery("SELECT COUNT(*) FROM game_items WHERE user_id=" . $char['user_id'] . " AND priznak=0 AND used=5 AND item_id=" . plash_monaha . ""), 0, 0); if ($est_plash_monaha_char == 1) { return 'Ты отказываешься от боя'; } $est_plash_monaha_player = mysql_result(myquery("SELECT COUNT(*) FROM game_items WHERE user_id=" . $player['user_id'] . " AND priznak=0 AND used=5 AND item_id=" . plash_monaha . ""), 0, 0); if ($est_plash_monaha_player == 1) { return 'Противник отказывается от боя'; } } if (!isset($map['maps_name'])) { $map['maps_name'] = $map['name']; } if ($map['boy_type1'] == 0 and $map['boy_type2'] == 0 and $map['boy_type3'] == 0 and $map['boy_type4'] == 0 and $map['boy_type5'] == 0 and $map['boy_type6'] == 0 and $map['boy_type7'] == 0) { return 'Запрещены все бои на карте'; } if ($type >= 1 and $type <= 7) { if ($type == 1 and $map['boy_type1'] != 1) { return "Данный тип боя на этой карте запрещен"; } elseif ($type == 2 and $map['boy_type2'] != 1) { return "Данный тип боя на этой карте запрещен"; } elseif ($type == 3 and $map['boy_type3'] != 1) { return "Данный тип боя на этой карте запрещен"; } elseif ($type == 4 and $map['boy_type4'] != 1) { return "Данный тип боя на этой карте запрещен"; } elseif ($type == 5 and $map['boy_type5'] != 1) { return "Данный тип боя на этой карте запрещен"; } elseif ($type == 6 and $map['boy_type6'] != 1) { return "Данный тип боя на этой карте запрещен"; } elseif ($type == 7 and $map['boy_type7'] != 1) { return "Данный тип боя на этой карте запрещен"; } //проверка в зависимости от типа боя $str_check_type = check_attack_type($char, $player, $type, 0); if ($str_check_type != 1) { return $str_check_type; } elseif ($map['dolina'] == 0 and $map['maps_name'] != 'Гильдия новичков') { $str_check_type = check_attack_type($char, $player, $type); if ($str_check_type != 1) { return $str_check_type; } } } list($host1, $time1) = mysql_fetch_array(myquery("SELECT host,last_active FROM game_users_active WHERE user_id='" . $char['user_id'] . "'")); list($host2, $time2) = mysql_fetch_array(myquery("SELECT host,last_active FROM game_users_active WHERE user_id='" . $player['user_id'] . "'")); $player_func = getFunc($player['user_id']); if (domain_name == 'localhost') { $host1 = 1; $host2 = 2; } if ($player['user_id'] == $char['user_id']) { //нельзя напасть на себя return 'Нельзя напасть на самого себя'; } elseif (time() - $time2 > 300) { //противник не в игре return 'Противника нет в игре'; } elseif ($host1 == $host2) { //нельзя напасть на мульта return 'Нельзя напасть на мульта'; } elseif ($player['clan_id'] == $char['clan_id'] and $char['clan_id'] != 0 and $player['clan_id'] != 0 and $map['dolina'] != 1) { //нельзя напасть на своего соклановца, но можно в Долине Смерти return 'Нельзя нападать на соклановца (кроме Долины Смерти)'; } elseif ($player_func == 1) { return 'Игрок занят в бою'; } elseif ($player_func == 2) { return 'Игрок занят в крафте'; } elseif ($player_func == 3) { return 'Игрок в магазине'; } elseif ($player_func == 4) { return 'Игрок занят в Двух Башнях'; } elseif ($player_func == 10) { return 'Игрок проходит квест'; } elseif ($player_func == 9) { return 'Игрок в городе'; } elseif ($player_func == 6) { return 'Игрок находится в зале палантиров'; } elseif ($player_func == 7) { return 'Игрок находится в дневниках'; } elseif (get_delay_reason_id($user_id) == 32) { return 'Игрок находится в личном землевладении'; } elseif (($char['clan_id'] == 0 or $player['clan_id'] == 0) and $player['HP'] < $player['HP_MAX'] * 0.75) { //уберем шакальство return 'Шакальство не пройдет!'; } elseif ($player['HP'] < $player['HP_MAX'] * 0.2) { //уберем шакальство 2 return 'Шакальство не пройдет!'; } elseif ($player['HP'] == 0 or $char['HP'] == 0) { //нельзя нападать мертвым или на мертвого return 'Кто-то из вас двоих мертв!'; } if (clans_war == 0 or $map['dolina'] == 0 and $map['arena'] == 0) { if ($map['dolina'] == 1) { return 'В Долине Смерти бои еще запрещены!'; } } if ($map['dolina'] == 1) { //все ограничения на атаку сняты $check = 1; } elseif ($map['maps_name'] == 'Гильдия новичков') { //В Гильдии Новичков можно нападать только на ровесников и уровнем выше независимо от типа боя if ($player['clevel'] - 3 <= $char['clevel'] and $char['clevel'] <= $player['clevel'] and $player['clevel'] != '0') { $check = 1; } else { return 'Ты не подходишь по уровню противника!'; } } else { $est_kamikadze = mysql_result(myquery("SELECT COUNT(*) FROM game_items WHERE user_id=" . $char['user_id'] . " AND priznak=0 AND used=6 AND item_id=" . povyazka_kamikadze . ""), 0, 0); if ($est_kamikadze && $char['clevel'] <= $player['clevel']) { $check = 1; } else { $max_level = 3; $add = floor(($char['clevel'] - 5) / 5); $max_level += $add; $min_level = 2; if ($player['clevel'] - $max_level <= $char['clevel'] and $char['clevel'] <= $player['clevel'] + $min_level and $player['clevel'] != 0) { $check = 1; } else { return 'Ты не подходишь по уровню противника!'; } } } return $check; }
<div id="pagecontent"> <ul class="tabset_tabs"> <li class="firstchild"><a href="#invent" class="preActive active">Инвентарь</a></li><li><a class="preActive postActive" href="#skills">Умения</a></li> </ul>'; //------------------2.1 Инвентарь персонажа--------------------------------- echo '<div id="invent" class="tabset_content tabset_content_active">'; echo '<img src="http://' . img_domain . '/nav/xar.gif" align=right><br>'; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo '<table border="0"><tr><td>'; echo '<SCRIPT language=javascript src="' . $js_dir . 'js/info.js"></SCRIPT><DIV id=hint style="Z-INDEX: 100; LEFT: 0px; VISIBILITY: hidden; POSITION: absolute; TOP: 0px"></DIV>'; echo ' <div id="PopupDiv" style="position:absolute; visibility:hide;"></div> <script language="JavaScript"> var closeb=\'<img src="http://' . img_domain . '/close.gif" border=0>\'; </script><script language="JavaScript" src="' . $js_dir . 'js/popup.js"></script>'; if (getFunc($user_id) == 2) { $from_craft = true; } //Активация защиты от нападений if (isset($_POST['get_hide']) and isset($_POST['kol_charges']) and is_numeric($_POST['kol_charges']) and $_POST['kol_charges'] <= $char['hide_charges']) { $kol_charges = max(0, (int) $_POST['kol_charges']); if ($kol_charges > 0) { $time_hide = $kol_charges * 6 * 60; $add_effect = 0; $check_hide = myquery("SELECT time_end FROM game_obelisk_users WHERE user_id = " . $user_id . " and type=6 "); if (mysql_num_rows($check_hide) > 0) { list($time) = mysql_fetch_array($check_hide); if ($time < time()) { myquery("DELETE FROM game_obelisk_users WHERE user_id = " . $user_id . " and type=6"); } else { $add_effect = 1;
function checkFunc($user_id, $func_id, $only_check = 0) { //Возвращает 0 если надо сделать редирект // Заглушка для чата if ($func_id == 8) { return 1; } // Заглушка для view if ($func_id == 11) { return 1; } // Если код без MODULE_ID if ($func_id == "MODULE_ID") { return 1; } $old_func_id = getFunc($user_id); // В пределах одного модуля if ($old_func_id == $func_id) { return 1; } // в Бой можно переходить только из Игры if ($func_id == 1 and $old_func_id != 5) { return 0; } // Разрешаем из Боя -> Боевой чат, но не обновляем func if ($func_id == 12 and $old_func_id == 1) { return 1; } // Разрешаем из Города -> Крафт, но не обновляем func if ($func_id == 2 and $old_func_id == 9) { return 1; } // Разрешаем: Магазин <-> Игра // Магазин -> Форум и Магазин -> Дневник if ($func_id == 5 and $old_func_id == 3 or $func_id == 3 and $old_func_id == 5 or $func_id == 6 and $old_func_id == 3 or $func_id == 7 and $old_func_id == 3) { return 1; } // Разрешаем из Крафта и Города и Аркомага и Боя(!) -> Форум и Дневник, но не обновляем func // Так как будет баг - Крафт -> Форум -> Игра - и как следствие можно будет бегать if (($func_id == 6 or $func_id == 7) and ($old_func_id == 2 or $old_func_id == 9 or $old_func_id == 10 or $old_func_id == 4)) { return 1; } // Форум и Дневник --> Игра if (($old_func_id == 6 or $old_func_id == 7 or $old_func_id == 9) and $func_id == 5) { if ($only_check == 0) { setFunc($user_id, $func_id); } return 1; } // Форум и Дневник и Город --> Дневник и Форум и Город if (($old_func_id == 6 or $old_func_id == 7) and ($func_id == 6 or $func_id == 7 or $func_id == 9)) { if ($only_check == 0) { setFunc($user_id, $func_id); } return 1; } // Игра --> ... // В состояние Чат и Боевой Чат мы никогда не должны попасть if ($old_func_id == 5 and ($func_id != 8 and $func_id != 12)) { if ($only_check == 0) { setFunc($user_id, $func_id); } return 1; } // Остальным ничего нельзя return 0; }
$user_data = mysql_fetch_array(myquery("SELECT * FROM game_users_data WHERE user_id=" . $user_id . " ")); $IP = $user_data['work_IP']; $pol = $user_data['sex']; $nav_geksa_view = $user_data['geksa_view'] + 1; $result = myquery("SELECT view_active_users.*, game_users_map.map_name, game_users_map.map_xpos,game_users_map.map_ypos FROM view_active_users,game_users_map WHERE game_users_map.user_id=view_active_users.user_id AND view_active_users.user_id={$user_id}"); if ($result == false or mysql_num_rows($result) == 0) { $result = myquery("SELECT game_users.*, game_users_map.map_name, game_users_map.map_xpos,game_users_map.map_ypos,game_users_active_delay.delay,game_users_active_delay.delay_reason FROM game_users,game_users_map,game_users_active_delay WHERE game_users.user_id=game_users_active_delay.user_id AND game_users_map.user_id=game_users.user_id AND game_users.user_id={$user_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");
require_once '../inc/lib_session.inc.php'; require_once '../inc/craft/craft.inc.php'; $gp = 5; if (function_exists("start_debug")) { start_debug(); } ?> <html> <head> <title>Алхимическая Лаборатория</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <style type="text/css">@import url("../style/global.css");</style> </head> <body> <?php $user_func = getFunc($user_id); $from_house = false; if (isset($_GET['house']) and get_delay_reason_id($user_id) == 32) { $from_house = true; $gp = 0; } $id_alchemist = "15,16"; $questsel = myquery("SELECT * FROM game_quest WHERE map_name=" . $char['map_name'] . " AND map_xpos=" . $char['map_xpos'] . " AND map_ypos=" . $char['map_ypos'] . " AND min_clevel<=" . $char['clevel'] . " AND max_clevel>=" . $char['clevel'] . " AND id IN ({$id_alchemist})"); if (mysql_num_rows($questsel) or $from_house) { if ($from_house == false) { echo '<span style="z-index:-100;position:absolute;left:0%;top:0%;"><img src="http://' . img_domain . '/quest/lab_left.jpg"></span>'; echo '<span style="z-index:-100;position:absolute;right:0%;top:0%;"><img src="http://' . img_domain . '/quest/lab_right.jpg"></span>'; } echo '<br><center><font size=1 face=verdana>'; //echo 'Извините, Лаборатория временно закрыта на восстановительные работы после недавно прошедшего по Средиземью Шторма Ужаса!'; //echo '<br><br><br><a href="../act.php" target="game">Выйти из Лаборатории</a><br>';
public function down($id = 0) { if ($id > 0) { $this->init_item($id); } if ($this->item['priznak'] == 0 and $this->item['user_id'] == $this->char['user_id'] and $this->item['used'] != 0 and (getFunc($this->item['user_id']) != 2 or $this->fact['type'] != 24 or $this->item['item_uselife'] <= 0)) { $this->item_down(); } }