From a92a4aafc15c5f53e5d59f14f7ccd561d3da832c Mon Sep 17 00:00:00 2001 From: Jackz Date: Thu, 31 Dec 2020 14:01:53 -0600 Subject: [PATCH] l4d2_feedthetrolls: Implement auto punishment on far-activiation of button --- plugins/l4d2_feedthetrolls.smx | Bin 15080 -> 16089 bytes scripting/l4d2_feedthetrolls.sp | 125 ++++++++++++++++++++------------ 2 files changed, 80 insertions(+), 45 deletions(-) diff --git a/plugins/l4d2_feedthetrolls.smx b/plugins/l4d2_feedthetrolls.smx index 037fc966711fd28d4274acc934297c14a1be53d3..0248b10ac6fc56dc84d25d3260194c2e98e4bc6b 100644 GIT binary patch literal 16089 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 literal 15080 zcmYkh1yEa2x4%u%qA5_^TC{kf#kCNixVyW%dnv^w#VKAW?oM#m0u2`2A-HRR@aKK+ zz4LvUS@}In&e|)=b zBqSATBqW>{R&zl@5`W1Ny>O!IOZ-J&Qb?OGO!*RLdSQec5>hk)5)#J?M}{FGsiGhu z@xSmwBob0AG7^&13tPq@Apu|br8QD%-2Yr__`(D6NJ#WAYX4&UFHHHOzAuIbLP837 z(U%rTAun9HZXO=C z|5N*4aG;2K4__Bc3rnm2pXYAr@xPwAgQ>gw|Ch9~wRCuC z$6;Y+&0%Hh@Sk=6gATS%|A)3tR?hzu{J*vTTVd_sY-Z~4f91~R|6!lSazbKq5&t}gqb+q{ z5vJ`|dBS1_X3j!pSzAf{DOk~V7<4MNso_1Qtc?W4)KBfiH*GNg$zQ+P3aH*kUWz^y zU>AJ4%zk*t@t*+SF8{*xAP;xWw_Vq^I&;>siHuL%){&6;5ijXBIdf(Tc$5M>wqOJe zqKKV_7+-Z)`>gW`pDj`Ib6{;0Qv3WvslMsX6h2b|v_nxQeb+HW&giJ`Tmg@ofX7&j zpjDKvy%6K`ZfBo$Z($eX1esvp^)G<-MHJ_Y?lzILFMxn9jG%rLvHg(T>uyfJb?ARu z`^dVQ22^1f9fvgguXj-UOrVJEh0t7gEBmcmi=4fbuu|VC0+!E+2FHZY z|Fb+IA0uc6MQkG^_o92!Z=FQ=OrH9V2k=;hL4D?bm4;z-`kyh{gwGlKM@3!%UH9$JNg%k{z$LjH@8ahKlkM%)D<#6)a{6(*N=o^j=|rXj6%JVQ zn$K2TATa9jXbTAYSNk&_)59UjMZS=2AhC+*wu-fi2=Q~7Y1T{u1)%y3DZ<~JVN-FJ zJ5c51eYPV3F{~vmxh_y;@ih!LFDbhTTW+P=E?rYp#4#hBENoOjFH@Lxr$c**GSQFN zJ}~;uk0!6nEhNE`vJzK@Ro^Z4i8r-wzuhl#wi7PGcHesc7N<)RZkIZ!®Ga$RGe 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 z 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 diff --git a/scripting/l4d2_feedthetrolls.sp b/scripting/l4d2_feedthetrolls.sp index 5085903..309363e 100644 --- a/scripting/l4d2_feedthetrolls.sp +++ b/scripting/l4d2_feedthetrolls.sp @@ -13,21 +13,10 @@ #undef REQUIRE_PLUGIN #include +//TODO: Detect if player activates crescendo from far away +//Possibly cancel event, make poll for other users. if no one responds, activate troll mode/swarm or kick/ban depending on FF amount? -/* -1 -> Slow speed (0.8 < 1.0 base) -2 -> Higher gravity (1.3 > 1.0) -3 -> Set primary reserve ammo in half -4 -> UziRules (Pickup weapon defaults to uzi) -5 -> PrimaryDisable (Cannot pickup primary weapons at all) -6 -> Slow Drain (Slowly drains hp over time) -7 -> Clusmy (Drops their melee weapon) -8 -> IcantSpellNoMore (Chat messages letter will randomly changed with wrong letters ) -9 -> CameTooEarly (When they shoot, they empty the whole clip at once.) -10 -> KillMeSoftly (Make player eat or waste pills whenever) -11 -> ThrowItAll (Makes player just throw all their items at a nearby player, and periodically) -*/ -#define TROLL_MODE_COUNT 13 +#define TROLL_MODE_COUNT 15 enum TrollMode { Troll_Reset, //0 Troll_SlowSpeed, //1 @@ -41,7 +30,9 @@ enum TrollMode { Troll_CameTooEarly, //9 Troll_KillMeSoftly, //10 Troll_ThrowItAll, //11 - Troll_GunJam //12 + Troll_GunJam, //12 + Troll_NoPickup, //13 + Troll_Swarm //14 } enum TrollModifer(<<= 1) { TrollMod_None = 0, @@ -61,7 +52,9 @@ static const char TROLL_MODES_NAMES[TROLL_MODE_COUNT][32] = { "CameTooEarly", //9 "KillMeSoftly", //10 "ThrowItAll", //11 - "GunJam" //12 + "GunJam", //12 + "NoPickup", + "Swarm" }; static const char TROLL_MODES_DESCRIPTIONS[TROLL_MODE_COUNT][128] = { "Resets the user, removes all troll effects", //0 @@ -76,7 +69,9 @@ static const char TROLL_MODES_DESCRIPTIONS[TROLL_MODE_COUNT][128] = { "When they shoot, random chance they empty whole clip", //9 "Make player eat or waste pills whenever possible", //10 "Player throws all their items at nearby player, periodically", //11 - "On reload, small chance their gun gets jammed - Can't reload." //12 + "On reload, small chance their gun gets jammed - Can't reload.", //12 + "Prevents a player from picking up ANY (new) item. Use ThrowItAll to make them drop", + "Swarms a player with zombies. Requires swarm plugin" }; public Plugin myinfo = @@ -88,7 +83,7 @@ public Plugin myinfo = url = "" }; Handle hThrowTimer; -ConVar hVictimsList, hThrowItemInterval; +ConVar hVictimsList, hThrowItemInterval, hAutoPunish; bool bTrollTargets[MAXPLAYERS+1], lateLoaded; int iTrollMode = 0; //troll mode. 0 -> Slosdown | 1 -> Higher Gravity | 2 -> CameTooEarly | 3 -> UziRules @@ -118,6 +113,7 @@ public void OnPluginStart() { hVictimsList.AddChangeHook(Change_VictimList); hThrowItemInterval = CreateConVar("sm_ftt_throw_interval", "30", "The interval in seconds to throw items. 0 to disable", FCVAR_NONE, true, 0.0); hThrowItemInterval.AddChangeHook(Change_ThrowInterval); + hAutoPunish = CreateConVar("sm_autopunish_mode", "0", "Setup automatic punishment of players. Add bits together. 0: Disabled, 1: Early Crescendos", FCVAR_NONE, true, 0.0); RegAdminCmd("sm_ftl", Command_ListTheTrolls, ADMFLAG_ROOT, "Lists all the trolls currently ingame."); RegAdminCmd("sm_ftm", Command_ListModes, ADMFLAG_ROOT, "Lists all the troll modes and their description"); @@ -128,8 +124,37 @@ public void OnPluginStart() { UpdateTrollTargets(); CreateTimer(MAIN_TIMER_INTERVAL_S, Timer_Main, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); } - + HookEntityOutput("func_button", "OnPressed", Event_ButtonPress); } +public void OnPluginEnd() { + UnhookEntityOutput("func_button", "OnPressed", Event_ButtonPress); +} + +public Action Event_ButtonPress(const char[] output, int entity, int client, float delay) { + if(hAutoPunish.IntValue & 1 > 0) { + float closestDistance = -1.0, cPos[3], scanPos[3]; + GetClientAbsOrigin(client, cPos); + + for(int i = 1; i < MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2 && i != client) { + GetClientAbsOrigin(i, scanPos); + float dist = GetVectorDistance(cPos, scanPos, false); + if(closestDistance < dist) { + closestDistance = dist; + } + } + } + if(FloatCompare(closestDistance, -1.0) == 1 && closestDistance <= 1000) { + TrollMode mode = view_as(GetRandomInt(1, TROLL_MODE_COUNT)); + ApplyModeToClient(0, client, mode, TrollMod_InstantFire); + UnhookSingleEntityOutput(entity, "OnPressed", Event_ButtonPress); + return Plugin_Stop; + } + return Plugin_Continue; + } + return Plugin_Continue; +} + //(dis)connection events public void OnMapStart() { @@ -291,6 +316,7 @@ public int ChooseModeMenuHandler(Menu menu, MenuAction action, int param1, int p || mode ==Troll_ThrowItAll || mode == Troll_PrimaryDisable || mode == Troll_CameTooEarly + || mode == Troll_Swarm ) { Menu modiferMenu = new Menu(CHooseTrollModiferHandler); modiferMenu.SetTitle("Choose Troll Modifer Option"); @@ -323,35 +349,39 @@ public int CHooseTrollModiferHandler(Menu menu, MenuAction action, int param1, i delete menu; } public Action Event_ItemPickup(int client, int weapon) { - char wpnName[64]; - GetEdictClassname(weapon, wpnName, sizeof(wpnName)); - if(StrContains(wpnName, "rifle") > -1 - || StrContains(wpnName, "smg") > -1 - || StrContains(wpnName, "weapon_grenade_launcher") > -1 - || StrContains(wpnName, "sniper") > -1 - || StrContains(wpnName, "shotgun") > -1 - ) { - //If 4: Only UZI, if 5: Can't switch. - if(iTrollUsers[client] == Troll_UziRules) { - char currentWpn[32]; - GetClientWeaponName(client, 0, currentWpn, sizeof(currentWpn)); - if(StrEqual(wpnName, "weapon_smg", true)) { - return Plugin_Continue; - } else if(StrEqual(currentWpn, "weapon_smg", true)) { - return Plugin_Stop; - }else{ - int flags = GetCommandFlags("give"); - SetCommandFlags("give", flags & ~FCVAR_CHEAT); - FakeClientCommand(client, "give smg"); - SetCommandFlags("give", flags|FCVAR_CHEAT); + if(iTrollUsers[client] == Troll_NoPickup) { + return Plugin_Stop; + }else{ + char wpnName[64]; + GetEdictClassname(weapon, wpnName, sizeof(wpnName)); + if(StrContains(wpnName, "rifle") > -1 + || StrContains(wpnName, "smg") > -1 + || StrContains(wpnName, "weapon_grenade_launcher") > -1 + || StrContains(wpnName, "sniper") > -1 + || StrContains(wpnName, "shotgun") > -1 + ) { + //If 4: Only UZI, if 5: Can't switch. + if(iTrollUsers[client] == Troll_UziRules) { + char currentWpn[32]; + GetClientWeaponName(client, 0, currentWpn, sizeof(currentWpn)); + if(StrEqual(wpnName, "weapon_smg", true)) { + return Plugin_Continue; + } else if(StrEqual(currentWpn, "weapon_smg", true)) { + return Plugin_Stop; + }else{ + int flags = GetCommandFlags("give"); + SetCommandFlags("give", flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "give smg"); + SetCommandFlags("give", flags|FCVAR_CHEAT); + return Plugin_Stop; + } + }else if(iTrollUsers[client] == Troll_PrimaryDisable) { return Plugin_Stop; } - }else if(iTrollUsers[client] == Troll_PrimaryDisable) { - return Plugin_Stop; + return Plugin_Continue; + }else{ + return Plugin_Continue; } - return Plugin_Continue; - }else{ - return Plugin_Continue; } } public Action Event_WeaponReload(int weapon) { @@ -421,6 +451,8 @@ void ApplyModeToClient(int client, int victim, TrollMode mode, TrollModifer modi SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); case Troll_PrimaryDisable: SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); + case Troll_NoPickup: + SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); case Troll_Clumsy: { //TODO: Implement modifier code int wpn = GetClientSecondaryWeapon(victim); @@ -454,6 +486,9 @@ void ApplyModeToClient(int client, int victim, TrollMode mode, TrollModifer modi hThrowTimer = CreateTimer(hThrowItemInterval.FloatValue, Timer_ThrowTimer, _, TIMER_REPEAT); } } + case Troll_Swarm: { + //TODO: Implement swarm + } case Troll_GunJam: { int wpn = GetClientWeaponEntIndex(victim, 0); if(wpn > -1)