Воспользовавшись сервисом
http://godtony.mooo.com/lysis/ я посмотрев на структуру хардмода версии 0.2.7
Для начала небольшое количество логов который ведет плагин. логи нужны для тестов и отладки плагина но для релиза их нужно отключать. Явно видна попытка использовать использующих данную сборку как бесплатных бета тестеров.

Log("crashwatcher.sp / CWOnMapStart() / crash found", 1);
Log("crashwatcher.sp / Command_LastMap() / 1", 4);
Log("crashwatcher.sp / ClearFile() / 1", 4);
Log("crashwatcher.sp / ClearFile() / file == INVALID_HANDLE", 4);
Log("crashwatcher.sp / LoadFile() / 1", 4);
Log("crashwatcher.sp / LoadFile() / file == INVALID_HANDLE", 1);
Log("coop_stats.inc / CStatsOnMapStart() / 1", 2);
Log("coop_stats.inc / CStatsOnMapStart() / StartFirstRoundTimer()", 2);
Log("coop_stats.inc / Command_AddPoints() / 1", 4);
Log("coop_stats.inc / Command_AddPoints() / Top15Used", 3);
Log("coop_stats.inc / Command_RemoveDeadStats() / Top15Used", 2);
Log("coop_stats.inc / Command_RemoveDeadStats() / players_data_used", 2);
Log("coop_stats.inc / Command_RemoveDeadStats() / No data found (points_data)", 2);
Log("coop_stats.inc / Command_RemoveDeadStats() / !FileToKeyValues(PData, PlayersFilePath)", 2);
Log("coop_stats.inc / Command_StatsCheckLimit() / 1", 3);
Log("coop_stats.inc / Command_StatsCheckLimit() / Top15Used", 2);
Log("coop_stats.inc / ClearAllPoints() / Top15Used", 2);
Log("coop_stats.inc / ClearAllPoints() / 1", 1);
Log("coop_stats.inc / ClearAllPoints() / No data found.", 1);
Log("coop_stats.inc / CSRoundStartEvent() / 1", 2);
Log("coop_stats.inc / CSRoundStartEvent() / 2 - if (real_clients_count > 0)", 2);
Log("coop_stats.inc / StartFirstRoundTimer() / 1", 2);
Log("coop_stats.inc / StartFirstRoundTimer() / 2 - NOT FirstRoundTimerEnabled", 2);
Log("coop_stats.inc / CSGameInstructorNodraw() / 1", 2);
Log("coop_stats.inc / CSGameInstructorNodraw() / 2 - rounds == 1 && IsFirstMapFlag", 2);
Log("hardmod.sp / OnPluginStart() / 6 - end", 4);
Log("hardmod.sp / OnMapStart() / 1", 2);
Log("hardmod.sp / OnMapStart() / 2 - end", 4);
Log("hardmod.sp / Action:TimedCheckRounds() / 1", 4);
Log("hardmod.sp / Action:TimedCheckRounds() / 2 - IsServerProcessing()", 4);
Log("hardmod.sp / Action:TimedCheckRounds() / 3 - end", 4);
Log("hardmod.sp / Action:TimedCheckTag()", 4);
Log("hardmod.sp / Action:TimedConfigRun()", 4)
Log("hardmod.sp / Action:TimedMOTD()", 4);
Log("hardmod.sp / Action:Event_ServerAddBan()", 4);
Log("hardmod.sp / OnClientDisconnect()", 5);
Log("hardmod.sp / OnClientDisconnect_Post()", 5);
Log("hardmod.sp / OnClientConnected()", 5);
Log("hardmod.sp / OnClientAuthorized()", 5);
Log("hardmod.sp / OnClientPutInServer()", 5);
Log("hardmod.sp / Cvar_Gamemode_Changed()", 5);
Log("hardmod.sp / Command_Suicide()", 4);
Log("hardmod.sp / Command_Version()", 4);
Log("hardmod.sp / Command_BlackWhite()", 4);
Log("hardmod.sp / Command_Vocalize()", 5);
Log("hardmod.sp / Command_ChangeLevel()", 3);
Log("hardmod.sp / Command_Exit()", 3);
Log("hardmod.sp / Command_AFK()", 4);
Log("hardmod.sp / Command_SAY()", 4);
Log("hardmod.sp / Command_KickFakeClients()", 3);
Log("hardmod.sp / Command_KickExtraBots()", 3);
Log("hardmod.sp / Command_KickTeam()", 3);
Log("hardmod.sp / Command_Test()", 3);
Log("hardmod.sp / Command_KillTarget()", 3);
Log("hardmod.sp / Command_ToggleFirstMap()", 3);
Log("hardmod.sp / Command_GameMode()", 3);
Log("hardmod.sp / Event_FinalWin()", 4);
Log("hardmod.sp / Event_MapTransition()", 2);
Log("hardmod.sp / Event_PlayerTransitioned()", 4);
Log("hardmod.sp / Event_RoundFreezeEnd()", 4);
Log("hardmod.sp / Event_RoundStart()", 2);
Log("hardmod.sp / AddServerTagFunc()", 5);
Log("hardmod.sp / sv_tags_changed()", 5);
Log("hardmod.sp / IsMapFinishedChanged()", 5);
Log("hardmod.sp / CheckPointReached()", 4);
Log("hardmod.sp / Event_CheckPoint()", 6);
Log("hardmod.sp / Event_PlayerNowIt()", 5);
Log("hardmod.sp / Event_PlayerDeath()", 5);
Log("hardmod.sp / Event_HealSuccess()", 4);
Log("hardmod.sp / Event_DefibrillatorUsed()", 4);
Log("hardmod.sp / Event_ReviveSuccess()", 4);
Log("hardmod.sp / Event_PlayerFirstSpawn()", 5);
Log("hardmod.sp / Event_PlayerSpawn()", 5);
Log("hardmod.sp / Event_PlayerLedgeGrab()", 5);
Log("hardmod.sp / Event_GameInstructorNodraw()", 4);
Log("hardmod.sp / Event_ServerCvar()", 5);
Подозрительная проверка на данный стим ид
if (StrEqual(auth, "STEAM_1:1:26184783", false)) {
SetClientInfo(client, "name", "?????????");
}
Также какаято интересная проверка на режим игры ( хотя хардмод предназначен для кооператива в вверсусе всеравно его не получится использовать. )
GetGameMode()
{
decl String:GameMode[16];
new Handle:gamecvar_mp_gamemode = FindConVar("mp_gamemode");
GetConVarString(gamecvar_mp_gamemode, GameMode, 13);
if (StrEqual(GameMode, "coop", false) == 1) {
return 1;
}
if (StrEqual(GameMode, "realism", false) == 1) {
return 2;
}
if (StrEqual(GameMode, "survival", false) == 1) {
return 3;
}
if (StrEqual(GameMode, "versus", false) == 1) {
return 4;
}
if (StrEqual(GameMode, "teamversus", false) == 1) {
return 5;
}
if (StrEqual(GameMode, "scavenge", false) == 1) {
return 6;
}
if (StrEqual(GameMode, "teamscavenge", false) == 1) {
return 7;
}
if (StrEqual(GameMode, "mutation3", false) == 1) {
return 8;
}
if (StrEqual(GameMode, "mutation12", false) == 1) {
return 9;
}
return 0;
}
Также какието лишнии команды в разной разновидности.

RegAdminCmd("sm_cmd", Command_CheatCmd, 16384, "sm_cmd command parameters", "", 0);
RegAdminCmd("sm_cmdall", Command_CheatCmdAll, 16384, "sm_cmdall command parameters", "", 0);
RegAdminCmd("sm_cmdtarget", Command_CheatCmdTarget, 16384, "sm_cmdtarget <target: name or target in-game> command parameters", "", 0);
RegAdminCmd("sm_spawnnewitem", Command_SpawnNewItem, 4096, "sm_spawnnewitem <itemname>", "", 0);
RegAdminCmd("sm_spawnitem", Command_SpawnItem, 64, "sm_spawnitem <parameters>", "", 0);
RegAdminCmd("sm_convertbantime", Command_ConvertBanTime, 16384, "sm_convertbantime", "", 0);
RegAdminCmd("sm_grenadelauncher", Command_GrenadeLauncher, 8192, "sm_grenadelauncher", "", 0);
RegAdminCmd("sm_awp", Command_AWP, 8192, "sm_swp", "", 0);
RegAdminCmd("sm_scout", Command_Scout, 8192, "sm_scout", "", 0);
RegAdminCmd("sm_m60", Command_M60, 8192, "sm_m60", "", 0);
RegAdminCmd("sm_spas", Command_SPAS, 8192, "sm_spas", "", 0);
RegAdminCmd("sm_mp5", Command_MP5, 8192, "sm_mp5", "", 0);
RegAdminCmd("sm_uzi", Command_Uzi, 8192, "sm_uzi", "", 0);
RegAdminCmd("sm_uzi2", Command_Uzi2, 8192, "sm_uzi2", "", 0);
RegAdminCmd("sm_shotgun", Command_Shotgun, 8192, "sm_shotgun", "", 0);
RegAdminCmd("sm_pistol", Command_Pistol, 8192, "sm_pistol", "", 0);
RegAdminCmd("sm_magnum", Command_Magnum, 8192, "sm_magnum", "", 0);
RegAdminCmd("sm_chainsaw", Command_Chainsaw, 8192, "sm_chainsaw", "", 0);
RegAdminCmd("sm_crowbar", Command_Crowbar, 8192, "sm_crowbar", "", 0);
RegAdminCmd("sm_freeman", Command_Crowbar, 8192, "sm_crowbar", "", 0);
RegAdminCmd("sm_null", Command_Null, 8192, "sm_null", "", 0);
RegAdminCmd("sm_left4dead", Command_Left4Dead, 8192, "sm_left4dead", "", 0);
RegAdminCmd("sm_left4dead2", Command_Left4Dead2, 8192, "sm_left4dead2", "", 0);
RegConsoleCmd("sm_bw", Command_BlackWhite, "", 0);
RegConsoleCmd("sm_id", Command_ID, "", 0);
RegAdminCmd("sm_kickfakeclients", Command_KickFakeClients, 4, "sm_kickfakeclients (1 - spectators, 2 - survivors, 3 - infected)", "", 0);
RegAdminCmd("sm_kickextrabots", Command_KickExtraBots, 4, "sm_kickextrabots", "", 0);
RegAdminCmd("sm_kickteam", Command_KickTeam, 4, "sm_kickteam (1 - spectators, 2 - survivors, 3 - infected)", "", 0);
RegAdminCmd("sm_test", Command_Test, 8192, "sm_test", "", 0);
Типо доп информация о плагине
PrintToServer("# COMPILED ON SOURCEMOD : %s", "1.4.2-dev");
PrintToServer("# MAX SUPPORTED PLAYERS : %d", 32);
PrintToChatAll("HardMod (%d) activated", 1404);
PrintToServer("HardMod (%d) activated", Version);
PrintToChatAll("HardMod/COOP Stats (%d) activated", 57);
PrintToServer("HardMod/COOP Stats (%d) activated", 57);
PrintToChatAll("HardMod/Autodifficulty activated");
PrintToServer("HardMod/Autodifficulty activated");
PrintToChatAll("HardMod/Votes activated");
PrintToServer("HardMod/Votes activated");
PrintHintText(client, "HARDMOD VERSION %s (%d)nSTATS VERSION: %dnLatest Hardmod version: %s", "0.2.7", Version, 57, "
http://webj.narod.ru/projects/hardmod/");
PrintToChat(client, "HARDMOD VERSION %s (%d)nSTATS VERSION: %dnLatest Hardmod version: %s", "0.2.7", Version, 57, "
http://webj.narod.ru/projects/hardmod/");
Даже поверхностный просмотр текущего хардмода показал что он немало ресурсов сервера использует не по прямому назначению. А ведь я еще ничего не сказал о самой структуре скриптов где не видны никакие попытки оптимизировать потребление ресурсов сервера.
Добавлено спустя 10 минут 48 секунд:
Хардмод версии 0.2.3 лишен большинства перечисленных здесь недостатков и проверен в действии в течении почти года. Те недостатки которые в нем замечены вполне исправляются в обход его и сервер вполне корректно работает.
Добавлено спустя 5 минут 2 секунды:
Также используемый в твоей сборки плагин l4d2_events по какойто интересной причине дублирует несколько функций хардмода. внимательно присмотритесь к
public CheatOnPluginStart()
RegAdminCmd("sm_cheatcmd", Command_CheatCmd, 8192, "sm_cheatcmd command parameters", "", 0);
RegAdminCmd("sm_spawnnewitem", Command_SpawnNewItem, 4096, "sm_spawnnewitem <itemname>", "", 0);
RegAdminCmd("sm_spawnitem", Command_SpawnItem, 64, "sm_spawnitem <parameters>", "", 0);

{
name = "L4D2 Events",
description = "L4D2 Events",
author = "Jonny",
version = "1.0",
url = ""
};
new bool:developerinfoflag;
new Handle:sm_developer;
new Handle:Plugin_Mode;
new Handle:Configs_Dir;
public __ext_core_SetNTVOptional()
{
MarkNativeAsOptional("GetFeatureStatus");
MarkNativeAsOptional("RequireFeature");
MarkNativeAsOptional("AddCommandListener");
MarkNativeAsOptional("RemoveCommandListener");
VerifyCoreVersion();
return 0;
}
Float:operator*(Float:,_:)(Float:oper1, oper2)
{
return FloatMul(oper1, float(oper2));
}
bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
{
return strcmp(str1, str2, caseSensitive) == 0;
}
StrCat(String:buffer[], maxlength, String:source[])
{
new len = strlen(buffer);
if (len >= maxlength) {
return 0;
}
return Format(buffer[len], maxlength - len, "%s", source);
}
public SMDeveloperChanged(Handle:hVariable, String:strOldValue[], String:strNewValue[])
{
if (GetConVarInt(sm_developer) >= 1) {
developerinfoflag = 1;
} else {
developerinfoflag = 0;
}
return 0;
}
PrintToAdmins(String:format[])
{
if (developerinfoflag) {
decl String:buffer[192];
new i = 1;
while (i <= MaxClients) {
new flags = GetAdminFlags(GetUserAdmin(i), AdmAccessMode:1);
new var1;
if (IsClientConnected(i)) {
new var2;
if (IsClientInGame(i)) {
VFormat(buffer, 192, format, 2);
PrintToChat(i, "? %s", buffer);
i++;
}
i++;
}
i++;
}
return 0;
}
return 0;
}
public Action:TimedExecCfg(Handle:timer, client)
{
ServerCommand("exec postload.cfg");
return Action:0;
}
public Action:TimedKick(Handle:timer, client)
{
KickClient(client, "");
return Action:0;
}
public RemoveEntity(entity)
{
new var1;
if (IsValidEntity(entity)) {
RemoveEdict(entity);
}
return 0;
}
public Action:TimedRemoveEdict(Handle:timer, entity)
{
new var1;
if (IsValidEntity(entity)) {
RemoveEdict(entity);
}
return Action:0;
}
public Action:TimedRemoveEdictIfDead(Handle:timer, client, entity)
{
new var1;
if (IsValidEntity(entity)) {
RemoveEdict(entity);
}
return Action:0;
}
public GetAdminLvl(client)
{
new user_level = GetAdminImmunityLevel(GetUserAdmin(client));
return user_level;
}
public GetClientZC(client)
{
new var1;
if (!IsValidEntity(client)) {
return 0;
}
return GetEntProp(client, PropType:0, "m_zombieClass", 4, 0);
}
public bool:IsIncapacitated(client)
{
new isIncap = GetEntProp(client, PropType:0, "m_isIncapacitated", 4, 0);
if (isIncap) {
return true;
}
return false;
}
public bool:IsGoingToDie(client)
{
new var1;
if (!IsValidEntity(client)) {
return false;
}
new m_isGoingToDie = GetEntProp(client, PropType:0, "m_isGoingToDie", 4, 0);
if (m_isGoingToDie > 1) {
return true;
}
return false;
}
public bool:CheckGameMode(String:GameModeName[])
{
decl String:GameMode[24];
new Handle:gamecvar_mp_gamemode = FindConVar("mp_gamemode");
GetConVarString(gamecvar_mp_gamemode, GameMode, 24);
if (StrEqual(GameMode, GameModeName, false) == 1) {
return true;
}
return false;
}
GetAnyClient()
{
new i = 1;
while (i < MaxClients) {
new var1;
if (IsClientConnected(i)) {
return i;
}
i++;
}
return 0;
}
GetAnyRealClient()
{
new i = 1;
while (i < MaxClients) {
new var1;
if (IsClientConnected(i)) {
new var2;
if (GetClientTeam(i) == 2) {
return i;
}
i++;
}
i++;
}
return 0;
}
FakeClientCount()
{
new fake_client_count = 0;
new i = 1;
while (i < MaxClients) {
if (IsClientConnected(i)) {
if (IsFakeClient(i)) {
fake_client_count++;
i++;
}
i++;
}
i++;
}
return fake_client_count;
}
public ServerKickClient(client)
{
ServerCommand("kickid %d", GetClientUserId(client));
return 0;
}
public KickFakeClients(kick_mode)
{
new i = 1;
while (i < MaxClients) {
if (IsClientConnected(i)) {
if (IsFakeClient(i)) {
if (0 > kick_mode) {
ServerKickClient(i);
i++;
}
if (GetClientTeam(i) == kick_mode) {
ServerKickClient(i);
i++;
}
i++;
}
i++;
}
i++;
}
return 0;
}
public KickTeam(team)
{
new i = 1;
while (i < MaxClients) {
new var1;
if (IsClientConnected(i)) {
if (team == GetClientTeam(i)) {
ServerKickClient(i);
i++;
}
i++;
}
i++;
}
return 0;
}
public Action:timerRemovePrecacheParticle(Handle:timer, Particle)
{
new var1;
if (IsValidEntity(Particle)) {
AcceptEntityInput(Particle, "Kill", -1, -1, 0);
}
return Action:0;
}
public CheatOnPluginStart()
{
RegAdminCmd("sm_cheatcmd", Command_CheatCmd, 8192, "sm_cheatcmd command parameters", "", 0);
RegAdminCmd("sm_spawnnewitem", Command_SpawnNewItem, 4096, "sm_spawnnewitem <itemname>", "", 0);
RegAdminCmd("sm_spawnitem", Command_SpawnItem, 64, "sm_spawnitem <parameters>", "", 0);
return 0;
}
public Action:Command_CheatCmd(client, args)
{
if (args < 1) {
return Action:3;
}
decl String:command_text[192];
GetCmdArg(1, command_text, 192);
if (args > 1) {
decl String:parameters_text[192];
decl String:temp_text[40];
new i = 2;
while (i <= args) {
GetCmdArg(i, temp_text, 40);
StrCat(parameters_text, 192, temp_text);
i++;
}
CheatCMD(client, command_text, parameters_text);
return Action:0;
}
CheatCMD(client, command_text, "");
return Action:0;
}
public bool:IsCheat(String:Command[])
{
if (GetCommandFlags(Command) & 16384) {
return true;
}
return false;
}
/* ERROR! unknown operator */
function "Command_SpawnNewItem" (number 26)
public Action:Command_SpawnItem(client, args)
{
if (args < 8) {
ReplyToCommand(client, "[SM] Usage: sm_spawnitem <parameters>");
return Action:3;
}
decl Float:VecDirection[3];
decl Float:VecOrigin[3];
decl Float:VecAngles[3];
decl String:modelname[64];
GetCmdArg(1, modelname, 64);
decl String:TempString[20];
GetCmdArg(2, TempString, 20);
VecDirection = StringToFloat(TempString);
GetCmdArg(3, TempString, 20);
VecDirection[4] = StringToFloat(TempString);
GetCmdArg(4, TempString, 20);
VecDirection[8] = StringToFloat(TempString);
GetCmdArg(5, TempString, 20);
VecOrigin = StringToFloat(TempString);
GetCmdArg(6, TempString, 20);
VecOrigin[4] = StringToFloat(TempString);
GetCmdArg(7, TempString, 20);
VecOrigin[8] = StringToFloat(TempString);
GetCmdArg(8, TempString, 20);
VecAngles = 0;
VecAngles[4] = StringToFloat(TempString);
VecAngles[8] = 0;
new spawned_item = CreateEntityByName(modelname, -1);
DispatchKeyValue(spawned_item, "model", "Custom_Spawn");
DispatchKeyValueFloat(spawned_item, "MaxPitch", 360);
DispatchKeyValueFloat(spawned_item, "MinPitch", -360);
DispatchKeyValueFloat(spawned_item, "MaxYaw", 90);
DispatchSpawn(spawned_item);
DispatchKeyValueVector(spawned_item, "Angles", VecAngles);
DispatchSpawn(spawned_item);
TeleportEntity(spawned_item, VecOrigin, NULL_VECTOR, NULL_VECTOR);
return Action:0;
}
public CheatCMDRealClient(client, String:Command[], String:Parameters[])
{
new realclient = GetAnyRealClient();
if (realclient) {
CheatCMD(realclient, Command, Parameters);
return 0;
}
return 0;
}
public CheatCMD(client, String:Command[], String:Parameters[])
{
new CheatCMD_flags = GetCommandFlags(Command);
SetCommandFlags(Command, CheatCMD_flags & -16385);
if (!client) {
client = GetAnyClient();
}
if (!client) {
new fakeclient = CreateFakeClient("cheatcmd_fake_client");
if (fakeclient) {
FakeClientCommand(fakeclient, "%s %s", Command, Parameters);
if (FakeClientCount() > 1) {
ServerKickClient(fakeclient);
}
SetCommandFlags(Command, CheatCMD_flags);
return 0;
}
}
if (client) {
FakeClientCommand(client, "%s %s", Command, Parameters);
} else {
ServerCommand("%s %s", Command, Parameters);
}
SetCommandFlags(Command, CheatCMD_flags);
return 0;
}
/* ERROR! unknown operator */
function "SpawnItem" (number 30)
public OnPluginStart()
{
decl String:cvar_sm_logfile_events[256];
if (StrEqual(cvar_sm_logfile_events, "", false) != 1)
{
decl String:file[256];
BuildPath(PathType:0, file, 256, cvar_sm_logfile_events);
LogToFileEx(file, "OnPluginStart()");
}
decl String:moddir[24];
GetGameFolderName(moddir, 24);
if (!StrEqual(moddir, "left4dead2", false)) {
SetFailState("Use this plugin for Left 4 Dead 2 only.");
}
CreateConVar("l4d2_advanced", "1.0", "[L4D2] Events Version", 403776, false, 0, false, 0);
Plugin_Mode = CreateConVar("l4d2_advanced_mode", "1", "", 262464, false, 0, false, 0);
Configs_Dir = CreateConVar("l4d2_config_dir", "events", "", 262464, false, 0, false, 0);
HookL4D2Events();
return 0;
}
public HookSourceServerEvents()
{
HookEvent("server_spawn", EventHook:15, EventHookMode:1);
HookEvent("server_shutdown", EventHook:15, EventHookMode:1);
HookEvent("server_cvar", EventHook:15, EventHookMode:1);
HookEvent("server_addban", EventHook:15, EventHookMode:1);
HookEvent("server_removeban", EventHook:15, EventHookMode:1);
HookEvent("player_connect", EventHook:15, EventHookMode:1);
HookEvent("player_info", EventHook:15, EventHookMode:1);
HookEvent("player_disconnect", EventHook:15, EventHookMode:1);
HookEvent("player_activate", EventHook:15, EventHookMode:1);
HookEvent("player_say", EventHook:15, EventHookMode:1);
return 0;
}
public HookL4D2Events()
{
HookEvent("round_freeze_end", EventHook:15, EventHookMode:1);
HookEvent("round_start_pre_entity", EventHook:15, EventHookMode:1);
HookEvent("round_start_post_nav", EventHook:15, EventHookMode:1);
HookEvent("nav_generate", EventHook:15, EventHookMode:1);
HookEvent("round_end_message", EventHook:15, EventHookMode:1);
HookEvent("round_end", EventHook:15, EventHookMode:1);
HookEvent("difficulty_changed", EventHook:15, EventHookMode:1);
HookEvent("finale_start", EventHook:15, EventHookMode:1);
HookEvent("finale_rush", EventHook:15, EventHookMode:1);
HookEvent("finale_escape_start", EventHook:15, EventHookMode:1);
HookEvent("finale_vehicle_incoming", EventHook:15, EventHookMode:1);
HookEvent("finale_vehicle_ready", EventHook:15, EventHookMode:1);
HookEvent("finale_vehicle_leaving", EventHook:15, EventHookMode:1);
HookEvent("finale_win", EventHook:15, EventHookMode:1);
HookEvent("mission_lost", EventHook:15, EventHookMode:1);
HookEvent("finale_radio_start", EventHook:15, EventHookMode:1);
HookEvent("finale_radio_damaged", EventHook:15, EventHookMode:1);
HookEvent("final_reportscreen", EventHook:15, EventHookMode:1);
HookEvent("map_transition", EventHook:15, EventHookMode:1);
HookEvent("player_transitioned", EventHook:15, EventHookMode:1);
HookEvent("player_left_start_area", EventHook:15, EventHookMode:1);
HookEvent("witch_spawn", EventHook:15, EventHookMode:1);
HookEvent("witch_killed", EventHook:15, EventHookMode:1);
HookEvent("tank_spawn", EventHook:15, EventHookMode:1);
HookEvent("create_panic_event", EventHook:15, EventHookMode:1);
HookEvent("weapon_spawn_visible", EventHook:15, EventHookMode:1);
HookEvent("gameinstructor_draw", EventHook:15, EventHookMode:1);
HookEvent("gameinstructor_nodraw", EventHook:15, EventHookMode:1);
HookEvent("request_weapon_stats", EventHook:15, EventHookMode:1);
HookEvent("player_talking_state", EventHook:15, EventHookMode:1);
HookEvent("weapon_pickup", EventHook:15, EventHookMode:1);
HookEvent("hunter_punched", EventHook:15, EventHookMode:1);
HookEvent("tank_killed", EventHook:15, EventHookMode:1);
HookEvent("gauntlet_finale_start", EventHook:15, EventHookMode:1);
HookEvent("mounted_gun_start", EventHook:15, EventHookMode:1);
HookEvent("mounted_gun_overheated", EventHook:15, EventHookMode:1);
HookEvent("punched_clown", EventHook:15, EventHookMode:1);
HookEvent("charger_killed", EventHook:15, EventHookMode:1);
HookEvent("spitter_killed", EventHook:15, EventHookMode:1);
HookEvent("jockey_killed", EventHook:15, EventHookMode:1);
HookEvent("triggered_car_alarm", EventHook:15, EventHookMode:1);
HookEvent("panic_event_finished", EventHook:15, EventHookMode:1);
HookEvent("song_played", EventHook:15, EventHookMode:1);
return 0;
}
public ExecuteCFG(String:FileName[])
{
if (GetConVarInt(Plugin_Mode) < 1) {
return 0;
}
decl String:cvar_l4d2_config_dir[256];
GetConVarString(Configs_Dir, cvar_l4d2_config_dir, 256);
decl String:CfgFileName[256];
decl String:CfgFullFileName[256];
Format(CfgFileName, 256, "%s/%s.cfg", cvar_l4d2_config_dir, FileName);
Format(CfgFullFileName, 256, "cfg/%s/%s.cfg", cvar_l4d2_config_dir, FileName);
PrintToServer("exec %s", CfgFileName);
if (FileExists(CfgFullFileName, false)) {
ServerCommand("exec %s", CfgFileName);
}
return 0;
}
public Action:Event_ExecConfig(Handle:event, String:name[], bool:dontBroadcast)
{
PrintToAdmins("l4d2_events ( %s )", name);
ExecuteCFG(name);
return Action:0;
}