KnifeBan: bunch of improvements

This commit is contained in:
dogan 2020-11-15 17:00:09 +01:00
parent 807e6d71ff
commit 84223aee22

View File

@ -23,7 +23,7 @@ public Plugin myinfo =
name = "KnifeBan", name = "KnifeBan",
author = "Dogan", author = "Dogan",
description = "Tools to handle Zombie Knifers in ZE", description = "Tools to handle Zombie Knifers in ZE",
version = "1.0.0", version = "2.0.0",
url = "" url = ""
} }
@ -162,6 +162,7 @@ public void CheckIfClientIsStillKnifeBanned(char sAuth[32], int client, int time
{ {
Banlist.SetNum("time", 0); Banlist.SetNum("time", 0);
Banlist.SetNum("duration", 0); Banlist.SetNum("duration", 0);
Banlist.SetString("admin", "");
Banlist.Rewind(); Banlist.Rewind();
Banlist.ExportToFile(g_sBanListFilePath); Banlist.ExportToFile(g_sBanListFilePath);
} }
@ -185,6 +186,9 @@ public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &dam
if(!ZR_IsClientZombie(victim)) if(!ZR_IsClientZombie(victim))
return Plugin_Continue; return Plugin_Continue;
if(!ZR_IsClientHuman(attacker))
return Plugin_Continue;
char sWeapon[32]; char sWeapon[32];
int iWeapon = GetEntDataEnt2(attacker, g_hActiveWeapon); int iWeapon = GetEntDataEnt2(attacker, g_hActiveWeapon);
if(iWeapon != INVALID_ENT_REFERENCE) if(iWeapon != INVALID_ENT_REFERENCE)
@ -235,6 +239,12 @@ public Action Command_Knifeban(int client, int args)
} }
g_bKnifeBanned[target] = true; g_bKnifeBanned[target] = true;
int time = GetTime();
char sAdmin[32];
GetClientName(client, sAdmin, sizeof(sAdmin));
if(client == 0)
sAdmin = "Console";
char sAuth[32]; char sAuth[32];
GetClientAuthId(target, AuthId_Steam2, sAuth, sizeof(sAuth)); GetClientAuthId(target, AuthId_Steam2, sAuth, sizeof(sAuth));
@ -247,13 +257,13 @@ public Action Command_Knifeban(int client, int args)
{ {
CPrintToChatAll("\x07%s[KnifeBan] \x07%s%N\x07%s knifebanned \x07%s%N\x07%s for \x07%s%d\x07%s minutes.", "E01B5D", "EDEDED", client, "F16767", "EDEDED", target, "F16767", "EDEDED", length, "F16767"); CPrintToChatAll("\x07%s[KnifeBan] \x07%s%N\x07%s knifebanned \x07%s%N\x07%s for \x07%s%d\x07%s minutes.", "E01B5D", "EDEDED", client, "F16767", "EDEDED", target, "F16767", "EDEDED", length, "F16767");
LogAction(client, target, "%L knifebanned %L for %d minutes.", client, target, length); LogAction(client, target, "%L knifebanned %L for %d minutes.", client, target, length);
int time = GetTime();
if(Banlist.JumpToKey(sAuth, true)) if(Banlist.JumpToKey(sAuth, true))
{ {
int history = Banlist.GetNum("history"); int history = Banlist.GetNum("history");
Banlist.SetNum("history", history + 1); Banlist.SetNum("history", history + 1);
Banlist.SetNum("time", time); Banlist.SetNum("time", time);
Banlist.SetNum("duration", length); Banlist.SetNum("duration", length);
Banlist.SetString("admin", sAdmin);
Banlist.Rewind(); Banlist.Rewind();
Banlist.ExportToFile(g_sBanListFilePath); Banlist.ExportToFile(g_sBanListFilePath);
} }
@ -266,8 +276,9 @@ public Action Command_Knifeban(int client, int args)
{ {
int history = Banlist.GetNum("history"); int history = Banlist.GetNum("history");
Banlist.SetNum("history", history + 1); Banlist.SetNum("history", history + 1);
Banlist.SetNum("time", 0); Banlist.SetNum("time", time);
Banlist.SetNum("duration", -1); Banlist.SetNum("duration", -1);
Banlist.SetString("admin", sAdmin);
Banlist.Rewind(); Banlist.Rewind();
Banlist.ExportToFile(g_sBanListFilePath); Banlist.ExportToFile(g_sBanListFilePath);
} }
@ -281,6 +292,8 @@ public Action Command_Knifeban(int client, int args)
{ {
int history = Banlist.GetNum("history"); int history = Banlist.GetNum("history");
Banlist.SetNum("history", history + 1); Banlist.SetNum("history", history + 1);
Banlist.SetNum("time", time);
Banlist.SetString("admin", sAdmin);
Banlist.Rewind(); Banlist.Rewind();
Banlist.ExportToFile(g_sBanListFilePath); Banlist.ExportToFile(g_sBanListFilePath);
int accountid = GetSteamAccountID(target); int accountid = GetSteamAccountID(target);
@ -324,6 +337,7 @@ public Action Command_Knifeunban(int client, int args)
Banlist.SetNum("history", history - 1); Banlist.SetNum("history", history - 1);
Banlist.SetNum("time", 0); Banlist.SetNum("time", 0);
Banlist.SetNum("duration", 0); Banlist.SetNum("duration", 0);
Banlist.SetString("admin", "");
Banlist.Rewind(); Banlist.Rewind();
Banlist.ExportToFile(g_sBanListFilePath); Banlist.ExportToFile(g_sBanListFilePath);
} }
@ -502,5 +516,148 @@ public Action Command_Knifebanlist(int client, int args)
else else
CReplyToCommand(client, "\x07%s[KnifeBan] \x07%sCurrently knifebanned clients: \x07%snone", "E01B5D", "F16767", "EDEDED"); CReplyToCommand(client, "\x07%s[KnifeBan] \x07%sCurrently knifebanned clients: \x07%snone", "E01B5D", "F16767", "EDEDED");
if(CheckCommandAccess(client, "", ADMFLAG_BAN))
OpenKnifebanlistMenu(client);
return Plugin_Handled; return Plugin_Handled;
} }
public void OpenKnifebanlistMenu(int client)
{
if(client == 0)
return;
Menu menu = new Menu(MenuHandler_MainMenu);
menu.SetTitle("Currently knifebanned clients:", client);
char sBuffer[32];
int iMenuItem;
char sMenuItem[8];
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i))
{
if(g_bKnifeBanned[i])
{
GetClientName(i, sBuffer, sizeof(sBuffer));
IntToString(iMenuItem, sMenuItem, sizeof(sMenuItem));
menu.AddItem(sMenuItem, sBuffer);
iMenuItem++;
}
}
}
menu.Display(client, MENU_TIME_FOREVER);
}
public int MenuHandler_MainMenu(Menu menu, MenuAction action, int client, int selection)
{
switch(action)
{
case(MenuAction_Select):
{
char sMenuItem[8];
char sBuffer[32];
int flag;
menu.GetItem(selection, sMenuItem, sizeof(sMenuItem), flag, sBuffer, sizeof(sBuffer));
OpenKnifebanlistOfTheClient(client, sBuffer);
}
case(MenuAction_End):
{
delete menu;
}
}
}
public void OpenKnifebanlistOfTheClient(int client, char sBuffer[32])
{
Menu menuclient = new Menu(MenuHandler_ClientMenu);
char sTitle[64] = "Knifebanned client: ";
StrCat(sTitle, sizeof(sTitle), sBuffer);
int target;
char sName[32];
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i) && g_bKnifeBanned[i])
{
GetClientName(i, sName, sizeof(sName));
if(StrEqual(sName, sBuffer))
{
target = i;
break;
}
}
}
char sAuth[32];
GetClientAuthId(target, AuthId_Steam2, sAuth, sizeof(sAuth));
Banlist.Rewind();
int length;
int time;
int history;
char sAdmin[32];
if(Banlist.JumpToKey(sAuth))
{
length = Banlist.GetNum("duration");
time = Banlist.GetNum("time");
history = Banlist.GetNum("history");
Banlist.GetString("admin", sAdmin, sizeof(sAdmin));
}
menuclient.SetTitle(sTitle, client);
char sInfo[256];
Format(sInfo, sizeof(sInfo), "Banned by: %s", sAdmin);
menuclient.AddItem("0", sInfo);
if(length > 0)
Format(sInfo, sizeof(sInfo), "Duration: %d Minutes", length);
else if(length == -1)
Format(sInfo, sizeof(sInfo), "Duration: Permanently");
else
Format(sInfo, sizeof(sInfo), "Duration: Temporarly");
menuclient.AddItem("1", sInfo);
char sTime[32];
FormatTime(sTime, sizeof(sTime), "%c", time);
Format(sInfo, sizeof(sInfo), "Date: %s", sTime);
menuclient.AddItem("2", sInfo);
Format(sInfo, sizeof(sInfo), "Ban History: %d times", history);
menuclient.AddItem("3", sInfo);
menuclient.AddItem("4", "Back to List");
menuclient.Display(client, MENU_TIME_FOREVER);
}
public int MenuHandler_ClientMenu(Menu menuclient, MenuAction action, int client, int selection)
{
switch(action)
{
case(MenuAction_Select):
{
switch(selection)
{
case(4): OpenKnifebanlistMenu(client);
}
}
case(MenuAction_End):
{
delete menuclient;
}
}
}