![[ZP]Как сделать проверку на уровень для [Оружия или Зомби]](https://cheats-cs.ru/uploads/posts/2018-04/1111111111111111.png)
![[ZP]Как сделать проверку на уровень для [Оружия или Зомби]](https://cheats-cs.ru/uploads/posts/2018-04/1111111111111111.png)
Зомби-Класс:
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 — Очевидно, тот уровень, который мы хотим установить для данного класса
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;
}
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 <zp_level_system>
