From 3ea9678b53059b338b131a5fec4b15432382f471 Mon Sep 17 00:00:00 2001 From: Jackz Date: Sun, 28 Mar 2021 14:59:35 -0500 Subject: [PATCH] survivor_identity_fix: Fix edge cases in the passing - Swap models on player_spawn and door_open - Swamp right before death (prevents the kick on round_end) --- plugins/l4d_survivor_identity_fix.smx | Bin 10181 -> 10529 bytes scripting/l4d_survivor_identity_fix.sp | 66 +++++++++++++++++-------- 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/plugins/l4d_survivor_identity_fix.smx b/plugins/l4d_survivor_identity_fix.smx index e15beefe5362adb252f4a33c7b61e03cc0b99359..f4bc83e6695579399889dff6f4b782ce32af6d25 100644 GIT binary patch literal 10529 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 M^|KTZz-jsa04rU<&j0`b literal 10181 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 TbYss5V0{0u{)(DI+4g?`3iS+i diff --git a/scripting/l4d_survivor_identity_fix.sp b/scripting/l4d_survivor_identity_fix.sp index 81dace4..5291070 100644 --- a/scripting/l4d_survivor_identity_fix.sp +++ b/scripting/l4d_survivor_identity_fix.sp @@ -63,6 +63,8 @@ public void OnPluginStart() HookEvent("player_first_spawn", Event_PlayerFirstSpawn); HookEvent("player_disconnect", Event_PlayerDisconnect); HookEvent("finale_start", Event_FinaleStart); + HookEvent("player_spawn", Event_PlayerSpawn); + HookEvent("player_death", Event_PlayerDeath, EventHookMode_Pre); if(isLateLoad) { for(int i = 1; i <= MaxClients; i++) { @@ -235,40 +237,62 @@ public void OnClientCookiesCached(int client) { } //Prevent issues with L4D1 characters being TP'd and stuck in brain dead form static bool IsTemporarilyL4D2[MAXPLAYERS]; //Use index 0 to state if its activated +static char currentMap[16]; public void OnMapStart() { - char map[16]; - GetCurrentMap(map, sizeof(map)); - if(StrEqual(map, "c6m3_port")) { - UnhookEvent("door_open", Event_DoorOpen); + for(int i = 0; i < sizeof(survivor_models); i++) { + PrecacheModel(survivor_models[i], true); + } + + GetCurrentMap(currentMap, sizeof(currentMap)); + if(StrEqual(currentMap, "c6m3_port")) { HookEvent("door_open", Event_DoorOpen); } + } -public Action Event_DoorOpen(Event event, const char[] name, bool dontBroadcast) { - for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) { - int playerType = GetEntProp(i, Prop_Send, "m_survivorCharacter"); - //If character is L4D1 Character (4: bill, etc..) then swap - if(playerType > 3) { - SetEntProp(i, Prop_Send, "m_survivorCharacter", playerType - 4); - IsTemporarilyL4D2[i] = true; - } +public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + SwapL4D1Survivor(client); +} +public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { + if(StrEqual(currentMap, "c6m3_port")) { + int client = GetClientOfUserId(event.GetInt("userid")); + if(GetClientTeam(client) == 2) { + SwapL4D1Survivor(client); + } + } + return Plugin_Continue; +} + +public void Event_DoorOpen(Event event, const char[] name, bool dontBroadcast) { + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && !IsTemporarilyL4D2[i]) { + SwapL4D1Survivor(i); } } - IsTemporarilyL4D2[0] = true; UnhookEvent("door_open", Event_DoorOpen); } //On finale start: Set back to their L4D1 character. public Action Event_FinaleStart(Event event, const char[] name, bool dontBroadcast) { - if(IsTemporarilyL4D2[0]) { - for(int i = 0; i <= MaxClients; i++) { - if(i > 0 && IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && IsTemporarilyL4D2[i]) { - int playerType = GetEntProp(i, Prop_Send, "m_survivorCharacter"); - SetEntProp(i, Prop_Send, "m_survivorCharacter", playerType + 4); - } - IsTemporarilyL4D2[i] = false; + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) { + RevertL4D1Survivor(i); } } } +void SwapL4D1Survivor(int client) { + int playerType = GetEntProp(client, Prop_Send, "m_survivorCharacter"); + //If character is L4D1 Character (4: bill, etc..) then swap + if(playerType > 3) { + SetEntProp(client, Prop_Send, "m_survivorCharacter", playerType - 4); + IsTemporarilyL4D2[client] = true; + } +} +void RevertL4D1Survivor(int client) { + if(IsTemporarilyL4D2[client]) { + int playerType = GetEntProp(client, Prop_Send, "m_survivorCharacter"); + SetEntProp(client, Prop_Send, "m_survivorCharacter", playerType + 4); + } +} //Either use preferred model OR find the least-used. public Action Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid"));