2025-08-16 20:52:02 +07:00

131 lines
3.4 KiB
SourcePawn

#include <sourcemod>
#include <sdktools>
public Plugin myinfo = {
name = "AdminGod",
author = "Nonszy",
description = "Admin-only ttols",
version = "1.0.1",
url = "https://gitea.nonszy.space/nomi-nonsz/left4dead2-admingod"
};
bool g_bGodmode[MAXPLAYERS + 1];
public void OnClientPutInServer(int client)
{
if (!IsClientInGame(client) || IsFakeClient(client)) return;
char name[64];
char steamID[64];
GetClientName(client, name, sizeof(name));
GetClientAuthId(client, AuthId_Steam2, steamID, sizeof(steamID));
PrintToServer("[ClientLogger] %s (%s) connected", name, steamID);
LogAction(client, -1, "%s (%s) has connected to the server", name, steamID);
}
public void OnPluginStart() {
RegAdminCmd("sm_quick_noclip", Command_QuickNoclip, ADMFLAG_SLAY|ADMFLAG_CHEATS);
RegAdminCmd("sm_god", Command_Godmode, ADMFLAG_SLAY|ADMFLAG_CHEATS);
RegAdminCmd("sm_give", Command_Give, ADMFLAG_SLAY|ADMFLAG_CHEATS);
RegAdminCmd("sm_spawn", Command_Spawn, ADMFLAG_SLAY|ADMFLAG_CHEATS);
}
public void ExecCommand(int client, char[] command) {
int flagsgive = GetCommandFlags("give");
int flagszspawn = GetCommandFlags("z_spawn_old");
SetCommandFlags("give", flagsgive & ~FCVAR_CHEAT);
SetCommandFlags("z_spawn_old", flagszspawn & ~FCVAR_CHEAT);
FakeClientCommand(client, cmd);
SetCommandFlags("give", flagsgive|FCVAR_CHEAT);
SetCommandFlags("z_spawn_old", flagsgive|FCVAR_CHEAT);
}
public Action Command_QuickNoclip(int client, int args) {
if (!IsClientInGame(client) || !IsPlayerAlive(client)) return Plugin_Handled;
if (!CheckCommandAccess(client, "sm_noclip", ADMFLAG_CHEATS)) {
PrintToChat(client, "[SM] You do not have permission to use noclip.");
return Plugin_Handled;
}
MoveType flags = GetEntityMoveType(client);
if (flags == MOVETYPE_NOCLIP) {
SetEntityMoveType(client, MOVETYPE_WALK);
PrintToChat(client, "[SM] Noclip OFF.");
} else {
SetEntityMoveType(client, MOVETYPE_NOCLIP);
PrintToChat(client, "[SM] Noclip ON.");
}
return Plugin_Handled;
}
public Action Command_Godmode(int client, int args)
{
if (!IsClientInGame(client) || !IsPlayerAlive(client)) return Plugin_Handled;
g_bGodmode[client] = !g_bGodmode[client];
if (g_bGodmode[client])
{
SetEntProp(client, Prop_Data, "m_takedamage", 0);
PrintToChat(client, "[Godmode] (godmode ON)");
}
else
{
SetEntProp(client, Prop_Data, "m_takedamage", 2);
PrintToChat(client, "[Godmode] (godmode OFF)");
}
return Plugin_Handled;
}
public Action Command_Give(int client, int args)
{
if (!IsClientInGame(client) || !IsPlayerAlive(client)) return Plugin_Handled;
if (args < 1)
{
ReplyToCommand(client, "[SM] Usage: sm_give <itemname>");
return Plugin_Handled;
}
char arg[64];
GetCmdArg(1, arg, sizeof(arg));
char cmd[64];
StrCat(cmd, sizeof(cmd), "give ");
StrCat(cmd, sizeof(cmd), arg);
ExecCommand(client, cmd);
return Plugin_Handled;
}
public Action Command_Spawn(int client, int args)
{
if (!IsClientInGame(client) || !IsPlayerAlive(client)) return Plugin_Handled;
if (args < 1)
{
ReplyToCommand(client, "[SM] Usage: sm_spawn <entity>");
return Plugin_Handled;
}
char arg[64];
GetCmdArg(1, arg, sizeof(arg));
char cmd[64];
StrCat(cmd, sizeof(cmd), "z_spawn_old ");
StrCat(cmd, sizeof(cmd), arg);
ExecCommand(client, cmd);
return Plugin_Handled;
}