diff --git a/src/game/g_console.pas b/src/game/g_console.pas
index 15497d913a59a0beb136e3909bd3a64e930d9d39..64b08642029b320c93a0377ae8a56526b94eb821 100644 (file)
--- a/src/game/g_console.pas
+++ b/src/game/g_console.pas
ACTION_SCORES = 6;
ACTION_ACTIVATE = 7;
ACTION_STRAFE = 8;
- ACTION_WEAPNEXT = 9;
- ACTION_WEAPPREV = 10;
FIRST_ACTION = ACTION_JUMP;
- LAST_ACTION = ACTION_WEAPPREV;
+ LAST_ACTION = ACTION_STRAFE;
procedure g_Console_Init;
procedure g_Console_SysInit;
function g_Console_Action (action: Integer): Boolean;
function g_Console_MatchBind (key: Integer; down: AnsiString; up: AnsiString = ''): Boolean;
function g_Console_FindBind (n: Integer; down: AnsiString; up: AnsiString = ''): Integer;
-procedure g_Console_BindKey (key: Integer; down: AnsiString; up: AnsiString = '');
+procedure g_Console_BindKey (key: Integer; down: AnsiString; up: AnsiString = ''; rep: Boolean = False);
procedure g_Console_ProcessBind (key: Integer; down: Boolean);
procedure g_Console_ProcessBindRepeat (key: Integer);
procedure g_Console_ResetBinds;
function conParseFloat (var res: Single; const s: AnsiString): Boolean;
const
- defaultConfigScript = 'dfconfig.cfg';
+ {$IFDEF HEADLESS}
+ defaultConfigScript = 'dfserver.cfg';
+ {$ELSE}
+ defaultConfigScript = 'dfconfig.cfg';
+ {$ENDIF}
var
gConsoleShow: Boolean = false; // True - êîíñîëü îòêðûòà èëè îòêðûâàåòñÿ
uses
g_textures, g_main, e_graphics, e_input, g_game, g_gfx, g_player, g_items,
SysUtils, g_basic, g_options, Math, g_touch, e_res,
- g_menu, g_gui, g_language, g_net, g_netmsg, e_log, conbuf;
+ g_menu, g_gui, g_language, g_net, g_netmsg, e_log, conbuf, g_weapons;
const
autoexecScript = 'autoexec.cfg';
AddCommand('p2_model', PlayerSettingsCVars);
AddCommand('p1_team', PlayerSettingsCVars);
AddCommand('p2_team', PlayerSettingsCVars);
+ AddCommand('p1_autoswitch', PlayerSettingsCVars);
+ AddCommand('p2_autoswitch', PlayerSettingsCVars);
+ AddCommand('p1_switch_empty', PlayerSettingsCVars);
+ AddCommand('p2_switch_empty', PlayerSettingsCVars);
+ AddCommand('p1_skip_fist', PlayerSettingsCVars);
+ AddCommand('p2_skip_fist', PlayerSettingsCVars);
+ AddCommand('p1_priority_kastet', PlayerSettingsCVars);
+ AddCommand('p2_priority_kastet', PlayerSettingsCVars);
+ AddCommand('p1_priority_saw', PlayerSettingsCVars);
+ AddCommand('p2_priority_saw', PlayerSettingsCVars);
+ AddCommand('p1_priority_pistol', PlayerSettingsCVars);
+ AddCommand('p2_priority_pistol', PlayerSettingsCVars);
+ AddCommand('p1_priority_shotgun1', PlayerSettingsCVars);
+ AddCommand('p2_priority_shotgun1', PlayerSettingsCVars);
+ AddCommand('p1_priority_shotgun2', PlayerSettingsCVars);
+ AddCommand('p2_priority_shotgun2', PlayerSettingsCVars);
+ AddCommand('p1_priority_chaingun', PlayerSettingsCVars);
+ AddCommand('p2_priority_chaingun', PlayerSettingsCVars);
+ AddCommand('p1_priority_rocketlauncher', PlayerSettingsCVars);
+ AddCommand('p2_priority_rocketlauncher', PlayerSettingsCVars);
+ AddCommand('p1_priority_plasma', PlayerSettingsCVars);
+ AddCommand('p2_priority_plasma', PlayerSettingsCVars);
+ AddCommand('p1_priority_bfg', PlayerSettingsCVars);
+ AddCommand('p2_priority_bfg', PlayerSettingsCVars);
+ AddCommand('p1_priority_super', PlayerSettingsCVars);
+ AddCommand('p2_priority_super', PlayerSettingsCVars);
+ AddCommand('p1_priority_flamethrower', PlayerSettingsCVars);
+ AddCommand('p2_priority_flamethrower', PlayerSettingsCVars);
+ AddCommand('p1_priority_berserk', PlayerSettingsCVars);
+ AddCommand('p2_priority_berserk', PlayerSettingsCVars);
AddCommand('g_max_particles', GameCVars);
AddCommand('g_max_shells', GameCVars);
AddCommand('g_allow_exit', GameCVars);
AddCommand('g_dm_keys', GameCVars);
AddCommand('g_allow_monsters', GameCVars);
+ AddCommand('g_allow_dropflag', GameCVars);
+ AddCommand('g_throw_flag', GameCVars);
AddCommand('g_bot_vsmonsters', GameCVars);
AddCommand('g_bot_vsplayers', GameCVars);
+ AddCommand('g_max_bots', GameCVars); // intentionally not whitelisted
AddCommand('g_scorelimit', GameCVars);
AddCommand('g_timelimit', GameCVars);
AddCommand('g_maxlives', GameCVars);
AddCommand('bot_removeall', GameCommands);
AddCommand('chat', GameCommands);
AddCommand('teamchat', GameCommands);
+ AddCommand('announce', GameCommands);
+ AddCommand('an', GameCommands);
AddCommand('game', GameCommands);
AddCommand('host', GameCommands);
AddCommand('map', GameCommands);
AddCommand('clientlist', GameCommands);
AddCommand('event', GameCommands);
AddCommand('screenshot', GameCommands);
+ AddCommand('weapnext', GameCommands);
+ AddCommand('weapprev', GameCommands);
AddCommand('weapon', GameCommands);
+ AddCommand('dropflag', GameCommands);
+ AddCommand('p1_weapnext', GameCommands);
+ AddCommand('p1_weapprev', GameCommands);
AddCommand('p1_weapon', GameCommands);
+ AddCommand('p1_weapbest', GameCommands);
+ AddCommand('p1_dropflag', GameCommands);
+ AddCommand('p2_weapnext', GameCommands);
+ AddCommand('p2_weapprev', GameCommands);
AddCommand('p2_weapon', GameCommands);
+ AddCommand('p2_weapbest', GameCommands);
+ AddCommand('p2_dropflag', GameCommands);
AddCommand('god', GameCheats);
AddCommand('notarget', GameCheats);
AddAction('scores', ACTION_SCORES);
AddAction('activate', ACTION_ACTIVATE);
AddAction('strafe', ACTION_STRAFE);
- AddAction('weapnext', ACTION_WEAPNEXT);
- AddAction('weapprev', ACTION_WEAPPREV);
WhitelistCommand('say');
WhitelistCommand('tell');
Result := gConsoleShow
end;
-procedure g_Console_BindKey (key: Integer; down: AnsiString; up: AnsiString = '');
+procedure g_Console_BindKey (key: Integer; down: AnsiString; up: AnsiString = ''; rep: Boolean = False);
begin
//e_LogWritefln('bind "%s" "%s" <%s>', [LowerCase(e_KeyNames[key]), cmd, key]);
ASSERT(key >= 0);
ASSERT(key < e_MaxInputKeys);
if key > 0 then
begin
- gInputBinds[key].rep := False;
+ gInputBinds[key].rep := rep;
gInputBinds[key].down := ParseAlias(down);
gInputBinds[key].up := ParseAlias(up);
end;
g_Console_BindKey(IK_SPACE, '+p1_jump', '-p1_jump');
g_Console_BindKey(IK_H, '+p1_attack', '-p1_attack');
g_Console_BindKey(IK_J, '+p1_activate', '-p1_activate');
- g_Console_BindKey(IK_E, '+p1_weapnext', '-p1_weapnext');
- g_Console_BindKey(IK_Q, '+p1_weapprev', '-p1_weapprev');
g_Console_BindKey(IK_ALT, '+p1_strafe', '-p1_strafe');
+ g_Console_BindKey(IK_E, 'p1_weapnext', '', True);
+ g_Console_BindKey(IK_Q, 'p1_weapprev', '', True);
+ g_Console_BindKey(IK_R, 'p1_dropflag', '');
g_Console_BindKey(IK_1, 'p1_weapon 1');
g_Console_BindKey(IK_2, 'p1_weapon 2');
g_Console_BindKey(IK_3, 'p1_weapon 3');
g_Console_BindKey(e_JoyButtonToKey(i, 2), '+p' + IntToStr(i mod 2 + 1) + '_jump', '-p' + IntToStr(i mod 2 + 1) + '_jump');
g_Console_BindKey(e_JoyButtonToKey(i, 0), '+p' + IntToStr(i mod 2 + 1) + '_attack', '-p' + IntToStr(i mod 2 + 1) + '_attack');
g_Console_BindKey(e_JoyButtonToKey(i, 3), '+p' + IntToStr(i mod 2 + 1) + '_activate', '-p' + IntToStr(i mod 2 + 1) + '_activate');
- g_Console_BindKey(e_JoyButtonToKey(i, 1), '+p' + IntToStr(i mod 2 + 1) + '_weapnext', '-p' + IntToStr(i mod 2 + 1) + '_weapnext');
- g_Console_BindKey(e_JoyButtonToKey(i, 4), '+p' + IntToStr(i mod 2 + 1) + '_weapprev', '-p' + IntToStr(i mod 2 + 1) + '_weapprev');
g_Console_BindKey(e_JoyButtonToKey(i, 7), '+p' + IntToStr(i mod 2 + 1) + '_strafe', '-p' + IntToStr(i mod 2 + 1) + '_strafe');
+ g_Console_BindKey(e_JoyButtonToKey(i, 1), 'p' + IntToStr(i mod 2 + 1) + '_weapnext', '', True);
+ g_Console_BindKey(e_JoyButtonToKey(i, 4), 'p' + IntToStr(i mod 2 + 1) + '_weapprev', '', True);
g_Console_BindKey(e_JoyButtonToKey(i, 10), 'togglemenu');
end;
g_Console_BindKey(VK_JUMP, '+jump', '-jump');
g_Console_BindKey(VK_FIRE, '+attack', '-attack');
g_Console_BindKey(VK_OPEN, '+activate', '-activate');
- g_Console_BindKey(VK_NEXT, '+weapnext', '-weapnext');
- g_Console_BindKey(VK_PREV, '+weapprev', '-weapprev');
g_Console_BindKey(VK_STRAFE, '+strafe', '-strafe');
+ g_Console_BindKey(VK_NEXT, 'weapnext', '', True);
+ g_Console_BindKey(VK_PREV, 'weapprev', '', True);
g_Console_BindKey(VK_0, 'weapon 1');
g_Console_BindKey(VK_1, 'weapon 2');
g_Console_BindKey(VK_2, 'weapon 3');
WriteFlag('g_friendly_hit_projectile ', GAME_OPTION_TEAMHITPROJECTILE);
WriteFlag('g_allow_exit ', GAME_OPTION_ALLOWEXIT);
WriteFlag('g_allow_monsters ', GAME_OPTION_MONSTERS);
+ WriteFlag('g_allow_dropflag ', GAME_OPTION_ALLOWDROPFLAG);
+ WriteFlag('g_throw_flag ', GAME_OPTION_THROWFLAG);
WriteFlag('g_dm_keys ', GAME_OPTION_DMKEYS);
WriteFlag('g_weaponstay ', GAME_OPTION_WEAPONSTAY);
WriteFlag('g_bot_vsmonsters ', GAME_OPTION_BOTVSMONSTER);
WriteLn(f, 'p1_color ', Color.R, ' ', Color.G, ' ', Color.B);
WriteLn(f, 'p1_model ', QuoteStr(Model));
WriteLn(f, 'p1_team ', FormatTeam(Team));
+ WriteLn(f, 'p1_autoswitch ', WeaponSwitch);
+ WriteLn(f, 'p1_switch_empty ', SwitchToEmpty);
+ WriteLn(f, 'p1_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET]));
+ WriteLn(f, 'p1_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW]));
+ WriteLn(f, 'p1_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL]));
+ WriteLn(f, 'p1_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
+ WriteLn(f, 'p1_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2] ));
+ WriteLn(f, 'p1_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN]));
+ WriteLn(f, 'p1_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER]));
+ WriteLn(f, 'p1_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA]));
+ WriteLn(f, 'p1_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG]));
+ WriteLn(f, 'p1_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET]));
+ WriteLn(f, 'p1_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER]));
+ WriteLn(f, 'p1_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1]));
+ //
end;
with gPlayer2Settings do
begin
WriteLn(f, 'p2_color ', Color.R, ' ', Color.G, ' ', Color.B);
WriteLn(f, 'p2_model ', QuoteStr(Model));
WriteLn(f, 'p2_team ', FormatTeam(Team));
+ WriteLn(f, 'p2_autoswitch ', WeaponSwitch);
+ WriteLn(f, 'p2_switch_empty ', SwitchToEmpty);
+ WriteLn(f, 'p2_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET]));
+ WriteLn(f, 'p2_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW]));
+ WriteLn(f, 'p2_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL]));
+ WriteLn(f, 'p2_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
+ WriteLn(f, 'p2_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
+ WriteLn(f, 'p2_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN]));
+ WriteLn(f, 'p2_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER]));
+ WriteLn(f, 'p2_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA]));
+ WriteLn(f, 'p2_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG]));
+ WriteLn(f, 'p2_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET]));
+ WriteLn(f, 'p2_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER]));
+ WriteLn(f, 'p2_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1]));
end;
// all cvars