From 0a279b8568cc0fcfd417aa5779cfd95a379fba50 Mon Sep 17 00:00:00 2001 From: Jackz Date: Mon, 21 Jun 2021 20:15:16 -0500 Subject: [PATCH] epi: Add an extra player hud --- plugins/l4d2_extraplayeritems.smx | Bin 17403 -> 20196 bytes scripting/l4d2_extraplayeritems.sp | 172 +++++++++++++++++++++++++++-- 2 files changed, 162 insertions(+), 10 deletions(-) diff --git a/plugins/l4d2_extraplayeritems.smx b/plugins/l4d2_extraplayeritems.smx index c9e5666f40186dd8bc81dc45f90c28d755a87240..06d8aef570a4ec5ae091f2c50ef49ce29fb02919 100644 GIT binary patch literal 20196 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 hR+oOHAyKC)9->> Overwrites previous extra kits, 1 -> Adds onto previous extra kits", FCVAR_NONE, true, 0.0, true, 1.0); - hUpdateMinPlayers = CreateConVar("l4d2_extraitems_updateminplayers", "1", "Should the plugin update abm's cvar min_players convar to the player count?\n 0 -> NO, 1 -> YES", FCVAR_NONE, true, 0.0, true, 1.0); + hUpdateMinPlayers = CreateConVar("l4d2_extraitems_updateminplayers", "1", "Should the plugin update abm\'s cvar min_players convar to the player count?\n 0 -> NO, 1 -> YES", FCVAR_NONE, true, 0.0, true, 1.0); hMinPlayersSaferoomDoor = CreateConVar("l4d2_extraitems_doorunlock_percent", "0.75", "The percent of players that need to be loaded in before saferoom door is opened.\n 0 to disable", FCVAR_NONE, true, 0.0, true, 1.0); hSaferoomDoorWaitSeconds = CreateConVar("l4d2_extraitems_doorunlock_wait", "55", "How many seconds after to unlock saferoom door. 0 to disable", FCVAR_NONE, true, 0.0); hSaferoomDoorAutoOpen = CreateConVar("l4d2_extraitems_doorunlock_open", "0", "Controls when the door automatically opens after unlocked. Add bits together.\n0 = Never, 1 = When timer expires, 2 = When all players loaded in", FCVAR_NONE, true, 0.0); - + hEPIHudState = CreateConVar("l4d2_extraitems_hudstate", "1", "Controls when the hud displays.\n0 -> OFF, 1 = When 5+ players, 2 = ALWAYS", FCVAR_NONE, true, 0.0, true, 2.0); if(hUpdateMinPlayers.BoolValue) { hMinPlayers = FindConVar("abm_minplayers"); if(hMinPlayers != null) PrintDebug(DEBUG_INFO, "Found convar abm_minplayers"); @@ -116,8 +127,15 @@ public void OnPluginStart() { if(isLateLoaded) { for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) { + GetPlayerInventory(i); SDKHook(i, SDKHook_WeaponEquip, Event_Pickup); + } + } + int count = GetRealSurvivorsCount(); + int threshold = hEPIHudState.IntValue == 1 ? 5 : 0; + if(hEPIHudState.IntValue > 0 && count > threshold && updateHudTimer == null) { + updateHudTimer = CreateTimer(EXTRA_PLAYER_HUD_UPDATE_INTERVAL, Timer_UpdateHud, _, TIMER_REPEAT); } } @@ -129,15 +147,17 @@ public void OnPluginStart() { #if defined DEBUG_LEVEL RegAdminCmd("sm_epi_setkits", Command_SetKitAmount, ADMFLAG_CHEATS, "Sets the amount of extra kits that will be provided"); - RegAdminCmd("sm_epi_lock", Command_ToggleDoorLocks, ADMFLAG_CHEATS, "Toggle all toggle's lock state"); + RegAdminCmd("sm_epi_lock", Command_ToggleDoorLocks, ADMFLAG_CHEATS, "Toggle all toggle\'s lock state"); RegAdminCmd("sm_epi_kits", Command_GetKitAmount, ADMFLAG_CHEATS); RegAdminCmd("sm_epi_items", Command_RunExtraItems, ADMFLAG_CHEATS); #endif + } public void OnPluginEnd() { delete weaponMaxClipSizes; delete ammoPacks; + L4D2_RunScript("ModeHUD <- { Fields = { } }; HUDSetLayout(ModeHUD); HUDPlace( g_ModeScript.HUD_RIGHT_BOT, 0.72, 0.79, 0.25, 0.2 ); g_ModeScript"); } ///////////////////////////////////// @@ -248,8 +268,22 @@ public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadca CreateTimer(0.5, Timer_GiveClientKit, user); SDKHook(client, SDKHook_WeaponEquip, Event_Pickup); } + int count = GetRealSurvivorsCount(); + int threshold = hEPIHudState.IntValue == 1 ? 5 : 0; + if(hEPIHudState.IntValue > 0 && count > threshold && updateHudTimer == null) { + updateHudTimer = CreateTimer(EXTRA_PLAYER_HUD_UPDATE_INTERVAL, Timer_UpdateHud, _, TIMER_REPEAT); + } + GetPlayerInventory(client); } +public Action Event_ItemPickup(Event event, const char[] name, bool dontBroadcast) { + int client = GetClientOfUserId(event.GetInt("userid")); + if(client > 0) { + GetPlayerInventory(client); + } +} + + public Action L4D_OnIsTeamFull(int team, bool &full) { if(team == 2 && full) { full = false; @@ -279,6 +313,7 @@ public Action Timer_UpdateMinPlayers(Handle hdl) { #if defined DEBUG PrintDebug(DEBUG_GENERIC, "update abm_minplayers -> %d", abmExtraCount); #endif + //Create the extra player hud hMinPlayers.IntValue = abmExtraCount; } } @@ -588,7 +623,6 @@ public Action Hook_Use(int entity, int activator, int caller, UseType type, floa AcceptEntityInput(entity, "Close"); ClientCommand(activator, "play ui/menu_invalid.wav"); PrintHintText(activator, "Waiting for players"); - float percentIn = float(playersLoadedIn) / float(playerstoWaitFor); return Plugin_Handled; } @@ -633,11 +667,46 @@ void UnlockDoor(int entity, int flag) { PopulateItems(); } -int FindCabinetIndex(int cabinetId) { - for(int i = 0; i < sizeof(cabinets); i++) { - if(cabinets[i].id == cabinetId) return i; +public Action Timer_UpdateHud(Handle h) { + int threshold = hEPIHudState.IntValue == 1 ? 4 : 0; + if(hEPIHudState.IntValue == 0 || abmExtraCount <= threshold) { + L4D2_RunScript("ModeHUD <- { Fields = { } }; HUDSetLayout(ModeHUD); HUDPlace( g_ModeScript.HUD_RIGHT_BOT, 0.72, 0.79, 0.25, 0.2 ); g_ModeScript"); + updateHudTimer = null; + return Plugin_Handled; } - return -1; + char players[512]; + char data[32]; + char prefix[16]; + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) { + data[0] = '\0'; + prefix[0] = '\0'; + int health = GetClientRealHealth(i); + if(IsFakeClient(i) && HasEntProp(i, Prop_Send, "m_humanSpectatorUserID")) { + int client = GetClientOfUserId(GetEntProp(i, Prop_Send, "m_humanSpectatorUserID")); + if(client > 0) { + i = client; + Format(prefix, sizeof(prefix), "[IDLE] "); + } + } + Format(prefix, sizeof(prefix), "%s%N: ", prefix, i); + //TOOD: Move to bool instead of ent prop + if(!IsPlayerAlive(i)) + Format(data, sizeof(data), "Dead"); + else if(GetEntProp(i, Prop_Send, "m_bIsOnThirdStrike") == 1) + Format(data, sizeof(data), "%d HP (b&&w)", health); + else if(GetEntProp(i, Prop_Send, "m_isIncapacitated") == 1) { + Format(data, sizeof(data), "%d HP (incapped)", health); + }else{ + Format(data, sizeof(data), "%d HP", health); + } + + Format(players, sizeof(players), "%s\\n%s%s [%s/%s/%s]", players, prefix, data, items[i].throwable, items[i].usable, items[i].consumable); + } + } + // Format(buffer, sizeof(buffer), "ModeHUD <- { Fields = { player = { slot = g_ModeScript.HUD_FAR_LEFT, dataval = \"%s\", flags = g_ModeScript.HUD_FLAG_ALIGN_LEFT | g_ModeScript.HUD_FLAG_NOBG, name = \"player1\" } } }; HUDSetLayout( ModeHUD ); HUDPlace( g_ModeScript.HUD_MID_BOX , 0.75 , 0.6 , 0.25 , 0.1 ); g_ModeScript", players); + L4D2_RunScript("ModeHUD <- { Fields = { players = { slot = g_ModeScript.HUD_RIGHT_BOT, dataval = \"%s\", flags = g_ModeScript.HUD_FLAG_ALIGN_LEFT | g_ModeScript.HUD_FLAG_TEAM_SURVIVORS | g_ModeScript.HUD_FLAG_NOBG, name = \"players\" } } }; HUDSetLayout( ModeHUD ); HUDPlace( g_ModeScript.HUD_RIGHT_BOT, 0.72, 0.79, 0.25, 0.2 ); g_ModeScript", players); + return Plugin_Continue; } /////////////////////////////////////////////////////////////////////////////// @@ -807,4 +876,87 @@ stock float GetAverageHP() { } } return float(totalHP) / float(clients); +} + +stock int GetClientRealHealth(int client) { + //First filter -> Must be a valid client, successfully in-game and not an spectator (The dont have health). + if(!client + || !IsValidEntity(client) + || !IsClientInGame(client) + || !IsPlayerAlive(client) + || IsClientObserver(client)) + { + return -1; + } + + //If the client is not on the survivors team, then just return the normal client health. + if(GetClientTeam(client) != 2) + { + return GetClientHealth(client); + } + + //First, we get the amount of temporal health the client has + float buffer = GetEntPropFloat(client, Prop_Send, "m_healthBuffer"); + + //We declare the permanent and temporal health variables + float TempHealth; + int PermHealth = GetClientHealth(client); + + //In case the buffer is 0 or less, we set the temporal health as 0, because the client has not used any pills or adrenaline yet + if(buffer <= 0.0) + { + TempHealth = 0.0; + } + + //In case it is higher than 0, we proceed to calculate the temporl health + else + { + //This is the difference between the time we used the temporal item, and the current time + float difference = GetGameTime() - GetEntPropFloat(client, Prop_Send, "m_healthBufferTime"); + + //We get the decay rate from this convar (Note: Adrenaline uses this value) + float decay = GetConVarFloat(FindConVar("pain_pills_decay_rate")); + + //This is a constant we create to determine the amount of health. This is the amount of time it has to pass + //before 1 Temporal HP is consumed. + float constant = 1.0/decay; + + //Then we do the calcs + TempHealth = buffer - (difference / constant); + } + + //If the temporal health resulted less than 0, then it is just 0. + if(TempHealth < 0.0) + { + TempHealth = 0.0; + } + + //Return the value + return RoundToFloor(PermHealth + TempHealth); +} + +int FindCabinetIndex(int cabinetId) { + for(int i = 0; i < sizeof(cabinets); i++) { + if(cabinets[i].id == cabinetId) return i; + } + return -1; +} + +void GetPlayerInventory(int client) { + char item[16]; + GetClientWeaponName(client, 2, item, sizeof(item)); + items[client].throwable[0] = CharToUpper(item[7]); + items[client].throwable[1] = '\0'; + + GetClientWeaponName(client, 3, item, sizeof(item)); + + items[client].usable[0] = CharToUpper(item[7]); + items[client].usable[1] = '\0'; + + GetClientWeaponName(client, 4, item, sizeof(item)); + char c = CharToUpper(item[7]); + if(items[client].usable[0] != c) { + items[client].consumable[0] = c; + items[client].consumable[1] = '\0'; + } } \ No newline at end of file