- Ошибка
-
L 12/25/2018 - 17:47:06: Start of error session.
L 12/25/2018 - 17:47:06: Info (map "de_cbble_winter") (file "addons/amxmodx/logs/error_20181225.log")
L 12/25/2018 - 17:47:06: [FAKEMETA] Invalid entity 7 (no private data)
L 12/25/2018 - 17:47:06: [AMXX] Displaying debug trace (plugin "hlds_awp_off.amxx", version "1.7")
L 12/25/2018 - 17:47:06: [AMXX] Run time error 10: native error (native "get_pdata_int")
L 12/25/2018 - 17:47:06: [AMXX] [0] hlds_awp_off.sma::MenuSelect (line 265)
L 12/25/2018 - 21:33:20: Start of error session.
L 12/25/2018 - 21:33:20: Info (map "de_russka") (file "addons/amxmodx/logs/error_20181225.log")
L 12/25/2018 - 21:33:20: [FAKEMETA] Invalid entity 30 (no private data)
L 12/25/2018 - 21:33:20: [AMXX] Displaying debug trace (plugin "hlds_awp_off.amxx", version "1.7")
L 12/25/2018 - 21:33:20: [AMXX] Run time error 10: native error (native "get_pdata_int")
L 12/25/2018 - 21:33:20: [AMXX] [0] hlds_awp_off.sma::MenuSelect (line 265)
- ОС
- Linux
- Amx Mod X
-
AMX Mod X 1.9.0.5235
- Билд
-
ReHLDS version: 3.4.0.668-dev
- ReGamedll
-
ReGameDLL version: 5.7.0.318-dev
- Версия Metamod
-
Metamod-r v1.3.0.128, API (5:13)
- Список метамодулей
-
[ 1] Reunion RUN - reunion_mm_i386.so v0.1.0.92 ini Start Never
[ 2] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 3] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 4] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC3 ini ANY ANY
[ 5] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5235 ini Start ANY
[ 6] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 7] WHBlocker RUN - whblocker_mm_i386.so v1.5.696 ini Chlvl ANY
[ 8] ReSRDetector RUN - resrdetector_mm_i386.so v0.1.0 ini Chlvl ANY
[ 9] VTC AMXX API RUN - VoiceTranscoderApiProvider_amxx_i386.so v2017 RC pl5 ANY ANY
[10] ReAPI RUN - reapi_amxx_i386.so v5.6.0.160-dev pl5 ANY Never
[11] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl5 ANY Never
[12] MySQL RUN - mysql_amxx_i386.so v1.9.0.5235 pl5 ANY ANY
[13] SQLite RUN - sqlite_amxx_i386.so v1.9.0.5235 pl5 ANY ANY
[14] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5235 pl5 ANY ANY
[15] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5235 pl5 ANY ANY
[16] Engine RUN - engine_amxx_i386.so v1.9.0.5235 pl5 ANY ANY
16 plugins, 16 running
- Список плагинов
-
[ 1] Admin Loader 3.5 neygomon admin_loader.am running
[ 2] DopBan 3.0.3b kanagava dop_ban.amxx running
[ 3] FreshBans 1.4.0b kanagava fresh_bans_140. running
[ 4] ScreenMaker 1.1 neygomon screen_maker.am running
[ 5] WebHS 0.1 kanagava fb_web_online.a running
[ 6] ReAimDetector API 0.2.1 ReHLDS Team reaimdetector.a running
[ 7] Ultimate Chats Control 4.7 neygomon ucc.amxx running
[ 8] Advanced Experience Sy 0.5.9 [REA serfreeman1337/s aes_main.amxx running
[ 9] AES: CStrike Addon 0.5.9 [REA serfreeman1337/s aes_exp_cstrike running
[ 10] AES: Admin Tools 0.5.9 [REA serfreeman1337/s aes_exp_editor. running
[ 11] AES: StatsX 0.5.9 [REA serfreeman1337/s aes_statsx_cstr running
[ 12] AES: Informer 0.5.9 [REA serfreeman1337/s aes_informer.am running
[ 13] Info Rank 0.4.5 ConnorMcLeod info_rank.amxx running
[ 14] CSStatsX SQL 0.7.4+1 serfreeman1337 csstatsx_sql.am running
[ 15] Test Vip 0.1 ill testvip_sql.amx running
[ 16] Map Manager: Core 3.0.0 Mistrick map_manager_cor running
[ 17] Map Manager: Scheduler 0.1.0 Mistrick map_manager_sch running
[ 18] Map Manager: Rtv 0.0.4 Mistrick map_manager_rtv running
[ 19] Map Manager: Nominatio 0.0.8 Mistrick map_manager_nom running
[ 20] Map Manager: BlockList 0.0.3 Mistrick map_manager_blo running
[ 21] Map Manager: Online so 0.0.2 Mistrick map_manager_onl running
[ 22] Map Manager: Effects 0.0.8 Mistrick map_manager_eff running
[ 23] Map Manager: Informer 0.0.5 Mistrick map_manager_inf running
[ 24] Map Manager: Advanced 0.0.4 Mistrick map_manager_adv running
[ 25] MM block ext 0.0.1 dev-cs map_manager_blo running
[ 26] Hide HUD/Menu on Vote 1.2 d3m37r4 hide_hud_and_me running
[ 27] Menus Front-End 1.5 neugomon menufront_end.a running
[ 28] Admin Commands 1.9.0.5235 AMXX Dev Team admincmd.amxx running
[ 29] Players Menu 1.7 neugomon players_menu.am running
[ 30] Maps Menu 1.4.1+1 neugomon mapsmenu.amxx running
[ 31] Say me and Say hp 1.4 neygomon sayme.amxx running
[ 32] Stats Configuration 1.9.0.5235 AMXX Dev Team statscfg.amxx running
[ 33] CS Stats Logging 1.9.0.5235 AMXX Dev Team stats_logging.a running
[ 34] AdminFreeLook 1.0 ReHLDS Team adminfreelook.a running
[ 35] Lite Admin ESP 1.0 neygomon admin_esp.amxx running
[ 36] Ping Control 1.31 neygomon Ping_Control.am running
[ 37] Admin Models 1.2 pUzzlik admin_models_v1 running
[ 38] resetscore(ReAPI) 1.0 Phantom resetscore.amxx running
[ 39] Weapon Restrict 1.7 s1lent weapon_rest.amx running
[ 40] Advert Messages 1.22 neygomon adverts.amxx running
[ 41] Auto Demo Recorder 2.3 F@nt0M demo_recorder.a running
[ 42] Kills Counter 1.0 Safety1st killscounter.am running
[ 43] SF Warn Menu 0.1.4f serfreeman1337 sf_admin_warns. running
[ 44] AFK Control 1.4.1 [Rnd neygomon afk_control.amx running
[ 45] Block Advert 1.4 neygomon block_advert.am running
[ 46] Flash Control 2.2 neygomon flash_control.a running
[ 47] [ReAPI]Vip Weapons 3.5 ill Vip_Weapons.amx running
[ 48] Night Damager_Parashut 1.0 ill NightLiteVip.am stopped
[ 49] Steam Bonus 1.1 ill+F@nToM steam_bonus_a2. stopped
[ 50] No Players Map 0.1 X-factor no_players_map. stopped
[ 51] [ReAPI] Round Balancer 1.1 neygomon round_balancer. debug
[ 52] GameName Changer 1.0 neugomon gamename_change running
[ 53] AWPoff 1.7 PAffAEJIkA :3 hlds_awp_off.am debug
[ 54] Killer ScreenFade 0.0.5 Vaqtincha reapi_killer_sc running
[ 55] Yet Another Voteban 1.7 AndrewZ/voed/wop yet_another_vot running
[ 56] Time Pause Plugins 1.0 maFFyoZZyk & Mak time_pause_plug running
[ 57] block ip 0.2 legenda amx_blockip.amx running
[ 58] [ReAPI] Random Weapons 2.4.9 neugomon/h1k3 random_weapons_ running
[ 59] Custom Smoke 1.05 bionext custom_smoke.am running
[ 60] Vip drop take block 1.3 bionext vip_drop_take_b running
[ 61] Lite Translit 2.8+1 neygomon lite_translit.a running
[ 62] Christmas hat 0.3 AMXX.Shop christmas_hat_r running
[ 63] Snow 0.1 floatman snow.amxx running
[ 64] Models Replacement 0.0.2 ConnorMcLeod | V models_replacem running
64 plugins, 61 running
- Автор плагина
- PAffAEJIkA :3 (paffgame)
- Версия плагина
- 1.7 [17.03.18]
- Исходный код
-
#include < amxmodx >
#include < hamsandwich >
#include < fakemeta_util >
#if AMXX_VERSION_NUM < 183
#include < colorchat >
#define MAX_PLAYERS 32
#define client_disconnected client_disconnect
#endif
//■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■//
//#define ALLPLAYERS
/*
Закоментируйте, чтобы для проверки на онлайн брались только люди(ботов, хлтв и спектров считать не будет).
Пример:
Допустим на сервере 5 ботов и 2 человека 1 хлтв.
Дефайн закоментирован: Посчитает, что на сервере 2 из Максимально возможных игроков.
Дефайн раскоментирован: Посчитает, что на сервере 8 игроков из Максимально возможных игроков (5 ботов + 2 человека + 1 хлтв).
Отбирать авп будет ТОЛЬКО У ЛЮДЕЙ в любом случае.
*/
// ^4 - зелёный | ^3 - цвет тимы (КТ - синий | Т - красный | SPEC - серый) | ^1 - жёлтый
#define MSG_PREFIX "^1[^4AWP^1]"
#define MSG_LOWONLINE "У вас^4 отобрано^3 AWP. Причина:^4 низкий онлайн."
#define MSG_LIMIT "У вас^4 отобрано^3 AWP. Причина:^4 превышен лимит."
#define FLAG ADMIN_BAN //Флаг для иммунитета от лимита
#define RETURN_MONEY //Возвращать деньги при отборе авп в конце раунда из-за низкого онлайна? (Закоментируйте, если не хотите, чтобы возвращало деньги)
#if defined RETURN_MONEY
#define MONEY_AWP 4750 //Сколько денег возвращать?
new g_MoneyMsgID;
#endif
//#define PERCENT_PLAYERS
/*
Разкоменитруйте, если хотите чтобы лимит зависил от процента игроков [I am chetko ob'yasnyat']
Например: Онлайн = 10, Процент в кваре(awp_limit_max) = 20
10/100*20 = 2 авп на тиму (2 у терров и 2 у кт)
*/
//#define NOEND //Если разкоментировано, то не будет отбирать АВП в конце раунда из-за низкого онлайна. [Если онлайн ниже чем указан в кваре и человек сам дропнет авп или потеряет ее, то подобрать заного не сможет]
//■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■//
const iMoney = 115;
const iMenu = 205;
const iTeam = 114;
const idRifleMenu = 6;
const idNoMenu = 0;
const OFFSET_LINUX_WEAPONS = 4;
const OFFSET_WEAPONID = 43;
const AWP_COST = 4750;
#define get_menuid(%0) get_pdata_int(%0, iMenu)
#define fm_get_user_team(%0) ETEAMS:get_pdata_int(%0, iTeam)
#define fm_get_weaponid(%0) get_pdata_int(%0, OFFSET_WEAPONID, OFFSET_LINUX_WEAPONS)
#define fm_get_user_money(%0) get_pdata_int(%0 , iMoney)
#define IsPlayer(%0) (0 < %0 < 33)
#define TASK_ID 2281337
enum ETEAMS {
TEAM_TERRORIST = 1,
TEAM_CT,
TEAM_SPECTATOR
};
enum ECVARS {
CVAR_ONLINE = 0,
CVAR_LIMIT_AWP_STATUS,
CVAR_LIMIT_MAX_AWP,
CVAR_LIMIT_IMMUN,
CVAR_BUYTIME
};
enum {
AWP_NONE = 0,
AWP_BUY,
AWP_PICK_UP
};
new gBuy = true;
new sAwp[ETEAMS: TEAM_SPECTATOR], gCount, gCvar[ECVARS], sCvars[ECVARS], gAwp[MAX_PLAYERS + 1], ETEAMS: gTeam[MAX_PLAYERS + 1];
#if defined PERCENT_PLAYERS
new gLimit;
#endif
public plugin_precache(){
register_plugin("AWPoff", "1.7", "PAffAEJIkA :3");
gCvar[CVAR_ONLINE] = register_cvar("awp_players_low", "8"); //Если онлайн ниже указнного в кваре, в конце раунда у всех отберет авп, и запретит ее. (Что бы отключить поставьте 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", "1"); //Включить|Выключить иммунитет от лимита(Людей с флагом не учитывает вообще) [Стандартно включен]
gCvar[CVAR_BUYTIME] = get_cvar_pointer("mp_buytime");
}
public plugin_init(){
new mapname[32];
get_mapname(mapname, charsmax(mapname));
new maps[][] = { "awp", "aim", "35hp", "$" };
for(new i; i < sizeof maps; i++){
if(containi(mapname, maps[i]) != -1){
pause("ad");
return;
}
}
register_logevent("EventRoundStart", 2, "1=Round_Start");
#if !defined NOEND
register_logevent("EventRoundEnd", 2, "1=Round_End");
#endif
register_logevent("EventRestartRound", 2, "1&Restart_Round_");
register_menucmd(register_menuid("BuyRifle", true), (1<<4|1<<5), "BuyRifle_Handle");
register_clcmd("menuselect", "MenuSelect");
register_clcmd("awp", "AwpBuy");
register_clcmd("magnum", "AwpBuy");
RegisterHam(Ham_Item_AddToPlayer, "weapon_awp", "AddToPlayer");
RegisterHam(Ham_RemovePlayerItem, "player", "RemoveItem");
RegisterHam(Ham_Spawn, "player", "SpawnPlayer", true);
register_concmd("awpoff_reload", "load_cvars");
#if defined RETURN_MONEY
g_MoneyMsgID = get_user_msgid("Money");
#endif
}
public plugin_cfg(){
#if AMXX_VERSION_NUM < 183
server_exec();
#endif
load_cvars(0);
}
public load_cvars(id){
sCvars[CVAR_ONLINE] = get_pcvar_num(gCvar[CVAR_ONLINE]);
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_MAX_AWP]);
if(IsPlayer(id))
client_print(id, print_center, "[AWPoff] Cvars have been reloaded!");
}
public client_disconnected(id) if(IsPlayer(id)) minus_awp(id);
public EventRestartRound(){
sAwp[TEAM_CT] = 0;
sAwp[TEAM_TERRORIST] = 0;
arrayset(gAwp, AWP_NONE, sizeof gAwp);
}
public EventRoundStart(){
gBuy = true;
remove_task(TASK_ID);
set_task(get_pcvar_float(gCvar[CVAR_BUYTIME]) * 60.0, "off_buy", TASK_ID);
new pl[32];
get_pl(pl, gCount);
#if defined PERCENT_PLAYERS
const MAX_PERCENT = 100;
gLimit = gCount * sCvars[CVAR_LIMIT_MAX_AWP] / MAX_PERCENT;
#endif
}
public off_buy()
gBuy = false;
#if !defined NOEND
public EventRoundEnd(){
static players[32], cnt;
get_pl(players, cnt);
if(cnt >= sCvars[CVAR_ONLINE])
return PLUGIN_CONTINUE;
for(new i = 0, id; i < cnt; i ++){
id = players[i];
#if defined ALLPLAYERS
if(!is_user_valid(id))
continue;
#endif
if(gAwp[id] == AWP_NONE)
continue;
fm_strip_user_gun(id, CSW_AWP);
#if defined RETURN_MONEY
if(gAwp[id] == AWP_BUY){
new gMoney = fm_get_user_money(id) + MONEY_AWP;
fm_set_user_money(id, gMoney);
}
#endif
client_print_color(id, false, "%s %s", MSG_PREFIX, MSG_LOWONLINE);
}
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_TERRORIST <= fm_get_user_team(players[i]) < TEAM_SPECTATOR)
players1[cnt ++] = players[i];
}
players = players1;
count = cnt;
#endif
}
public SpawnPlayer(id){
if(!is_user_alive(id))
return HAM_IGNORED;
gTeam[id] = fm_get_user_team(id);
return HAM_IGNORED;
}
public AddToPlayer(wId, id){
if(!check_awp(id, AWP_PICK_UP)){
SetHamReturnInteger(0);
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public RemoveItem(id,iEnt){
if(fm_get_weaponid(iEnt) == CSW_AWP)
minus_awp(id);
}
public BuyRifle_Handle(id, key){
if(key != (gTeam[id] == TEAM_TERRORIST ? 4 : 5))
return PLUGIN_CONTINUE;
if(!check_buy(id))
return PLUGIN_CONTINUE; //Чтобы сообщениео нехватке денег или о конце тайма покупки вылазило, было сделано в виде таких проверочек
if(check_awp(id, AWP_BUY))
return PLUGIN_CONTINUE;
set_pdata_int(id, iMenu, idNoMenu);
return PLUGIN_HANDLED;
}
public MenuSelect(id){
if(get_menuid(id) != idRifleMenu)
return PLUGIN_CONTINUE;
new szSlot[3], Slot;
read_argv(true, szSlot, charsmax(szSlot));
Slot = str_to_num(szSlot);
if(Slot != (gTeam[id] == TEAM_TERRORIST ? 5 : 6))
return PLUGIN_CONTINUE;
if(!check_buy(id))
return PLUGIN_CONTINUE; //Чтобы сообщениео нехватке денег или о конце тайма покупки вылазило, было сделано в виде таких проверочек
if(check_awp(id, AWP_BUY))
return PLUGIN_CONTINUE;
set_pdata_int(id, iMenu, idNoMenu);
return PLUGIN_HANDLED;
}
public AwpBuy(id){
if(!check_buy(id))
return PLUGIN_CONTINUE; //Чтобы сообщениео нехватке денег или о конце тайма покупки вылазило, было сделано в виде таких проверочек
if(check_awp(id, AWP_BUY))
return PLUGIN_CONTINUE;
return PLUGIN_HANDLED;
}
//Native's
public plugin_natives()
register_native("awpoff_check", "check_native", true);
public check_native(id)
return check_awp(id, AWP_NONE);
//Native's
check_buy(id){
if(!gBuy) //Ничего умнее не придумал (1)
return false;
new gMoney = fm_get_user_money(id); //Ничего умнее не придумал (2)
if(gMoney < AWP_COST)
return false;
return true;
}
check_awp(id, type){
if(gAwp[id] != AWP_NONE || !is_user_valid(id) || !is_user_alive(id))
return true;
gAwp[id] = type;
if(gCount < sCvars[CVAR_ONLINE])
client_print_color(id, false, "%s %s", MSG_PREFIX, MSG_LOWONLINE);
else if(sCvars[CVAR_LIMIT_AWP_STATUS]){
if(sCvars[CVAR_LIMIT_IMMUN] && 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(type != AWP_NONE)
sAwp[gTeam[id]] ++;
return true;
}else
client_print_color(id, false, "%s %s", MSG_PREFIX, MSG_LIMIT);
}else
return true;
gAwp[id] = AWP_NONE;
return false;
}
minus_awp(id){
if(!is_user_valid(id) || gAwp[id] == AWP_NONE)
return;
gAwp[id] = AWP_NONE;
if(!sCvars[CVAR_LIMIT_AWP_STATUS])
return;
if(sCvars[CVAR_LIMIT_IMMUN] && get_user_flags(id) & FLAG)
return;
sAwp[gTeam[id]] --;
}
stock fm_set_user_money(id, money){
set_pdata_int(id, iMoney, money);
message_begin(MSG_ONE_UNRELIABLE, g_MoneyMsgID, _, id);
write_long(money);
write_byte(true);
message_end();
}
is_user_valid(id){
if(is_user_bot(id)) return false;
if(is_user_hltv(id)) return false;
return true;
}
Вроде все работает, но неприятно когда сыпятся каждый день файлы ошибок. Подскажите, плиз, как решить.
В этой теме было размещено решение! Перейти к решению.