ReHLDS/ReAPI AWPoff

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#1
Версия для HLDS: HLDS - AWPoff

Автор: PAffAEJIkA :3 (paffgame)
Версия: 1.4.3 [17.03.18]


Описание:
Плагин отключает AWP при низком онлайне, стандартно при онлайне меньше 8-ми.
т.е если на сервере онлайн 8 AWP будет доступна, если же онлайн 7 и меньше AWP отключается.
Естественно можно изменить при каком онлайне отключать AWP. Так же имеется AWP Limit.

Особенности:
- Отключение АВП при низком онлайн
- Лимит авп на команду
- Лимит авп по раундам

Требования:
- ReGameDLL
- ReAPI > 0.1.68

Настройки в исходе:
PHP:
]//■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■//
// ^4 - зелёный | ^3 - цвет тимы (КТ - синий | Т - красный | SPEC - серый) | ^1 - жёлтый
#define MSG_PREFIX             "^3[^4AWP^3]"
#define MSG_LOWONLINE         "У вас^4 отобрано^3 AWP. Причина:^4 низкий онлайн."
#define MSG_LIMIT             "У вас^4 отобрано^3 AWP. Причина:^4 превышен лимит."
#define MSG_ROUND             "%s У вас^4 отобрано^3 AWP. Причина:^4 подождите %d %s"

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

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

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

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

#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 ■■■■■■■■■■■■■■■■■■■■■■■■//
Квары:
PHP:
awp_players_low "8"        //Если онлайн ниже указнного в кваре, в конце раунда у всех отберет авп, и запретит ее. (Что бы отключить поставьте 0) [стандартно: при онлайне меньше 8]
awp_limit "1"                //Включить|Выключить лимит авп [Стандартно: включен]
awp_limit_max "2"            //Сколько АВП разрешено при лимите [Стандартно по 2 авп на команду] | Если раскоментирован PERCENT_PLAYERS, то сюда вписывать нужный процент
awp_limit_immun "1"        //Иммунитет для админов. [0 - Выкл | 1 - Иммунитет от лимита кол-ва АВП | 2 - Иммунитет от блока АВП по раундам | 3 - Имумунитет от 1 и 2]
awp_limit_round "1"        //На сколько раундов блочить? [0 - выключить]
[12.01.17] Выход в свет.[Релиз]
[13.01.17] HotFix.
[14.01.17] Фикс.
Стал отлавливать авп при выдаче разными плагинами
[15.01.17]
Теперь два варианта лимита авп:
1. Стандартно по квару, т.е сколько указано в кваре - столько и будет максимально доступных авп. (Например: awp_limit_max "2", где 2 - это максимальное кол-во авп на тиму)
2. Кол-во авп на команду зависит о процента игроков указанного в кваре. (Например: awp_limit_max "20", где 20 - это процент от всего онлайна на сервере)

[16.01.17] Изменил способ отлова выкидывания авп
Фикс багов.
[27.06.17]
Фикс багов:
- Теперь правильно отлавливает тиму человека
- При закоментированом #define ALLPLAYERS будет считать в общий онлайн только КТ и ТТ

[28.06.17]
Фикс бага. При выключенном лимите авп, не отбирало авп при низком онлайне. Спасибо wareznik
Добавил блок авп по раундам (Меня мотивировал Sekret):
Получил АВП -> Играешь -> Теряешь каким-то образом АВП -> В начале следующего раунда, если ты без АВП ставится блок к покупке АВП на awp_limit_round раундов (0 - выключить блок).

Немного изменил awp_limit_immun в связи с добавлением блока по раундам:
0 - Выкл | 1 - Иммунитет от лимита кол-ва АВП | 2 - Иммунитет от блока АВП по раундам | 3 - Имумунитет от 1 и 2

BlackSignature спасибо за нахождение этого бага и подсказки для решения этого(by Евгений).

Добавил (идея Panzer):
PHP:
#define NOEND            //Если разкоментировано, то не будет отбирать АВП в конце раунда из-за низкого онлайна. [Если онлайн ниже чем указан в кваре и человек сам дропнет авп или потеряет ее, то подобрать заного не сможет]
[09.01.18]
Фикс багов:
- Бывало не подгружало квары с amxx.cfg
- Баг по ограничению авп на раунды
- При #define PERCENT_PLAYERS иногда криво считал лимит

Чутка изменил "ход" работы плагина.

[11.01.18]
- Юзанул вот этот совет
- Изменил чутка натив.
Теперь: awpoff_check(id, chat)
id - ид игрока
chat - true/false | true - при блокировке авп покажет сообщение из плагина / false - не покажет сообщение из плагина
В остальном натив работает так же.
[08.03.18]
- Добавил возможность отключить ненужный функционал в плагине.
В исходе:
PHP:
#define AWP_ONLINE  //Закоментируйте, если не нужен функционал отключения авп при низком онлайне
#define AWP_LIMIT /Закоментируйте, если не нужен функционал ограничения авп по командам
#define AWP_ROUND_LIMIT //Закоментируйте, если не нужен функционал ограничения авп по раундам
- Изменил подгрузку кваров, теперь если Вы изменили квар и хотите его проттстить без смены карты, нужно будет в консоль сервера/клиента ввести awpoff_reload

[17.03.18]
- Исправлена ошибка при использовании натива.

Установка и настройка:
  • скачиваем исходник.
  • меняем настройки по своему усмотрению.
  • компилируем.
  • ставим на сервер.

Натив:
awpoff_check(index, chat)
.
index - ид игрока
chat - true/false | true - при блокировке авп покажет сообщение из плагина / false - не покажет сообщение из плагина

Возвращает значение true/false.
true
- авп можно взять
false - нельзя
При false сообщение о запрете взятии авп выведется из плагина.
Пример использования натива example_t.sma
 

Вложения

Последнее редактирование: paffgame

Endzhey

Пользователь
Регистрация
8 Июн 2017
Сообщения
180
Симпатии
36
#2
В старой версии при покупке авп деньни снимались и выводилось сообщение что на сервере мало игроков. В этой версии это исправлено?)
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#3
В старой версии при покупке авп деньни снимались и выводилось сообщение что на сервере мало игроков. В этой версии это исправлено?)
смотря о какой Вы версии говорите, но подобного баг репорта я давно не видел.
 

Endzhey

Пользователь
Регистрация
8 Июн 2017
Сообщения
180
Симпатии
36
#4
смотря о какой Вы версии говорите, но подобного баг репорта я давно не видел.
Я наверное глупо обьяснил.
Например на сервере мало игроков и авп для покупки недоступно.
Я покупаю авп, деньги снимаються и выводится сообщение что авп недоступно.
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#5
Я наверное глупо обьяснил.
Например на сервере мало игроков и авп для покупки недоступно.
Я покупаю авп, деньги снимаються и выводится сообщение что авп недоступно.
я понял о чем Вы.
Но как я уже говорил, подобного баг репорта на версии для ReAPI я не видел и исходя из багрепортов, такого бага нет.
 

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
490
Симпатии
229
#6
paffgame, предлагаю мини-фикс. Собственно при выключенном #define ALLPLAYERS, вы считаете всех игроков, включая спектров. Лучше будет если считать только играющих юзверей по фильтру команды.
27 Июн 2017
+ так же было бы неплохо хукать присоединение к команде, что позволит запрещать/разрешать авп в процессе игры
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#7
sonyx, в плане отсеять спектаров, я думаю как.
либо два раза get_players по тимам и скалыдвать, либо циклом.

запрещать/разрешать во время игры
я так делал раньше и это такое себе на самом деле. бежишь бежишь и авп пропало, ну не особо приятно)
 

sonyx

Заблокированные
Регистрация
8 Июн 2017
Сообщения
490
Симпатии
229
#8
sonyx, в плане отсеять спектаров, я думаю как.
либо два раза get_players по тимам и скалыдвать, либо циклом.


я так делал раньше и это такое себе на самом деле. бежишь бежишь и авп пропало, ну не особо приятно)
циклом? не стоит извращаться) тут 2 варианта:
1. получаем по командам и суммируем
2. в дополнение получаем по фильтру спектров и вычитаем
но по сути те же яйца)))
по поводу горячей проверки - можно же сделать изящнее) отбирать по раунденд, а разрешать подбор/покупку по горячей схеме. И будут все довольны
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#9
Обновил.
Все в шапке.
 

Panzer

Пользователь
Регистрация
11 Июн 2017
Сообщения
136
Симпатии
27
#10
подскажите, как можно заблокировать покупку авп в плагине vip custom? И вопрос: учитываються все снайперки или только авп?
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#11
Panzer, спасибо, что напомнили.
В плагине присутствует натив для подключения других плагинов. Добавил в шапку.

Учитываются только авп.
 

wareznik

Заблокированные
Пользователь
Регистрация
12 Июн 2017
Сообщения
52
Симпатии
11
Пол
Мужской
#12
у меня awp вконце раунда не отбирает
и если онлайн был 10чел (квар 8 стоит) они могли покупать авп, потом онлайн стал 6чел, они дальше покупают и ниче не отбирает у них, которые новые зашли купить не могут
28 Июн 2017
а нет, погоди, похоже только не отбирает
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#13
wareznik, можно ип сервера?
У себя таких проблем не наблюдаю.
28 Июн 2017
а нет, погоди, похоже только не отбирает
А вот это, имеется.
28 Июн 2017
спасибо.
28 Июн 2017
у меня awp вконце раунда не отбирает
и если онлайн был 10чел (квар 8 стоит) они могли покупать авп, потом онлайн стал 6чел, они дальше покупают и ниче не отбирает у них, которые новые зашли купить не могут
28 Июн 2017
а нет, погоди, похоже только не отбирает
Мне похоже пора идти спать.
Все таки у меня такого не наблюдается. Я просто тестировал с awp_players_low 0.

Прошу Вас напишите мне ип сервера в лс.
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#15
Фикс бага. (кривые проверки)
Тех кто юзает лимит, не затронуло хД

Вроде, все исправлено ><
Спасибо wareznik

Плагин обновлен в шапке.
 

WhiteFang

Пользователь
Регистрация
9 Июн 2017
Сообщения
38
Симпатии
0
Пол
Мужской
#16
So I've been using this plugin, with the following cvars, awp_players_low "14", keeping the other cvars 0.. I'm not using #define ALLPLAYERS & #define PERCENT_PLAYERS .. What I've observed is that sometimes when the total count of both teams is 14 or more the awp is still restricted and I've to make it less than 14 for it to work, it seems like its checking one team only sometimes.. Using Amx 1.8.2 ..
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#17
So I've been using this plugin, with the following cvars, awp_players_low "14", keeping the other cvars 0.. I'm not using #define ALLPLAYERS & #define PERCENT_PLAYERS .. What I've observed is that sometimes when the total count of both teams is 14 or more the awp is still restricted and I've to make it less than 14 for it to work, it seems like its checking one team only sometimes.. Using Amx 1.8.2 ..
Check this version please.

If will problems, use #define DEBUG.
And thriugh 1-2 hour, throw me log file [addons/amxmodx/logs/awpoff/main.log].

If not will problems, write here please.

P.S Sorry, my English is bad.
 

Вложения

WhiteFang

Пользователь
Регистрация
9 Июн 2017
Сообщения
38
Симпатии
0
Пол
Мужской
#18
Here's the link for the log that has been recorded: main.log
Since all the posts are in Russian, I use Google Translate. I did the same to awp_players_low cvar. It said after end of round if players are low it'll ban it.
I wanted it to ban by the count of both teams but it wasn't happening.
Now I got to know that it is banning every time so and looked at the code and changed
PHP:
 for(new i = 0; i < gTT; i++)
  return_awp(players1);
to
[PHP]
for(new i = 0; i < gCount; i++)
return_awp(players1);
[/PHP]
Same for gCT, Now it works fine. I'm using awp_players_low "16". It bans awp if total count of both team is less than 16 and also removes it if someone has it

7 Июл 2017
Hope it helped someone.
 
Последнее редактирование модератором:

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
#19
WhiteFang, please, give me log file.
7 Июл 2017
for(new i = 0; i < gCount; i ++) - only #define ALLPLAYERS
 

WhiteFang

Пользователь
Регистрация
9 Июн 2017
Сообщения
38
Симпатии
0
Пол
Мужской
#20