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);
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);
@ -132,7 +132,7 @@ public void OnPluginEnd()
}
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_cvarKnifeRegenTime.RemoveChangeHook(ConVarChanged_Max_Regen);
@ -188,8 +188,6 @@ public void OnClientPutInServer(int client)
if (g_bInWarmup)
return;
SDKHook(client, SDKHook_SpawnPost, SDKHookCB_ClientSpawnPost);
MenuSource iOpenMenu = GetClientMenu(client);
if (iOpenMenu != MenuSource_None && iOpenMenu == MenuSource_RawPanel) //probably failnadefriday
@ -216,41 +214,34 @@ public void OnClientPutInServer(int client)
delete hNotifyPanel;
}
public void SDKHookCB_ClientSpawnPost(int client)
public Action EventHook_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
RequestFrame(RequestFrame_ClientSpawnPost, client);
}
public void RequestFrame_ClientSpawnPost(int client)
{
static int iTickCount = 0;
if (iTickCount <= 16)
{
iTickCount++;
RequestFrame(RequestFrame_ClientSpawnPost, client);
if (!g_bEnabled || g_bInWarmup)
return;
int serial = GetClientSerial(GetClientOfUserId(GetEventInt(hEvent, "userid")));
CreateTimer(1.0, EventHook_PlayerSpawnPost, serial);
}
iTickCount = 0;
if (!IsClientInGame(client) || GetClientTeam(client) != CS_TEAM_CT)
public Action EventHook_PlayerSpawnPost(Handle hTimer, int serial)
{
int client = GetClientFromSerial(serial);
if (!client || !IsClientInGame(client) || GetClientTeam(client) != CS_TEAM_CT)
return;
int ent = GivePlayerItem(client, "weapon_smokegrenade");
EquipPlayerWeapon(client, ent);
//PrintToChatAll("%N spawned in and got a smoke", client);
PrintToChatAll("1. %N gets %d", client, ent);
char sHumanClassName[64];
ZRT_GetClientClassSectionName(client, sHumanClassName, sizeof(sHumanClassName));
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);
//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)
@ -269,7 +260,6 @@ public void OnClientDisconnect(int client)
g_iPlayerKnives[client] = 0;
g_bIgnoredFirstUpdate[client] = false;
SDKUnhook(client, SDKHook_SpawnPost, SDKHookCB_ClientSpawnPost);
}
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;
}
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)
{
static int iTimePassed = 0;