From 4a99d6bf4896b18652f6f90e90b016b9b61b1e3a Mon Sep 17 00:00:00 2001 From: Jackz Date: Fri, 19 Feb 2021 11:05:06 -0600 Subject: [PATCH] l4d2_population_control: Fix precache crash by preventing model overwrites on load --- plugins/l4d2_population_control.smx | Bin 3702 -> 4318 bytes scripting/l4d2_population_control.sp | 62 +++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 9 deletions(-) diff --git a/plugins/l4d2_population_control.smx b/plugins/l4d2_population_control.smx index c25ac39c1b53db253b4a52d737cc9422a17c0a19..bb0d6dc0a5d06db9319267f27bacc898980ae109 100644 GIT binary patch literal 4318 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 delta 3559 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 Precache %s", INFECTED_MODELS[i]); PrecacheModel(INFECTED_MODELS[i], true); } + for(int i = 0; i < 3; i++) { + PrintToServer(">>> Precache %s", INFECTED_MODELS[i]); + PrecacheModel(WORKER_MODELS[i], true); + } + IsDoneLoading = true; +} +public void OnMapEnd() { + IsDoneLoading = false; } public void OnEntityCreated(int entity, const char[] classname) { - if (StrEqual(classname, "infected")) { + if (StrEqual(classname, "infected") && IsDoneLoading) { char m_ModelName[PLATFORM_MAX_PATH]; GetEntPropString(entity, Prop_Data, "m_ModelName", m_ModelName, sizeof(m_ModelName)); if(GetRandomFloat() <= hPercentTotal.FloatValue) { @@ -59,6 +94,15 @@ public void OnEntityCreated(int entity, const char[] classname) { SetEntityModel(entity, INFECTED_MODELS[Common_Clown]); }else if(spawnPercentage <= hPercentMud.FloatValue) { SetEntityModel(entity, INFECTED_MODELS[Common_Mud]); + }else if(spawnPercentage <= hPercentCeda.FloatValue) { + SetEntityModel(entity, INFECTED_MODELS[Common_Ceda]); + }else if(spawnPercentage <= hPercentWorker.FloatValue) { + //worker has multiple models: + SetEntityModel(entity, WORKER_MODELS[GetRandomInt(0,2)]); + }else if(spawnPercentage <= hPercentRiot.FloatValue) { + SetEntityModel(entity, INFECTED_MODELS[Common_Riot]); + }else if(spawnPercentage <= hPercentJimmy.FloatValue) { + SetEntityModel(entity, INFECTED_MODELS[Common_Jimmy]); } } }