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;
}
Beispiel #2
0
	<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;
Beispiel #3
0
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");
Beispiel #5
0
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>';
Beispiel #6
0
 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();
     }
 }