[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) Грайма

Hello, our administration publishes only cannon content, put like under the post below and write the best comment, we are preparing material just for you, Darling Гость.

Comments 7
Информация
Посетители, находящиеся в группе Guests, не могут оставлять комментарии к данной публикации.
Foundation for your build
ReHLDS 3.4.0.654

ReHLDS (Reverse-engineered) - this is a new step forward that gives a second wind to our servers. ReHLDS works 2 times faster than HLDS.

AmxModx 1.8.3

AMXModX is a Metamod add-on that allows you to create new modifications for Half-Life in the Pawn language

Reunion 0.1.92

Reunion is a continuation of Dproto for ReHLDS. This is a metamod plugin that allows you to log into the 47/48 Non-Steam server.

Revoice 0.1.0.32

Revoice is a Metamod plugin that allows voice chat between non-steam and steam clients.

Metamod-r 1.3.0.127

The new Metamod-r contains a huge number of performance optimizations and much cleaner code. The kernel was written using a JIT compiler.

Ultimate Unprecacher 1.1

Ultimate Unprecacher is a plugin for MetaMod, it works on the principle of disabling unnecessary resources on your server, thereby you can free up space for resources for your plugins, using this module you can get rid of error 512!

ReAuthCheck 0.1.6

ReAuthCheck - this is a Metamod plugin that checks your players for validity, with this module for REHLDS you can protect your server from bots that constantly spam ads or simply clog up a slot on the server!

NetBufExtender (NBEX) 1.0

NetBufExtender or NBEX - This is a metamod plugin that expands the пїЅInternet bufferпїЅ: server and client buffers (not 100% guaranteed). Expands up to 64 kb. This means that players are less likely to be kicked with the error "Reliable channel overflowed"".

UserInfoNetOptimizer (UINO) 1.0

UINO пїЅ metamod plugin that allows you to remove unnecessary fields from userinfo(setinfo) when the engine passes it to other players on the server. This measure reduces the amount of data transferred and slightly reduces the chance of being kicked with "Reliable channel overflowed".

Information

Welcome to TB-TEAM.COM!

Welcome To Our New Website For CS1.6 Resources!.
Register
Create your own account!

Register Now!
Login
Already registered? Come on, log in quickly!

Login to the site