Плагины для кс иммунитет

Статус пользователя

iphone532776

2.2.2016, 18:16

Сообщение
#1

Стаж: 5 лет 6 месяцев

Сообщений: 66

Благодарностей: 3

Полезность:

Добрый вечер. У меня вопрос по поводу администрирования на сервере. Как сделать так что бы я (Гл.Админ) мог кикать, банить итд других админов. Но при этом что бы обычные админы не могли друг друга банить кикать итд… ???

         Просмотр профиля    Отправить личное сообщение

Цитировать сообщение

Статус пользователя

energydance

2.2.2016, 18:22

Сообщение
#2

Стаж: 5 лет 1 месяц

Сообщений: 2633

Благодарностей: 675

Полезность: 206

Цитата(iphone532776 @ 2.2.2016, 19:11)

Добрый вечер. У меня вопрос по поводу администрирования на сервере. Как сделать так что бы я (Гл.Админ) мог кикать, банить итд других админов. Но при этом что бы обычные админы не могли друг друга банить кикать итд… ???

Убери у всех админов флаг RCON

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Статус пользователя

iphone532776

2.2.2016, 18:25

Сообщение
#3

Стаж: 5 лет 6 месяцев

Сообщений: 66

Благодарностей: 3

Полезность:

Плагины для кс иммунитет
energydance, как это сделать, и где оно находится?

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Плагины для кс иммунитет

meloman

2.2.2016, 18:28

Сообщение
#4

Стаж: 4 года 9 месяцев

Сообщений: 746

Благодарностей: 373

Полезность: 628

         Просмотр профиля    Отправить личное сообщение

Поблагодарили 1 раз

   +

Цитировать сообщение

Статус пользователя

energydance

2.2.2016, 18:32

Сообщение
#5

Стаж: 5 лет 1 месяц

Сообщений: 2633

Благодарностей: 675

Полезность: 206

Плагины для кс иммунитет
MeJIoMaH,

не нужно людей вводить в заблуждение

Каждый раз одни и те же слова , обновись ))

         Просмотр профиля    Отправить личное сообщение

Поблагодарили 1 раз

   +

Цитировать сообщение

Плагины для кс иммунитет

meloman

2.2.2016, 18:35

Сообщение
#6

Стаж: 4 года 9 месяцев

Сообщений: 746

Благодарностей: 373

Полезность: 628

Плагины для кс иммунитет
energydance, я что то не припомню когда я такое говорил =) раз такое дело обновлю систему в головном мозге

         Просмотр профиля    Отправить личное сообщение

Поблагодарили 1 раз

   +

Цитировать сообщение

Статус пользователя

iphone532776

2.2.2016, 18:36

Сообщение
#7

Стаж: 5 лет 6 месяцев

Сообщений: 66

Благодарностей: 3

Полезность:

Плагины для кс иммунитет
MeJIoMaH, думал что просто можно настроить так как мне нужно. Спасибо.
И еще вопрос сейчас админы с флагом а могут банить, кикать друг друга. как сделать что бы не могли ???

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Статус пользователя

georgeml

2.2.2016, 18:36

Сообщение
#8

Стаж: 6 лет 5 месяцев

Сообщений: 1442

Благодарностей: 428

Полезность: 423

Плагины для кс иммунитет
MeJIoMaH, на вопрос «Как сделать» так и нет ответа. Одной лишь установки плагина недостаточно
ЧТД

Отредактировал: georgeml, — 2.2.2016, 18:37

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Плагины для кс иммунитет

meloman

2.2.2016, 18:41

Сообщение
#9

Стаж: 4 года 9 месяцев

Сообщений: 746

Благодарностей: 373

Полезность: 628

Плагины для кс иммунитет
georgeml, я вас не совсем понял?

Цитата

Как сделать так что бы я (Гл.Админ) мог кикать, банить итд других админов. Но при этом что бы обычные админы не могли друг друга банить кикать итд… ???

я скинул ссылку где уже выложили готовый переделанный плагин разве этого не достаточно?

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Статус пользователя

georgeml

2.2.2016, 18:46

Сообщение
#10

Стаж: 6 лет 5 месяцев

Сообщений: 1442

Благодарностей: 428

Полезность: 423

Плагины для кс иммунитет
MeJIoMaH, конечно нет
Вот подтверждение:

Цитата

И еще вопрос сейчас админы с флагом а могут банить, кикать друг друга. как сделать что бы не могли ???

         Просмотр профиля    Отправить личное сообщение

Поблагодарили 1 раз

   +

Цитировать сообщение

Плагины для кс иммунитет

meloman

2.2.2016, 18:48

Сообщение
#11

Стаж: 4 года 9 месяцев

Сообщений: 746

Благодарностей: 373

Полезность: 628

Цитата(iphone532776 @ 2.2.2016, 21:32)

Плагины для кс иммунитет
MeJIoMaH, думал что просто можно настроить так как мне нужно. Спасибо.
И еще вопрос сейчас админы с флагом а могут банить, кикать друг друга. как сделать что бы не могли ???

значит вы что то не так сделали что вы меняли говорите =)

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Статус пользователя

georgeml

2.2.2016, 18:50

Сообщение
#12

Стаж: 6 лет 5 месяцев

Сообщений: 1442

Благодарностей: 428

Полезность: 423

Плагины для кс иммунитет
iphone532776, Уберите у админов флаг «l», у себя — оставьте

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Плагины для кс иммунитет

meloman

2.2.2016, 18:52

Сообщение
#13

Стаж: 4 года 9 месяцев

Сообщений: 746

Благодарностей: 373

Полезность: 628

Цитата(iphone532776 @ 2.2.2016, 21:32)

Плагины для кс иммунитет
MeJIoMaH, думал что просто можно настроить так как мне нужно. Спасибо.
И еще вопрос сейчас админы с флагом а могут банить, кикать друг друга. как сделать что бы не могли ???

и да, это у вас после установки того плагина?

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Статус пользователя

iphone532776

2.2.2016, 18:55

Сообщение
#14

Стаж: 5 лет 6 месяцев

Сообщений: 66

Благодарностей: 3

Полезность:

Плагины для кс иммунитет
MeJIoMaH, нет, это без плагина

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Плагины для кс иммунитет

meloman

2.2.2016, 18:57

Сообщение
#15

Стаж: 4 года 9 месяцев

Сообщений: 746

Благодарностей: 373

Полезность: 628

Цитата(iphone532776 @ 2.2.2016, 21:50)

Плагины для кс иммунитет
MeJIoMaH, нет, это без плагина

ну так говорите по подробнее что вы ставили что редактировали

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

Статус пользователя

qvadro

2.2.2016, 19:09

Сообщение
#16

Стаж: 10 лет

Сообщений: 358

Благодарностей: 147

Полезность: 579

Плагины для кс иммунитет
iphone532776,

Код:

/*
CMDTARGET_NO_BOTS — игнорирование если игрок бот
CMDTARGET_ALLOW_SELF — наказание самого себя
CMDTARGET_OBEY_IMMUNITY — игнорирование, есть флаг иммунитета
*/

Вопрос по флагами администратора (Пост #888731)

вынес линк из под спойлера чтоыб читабельным cnfk

Отредактировал: qvadro, — 2.2.2016, 19:19

         Просмотр профиля    Отправить личное сообщение

   +

Цитировать сообщение

пользователей и 2 гостей читают эту тему:

Источник

Мастерская

Создание сервера

В категории материалов: 1798
Показано материалов: 151-200
Страницы: « 1 2 3 4 5 6 … 35 36 »

Плагины для CS 1.6

AMXX плагины — специальные скрипты, написанные для AMXX мода, главным образом необходимые для полноценного функционирования сервера. Представленные плагины AMXX подразделяются на 2 типа — .sma (исходный код скрипта) и, конечно, сам AMXX — плагин, созданный из .sma файла (эти файлы возможно изменять благодаря обычному блокноту). При установке плагины для сервера нужно в обязательном порядке прописать в файле cstrikeaddonsamxmodxconfigsplugins.ini (с помощью блокнота), в противном случае они не заработают.

Сортировать по:
Дате ·
Комментариям ·
Загрузкам ·
Просмотрам

Timeprojector

Описание плагина:
Timeprojector очень простой и понятный плагин для игрового сервера. С его помощью можно вывести информацию о том какое количество времени осталось играть на данной мапе и какойц будет следующая карта. Причем плагин совершенно не грузит сервер.

Train Knife Kill

Описание: Данный плагин предназначен для Knife серверов.Многие игроки убивают друг друга с помощью методики поезда то есть друг за другом идут по мостику и убивают с помощью ножа Train Knife Kill добавляет эффект когда такой методикой будут убиты игроки звук ,сообщение, и картинку поезда в углу экрана при убийстве противника.

Low health breathe

Описание: Очень простой плагин для Counter Strike 1.6 , который добавит на ваш сервер очень интересное дополнение, когда у игрока становится мало хп он начинает издавать звук а именно тяжелое дыхание раненого игрока.

NewNades

Этот плагин предлагает последнему живому террористу меню с выбором получать гранату или нет (как на скрине вверху). В случае если у террориста уже есть гранаты, то ему новые не даст. А если у террориста не хватает 1 флешки, а остальные гранаты есть, то ему добавит 1 флешку.

Headcrab player

При помощи этого плагина у игрока появится возможность превратиться в хэдкраба. У хэдкраба 200hp, отнимается всё огнестрельное оружие без возможности поднять его и при превращение в него у игрока отнимаются все деньги.

Screen Shot Menu

Данный плагин предназначен для игроков , а точнее для админов с иммунитетом, спешу напомнить что иммунитет это флаг «a». Очень полезный плагин для сервера кс 1.6 к примеру вы подозреваете постоянного игрока в использовании wallhack или других читов, но теперь с помощью этого плагина вы сможете это проверить. Достаточно открыть меню плагина, выбрать нужного вам игрока и сделать скриншот его экрана. После достаточно попросить у игрока скрин для подтверждения.

Мод акулы [Shark mod] New by NeXuS__

Описание мода:
Все игроки, за исключением одного, будут переброшены за сторону Counter-Terrorist’ов. Случайно мод перебросит одного из игроков за сторону Terrorist’ов, он то и будет так называемой «Акулой». У данного игрока будет ряд особенностей и преимуществ:Так-же подойдет для JailBreak серверов.

Новый resetscore с 3-мя функциями

Это обновленный плагин Reset Score уже с 3-мя функциями.
Особенно полезный плагин для развлекательных серверов Counter-Strike 1.6. Для такого мелкого плагина, сделали довольно много обновлений, а ниже Вы сможете увидеть что именно нового…

Что нового:
У плагина теперь три функции:
1. Обнулить только убийства — say /rk
2. Обнулить только смерти — say /rd
3. Обнулить счет — say /rs

Лучший игрок раунда

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

Statsx Shell v.2

Statsx Shell v.2 — Красивое меню статистики в качестве дополнения к плагину stats shell версии 2.0 , в меню входят такие пункты как: 10-ка лучших , худших и сорви голова игроков , просмотр вашей позиции в статистике , просмотр лучших по нанесению урона и просмотр статистики сервера по дням.

Cpanel v1.0 (меню управления сервером)

Cpanel — данный плагин добавляет панель управления для гл.администратора / модератора / или другому человеку с флагом ADMIN_RCON . Данное меню очень полезное и содержит одни из наилучших функций для управлением сервера. Что облегчает заместителям администратора без доступа к хостингу / выделенному серверу полноценно управлять сервером.

О Радио:

1. Круглосуточный on-line (24/7)
2. Танцевальная музыка
3. Огромное количество эфиров (Новости Игр, Викторины, Приветы и Поздравления, многое др.)

Ваш игрок, сможет не только слушать радио, но и передавать приветы своим друзьям, заказывать треки и проводить более длительную игру на сервере!

О Радио:
1. Круглосуточный on-line (24/7)
2. Танцевальная музыка
3. Огромное количество эфиров (Новости Игр, Викторины, Приветы и Поздравления, многое др.)

Ваш игрок, сможет не только слушать радио, но и передавать приветы своим друзьям, заказывать треки и проводить более длительную игру на сервере!

VAMPIR+DHUD NEW

VAMPIR+DHUD NEW — Плагин отображает кол-во убийств и выдает HP.
С каждым новым фрагом кол-во HP увеличивается! Например за первое убийство в голову дается 20HP за второе 21HP и т.д. Такая же тенденция и с убийством не в голову за первое дает 10 за второе 11 и т.д. Исходник в архиве!
Автор -> StudenT
Автор идеи -> _No_Comments_ (То есть я)

Статистика

Источник

#include < amxmodx >
#include < reapi >

#if AMXX_VERSION_NUM < 183
#include < colorchat >

#define client_disconnected client_disconnect
#define MAX_PLAYERS 32
#endif

#define IsPlayer(%0) (0 < %0 < 33)

//■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■//
#define AWP_ONLINE //Закоментируйте, если не нужен функционал отключения авп при низком онлайне
#define AWP_LIMIT //Закоментируйте, если не нужен функционал ограничения авп по командам
#define AWP_ROUND_LIMIT //Закоментируйте, если не нужен функционал ограничения авп по раундам

// ^4 — зелёный | ^3 — цвет тимы (КТ — синий | Т — красный | SPEC — серый) | ^1 — жёлтый
#define MSG_PREFIX «^1[^4AWP_ONLINE^1]»
#define MSG_LOWONLINE «У вас отобрано^4 AWP^1. Причина:^3 Низкий онлайн игроков»
#define MSG_LIMIT «У вас отобрано^4 AWP^1. Причина:^3 Превышен лимит на команду»
#define MSG_ROUND «%s У вас отобрано^4 AWP^1. Причина:^3 подождите %d %s»

//#define ALLPLAYERS
/*
Закоментируйте, чтобы для проверки на онлайн брались только КТ и ТТ(ботов, хлтв и спектаров считать не будет).

Пример:
Допустим на сервере 5 ботов и 2 человека 1 хлтв.
Дефайн закоментирован: Посчитает, что на сервере 2 из Максимально возможных игроков.
Дефайн раскоментирован: Посчитает, что на сервере 8 игроков из Максимально возможных игроков (5 ботов + 2 человека + 1 хлтв).

Отбирать авп будет ТОЛЬКО У ЛЮДЕЙ в любом случае.
*/

#define FLAG ADMIN_IMMUNITY //Флаг для иммунитета от лимита и блока на раунды

#define RETURN_MONEY //Возвращать деньги при отборе авп в конце раунда из-за низкого онлайна? (Закоментируйте, если не хотите, чтобы возвращало деньги)
#if defined RETURN_MONEY
#define MONEY_AWP 4750 //Сколько денег возвращать?
#endif

//#define PERCENT_PLAYERS
/*
Разкоменитруйте, если хотите чтобы лимит зависил от процента игроков [I am chetko ob’yasnyat’]

Например: Онлайн = 10, Процент в кваре(awp_limit_max) = 20
10/100*20 = 2 авп на тиму (2 у терров и 2 у кт)
*/

//#define NOEND //Если разкоментировано, то не будет отбирать АВП в конце раунда из-за низкого онлайна. [Если онлайн ниже чем указан в кваре и человек сам дропнет авп или потеряет ее, то подобрать заного не сможет]
//■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■//

#if !defined AWP_LIMIT && defined PERCENT_PLAYERS
#undef PERCENT_PLAYERS
#endif
#if !defined AWP_ONLINE && !defined NOEND
#define NOEND
#endif

enum ECVARS {
CVAR_ONLINE,
CVAR_LIMIT_AWP_STATUS,
CVAR_LIMIT_MAX_AWP,
CVAR_LIMIT_IMMUN,
CVAR_ROUNDS_LIMIT
};

enum EBLOCKS {
BL_RND,
BL_LIMIT,
BL_ONLINE
};

enum {
AWP_DROP = 0,
AWP_NONE,
AWP_BUY,
AWP_PICK_UP
};

new gCvar[ECVARS], sCvars[ECVARS], COST_AWP, gAwp[MAX_PLAYERS + 1], gCount;

#if defined AWP_LIMIT || defined AWP_ROUND_LIMIT
new TeamName: gTeam[MAX_PLAYERS + 1];
#endif
#if defined AWP_LIMIT
new sAwp[TeamName: TEAM_SPECTATOR];
#endif
#if defined AWP_ROUND_LIMIT
new gBlock[MAX_PLAYERS + 1], gRound;
#endif

#if defined PERCENT_PLAYERS
new gLimit;
#endif

public plugin_precache(){
register_plugin(«[ReAPI] AWPoff», «1.4.3», «PAffAEJIkA :3»);

#if !defined AWP_LIMIT && !defined AWP_ROUND_LIMIT && !defined AWP_ONLINE
set_fail_state(«xmm, ti ubral ves’ funkcional plagina, no postavil ego na server… ti molodec!»);
#endif

#if defined AWP_ONLINE
gCvar[CVAR_ONLINE] = register_cvar(«awp_players_low», «10»); //Если онлайн ниже указнного в кваре, в конце раунда у всех отберет авп, и запретит ее. (Что бы отключить поставьте 0) [стандартно: при онлайне меньше 8]
#endif
#if defined AWP_LIMIT
gCvar[CVAR_LIMIT_AWP_STATUS] = register_cvar(«awp_limit», «1»); //Включить|Выключить лимит авп [Стандартно: включен]
gCvar[CVAR_LIMIT_MAX_AWP] = register_cvar(«awp_limit_max», «3»); //Сколько АВП разрешено при лимите [Стандартно по 2 авп на команду] | Если раскоментирован PERCENT_PLAYERS, то сюда вписывать нужный процент
gCvar[CVAR_LIMIT_IMMUN] = register_cvar(«awp_limit_immun», «3»); //Иммунитет для админов. [0 — Выкл | 1 — Иммунитет от лимита кол-ва АВП | 2 — Иммунитет от блока АВП по раундам | 3 — Имумунитет от 1 и 2]
#endif
#if defined AWP_ROUND_LIMIT
gCvar[CVAR_ROUNDS_LIMIT] = register_cvar(«awp_limit_round», «5»); //На сколько раундов блочить?
#endif
}

public plugin_init(){
new mapname[32];
get_mapname(mapname, charsmax(mapname));

static maps[][] = { «awp», «aim», «35hp» };
for(new i; i < sizeof maps; i++){
if(containi(mapname, maps[i]) != -1){
pause(«ad»);
return;
}
}

COST_AWP = rg_get_weapon_info(WEAPON_AWP, WI_COST);

RegisterHookChain(RG_CBasePlayer_AddPlayerItem, «AddItem»);
RegisterHookChain(RG_BuyWeaponByWeaponID, «BuyWeaponByWeaponID»);
RegisterHookChain(RG_CBasePlayer_RemovePlayerItem, «RemoveItem»);

register_concmd(«awpoff_reload», «load_cvars»);

register_event(«HLTV», «EventRoundStart», «a», «1=0», «2=0»);
register_logevent(«EventRestartRound», 2, «1&Restart_Round_»);
#if !defined NOEND
register_logevent(«EventRoundEnd», 2, «1=Round_End»);
#endif
}

public plugin_cfg(){
#if AMXX_VERSION_NUM < 183
server_exec();
#endif
load_cvars(0);
}

public load_cvars(id){
#if defined AWP_ONLINE
sCvars[CVAR_ONLINE] = get_pcvar_num(gCvar[CVAR_ONLINE]);
#endif
#if defined AWP_LIMIT
sCvars[CVAR_LIMIT_AWP_STATUS] = get_pcvar_num(gCvar[CVAR_LIMIT_AWP_STATUS]);
sCvars[CVAR_LIMIT_MAX_AWP] = get_pcvar_num(gCvar[CVAR_LIMIT_MAX_AWP]);
sCvars[CVAR_LIMIT_IMMUN] = get_pcvar_num(gCvar[CVAR_LIMIT_IMMUN]);
#endif
#if defined AWP_ROUND_LIMIT
sCvars[CVAR_ROUNDS_LIMIT] = get_pcvar_num(gCvar[CVAR_ROUNDS_LIMIT]);
#endif
if(IsPlayer(id))
client_print(id, print_center, «[AWPoff] Cvars have been reloaded!»);
}

public client_disconnected(id) if(IsPlayer(id)) minus_awp(id);

public EventRoundStart(){
#if defined AWP_ROUND_LIMIT
gRound ++;
#endif

gCount = 0;

static pl[32];
get_pl(pl, gCount);

#if defined PERCENT_PLAYERS
const MAX_PERCENT = 100;
gLimit = gCount * sCvars[CVAR_LIMIT_MAX_AWP] / MAX_PERCENT;
#endif

#if defined AWP_LIMIT
sAwp[TEAM_CT] = 0;
sAwp[TEAM_TERRORIST] = 0;
#endif

#if defined AWP_LIMIT || defined AWP_ROUND_LIMIT
for(new i,id; i < gCount; i ++){
id = pl[i];

gTeam[id] = get_member(id, m_iTeam);
#if defined ALLPLAYERS
if(!(TEAM_UNASSIGNED < gTeam[id] < TEAM_SPECTATOR) || !is_user_valid(id))
continue;
#endif

switch(gAwp[id]){
case AWP_NONE: continue;
#if defined AWP_ROUND_LIMIT
case AWP_DROP:{
gAwp[id] = AWP_NONE;
gBlock[id] = gRound + sCvars[CVAR_ROUNDS_LIMIT];
}
#endif
#if defined AWP_LIMIT
default: sAwp[gTeam[id]] ++;
#endif
}
}
#endif
}

public EventRestartRound(){
#if defined AWP_LIMIT
sAwp[TEAM_CT] = 0;
sAwp[TEAM_TERRORIST] = 0;
#endif
#if defined AWP_ROUND_LIMIT
gRound = 0;
arrayset(gBlock, false, sizeof gBlock);
#endif
arrayset(gAwp, AWP_NONE, sizeof gAwp);
}

#if !defined NOEND
public EventRoundEnd(){
new players[32], count;
get_pl(players, count);

if(count >= sCvars[CVAR_ONLINE])
return PLUGIN_CONTINUE;

for(new i = 0; i < count; i ++){
#if defined ALLPLAYERS
if(!is_user_valid(players[i]))
continue;
#endif

return_awp(players[i]);
}
EventRestartRound();
return PLUGIN_CONTINUE;
}
#endif

stock get_pl(players[32], &count){
#if defined ALLPLAYERS
get_players(players, count);
#else
get_players(players, count, «ch»);
new players1[32], cnt = 0;
for(new i; i < count; i ++){
if(TEAM_UNASSIGNED < get_member(players[i], m_iTeam) < TEAM_SPECTATOR)
players1[cnt ++] = players[i];
}

players = players1;
count = cnt;
#endif
}

stock return_awp(id){
if(gAwp[id] <= AWP_NONE)
return;

rg_remove_item(id, «weapon_awp»);
#if defined RETURN_MONEY
if(gAwp[id] == AWP_BUY)
rg_add_account(id, MONEY_AWP);
#endif
client_print_color(id, false, «%s %s», MSG_PREFIX, MSG_LOWONLINE);
}

public BuyWeaponByWeaponID(id, WeaponIdType:weaponID){
if(weaponID != WEAPON_AWP || !is_user_valid(id) || gAwp[id] > AWP_NONE)
return HC_CONTINUE;

new gMoney = get_member(id, m_iAccount);
if(gMoney < COST_AWP)
return HC_CONTINUE;

if(check_awp(id)){
gAwp[id] = AWP_BUY;
return HC_CONTINUE;
}

SetHookChainReturn(ATYPE_INTEGER, true);
return HC_SUPERCEDE;
}

public AddItem(id, pItem){
if(get_member(pItem, m_iId) != WEAPON_AWP || gAwp[id] > AWP_NONE || !is_user_valid(id))
return HC_CONTINUE;

if(check_awp(id)){
gAwp[id] = AWP_PICK_UP;
return HC_CONTINUE;
}

SetHookChainReturn(ATYPE_INTEGER, false);
return HC_SUPERCEDE;
}

//Native’s
public plugin_natives()
register_native(«awpoff_check», «check_native», true);

public check_native(id, chat){
#if defined AWP_LIMIT
#if defined ALLPLAYERS
if(!(TEAM_UNASSIGNED < gTeam[id] < TEAM_SPECTATOR))
return false;
#endif
return check_awp(id, true, chat);
#else
return check_awp(id, chat);
#endif
}
//Native’s

#if defined AWP_LIMIT
bool: check_awp(id, check = false, chat = true)
#else
bool: check_awp(id, chat = true)
#endif
{
new EBLOCKS:block;

#if defined AWP_ROUND_LIMIT
if(gBlock[id] > gRound)
block = BL_RND;
else
#endif
#if defined AWP_ONLINE
if(gCount < sCvars[CVAR_ONLINE])
block = BL_ONLINE;
else
#endif
#if defined AWP_LIMIT
if(sCvars[CVAR_LIMIT_AWP_STATUS]){
if(sCvars[CVAR_LIMIT_IMMUN] && sCvars[CVAR_LIMIT_IMMUN] != 2 && get_user_flags(id) & FLAG)
return true;

#if defined PERCENT_PLAYERS
if(sAwp[gTeam[id]] < gLimit)
#else
if(sAwp[gTeam[id]] < sCvars[CVAR_LIMIT_MAX_AWP])
#endif
{
if(!check)
sAwp[gTeam[id]] ++;
return true;
}else
block = BL_LIMIT;
}else
#endif
return true;

if(chat){ //Слишком туп, чтобы придумать какой нибудь другой вариант с чатом.
switch(block){
#if defined AWP_ROUND_LIMIT
case BL_RND:{
new c = gBlock[id] — gRound;
client_print_color(id, false, MSG_ROUND, MSG_PREFIX, c, get_text(c));
}
#endif
#if defined AWP_ONLINE
case BL_ONLINE: client_print_color(id, false, «%s %s», MSG_PREFIX, MSG_LOWONLINE);
#endif
#if defined AWP_LIMIT
case BL_LIMIT: client_print_color(id, false, «%s %s», MSG_PREFIX, MSG_LIMIT);
#endif
}
}
return false;
}

public RemoveItem(id, pItem){
if(get_member(pItem, m_iId) == WEAPON_AWP)
minus_awp(id);
}

stock minus_awp(id){
if(!is_user_valid(id) || gAwp[id] <= AWP_NONE)
return;

#if defined AWP_LIMIT || defined AWP_ROUND_LIMIT
new flag = get_user_flags(id) & FLAG;
#endif

#if defined AWP_ROUND_LIMIT
gAwp[id] = (flag && sCvars[CVAR_LIMIT_IMMUN] > 1) ? AWP_NONE : AWP_DROP;
#else
gAwp[id] = AWP_NONE;
#endif

#if defined AWP_LIMIT
if(!sCvars[CVAR_LIMIT_AWP_STATUS])
return;

if(sCvars[CVAR_LIMIT_IMMUN] && sCvars[CVAR_LIMIT_IMMUN] != 2 && flag)
return;

sAwp[gTeam[id]] —;
#endif
}

stock bool: is_user_valid(id){
if(is_user_bot(id) || is_user_hltv(id))
return false;
return true;
}

stock get_text(tm){
new ost = tm % 10, ost2 = tm % 100, buff[16];

if(ost2 >= 5 && ost2 <= 20)
format(buff, charsmax(buff), «раундов»);
else{
switch(ost){
case 1: format(buff, charsmax(buff), «раунд»);
case 2..4: format(buff, charsmax(buff), «раунда»);
case 0, 5..9: format(buff, charsmax(buff), «раундов»);
}
}
return buff;
}

Источник

Читайте также:  Гепарин действие на иммунитет