cvar_t skin = {CVAR_CLIENT | CVAR_USERINFO | CVAR_SAVE, "skin", "", "QW player skin name (example: base)"};
cvar_t noaim = {CVAR_CLIENT | CVAR_USERINFO | CVAR_SAVE, "noaim", "1", "QW option to disable vertical autoaim"};
cvar_t r_fixtrans_auto = {CVAR_CLIENT, "r_fixtrans_auto", "0", "automatically fixtrans textures (when set to 2, it also saves the fixed versions to a fixtrans directory)"};
-qboolean allowcheats = false;
extern qboolean host_shuttingdown;
extern cvar_t developer_entityparsing;
if(sv_status_privacy.integer && cmd->source != src_command)
strlcpy(ip, client->netconnection ? "hidden" : "botclient", 48);
else
- strlcpy(ip, (client->netconnection && client->netconnection->address) ? client->netconnection->address : "botclient", 48);
+ strlcpy(ip, (client->netconnection && *client->netconnection->address) ? client->netconnection->address : "botclient", 48);
frags = client->frags;
static void Host_God_f(cmd_state_t *cmd)
{
prvm_prog_t *prog = SVVM_prog;
- if (!allowcheats)
+ if (!sv_cheats.integer)
{
- SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n");
+ SV_ClientPrint("No cheats allowed. Set sv_cheats to 1 in the server console to enable.\n");
return;
}
static void Host_Notarget_f(cmd_state_t *cmd)
{
prvm_prog_t *prog = SVVM_prog;
- if (!allowcheats)
+ if (!sv_cheats.integer)
{
- SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n");
+ SV_ClientPrint("No cheats allowed. Set sv_cheats to 1 in the server console to enable.\n");
return;
}
static void Host_Noclip_f(cmd_state_t *cmd)
{
prvm_prog_t *prog = SVVM_prog;
- if (!allowcheats)
+ if (!sv_cheats.integer)
{
- SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n");
+ SV_ClientPrint("No cheats allowed. Set sv_cheats to 1 in the server console to enable.\n");
return;
}
static void Host_Fly_f(cmd_state_t *cmd)
{
prvm_prog_t *prog = SVVM_prog;
- if (!allowcheats)
+ if (!sv_cheats.integer)
{
- SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n");
+ SV_ClientPrint("No cheats allowed. Set sv_cheats to 1 in the server console to enable.\n");
return;
}
}
}
+// Disable cheats if sv_cheats is turned off
+static void Host_DisableCheats_c(char *value)
+{
+ prvm_prog_t *prog = SVVM_prog;
+ int i = 0;
+
+ if (value[0] == '0' && !value[1])
+ {
+ while (svs.clients[i].edict)
+ {
+ if (((int)PRVM_serveredictfloat(svs.clients[i].edict, flags) & FL_GODMODE))
+ PRVM_serveredictfloat(svs.clients[i].edict, flags) = (int)PRVM_serveredictfloat(svs.clients[i].edict, flags) ^ FL_GODMODE;
+ if (((int)PRVM_serveredictfloat(svs.clients[i].edict, flags) & FL_NOTARGET))
+ PRVM_serveredictfloat(svs.clients[i].edict, flags) = (int)PRVM_serveredictfloat(svs.clients[i].edict, flags) ^ FL_NOTARGET;
+ if (PRVM_serveredictfloat(svs.clients[i].edict, movetype) == MOVETYPE_NOCLIP ||
+ PRVM_serveredictfloat(svs.clients[i].edict, movetype) == MOVETYPE_FLY)
+ {
+ noclip_anglehack = false;
+ PRVM_serveredictfloat(svs.clients[i].edict, movetype) = MOVETYPE_WALK;
+ }
+ i++;
+ }
+ }
+}
+
/*
===============================================================================
key_dest = key_game;
svs.serverflags = 0; // haven't completed an episode yet
- allowcheats = sv_cheats.integer != 0;
strlcpy(level, Cmd_Argv(cmd, 1), sizeof(level));
SV_SpawnServer(level);
if (sv.active && cls.state == ca_disconnected)
key_dest = key_game;
SV_SaveSpawnparms ();
- allowcheats = sv_cheats.integer != 0;
strlcpy(level, Cmd_Argv(cmd, 1), sizeof(level));
SV_SpawnServer(level);
if (sv.active && cls.state == ca_disconnected)
#endif
key_dest = key_game;
- allowcheats = sv_cheats.integer != 0;
strlcpy(mapname, sv.name, sizeof(mapname));
SV_SpawnServer(mapname);
if (sv.active && cls.state == ca_disconnected)
COM_ParseToken_Simple(&t, false, false, true);
time = atof(com_token);
- allowcheats = sv_cheats.integer != 0;
-
if(developer_entityparsing.integer)
Con_Printf("Host_Loadgame_f: spawning server\n");
PRVM_ED_ParseEdict (prog, start, ent);
// link it into the bsp tree
- if (!ent->priv.server->free)
+ if (!ent->priv.server->free && !VectorCompare(PRVM_serveredictvector(ent, absmin), PRVM_serveredictvector(ent, absmax)))
SV_LinkEdict(ent);
}
const char *t;
int v;
- if (!allowcheats)
+ if (!sv_cheats.integer)
{
SV_ClientPrint("No cheats allowed, use sv_cheats 1 and restart level to enable.\n");
return;
Send back ping and packet loss update for all current players to this player
====================
*/
-void Host_Pings_f(cmd_state_t *cmd)
+static void Host_Pings_f(cmd_state_t *cmd)
{
int i, j, ping, packetloss, movementloss;
char temp[128];
Cvar_RegisterVariable(&skin);
Cvar_RegisterVariable(&noaim);
Cvar_RegisterVariable(&sv_cheats);
+ Cvar_RegisterCallback(&sv_cheats, Host_DisableCheats_c);
Cvar_RegisterVariable(&sv_adminnick);
Cvar_RegisterVariable(&sv_status_privacy);
Cvar_RegisterVariable(&sv_status_show_qcstatus);