Added sm_resetcvar command to basecommands (bug 3636, r=pred)
This commit is contained in:
parent
155cc4573c
commit
5707354a18
@ -67,6 +67,7 @@ public OnPluginStart()
|
|||||||
RegAdminCmd("sm_map", Command_Map, ADMFLAG_CHANGEMAP, "sm_map <map>");
|
RegAdminCmd("sm_map", Command_Map, ADMFLAG_CHANGEMAP, "sm_map <map>");
|
||||||
RegAdminCmd("sm_rcon", Command_Rcon, ADMFLAG_RCON, "sm_rcon <args>");
|
RegAdminCmd("sm_rcon", Command_Rcon, ADMFLAG_RCON, "sm_rcon <args>");
|
||||||
RegAdminCmd("sm_cvar", Command_Cvar, ADMFLAG_CONVARS, "sm_cvar <cvar> [value]");
|
RegAdminCmd("sm_cvar", Command_Cvar, ADMFLAG_CONVARS, "sm_cvar <cvar> [value]");
|
||||||
|
RegAdminCmd("sm_resetcvar", Command_ResetCvar, ADMFLAG_CONVARS, "sm_resetcvar <cvar>");
|
||||||
RegAdminCmd("sm_execcfg", Command_ExecCfg, ADMFLAG_CONFIG, "sm_execcfg <filename>");
|
RegAdminCmd("sm_execcfg", Command_ExecCfg, ADMFLAG_CONFIG, "sm_execcfg <filename>");
|
||||||
RegAdminCmd("sm_who", Command_Who, ADMFLAG_GENERIC, "sm_who [#userid|name]");
|
RegAdminCmd("sm_who", Command_Who, ADMFLAG_GENERIC, "sm_who [#userid|name]");
|
||||||
RegAdminCmd("sm_reloadadmins", Command_ReloadAdmins, ADMFLAG_BAN, "sm_reloadadmins");
|
RegAdminCmd("sm_reloadadmins", Command_ReloadAdmins, ADMFLAG_BAN, "sm_reloadadmins");
|
||||||
@ -115,6 +116,36 @@ bool:IsVarProtected(const String:cvar[])
|
|||||||
return GetTrieValue(g_ProtectedVars, cvar, dummy_value);
|
return GetTrieValue(g_ProtectedVars, cvar, dummy_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool:IsClientAllowedToChangeCvar(client, const String:cvarname[])
|
||||||
|
{
|
||||||
|
new Handle:hndl = FindConVar(cvarname);
|
||||||
|
|
||||||
|
new bool:allowed = false;
|
||||||
|
new client_flags = client == 0 ? ADMFLAG_ROOT : GetUserFlagBits(client);
|
||||||
|
|
||||||
|
if (client_flags & ADMFLAG_ROOT)
|
||||||
|
{
|
||||||
|
allowed = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (GetConVarFlags(hndl) & FCVAR_PROTECTED)
|
||||||
|
{
|
||||||
|
allowed = ((client_flags & ADMFLAG_PASSWORD) == ADMFLAG_PASSWORD);
|
||||||
|
}
|
||||||
|
else if (StrEqual(cvarname, "sv_cheats"))
|
||||||
|
{
|
||||||
|
allowed = ((client_flags & ADMFLAG_CHEATS) == ADMFLAG_CHEATS);
|
||||||
|
}
|
||||||
|
else if (!IsVarProtected(cvarname))
|
||||||
|
{
|
||||||
|
allowed = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return allowed;
|
||||||
|
}
|
||||||
|
|
||||||
public OnAdminMenuReady(Handle:topmenu)
|
public OnAdminMenuReady(Handle:topmenu)
|
||||||
{
|
{
|
||||||
/* Block us from being called twice */
|
/* Block us from being called twice */
|
||||||
@ -295,31 +326,8 @@ public Action:Command_Cvar(client, args)
|
|||||||
ReplyToCommand(client, "[SM] %t", "Unable to find cvar", cvarname);
|
ReplyToCommand(client, "[SM] %t", "Unable to find cvar", cvarname);
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
new bool:allowed = false;
|
if (!IsClientAllowedToChangeCvar(client, cvarname))
|
||||||
new client_flags = client == 0 ? ADMFLAG_ROOT : GetUserFlagBits(client);
|
|
||||||
|
|
||||||
if (client_flags & ADMFLAG_ROOT)
|
|
||||||
{
|
|
||||||
allowed = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (GetConVarFlags(hndl) & FCVAR_PROTECTED)
|
|
||||||
{
|
|
||||||
allowed = ((client_flags & ADMFLAG_PASSWORD) == ADMFLAG_PASSWORD);
|
|
||||||
}
|
|
||||||
else if (StrEqual(cvarname, "sv_cheats"))
|
|
||||||
{
|
|
||||||
allowed = ((client_flags & ADMFLAG_CHEATS) == ADMFLAG_CHEATS);
|
|
||||||
}
|
|
||||||
else if (!IsVarProtected(cvarname))
|
|
||||||
{
|
|
||||||
allowed = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!allowed)
|
|
||||||
{
|
{
|
||||||
ReplyToCommand(client, "[SM] %t", "No access to cvar");
|
ReplyToCommand(client, "[SM] %t", "No access to cvar");
|
||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
@ -352,6 +360,50 @@ public Action:Command_Cvar(client, args)
|
|||||||
return Plugin_Handled;
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Action:Command_ResetCvar(client, args)
|
||||||
|
{
|
||||||
|
if (args < 1)
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "[SM] Usage: sm_resetcvar <cvar>");
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
decl String:cvarname[64];
|
||||||
|
GetCmdArg(1, cvarname, sizeof(cvarname));
|
||||||
|
|
||||||
|
new Handle:hndl = FindConVar(cvarname);
|
||||||
|
if (hndl == INVALID_HANDLE)
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "[SM] %t", "Unable to find cvar", cvarname);
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsClientAllowedToChangeCvar(client, cvarname))
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "[SM] %t", "No access to cvar");
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
|
ResetConVar(hndl);
|
||||||
|
|
||||||
|
decl String:value[255];
|
||||||
|
GetConVarString(hndl, value, sizeof(value));
|
||||||
|
|
||||||
|
if ((GetConVarFlags(hndl) & FCVAR_PROTECTED) != FCVAR_PROTECTED)
|
||||||
|
{
|
||||||
|
ShowActivity2(client, "[SM] ", "%t", "Cvar changed", cvarname, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ReplyToCommand(client, "[SM] %t", "Cvar changed", cvarname, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
LogAction(client, -1, "\"%L\" reset cvar (cvar \"%s\") (value \"%s\")", client, cvarname, value);
|
||||||
|
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
public Action:Command_Rcon(client, args)
|
public Action:Command_Rcon(client, args)
|
||||||
{
|
{
|
||||||
if (args < 1)
|
if (args < 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user