FunMode: fix missing freeze grenade

This commit is contained in:
BotoX 2018-08-10 14:33:01 +02:00
parent ea03209f15
commit 9fc98d50b1

View File

@ -86,7 +86,7 @@ public void OnPluginStart()
g_cvarKnifeRegenTime.AddChangeHook(ConVarChanged_Max_Regen); g_cvarKnifeRegenTime.AddChangeHook(ConVarChanged_Max_Regen);
HookEvent("player_death", EventHook_PlayerDeath, EventHookMode_Pre); HookEvent("player_death", EventHook_PlayerDeath, EventHookMode_Pre);
HookEvent("round_start", EventHook_RoundStart, EventHookMode_Post); HookEvent("player_spawn", EventHook_PlayerSpawn, EventHookMode_Post);
g_hNotifyTimer = CreateTimer(0.25, Timer_UpdateKnives, _, TIMER_REPEAT); g_hNotifyTimer = CreateTimer(0.25, Timer_UpdateKnives, _, TIMER_REPEAT);
@ -132,7 +132,7 @@ public void OnPluginEnd()
} }
UnhookEvent("player_death", EventHook_PlayerDeath, EventHookMode_Pre); UnhookEvent("player_death", EventHook_PlayerDeath, EventHookMode_Pre);
UnhookEvent("round_start", EventHook_RoundStart, EventHookMode_Post); UnhookEvent("player_spawn", EventHook_PlayerSpawn, EventHookMode_Post);
g_cvarMaxKnives.RemoveChangeHook(ConVarChanged_Max_Regen); g_cvarMaxKnives.RemoveChangeHook(ConVarChanged_Max_Regen);
g_cvarKnifeRegenTime.RemoveChangeHook(ConVarChanged_Max_Regen); g_cvarKnifeRegenTime.RemoveChangeHook(ConVarChanged_Max_Regen);
@ -188,8 +188,6 @@ public void OnClientPutInServer(int client)
if (g_bInWarmup) if (g_bInWarmup)
return; return;
SDKHook(client, SDKHook_SpawnPost, SDKHookCB_ClientSpawnPost);
MenuSource iOpenMenu = GetClientMenu(client); MenuSource iOpenMenu = GetClientMenu(client);
if (iOpenMenu != MenuSource_None && iOpenMenu == MenuSource_RawPanel) //probably failnadefriday if (iOpenMenu != MenuSource_None && iOpenMenu == MenuSource_RawPanel) //probably failnadefriday
@ -216,41 +214,34 @@ public void OnClientPutInServer(int client)
delete hNotifyPanel; delete hNotifyPanel;
} }
public void SDKHookCB_ClientSpawnPost(int client) public Action EventHook_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{ {
RequestFrame(RequestFrame_ClientSpawnPost, client); if (!g_bEnabled || g_bInWarmup)
}
public void RequestFrame_ClientSpawnPost(int client)
{
static int iTickCount = 0;
if (iTickCount <= 16)
{
iTickCount++;
RequestFrame(RequestFrame_ClientSpawnPost, client);
return; return;
int serial = GetClientSerial(GetClientOfUserId(GetEventInt(hEvent, "userid")));
CreateTimer(1.0, EventHook_PlayerSpawnPost, serial);
} }
iTickCount = 0; public Action EventHook_PlayerSpawnPost(Handle hTimer, int serial)
{
if (!IsClientInGame(client) || GetClientTeam(client) != CS_TEAM_CT) int client = GetClientFromSerial(serial);
if (!client || !IsClientInGame(client) || GetClientTeam(client) != CS_TEAM_CT)
return; return;
int ent = GivePlayerItem(client, "weapon_smokegrenade"); int ent = GivePlayerItem(client, "weapon_smokegrenade");
EquipPlayerWeapon(client, ent); EquipPlayerWeapon(client, ent);
//PrintToChatAll("%N spawned in and got a smoke", client); PrintToChatAll("1. %N gets %d", client, ent);
char sHumanClassName[64]; char sHumanClassName[64];
ZRT_GetClientClassSectionName(client, sHumanClassName, sizeof(sHumanClassName)); ZRT_GetClientClassSectionName(client, sHumanClassName, sizeof(sHumanClassName));
if (StrEqual(sHumanClassName, "freeze_human")) if (StrEqual(sHumanClassName, "freeze_human"))
{ {
int ent = GivePlayerItem(client, "weapon_smokegrenade"); // needs ammo_smokegrenade_max 2 ent = GivePlayerItem(client, "weapon_smokegrenade"); // needs ammo_smokegrenade_max 2
EquipPlayerWeapon(client, ent); EquipPlayerWeapon(client, ent);
//PrintToChatAll("%N spawned in as the freeze human and got another smoke", client); PrintToChatAll("2. %N gets %d", client, ent);
} }
} }
int MenuHandler_NotifyPanel(Menu hMenu, MenuAction iAction, int iParam1, int iParam2) int MenuHandler_NotifyPanel(Menu hMenu, MenuAction iAction, int iParam1, int iParam2)
@ -269,7 +260,6 @@ public void OnClientDisconnect(int client)
g_iPlayerKnives[client] = 0; g_iPlayerKnives[client] = 0;
g_bIgnoredFirstUpdate[client] = false; g_bIgnoredFirstUpdate[client] = false;
SDKUnhook(client, SDKHook_SpawnPost, SDKHookCB_ClientSpawnPost);
} }
public void OnEntityCreated(int entity, const char[] sClassName) public void OnEntityCreated(int entity, const char[] sClassName)
@ -410,42 +400,6 @@ public Action EventHook_PlayerDeath(Event hEvent, const char[] sName, bool bDont
return Plugin_Continue; return Plugin_Continue;
} }
public Action EventHook_RoundStart(Event hEvent, const char[] sName, bool bDontBroadcast)
{
if (g_bInWarmup || !g_bEnabled)
return Plugin_Continue;
RequestFrame(RequestFrame_OnRoundStart, 16);
return Plugin_Continue;
}
public void RequestFrame_OnRoundStart(int iTicksToWait)
{
static int iTickCount = 0;
if (iTickCount <= iTicksToWait)
{
iTickCount++;
RequestFrame(RequestFrame_OnRoundStart, 16);
return;
}
iTickCount = 0;
for (int i = 1; i <= MaxClients; i++)
{
if (!IsClientInGame(i) || IsFakeClient(i))
continue;
if (GetClientTeam(i) != CS_TEAM_CT)
continue;
//int ent = GivePlayerItem(i, "weapon_smokegrenade"); // is done on post-spawn now
//EquipPlayerWeapon(i, ent);
}
}
public Action Timer_OnWarmupEnd(Handle hThis) public Action Timer_OnWarmupEnd(Handle hThis)
{ {
static int iTimePassed = 0; static int iTimePassed = 0;