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



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

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

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

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

Зомби-Класс:

Вы должны добавить встроенную функцию для 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 <zp_level_system>


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




Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
CHEATS-CS.RU - Топовый контент по CS 1.6