From ca2831ec53992f3543dcee14505f3161dfeebc44 Mon Sep 17 00:00:00 2001 From: Jackz Date: Tue, 9 Nov 2021 10:25:34 -0600 Subject: [PATCH] Update FTT --- plugins/l4d2_feedthetrolls.smx | Bin 59400 -> 61298 bytes scripting/include/feedthetrolls/base.inc | 87 ++++++++++++++----- scripting/include/feedthetrolls/commands.inc | 59 +++++++++++-- scripting/include/feedthetrolls/events.inc | 58 ++++++++++--- scripting/include/feedthetrolls/menus.inc | 44 +++++----- scripting/include/feedthetrolls/misc.inc | 29 +++---- scripting/include/feedthetrolls/specials.inc | 33 +++++-- scripting/include/feedthetrolls/timers.inc | 7 ++ scripting/include/feedthetrolls/trolls.inc | 41 +++++---- scripting/l4d2_feedthetrolls.sp | 40 +++++---- 10 files changed, 271 insertions(+), 127 deletions(-) diff --git a/plugins/l4d2_feedthetrolls.smx b/plugins/l4d2_feedthetrolls.smx index 015d240ee42765c7a29f6f7b2030b8844d64ba1b..5813f70b23afbce6045885b1f9b017d8f2c53324 100644 GIT binary patch literal 61298 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%0AD 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 Bmd^kH literal 59400 zcmYhi3p~^B`}j{n2$dYlDHU>DsGNqkB$bd<$f+Dc&Szsb6{#Gi>vi|;Ba0KPtf!V)SQb99 zu?SsaWnsB|g5^K2fAxAUD+|YQi!Yy*<@{e3mea?4IqU>WC_4*_;4x=FPq0`WYl&mo zKISuQEG)9eeB#{+7S;PKEXv1xqwfSu?kB?b) z>DYe!d3MKqW#t6R)nn~(EJnu+Jl3FNd3Vg3_ce&*1Q1KV@e}SLIjkp8w|eFM7Ir{}0{0U-|r>@qan~$HUdr$ML1-|J;3?{^iig z^$6Y>8nOf2td{%f9@%{NTH+9k{^Ji`iO<$*5FkK*E`X#n6Yef> z>P&f_-pM!*%fct>ZtX%R?)1IZRXR8J%Z|(YYvJ^CY4CKZL$LbV5-vWYV;mf?nGFiq zoJtQT8Cy)jL*{PL`m@qC)dH6K($!oC#2Dbng>2DF=8VNXkOO z|IB%1kf$@qY#C%$lf6V4@ErljLjm1NuO28*|6K2^r+Kl{djw0`}jz5PzZ&!~cfN&LAJhJ06mh$=)v+=1&>$0|EO) zL^|!}Tyh5axyc@fN$7I{l!L$wf=lvg6v+`!E{;K^EbP!9`A~0LmOO1%WKaLFcoVj0 z+1kouwFeeb&#VGvREgB0n`RSU->bEf_cFMqT&=t7RHywae;7Kot@DJ>5_L7Ij?wY_V{6rjw@<|B;R&K?* zbiETmZl$c8SAL0DyVF7_DdkSz@QmuSU`y7`=pP%WpV3x$vZ~@Jr3H9-;Pm8z{d1)?Rp6KY|E`wygIOrVyCtKLw zEsq_Hv36*6_?GuN(GOqho#ZDO6rM51=JfHlv)S+qC={qt9U7v?%r-ySK|S z1)@jC#juL&)Bj-@_y`lqmuXfou4nuS{0L5_5^`{r1iYg@9Oum~7+4v*B^RpvYWE9W z^xEvHdY¨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 diff --git a/scripting/include/feedthetrolls/base.inc b/scripting/include/feedthetrolls/base.inc index 58ee3f4..a146a0b 100644 --- a/scripting/include/feedthetrolls/base.inc +++ b/scripting/include/feedthetrolls/base.inc @@ -4,13 +4,14 @@ //Allow MAX_TROLLS to be defined elsewhere #if defined MAX_TROLLS #else - #define MAX_TROLLS 32 + #define MAX_TROLLS 33 #endif enum trollModifier { TrollMod_Invalid = 0, - TrollMod_Instant = 1, - TrollMod_Constant = 2 + TrollMod_Instant = 1 << 0, + TrollMod_Constant = 1 << 1, + TrollMod_PlayerOnly = 1 << 2, // Does the troll only work on players, not bots? If set, troll only applied on real user. If not, troll applied to both bot and idler } //up to 30 flags technically possiible @@ -32,6 +33,7 @@ char DEFAULT_FLAG_PROMPT[] = "Choose flags"; bool SilentMenuSelected[MAXPLAYERS+1]; static int g_trollAddPromptIndex; +ArrayList gRandomClients; enum struct TrollFlagPrompt { char promptText[MAX_TROLL_FLAG_LENGTH]; @@ -57,13 +59,14 @@ enum struct Troll { char name[MAX_TROLL_NAME_LENGTH]; char description[128]; + bool hidden; int mods; + // Flags int activeFlagClients[MAXPLAYERS+1]; - ArrayList flagNames; - bool flagsMultiselectable; char flagPrompt[MAX_TROLL_FLAG_LENGTH]; + ArrayList flagNames; ArrayList flagPrompts; bool HasMod(trollModifier mod) { @@ -177,6 +180,7 @@ enum struct Troll { void Activate(int client, int activator, trollModifier modifier = TrollMod_Invalid, int flags = 0) { if(modifier == TrollMod_Invalid) modifier = this.GetDefaultMod(); + // Sadly, unable to pass in to ApplyTroll, so it has to do unnecessary lookup via string ApplyTroll(client, this.name, activator, modifier, flags); } @@ -195,6 +199,17 @@ enum struct Troll { bool IsActive(int client) { return this.activeFlagClients[client] != -1; } + + int GetRandomClient(int start = 0) { + gRandomClients.Clear(); + for(int i = start + 1; i <= MaxClients; i++) { + if(this.activeFlagClients[i] != -1) { + gRandomClients.Push(i); + } + } + if(gRandomClients.Length == 0) return -1; + return GetRandomInt(0, gRandomClients.Length); + } } Troll Trolls[MAX_TROLLS+1]; @@ -203,12 +218,13 @@ ArrayList categories; static int categoryID = -1; void ResetClient(int victim, bool wipe = true) { - if(victim == 0) return; + if(victim == 0 || !IsClientConnected(victim)) return; if(wipe) { for(int i = 0; i <= MAX_TROLLS; i++) { Trolls[i].activeFlagClients[victim] = -1; } } + SetEntityGravity(victim, 1.0); SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", 1.0); SDKUnhook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); @@ -217,14 +233,14 @@ void ResetClient(int victim, bool wipe = true) { SDKUnhook(wpn, SDKHook_Reload, Event_WeaponReload); } -int SetupTroll(const char[] name, const char description[128], int mods, bool flagsMultiselectable = false) { - if(mods == 0) { - ThrowError("Troll \"%s\" has no flags defined.", name); - return -1; - } +int SetupTroll(const char[] name, const char description[128], int mods) { static int i = 0; - if(i == MAX_TROLLS + 1) { + if(mods == 0) { + ThrowError("Troll \"%s\" has no modifiers defined.", name); + return -1; + } else if(i == MAX_TROLLS + 1) { ThrowError("Maximum number of trolls (%d) reached. Up MAX_TROLLS value.", MAX_TROLLS); + return -1; } g_trollAddPromptIndex = 0; Trolls[i].id = i; @@ -232,7 +248,6 @@ int SetupTroll(const char[] name, const char description[128], int mods, bool fl strcopy(Trolls[i].description, 128, description); Trolls[i].categoryID = categoryID; Trolls[i].mods = mods; - Trolls[i].flagsMultiselectable = flagsMultiselectable; Trolls[i].flagPrompts = new ArrayList(sizeof(TrollFlagPrompt)); strcopy(trollIds[i], MAX_TROLL_NAME_LENGTH, name); @@ -284,7 +299,7 @@ void ToggleTroll(int client, const char[] name, int flags = 0) { troll.activeFlagClients[client] = flags; } -void ApplyTroll(int victim, const char[] name, int activator, trollModifier modifier, int flags = 0) { +void ApplyTroll(int victim, const char[] name, int activator, trollModifier modifier, int flags = 0, bool silent = false) { static Troll troll; int trollIndex = GetTroll(name, troll); if(trollIndex == -1) { @@ -292,21 +307,46 @@ void ApplyTroll(int victim, const char[] name, int activator, trollModifier modi return; } - if(GetClientTeam(victim) == 1) { - //Victim is spectating, find its bot - victim = FindIdlePlayerBot(victim); - } + if(!silent && SilentMenuSelected[activator]) silent = true; + static int MetaInverseTrollID; + if(!MetaInverseTrollID) MetaInverseTrollID = GetTrollID("Meta: Inverse"); + + if(activator > 0 && Trolls[MetaInverseTrollID].IsActive(activator)) { + float max = 1.0; + if(Trolls[MetaInverseTrollID].activeFlagClients[activator] & 2) max = 0.5; + else if(Trolls[MetaInverseTrollID].activeFlagClients[activator] & 4) max = 0.1; + if(GetRandomFloat() <= max) { + victim = activator; + } + } + + // If victim is a survivor bot, check if has an idle player + if(IsFakeClient(victim) && GetClientTeam(victim) == 2) { + int player = GetSpectatorClient(victim); + if(player > 0) { + // If there is an idle player, apply troll to them + ApplyTroll(player, name, activator, modifier, flags, silent); + // And continue IF there is TrollMod_PlayerOnly mod + if(troll.mods & view_as(TrollMod_PlayerOnly)) return; + // Don't want to show two logs, so just ignore the bot + silent = true; + } + } + + // Applies any custom logic needed for a troll, mostly only used for TrollMod_Instant if(!ApplyAffect(victim, troll, activator, modifier, flags)) { return; } + + // Log all actions, indicating if constant or single-fire, and if any flags bool isActive = IsTrollActive(victim, troll.name); - if(!SilentMenuSelected[activator]) { + if(!silent) { if(isActive) { ShowActivityEx(activator, "[FTT] ", "deactivated troll \"%s\" on %N. ", troll.name, victim); LogAction(activator, victim, "\"%L\" deactivated troll \"%s\" on \"%L\"", activator, troll.name, victim); } else { - if(modifier == TrollMod_Constant) { + if(modifier & TrollMod_Constant) { if(flags > 0) { ShowActivityEx(activator, "[FTT] ", "activated constant troll \"%s\" (%d) for %N. ", troll.name, flags, victim); } else @@ -318,8 +358,11 @@ void ApplyTroll(int victim, const char[] name, int activator, trollModifier modi LogAction(activator, victim, "\"%L\" activated troll \"%s\" (%d) for \"%L\"", activator, troll.name, flags, victim); } - } else SilentMenuSelected[activator] = false; - if(modifier == TrollMod_Constant) { + } else { + ReplyToCommand(activator, "apply troll \"%s\" flags=%d on %N", troll.name, flags, victim); + } + // Toggle on flags for client, if it's not a single run. + if(modifier & TrollMod_Constant) { Trolls[troll.id].activeFlagClients[victim] = isActive ? -1 : flags; } } diff --git a/scripting/include/feedthetrolls/commands.inc b/scripting/include/feedthetrolls/commands.inc index e97dc7e..7e93d35 100644 --- a/scripting/include/feedthetrolls/commands.inc +++ b/scripting/include/feedthetrolls/commands.inc @@ -13,6 +13,10 @@ public Action Command_InstaSpecial(int client, int args) { menu.ExitButton = true; menu.Display(client, 0); } else { + if(gInstaSpecialType > -1) { + ReplyToCommand(client, "Please wait for last Insta to spawn."); + return Plugin_Handled; + } char arg1[32], arg2[32] = "jockey"; GetCmdArg(1, arg1, sizeof(arg1)); if(args >= 2) { @@ -78,6 +82,10 @@ public Action Command_InstaSpecialFace(int client, int args) { menu.ExitButton = true; menu.Display(client, 0); } else { + if(gInstaSpecialType > -1) { + ReplyToCommand(client, "Please wait for last Insta to spawn."); + return Plugin_Handled; + } char arg1[32], arg2[32] = "jockey"; GetCmdArg(1, arg1, sizeof(arg1)); if(args >= 2) { @@ -215,6 +223,7 @@ public Action Command_ResetUser(int client, int args) { public Action Command_ApplyUser(int client, int args) { if(args < 1) { + SilentMenuSelected[client] = false; ShowTrollMenu(client); }else{ char arg1[32], arg2[16]; @@ -244,12 +253,14 @@ public Action Command_ApplyUser(int client, int args) { for(int i = 0; i < categories.Length; i++) { categories.GetString(i, key, sizeof(key)); if(StrEqual(key, arg2, false)) { + SilentMenuSelected[client] = false; ShowTrollsForCategory(client, GetClientUserId(target_list[0]), i); return Plugin_Handled; } } ReplyToCommand(client, "[FTT] Unknown category: '%s'", arg2); } + SilentMenuSelected[client] = false; SetupCategoryMenu(client, target_list[0]); } return Plugin_Handled; @@ -304,6 +315,7 @@ public Action Command_ListModes(int client, int args) { static Troll troll; for(int i = 0; i <= MAX_TROLLS; i++) { GetTrollByKeyIndex(i, troll); + if(troll.hidden) continue; ReplyToCommand(client, "%d. %s - %s", i, troll.name, troll.description); } return Plugin_Handled; @@ -346,6 +358,7 @@ public Action Command_ListTheTrolls(int client, int args) { } for(int j = 1; j <= MAX_TROLLS; j++) { + if(Trolls[j].hidden) continue; if(trollIds[j][0] != '\0' && IsTrollActive(target, trollIds[j])) { if(Trolls[j].activeFlagClients[target] > 0) { static char list[MAX_TROLL_FLAG_LENGTH*8]; //May in future need to up magic number 8 (supports 8 active flags ) @@ -423,7 +436,7 @@ public Action Command_MarkPendingTroll(int client, int args) { menu.ExitButton = true; menu.Display(client, 0); } else { - char arg1[32]; + static char arg1[32]; GetCmdArg(1, arg1, sizeof(arg1)); char target_name[MAX_TARGET_LENGTH]; int target_list[MAXPLAYERS], target_count; @@ -452,13 +465,45 @@ public Action Command_MarkPendingTroll(int client, int args) { return Plugin_Handled; } +public Action Command_MarkNoob(int client, int args) { + if(args == 0) { + ReplyToCommand(client, "sm_noob "); + return Plugin_Handled; + } + static char target_name[MAX_TARGET_LENGTH]; + GetCmdArg(1, target_name, sizeof(target_name)); + + int target_list[MAXPLAYERS], target_count; + bool tn_is_ml; + if ((target_count = ProcessTargetString( + target_name, + client, + target_list, + 1, + COMMAND_FILTER_NO_MULTI, /* Only allow alive players */ + target_name, + sizeof(target_name), + tn_is_ml)) <= 0 + ) { + /* This function replies to the admin with a failure message */ + ReplyToTargetError(client, target_count); + return Plugin_Handled; + } + int target = target_list[0]; + //Todo: Check if marked as noob or not, undo if so, add if not + + ShowActivityEx(client, "[FTT] ", "marked %N as a noob", target_name); + LogAction(client, target, "\"%L\" marked \"%L\" as a noob", client, target); + return Plugin_Handled; +} + public Action Command_FeedTheTrollMenu(int client, int args) { - ReplyToCommand(client, "sm_ftl - Lists all the active trolls on players"); - ReplyToCommand(client, "sm_ftm - Lists all available troll modes & descriptions"); - ReplyToCommand(client, "sm_ftr - Resets target users' of their trolls"); - ReplyToCommand(client, "sm_fta - Applies a troll mode on targets"); - ReplyToCommand(client, "sm_ftt - Opens this menu"); - ReplyToCommand(client, "sm_ftc - Will apply a punishment to last crescendo activator"); + ReplyToCommand(client, "sm_ftl [player(s)] - Lists all the active trolls on players. Will show flag names if a player is specified."); + ReplyToCommand(client, "sm_ftm - Lists all available trolls & descriptions"); + ReplyToCommand(client, "sm_ftr - Resets target users' of any active trolls"); + ReplyToCommand(client, "sm_fta [player] [category] - Apply a troll on a player, with optional shortcut to player and/or category"); + ReplyToCommand(client, "sm_ftt - Shows this text"); + ReplyToCommand(client, "sm_ftc - Will apply a punishment to the last crescendo/event activator"); ReplyToCommand(client, "sm_mark - Marks the user to be banned on disconnect, prevents their FF."); return Plugin_Handled; } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/events.inc b/scripting/include/feedthetrolls/events.inc index e28698c..9ba3c4e 100644 --- a/scripting/include/feedthetrolls/events.inc +++ b/scripting/include/feedthetrolls/events.inc @@ -19,6 +19,29 @@ public void OnMapStart() { public void OnClientPutInServer(int client) { g_PendingBanTroll[client] = 0; SDKHook(client, SDKHook_OnTakeDamage, Event_TakeDamage); +} +public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast) { + int userid = event.GetInt("userid"); + CreateTimer(0.1, Timer_CheckSpecial, userid); +} +public Action Timer_CheckSpecial(Handle h, int specialID) { + int special = GetClientOfUserId(specialID); + if(special > 0 && gInstaSpecialType > -1 && IsFakeClient(special) && GetClientTeam(special) == 3) { + int type = GetEntProp(special, Prop_Send, "m_zombieClass"); + if(type == gInstaSpecialType) { + gInstaSpecialType = -1; + g_iAttackerTarget[special] = gInstaSpecialTarget; + gInstaSpecialMagnet[GetClientOfUserId(gInstaSpecialTarget)]++; + + TeleportEntity(special, gInstaSpecialSpawnPos, gInstaSpecialSpawnAng, NULL_VECTOR); + if(gInstaSpecialInstaKill) { + SDKHooks_TakeDamage(special, special, special, 1000.0); + } + } + } +} +public void Frame_InstaSpawned(int special) { + } public void OnClientAuthorized(int client, const char[] auth) { if(!IsFakeClient(client)) { @@ -39,6 +62,14 @@ public void Event_PlayerDisconnect(Event event, const char[] name, bool dontBroa } public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(event.GetInt("userid")); + if(client > 0 && g_iAttackerTarget[client] > 0) { + int target = GetClientOfUserId(g_iAttackerTarget[client]); + gInstaSpecialMagnet[target]--; + if(gInstaSpecialMagnet[target] == 0) { + PrintToServer("[FTT] gInstaSpecialMagnet droped below 0"); + gInstaSpecialMagnet[target] = 0; + } + } g_iAttackerTarget[client] = 0; } public Action Event_WeaponReload(int weapon) { @@ -85,11 +116,14 @@ public Action L4D2_OnChooseVictim(int attacker, int &curTarget) { if(hMagnetChance.FloatValue < GetRandomFloat()) return Plugin_Continue; L4D2Infected class = view_as(GetEntProp(attacker, Prop_Send, "m_zombieClass")); int existingTarget = GetClientOfUserId(g_iAttackerTarget[attacker]); - if(existingTarget > 0 && IsPlayerAlive(existingTarget) && (hMagnetTargetMode.IntValue & 1 != 1 || !IsPlayerIncapped(existingTarget))) { - if(class == L4D2Infected_Tank && (hMagnetTargetMode.IntValue % 2 != 2 || !IsPlayerIncapped(existingTarget))) { + if(existingTarget > 0 && IsPlayerAlive(existingTarget)) { + if(gInstaSpecialMagnet[existingTarget] > 0) { curTarget = existingTarget; return Plugin_Changed; - }else if(hMagnetTargetMode.IntValue & 1 != 1 || !IsPlayerIncapped(existingTarget)) { + } else if(class == L4D2Infected_Tank && (!IsPlayerIncapped(existingTarget) || hMagnetTargetMode.IntValue & 2) && WillMagnetRun(Trolls[tankMagnetID], existingTarget)) { + curTarget = existingTarget; + return Plugin_Changed; + }else if((!IsPlayerIncapped(existingTarget) || hMagnetTargetMode.IntValue & 1) && WillMagnetRun(Trolls[spMagnetID], existingTarget)) { curTarget = existingTarget; return Plugin_Changed; } @@ -102,7 +136,7 @@ public Action L4D2_OnChooseVictim(int attacker, int &curTarget) { if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) { //Ignore incapped players if turned on: if(IsPlayerIncapped(i)) { - if((class == L4D2Infected_Tank && hMagnetTargetMode.IntValue & 2 == 2) || hMagnetTargetMode.IntValue & 1 == 1 ) continue; + if((class == L4D2Infected_Tank && hMagnetTargetMode.IntValue & 2) || (class != L4D2Infected_Tank && hMagnetTargetMode.IntValue & 1)) continue; } if(class == L4D2Infected_Tank && Trolls[tankMagnetID].IsActive(i) || (class != L4D2Infected_Tank && Trolls[spMagnetID].IsActive(i))) { @@ -355,10 +389,10 @@ public Action OnPlayerRunCmd(int client, int& buttons, int& impulse, float vel[3 return Plugin_Continue; } static int invertedTrollIndex; - if(invertedTrollIndex <= 0) { + if(invertedTrollIndex == 0) { invertedTrollIndex = GetTrollID("Inverted Controls"); } - if(IsTrollActiveByRawID(client, invertedTrollIndex)) { + if(Trolls[invertedTrollIndex].IsActive(client)) { if(buttons & IN_MOVELEFT || buttons & IN_MOVERIGHT) { vel[1] = -vel[1]; } @@ -397,7 +431,7 @@ public Action Event_TakeDamage(int victim, int& attacker, int& inflictor, float& if(IsTrollActive(victim, "Damage Boost")) { damage * 2; return Plugin_Changed; - } else if(Trolls[reverseFF].IsActive(attacker) && attacker != victim && GetClientTeam(attacker) != GetClientTeam(victim)) { + } else if(Trolls[reverseFF].IsActive(attacker) && attacker != victim && GetClientTeam(attacker) == GetClientTeam(victim)) { float returnDmg = damage; //default is 1:1 if(Trolls[reverseFF].activeFlagClients[attacker] & 4) { returnDmg /= 2.0; @@ -413,6 +447,8 @@ public Action Event_TakeDamage(int victim, int& attacker, int& inflictor, float& } public Action SoundHook(int[] clients, int& numClients, char sample[PLATFORM_MAX_PATH], int& entity, int& channel, float& volume, int& level, int& pitch, int& flags, char[] soundEntry, int& seed) { + static int honkID; + if(honkID == 0) honkID = GetTrollID("Honk / Meow"); if(lastButtonUser > -1 && StrEqual(sample, "npc/mega_mob/mega_mob_incoming.wav")) { PrintToConsoleAll("CRESCENDO STARTED BY %N", lastButtonUser); #if defined DEBUG @@ -429,22 +465,16 @@ public Action SoundHook(int[] clients, int& numClients, char sample[PLATFORM_MAX lastButtonUser = -1; }else if(numClients > 0 && entity > 0 && entity <= MaxClients) { if(StrContains(sample, "survivor\\voice") > -1) { - static int honkID; - if(honkID == 0) { - honkID = GetTrollID("Honk / Meow"); - } if(Trolls[honkID].IsActive(entity)) { if(Trolls[honkID].activeFlagClients[entity] & 1) strcopy(sample, sizeof(sample), "player/footsteps/clown/concrete1.wav"); else if(Trolls[honkID].activeFlagClients[entity] & 2) strcopy(sample, sizeof(sample), "custom/meow1.mp3"); else return Plugin_Continue; - return Plugin_Changed; } else if(IsTrollActive(entity, "Vocalize Gag")) { return Plugin_Handled; } } - } return Plugin_Continue; } @@ -457,7 +487,7 @@ public Action Event_WitchVictimSet(Event event, const char[] name, bool dontBroa for(int i = 1; i <= MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) { //Ignore incapped players if hWitchIgnoreIncapp turned on: - if(IsPlayerIncapped(i) && !hWitchTargetIncapp.BoolValue) { + if(IsPlayerIncapped(i) && ~hMagnetTargetMode.IntValue & 4) { continue; } diff --git a/scripting/include/feedthetrolls/menus.inc b/scripting/include/feedthetrolls/menus.inc index 0047b7e..235f242 100644 --- a/scripting/include/feedthetrolls/menus.inc +++ b/scripting/include/feedthetrolls/menus.inc @@ -227,14 +227,15 @@ public int ChooseTrollFlagHandler(Menu menu, MenuAction action, int param1, int if (action == MenuAction_Select) { static char info[32]; menu.GetItem(param2, info, sizeof(info)); - static char str[5][8]; - ExplodeString(info, "|", str, 5, 8, false); + static char str[6][8]; + ExplodeString(info, "|", str, 6, 8, false); int userid = StringToInt(str[0]); int client = GetClientOfUserId(userid); int keyIndex = StringToInt(str[1]); int modifiers = StringToInt(str[2]); int flags = StringToInt(str[3]); - int nextIndex = StringToInt(str[4]); + int index = StringToInt(str[4]); + bool isDone = StringToInt(str[5]) == 1; // 0 = cont, 1 = done if(client == 0) { ReplyToCommand(param1, "FTT: Could not acquire player"); @@ -247,13 +248,17 @@ public int ChooseTrollFlagHandler(Menu menu, MenuAction action, int param1, int static TrollFlagPrompt prompt; // If told to go to next prompt, find the next VALID prompt // Valid prompt is one where the required flags for it, are active - if(nextIndex != -1) { - nextIndex = GetNextPrompt(troll, flags, nextIndex); + if(isDone || index == -1) { + int nextIndex = GetNextPrompt(troll, flags, index); // If there is a prompt available, show it, else fall down if(nextIndex != -1) { ShowSelectFlagMenu(param1, userid, modifiers, troll, flags, nextIndex); return; } + // else fall through & apply + } else { + ShowSelectFlagMenu(param1, userid, modifiers, troll, flags, index); + return; } // Done with prompts, apply flags & modifiers @@ -302,6 +307,7 @@ void ShowTrollMenu(int client) { if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2) { IntToString(GetClientUserId(i), userid, sizeof(userid)); int specClient = GetSpectatorClient(i); + // Incase player is idle, grab their bot instead of them if(specClient > 0) Format(display, sizeof(display), "%N (Idle)", specClient); else @@ -328,6 +334,8 @@ void ShowTrollsForCategory(int client, int userid, int category) { static char name[MAX_TROLL_NAME_LENGTH+8]; for(int i = 0; i < trollKV.Size; i++) { GetTrollByKeyIndex(i, troll); + // If troll is hidden and using normal menu, do not show + if(troll.hidden && !SilentMenuSelected[client]) continue; if(troll.categoryID == category) { Format(info, sizeof(info), "%d|%d", userid, i); if(troll.IsActive(victim)) { @@ -356,19 +364,11 @@ void ShowSelectFlagMenu(int activator, int victimUserID, int modifiers, Troll tr Format(info, sizeof(info), "%s: %s", troll.name, info); flagMenu.SetTitle(info); - // If there is another prompt, go to this index, or be done (-1) - int nextIndex = (promptIndex < troll.flagPrompts.Length - 1) ? promptIndex + 1 : -1; - if(prompt.multiselect) { if(prevFlags == 0) prevFlags = prompt.defaults; - // If there is a next prompt (even if may not be suitable), show a "next prompt" msg instead - Format(info, sizeof(info), "%d|%d|%d|%d|%d", victimUserID, troll.id, modifiers, prevFlags, nextIndex); - if(nextIndex == -1) - flagMenu.AddItem(info, "Apply Troll / Finish"); - else - flagMenu.AddItem(info, "Next Prompt"); - + Format(info, sizeof(info), "%d|%d|%d|%d|%d|1", victimUserID, troll.id, modifiers, prevFlags, promptIndex); + flagMenu.AddItem(info, "Apply / Next Prompt"); for(int i = 0; i < troll.flagNames.Length; i++) { int a = 1 << i; @@ -378,21 +378,22 @@ void ShowSelectFlagMenu(int activator, int victimUserID, int modifiers, Troll tr if(prevFlags > 0 && prevFlags & a) Format(name, sizeof(name), "%s (On)", name); int newFlags = prevFlags ^ a; //Toggle the flag instead of setting like below, as it's toggleable here - Format(info, sizeof(info), "%d|%d|%d|%d|%d", victimUserID, troll.id, modifiers, newFlags, promptIndex); + Format(info, sizeof(info), "%d|%d|%d|%d|%d|0", victimUserID, troll.id, modifiers, newFlags, promptIndex); flagMenu.AddItem(info, name); } } } else { // Single choice only for(int i = 0; i < troll.flagNames.Length; i++) { - if(prompt.flags & 1 << i) { + int a = 1 << i; + if(prompt.flags & a) { troll.flagNames.GetString(i, name, sizeof(name)); // Add (default) indicator - if(prompt.defaults & 1 << i) + if(prompt.defaults & a) Format(name, sizeof(name), "%s (default)", name); - int newFlags = prevFlags | 1 << i; //Set flag with any from previous prompts - Format(info, sizeof(info), "%d|%d|%d|%d|%d", victimUserID, troll.id, modifiers, newFlags, nextIndex); + int newFlags = prevFlags | a; //Set flag with any from previous prompts + Format(info, sizeof(info), "%d|%d|%d|%d|%d|1", victimUserID, troll.id, modifiers, newFlags, promptIndex); flagMenu.AddItem(info, name); } } @@ -433,7 +434,8 @@ void ShowThrowItAllMenu(int client, int userid) { int GetNextPrompt(Troll troll, int flags, int currentPrompt = 0) { static TrollFlagPrompt prompt; //If this prompt requires flags but they don't exist, skip to next that is valid or be done: - for(int i = currentPrompt; i < troll.flagPrompts.Length; i++) { + if(currentPrompt + 1 == troll.flagPrompts.Length) return -1; + for(int i = currentPrompt + 1; i < troll.flagPrompts.Length; i++) { troll.GetFlagPrompt(i, prompt); if(prompt.requireFlags & flags) { return i; diff --git a/scripting/include/feedthetrolls/misc.inc b/scripting/include/feedthetrolls/misc.inc index a096650..4bbd84d 100644 --- a/scripting/include/feedthetrolls/misc.inc +++ b/scripting/include/feedthetrolls/misc.inc @@ -53,16 +53,18 @@ bool ToggleMarkPlayer(int client, int target) { } } -stock int FindIdlePlayerBot(int client) { - for(int i = 1; i <= MaxClients; i++) { - if(IsClientConnected(i) && IsFakeClient(i)) { - int user = GetEntProp(i, Prop_Send, "m_humanSpectatorUserID"); - int bot = GetClientOfUserId(user); - return bot > 0 ? bot : client; - } +// Finds the survivor bot that took over an idle player +int GetSpectatorClient(int bot) { + if(!IsFakeClient(bot)) return -1; + static char netclass[16]; + GetEntityNetClass(bot, netclass, sizeof(netclass)); + if(strcmp(netclass, "SurvivorBot") == 0 ) { + int user = GetEntProp(bot, Prop_Send, "m_humanSpectatorUserID"); + if(user > 0) return GetClientOfUserId(user); } - return client; + return -1; } + stock bool IsPlayerIncapped(int client) { return GetEntProp(client, Prop_Send, "m_isIncapacitated") == 1; } @@ -237,15 +239,4 @@ void DropItem(int victim, int slot) { if(slot != 1 || DoesClientHaveMelee(victim)) { SDKHooks_DropWeapon(victim, wpn, NULL_VECTOR); } -} - -int GetSpectatorClient(int bot) { - if(!IsFakeClient(bot)) return -1; - static char netclass[16]; - GetEntityNetClass(bot, netclass, sizeof(netclass)); - if(strcmp(netclass, "SurvivorBot") == 0 ) { - int user = GetEntProp(bot, Prop_Send, "m_humanSpectatorUserID"); - if(user > 0) return GetClientOfUserId(user); - } - return -1; } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/specials.inc b/scripting/include/feedthetrolls/specials.inc index 583e0db..559b011 100644 --- a/scripting/include/feedthetrolls/specials.inc +++ b/scripting/include/feedthetrolls/specials.inc @@ -43,6 +43,8 @@ bool SpawnSpecialInFace(int target, int specialType) { testPos = pos; GetClientAbsOrigin(target, pos); GetClientEyeAngles(target, ang); + if(specialType == 2) + gInstaSpecialInstaKill = true; if(specialType != 5 && specialType != 2) { //If not jockey/hunter find a suitable area that is at least 5 m away float minDistance = GetIdealMinDistance(specialType); GetHorizontalPositionFromOrigin(pos, ang, minDistance, testPos); @@ -57,14 +59,15 @@ bool SpawnSpecialInFace(int target, int specialType) { pos[2] += 1.0; NegateVector(ang); - return SpawnSpecialInternal(specialType, target, pos, NULL_VECTOR) > 0; + return SpawnSpecialInternal(specialType, target, pos, NULL_VECTOR) != -1; } bool SpawnSpecialNear(int target, int specialType) { + gInstaSpecialInstaKill = false; if(specialType > 8) return false; static float pos[3]; if(L4D_GetRandomPZSpawnPosition(target, specialType, 10, pos)) { - return SpawnSpecialInternal(specialType, target, pos, NULL_VECTOR) > 0; + return SpawnSpecialInternal(specialType, target, pos, NULL_VECTOR) != -1; } return false; } @@ -80,11 +83,19 @@ void BypassLimit() { int SpawnSpecialInternal(int type, int target, float pos[3], float ang[3]) { if(type <= 6) { - // BypassLimit(); - int special = L4D2_SpawnSpecial(type, pos, ang); - if(special != -1) - g_iAttackerTarget[special] = GetClientUserId(target); - return special; + // Bypass limit: + gInstaSpecialType = type; + gInstaSpecialTarget = GetClientUserId(target); + gInstaSpecialSpawnPos = pos; + gInstaSpecialSpawnAng = pos; + CreateTimer(2.0, Timer_InstaFailed); + int bot = CreateFakeClient("ManualDirectorBot"); + if (bot != 0) { + ChangeClientTeam(bot, 3); + CreateTimer(0.1, Timer_KickBot, bot); + } + CheatCommand(target, "z_spawn_old", SPECIAL_NAMES[type-1], "auto"); + return 0; } else if(type == 7) { int witch = L4D2_SpawnWitch(pos, ang); @@ -101,4 +112,10 @@ int SpawnSpecialInternal(int type, int target, float pos[3], float ang[3]) { return tank; } else return -1; -} \ No newline at end of file +} + +/* TODO: Bypass limit: + Spawn special auto, far away, mark with global vars: + 1. special type (check) + 2. its target + 3. float[3] to TP it to \ No newline at end of file diff --git a/scripting/include/feedthetrolls/timers.inc b/scripting/include/feedthetrolls/timers.inc index c19002f..590ea9b 100644 --- a/scripting/include/feedthetrolls/timers.inc +++ b/scripting/include/feedthetrolls/timers.inc @@ -100,4 +100,11 @@ public Action Timer_KickBot(Handle timer, int client) { if(IsClientInGame(client) && (!IsClientInKickQueue(client))) { if(IsFakeClient(client)) KickClient(client); } +} + +public Action Timer_InstaFailed(Handle h) { + if(gInstaSpecialType != -1) { + gInstaSpecialType = -1; + gInstaSpecialTarget = 0; + } } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/trolls.inc b/scripting/include/feedthetrolls/trolls.inc index 5be036e..fd20316 100644 --- a/scripting/include/feedthetrolls/trolls.inc +++ b/scripting/include/feedthetrolls/trolls.inc @@ -3,15 +3,16 @@ void SetupTrolls() { trollKV = new StringMap(); categories = new ArrayList(ByteCountToCells(16)); + gRandomClients = new ArrayList(); int index; SetupTroll("Reset User", "Resets the user, removes all troll effects", TrollMod_Instant); SetCategory("Magnets"); - index = SetupTroll("Special Magnet", "Attracts ALL specials to any alive target with this troll enabled", TrollMod_Constant, false); + index = SetupTroll("Special Magnet", "Attracts ALL specials to any alive target with this troll enabled", TrollMod_Constant); AddMagnetFlags(index); - index = SetupTroll("Tank Magnet", "Attracts ALL tanks to any alive target with this troll enabled", TrollMod_Constant, false); + index = SetupTroll("Tank Magnet", "Attracts ALL tanks to any alive target with this troll enabled", TrollMod_Constant); AddMagnetFlags(index); - index = SetupTroll("Witch Magnet", "All witches when startled will target any player with this troll", TrollMod_Constant, false); + index = SetupTroll("Witch Magnet", "All witches when startled will target any player with this troll", TrollMod_Constant); SetCategory("Infected"); SetupTroll("Swarm", "Swarms a player with zombies. Requires swarm plugin", TrollMod_Instant | TrollMod_Constant); @@ -21,12 +22,12 @@ void SetupTrolls() { SetupTroll("Goo", "Spawns a spitter puddle underneath them", TrollMod_Instant); SetCategory("Items"); - index = SetupTroll("Throw It All", "Player throws their item(s) periodically to a nearby player", TrollMod_Instant, false); + index = SetupTroll("Throw It All", "Player throws their item(s) periodically to a nearby player", TrollMod_Instant); //Can't add directly, is custom troll: // Trolls[index].AddFlag("Throw to Admin", true); // Trolls[index].AddFlag("Drop At Feet", false); // Trolls[index].AddFlag("Drop At Admin", false); - index = SetupTroll("Bad Throw", "Player drops throwables on throw, and biles/molotovs themselves", TrollMod_Constant, true); + index = SetupTroll("Bad Throw", "Player drops throwables on throw, and biles/molotovs themselves", TrollMod_Constant | TrollMod_PlayerOnly); Trolls[index].AddFlagPrompt(true); Trolls[index].AddFlag("Biles", true); Trolls[index].AddFlag("Molotovs", true); @@ -42,8 +43,8 @@ void SetupTrolls() { SetupTroll("Half Primary Ammo", "Cuts their primary reserve ammo in half", TrollMod_Instant); SetCategory("Chat"); - SetupTroll("iCantSpellNoMore", "Chat messages letter will randomly changed with wrong letters", TrollMod_Constant); - index = SetupTroll("No Profanity", "Replaces some words with random phrases", TrollMod_Constant); + SetupTroll("iCantSpellNoMore", "Chat messages letter will randomly changed with wrong letters", TrollMod_Constant | TrollMod_PlayerOnly); + index = SetupTroll("No Profanity", "Replaces some words with random phrases", TrollMod_Constant | TrollMod_PlayerOnly); Trolls[index].AddFlagPrompt(false); Trolls[index].AddFlag("Only Replace Swears", false); Trolls[index].AddFlag("Replace Full Messages", true); @@ -51,21 +52,21 @@ void SetupTrolls() { Trolls[index].AddFlag("Show Modified to Them", true); Trolls[index].AddFlag("Show Original to Them", false); SetupTroll("Vocalize Gag", "Prevents player from sending any vocalizations (even automatic)", TrollMod_Constant); - index = SetupTroll("Honk / Meow", "Honk or Meow", TrollMod_Constant, false); + index = SetupTroll("Honk / Meow", "Honk or Meow", TrollMod_Constant); Trolls[index].AddCustomFlagPrompt("Choose Sound Type:"); Trolls[index].AddFlag("Honk", true); Trolls[index].AddFlag("Meow", false); Trolls[index].AddCustomFlagPrompt("Choose Chat modifier:", false, 1); Trolls[index].AddFlag("Show Modified to Them", true); Trolls[index].AddFlag("Show Original to Them", false); - SetupTroll("Reversed", "Reserves their message", TrollMod_Constant); + SetupTroll("Reversed", "Reserves their message", TrollMod_Constant | TrollMod_PlayerOnly); SetCategory("Health"); SetupTroll("Damage Boost", "Makes a player take more damage than normal", TrollMod_Constant); SetupTroll("Temp Health Quick Drain", "Makes a player's temporarily health drain very quickly", TrollMod_Constant); SetupTroll("Slow Drain", "Will make the player slowly lose health over time", TrollMod_Constant); SetupTroll("KillMeSoftly", "Make player eat or waste pills whenever possible", TrollMod_Instant | TrollMod_Constant); - index = SetupTroll("Reverse FF", "All damage dealt to a player is reversed", TrollMod_Constant, false); + index = SetupTroll("Reverse FF", "All damage dealt to a player is reversed", TrollMod_Constant); Trolls[index].AddCustomFlagPrompt("Choose Reverse FF", false); Trolls[index].AddFlag("1:1 Ratio", true); Trolls[index].AddFlag("2x Ratio", false); @@ -76,9 +77,15 @@ void SetupTrolls() { SetupTroll("Slow Speed", "Sets player speed to 0.8x of normal speed", TrollMod_Constant); SetupTroll("Higher Gravity", "Sets player gravity to 1.3x of normal gravity", TrollMod_Constant); SetupTroll("No Shove", "Prevents a player from shoving", TrollMod_Constant); - SetupTroll("CameTooEarly", "When they shoot, random chance they empty whole clip", TrollMod_Constant); - SetupTroll("Inverted Controls", "Well, aint it obvious", TrollMod_Constant); + SetupTroll("CameTooEarly", "When they shoot, random chance they empty whole clip", TrollMod_Constant | TrollMod_PlayerOnly); + SetupTroll("Inverted Controls", "Well, aint it obvious", TrollMod_Constant | TrollMod_PlayerOnly); SetupTroll("Stagger", "Like a slap, but different", TrollMod_Instant); + index = SetupTroll("Meta: Inverse", "Uhm you are not supposed to see this...", TrollMod_Instant | TrollMod_PlayerOnly); + Trolls[index].hidden = true; + Trolls[index].AddFlagPrompt(false); + Trolls[index].AddFlag("100%", true); + Trolls[index].AddFlag("50%", false); + Trolls[index].AddFlag("10%", false); //INFO: UP MAX_TROLLS when adding new trolls! @@ -142,13 +149,13 @@ bool ApplyAffect(int victim, const Troll troll, int activator, trollModifier mod //TODO: Implement TrollMod_Constant return false; } else if(StrEqual(troll.name, "Throw It All")) { - if(modifier == TrollMod_Instant) + if(modifier & TrollMod_Instant) ThrowAllItems(victim); - if(hThrowTimer == INVALID_HANDLE && modifier == TrollMod_Constant) { + if(hThrowTimer == INVALID_HANDLE && modifier & TrollMod_Constant) { hThrowTimer = CreateTimer(hThrowItemInterval.FloatValue, Timer_ThrowTimer, _, TIMER_REPEAT); } } else if(StrEqual(troll.name, "Swarm")) { - if(modifier == TrollMod_Instant) { + if(modifier & TrollMod_Instant) { L4D2_RunScript("RushVictim(GetPlayerFromUserID(%d), %d)", victim, 15000); } return true; @@ -163,10 +170,10 @@ bool ApplyAffect(int victim, const Troll troll, int activator, trollModifier mod } else if(StrEqual(troll.name, "Vomit Player")) L4D_CTerrorPlayer_OnVomitedUpon(victim, victim); else if(StrEqual(troll.name, "Inface Special")) { - FakeClientCommand(victim, "sm_inface"); + FakeClientCommand(activator, "sm_inface"); return false; } else if(StrEqual(troll.name, "Insta Special")) { - FakeClientCommand(victim, "sm_insta"); + FakeClientCommand(activator, "sm_insta"); return false; } else if(StrEqual(troll.name, "Goo")) { static float pos[3], ang[3]; diff --git a/scripting/l4d2_feedthetrolls.sp b/scripting/l4d2_feedthetrolls.sp index 85fb66c..7f043b6 100644 --- a/scripting/l4d2_feedthetrolls.sp +++ b/scripting/l4d2_feedthetrolls.sp @@ -38,14 +38,16 @@ public void OnPluginStart() { SetFailState("This plugin is for L4D/L4D2 only."); } LoadTranslations("common.phrases"); - g_iAmmoTable = FindSendPropInfo("CTerrorPlayer", "m_iAmmo"); g_PlayerMarkedForward = new GlobalForward("FTT_OnClientMarked", ET_Ignore, Param_Cell, Param_Cell); + // Load core things (trolls & phrases): REPLACEMENT_PHRASES = new StringMap(); LoadPhrases(); SetupTrolls(); + // Witch target overwrite stuff: + GameData data = new GameData("l4d2_behavior"); StartPrepSDKCall(SDKCall_Raw); @@ -60,24 +62,25 @@ public void OnPluginStart() { hAutoPunish = CreateConVar("sm_ftt_autopunish_action", "0", "Setup automatic punishment of players. Add bits together\n0=Disabled, 1=Tank magnet, 2=Special magnet, 4=Swarm, 8=InstantVomit", FCVAR_NONE, true, 0.0); hAutoPunishExpire = CreateConVar("sm_ftt_autopunish_expire", "0", "How many minutes of gametime until autopunish is turned off? 0 for never.", FCVAR_NONE, true, 0.0); hMagnetChance = CreateConVar("sm_ftt_magnet_chance", "1.0", "% of the time that the magnet will work on a player.", FCVAR_NONE, true, 0.0, true, 1.0); - hMagnetTargetMode = CreateConVar("sm_ftt_magnet_targetting", "1", "How does the specials target players. Add bits together\n0= Target until Dead, 1=Specials ignore incapped, 2=Tank ignores incapped"); + hMagnetTargetMode = CreateConVar("sm_ftt_magnet_targetting", "6", "How does the specials target players. Add bits together\n0=Incapped are ignored, 1=Specials targets incapped, 2=Tank targets incapped 4=Witch targets incapped"); hShoveFailChance = CreateConVar("sm_ftt_shove_fail_chance", "0.65", "The % chance that a shove fails", FCVAR_NONE, true, 0.0, true, 1.0); - hWitchTargetIncapp = CreateConVar("sm_ftt_witch_target_incapped", "1", "Should the witch target witch magnet victims who are incapped?\n 0 = No, 1 = Yes", FCVAR_NONE, true, 0.0, true, 1.0); hBadThrowHitSelf = CreateConVar("sm_ftt_badthrow_fail_chance", "1", "The % chance that on a throw, they will instead hit themselves. 0 to disable", FCVAR_NONE, true, 0.0, true, 1.0); - RegAdminCmd("sm_ftl", Command_ListTheTrolls, ADMFLAG_KICK, "Lists all the trolls currently ingame."); - RegAdminCmd("sm_ftm", Command_ListModes, ADMFLAG_KICK, "Lists all the troll modes and their description"); - RegAdminCmd("sm_ftr", Command_ResetUser, ADMFLAG_KICK, "Resets user of any troll effects."); - RegAdminCmd("sm_fta", Command_ApplyUser, ADMFLAG_KICK, "Apply a troll mod to a player, or shows menu if no parameters."); - RegAdminCmd("sm_ftas", Command_ApplyUserSilent, ADMFLAG_CHEATS, "Apply a troll mod to a player, or shows menu if no parameters."); - RegAdminCmd("sm_ftt", Command_FeedTheTrollMenu, ADMFLAG_KICK, "Opens a list that shows all the commands"); + RegAdminCmd("sm_ftl", Command_ListTheTrolls, ADMFLAG_KICK, "Lists all the trolls currently ingame."); + RegAdminCmd("sm_ftm", Command_ListModes, ADMFLAG_KICK, "Lists all the troll modes and their description"); + RegAdminCmd("sm_ftr", Command_ResetUser, ADMFLAG_KICK, "Resets user of any troll effects."); + RegAdminCmd("sm_fta", Command_ApplyUser, ADMFLAG_KICK, "Apply a troll mod to a player, or shows menu if no parameters."); + RegAdminCmd("sm_ftas", Command_ApplyUserSilent, ADMFLAG_CHEATS, "Apply a troll mod to a player, or shows menu if no parameters."); + RegAdminCmd("sm_ftt", Command_FeedTheTrollMenu, ADMFLAG_KICK, "Opens a list that shows all the commands"); RegAdminCmd("sm_mark", Command_MarkPendingTroll, ADMFLAG_KICK, "Marks a player as to be banned on disconnect"); - RegAdminCmd("sm_ftc", Command_FeedTheCrescendoTroll, ADMFLAG_KICK, "Applies a manual punish on the last crescendo activator"); - RegAdminCmd("sm_witch_attack", Command_WitchAttack, ADMFLAG_CHEATS, "Makes all witches target a player"); + RegAdminCmd("sm_ftc", Command_FeedTheCrescendoTroll, ADMFLAG_KICK, "Applies a manual punish on the last crescendo activator"); + RegAdminCmd("sm_witch_attack", Command_WitchAttack, ADMFLAG_CHEATS, "Makes all witches target a player"); RegAdminCmd("sm_insta", Command_InstaSpecial, ADMFLAG_KICK, "Spawns a special that targets them, close to them."); RegAdminCmd("sm_instaface", Command_InstaSpecialFace, ADMFLAG_KICK, "Spawns a special that targets them, right in their face."); RegAdminCmd("sm_inface", Command_InstaSpecialFace, ADMFLAG_KICK, "Spawns a special that targets them, right in their face."); + RegAdminCmd("sm_noob", Command_MarkNoob, ADMFLAG_KICK, "Marks a player as a noob. stored in a database"); + HookEvent("player_spawn", Event_PlayerSpawn); HookEvent("player_disconnect", Event_PlayerDisconnect); HookEvent("player_death", Event_PlayerDeath); HookEvent("triggered_car_alarm", Event_CarAlarm); @@ -86,6 +89,8 @@ public void OnPluginStart() { AddNormalSoundHook(view_as(SoundHook)); AutoExecConfig(true, "l4d2_feedthetrolls"); + + } /////////////////////////////////////////////////////////////////////////////// // CVAR CHANGES @@ -103,11 +108,12 @@ public void Change_ThrowInterval(ConVar convar, const char[] oldValue, const cha // METHODS - Old methods, some are also in feedthetrolls/misc.inc /////////////////////////////////////////////////////////////////////////////// + void ThrowAllItems(int victim) { float vicPos[3], destPos[3]; int clients[4]; GetClientAbsOrigin(victim, vicPos); - //Find a bot to throw to + //Find a survivor to throw to (grabs the first nearest non-self survivor) int clientCount = GetClientsInRange(vicPos, RangeType_Visibility, clients, sizeof(clients)); for(int i = 0; i < clientCount; i++) { if(clients[i] != victim) { @@ -126,7 +132,6 @@ void ThrowAllItems(int victim) { WritePackFloat(pack, destPos[2]); WritePackCell(pack, slot); WritePackCell(pack, victim); - } } @@ -164,18 +169,15 @@ bool IsPlayerFarDistance(int client, float distance) { stock int GetPrimaryReserveAmmo(int client) { int weapon = GetPlayerWeaponSlot(client, 0); - if(weapon > -1) { - int primaryAmmoType = GetEntProp(weapon, Prop_Send, "m_iPrimaryAmmoType"); - return GetEntData(client, g_iAmmoTable + (primaryAmmoType * 4)); + if(weapon > 0) { + return GetEntProp(client, Prop_Send, "m_iAmmo", _, GetEntProp(weapon, Prop_Send, "m_iPrimaryAmmoType")); } return -1; } stock bool SetPrimaryReserveAmmo(int client, int amount) { int weapon = GetPlayerWeaponSlot(client, 0); if(weapon > -1) { - int primaryAmmoType = GetEntProp(weapon, Prop_Send, "m_iPrimaryAmmoType"); - SetEntData(client, g_iAmmoTable + (primaryAmmoType * 4), amount); - return true; + SetEntProp(client, Prop_Send, "m_iAmmo", amount, _, GetEntProp(weapon, Prop_Send, "m_iPrimaryAmmoType")); } return false; }