ReHLDS/ReAPI AWPoff

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
торопился когда писал, говорю не может игроки купить авп вообще! Покупка доступно только игрокам с иммунитетом! Пишет в чат что Лимит превышен
13 Апр 2018
торопился когда писал, говорю не может игроки купить авп вообще! Покупка доступно только игрокам с иммунитетом! Пишет в чат что Лимит превышен, хотя там никого нет авп и не может купить повторяю. Покупка доступно только онлайн игроком. Пробивал так и так откл вкл лимит роунд лимит не помогло
#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 "^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_LEVEL_H //Флаг для иммунитета от лимита и блока на раунды

#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", "1"); //На сколько раундов блочить?
#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) != -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;

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))
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_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;
}
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.422
Симпатии
435
торопился когда писал, говорю не может игроки купить авп вообще! Покупка доступно только игрокам с иммунитетом! Пишет в чат что Лимит превышен
13 Апр 2018
торопился когда писал, говорю не может игроки купить авп вообще! Покупка доступно только игрокам с иммунитетом! Пишет в чат что Лимит превышен, хотя там никого нет авп и не может купить повторяю. Покупка доступно только онлайн игроком. Пробивал так и так откл вкл лимит роунд лимит не помогло
#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 "^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_LEVEL_H //Флаг для иммунитета от лимита и блока на раунды

#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", "1"); //На сколько раундов блочить?
#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) != -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;

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))
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_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;
}
#define AWP_ONLINE
Закомментируйте чтобы убрать ограничение awp по онлайну
 

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
#define AWP_ONLINE
Закомментируйте чтобы убрать ограничение awp по онлайну
Вы кажется не поняли меня, пишу же что в чат выводит уведом. превышен лимит не можешь купить! Хотя я пробивал так и так! все варианты посмотрел))) Откл Онлайн , откл лимит, откл по пробивал роунд лимит НЕ ПОМОГЛО МОЖЕТ В САМОМ КОДЕ ОШИБКА Посмотрите пжл игроки обычные без флага ваше не может купить пишет Превышен лимит хотя ни у кого нету авп НИКТО не может купить (Кроме Флаг игрока) всем так пишет и жалуется
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.422
Симпатии
435
Вы кажется не поняли меня, пишу же что в чат выводит уведом. превышен лимит не можешь купить! Хотя я пробивал так и так! все варианты посмотрел))) Откл Онлайн , откл лимит, откл по пробивал роунд лимит НЕ ПОМОГЛО МОЖЕТ В САМОМ КОДЕ ОШИБКА Посмотрите пжл игроки обычные без флага ваше не может купить пишет Превышен лимит хотя ни у кого нету авп НИКТО не может купить (Кроме Флаг игрока) всем так пишет и жалуется
А вы плагин хоть компилируете?) ну мало ли)
 

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
Khan, вам бы учебник, да по русскому языку. И манерам общения обучиться.
я не русский пишу как могу (что есть в литературном запасе) я отв таким же тоном что ты такого увидел чтобы так писать мне? ты его адвокат?
 

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
444
Симпатии
209
Пол
Мужской
VKcom
id109544387
Telegram
@dmitry_isakow
Нет, не адвокат.

я отв таким же тоном что ты такого увидел чтобы так писать мне?
Как минимум, увидел человека, который мало что смыслит в плагинах, и не способен вести по этому поводу дискуссию, но упорно что-то пытается доказать.
 

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
Нет, не адвокат.


Как минимум, увидел человека, который мало что смыслит в плагинах, и не способен вести по этому поводу дискуссию, но упорно что-то пытается доказать.
я питался разобратся сам но не получилось по этому обратился суда! Если ты мыслишь широко редактируй мне это код как в описание! а то он не работает как в описаниях (точнее лимит авп по команде) не может игроки купить авп чат выводить что превышен лимит! Только покупает люди с флагом
14 Апр 2018
Нет, не адвокат.


Как минимум, увидел человека, который мало что смыслит в плагинах, и не способен вести по этому поводу дискуссию, но упорно что-то пытается доказать.
Хотя никого нет авп все равно превышен лимит!
 

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
444
Симпатии
209
Пол
Мужской
VKcom
id109544387
Telegram
@dmitry_isakow

Khan

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

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
Khan, насчет делать уроки и помогать маме, скорее всего твоя надобность, судя по общению)
мда слов нет у меня к тебе. суешь нос куда не надо, пишешь как будто умный, (Снижая другого уровень) когда дает в те руку, на если так умный попробуй сам, а ты уже даешь стоп тормоз!
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
Telegram
@paffgame
Ну шож, как я понял в исходе конечно же раскоментирован #define PERCENT_PLAYERS, а раз он раскоментирован, дайте мне инфу чему равен квар awp_limit_max.
Просто напишите его в консоль и дайте мне ответ.
З.Ы Если он меньше, хотябы, 10, то советую почитать коментарии в плагине у описания этого(awp_limit_max) квара, а именно: ...Если раскоментирован PERCENT_PLAYERS, то сюда вписывать нужный процент
 

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
"awp_limit_max" is "3"
14 Апр 2018
Ну шож, как я понял в исходе конечно же раскоментирован #define PERCENT_PLAYERS, а раз он раскоментирован, дайте мне инфу чему равен квар awp_limit_max.
Просто напишите его в консоль и дайте мне ответ.
З.Ы Если он меньше, хотябы, 10, то советую почитать коментарии в плагине у описания этого(awp_limit_max) квара, а именно: ...Если раскоментирован PERCENT_PLAYERS, то сюда вписывать нужный процент
если там было б меньше чат выводит низкий онлайн а не превышен лимит!
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.422
Симпатии
435
Сморю ты тупой еще тупого)) Думаешь что ты тут такой умный - хотя тупым все можно думать
Вы неадекватный. Все проблемы сводятся к тому, что вы невнимательно читаете первый пост и описание плагина.
Поменьше агрессии, в следующий раз получите РО
 

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
Вы неадекватный. Все проблемы сводятся к тому, что вы невнимательно читаете первый пост и описание плагина.
Поменьше агрессии, в следующий раз получите РО
читал по этому пишу так не умничай если не можешь помощь обходи тему просто! пожалуйста ...
 

paffgame

GovnoCoder
Разработчик
Регистрация
9 Июн 2017
Сообщения
118
Симпатии
62
Пол
Мужской
Telegram
@paffgame
Khan, Спорить с автором плагина о работе плагина? интересно.
А так, читайте пожалуйста все что в плагине написпано. Было это написано не просто так.

Если у Вас разкоментирован #define PERCENT_PLAYERS то и в кваре awp_limit_max должен быть указан процент разрешенного авп от онлайна
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
1.422
Симпатии
435
читал по этому пишу так не умничай если не можешь помощь обходи тему просто! пожалуйста ...
Как вам помогать, если судя по вашему поведению неизвестно что вы вообще делаете.
Никакой подробной информации, вы даже описать толково проблему не можете.
 

Khan

Пользователь
Регистрация
13 Июн 2017
Сообщения
49
Симпатии
0
Пол
Мужской
Khan, Спорить с автором плагина о работе плагина? интересно.
А так, читайте пожалуйста все что в плагине написпано. Было это написано не просто так.

Если у Вас разкоментирован #define PERCENT_PLAYERS то и в кваре awp_limit_max должен быть указан процент разрешенного авп от онлайна
получается я щас должен указать в процентах? правильно я вас понял?
14 Апр 2018
Как вам помогать, если судя по вашему поведению неизвестно что вы вообще делаете.
Никакой подробной информации, вы даже описать толково проблему не можете.
пишу как могу русс не очень но пытаюсь вам обяснит и спросить в чемм мое ошибка или ошибка в коде