лимит AWP

IIuToH

Пользователь
Регистрация
5 Авг 2018
Сообщения
131
Симпатии
0
OS
Linux
Amx Mod X
AMXX 1.9.0
Билд
Protocol version 48 Exe version 1.1.2.7/Stdio (cstrike) ReHLDS version: 3.7.0.695-dev Build date: 14:15:13 Apr 6 2020 (2186)
ReGamedll
ReGameDLL version: 5.15.0.458-dev Build date: 11:28:46 Apr 2 2020
Metamod
Metamod v1.21p37 2013/05/30 (5:13) by Will Day http://www.metamod.org/ Patch: Metamod-P (mm-p) v37 by Jussi Kivilinna http://metamod-p.sourceforge.net/
Meta модули
Код:
[ 1] AMX Mod X RUN - amxmodx_mm_i386. v1.9.0.5 ini Start ANY
[ 2] Reunion RUN - reunion_mm_i386. v0.1.75 ini Start Never
[ 3] Revoice RUN - revoice_mm_i386. v0.1.0.3 ini Start Never
[ 4] Rechecker RUN - rechecker_mm_i38 v2.5 ini Chlvl ANY
[ 5] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[ 6] MySQL RUN - mysql_amxx_i386. v1.9.0.5 pl1 ANY ANY
[ 7] FakeMeta RUN - fakemeta_amxx_i3 v1.9.0.5 pl1 ANY ANY
[ 8] GeoIP RUN - geoip_amxx_i386. v1.9.0.5 pl1 ANY ANY
[9] Engine RUN - engine_amxx_i386 v1.9.0.5 pl1 ANY ANY
[10] CSX RUN - csx_amxx_i386.so v1.9.0.5 pl1 ANY ANY
[11] CStrike RUN - cstrike_amxx_i38 v1.9.0.5 pl1 ANY ANY
[12] Fun RUN - fun_amxx_i386.so v1.9.0.5 pl1 ANY ANY
[13] ReAPI RUN - reapi_amxx_i386. v5.12.0. pl1 ANY Never
[14] Ham Sandwich RUN - hamsandwich_amxx v1.9.0.5 pl1 ANY ANY
Плагины
Код:
[ 1] AMXBans: Core 1.9.0 MA: 1.6.12 Larte Team amxbans_core.am running
[ 2] AMXBans: Main 1.9.0 MA: 1.6.12 Larte Team amxbans_main.am running
[ 3] Center Msg Fix 0.4 mx?! CenterMsgFix.am running
[ 4] Players Menu 15.04.08 AMXX Dev Team & admincmd_rbs.am running
[ 5] Slots Reservation 1.9.0.5262 AMXX Dev Team adminslots.amxx running
[ 6] Commands Menu 1.9.0.5262 AMXX Dev Team cmdmenu.amxx running
[ 7] Maps Menu 1.9.0.5262 AMXX Dev Team mapsmenu.amxx running
[ 8] Admin Chat 1.9.0.5262 AMXX Dev Team adminchat.amxx running
[ 9] Anti Flood 1.9.0.5262 AMXX Dev Team antiflood.amxx running
[ 10] [190] NextMap 18.09.25 SKAJIbnEJIb & AM nextmap.amxx running
[ 11] [190] TimeLeft 18.09.25 SKAJIbnEJIb & AM timeleft.amxx running
[ 12] Pause Plugins 1.9.0.5262 AMXX Dev Team pausecfg.amxx running
[ 13] Stats Configuration 18.05.15 SKAJIbnEJIb & AM statscfg_rbs.am running
[ 14] [183] StatsX RBS 19.08.28 SKAJIbnEJIb & AM statsx_rbs.amxx running
[ 15] [183] Kill Assist RBS 19.11.14 SKAJIbnEJIb & Di killassist_rbs. running
[ 16] Nice Killer 1.6 Got Milk? / HoHo nice_killer.amx running
[ 17] [190] VIP RBS 19.12.09 SKAJIbnEJIb vip_rbs.amxx running
[ 18] [ReAPI] AWPoff 1.4.2 PAffAEJIkA :3 awp_off_t.amxx running
[ 19] [183] Ad From Server 19.08.29 SKAJIbnEJIb ad_from_server. running
[ 20] [183] Ultimate Flags 19.10.30 SKAJIbnEJIb ultimate_flags. running
Amxx Модули
Код:
# 1 MySQL 1.9.0.5262 AMX Mod X Dev running
# 2 FakeMeta 1.9.0.5262 AMX Mod X Dev running
# 3 GeoIP 1.9.0.5262 AMX Mod X Dev running
# 4 Engine 1.9.0.5262 AMX Mod X Dev running
# 5 CSX 1.9.0.5262 AMX Mod X Dev running
# 6 CStrike 1.9.0.5262 AMX Mod X Dev running
# 7 Fun 1.9.0.5262 AMX Mod X Dev running
# 8 ReAPI 5.12.0.192-dev Asmodai & s1le running
# 9 Ham Sandwich 1.9.0.5262 AMX Mod X Dev running
# 10 nVault 1.9.0.5262 AMX Mod X Dev running
# 11 Sockets 1.9.0.5262 AMX Mod X Dev running
Ошибка
Код:
не берет awp
Исходник
Код:
#include < amxmodx >
#include <center_msg_fix>
#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 ■■■■■■■■■■■■■■■■■■■■■■■//
// ^4 - зелёный | ^3 - цвет тимы (КТ - синий | Т - красный | SPEC - серый) | ^1 - жёлтый
#define MSG_PREFIX "[AWP]"
#define MSG_LOWONLINE "Покупка AWP запрещена, низкий онлайн."
#define MSG_LIMIT "Покупка запрещена, превышен лимит AWP за команду."
#define MSG_ROUND "%s У вас отобрано AWP. Причина: подождите %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 ■■■■■■■■■■■■■■■■■■■■■■■■//

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

enum EBLOCKS {
BL_RND = 0,
BL_LIMIT,
BL_ONLINE
};

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

new gCount, gRound, gCvar[ECVARS], sAwp[TeamName: TEAM_SPECTATOR], COST_AWP;
new gAwp[MAX_PLAYERS + 1], TeamName: gTeam[MAX_PLAYERS + 1], gBlock[MAX_PLAYERS + 1];

#if defined PERCENT_PLAYERS
new gLimit;
#endif

public plugin_precache(){
register_plugin("[ReAPI] AWPoff", "1.4.2", "PAffAEJIkA :3");

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

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) != -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_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
}

#if AMXX_VERSION_NUM < 183
public plugin_cfg()
server_exec();
#endif

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

public EventRoundStart(){
gRound ++;
gCount = 0;

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

#if defined PERCENT_PLAYERS
const MAX_PERCENT = 100;
gLimit = gCount * get_pcvar_num(gCvar[CVAR_LIMIT_MAX_AWP]) / MAX_PERCENT;
#endif

sAwp[TEAM_CT] = 0;
sAwp[TEAM_TERRORIST] = 0;

for(new i,id; i < gCount; i ++){
id = pl;
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;
case AWP_DROP:{
gAwp[id] = AWP_NONE;
gBlock[id] = gRound + get_pcvar_num(gCvar[CVAR_ROUNDS_LIMIT]);
}
default: sAwp[gTeam[id]] ++;
}
}
}

public EventRestartRound(){
sAwp[TEAM_CT] = 0;
sAwp[TEAM_TERRORIST] = 0;
gRound = 0;
arrayset(gBlock, false, sizeof gBlock);
arrayset(gAwp, AWP_NONE, sizeof gAwp);
}

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

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

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

return_awp(players);
}
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, m_iTeam) < TEAM_SPECTATOR)
players1[cnt ++] = players;
}

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(id, print_center, "%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;

gAwp[id] = AWP_BUY;

if(check_awp(id))
return HC_CONTINUE;

gAwp[id] = AWP_NONE;

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)
return check_awp(id, true, chat);
//Native's

bool: check_awp(id, check = false, chat = true){
new EBLOCKS:block;

if(gBlock[id] > gRound)
block = BL_RND;
else if(gCount < get_pcvar_num(gCvar[CVAR_ONLINE]))
block = BL_ONLINE;
else if(get_pcvar_num(gCvar[CVAR_LIMIT_AWP_STATUS])){

new cvar = get_pcvar_num(gCvar[CVAR_LIMIT_IMMUN]);
if(cvar && cvar != 2 && get_user_flags(id) & FLAG)
return true;

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

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

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

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

new flag = get_user_flags(id) & FLAG, cvar = get_pcvar_num(gCvar[CVAR_LIMIT_IMMUN]);
gAwp[id] = (flag && cvar > 1) ? AWP_NONE : AWP_DROP;

if(!get_pcvar_num(gCvar[CVAR_LIMIT_AWP_STATUS]))
return;

if(cvar && cvar != 2 && flag)
return;

sAwp[gTeam[id]] --;
}

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

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;
}
Здравствуйте! стоит плагин awp_off_t
выставил значение при онлайне ниже 10 запрет awp, но когда выше онлайн всё равно не берет awp, пишет превышен лимит покупка запрещена, хотя ни у кого нет этого оружие
что не так то
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.372
Симпатии
813
Здравствуйте! стоит плагин awp_off_t
выставил значение при онлайне ниже 10 запрет awp, но когда выше онлайн всё равно не берет awp, пишет превышен лимит покупка запрещена, хотя ни у кого нет этого оружие
что не так то
Боты, спектаторы, хлтв есть на сервере?
 
Сверху Снизу