Skip to content

Commit

Permalink
Version 1.2
Browse files Browse the repository at this point in the history
+ Added a system to warn both client and admin before punishment.
+ New cvar "sm_ccc_warn".
- Removed "warn admin" from punishment in "kento_ccc.cfg", now punishment setting is start from 1.
  • Loading branch information
rogeraabbccdd committed Oct 17, 2017
1 parent 6e514d8 commit 361e8f0
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 81 deletions.
2 changes: 1 addition & 1 deletion addons/sourcemod/configs/kento_ccc.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
// "immunity" "a" // Waht admin flag have immunity? empty = disabled
// "mode" "0" // 0 = not allow value, 1 = only allow value
// "value" "1" // Value
// "punishment" "0" // 0 = warn admin, 1 = kick, 2 = ban
// "punishment" "1" // 1 = kick, 2 = ban
// "bantime" "0" // If punishment is ban, how long should a player be banned? (0 = Permanent Ban)
// }
//******************************************************************************************************************//
Expand Down
Binary file modified addons/sourcemod/plugins/kento_ccc.smx
Binary file not shown.
138 changes: 60 additions & 78 deletions addons/sourcemod/scripting/kento_ccc.sp
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,22 @@ char g_sCvarImmunity[MAX_CVAR_COUNT][PLATFORM_MAX_PATH + 1];
char g_sCvarValue[MAX_CVAR_COUNT][PLATFORM_MAX_PATH + 1];
int g_iCvarBanTime[MAX_CVAR_COUNT];
int g_iCvarMode[MAX_CVAR_COUNT];
int warn[MAXPLAYERS + 1];

public Plugin myinfo =
{
name = "[CS:GO] Client Convar Checker",
author = "Kento from Akami Studio",
version = "1.1",
version = "1.2",
description = "Check Client Convar",
url = "http://steamcommunity.com/id/kentomatoryoshika/"
};

public void OnPluginStart()
{
CreateConVar("sm_ccc_timer", "10.0", "Check cvar timer, FLOAT ONLY", _, true, 0.0);
CreateConVar("sm_ccc_warn", "3", "Warn player x times before punishment?", _, true, 0.0);

RegAdminCmd("sm_ccc_test", Command_Test, ADMFLAG_ROOT, "Test ccc plugin.");
RegAdminCmd("sm_ccc_reload", Command_Reload, ADMFLAG_ROOT, "Reload ccc settings.");

Expand Down Expand Up @@ -61,12 +64,8 @@ void LoadConfig()
// Read Config
if(KvGotoFirstSubKey(kv))
{
char cvarname[256];
int punishment;
char value[32];
char immunity[32];
int bantime;
int mode;
char cvarname[256], value[32], immunity[32];
int punishment, bantime, mode;

do
{
Expand All @@ -93,6 +92,12 @@ void LoadConfig()

KvRewind(kv);
CloseHandle(kv);

// reset warn
for (int i = 1; i <= MaxClients; i++)
{
warn[i] = 0;
}
}

public Action Timer_CheckCvar(Handle timer)
Expand Down Expand Up @@ -138,86 +143,55 @@ public void CheckCvar(QueryCookie cookie, int client, ConVarQueryResult result,
if(HasImmunity(client, cvar_id))
return;

// not allow value
if(g_iCvarMode[cvar_id] == 0)
/* warn client should work like dis
cvar warnclient diff warnchat
3 1 2 2 <- warn 1
3 2 1 1 <- warn 2
3 3 0 0 <- warn 3
3 4 -1 -1 <- kick
*/

if((g_iCvarMode[cvar_id] == 0 && StrEqual(cvarValue, g_sCvarValue[cvar_id]))
|| (g_iCvarMode[cvar_id] == 1 && !StrEqual(cvarValue, g_sCvarValue[cvar_id])))
{
// client cvar = not allow value
if(StrEqual(cvarValue, g_sCvarValue[cvar_id]))
{
// Punishment
if(g_iCvarPunishment[cvar_id] == 0) //Warn admin
{
// Loop all client
for (int l = 1; l <= MaxClients; l++)
{
// warn admin
if(IsAdmin(l)) CPrintToChat(l, "%T", "Warn Admin", l, clientname, cvarName, cvarValue);
}

char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");
LogToFile(path, "%L %T", client, "Log Warn", LANG_SERVER, cvarName, cvarValue);
}

else if(g_iCvarPunishment[cvar_id] == 1) // kick
{
char kickreason[512];
Format(kickreason, sizeof(kickreason), "%T", "Kick Reason", client, cvarName, cvarValue);

KickClient(client, kickreason);

char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");
LogToFile(path, "%L %T", client, "Log Kick", LANG_SERVER, cvarName, cvarValue);
}
char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");

warn[client]++;

else if(g_iCvarPunishment[cvar_id] == 2) // ban
{
char banreason[512];
Format(banreason, sizeof(banreason), "%T", "Ban Reason", client, cvarName, cvarValue);
int cvar_warn = GetConVarInt(FindConVar("sm_ccc_warn"));
int diffwarn = cvar_warn - warn[client];

char bankickreason[512];
Format(bankickreason, sizeof(bankickreason), "%T", "Ban Kick Reason", client, cvarName, cvarValue);

BanClient(client, g_iCvarBanTime[cvar_id], BANFLAG_AUTO, banreason, bankickreason, "sm_ban");

char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");
LogToFile(path, "%L %T", client, "Log Ban", LANG_SERVER, cvarName, cvarValue, g_iCvarBanTime[cvar_id]);
}
// show warn message to client
if(diffwarn > 0)
{
CPrintToChat(client, "%T", "Warn Client", client, cvarName, cvarValue, diffwarn);
}
}

// only allow value
else if(g_iCvarMode[cvar_id] == 1)
{
// client cvar != value
if(!StrEqual(cvarValue, g_sCvarValue[cvar_id]))
else if(diffwarn == 0)
{
// Punishment
if(g_iCvarPunishment[cvar_id] == 0) //Warn admin
{
// Loop all client
for (int l = 1; l <= MaxClients; l++)
{
// warn admin
if(IsAdmin(l)) CPrintToChat(l, "%T", "Warn Admin", l, clientname, cvarName, cvarValue);
}
char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");
LogToFile(path, "%L %T", client, "Log Warn", LANG_SERVER, cvarName, cvarValue);
}
else if(g_iCvarPunishment[cvar_id] == 1) // kick
CPrintToChat(client, "%T", "Warn Client 2", client, cvarName, cvarValue, GetConVarFloat(FindConVar("sm_ccc_timer")));
}

// warn admin
for (int l = 1; l <= MaxClients; l++)
{
if(IsAdmin(l)) CPrintToChat(l, "%T", "Warn Admin", l, clientname, cvarName, cvarValue);
}
// log
LogToFile(path, "%L %T", client, "Log Warn", LANG_SERVER, cvarName, cvarValue);

// Punishment
if(cvar_warn == warn[client] -1)
{
if(g_iCvarPunishment[cvar_id] == 1) // kick
{
// no warn set, kick
char kickreason[512];
Format(kickreason, sizeof(kickreason), "%T", "Kick Reason", client, cvarName, cvarValue);

KickClient(client, kickreason);

char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");
LogToFile(path, "%L %T", client, "Log Kick", LANG_SERVER, cvarName, cvarValue);
}

Expand All @@ -231,8 +205,6 @@ public void CheckCvar(QueryCookie cookie, int client, ConVarQueryResult result,

BanClient(client, g_iCvarBanTime[cvar_id], BANFLAG_AUTO, banreason, bankickreason, "sm_ban");

char path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "logs/kento_ccc.log");
LogToFile(path, "%L %T", client, "Log Ban", LANG_SERVER, cvarName, cvarValue, g_iCvarBanTime[cvar_id]);
}
}
Expand All @@ -250,6 +222,16 @@ public void CheckCvar(QueryCookie cookie, int client, ConVarQueryResult result,

}

public void OnClientPutInServer(int client)
{
warn[client] = 0;
}

public void OnClientDisconnect(int client)
{
warn[client] = 0;
}

public Action Command_Test (int client, int args)
{
for(int i = 1; i <= CvarCount; i++)
Expand Down
14 changes: 14 additions & 0 deletions addons/sourcemod/translations/kento.ccc.phrases.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,20 @@
"zho" "{RED}[警告] {NORMAL}玩家 {LIGHTGREEN}{1}{NORMAL}的 {PINK}{2} {NORMAL}使用不被允許的數值 {BLUE}{3} {NORMAL}!"
}

"Warn Client"
{
"#format" "{1:s},{2:s},{3:d}"
"en" "{RED}[WARNING] {NORMAL}Your cvar {PINK}{1} {NORMAL}value {BLUE}{2} {NORMAL}is not allowed, you'll be punished after {LIGHTGREEN}{3} {NORMAL}more warning."
"zho" "{RED}[警告] {NORMAL}你的參數 {PINK}{1} {NORMAL}使用不被允許的數值 {BLUE}{2} {NORMAL}. 再警告 {LIGHTGREEN}{3} {NORMAL}次後你將被處罰."
}

"Warn Client 2"
{
"#format" "{1:s},{2:s},{3:.f}"
"en" "{RED}[WARNING] {NORMAL}Your cvar {PINK}{1} {NORMAL}value {BLUE}{2} {NORMAL}is not allowed, you'll be punished after {LIGHTGREEN}{3} {NORMAL}seconds."
"zho" "{RED}[WARNING] {NORMAL}你的參數 {PINK}{1} {NORMAL}使用不被允許的數值 {BLUE}{2} {NORMAL}. {LIGHTGREEN}{3} {NORMAL}秒後你將被處罰."
}

"Kick Reason"
{
"#format" "{1:s},{2:s}"
Expand Down
10 changes: 8 additions & 2 deletions cfg/sourcemod/kento_ccc.cfg
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
// This file was auto-generated by SourceMod (v1.8.0.5994)
// This file was auto-generated by SourceMod (v1.8.0.6025)
// ConVars for plugin "kento_ccc.smx"


// Check cvar timer, FLOAT ONLY
// -
// Default: "1.0"
// Default: "10.0"
// Minimum: "0.000000"
sm_ccc_timer "10.0"

// Warn player x times before punishment?
// -
// Default: "3"
// Minimum: "0.000000"
sm_ccc_warn "3"


0 comments on commit 361e8f0

Please sign in to comment.