diff --git a/plugins/l4d2_population_control.smx b/plugins/l4d2_population_control.smx new file mode 100644 index 0000000..8d9b7fe Binary files /dev/null and b/plugins/l4d2_population_control.smx differ diff --git a/scripting/l4d2_population_control.sp b/scripting/l4d2_population_control.sp new file mode 100644 index 0000000..e9be57b --- /dev/null +++ b/scripting/l4d2_population_control.sp @@ -0,0 +1,53 @@ +#pragma semicolon 1 +#pragma newdecls required + +//#define DEBUG + +#define PLUGIN_VERSION "1.0" + +#include +#include +//#include + +public Plugin myinfo = +{ + name = "L4D2 Population Control", + author = "jackzmc", + description = "", + version = PLUGIN_VERSION, + url = "" +}; + +static ConVar hPercentTotal; +static ConVar hPercentClown; +static ConVar hPercentMud; + +public void OnPluginStart() { + EngineVersion g_Game = GetEngineVersion(); + if(g_Game != Engine_Left4Dead2) { + SetFailState("This plugin is for L4D2 only."); + } + PrecacheModel("models/infected/common_male_clown.mdl"); + PrecacheModel("models/infected/common_male_mud.mdl"); + + + hPercentTotal = CreateConVar("l4d2_population_global_chance", "1.0", "The % chance that any the below chances occur.\n0.0 = NEVER, 1.0: ALWAYS"); + hPercentClown = CreateConVar("l4d2_population_clowns", "0.0", "The % chance that a common spawns as a clown.\n0.0 = OFF, 1.0 = ALWAYS", FCVAR_NONE, true, 0.0, true, 1.0); + hPercentMud = CreateConVar("l4d2_population_mud", "0.0", "The % chance that a common spawns as a mud zombie.\n0.0 = OFF, 1.0 = ALWAYS", FCVAR_NONE, true, 0.0, true, 1.0); +} + +public void OnEntityCreated(int entity, const char[] classname) { + if (StrEqual(classname, "infected")) { + char m_ModelName[PLATFORM_MAX_PATH]; + GetEntPropString(entity, Prop_Data, "m_ModelName", m_ModelName, sizeof(m_ModelName)); + PrintToConsoleAll("Infected -> %s", m_ModelName); + if(GetRandomFloat() <= hPercentTotal.FloatValue) { + float spawnPercentage = GetRandomFloat(); + if(spawnPercentage <= hPercentClown.FloatValue) { + SetEntityModel(entity, "models/infected/common_male_clown.mdl"); + }else if(spawnPercentage <= hPercentMud.FloatValue) { + SetEntityModel(entity, "models/infected/common_male_mud.mdl"); + } + } + } +} \ No newline at end of file