From 1c31a1ef462f40c3f83fe233decbdbc46abc212a Mon Sep 17 00:00:00 2001 From: Jackz Date: Fri, 29 Sep 2023 17:56:57 -0500 Subject: [PATCH] Remove public, show motd on versus, cleanup --- plugins/L4D2Tools.smx | Bin 24870 -> 36074 bytes scripting/L4D2Tools.sp | 156 ++++++++++++++++++++++------------------- 2 files changed, 84 insertions(+), 72 deletions(-) diff --git a/plugins/L4D2Tools.smx b/plugins/L4D2Tools.smx index 54659a1b5fe51d7cab2ddef28ff17fbd86cf72be..e767767f21ff88e3728abc95c1eadf639b5a78b5 100644 GIT binary patch literal 36074 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 literal 24870 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 QJSUmN5zG4j0C4e*xl&9MsQ>@~ diff --git a/scripting/L4D2Tools.sp b/scripting/L4D2Tools.sp index 2f7303a..f3dfcf3 100644 --- a/scripting/L4D2Tools.sp +++ b/scripting/L4D2Tools.sp @@ -5,11 +5,21 @@ #define PLUGIN_VERSION "1.0" +#define PRECACHE_SOUNDS_COUNT 5 +char PRECACHE_SOUNDS[PRECACHE_SOUNDS_COUNT][] = { + "custom/meow1.mp3", + "custom/xen_teleport.mp3", + "custom/mariokartmusic.mp3", + "custom/spookyscaryskeletons.mp3", + "custom/wearenumberone2.mp3" +}; + #include #include #include #include #include +#include #include "l4d_survivor_identity_fix.inc" char ReserveLevels[4][] = { @@ -46,7 +56,7 @@ enum L4DModelId { } static ArrayList LasersUsed; -static ConVar hLaserNotice, hFinaleTimer, hFFNotice, hMPGamemode, hPingDropThres, hForceSurvivorSet, hPlayerLimit, hSVMaxPlayers, hHideMotd; +static ConVar hLaserNotice, hFinaleTimer, hFFNotice, hPingDropThres, hForceSurvivorSet, hPlayerLimit, hSVMaxPlayers, hHideMotd, hGamemode; static int iFinaleStartTime, botDropMeleeWeapon[MAXPLAYERS+1], iHighPingCount[MAXPLAYERS+1]; ReserveMode reserveMode; static bool isHighPingIdle[MAXPLAYERS+1], isL4D1Survivors; @@ -113,7 +123,7 @@ public void OnPluginStart() { LasersUsed = new ArrayList(1, 0); SteamIDs = new StringMap(); - ConVar hGamemode = FindConVar("mp_gamemode"); + hGamemode = FindConVar("mp_gamemode"); hGamemode.GetString(gamemode, sizeof(gamemode)); hGamemode.AddChangeHook(Event_GamemodeChange); Event_GamemodeChange(hGamemode, gamemode, gamemode); @@ -134,7 +144,7 @@ public void OnPluginStart() { for(int client = 1; client < MaxClients; client++) { if(IsClientConnected(client) && IsClientInGame(client) && GetClientTeam(client) == 2) { if(IsFakeClient(client)) { - SDKHook(client, SDKHook_OnTakeDamage, Event_OnTakeDamage); + SDKHook(client, SDKHook_OnTakeDamage, Event_OnTakeDamageBot); SDKHook(client, SDKHook_WeaponDrop, Event_OnWeaponDrop); } else { SDKHook(client, SDKHook_WeaponEquip, Event_OnWeaponEquip); @@ -159,11 +169,11 @@ public void OnPluginStart() { CreateTimer(8.0, Timer_CheckPlayerPings, _, TIMER_REPEAT); } -public void Event_GamemodeChange(ConVar cvar, const char[] oldValue, const char[] newValue) { +void Event_GamemodeChange(ConVar cvar, const char[] oldValue, const char[] newValue) { cvar.GetString(gamemode, sizeof(gamemode)); } -public void Event_PlayerLimitChange(ConVar cvar, const char[] oldValue, const char[] newValue) { +void Event_PlayerLimitChange(ConVar cvar, const char[] oldValue, const char[] newValue) { if(cvar.IntValue > 0) { hSVMaxPlayers.IntValue = cvar.IntValue; } @@ -209,15 +219,15 @@ public void OnClientAuthorized(int client, const char[] auth) { } } -public Action Command_SetServerPermissions(int client, int args) { +Action Command_SetServerPermissions(int client, int args) { if(args > 0) { char arg1[32]; GetCmdArg(1, arg1, sizeof(arg1)); if(StrEqual(arg1, "public", false)) { reserveMode = Reserve_None; - }else if(StrContains(arg1, "noti", false) > -1 || StrContains(arg1, "watch", false) > -1) { + } else if(StrContains(arg1, "noti", false) > -1 || StrContains(arg1, "watch", false) > -1) { reserveMode = Reserve_Watch; - }else if(StrContains(arg1, "admin", false) > -1) { + } else if(StrContains(arg1, "admin", false) > -1) { reserveMode = Reserve_AdminOnly; for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i)) { @@ -225,7 +235,7 @@ public Action Command_SetServerPermissions(int client, int args) { SteamIDs.SetValue(arg1, i); } } - }else if(StrEqual(arg1, "private", false)) { + } else if(StrEqual(arg1, "private", false)) { reserveMode = Reserve_Private; for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && !IsFakeClient(i)) { @@ -233,7 +243,7 @@ public Action Command_SetServerPermissions(int client, int args) { SteamIDs.SetValue(arg1, i); } } - }else { + } else { ReplyToCommand(client, "Usage: sm_reserve [public/notify/admin/private] or no arguments to view current reservation."); return Plugin_Handled; } @@ -245,7 +255,7 @@ public Action Command_SetServerPermissions(int client, int args) { } -public Action Timer_CheckPlayerPings(Handle timer) { +Action Timer_CheckPlayerPings(Handle timer) { if(StrEqual(gamemode, "hideandseek")) return Plugin_Continue; if(hPingDropThres.IntValue != 0) { for (int i = 1; i <= MaxClients; i++ ) { @@ -257,7 +267,7 @@ public Action Timer_CheckPlayerPings(Handle timer) { iHighPingCount[i] = 0; }else if(ping > hPingDropThres.IntValue) { if(iHighPingCount[i]++ > 2) { - PrintToChat(i, "Due to your high ping (%d ms), you have been moved to AFK.", ping); + PrintToChat(i, "Due to your high ping (%d ms) you have been moved to AFK.", ping); PrintToChat(i, "You will be automatically switched back once your ping restores"); SDKCall(hGoAwayFromKeyboard, i); //PrintToChat(i, "Type /pingignore to disable this feature."); @@ -273,10 +283,10 @@ public Action Timer_CheckPlayerPings(Handle timer) { return Plugin_Continue; } -public void CVC_FFNotice(ConVar convar, const char[] oldValue, const char[] newValue) { +void CVC_FFNotice(ConVar convar, const char[] oldValue, const char[] newValue) { if(convar.IntValue > 0) { HookEvent("player_hurt", Event_PlayerHurt); - }else { + } else { UnhookEvent("player_hurt", Event_PlayerHurt); } } @@ -284,14 +294,16 @@ public void CVC_FFNotice(ConVar convar, const char[] oldValue, const char[] newV public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) { LasersUsed.Clear(); } -public Action Command_RespawnAll(int client, int args) { + +Action Command_RespawnAll(int client, int args) { L4D_CreateRescuableSurvivors(); return Plugin_Handled; } -public Action Command_SwapPlayer(int client, int args) { + +Action Command_SwapPlayer(int client, int args) { if(args < 1) { ReplyToCommand(client, "Usage: sm_swap [another player (default: self)] [\"silent\"]"); - }else{ + } else { char arg1[64], arg2[64], arg3[8]; GetCmdArg(1, arg1, sizeof(arg1)); GetCmdArg(2, arg2, sizeof(arg2)); @@ -348,7 +360,7 @@ public Action Command_SwapPlayer(int client, int args) { return Plugin_Handled; } -public Action Command_SkipOutro(int client, int args) { +Action Command_SkipOutro(int client, int args) { for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i)) { ClientCommand(i, "skipouttro"); @@ -356,7 +368,7 @@ public Action Command_SkipOutro(int client, int args) { } return Plugin_Handled; } -public Action Command_ListClientModels(int client, int args) { +Action Command_ListClientModels(int client, int args) { char model[64]; for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2) { @@ -366,7 +378,7 @@ public Action Command_ListClientModels(int client, int args) { } return Plugin_Handled; } -public Action Command_PlaySound(int client, int args) { +Action Command_PlaySound(int client, int args) { if(args < 2) { ReplyToCommand(client, "Usage: sm_playsound "); }else{ @@ -406,17 +418,17 @@ public Action Command_PlaySound(int client, int args) { else EmitSoundToClient(target, arg2, target); strcopy(lastSound[target], 64, arg2); - ReplyToCommand(client, "Playing '%s' to %N %s", arg2, target, arg3); } } - ShowActivity2(client, target_name, "\"%L\" playing sound \"%s\" to \"%s\"", client, arg2, target_name); + CShowActivity2(client, "[SM] ", "playing sound {olive}%s{default} to {yellow}%s", arg2, target_name); } return Plugin_Handled; } -public Action Command_StopSound(int client, int args) { + +Action Command_StopSound(int client, int args) { if(args < 2) { ReplyToCommand(client, "Usage: sm_stopsound [soundpath or leave blank for previous]"); - }else{ + } else { char arg1[32], arg2[64]; GetCmdArg(1, arg1, sizeof(arg1)); GetCmdArg(2, arg2, sizeof(arg2)); @@ -451,7 +463,8 @@ public Action Command_StopSound(int client, int args) { } return Plugin_Handled; } -public Action Command_SetClientModel(int client, int args) { + +Action Command_SetClientModel(int client, int args) { if(args < 1) { ReplyToCommand(client, "Usage: sm_model [player] ['keep']"); } else { @@ -596,10 +609,10 @@ public Action Timer_RequipWeapon(Handle hdl, DataPack pack) { return Plugin_Handled; } -public Action Cmd_SetSurvivor(int client, int args) { +Action Cmd_SetSurvivor(int client, int args) { if(args < 1) { ReplyToCommand(client, "Usage: sm_surv "); - }else{ + } else { char arg1[32], arg2[16]; GetCmdArg(1, arg1, sizeof(arg1)); GetCmdArg(2, arg2, sizeof(arg2)); @@ -636,9 +649,13 @@ public Action Cmd_SetSurvivor(int client, int args) { } // Hide MOTD -public Action VGUIMenu(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init) { +Action VGUIMenu(UserMsg msg_id, Handle bf, const int[] players, int playersNum, bool reliable, bool init) { if(!hHideMotd.BoolValue) return Plugin_Continue; - static char buffer[5]; + static char buffer[8]; + // Show MOTD on versus games + hGamemode.GetString(buffer, sizeof(buffer)); + if(StrEqual(buffer, "versus", false)) return Plugin_Continue; + BfReadString(bf, buffer, sizeof(buffer)); return strcmp(buffer, "info") == 0 ? Plugin_Handled : Plugin_Continue; } @@ -647,7 +664,7 @@ public void OnClientPutInServer(int client) { if(!IsFakeClient(client)) SDKHook(client, SDKHook_WeaponEquip, Event_OnWeaponEquip); else - SDKHook(client, SDKHook_OnTakeDamage, Event_OnTakeDamage); + SDKHook(client, SDKHook_OnTakeDamage, Event_OnTakeDamageBot); } public void OnClientDisconnect(int client) { @@ -692,18 +709,17 @@ public Action Timer_AllowKitPickup(Handle h, int entity) { return Plugin_Handled; } public void OnMapStart() { - AddFileToDownloadsTable("sound/custom/meow1.mp3"); - PrecacheSound("custom/meow1.mp3"); - AddFileToDownloadsTable("sound/custom/xen_teleport.mp3"); - PrecacheSound("custom/xen_teleport.mp3"); - AddFileToDownloadsTable("sound/custom/mariokartmusic.mp3"); - PrecacheSound("custom/mariokartmusic.mp3"); - AddFileToDownloadsTable("sound/custom/spookyscaryskeletons.mp3"); - PrecacheSound("custom/spookyscaryskeletons.mp3"); + #if PRECACHE_SOUNDS_COUNT > 0 + char buffer[128]; + for(int i = 0; i < PRECACHE_SOUNDS_COUNT; i++) { + Format(buffer, sizeof(buffer), "sound/%s", PRECACHE_SOUNDS[i]); + AddFileToDownloadsTable(buffer); + PrecacheSound(PRECACHE_SOUNDS[i]); + } + #endif HookEntityOutput("info_changelevel", "OnStartTouch", EntityOutput_OnStartTouchSaferoom); HookEntityOutput("trigger_changelevel", "OnStartTouch", EntityOutput_OnStartTouchSaferoom); - } public void OnConfigsExecuted() { isL4D1Survivors = L4D2_GetSurvivorSetMap() == 1; @@ -714,10 +730,10 @@ public void OnConfigsExecuted() { public void OnSceneStageChanged(int scene, SceneStages stage) { if(stage == SceneStage_Started) { - static char sceneFile[64]; - GetSceneFile(scene, sceneFile, sizeof(sceneFile)); int activator = GetSceneInitiator(scene); if(activator == 0) { + static char sceneFile[64]; + GetSceneFile(scene, sceneFile, sizeof(sceneFile)); if(StrContains(sceneFile, "scenes/mechanic/dlc1_c6m1_initialmeeting") > -1 || StrEqual(sceneFile, "scenes/teengirl/dlc1_c6m1_initialmeeting07.vcd")) { CancelScene(scene); }else if(StrEqual(sceneFile, "scenes/teengirl/dlc1_c6m1_initialmeeting13.vcd") && activator == 0) { @@ -738,16 +754,22 @@ public void Event_BotPlayerSwap(Event event, const char[] name, bool dontBroadca if(client && botDropMeleeWeapon[bot] > 0) { int meleeOwnerEnt = GetEntPropEnt(botDropMeleeWeapon[bot], Prop_Send, "m_hOwnerEntity"); if(meleeOwnerEnt == -1) { + int currentWeapon = GetPlayerWeaponSlot(client, 1); + if(currentWeapon > 0) { + char buffer[32]; + GetEntityClassname(currentWeapon, buffer, sizeof(buffer)); + // Only delete their duplicate pistols, let melees get thrown out (into the world) + if(!StrEqual(buffer, "weapon_melee")) + RemoveEntity(currentWeapon); + } EquipPlayerWeapon(client, botDropMeleeWeapon[bot]); botDropMeleeWeapon[bot] = -1; - } else { - PrintToChat(client, "Could not give back your melee weapon, %N has it instead.", meleeOwnerEnt); } } SDKUnhook(bot, SDKHook_WeaponDrop, Event_OnWeaponDrop); } } -public Action Event_OnWeaponDrop(int client, int weapon) { +Action Event_OnWeaponDrop(int client, int weapon) { if(!IsValidEntity(weapon) || !IsFakeClient(client)) return Plugin_Continue; if(GetEntProp(client, Prop_Send, "m_humanSpectatorUserID") > 0) { char wpn[32]; @@ -762,12 +784,12 @@ public Action Event_OnWeaponDrop(int client, int weapon) { } return Plugin_Continue; } -public void Frame_HideEntity(int entity) { +void Frame_HideEntity(int entity) { if(IsValidEntity(entity)) TeleportEntity(entity, OUT_OF_BOUNDS, NULL_VECTOR, NULL_VECTOR); } -//STUCK BOTS WITH ZOMBIES FIX -public Action Event_OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype) { +// Only called for bots, kills zombies behind bots, preventing them being stuck when their AI doesn't want to keep them alive +Action Event_OnTakeDamageBot(int victim, int& attacker, int& inflictor, float& damage, int& damagetype) { if(attacker > MaxClients) { static char name[16]; GetEdictClassname(attacker, name, sizeof(name)); @@ -786,7 +808,7 @@ public Action Event_OnTakeDamage(int victim, int& attacker, int& inflictor, floa return Plugin_Continue; } //MINOR FIXES -public void EntityOutput_OnStartTouchSaferoom(const char[] output, int caller, int client, float time) { +void EntityOutput_OnStartTouchSaferoom(const char[] output, int caller, int client, float time) { if(client > 0 && client <= MaxClients && IsValidClient(client) && GetClientTeam(client) == 2) { if(StrEqual(gamemode, "coop", false)) { if(botDropMeleeWeapon[client] > 0) { @@ -805,7 +827,7 @@ public void EntityOutput_OnStartTouchSaferoom(const char[] output, int caller, i } } -public Action Timer_TPBots(Handle timer, int user) { +Action Timer_TPBots(Handle timer, int user) { float pos[3]; GetClientAbsOrigin(user, pos); for(int i = 1; i < MaxClients + 1; i++) { @@ -837,34 +859,34 @@ public void Event_PlayerHurt(Event event, const char[] name, bool dontBroadcast) } } //LASER SIGHT NOTICE -public void Event_PlayerUse(Event event, const char[] name, bool dontBroadcast) { +void Event_PlayerUse(Event event, const char[] name, bool dontBroadcast) { if(hLaserNotice.BoolValue) { - char entity_name[32]; - int player_id = GetClientOfUserId(event.GetInt("userid")); - int target_id = event.GetInt("targetid"); + int client = GetClientOfUserId(event.GetInt("userid")); + int targetEntity = event.GetInt("targetid"); - GetEntityClassname(target_id, entity_name, sizeof(entity_name)); + char classname[32]; + GetEntityClassname(targetEntity, classname, sizeof(classname)); - if(StrEqual(entity_name,"upgrade_laser_sight")) { - if(LasersUsed.FindValue(target_id) == -1) { - LasersUsed.Push(target_id); - PrintToChatAll("%N picked up laser sights", player_id); + if(StrEqual(classname, "upgrade_laser_sight")) { + if(LasersUsed.FindValue(targetEntity) == -1) { + LasersUsed.Push(targetEntity); + PrintToChatAll("%N picked up laser sights", client); } } } } //FINALE TIME INFO -public void Event_GauntletStart(Event event, const char[] name, bool dontBroadcast) { +void Event_GauntletStart(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue > 0) { iFinaleStartTime = GetTime(); } } -public void Event_FinaleStart(Event event, const char[] name, bool dontBroadcast) { +void Event_FinaleStart(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue == 2) { iFinaleStartTime = GetTime(); } } -public void Event_FinaleEnd(Event event, const char[] name, bool dontBroadcast) { +void Event_FinaleEnd(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue != 0) { if(iFinaleStartTime != 0) { int difference = GetTime() - iFinaleStartTime; @@ -877,7 +899,7 @@ public void Event_FinaleEnd(Event event, const char[] name, bool dontBroadcast) } } //Give kits to bots that replace kicked player -public void Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { +void Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); if(client > 0 && IsFakeClient(client) && HasEntProp(client, Prop_Send, "m_humanSpectatorUserID") && GetEntProp(client, Prop_Send, "m_humanSpectatorUserID") < 0) { int ent = GivePlayerItem(client, "weapon_first_aid_kit"); @@ -903,14 +925,4 @@ stock void FormatSeconds(int raw_sec, char[] str, int strSize) { Format(str, strSize, "%d seconds", seconds); } -} -stock int GetAnyValidClient() { - for (int i = 1; i <= MaxClients; i++) - { - if (IsClientInGame(i) && !IsFakeClient(i)) - { - return i; - } - } - return -1; } \ No newline at end of file