Untitled diff

Created Diff never expires
127 removals
388 lines
112 additions
373 lines
/**
/**
*
* =============================================================================
* =============================================================================
* 2 week gag & mute & ban
* 1 week gag & mute & ban
* MAKS steamcommunity.com/profiles/76561198025355822/
* MAKS steamcommunity.com/profiles/76561198025355822/
* dr lex steamcommunity.com/profiles/76561198008545221/
* dr lex steamcommunity.com/profiles/76561198008545221/
* =============================================================================
* =============================================================================
*
*
* This program is free software; you can redistribute it and/or modify it under
* 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
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
* Free Software Foundation.
*
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* 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
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
* details.
*
*
* You should have received a copy of the GNU General Public License along with
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
* this program. If not, see <www.gnu.org/licenses/>.
*
*
* As a special exception, AlliedModders LLC gives you permission to link the
* 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
* 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
* "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
* by the Valve Corporation. You must obey the GNU General Public License in
* all respects for all other code used. Additionally, AlliedModders LLC grants
* all respects for all other code used. Additionally, AlliedModders LLC grants
* this exception to all derivative works. AlliedModders LLC defines further
* this exception to all derivative works. AlliedModders LLC defines further
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
* or <http://www.sourcemod.net/license.php>.
* or <www.sourcemod.net/license.php>.
*
*
*/
*/
#pragma semicolon 1
#pragma semicolon 1
#include <sourcemod>
#include <sourcemod>
#include <sdktools>
#include <sdktools>
#pragma newdecls required
#pragma newdecls required


char sg_fileTxt[160];
char sg_fileTxt[160];
char sg_log[160];


public Plugin myinfo =
public Plugin myinfo =
{
{
name = "gagmute",
name = "gagmute",
author = "MAKS & dr lex",
author = "MAKS & dr lex",
description = "2 week gag & mute",
description = "gag & mute & ban",
version = "1.1",
version = "1.3",
url = "forums.alliedmods.net/showthread.php?p=2347844"
url = "forums.alliedmods.net/showthread.php?p=2347844"
};
};


public void OnPluginStart()
public void OnPluginStart()
{
{
RegAdminCmd("sm_addban", CMD_tyban, ADMFLAG_BAN, "");
RegAdminCmd("sm_addban", CMD_addban, ADMFLAG_BAN, "");
RegAdminCmd("sm_addgag", CMD_tygag, ADMFLAG_CHAT, "");
RegAdminCmd("sm_addgag", CMD_addgag, ADMFLAG_CHAT, "");
RegAdminCmd("sm_addmute", CMD_tymute, ADMFLAG_CHAT, "");
RegAdminCmd("sm_addmute", CMD_addmute, ADMFLAG_CHAT, "");


BuildPath(Path_SM, sg_fileTxt, sizeof(sg_fileTxt)-1, "data/gagmute.txt");
BuildPath(Path_SM, sg_fileTxt, sizeof(sg_fileTxt)-1, "data/GagMuteBan.txt");
BuildPath(Path_SM, sg_log, sizeof(sg_log)-1, "logs/GagMuteBan.log");
}
}


void TyClientGagMuteBan(int client)
void HxClientGagMuteBan(int &client)
{
{
KeyValues hGM = new KeyValues("gagmute");
KeyValues hGM = new KeyValues("gagmute");


if (hGM.ImportFromFile(sg_fileTxt))
if (hGM.ImportFromFile(sg_fileTxt))
{
{
char sTeamID[24];
char sTeamID[24];
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);


if (hGM.JumpToKey(sTeamID))
if (hGM.JumpToKey(sTeamID))
{
{
int iMute = hGM.GetNum("mute", 0);
int iMute = hGM.GetNum("mute", 0);
int iGag = hGM.GetNum("gag", 0);
int iGag = hGM.GetNum("gag", 0);
int iBan = hGM.GetNum("ban", 0);
int iBan = hGM.GetNum("ban", 0);
delete hGM;
int iTime = GetTime();


int iTime = GetTime();
if (iMute > iTime)
if (iMute > iTime)
{
{
ServerCommand("sm_mute #%d", GetClientUserId(client));
ServerCommand("sm_mute #%d", GetClientUserId(client));
}
}
if (iGag > iTime)
if (iGag > iTime)
{
{
ServerCommand("sm_gag #%d", GetClientUserId(client));
ServerCommand("sm_gag #%d", GetClientUserId(client));
}
}
if (iBan > iTime)
if (iBan > iTime)
{
{
char sTime[24];
char sTime[24];
FormatTime(sTime, sizeof(sTime)-1, "%Y-%m-%d %H:%M:%S", iBan);
FormatTime(sTime, sizeof(sTime)-1, "%Y-%m-%d %H:%M:%S", iBan);
KickClient(client,"Banned (%s)", sTime);
KickClient(client,"Banned (%s)", sTime);
}
}
}
}
delete hGM;
}
}
}
}


public void OnClientPostAdminCheck(int client)
public void OnClientPostAdminCheck(int client)
{
{
if (!IsFakeClient(client))
if (!IsFakeClient(client))
{
{
TyClientGagMuteBan(client);
HxClientGagMuteBan(client);
}
}
}
}


int TyClientTimeBan(int &client, int iTime)
int HxClientTimeBan(int &client, int iTime)
{
{
if (IsClientInGame(client))
if (IsClientInGame(client))
{
{
char sName[32];
char sName[32];
char sTeamID[24];
char sTeamID[24];


KeyValues hGM = new KeyValues("gagmute");
KeyValues hGM = new KeyValues("gagmute");
hGM.ImportFromFile(sg_fileTxt);
hGM.ImportFromFile(sg_fileTxt);


GetClientName(client, sName, sizeof(sName)-12);
GetClientName(client, sName, sizeof(sName)-12);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);


if (!hGM.JumpToKey(sTeamID))
if (!hGM.JumpToKey(sTeamID))
{
{
hGM.JumpToKey(sTeamID, true);
hGM.JumpToKey(sTeamID, true);
}
}


int iTimeBan = GetTime() + (iTime * 60);
int iTimeBan = GetTime() + (iTime * 60);
hGM.SetString("Name", sName);
hGM.SetString("Name", sName);
hGM.SetNum("ban", iTimeBan);
hGM.SetNum("ban", iTimeBan);
hGM.Rewind();
hGM.Rewind();
hGM.ExportToFile(sg_fileTxt);
hGM.ExportToFile(sg_fileTxt);
delete hGM;
delete hGM;
return 1;
return 1;
}
}
return 0;
return 0;
}
}


public int TyMenuBan(Menu menu, MenuAction action, int param1, int param2)
public int MenuHandler_Ban(Menu menu, MenuAction action, int param1, int param2)
{
{
if (action == MenuAction_Select)
if (action == MenuAction_Select)
{
{
char info[16];
char sInfo[8];
bool found = menu.GetItem(param2, info, sizeof(info)-1);
bool found = menu.GetItem(param2, sInfo, sizeof(sInfo)-1);
if (found && param1)
if (found && param1)
{
{
int client = StringToInt(info);
int client = StringToInt(sInfo);
if (client > 0)
if (client > 0)
{
{
if (TyClientTimeBan(client, 60*24*7))
if (HxClientTimeBan(client, 60*24*7))
{
{
PrintToChatAll("\x04%d \x05Min ban \x04%N.\n", 60*24*7, client);
LogToFileEx(sg_log, "Ban: %N -> %N", param1, client);
PrintToChatAll("\x05%d min ban:\x04 %N", 60*24*7, client);
KickClient(client, "%d Min ban.", 60*24*7);
KickClient(client, "%d Min ban.", 60*24*7);
}
}
}
}
}
}
}
}


if (action == MenuAction_End)
if (action == MenuAction_End)
{
{
delete menu;
delete menu;
}
}
}
}


public Action CMD_tyban(int client, int args)
public Action CMD_addban(int client, int args)
{
{
if (args)
if (client)
{
{
char sArg[8];
if (IsClientInGame(client))
GetCmdArg(1, sArg, sizeof(sArg)-1);
int iArg = StringToInt(sArg);
if (iArg > 0 && iArg < 33)
{
{
if (IsClientInGame(iArg))
char sName[32];
{
char sNumber[8];
int iTime = 60*24;
int i = 1;
if (args > 1)
{
char sTime[20];
GetCmdArg(2, sTime, sizeof(sTime)-1);
iTime = StringToInt(sTime);
}


if (TyClientTimeBan(client, iTime))
Menu hMenu = new Menu(MenuHandler_Ban);
{
hMenu.SetTitle("1 week ban player");
PrintToChatAll("\x04%d \x05Min ban \x04%N.\n", iTime, client);

KickClient(client, "%d Min ban.", iTime);
while (i <= MaxClients)
}
}
}
}
else
{
if (client)
{
if (IsClientInGame(client))
{
{
char sName[32];
if (IsClientInGame(i) && !IsFakeClient(i))
char sNumber[8];
int i = 1;

Menu hMenu = new Menu(TyMenuBan);
hMenu.SetTitle("1 week ban player");

while (i <= MaxClients)
{
{
if (IsClientInGame(i) && !IsFakeClient(i))
if (client != i)
{
{
if (client != i)
GetClientName(i, sName, sizeof(sName)-12);
{
Format(sNumber, sizeof(sNumber)-1, "%d", i);
GetClientName(i, sName, sizeof(sName)-12);
hMenu.AddItem(sNumber, sName);
Format(sNumber, sizeof(sNumber)-1, "%d", i);
hMenu.AddItem(sNumber, sName);
}
}
}
i += 1;
}
}
i += 1;
}


hMenu.ExitButton = false;
hMenu.ExitButton = false;
hMenu.Display(client, 20);
hMenu.Display(client, 20);
}
}
}
}
}

return Plugin_Handled;
return Plugin_Handled;
}
}


int TyClientTimeGag(int &client, int iTime)
int HxClientTimeGag(int &client, int iTime)
{
{
if (IsClientInGame(client))
if (IsClientInGame(client))
{
{
char sName[32];
char sName[32];
char sTeamID[24];
char sTeamID[24];


KeyValues hGM = new KeyValues("gagmute");
KeyValues hGM = new KeyValues("gagmute");
hGM.ImportFromFile(sg_fileTxt);
hGM.ImportFromFile(sg_fileTxt);


GetClientName(client, sName, sizeof(sName)-12);
GetClientName(client, sName, sizeof(sName)-12);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);


if (!hGM.JumpToKey(sTeamID))
if (!hGM.JumpToKey(sTeamID))
{
{
hGM.JumpToKey(sTeamID, true);
hGM.JumpToKey(sTeamID, true);
}
}


int iTimeGag = GetTime() + (iTime * 60);
int iTimeGag = GetTime() + (iTime * 60);
hGM.SetString("Name", sName);
hGM.SetString("Name", sName);
hGM.SetNum("gag", iTimeGag);
hGM.SetNum("gag", iTimeGag);
hGM.Rewind();
hGM.Rewind();
hGM.ExportToFile(sg_fileTxt);
hGM.ExportToFile(sg_fileTxt);
delete hGM;
delete hGM;
ServerCommand("sm_gag #%d", GetClientUserId(client));
ServerCommand("sm_gag #%d", GetClientUserId(client));
return 1;
return 1;
}
}
return 0;
return 0;
}
}


public int TyMenuGage(Menu menu, MenuAction action, int param1, int param2)
public int MenuHandler_Gage(Menu menu, MenuAction action, int param1, int param2)
{
{
if (action == MenuAction_Select)
if (action == MenuAction_Select)
{
{
char info[16];
char sInfo[8];
bool found = menu.GetItem(param2, info, sizeof(info)-1);
bool found = menu.GetItem(param2, sInfo, sizeof(sInfo)-1);
if (found && param1)
if (found && param1)
{
{
int client = StringToInt(info);
int client = StringToInt(sInfo);
if (client > 0)
if (client > 0)
{
{
if (TyClientTimeGag(client, 60*24*7))
if (HxClientTimeGag(client, 60*24*7))
{
{
PrintToChatAll("\x04%d \x05Min gage \x04%N.\n", 60*24*7, client);
LogToFileEx(sg_log, "Gage: %N -> %N", param1, client);
PrintToChatAll("\x05%d min gage:\x04 %N", 60*24*7, client);
}
}
}
}
}
}
}
}


if (action == MenuAction_End)
if (action == MenuAction_End)
{
{
delete menu;
delete menu;
}
}
}
}


public Action CMD_tygag(int client, int args)
public Action CMD_addgag(int client, int args)
{
{
if (client && IsClientInGame(client))
if (client)
{
{
char sName[32];
if (IsClientInGame(client))
char sNumber[8];
{
int i = 1;
char sName[32];
char sNumber[8];
int i = 1;


Menu hMenu = new Menu(TyMenuGage);
Menu hMenu = new Menu(MenuHandler_Gage);
hMenu.SetTitle("1 week block chat");
hMenu.SetTitle("1 week block chat");


while (i <= MaxClients)
while (i <= MaxClients)
{
if (IsClientInGame(i) && !IsFakeClient(i))
{
{
if (client != i)
if (IsClientInGame(i) && !IsFakeClient(i))
{
{
GetClientName(i, sName, sizeof(sName)-12);
if (client != i)
Format(sNumber, sizeof(sNumber)-1, "%d", i);
{
hMenu.AddItem(sNumber, sName);
GetClientName(i, sName, sizeof(sName)-12);
Format(sNumber, sizeof(sNumber)-1, "%d", i);
hMenu.AddItem(sNumber, sName);
}
}
}
i += 1;
}
}
i += 1;

hMenu.ExitButton = false;
hMenu.Display(client, 20);
}
}

hMenu.ExitButton = false;
hMenu.Display(client, 20);
}
}

return Plugin_Handled;
return Plugin_Handled;
}
}


int TyClientTimeMute(int &client, int iTime)
int HxClientTimeMute(int &client, int iTime)
{
{
if (IsClientInGame(client))
if (IsClientInGame(client))
{
{
char sName[32];
char sName[32];
char sTeamID[24];
char sTeamID[24];


KeyValues hGM = new KeyValues("gagmute");
KeyValues hGM = new KeyValues("gagmute");
hGM.ImportFromFile(sg_fileTxt);
hGM.ImportFromFile(sg_fileTxt);


GetClientName(client, sName, sizeof(sName)-12);
GetClientName(client, sName, sizeof(sName)-12);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);
GetClientAuthId(client, AuthId_Steam2, sTeamID, sizeof(sTeamID)-1);


if (!hGM.JumpToKey(sTeamID))
if (!hGM.JumpToKey(sTeamID))
{
{
hGM.JumpToKey(sTeamID, true);
hGM.JumpToKey(sTeamID, true);
}
}


int iTimeMute = GetTime() + (iTime * 60);
int iTimeMute = GetTime() + (iTime * 60);
hGM.SetString("Name", sName);
hGM.SetString("Name", sName);
hGM.SetNum("mute", iTimeMute);
hGM.SetNum("mute", iTimeMute);
hGM.Rewind();
hGM.Rewind();
hGM.ExportToFile(sg_fileTxt);
hGM.ExportToFile(sg_fileTxt);
delete hGM;
delete hGM;


ServerCommand("sm_mute #%d", GetClientUserId(client));
ServerCommand("sm_mute #%d", GetClientUserId(client));
return 1;
return 1;
}
}
return 0;
return 0;
}
}


public int TyMenuMute(Menu menu, MenuAction action, int param1, int param2)
public int MenuHandler_Mute(Menu menu, MenuAction action, int param1, int param2)
{
{
if (action == MenuAction_Select)
if (action == MenuAction_Select)
{
{
char info[16];
char sInfo[8];
bool found = menu.GetItem(param2, info, sizeof(info)-1);
bool found = menu.GetItem(param2, sInfo, sizeof(sInfo)-1);
if (found && param1)
if (found && param1)
{
{
int client = StringToInt(info);
int client = StringToInt(sInfo);
if (client > 0)
if (client > 0)
{
{
if (TyClientTimeMute(client, 60*24*7))
if (HxClientTimeMute(client, 60*24*7))
{
{
PrintToChatAll("\x04%d \x05Min mute \x04%N.\n", 60*24*7, client);
LogToFileEx(sg_log, "Mute: %N -> %N", param1, client);
PrintToChatAll("\x05%d min mute:\x04 %N", 60*24*7, client);
}
}
}
}
}
}
}
}


if (action == MenuAction_End)
if (action == MenuAction_End)
{
{
delete menu;
delete menu;
}
}
}
}


public Action CMD_tymute(int client, int args)
public Action CMD_addmute(int client, int args)
{
{
if (client && IsClientInGame(client))
if (client)
{
{
char sName[32];
if (IsClientInGame(client))
char sNumber[8];
{
int i = 1;
char sName[32];
char sNumber[8];
int i = 1;


Menu hMenu = new Menu(TyMenuMute);
Menu hMenu = new Menu(MenuHandler_Mute);
hMenu.SetTitle("1 week block microphone");
hMenu.SetTitle("1 week block microphone");


while (i <= MaxClients)
while (i <= MaxClients)
{
if (IsClientInGame(i) && !IsFakeClient(i))
{
{
if (client != i)
if (IsClientInGame(i) && !IsFakeClient(i))
{
{
GetClientName(i, sName, sizeof(sName)-12);
if (client != i)
Format(sNumber, sizeof(sNumber)-1, "%d", i);
{
hMenu.AddItem(sNumber, sName);
GetClientName(i, sName, sizeof(sName)-12);
Format(sNumber, sizeof(sNumber)-1, "%d", i);
hMenu.AddItem(sNumber, sName);
}
}
}
i += 1;
}
}
i += 1;

hMenu.ExitButton = false;
hMenu.Display(client, 20);
}
}

hMenu.ExitButton = false;
hMenu.Display(client, 20);
}
}

return Plugin_Handled;
return Plugin_Handled;
}
}