Мониторинг и Раскрутка серверов CS 1.6

[ZP]Как сделать проверку на уровень для [Оружия или Зомби]

[ZP]Как сделать проверку на уровень для [Оружия или Зомби] для CS 1.6

В данной статье я расскажу вам парочку способов, как можно сделать проверку на уровень для [Оружия или для зомби класса]


Зомби-Класс:
Вы должны добавить встроенную функцию для zombie_plague40, а именно zp_user_infected_pre(id)
zp_user_infected_pre(id) - Функция, возникающая перед тем, как id становится Зомби.


public zp_user_infected_pre(id) 
{
    if (zp_get_user_next_class(id) == g_zclass)
    {
        if(zp_level(id) < X)
        {
            zp_set_user_zombie_class(id, g_zclass_classic)
            client_print(id, print_chat, "Вы не достигли X уровня!")
        }
        else
            zp_set_user_zombie_class(id, g_zclass)
    }
}

zp_get_user_next_class(id) - Функция, возвращающая значение, а именно, тот класс, который выбрал id в меню выбора классов зомби.
zp_set_user_zombie_class(id, g_zclass_classic) - Функция, которая насильно устанавливает, каким зомби-классом будет id перед заражением.
zp_level(id) - Функция, которая возвращает уровень id
g_zclass - Переменная, которая хранит тот класс, который мы хотим сделать за достижение определенного уровня
g_zclass_classic - Переменная, которая хранит тот класс, который мы будем заменять, если id не достиг определенного уровня + выводим сообщение
X - Очевидно, тот уровень, который мы хотим установить для данного класса

Если вы хотите, сделать несколько ограничений, то добавляйте их ниже в функции zp_user_infected_pre(id) перечисляя оператором else if.


public zp_user_infected_pre(id) 
{
    if (zp_get_user_next_class(id) == g_zclass_fast)
    {
        if(zp_level(id) < 3)
        {
            zp_set_user_zombie_class(id, g_zclass_classic)
            client_print(id, print_chat, "Вы не достигли 3 уровня!")
        }
        else
            zp_set_user_zombie_class(id, g_zclass_fast)
    }
    else if (zp_get_user_next_class(id) == g_zclass_heavy)
    {
        if(zp_level(id) < 5)
        {
            zp_set_user_zombie_class(id, g_zclass_classic)
            client_print(id, print_chat, "Вы не достигли 5 уровня!")
        }
        else
            zp_set_user_zombie_class(id, g_zclass_heavy)
    }
}

Оружие:
Здесь есть 2 способа. Один прямой, другой косвенный.
Прямой способ - перед выдачей. То есть сделать проверку, непосредственно в самой менюшке.
ps. Оружие нельзя выбрать/получить, если вы не достигли определенного уровня. Но само оружие не привязано к уровню.

Второй способ, более проверенный, и универсальный - косвенный. Устанавливается в самом плагине оружия, к которому вы хотите привязать уровень.

Для zombie_plague40:
Если мы хотим, чтобы в Extra-Items ( Магазин оружия ) была привязка по уровню, и какие то оружия мы могли покупать, только по достижению какого либо уровня, то нам необходимо изменить код:
Ищем в исходнике оружия функцию zp_extra_item_selected(id, itemid).
zp_extra_item_selected(id, itemid) - Функция, которая вызывается тогда, когда мы выбираем в меню Extra-Items какое либо оружие. В самом моде, проверяется соответствие цены и Аммо id, ну а мы сделаем привязку по уровню


public zp_extra_item_selected(id, itemid)
{
    if(itemid == g_itemid)
    {
        if(zp_level(id) >= X)
            give_itemid(id)
        else
        {
            client_print(id, print_chat, "Вы не достигли X уровня!")
            return ZP_PLUGIN_HANDLED;
        }
    }
    return PLUGIN_HANDLED;
}

g_itemid - Переменная, которая хранит оружие
give_itemid(id) - Функция, которая вызывает native для выдачи оружия.

Для других модов ( сложнее )
Перед выдачей в нативе, можно так же поставить проверку на уровень

public native_give_itemid(id)
{
    if(zp_level(id) >= X)
        give_itemid(id)
    else
    {
        client_print(id, print_chat, "Вы не достигли X уровня!")
        return PLUGIN_HANDLED;
    }
}

Так же, не забывайте, что в вашей lvl-системе может быть другой native-функция возвращающая уровень игрока. В наших примерах, это была zp_level(id).
ВАЖНО! В каждом плагине, в котороом вы делаете привязку по уровню, в начале должны прописать native функции уровня.


native zp_level(id)

Ну, или если вы используете мою lvl-систему, то инклуд

#include 



Автор статьи - Надежда (Dambas) Грайма

Теги:

ZP статье проверку на уровень

Опубликовал
Сборки CS 1.6
Рейтинг
Просмотры
150 раз.
Скачан
2 раз.

Отзывы