From 72cac56b1a999b836744f2bac6edbe4a7257dfad Mon Sep 17 00:00:00 2001 From: Jackz Date: Thu, 23 Sep 2021 08:49:40 -0500 Subject: [PATCH] add some misc things --- .gitignore | 17 +- plugins/basechat.smx | Bin 0 -> 8336 bytes plugins/l4d_survivor_identity_fix.smx | Bin 11790 -> 11869 bytes scripting/basechat.sp | 440 ++++++++++++++++++++++++++ 4 files changed, 456 insertions(+), 1 deletion(-) create mode 100644 plugins/basechat.smx create mode 100644 scripting/basechat.sp diff --git a/.gitignore b/.gitignore index 5dc1489..f54db8a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ !plugins !scripting !scripting/include +!scripting/include/feedthetrolls !gamedata/ template.config.js .* @@ -13,4 +14,18 @@ scripting/cancer.sp plugins/sm_give.smx plugins/l4d2_stats_recorder.smx scripting/l4d2_stats_recorder.sp -scripting/include/smlib.inc \ No newline at end of file +scripting/include/smlib.inc +scripting/l4d2_custom.sp +plugins/l4d2_custom.smx +plugins/disable_cameras.smx +plugins/l4d_esfp.smx +plugins/customstatus.smx +plugins/l4d_mini_gun_flamethrower.smx +scripting/l4d_mini_gun_flamethrower.sp +scripting/l4d_esfp.sp +scripting/customstatus.sp +plugins/ssh.smx +scripting/include/ssh.inc +scripting/ssh.sp +scripting/l4d2_witch_force_attack_cmd.sp +.gitignore diff --git a/plugins/basechat.smx b/plugins/basechat.smx new file mode 100644 index 0000000000000000000000000000000000000000..a0e54ab793c570236511d7a9aba4b5e7c91aa815 GIT binary patch literal 8336 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 diff --git a/scripting/basechat.sp b/scripting/basechat.sp new file mode 100644 index 0000000..61c2a96 --- /dev/null +++ b/scripting/basechat.sp @@ -0,0 +1,440 @@ +/** + * vim: set ts=4 : + * ============================================================================= + * SourceMod Basic Chat Plugin + * Implements basic communication commands. + * + * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. + * ============================================================================= + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + * + * As a special exception, AlliedModders LLC gives you permission to link the + * code of this program (as well as its derivative works) to "Half-Life 2," the + * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software + * by the Valve Corporation. You must obey the GNU General Public License in + * all respects for all other code used. Additionally, AlliedModders LLC grants + * this exception to all derivative works. AlliedModders LLC defines further + * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), + * or . + * + * Version: $Id$ + */ + +#pragma semicolon 1 + +#include + +#pragma newdecls required + +public Plugin myinfo = +{ + name = "Basic Chat+", + author = "AlliedModders LLC", + description = "Basic Communication Commands", + version = SOURCEMOD_VERSION, + url = "http://www.sourcemod.net/" +}; + +#define CHAT_SYMBOL '@' + +char g_ColorNames[13][10] = {"White", "Red", "Green", "Blue", "Yellow", "Purple", "Cyan", "Orange", "Pink", "Olive", "Lime", "Violet", "Lightblue"}; +int g_Colors[13][3] = {{255,255,255},{255,0,0},{0,255,0},{0,0,255},{255,255,0},{255,0,255},{0,255,255},{255,128,0},{255,0,128},{128,255,0},{0,255,128},{128,0,255},{0,128,255}}; + +ConVar g_Cvar_Chatmode; + +EngineVersion g_GameEngine = Engine_Unknown; + +public void OnPluginStart() +{ + LoadTranslations("common.phrases"); + + g_GameEngine = GetEngineVersion(); + + g_Cvar_Chatmode = CreateConVar("sm_chat_mode", "1", "Allows player's to send messages to admin chat.", 0, true, 0.0, true, 1.0); + + RegAdminCmd("sm_say", Command_SmSay, ADMFLAG_CHAT, "sm_say - sends message to all players"); + RegAdminCmd("sm_csay", Command_SmCsay, ADMFLAG_CHAT, "sm_csay - sends centered message to all players"); + + /* HintText does not work on Dark Messiah */ + if (g_GameEngine != Engine_DarkMessiah) + { + RegAdminCmd("sm_hsay", Command_SmHsay, ADMFLAG_CHAT, "sm_hsay - sends hint message to all players"); + } + + RegAdminCmd("sm_tsay", Command_SmTsay, ADMFLAG_CHAT, "sm_tsay [color] - sends top-left message to all players"); + RegAdminCmd("sm_chat", Command_SmChat, ADMFLAG_CHAT, "sm_chat - sends message to admins"); + RegAdminCmd("sm_psay", Command_SmPsay, ADMFLAG_CHAT, "sm_psay - sends private message"); + RegAdminCmd("sm_msay", Command_SmMsay, ADMFLAG_CHAT, "sm_msay - sends message as a menu panel"); +} + +public Action OnClientSayCommand(int client, const char[] command, const char[] sArgs) +{ + int startidx; + if (sArgs[startidx] != CHAT_SYMBOL) + return Plugin_Continue; + + startidx++; + + if (strcmp(command, "say", false) == 0) + { + if (sArgs[startidx] != CHAT_SYMBOL) // sm_say alias + { + if (!CheckCommandAccess(client, "sm_chat", ADMFLAG_CHAT)) + { + return Plugin_Continue; + } + + SendChatToAdmins(client, sArgs[startidx]); + LogAction(client, -1, "\"%L\" triggered sm_say (text %s)", client, sArgs[startidx]); + + return Plugin_Stop; + } + + startidx++; + + if (sArgs[startidx] != CHAT_SYMBOL) // sm_psay alias + { + if (!CheckCommandAccess(client, "sm_psay", ADMFLAG_CHAT)) + { + return Plugin_Continue; + } + + char arg[64]; + + int len = BreakString(sArgs[startidx], arg, sizeof(arg)); + int target = FindTarget(client, arg, true, false); + + if (target == -1 || len == -1) { + PrintToChat(client, "Cannot send a private msg: Invalid user specified."); + } else { + SendPrivateChat(client, target, sArgs[startidx+len]); + } + + + return Plugin_Stop; + } + + startidx++; + + // sm_csay alias + if (!CheckCommandAccess(client, "sm_csay", ADMFLAG_CHAT)) + { + return Plugin_Continue; + } + + DisplayCenterTextToAll(client, sArgs[startidx]); + LogAction(client, -1, "\"%L\" triggered sm_csay (text %s)", client, sArgs[startidx]); + + return Plugin_Stop; + } + else if (strcmp(command, "say_team", false) == 0 || strcmp(command, "say_squad", false) == 0) + { + if (!CheckCommandAccess(client, "sm_chat", ADMFLAG_CHAT) && !g_Cvar_Chatmode.BoolValue) + { + return Plugin_Continue; + } + + SendChatToAdmins(client, sArgs[startidx]); + LogAction(client, -1, "\"%L\" triggered sm_chat (text %s)", client, sArgs[startidx]); + + return Plugin_Stop; + } + + return Plugin_Continue; +} + +public Action Command_SmSay(int client, int args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_say "); + return Plugin_Handled; + } + + char text[192]; + GetCmdArgString(text, sizeof(text)); + + SendChatToAll(client, text); + LogAction(client, -1, "\"%L\" triggered sm_say (text %s)", client, text); + + return Plugin_Handled; +} + +public Action Command_SmCsay(int client, int args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_csay "); + return Plugin_Handled; + } + + char text[192]; + GetCmdArgString(text, sizeof(text)); + + DisplayCenterTextToAll(client, text); + + LogAction(client, -1, "\"%L\" triggered sm_csay (text %s)", client, text); + + return Plugin_Handled; +} + +public Action Command_SmHsay(int client, int args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_hsay "); + return Plugin_Handled; + } + + char text[192]; + GetCmdArgString(text, sizeof(text)); + + char nameBuf[MAX_NAME_LENGTH]; + + for (int i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i) || IsFakeClient(i)) + { + continue; + } + FormatActivitySource(client, i, nameBuf, sizeof(nameBuf)); + PrintHintText(i, "%s: %s", nameBuf, text); + } + + LogAction(client, -1, "\"%L\" triggered sm_hsay (text %s)", client, text); + + return Plugin_Handled; +} + +public Action Command_SmTsay(int client, int args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_tsay "); + return Plugin_Handled; + } + + char text[192], colorStr[16]; + GetCmdArgString(text, sizeof(text)); + + int len = BreakString(text, colorStr, 16); + + int color = FindColor(colorStr); + char nameBuf[MAX_NAME_LENGTH]; + + if (color == -1) + { + color = 0; + len = 0; + } + + for (int i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i) || IsFakeClient(i)) + { + continue; + } + FormatActivitySource(client, i, nameBuf, sizeof(nameBuf)); + SendDialogToOne(i, color, "%s: %s", nameBuf, text[len]); + } + + LogAction(client, -1, "\"%L\" triggered sm_tsay (text %s)", client, text); + + return Plugin_Handled; +} + +public Action Command_SmChat(int client, int args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_chat "); + return Plugin_Handled; + } + + char text[192]; + GetCmdArgString(text, sizeof(text)); + + SendChatToAdmins(client, text); + LogAction(client, -1, "\"%L\" triggered sm_chat (text %s)", client, text); + + return Plugin_Handled; +} + +public Action Command_SmPsay(int client, int args) +{ + if (args < 2) + { + ReplyToCommand(client, "[SM] Usage: sm_psay "); + return Plugin_Handled; + } + + char text[192], arg[64]; + GetCmdArgString(text, sizeof(text)); + + int len = BreakString(text, arg, sizeof(arg)); + + int target = FindTarget(client, arg, true, false); + + if (target == -1) + return Plugin_Handled; + + SendPrivateChat(client, target, text[len]); + + return Plugin_Handled; +} + +public Action Command_SmMsay(int client, int args) +{ + if (args < 1) + { + ReplyToCommand(client, "[SM] Usage: sm_msay "); + return Plugin_Handled; + } + + char text[192]; + GetCmdArgString(text, sizeof(text)); + + SendPanelToAll(client, text); + + LogAction(client, -1, "\"%L\" triggered sm_msay (text %s)", client, text); + + return Plugin_Handled; +} + +int FindColor(const char[] color) +{ + for (int i = 0; i < sizeof(g_ColorNames); i++) + { + if (strcmp(color, g_ColorNames[i], false) == 0) + return i; + } + + return -1; +} + +void SendChatToAll(int client, const char[] message) +{ + char nameBuf[MAX_NAME_LENGTH]; + + for (int i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i) || IsFakeClient(i)) + { + continue; + } + FormatActivitySource(client, i, nameBuf, sizeof(nameBuf)); + + if (g_GameEngine == Engine_CSGO) + PrintToChat(i, " \x01\x0B\x04%t: \x01%s", "Say all", nameBuf, message); + else + PrintToChat(i, "\x04%t: \x01%s", "Say all", nameBuf, message); + } +} + +void DisplayCenterTextToAll(int client, const char[] message) +{ + char nameBuf[MAX_NAME_LENGTH]; + + for (int i = 1; i <= MaxClients; i++) + { + if (!IsClientInGame(i) || IsFakeClient(i)) + { + continue; + } + FormatActivitySource(client, i, nameBuf, sizeof(nameBuf)); + PrintCenterText(i, "%s: %s", nameBuf, message); + } +} + +void SendChatToAdmins(int from, const char[] message) +{ + int fromAdmin = CheckCommandAccess(from, "sm_chat", ADMFLAG_CHAT); + for (int i = 1; i <= MaxClients; i++) + { + if (IsClientInGame(i) && (from == i || CheckCommandAccess(i, "sm_chat", ADMFLAG_CHAT))) + { + if (g_GameEngine == Engine_CSGO) + PrintToChat(i, " \x01\x0B\x04%t: \x01%s", fromAdmin ? "Chat admins" : "Chat to admins", from, message); + else + PrintToChat(i, "\x04%t: \x01%s", fromAdmin ? "Chat admins" : "Chat to admins", from, message); + } + } +} + +void SendDialogToOne(int client, int color, const char[] text, any ...) +{ + char message[100]; + VFormat(message, sizeof(message), text, 4); + + KeyValues kv = new KeyValues("Stuff", "title", message); + kv.SetColor("color", g_Colors[color][0], g_Colors[color][1], g_Colors[color][2], 255); + kv.SetNum("level", 1); + kv.SetNum("time", 10); + + CreateDialog(client, kv, DialogType_Msg); + + delete kv; +} + +void SendPrivateChat(int client, int target, const char[] message) +{ + if (!client) + { + PrintToServer("(Private to %N) %N: %s", target, client, message); + } + else if (target != client) + { + if (g_GameEngine == Engine_CSGO) + PrintToChat(client, " \x01\x0B\x04%t: \x01%s", "Private say to", target, client, message); + else + PrintToChat(client, "\x04%t: \x01%s", "Private say to", target, client, message); + } + + if (g_GameEngine == Engine_CSGO) + PrintToChat(target, " \x01\x0B\x04%t: \x01%s", "Private say to", target, client, message); + else + PrintToChat(target, "\x04%t: \x01%s", "Private say to", target, client, message); + LogAction(client, target, "\"%L\" triggered sm_psay to \"%L\" (text %s)", client, target, message); +} + +void SendPanelToAll(int from, char[] message) +{ + char title[100]; + Format(title, 64, "%N:", from); + + ReplaceString(message, 192, "\\n", "\n"); + + Panel mSayPanel = new Panel(); + mSayPanel.SetTitle(title); + mSayPanel.DrawItem("", ITEMDRAW_SPACER); + mSayPanel.DrawText(message); + mSayPanel.DrawItem("", ITEMDRAW_SPACER); + mSayPanel.CurrentKey = GetMaxPageItems(mSayPanel.Style); + mSayPanel.DrawItem("Exit", ITEMDRAW_CONTROL); + + for(int i = 1; i <= MaxClients; i++) + { + if(IsClientInGame(i) && !IsFakeClient(i)) + { + mSayPanel.Send(i, Handler_DoNothing, 10); + } + } + + delete mSayPanel; +} + +public int Handler_DoNothing(Menu menu, MenuAction action, int param1, int param2) +{ + /* Do nothing */ +}