From f756ec3100668996c6b2b4d1fb010578d8d9d0ab Mon Sep 17 00:00:00 2001 From: Jackz Date: Sat, 25 Sep 2021 16:47:52 -0500 Subject: [PATCH] ftt: Upgrade to categories / minor improvements --- plugins/l4d2_feedthetrolls.smx | Bin 45402 -> 49392 bytes scripting/include/feedthetrolls/base.inc | 112 +++++++++------- scripting/include/feedthetrolls/commands.inc | 6 +- scripting/include/feedthetrolls/events.inc | 49 ++++++- scripting/include/feedthetrolls/menus.inc | 132 +++++++++++++++---- scripting/include/feedthetrolls/misc.inc | 116 +++++++++++++++- scripting/include/feedthetrolls/specials.inc | 2 +- scripting/include/feedthetrolls/timers.inc | 15 ++- scripting/include/ftt.inc | 3 +- scripting/l4d2_feedthetrolls.sp | 6 +- scripting/l4d2_forceset.sp | 48 +++++++ 11 files changed, 397 insertions(+), 92 deletions(-) create mode 100644 scripting/l4d2_forceset.sp diff --git a/plugins/l4d2_feedthetrolls.smx b/plugins/l4d2_feedthetrolls.smx index 255bd734d7748b074112b12cd92f2cd7099539af..eb5ba6ea4d0558f805663d34c90fe7be1c4c7949 100644 GIT binary patch literal 49392 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 return TrollMod_Constant; else return TrollMod_Invalid; } + + void Activate(int victim, int activator, trollModifier modifier, bool silent = false) { + ApplyTroll(victim, this._id, activator, modifier, silent); + } } Troll Trolls[MAX_TROLLS+1]; @@ -50,7 +57,8 @@ void ResetClient(int victim, bool wipe = true) { if(wpn > -1) SDKUnhook(wpn, SDKHook_Reload, Event_WeaponReload); } - +ArrayList categories; +static int categoryID = 0; int SetupTroll(const char[] name, const char description[128], int flags) { if(flags == 0) { ThrowError("Troll \"%s\" has no flags defined.", name); @@ -59,11 +67,13 @@ int SetupTroll(const char[] name, const char description[128], int flags) { static int i = 0; strcopy(Trolls[i].name, MAX_TROLL_NAME_LENGTH, name); strcopy(Trolls[i].description, 128, description); + Trolls[i].categoryID = categoryID; Trolls[i].flags = flags; static char key[MAX_TROLL_NAME_LENGTH]; strcopy(key, MAX_TROLL_NAME_LENGTH, name); ReplaceString(key, MAX_TROLL_NAME_LENGTH, " ", "", false); strcopy(trollIds[i], MAX_TROLL_NAME_LENGTH, key); + strcopy(Trolls[i]._id, MAX_TROLL_NAME_LENGTH, key); trollKV.SetValue(key, i); return i++; } @@ -110,7 +120,9 @@ void ApplyTroll(int victim, const char[] name, int activator, trollModifier modi victim = FindIdlePlayerBot(victim); } - ApplyAffect(victim, name, activator, modifier); + if(!ApplyAffect(victim, name, activator, modifier)) { + return; + } if(!silent) { if(IsTrollActive(victim, name)) { @@ -127,11 +139,11 @@ void ApplyTroll(int victim, const char[] name, int activator, trollModifier modi } } -void ApplyAffect(int victim, const char[] name, int activator, trollModifier modifier) { +bool ApplyAffect(int victim, const char[] name, int activator, trollModifier modifier) { if(StrEqual(name, "ResetTroll")) { ShowActivity(activator, "reset troll effects for %N. ", victim); ActiveTrolls[victim] = 0; - return; + return false; } else if(StrEqual(name, "SlowSpeed")) SetEntPropFloat(victim, Prop_Send, "m_flLaggedMovementValue", 0.8); else if(StrEqual(name, "HigherGravity")) @@ -151,26 +163,6 @@ void ApplyAffect(int victim, const char[] name, int activator, trollModifier mod DisableTroll(victim, "UziRules"); DisableTroll(victim, "PrimaryDisable"); SDKHook(victim, SDKHook_WeaponCanUse, Event_ItemPickup); - } else if(StrEqual(name, "Clumsy")) { - int wpn = GetClientSecondaryWeapon(victim); - bool hasMelee = DoesClientHaveMelee(victim); - if(hasMelee) { - float pos[3]; - int clients[4]; - GetClientAbsOrigin(victim, pos); - int clientCount = GetClientsInRange(pos, RangeType_Visibility, clients, sizeof(clients)); - for(int i = 0; i < clientCount; i++) { - if(clients[i] != victim) { - float targPos[3]; - GetClientAbsOrigin(clients[i], targPos); - SDKHooks_DropWeapon(victim, wpn, targPos); - // g_iTrollUsers[victim] = mode; - CreateTimer(0.2, Timer_GivePistol); - return; - } - } - SDKHooks_DropWeapon(victim, wpn); - } } else if(StrEqual(name, "CameTooEarly")) { ReplyToCommand(activator, "This troll mode is not implemented."); } else if(StrEqual(name, "KillMeSoftly")) { @@ -181,10 +173,10 @@ void ApplyAffect(int victim, const char[] name, int activator, trollModifier mod g_bPendingItemGive[victim] = true; }else{ ReplyToCommand(activator, "User does not have pills or adrenaline"); - return; + return false; } //TODO: Implement TrollMod_Constant - return; + return false; } else if(StrEqual(name, "ThrowItAll")) { if(modifier == TrollMod_Instant) ThrowAllItems(victim); @@ -198,7 +190,7 @@ void ApplyAffect(int victim, const char[] name, int activator, trollModifier mod }else{ ReplyToCommand(activator, "Invalid modifier for mode."); - return; + return false; } } else if(StrEqual(name, "GunJam")) { int wpn = GetClientWeaponEntIndex(victim, 0); @@ -208,12 +200,19 @@ void ApplyAffect(int victim, const char[] name, int activator, trollModifier mod ReplyToCommand(activator, "Victim does not have a primary weapon."); } else if(StrEqual(name, "VomitPlayer")) L4D_CTerrorPlayer_OnVomitedUpon(victim, victim); - else { + else if(StrEqual(name, "InfaceSpecial")) { + FakeClientCommand(victim, "sm_inface"); + return false; + } else if(StrEqual(name, "InstaSpecial")) { + FakeClientCommand(victim, "sm_insta"); + return false; + } else { #if defined DEBUG PrintToServer("[FTT] Possibly invalid troll, no action: %s", name); ReplyToCommand(activator, "[FTT/Debug] If nothing occurs, this troll possibly was not implemented correctly. "); #endif } + return true; } bool IsTrollActive(int client, const char[] troll) { @@ -238,34 +237,53 @@ void DisableTroll(int client, const char[] troll) { } } +void SetCategory(const char[] newCat) { + categoryID = categories.PushString(newCat); +} +void GetCategory(int category, char[] buffer, int size) { + categories.GetString(category, buffer, size); +} void SetupTrolls() { trollKV = new StringMap(); + categories = new ArrayList(ByteCountToCells(16)); SetupTroll("Reset Troll", "Resets the user, removes all troll effects", TrollMod_Instant); + + SetCategory("Magnet / Horde"); SetupTroll("Special Magnet", "Attracts ALL specials to any alive target with this troll enabled", TrollMod_Constant); SetupTroll("Tank Magnet", "Attracts ALL tanks to any alive target with this troll enabled", TrollMod_Constant); SetupTroll("Witch Magnet", "All witches when startled will target any player with this troll", TrollMod_Constant); + SetupTroll("Swarm", "Swarms a player with zombies. Requires swarm plugin", TrollMod_Instant | TrollMod_Constant); SetupTroll("Vomit Player", "Shortcut to sm_vomitplayer. vomits the player.", TrollMod_Instant); - SetupTroll("Throw It All", "Player throws all their items at nearby player, periodically", TrollMod_Instant | TrollMod_Constant); - SetupTroll("Vocalize Gag", "Prevents player from sending any vocalizations (even automatic)", TrollMod_Constant); - SetupTroll("No Profanity", "Replaces some words with random phrases", TrollMod_Constant); - SetupTroll("Swarm", "Swarms a player with zombies. Requires swarm plugin", TrollMod_Instant); - SetupTroll("UziRules", "Picking up a weapon gives them a UZI instead", TrollMod_Constant); - 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("Half Primary Ammo", "Cuts their primary reserve ammo in half", TrollMod_Instant); - SetupTroll("Primary Disable", "Player cannot pickup any weapons, only melee/pistols", TrollMod_Constant); - SetupTroll("Clusmy", "Player drops axe periodically or on demand", TrollMod_Instant | TrollMod_Constant); - SetupTroll("iCantSpellNoMore", "Chat messages letter will randomly changed with wrong letters", TrollMod_Instant); - SetupTroll("KillMeSoftly", "Make player eat or waste pills whenever possible", TrollMod_Instant | TrollMod_Constant); - SetupTroll("Gun Jam", "On reload, small chance their gun gets jammed - Can't reload.", TrollMod_Constant); + SetupTroll("Inface Special", "Shortcut to sm_inface", TrollMod_Instant); + SetupTroll("Insta Special", "Shortcut to sm_insta", TrollMod_Instant); + + SetCategory("Items"); + SetupTroll("Throw It All", "Player throws their item(s) periodically to a nearby player", TrollMod_Instant); + SetupTroll("Bad Throw", "Player drops throwables on throw, and biles/molotovs themselves", TrollMod_Constant); SetupTroll("No Pickup", "Prevents a player from picking up ANY (new) item. Use ThrowItAll to make them drop", TrollMod_Constant); + SetupTroll("UziRules", "Picking up a weapon gives them a UZI instead", TrollMod_Constant); + SetupTroll("Primary Disable", "Player cannot pickup any weapons, only melee/pistols", TrollMod_Constant); + 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_Instant); + SetupTroll("No Profanity", "Replaces some words with random phrases", TrollMod_Constant); + SetupTroll("Vocalize Gag", "Prevents player from sending any vocalizations (even automatic)", TrollMod_Constant); SetupTroll("Honk", "Honk", TrollMod_Constant); - SetupTroll("No Shove", "Prevents a player from shoving", TrollMod_Constant); + SetupTroll("Meow", "Makes the player meow", TrollMod_Constant); + + 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); + + SetCategory("Misc"); + SetupTroll("Gun Jam", "On reload, small chance their gun gets jammed - Can't reload.", TrollMod_Constant); + 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("Meow", "Makes the player meow", TrollMod_Constant); //INFO: UP MAX_TROLLS when adding new trolls! } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/commands.inc b/scripting/include/feedthetrolls/commands.inc index 1255342..2b050b7 100644 --- a/scripting/include/feedthetrolls/commands.inc +++ b/scripting/include/feedthetrolls/commands.inc @@ -1,7 +1,7 @@ public Action Command_InstaSpecial(int client, int args) { if(args < 1) { Menu menu = new Menu(Insta_PlayerHandler); - menu.SetTitle("Choose a player"); + menu.SetTitle("InstaSpecial: Choose a player"); for(int i = 1; i < MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2) { static char userid[8], display[16]; @@ -59,7 +59,7 @@ public Action Command_InstaSpecial(int client, int args) { public Action Command_InstaSpecialFace(int client, int args) { if(args < 1) { Menu menu = new Menu(Insta_PlayerHandler); - menu.SetTitle("Choose a player"); + menu.SetTitle("Inface: Choose a player"); for(int i = 1; i < MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2) { static char userid[8], display[16]; @@ -201,7 +201,7 @@ public Action Command_ResetUser(int client, int args) { public Action Command_ApplyUser(int client, int args) { if(args < 2) { Menu menu = new Menu(ChoosePlayerHandler); - menu.SetTitle("Choose a player"); + menu.SetTitle("Choose a player to troll"); for(int i = 1; i < MaxClients; i++) { if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2) { static char userid[8], display[16]; diff --git a/scripting/include/feedthetrolls/events.inc b/scripting/include/feedthetrolls/events.inc index 51417eb..f5bf90a 100644 --- a/scripting/include/feedthetrolls/events.inc +++ b/scripting/include/feedthetrolls/events.inc @@ -12,6 +12,8 @@ public void OnMapStart() { HookEntityOutput("func_button", "OnPressed", Event_ButtonPress); CreateTimer(MAIN_TIMER_INTERVAL_S, Timer_Main, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); PrecacheSound("player/footsteps/clown/concrete1.wav"); + PrecacheSound("weapons/ceda_jar/ceda_jar_explode.wav"); + PrecacheSound("weapons/molotov/molotov_detonate_1.wav"); //CreateTimer(30.0, Timer_AutoPunishCheck, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); } public void OnClientPutInServer(int client) { @@ -219,7 +221,8 @@ public Action OnClientSayCommand(int client, const char[] command, const char[] int words = ExplodeString(sArgs, " ", strings, 32, MAX_PHRASE_LENGTH); for(int i = 0; i < words; i++) { //TODO: Check for valid working - if((phrases = GetPhrasesArray(strings[i])) && phrases.Length > 0) { + phrases = GetPhrasesArray(strings[i]); + if(phrases != null && phrases.Length > 0) { foundWord = true; int c = phrases.GetString(GetRandomInt(0, phrases.Length - 1), strings[i], MAX_PHRASE_LENGTH); PrintToServer("replacement: %s (%d)", strings[i], c); @@ -368,4 +371,48 @@ public Action Event_WitchVictimSet(Event event, const char[] name, bool dontBroa pack.WriteCell(GetClientUserId(closestClient)); pack.WriteCell(witch); } +} + +public void OnEntityCreated(int entity, const char[] classname) { + if(IsValidEntity(entity) && StrContains(classname, "_projectile", true) > -1 ) { + RequestFrame(EntityCreateCallback, entity); + } +} +void EntityCreateCallback(int entity) { + if(!HasEntProp(entity, Prop_Send, "m_hOwnerEntity") || !IsValidEntity(entity)) return; + static char class[16]; + + GetEntityClassname(entity, class, sizeof(class)); + int entOwner = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity"); + if(entOwner > 0 && entOwner <= MaxClients && IsTrollActive(entOwner, "BadThrow")) { + static float pos[3]; + GetClientEyePosition(entOwner, pos); + if(StrContains(class, "vomitjar", true) > -1) { + AcceptEntityInput(entity, "Kill"); + if(hBadThrowHitSelf.FloatValue > 0.0 && GetRandomFloat() > hBadThrowHitSelf.FloatValue) { + L4D_CTerrorPlayer_OnVomitedUpon(entOwner, entOwner); + EmitSoundToAll("weapons/ceda_jar/ceda_jar_explode.wav", entOwner); + FindClosestClient(entOwner, false, pos); + } + SpawnItem("vomitjar", pos); + } else if(StrContains(class, "molotov", true) > -1) { + // Burn them if no one near :) + if(hBadThrowHitSelf.FloatValue > 0.0 && GetRandomFloat() > hBadThrowHitSelf.FloatValue) { + GetClientAbsOrigin(entOwner, pos); + if(IsAnyPlayerNear(entOwner, 500.0)) { + AcceptEntityInput(entity, "Kill"); + EmitSoundToAll("weapons/molotov/molotov_detonate_1.wav", entOwner); + } else { // or delete if there is + TeleportEntity(entity, pos, NULL_VECTOR, NULL_VECTOR); + } + } else { + SpawnItem("molotov", pos); + AcceptEntityInput(entity, "Kill"); + } + } else if(StrContains(class, "pipe_bomb", true) > -1) { + if(hBadThrowHitSelf.FloatValue > 0.0 && GetRandomFloat() > hBadThrowHitSelf.FloatValue) + TeleportEntity(entity, pos, NULL_VECTOR, NULL_VECTOR); + SpawnItem("pipe_bomb", pos); + } + } } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/menus.inc b/scripting/include/feedthetrolls/menus.inc index d5b8726..63a2e6d 100644 --- a/scripting/include/feedthetrolls/menus.inc +++ b/scripting/include/feedthetrolls/menus.inc @@ -13,9 +13,8 @@ public int Insta_PlayerHandler(Menu menu, MenuAction action, int client, int par Menu spMenu = new Menu(Insta_SpecialHandler); spMenu.SetTitle("Choose a Insta-Specialâ„¢"); for(int i = 1; i <= 6; i++) { - static char id[8]; - Format(id, sizeof(id), "%d|%d|%d", userid, instaMode, i); - spMenu.AddItem(id, SPECIAL_NAMES[i-1]); + Format(info, sizeof(info), "%d|%d|%d", userid, instaMode, i); + spMenu.AddItem(info, SPECIAL_NAMES[i-1]); } spMenu.ExitButton = true; spMenu.Display(client, 0); @@ -58,21 +57,42 @@ public int ChooseMarkedTroll(Menu menu, MenuAction action, int activator, int pa public int ChoosePlayerHandler(Menu menu, MenuAction action, int param1, int param2) { /* If an option was selected, tell the client about the item. */ if (action == MenuAction_Select) { - static char info[16]; + static char info[8]; menu.GetItem(param2, info, sizeof(info)); int userid = StringToInt(info); + SetupCategoryMenu(param1, userid); + } else if (action == MenuAction_End) + delete menu; +} + +public int ChooseCategoryHandler(Menu menu, MenuAction action, int param1, int param2) { + if (action == MenuAction_Select) { + static char info[32]; + menu.GetItem(param2, info, sizeof(info)); + static char str[2][8]; + ExplodeString(info, "|", str, 2, 8, false); + int userid = StringToInt(str[0]); + int category = StringToInt(str[1]); + Menu trollMenu = new Menu(ChooseModeMenuHandler); - trollMenu.SetTitle("Choose a troll mode"); + GetCategory(category, info, sizeof(info)); + Format(info, sizeof(info), "Category: %s", info); + trollMenu.SetTitle(info); //TODO: Update - static char id[8]; static Troll troll; - for(int i = 0; i <= MAX_TROLLS; i++) { + + // add 'return' btn + Format(info, sizeof(info), "%d|-1", userid); + trollMenu.AddItem(info, "<= Go Back"); + + // Add all menus that have same category + for(int i = 0; i < trollKV.Size; i++) { GetTrollByKeyIndex(i, troll); - // int trollIndex = GetTrollByKeyIndex(i, troll); - // Pass key index - Format(id, sizeof(id), "%d|%d", userid, i); - trollMenu.AddItem(id, troll.name); + if(troll.categoryID == category) { + Format(info, sizeof(info), "%d|%d", userid, i); + trollMenu.AddItem(info, troll.name); + } } trollMenu.ExitButton = true; trollMenu.Display(param1, 0); @@ -81,7 +101,6 @@ public int ChoosePlayerHandler(Menu menu, MenuAction action, int param1, int par } public int ChooseModeMenuHandler(Menu menu, MenuAction action, int param1, int param2) { - /* If an option was selected, tell the client about the item. */ if (action == MenuAction_Select) { static char info[16]; menu.GetItem(param2, info, sizeof(info)); @@ -90,21 +109,44 @@ public int ChooseModeMenuHandler(Menu menu, MenuAction action, int param1, int p int userid = StringToInt(str[0]); int client = GetClientOfUserId(userid); int keyIndex = StringToInt(str[1]); + if(keyIndex == -1) { + SetupCategoryMenu(param1, userid); + return; + } static Troll troll; static char trollID[MAX_TROLL_NAME_LENGTH]; GetTrollByKeyIndex(keyIndex, troll); - troll.GetID(trollID, MAX_TROLL_NAME_LENGTH); + troll.GetID(trollID); //If troll has multiple flags, prompt: - if(troll.HasMod(TrollMod_Instant) && troll.HasMod(TrollMod_Constant)) { + if(StrEqual(trollID, "ThrowItAll")) { + // Setup menu to call itself, but with an extra data point + Menu itmMenu = new Menu(ChooseClumsySlotHandler); + itmMenu.SetTitle("Choose Item To Throw"); + + static char itmName[32]; + Format(info, sizeof(info), "%d|-1", userid); + itmMenu.AddItem(info, "All Items"); + for(int slot = 0; slot <= 4; slot++) { + int item = GetPlayerWeaponSlot(client, slot); + if(item > -1) { + GetEdictClassname(item, itmName, sizeof(itmName)); + Format(info, sizeof(info), "%d|%d", userid, slot); + itmMenu.AddItem(info, itmName[7]); + } + } + itmMenu.ExitButton = true; + itmMenu.Display(param1, 0); + } else if(troll.HasMod(TrollMod_Instant) && troll.HasMod(TrollMod_Constant)) { Menu modiferMenu = new Menu(ChooseTrollModiferHandler); modiferMenu.SetTitle("Choose Troll Modifer Option"); - static char singleUse[16], multiUse[16], bothUse[16]; - Format(singleUse, sizeof(singleUse), "%d|%d|1", userid, keyIndex); - Format(multiUse, sizeof(multiUse), "%d|%d|2", userid, keyIndex); - Format(bothUse, sizeof(bothUse), "%d|%d|3", userid, keyIndex); - modiferMenu.AddItem(singleUse, "Activate once"); - modiferMenu.AddItem(multiUse, "Activate Periodically"); - modiferMenu.AddItem(bothUse, "Activate Periodically & Instantly"); + + Format(info, sizeof(info), "%d|%d|1", userid, keyIndex); + modiferMenu.AddItem(info, "Activate once"); + Format(info, sizeof(info), "%d|%d|2", userid, keyIndex); + modiferMenu.AddItem(info, "Activate Periodically"); + Format(info, sizeof(info), "%d|%d|3", userid, keyIndex); + modiferMenu.AddItem(info, "Activate Periodically & Instantly"); + modiferMenu.ExitButton = true; modiferMenu.Display(param1, 0); } else { @@ -114,6 +156,27 @@ public int ChooseModeMenuHandler(Menu menu, MenuAction action, int param1, int p delete menu; } +public int ChooseClumsySlotHandler(Menu menu, MenuAction action, int param1, int param2) { + if (action == MenuAction_Select) { + static char info[8]; + menu.GetItem(param2, info, sizeof(info)); + static char str[2][8]; + ExplodeString(info, "|", str, 2, 8, false); + int client = GetClientOfUserId(StringToInt(str[0])); + int slot = StringToInt(str[1]); + PrintToChatAll("%d", slot); + if(slot == -1) { + for(int i = 0; i <= 4; i++) { + ThrowItemToClosestPlayer(client, i); + } + } else { + ThrowItemToClosestPlayer(client, slot); + } + ShowActivity(param1, "activated troll \"Throw It All\" for %N. ", client); + } else if (action == MenuAction_End) + delete menu; +} + public int ChooseTrollModiferHandler(Menu menu, MenuAction action, int param1, int param2) { if (action == MenuAction_Select) { static char info[16]; @@ -122,19 +185,34 @@ public int ChooseTrollModiferHandler(Menu menu, MenuAction action, int param1, i ExplodeString(info, "|", str, 3, 8, false); int client = GetClientOfUserId(StringToInt(str[0])); int keyIndex = StringToInt(str[1]); - static Troll troll; - static char trollID[MAX_TROLL_NAME_LENGTH]; - GetTrollByKeyIndex(keyIndex, troll); - troll.GetID(trollID, MAX_TROLL_NAME_LENGTH); int flags = StringToInt(str[2]); + + static Troll troll; + GetTrollByKeyIndex(keyIndex, troll); + if(flags == 1 || flags == 3) - ApplyTroll(client, trollID, param1, TrollMod_Instant); + troll.Activate(client, param1, TrollMod_Instant); + // ApplyTroll(client, trollID, param1, TrollMod_Instant); if(flags == 2 || flags == 3) - ApplyTroll(client, trollID, param1, TrollMod_Constant); + troll.Activate(client, param1, TrollMod_Constant); + // ApplyTroll(client, trollID, param1, TrollMod_Constant); } else if (action == MenuAction_End) delete menu; } public void StopItemGive(int client) { g_bPendingItemGive[client] = false; +} + +void SetupCategoryMenu(int client, int victimUserID) { + Menu categoryMenu = new Menu(ChooseCategoryHandler); + categoryMenu.SetTitle("Choose a troll category"); + static char category[16], id[8]; + for(int i = 0; i < categories.Length; i++) { + categories.GetString(i, category, sizeof(category)); + Format(id, sizeof(id), "%d|%d", victimUserID, i); + categoryMenu.AddItem(id, category); + } + categoryMenu.ExitButton = true; + categoryMenu.Display(client, 0); } \ No newline at end of file diff --git a/scripting/include/feedthetrolls/misc.inc b/scripting/include/feedthetrolls/misc.inc index 8abd2e7..aee892c 100644 --- a/scripting/include/feedthetrolls/misc.inc +++ b/scripting/include/feedthetrolls/misc.inc @@ -116,6 +116,116 @@ ArrayList GetPhrasesArray(const char[] key) { keyLower[i] = CharToLower(key[i]); } ArrayList phrases; - REPLACEMENT_PHRASES.GetValue(keyLower, phrases); - return phrases; -} \ No newline at end of file + if(REPLACEMENT_PHRASES.GetValue(keyLower, phrases)) { + return phrases; + } else { + return null; + } +} + + +int FindClosestClientAdminPriority(int source, bool ignoreBots, float pos[3]) { + int c = FindClosestAdmin(source, ignoreBots, pos); + if(c == -1) return FindClosestClient(source, ignoreBots, pos); + else return c; +} + +int FindClosestClient(int source, bool ignoreBots, float pos[3]) { + int closest = -1; + float minDist = -1.0; + static float pos1[3]; + static float pos2[3]; + GetClientAbsOrigin(source, pos1); + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) && (!ignoreBots || !IsFakeClient(i)) && i != source) { + GetClientAbsOrigin(i, pos2); + float dist = GetVectorDistance(pos1, pos2); + if(minDist == -1.0 || dist <= minDist) { + closest = i; + minDist = dist; + } + } + } + GetClientEyePosition(closest, pos); + return closest; +} + +int FindClosestAdmin(int source, bool ignoreBots, float pos[3]) { + int closest = -1; + float minDist = -1.0; + static float pos1[3]; + static float pos2[3]; + GetClientAbsOrigin(source, pos); + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) && (|ignoreBots || !IsFakeClient(i)) && GetUserAdmin(i) != INVALID_ADMIN_ID && i != source) { + GetClientAbsOrigin(i, pos2); + float dist = GetVectorDistance(pos1, pos2); + if(minDist == -1.0 || dist <= minDist) { + closest = i; + minDist = dist; + } + } + } + GetClientEyePosition(closest, pos); + return closest; +} + +int SpawnItem(const char[] entityName, float pos[3], float ang[3] = NULL_VECTOR) { + static char classname[32]; + Format(classname, sizeof(classname), "weapon_%s", entityName); + int spawner = CreateEntityByName(classname); + if(spawner == -1) return -1; + DispatchKeyValue(spawner, "solid", "6"); + // DispatchKeyValue(entity_weapon, "model", g_bLeft4Dead2 ? g_sWeaponModels2[model] : g_sWeaponModels[model]); + DispatchKeyValue(spawner, "rendermode", "3"); + DispatchKeyValue(spawner, "disableshadows", "1"); + TeleportEntity(spawner, pos, ang, NULL_VECTOR); + DispatchSpawn(spawner); + TeleportEntity(spawner, pos, ang, NULL_VECTOR); + return spawner; +} + +bool IsAnyPlayerNear(int source, float range) { + static float pos1[3]; + static float pos2[3]; + GetClientAbsOrigin(source, pos1); + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i) && i != source) { + GetClientAbsOrigin(i, pos2); + float dist = GetVectorDistance(pos1, pos2); + PrintToChatAll("%f <= %f: %b", dist, range, (dist <= range)); + if(dist <= range) return true; + } + } + return false; +} + +void ThrowItemToClosestPlayer(int victim, int slot) { + int wpn = GetPlayerWeaponSlot(victim, slot); + if(slot != 1 || DoesClientHaveMelee(victim)) { + static float pos[3]; + int clients[4]; + GetClientAbsOrigin(victim, pos); + int clientCount = GetClientsInRange(pos, RangeType_Visibility, clients, sizeof(clients)); + for(int i = 0; i < clientCount; i++) { + if(clients[i] != victim) { + static float targPos[3]; + GetClientAbsOrigin(clients[i], targPos); + SDKHooks_DropWeapon(victim, wpn, targPos); + if(slot == 1) + CreateTimer(0.2, Timer_GivePistol, GetClientUserId(victim)); + return; + } + } + // No client found, drop on ground: + SDKHooks_DropWeapon(victim, wpn, NULL_VECTOR); + } +} + +void DropItem(int victim, int slot) { + int wpn = GetPlayerWeaponSlot(victim, slot); + if(slot != 1 || DoesClientHaveMelee(victim)) { + SDKHooks_DropWeapon(victim, wpn, NULL_VECTOR); + } +} + diff --git a/scripting/include/feedthetrolls/specials.inc b/scripting/include/feedthetrolls/specials.inc index e346f01..6af943a 100644 --- a/scripting/include/feedthetrolls/specials.inc +++ b/scripting/include/feedthetrolls/specials.inc @@ -72,7 +72,7 @@ bool SpawnSpecialNear(int target, int specialType) { if(specialType >= sizeof(SPECIAL_NAMES)) return false; static float pos[3]; if(L4D_GetRandomPZSpawnPosition(target, specialType, 10, pos)) { - int special = (specialType == 7) ? L4D2_SpawnWitch(pos, ZERO_VECTOR) : L4D2_SpawnSpecial(specialType, pos, ZERO_VECTOR); + int special = (specialType == 7) ? L4D2_SpawnWitch(pos, NULL_VECTOR) : L4D2_SpawnSpecial(specialType, pos, NULL_VECTOR); if(special == -1) return false; if(specialType == 7) SetWitchTarget(special, target); diff --git a/scripting/include/feedthetrolls/timers.inc b/scripting/include/feedthetrolls/timers.inc index 42f69d7..4bc0932 100644 --- a/scripting/include/feedthetrolls/timers.inc +++ b/scripting/include/feedthetrolls/timers.inc @@ -42,11 +42,14 @@ public Action Timer_Main(Handle timer) { return Plugin_Continue; } -public Action Timer_GivePistol(Handle timer, int client) { - int flags = GetCommandFlags("give"); - SetCommandFlags("give", flags & ~FCVAR_CHEAT); - FakeClientCommand(client, "give pistol"); - SetCommandFlags("give", flags|FCVAR_CHEAT); +public Action Timer_GivePistol(Handle timer, int user) { + int client = GetClientOfUserId(user); + if(client > 0) { + int flags = GetCommandFlags("give"); + SetCommandFlags("give", flags & ~FCVAR_CHEAT); + FakeClientCommand(client, "give pistol"); + SetCommandFlags("give", flags); + } } public Action Timer_ThrowWeapon(Handle timer, Handle pack) { @@ -67,7 +70,7 @@ public Action Timer_ThrowWeapon(Handle timer, Handle pack) { GetEdictClassname(wpn, name, sizeof(name)); if(!StrEqual(name, "weapon_pistol", false)) { SDKHooks_DropWeapon(victim, wpn, dest); - CreateTimer(0.2, Timer_GivePistol, victim); + CreateTimer(0.2, Timer_GivePistol, GetClientUserId(victim)); } }else SDKHooks_DropWeapon(victim, wpn, dest); diff --git a/scripting/include/ftt.inc b/scripting/include/ftt.inc index 0686720..eebd39b 100644 --- a/scripting/include/ftt.inc +++ b/scripting/include/ftt.inc @@ -21,6 +21,7 @@ Handle g_hWitchAttack; Handle hThrowTimer; //CONVARS ConVar hVictimsList, hThrowItemInterval, hAutoPunish, hMagnetChance, hShoveFailChance, hAutoPunishExpire, hMagnetTargetMode, hWitchTargetIncapp; +ConVar hBadThrowHitSelf; //BOOLS bool lateLoaded; //Is plugin late loaded bool bChooseVictimAvailable = false; //For charge player feature, is it available? @@ -28,7 +29,7 @@ bool bChooseVictimAvailable = false; //For charge player feature, is it availabl int g_iAmmoTable; //Loads the ammo table to get ammo amounts int gChargerVictim = -1; //For charge player feature -float ZERO_VECTOR[3] = {0.0, 0.0, 0.0}; + #include #include diff --git a/scripting/l4d2_feedthetrolls.sp b/scripting/l4d2_feedthetrolls.sp index 189f840..8950dc4 100644 --- a/scripting/l4d2_feedthetrolls.sp +++ b/scripting/l4d2_feedthetrolls.sp @@ -67,6 +67,7 @@ public void OnPluginStart() { 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"); hShoveFailChance = CreateConVar("sm_ftt_shove_fail_chance", "0.5", "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"); @@ -94,7 +95,6 @@ public void OnPluginStart() { HookEntityOutput("func_button", "OnPressed", Event_ButtonPress); } } - /////////////////////////////////////////////////////////////////////////////// // CVAR CHANGES /////////////////////////////////////////////////////////////////////////////// @@ -201,7 +201,7 @@ stock bool SetPrimaryReserveAmmo(int client, int amount) { } stock void SendChatToAll(int client, const char[] message) { - char nameBuf[MAX_NAME_LENGTH]; + static char nameBuf[MAX_NAME_LENGTH]; for (int i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && IsFakeClient(i)) { @@ -213,7 +213,7 @@ stock void SendChatToAll(int client, const char[] message) { stock float GetTempHealth(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)) { + if(client <= 0 || !IsValidEntity(client) || !IsClientInGame(client)|| !IsPlayerAlive(client) || IsClientObserver(client)) { return -1.0; } diff --git a/scripting/l4d2_forceset.sp b/scripting/l4d2_forceset.sp new file mode 100644 index 0000000..6c4fc28 --- /dev/null +++ b/scripting/l4d2_forceset.sp @@ -0,0 +1,48 @@ +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +ConVar g_cvSurvivorSet; + +public Plugin myinfo = +{ + name = "[L4D2] Survivor Set Enforcer", + author = "DeathChaos, modified by Psyk0tik (Crasher_3637)", + description = "Forces L4D2 survivor set.", + version = "1.0", + url = "" +}; + +public void OnPluginStart() +{ + g_cvSurvivorSet = CreateConVar("l4d_force_survivorset", "0", "Forces specified survivor set (0 - no change, 1 - force L4D1, 2 - Force L4D2)", _, true, 0.0, true, 2.0); +} + +public Action L4D_OnGetSurvivorSet(int &retVal) +{ + int iSet = g_cvSurvivorSet.IntValue; + if (iSet > 0) + { + retVal = iSet; + + return Plugin_Handled; + } + + return Plugin_Continue; +} + +public Action L4D_OnFastGetSurvivorSet(int &retVal) +{ + int iSet = g_cvSurvivorSet.IntValue; + if (iSet > 0) + { + retVal = iSet; + + return Plugin_Handled; + } + + return Plugin_Continue; +} \ No newline at end of file