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

Привет, наша адмнистрация публикует только пушечный контент, поставь лайк под постом ниже и напишите самый топовый комментарий, мы готовим материал только для тебя, любимый Гость.

Комментариев 7
  1. xUnicorn
    Для экстры не правильно сделанно, так как будут забираться аммо. Там где проверяется уровень нужно делать return ZP_PLUGIN_HANDLED чтобы предмет не выдался и не забрались бы аммо. Открывай мод и смотри 
    • 13 апреля 2018 20:03
  2. Dambas
    Dambas
    • 0
    xUnicorn,
    ой-ой, да, согласен. Исправил.
    • 13 апреля 2018 20:13
  3. Mort3m
    Mort3m
    • 0
    Статья на то, как сделать проверку на левел ?
    Интересно, будет ли статья бесполезнее ? 
    • 13 апреля 2018 20:45
  4. Gromozek

    Господи ,а что же такой "умный"сам не сделаешь статью ,которая по -твоей логике "нужная"?

    По мне Автор красавичк ! Ибо не все знаю ,что и как ...
    • 1 мая 2018 14:26
  5. kHRYSTAL
    Актуальна ли будет статья в 2к18, ведь сейчас практически просто так ставят лвл систему на сервера.
    • 5 мая 2018 22:48
  6. Kolea99
    Кто научит писать плагин на оружие с нуля
    • 10 мая 2018 18:24
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Сайт был обновлен, нажми CTRL+F5
Основа для вашей сборки
ReHLDS 3.7.0.698

ReHLDS (Reverse-engineered) - это новый шаг вперед, который дает второе дыхание нашим серверам. ReHLDS работает в 2 раза быстрей, чем HLDS.

AmxModx 5.2.7.1

AMXModX - это Metamod дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn

Reunion 0.1.92

Reunion является продолжением Dproto для ReHLDS. Это metamod плагин, который позволяет заходить 47/48 Non-Steam на сервер.

Revoice 0.1.0.34

Revoice - это Metamod plugin, который дает возможность общения голосовым чатом между non-steam и steam клиентами.

Metamod-r 1.3.128

Новый Metamod-r содержит огромное количество оптимизаций производительности и намного более чистый код. Ядро было написано с использованием JIT-компилятора.

Ultimate Unprecacher 1.1

Ultimate Unprecacher являет плагином для MetaMod, работает он по принципу отключение не нужных ресурсов на вашем сервере, тем самым вы сможете освободить места для ресурсов под ваши плагины, с помощью данного модуля можно избавиться от ошибки 512!

ReAuthCheck 0.1.6

ReAuthCheck - это Metamod плагин, который занимается проверкой ваших игроков на валидность, с помощью данного модуля для REHLDS вы сможете защитить свой сервер от ботов, которые постоянно спамят рекламу или просто забивают слот на сервере!

NetBufExtender (NBEX) 1.0

NetBufExtender или NBEX - это метамод-плагин, который расширяет "интернет-буфер": буферы сервера и клиента(гарантия не 100%). Расширяет до 64 кб. Это значит, что у игроков уменьшается вероятность быть кикнутыми с ошибкой "Reliable channel overflowed".

UserInfoNetOptimizer (UINO) 1.0

UINO — metamod-плагин, который позволяет удалять ненужные поля из userinfo(setinfo) когда движок передаёт его другим игрокам на сервере. Данная мера уменьшает объём передаваемых данных и немного сокращает шанс быть кикнутым с "Reliable channel overflowed".

Информация

Добро пожаловать на WIZARD-CS.RU!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт