From 010c0c9d4fcb2667fd7121f9580b5e1c6ceb73b1 Mon Sep 17 00:00:00 2001 From: Jackz Date: Tue, 12 Jan 2021 21:27:46 -0600 Subject: [PATCH] l4d2_extraplayeritems: Finally I believe have a working solution --- plugins/l4d2_extraplayeritems.smx | Bin 5970 -> 6526 bytes scripting/l4d2_extraplayeritems.sp | 86 ++++++++++++++++++++--------- 2 files changed, 61 insertions(+), 25 deletions(-) diff --git a/plugins/l4d2_extraplayeritems.smx b/plugins/l4d2_extraplayeritems.smx index 227d8941fd4c3ffb8afad70a10ea59b6fe22f4bc..382ae7ff8d59a715e9d2d953bf60645712e808d2 100644 GIT binary patch delta 6379 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 diff --git a/scripting/l4d2_extraplayeritems.sp b/scripting/l4d2_extraplayeritems.sp index ef3112a..ef6b23a 100644 --- a/scripting/l4d2_extraplayeritems.sp +++ b/scripting/l4d2_extraplayeritems.sp @@ -4,6 +4,7 @@ //#define DEBUG #define PLUGIN_VERSION "1.0" +#define MAX_ENTITY_LIMIT 2000 #include #include @@ -21,7 +22,7 @@ public Plugin myinfo = }; static ConVar hExtraItemBasePercentage; -static int extraKitsAmount, totalSurvivorCount, isFailureRound; +static int extraKitsAmount = -1, totalSurvivorCount, isFailureRound; /* on first start: Everyone has a kit, new comers also get a kit. @@ -40,7 +41,6 @@ public void OnPluginStart() HookEvent("player_spawn", Event_PlayerSpawn); HookEvent("player_first_spawn", Event_PlayerFirstSpawn); - HookEvent("player_disconnect", Event_Disconnect); HookEvent("round_end", Event_RoundEnd); HookEvent("player_entered_checkpoint", Event_EnterSaferoom); HookEvent("heal_success", Event_HealFinished); @@ -55,30 +55,35 @@ public void OnPluginStart() //////////////////////////////////// //Called on the first spawn in a mission. +bool startingKitsGiven = false; public Action Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { - //int client = GetClientOfUserId(event.GetInt("userid")); - totalSurvivorCount++; + if(L4D_IsFirstMapInScenario() && !startingKitsGiven) { + CreateTimer(0.5, Timer_GiveStartingKits); + } +} +public Action Timer_GiveStartingKits(Handle hdl) { + for(int i = 1; i < MaxClients + 1; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2){ + if(!DoesClientHaveKit(i)) { + CheatCommand(i, "give", "first_aid_kit", ""); + } + } + } } //Provide extra kits when a player spawns (aka after a map transition) public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); - if(extraKitsAmount > 0) { - char wpn[32]; - if(GetClientWeaponName(client, 3, wpn, sizeof(wpn))) { - if(!StrEqual(wpn, "weapon_first_aid_kit")) { - CheatCommand(client, "give", "first_aid_kit", ""); - extraKitsAmount--; - if(extraKitsAmount == 0) { - extraKitsAmount = -1; - } + if(GetClientTeam(client) == 2 && extraKitsAmount > 0) { + if(!DoesClientHaveKit(client)) { + CheatCommand(client, "give", "first_aid_kit", ""); + extraKitsAmount--; + if(extraKitsAmount == 0) { + extraKitsAmount = -1; } - } + } } } -public Action Event_Disconnect(Event event, const char[] name, bool dontBroadcast) { - totalSurvivorCount--; -} //TODO: Possibly switch to game_init or game_newmap ? public void OnMapStart() { @@ -86,11 +91,13 @@ public void OnMapStart() { if(L4D_IsFirstMapInScenario()) { if(isFailureRound) isFailureRound = false; - else + else { totalSurvivorCount = 0; + startingKitsGiven = false; + } } - if(totalSurvivorCount > 4) + if(totalSurvivorCount > 4 && GetEntityCount() < MAX_ENTITY_LIMIT) CreateTimer(20.0, Timer_AddExtraCounts); } @@ -99,9 +106,10 @@ public void Event_EnterSaferoom(Event event, const char[] name, bool dontBroadca int client = GetClientOfUserId(event.GetInt("userid")); if(client > 0) { if(extraKitsAmount == -1 && L4D_IsInLastCheckpoint(client)) { - if(totalSurvivorCount > 4) { - extraKitsAmount = totalSurvivorCount - 4; - PrintToServer("Player entered saferoom. An extra %d kits will be provided on heal", extraKitsAmount); + int survivors = GetSurvivorsCount(); + if(survivors > 4) { + extraKitsAmount = survivors - 4; + PrintToServer("Player entered saferoom. An extra %d kits will be provided", extraKitsAmount); } } } @@ -132,19 +140,47 @@ public Action Event_HealFinished(Event event, const char[] name, bool dontBroadc public Action Timer_AddExtraCounts(Handle hd) { float percentage = hExtraItemBasePercentage.FloatValue * totalSurvivorCount; - PrintToServer("Populating extra items based on player count (%d)", totalSurvivorCount); + PrintToServer("Populating extra items based on player count (%d) | Percentage %d", totalSurvivorCount, percentage); char classname[32]; + int entityCount = GetEntityCount(); for(int i = MaxClients + 1; i < 2048; i++) { - if(IsValidEntity(i)) { + if(IsValidEntity(i) && entityCount < MAX_ENTITY_LIMIT) { GetEntityClassname(i, classname, sizeof(classname)); if(StrContains(classname, "_spawn", true) > -1 && !StrEqual(classname, "info_zombie_spawn", true)) { + if(StrEqual(classname, "weapon_melee_spawn")) { + + } int count = GetEntProp(i, Prop_Data, "m_itemCount"); if(GetRandomFloat() < percentage) { PrintToServer("Debug: Incrementing spawn count for %s from %d", classname, count); SetEntProp(i, Prop_Data, "m_itemCount", ++count); } - PrintToServer("%s %d", classname, count); + entityCount++; } } } +} + +///////////////////////////////////// +/// Stocks +//////////////////////////////////// + +stock int GetSurvivorsCount() { + int count = 0; + for(int i = 1; i < MaxClients + 1; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) { + count++; + } + } + return count; +} + +stock bool DoesClientHaveKit(int client) { + char wpn[32]; + if(GetClientWeaponName(client, 3, wpn, sizeof(wpn))) { + if(StrEqual(wpn, "weapon_first_aid_kit")) { + return true; + } + } + return false; } \ No newline at end of file