diff --git a/src/game/g_console.pas b/src/game/g_console.pas
index c89e3eeb0d9dc9de301403935ea06ef01deff1fb..edf484f1dd8177dc59170710d0c48c6f4efeffb7 100644 (file)
--- a/src/game/g_console.pas
+++ b/src/game/g_console.pas
gChatTeam: Boolean = false;
gAllowConsoleMessages: Boolean = true;
gJustChatted: Boolean = false; // ÷òîáû àäìèí â èíòåðå ÷àòÿñü íå ïðîìàòûâàë ñòàòèñòèêó
- gParsingBinds: Boolean = false; // íå ïåðåñîõðàíÿòü êîíôèã âî âðåìÿ ïàðñèíãà
+ gParsingBinds: Boolean = true; // íå ïåðåñîõðàíÿòü êîíôèã âî âðåìÿ ïàðñèíãà
gPlayerAction: Array [0..1, 0..LAST_ACTION] of Boolean; // [player, action]
implementation
end
end;
+function QuoteStr(str: String): String;
+begin
+ if Pos(' ', str) > 0 then
+ Result := '"' + str + '"'
+ else
+ Result := str;
+end;
+
procedure BindCommands (p: SSArray);
var cmd, key: AnsiString; i: Integer;
begin
if i < e_MaxInputKeys then
begin
if Length(p) = 2 then
- g_Console_Add('"' + e_KeyNames[i] + '" = "' + GetCommandString(gInputBinds[i].down) + '" "' + GetCommandString(gInputBinds[i].up) + '"')
+ g_Console_Add(QuoteStr(e_KeyNames[i]) + ' = ' + QuoteStr(GetCommandString(gInputBinds[i].down)) + ' ' + QuoteStr(GetCommandString(gInputBinds[i].up)))
else if Length(p) = 3 then
g_Console_BindKey(i, p[2], '')
else (* len = 4 *)
'bindlist':
for i := 0 to e_MaxInputKeys - 1 do
if (gInputBinds[i].down <> nil) or (gInputBinds[i].up <> nil) then
- g_Console_Add(e_KeyNames[i] + ' "' + GetCommandString(gInputBinds[i].down) + '" "' + GetCommandString(gInputBinds[i].up) + '"');
+ g_Console_Add(e_KeyNames[i] + ' ' + QuoteStr(GetCommandString(gInputBinds[i].down)) + ' ' + QuoteStr(GetCommandString(gInputBinds[i].up)));
'unbind':
// unbind <key>
if Length(p) = 2 then
WhitelistCommand('g_scorelimit');
WhitelistCommand('g_timelimit');
- gParsingBinds := True;
g_Console_ResetBinds;
g_Console_ReadConfig(GameDir + '/dfconfig.cfg');
g_Console_ReadConfig(GameDir + '/autoexec.cfg');
WriteLn(f, 'unbindall');
for i := 0 to e_MaxInputKeys - 1 do
if (Length(gInputBinds[i].down) > 0) or (Length(gInputBinds[i].up) > 0) then
- WriteLn(f, 'bind ', e_KeyNames[i], ' "', GetCommandString(gInputBinds[i].down), '" "', GetCommandString(gInputBinds[i].up), '"');
+ begin
+ Write(f, 'bind ', e_KeyNames[i], ' ', QuoteStr(GetCommandString(gInputBinds[i].down)));
+ if Length(gInputBinds[i].down) = 0 then
+ Write(f, '""');
+ if Length(gInputBinds[i].up) > 0 then
+ Write(f, ' ', QuoteStr(GetCommandString(gInputBinds[i].up)));
+ WriteLn(f, '');
+ end;
for i := 0 to High(commands) do
begin
if not commands[i].cheat then
if @commands[i].procEx = @boolVarHandler then
begin
if PBoolean(commands[i].ptr)^ then j := 1 else j := 0;
- WriteLn(f, commands[i].cmd, ' "', j, '"')
+ WriteLn(f, commands[i].cmd, ' ', j)
end
else if @commands[i].procEx = @intVarHandler then
begin
- WriteLn(f, commands[i].cmd, ' "', PInteger(commands[i].ptr)^, '"')
+ WriteLn(f, commands[i].cmd, ' ', PInteger(commands[i].ptr)^)
end
else if @commands[i].procEx = @singleVarHandler then
begin
- WriteLn(f, commands[i].cmd, ' "', PVarSingle(commands[i].ptr).val^:0:6, '"')
+ WriteLn(f, commands[i].cmd, ' ', PVarSingle(commands[i].ptr).val^:0:6)
end
end
end;