diff --git a/src/game/g_console.pas b/src/game/g_console.pas
index 6cd897c6d6992237ceedbab3105922cd0f5b2e65..3bceba1c742bcdf4a8fbb877e38a1ebe170a9a5f 100644 (file)
--- a/src/game/g_console.pas
+++ b/src/game/g_console.pas
procedure g_Console_Chat_Switch (team: Boolean=false);
-procedure conRegVar (const conname: AnsiString; pvar: PBoolean; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false); overload;
-procedure conRegVar (const conname: AnsiString; pvar: PSingle; amin, amax: Single; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false); overload;
+procedure conRegVar (const conname: AnsiString; pvar: PBoolean; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload;
+procedure conRegVar (const conname: AnsiString; pvar: PSingle; amin, amax: Single; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload;
// poor man's floating literal parser; i'm sorry, but `StrToFloat()` sux cocks
function conParseFloat (var res: Single; const s: AnsiString): Boolean;
1: if not me.cheat or conIsCheatsEnabled then flag := true else begin conwriteln('not available'); exit; end;
666: if not me.cheat or conIsCheatsEnabled then flag := not flag else begin conwriteln('not available'); exit; end;
end;
- if flag then conwritefln('%s: tan', [msg]) else conwritefln('%s: ona', [msg]);
+ if (Length(msg) = 0) then msg := p[0] else msg += ':';
+ if flag then conwritefln('%s tan', [msg]) else conwritefln('%s ona', [msg]);
end;
end;
begin
end;
-procedure conRegVar (const conname: AnsiString; pvar: PBoolean; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false); overload;
+procedure conRegVar (const conname: AnsiString; pvar: PBoolean; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload;
var
f: Integer;
cp: PCommand;
cp.proc := nil;
cp.procEx := boolVarHandler;
cp.help := ahelp;
- cp.hidden := false;
+ cp.hidden := ahidden;
cp.ptr := pvar;
cp.msg := amsg;
cp.cheat := acheat;
begin
if (Length(p) > 2) then
begin
- conwritefln('too many arguments to ''%s''', [p[0]]);
+ conwritefln('too many arguments to ''%s''', [me.cmd]);
exit;
end;
pv := PVarSingle(me.ptr);
begin
if not conParseFloat(nv, p[1]) then
begin
- conwritefln('%s: ''%s'' doesn''t look like a floating number', [p[0], p[1]]);
+ conwritefln('%s: ''%s'' doesn''t look like a floating number', [me.cmd, p[1]]);
exit;
end;
if (nv < pv.min) then nv := pv.min;
end;
end;
msg := me.msg;
- if (Length(msg) = 0) then msg := p[0] else msg += ':';
+ if (Length(msg) = 0) then msg := me.cmd else msg += ':';
conwritefln('%s %s', [msg, pv.val^]);
end;
-procedure conRegVar (const conname: AnsiString; pvar: PSingle; amin, amax: Single; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false); overload;
+procedure conRegVar (const conname: AnsiString; pvar: PSingle; amin, amax: Single; const ahelp: AnsiString; const amsg: AnsiString; acheat: Boolean=false; ahidden: Boolean=false); overload;
var
f: Integer;
cp: PCommand;
cp.proc := nil;
cp.procEx := singleVarHandler;
cp.help := ahelp;
- cp.hidden := false;
+ cp.hidden := ahidden;
cp.ptr := pv;
cp.msg := amsg;
cp.cheat := acheat;
cp.cheat := acheat;
end;
+
+procedure segfault (p: SArray);
+var
+ pp: PByte = nil;
+begin
+ pp^ := 0;
+end;
+
+
procedure g_Console_Init();
var
a: Integer;
Time := 0;
end;
+ AddCommand('segfault', segfault, 'make segfault');
+
AddCommand('clear', ConsoleCommands, 'clear console');
AddCommand('clearhistory', ConsoleCommands);
AddCommand('showhistory', ConsoleCommands);
g_Console_Add('');
for i := 0 to High(commands) do
begin
- if not commands[i].hidden then
+ // hidden commands are hidden when cheats aren't enabled
+ if commands[i].hidden and not conIsCheatsEnabled then continue;
+ if (Length(commands[i].help) > 0) then
begin
- if (Length(commands[i].help) > 0) then
- begin
- g_Console_Add(' '+commands[i].cmd+' -- '+commands[i].help);
- end
- else
- begin
- g_Console_Add(' '+commands[i].cmd);
- end;
+ g_Console_Add(' '+commands[i].cmd+' -- '+commands[i].help);
+ end
+ else
+ begin
+ g_Console_Add(' '+commands[i].cmd);
end;
end;
exit;
ll := Copy(ll, 0, Length(ll)-1);
for i := 0 to High(commands) do
begin
- if commands[i].hidden then continue;
+ // hidden commands are hidden when cheats aren't enabled
+ if commands[i].hidden and not conIsCheatsEnabled then continue;
if (commands[i].cmd = ll) then
begin
if (Length(commands[i].help) > 0) then
tused := 0;
for i := 0 to High(commands) do
begin
- if commands[i].hidden then continue;
+ // hidden commands are hidden when cheats aren't enabled
+ if commands[i].hidden and not conIsCheatsEnabled then continue;
cmd := commands[i].cmd;
if (Length(cmd) >= Length(ll)) and (ll = Copy(cmd, 0, Length(ll))) then
begin
g_Console_Add(Format(_lc[I_CONSOLE_UNKNOWN], [Arr[0]]));
end;
+
end.