Участник
Пользователь
- Сообщения
- 58
- Реакции
- 25
- Помог
- 4 раз(а)
Ругается на 54 строку из-за невалидной ентити. Подскажите как правильно сделать или может в целом как-то улучшить код
Код:
#include <amxmodx>
#include <reapi>
#define CURRENT_ROUND (get_member_game(m_iTotalRoundsPlayed) + 1)
#define BLOCK_MAPS "awp_", "aim_", "fy_", "35hp", "$2000$", "dm_", "he_", "cs_deagle5" // Блокируемые карты
new const g_szConfigName[] = "awp_limit";
new g_iSnipersMax, g_iSnipersMin, g_iFirstRound
new HookChain: Hook_HasRestrictItem;
public plugin_init(){
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
bind_pcvar_num(create_cvar(
"snipers_max",
"3",
.description = "Максимальное количество awp в команде"),
g_iSnipersMax);
bind_pcvar_num(create_cvar(
"snipers_min",
"10",
.description = "Минимальное число игроков, при котором можно купить awp"),
g_iSnipersMin);
bind_pcvar_num(create_cvar(
"snipers_firstround",
"3",
.description = "С какого раунда разрешить покупать awp"),
g_iFirstRound);
DisableHookChain(Hook_HasRestrictItem = RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "CBasePlayer_HasRestrictItem"));
block_maps();
AutoExecConfig(true, g_szConfigName);
}
public CBasePlayer_HasRestrictItem(const id, const ItemID:item, const ItemRestType:type)
{
if(ItemID != ITEM_AWP) return HC_CONTINE;
if(!check_awp_num(id, item)){
SetHookChainReturn(ATYPE_BOOL, true);
return HC_SUPERCEDE;
}
else
return HC_CONTINUE;
}
public check_awp_num(const id, const ItemID:item){
new players[MAX_PLAYERS], pnum, iAwpNum;
new iTeam = get_member(id, m_iTeam);
if(iTeam == TEAM_TERRORIST) get_players(players, pnum, "ach", "TERRORIST");
else if(iTeam == TEAM_CT) get_players(players, pnum, "ach", "CT");
for(new i; i < pnum; i++)
if(user_has_weapon(players[i], CSW_AWP))
iAwpNum++
if(g_iFirstRound > CURRENT_ROUND){
client_print_color(id, print_team_default, "[^4Сервер^1] ^4Взять ^3AWP ^4с %d-го раунда!",g_iFirstRound);
return false;
}
else if(g_iSnipersMin > pnum){
client_print(id, print_center, "*Запрещено если на сервере играет меньше %d игроков!*", g_iSnipersMin)
return false;
}
else if( iAwpNum >= g_iSnipersMax){
client_print(id, print_center, "*Превышен лимит снайперок в команде!*")
return false;
}
return true;
}
public block_maps(){
new map[32];
new BlockMap[][] = { BLOCK_MAPS };
rh_get_mapname(map, charsmax(map));
for(new i; i < sizeof BlockMap; i++){
if(containi(map, BlockMap[i]) != -1) {
return;
}
}
EnableHookChain(Hook_HasRestrictItem);
}
Последнее редактирование: