From 95404d458d98de349457c2e6a8bcbb45805e220d Mon Sep 17 00:00:00 2001 From: Jackz Date: Sun, 14 Jun 2020 19:51:16 -0500 Subject: [PATCH] Updated plugins - Fixed server spam for 200IQBots_FlyYouFools - Fixed timer response in L4D2Tools - Added redirect damage to l4d2_ff_test --- README.md | 4 +- plugins/200IQBots_FlyYouFools.smx | Bin 7387 -> 6695 bytes plugins/L4D2Tools.smx | Bin 6850 -> 6781 bytes plugins/l4d2_ff_test.smx | Bin 6319 -> 6821 bytes scripting/200IQBots_FlyYouFools.sp | 19 ++------ scripting/L4D2Tools.sp | 70 ++++++++++++++++++----------- scripting/l4d2_ff_test.sp | 14 +++++- 7 files changed, 60 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 537b290..8121a9d 100644 --- a/README.md +++ b/README.md @@ -84,5 +84,5 @@ Another joke plugin, with it configured, a victim will have a % chance their sho * **Convars:** * `troll_enable <0/1>` - Enable troll. 0 -> OFF, 1 -> Shots * `troll_shot_fail_percentage <0.0-1.0>` - percentage float (0.0 to 1.0) chance that victims' shots fail - * `troll_targets ` - comma separate list of steamid64 targets (ex: STEAM_0:0:75141700) - * `troll_shot_mode <0/1>` - 0 -> ALL Weapons, 1 -> AWP \ No newline at end of file + * `troll_targets ` - comma separated list of steamid64 targets (ex: STEAM_0:0:75141700) + * `troll_shot_mode <0/1>` - 0 -> ALL Weapons, 1 -> AWP diff --git a/plugins/200IQBots_FlyYouFools.smx b/plugins/200IQBots_FlyYouFools.smx index a45ccbd82c60f677a417f360410e5c898e4d88f0..60d0cb62f3a07b7ae21969d41ea1e71e7df983fe 100644 GIT binary patch delta 6622 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 EKjx+mYybcN delta 7319 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 T3R!4sHq94wOLfol3ETew2~{T} diff --git a/plugins/L4D2Tools.smx b/plugins/L4D2Tools.smx index 2032d7d2ca25cb6fdce33c2974416ceadd65fb6b..ebb3f2eb28f7da4c4da0e3f4012574c910deb243 100644 GIT binary patch literal 6781 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 literal 6850 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 M7V=0;a49kMKj6(w$N&HU delta 6244 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 diff --git a/scripting/200IQBots_FlyYouFools.sp b/scripting/200IQBots_FlyYouFools.sp index 6465932..722cc8f 100644 --- a/scripting/200IQBots_FlyYouFools.sp +++ b/scripting/200IQBots_FlyYouFools.sp @@ -38,7 +38,6 @@ public void OnPluginStart() AutoExecConfig(true, "200IQBots_FlyYouFools"); - } public void OnMapStart() { @@ -50,7 +49,7 @@ public void OnMapStart() { public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast) { TankClient = -1; - bEscapeReady = false; + bEscapeReady = false; } public void Event_TankSpawn(Event event, const char[] name, bool dontBroadcast) { @@ -58,15 +57,12 @@ public void Event_TankSpawn(Event event, const char[] name, bool dontBroadcast) CreateTimer(0.1, BotControlTimer, _, TIMER_REPEAT); } public void Event_FinaleArriving(Event event, const char[] name, bool dontBroadcast) { - bEscapeReady = true; + bEscapeReady = true; } public Action BotControlTimer(Handle timer) { //remove timer once tank no longer exists, is dead, or finale escape vehicle arrived if(bEscapeReady || TankClient == -1 || !IsClientInGame(TankClient) || !IsPlayerAlive(TankClient)) { -#if debug - PrintToServer("Tank processing now ended. Escape ready or tank has been killed."); -#endif //incase any other tanks are available FindExistingTank(); return Plugin_Stop; @@ -74,15 +70,7 @@ public Action BotControlTimer(Handle timer) //Once an AI tank is awakened, m_lookatPlayer is set to a player ID //Possible props: m_lookatPlayer, m_zombieState (if 1), m_hasVisibleThreats int tank_target = GetEntPropEnt(TankClient, Prop_Send, "m_lookatPlayer", 0); -#if debug - bool hasVisibleThreats = GetEntProp(TankClient, Prop_Send, "m_hasVisibleThreats", 1) == 1; - char targetted_name[64]; -#endif if(tank_target > -1) { - #if debug - GetClientName(tank_target, targetted_name, sizeof(targetted_name)); - ShowHintToAll("tank_target: %d (%s) | visible threats: %b", tank_target, targetted_name, hasVisibleThreats); - #endif //grab tank position outside loop, only calculate bot float TankPosition[3]; GetClientAbsOrigin(TankClient, TankPosition); @@ -122,7 +110,6 @@ public void FindExistingTank() { char name[16]; GetClientName(i, name, sizeof(name)); if(StrContains(name,"Tank",true) > -1) { - PrintToServer("Found existing tank with id %d", i); TankClient = i; CreateTimer(0.1, BotControlTimer, _, TIMER_REPEAT); break; @@ -175,7 +162,7 @@ stock void ShowHintToAll(const char[] format, any ...) { * @param bufferSize The size of the buffer * @return True if item, false if no item */ -stock bool GetItemClassSlot(int client, int slot, char[] buffer, int bufferSize) { +stock bool GetItemSlotClassName(int client, int slot, char[] buffer, int bufferSize) { int item = GetPlayerWeaponSlot(client, slot); if(item > -1) { GetEdictClassname(item, buffer, bufferSize); diff --git a/scripting/L4D2Tools.sp b/scripting/L4D2Tools.sp index 247d16e..b575bf6 100644 --- a/scripting/L4D2Tools.sp +++ b/scripting/L4D2Tools.sp @@ -3,7 +3,7 @@ #define DEBUG -#define PLUGIN_NAME "Misc Tools" +#define PLUGIN_NAME "L4D2 Misc Tools" #define PLUGIN_DESCRIPTION "Includes: Notice on laser use, Timer for gauntlet runs" #define PLUGIN_AUTHOR "jackzmc" #define PLUGIN_VERSION "1.0" @@ -13,14 +13,12 @@ #include //#include -#pragma newdecls required bool bLasersUsed[2048]; ConVar hLaserNotice, hFinaleTimer; int iFinaleStartTime; -public Plugin myinfo = -{ +public Plugin myinfo = { name = PLUGIN_NAME, author = PLUGIN_AUTHOR, description = PLUGIN_DESCRIPTION, @@ -28,8 +26,7 @@ public Plugin myinfo = url = PLUGIN_URL }; -public void OnPluginStart() -{ +public void OnPluginStart() { EngineVersion g_Game = GetEngineVersion(); if(g_Game != Engine_Left4Dead && g_Game != Engine_Left4Dead2) { @@ -43,9 +40,10 @@ public void OnPluginStart() HookEvent("gauntlet_finale_start", Event_GauntletStart); HookEvent("finale_start", Event_FinaleStart); HookEvent("finale_vehicle_leaving", Event_FinaleEnd); + + //RegAdminCmd("sm_respawn", Command_SpawnSpecial, ADMFLAG_CHEATS, "Respawn a dead survivor right where they died."); } -#if 1 //laserNotice public void Event_PlayerUse(Event event, const char[] name, bool dontBroadcast) { if(hLaserNotice.BoolValue) { @@ -70,34 +68,35 @@ public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) { bLasersUsed[i] = false; } } -#endif -#if 1 //finaletimer public void Event_GauntletStart(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue > 0) { iFinaleStartTime = GetTime(); - PrintToChatAll("The finale timer has been started"); + PrintHintTextToAll("The finale timer has been started"); } } public void Event_FinaleStart(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue == 2) { iFinaleStartTime = GetTime(); - PrintToChatAll("The finale timer has been started"); + PrintHintTextToAll("The finale timer has been started"); } } public void Event_FinaleEnd(Event event, const char[] name, bool dontBroadcast) { if(hFinaleTimer.IntValue != 0) { int difference = GetTime() - iFinaleStartTime; - iFinaleStartTime = 0; char time[32]; - FormatMs(difference, time, sizeof(time)); + FormatSeconds(difference, time, sizeof(time)); PrintToChatAll("Finale took %s to complete", time); + iFinaleStartTime = 0; + } } -#endif + + + /** * Prints human readable duration from milliseconds * @@ -105,22 +104,20 @@ public void Event_FinaleEnd(Event event, const char[] name, bool dontBroadcast) * @param str The char array to use for text * @param strSize The size of the string */ -stock void FormatMs(int ms, char[] str, int strSize) { - int sec = ms / 1000; - int h = sec / 3600; - int m = (sec -(3600*h))/60; - int s = (sec -(3600*h)-(m*60)); - if(h >= 1) { - Format(str, strSize, "%d hour, %d.%d minutes", h, m, s); - }else if(m >= 1) { - Format(str, strSize, "%d minutes and %d seconds", m, s); +stock void FormatSeconds(int raw_sec, char[] str, int strSize) { + int hours = raw_sec / 3600; + int minutes = (raw_sec -(3600*hours))/60; + int seconds = (raw_sec -(3600*hours)-(minutes*60)); + if(hours >= 1) { + Format(str, strSize, "%d hours, %d.%d minutes", hours, minutes, seconds); + }else if(minutes >= 1) { + Format(str, strSize, "%d minutes and %d seconds", minutes, seconds); }else { - float raw_seconds = float(ms) / 1000; - Format(str, strSize, "%0.1f seconds", raw_seconds); + Format(str, strSize, "%d seconds", seconds); } } -stock void ShowHintToAll(const char[] format, any ...) { +stock void ShowDelayedHintToAll(const char[] format, any ...) { char buffer[254]; VFormat(buffer, sizeof(buffer), format, 2); static int hintInt = 0; @@ -130,7 +127,7 @@ stock void ShowHintToAll(const char[] format, any ...) { } hintInt++; } -stock void ShowHint(int client, const char[] format, any ...) { +stock void ShowDelayedHint(int client, const char[] format, any ...) { char buffer[254]; VFormat(buffer, sizeof(buffer), format, 2); static int hintInt = 0; @@ -139,4 +136,23 @@ stock void ShowHint(int client, const char[] format, any ...) { hintInt = 0; } hintInt++; +} +stock void CheatCommand(int client, const char[] command, const char[] argument1, const char[] argument2) { + int userFlags = GetUserFlagBits(client); + SetUserFlagBits(client, ADMFLAG_ROOT); + int flags = GetCommandFlags(command); + SetCommandFlags(command, flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "%s %s %s", command, argument1, argument2); + SetCommandFlags(command, flags); + SetUserFlagBits(client, userFlags); +} +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 diff --git a/scripting/l4d2_ff_test.sp b/scripting/l4d2_ff_test.sp index 2b1e47b..2ded6cd 100644 --- a/scripting/l4d2_ff_test.sp +++ b/scripting/l4d2_ff_test.sp @@ -16,6 +16,7 @@ static bool bLateLoaded; static float ffDamage[MAXPLAYERS+1]; static int ffCount[MAXPLAYERS+1]; +ConVar hRedirectFFScale, hVictimFFReductionScale; public Plugin myinfo = { @@ -49,6 +50,9 @@ public void OnPluginStart() } } } + hRedirectFFScale = CreateConVar("sm_redirect_ff_scale","1.0","The redirected damage back to attacker. 0-> OFF | 1 -> All damage",FCVAR_NONE,true,0.0); + hVictimFFReductionScale = CreateConVar("sm_victim_ff_scale",".5","This is mulitplied by the damage the victim will receive. 0 -> No damage, 1 -> All damage", FCVAR_NONE, true, 0.0, true, 1.0); + HookEvent("round_start", Event_RoundStart); RegConsoleCmd("sm_view_ff", Command_ViewFF, "View all player's friendly fire counts"); } @@ -91,8 +95,14 @@ public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast) //damage counting public Action OnTakeDamage(int victim, int& attacker, int& inflictor, float& damage, int& damagetype, int& weapon, float damageForce[3], float damagePosition[3]) { - ffDamage[attacker] += damage; - ffCount[attacker]++; + if(attacker > 0 && attacker <= MaxClients) { + ffDamage[attacker] += damage; + ffCount[attacker]++; + //apply the reduction scale to damage + float reflection_damage = damage * hRedirectFFScale.FloatValue; + damage = damage * hVictimFFReductionScale.FloatValue; + SDKHooks_TakeDamage(attacker, 0, 0, reflection_damage); + } return Plugin_Continue; }