diff --git a/SQF/dayz_code/compile/keyboard.sqf b/SQF/dayz_code/compile/keyboard.sqf index 5125e4808..35595fbfc 100644 --- a/SQF/dayz_code/compile/keyboard.sqf +++ b/SQF/dayz_code/compile/keyboard.sqf @@ -9,29 +9,116 @@ local _altState = _this select 4; local _handled = false; if (isNil "keyboard_keys") then { - local _cancelBuild = { + local _cancelBuild = { DZE_cancelBuilding = true; call dayz_EjectPlayer; _handled = false; if (!isNil "DZE_buildItem") then {_handled = true;}; // ESC to cancel build if (r_player_dead) then {_handled = true;}; // Disable ESC after death - }; - local _dze_f = { + }; + local _dze_f = { if (!_ctrlState && !_altState) then {DZE_F = true;}; if (!isNil "DZE_buildItem") then {_handled = true;}; // hold/release object while base building without altering weapon firing mode }; - local _dze_q = { - if (!_ctrlState && !_altState) then {DZE_Q = true;}; + local _dze_q = { + DZE_4 = true; + if (!isNil "DZE_buildItem") then { + _handled = true; + } else { + DZE_Q = true; + dayz_dodge = true; + }; + }; + local _dze_e = { + DZE_6 = true; + if (!isNil "DZE_buildItem") then { + _handled = true; + } else { + DZE_E = true; + dayz_dodge = true; + }; + }; + local _dze_PgUp = { + if (!_ctrlState && !_altState) then {DZE_Q = true;}; if (!_ctrlState && _altState) then {DZE_Q_alt = true;}; if (_ctrlState && !_altState) then {DZE_Q_ctrl = true;}; if (!isNil "DZE_buildItem") then {_handled = true;}; // raise object while base building without altering weapon zeroing }; - local _dze_z = { + local _dze_PgDn = { if (!_ctrlState && !_altState) then {DZE_Z = true;}; if (!_ctrlState && _altState) then {DZE_Z_alt = true;}; if (_ctrlState && !_altState) then {DZE_Z_ctrl = true;}; if (!isNil "DZE_buildItem") then {_handled = true;}; // lower object while base building without altering weapon zeroing }; + local _dze_tab = { + if (!isNil "DZE_buildItem") then { + call { + if (!_shiftState && !_altState && !_ctrlState) exitWith {DZE_TAB = true;}; + if (_shiftState && !_altState && !_ctrlState) exitWith {DZE_TAB_SHIFT = true;}; + }; + _handled = true; + }; + }; + local _dze_p = { + if (_shiftState) then { + _handled = true; + } else { + if (!isNil "DZE_buildItem") then { // show/hide plot pole boundary while base building + DZE_P = true; + _handled = true; + }; + }; + }; + local _dze_up = { + if (!isNil "DZE_buildItem") then { // pitch object forward while base building (Up Arrow Only) + DZE_UP = true; + _handled = true; // prevent move forward + }; + r_interrupt = true; + }; + local _dze_down = { + if (!isNil "DZE_buildItem") then { // pitch object back while base building (Down Arrow Only) + DZE_DOWN = true; + _handled = true; // prevent move back + }; + r_interrupt = true; + }; + local _dze_left = { + if (!isNil "DZE_buildItem") then { // bank object left while base building + DZE_LEFT = true; + _handled = true; // prevent move left + }; + r_interrupt = true; + }; + local _dze_right = { + if (!isNil "DZE_buildItem") then { // bank object right while base building + DZE_RIGHT = true; + _handled = true; // prevent move right + }; + r_interrupt = true; + }; + local _dze_t = { + if (!isNil "DZE_buildItem") then { // terrain align while base building + DZE_T = true; + _handled = true; + }; + }; + local _dze_l = { + if (!isNil "DZE_buildItem") then { // toggle local mode while base building (local axis / world axis) + DZE_L = true; + _handled = true; + }; + }; + local _dze_h = { + if (!isNil "DZE_buildItem") then { // hide / unhide snap building panel + DZE_H = true; + _handled = true; + }; + }; + local _dze_back = { + DZE_BACK = true; + if (!isNil "DZE_buildItem") then {_handled = true;}; // reset vectors while base building (backspace) + }; local _autoRun = { if (!dayz_autoRun) then { dayz_autoRun = true; @@ -81,39 +168,40 @@ if (isNil "keyboard_keys") then { call ui_changeDisplay; _handled = true; }; - local _rifle = { + local _rifle = { 2 call dz_fn_switchWeapon; - _handled = true; - }; - local _pistol = { + _handled = true; + }; + local _pistol = { 3 call dz_fn_switchWeapon; - _handled = true; - }; - local _melee = { // Also works for rifle on back if DZE_TwoPrimaries = 2; + _handled = true; + }; + local _melee = { // Also works for rifle on back if DZE_TwoPrimaries = 2; 4 call dz_fn_switchWeapon; - _handled = true; - }; + _handled = true; + }; local _surrender = { call player_surrender; _handled = true; - }; - local _gear = { - if ((vehicle player != player) && {!_shiftState && !_ctrlState && !_altState && !dialog}) then { - createGearDialog [player, "RscDisplayGear"]; - _handled = true; - } else { - if ((vehicle player == player) && {speed vehicle player > 0}) then { - //[objNull, player, rSwitchMove,""] call RE; - _handled = true; - }; - }; - }; - local _forcesave = { + }; + local _gear = { + if ((vehicle player != player) && {!_shiftState && !_ctrlState && !_altState && !dialog}) then { + createGearDialog [player, "RscDisplayGear"]; + _handled = true; + } else { + if ((vehicle player == player) && {speed vehicle player > 0}) then { + //[objNull, player, rSwitchMove,""] call RE; + _handled = true; + }; + }; + }; + local _forcesave = { if (diag_tickTime - dayz_lastSave > 10) then { call player_forceSave; + systemChat "saved"; }; - }; - local _drop = { + }; + local _drop = { local _doors = []; if (r_drag_sqf) then { _doors = nearestObjects [player, DayZ_DropDrageeObjects, 3]; //Prevent dropping dragged player through objects @@ -123,31 +211,31 @@ if (isNil "keyboard_keys") then { _doors = nearestObjects [player, DZE_DoorsLocked, 3]; if (count _doors > 0 && {speed player > 0}) then {_handled = true;}; //Prevent sprint and prone through doors glitch }; - }; - local _interrupt = { + }; + local _interrupt = { r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off}; if (dayz_autoRun) then {call dayz_autoRunOff;}; - }; - // TODO: left/right, when gear open: onKeyDown = "[_this,'onKeyDown',0,107,0,107] execVM '\z\addons\dayz_code\system\handleGear.sqf'"; - local _noise = { + }; + // TODO: left/right, when gear open: onKeyDown = "[_this,'onKeyDown',0,107,0,107] execVM '\z\addons\dayz_code\system\handleGear.sqf'"; + local _noise = { //Overriding default engine handling does not stop combination binds, need manual disableUserInput too _handled = [displayNull,_dikCode,_shiftState] call dze_filterCheats; - if (diag_ticktime - dayz_lastCheckBit > 10 && {!(_dikCode in channel_keys)}) then { - dayz_lastCheckBit = diag_ticktime; - [player,20,true,(getPosATL player)] call player_alertZombies; - }; - }; - local _journal = { - if (!dayz_isSwimming && !dialog) then { - [player,4,true,(getPosATL player)] call player_alertZombies; - createDialog 'horde_journal_front_cover'; - }; - _handled = true; - }; + if (diag_ticktime - dayz_lastCheckBit > 10 && {!(_dikCode in channel_keys)}) then { + dayz_lastCheckBit = diag_ticktime; + [player,20,true,(getPosATL player)] call player_alertZombies; + }; + }; + local _journal = { + if (!dayz_isSwimming && !dialog) then { + [player,4,true,(getPosATL player)] call player_alertZombies; + createDialog 'horde_journal_front_cover'; + }; + _handled = true; + }; - local _bunnyhop = { + local _bunnyhop = { r_interrupt = true; if (animationState player in ["bunnyhopunarmed","bunnyhoprifle"]) then { @@ -168,60 +256,89 @@ if (isNil "keyboard_keys") then { }; }; }; - }; + }; - local _block = { - _handled = true; - }; + //Server Menu + _informenu = { + if (isNull findDisplay 7777) then { + execVM "custom\tmenu\scripts\OM.sqf"; + }; + _handled = true; + }; - local _addArray = { - { + local _block = { + _handled = true; + }; + + local _addArray = { + { if (_x <= 999999) then { keyboard_keys set [_x, _this select 1]; }; - } forEach (_this select 0); - }; + } forEach (_this select 0); + }; - keyboard_keys = []; + keyboard_keys = []; channel_keys = []; voice_keys = []; {voice_keys = voice_keys + (actionKeys _x)} count voice_actions; {channel_keys = channel_keys + (actionKeys _x)} count ["NextChannel","PrevChannel"]; - keyboard_keys resize 256; - [[DIK_ESCAPE], _cancelBuild] call _addArray; - [[DIK_INSERT], {DZE_Q_alt = true;}] call _addArray; - [[DIK_A,DIK_D,DIK_LEFT,DIK_RIGHT], _interrupt] call _addArray; + keyboard_keys resize 256; + [[DIK_F4], _informenu] call _addArray; + [[DIK_ESCAPE], _cancelBuild] call _addArray; +// [[DIK_INSERT], {DZE_Q_alt = true;}] call _addArray; + [[DIK_INSERT], {if (isNil "DZE_buildItem") then {DZE_Q_alt = true;}}] call _addArray; + +// [[DIK_A, DIK_D, DIK_LEFT, DIK_RIGHT], _interrupt] call _addArray; [[DIK_F], _dze_f] call _addArray; - [[DIK_PRIOR], _dze_q] call _addArray; - [[DIK_NEXT], _dze_z] call _addArray; - [[DIK_Q], {DZE_4 = true;}] call _addArray; - [[DIK_E], {DZE_6 = true;}] call _addArray; + [[DIK_P], _dze_p] call _addArray; + [[DIK_T], _dze_t] call _addarray; // terrain mode + [[DIK_L], _dze_l] call _addarray; // local mode + [[DIK_H], _dze_h] call _addarray; // hide/unhide panel + [[DIK_MINUS], {DZE_MINUS = true;}] call _addArray; // decrease degrees (-) + [[DIK_EQUALS], {DZE_PLUS = true;}] call _addArray; // increase degrees (=+) + [[DIK_BACK], _dze_back] call _addarray; + [[DIK_PRIOR], _dze_PgUp] call _addArray; + [[DIK_NEXT], _dze_PgDn] call _addArray; + [[DIK_0], _autoRun] call _addArray; [[DIK_NUMPADMINUS,DIK_LSHIFT], _filterCheat] call _addArray; [[DIK_SPACE], {DZE_5 = true;}] call _addArray; [actionKeys "User6", {DZE_F = true;}] call _addArray; - [actionKeys "User7", {DZE_Q_ctrl = true;}] call _addArray; - [actionKeys "User8", {DZE_Z_ctrl = true;}] call _addArray; - [actionKeys "User13", {DZE_Q_alt = true;}] call _addArray; - [actionKeys "User14", {DZE_Z_alt = true;}] call _addArray; +// [actionKeys "User7", {DZE_Q_ctrl = true;}] call _addArray; +// [actionKeys "User8", {DZE_Z_ctrl = true;}] call _addArray; +// [actionKeys "User13", {DZE_Q_alt = true;}] call _addArray; +// [actionKeys "User14", {DZE_Z_alt = true;}] call _addArray; + [actionKeys "User7", {if (isNil "DZE_buildItem") then {DZE_Q_ctrl = true;}}] call _addArray; + [actionKeys "User8", {if (isNil "DZE_buildItem") then {DZE_Z_ctrl = true;}}] call _addArray; + [actionKeys "User13", {if (isNil "DZE_buildItem") then {DZE_Q_alt = true;}}] call _addArray; + [actionKeys "User14", {if (isNil "DZE_buildItem") then {DZE_Z_alt = true;}}] call _addArray; [actionKeys "User15", {DZE_Q = true;}] call _addArray; [actionKeys "User16", {DZE_Z = true;}] call _addArray; [actionKeys "User17", {DZE_4 = true;}] call _addArray; [actionKeys "User18", {DZE_6 = true;}] call _addArray; [actionKeys "User19", {DZE_5 = true;}] call _addArray; [actionKeys "Surrender", _surrender] call _addArray; - [[DIK_1], _rifle] call _addArray; - [[DIK_2], _pistol] call _addArray; - [[DIK_3], _melee] call _addArray; - [actionKeys "Gear", _gear] call _addArray; - [actionKeys "Prone", _drop] call _addArray; - [actionKeys "Crouch", _drop] call _addArray; - [actionKeys "MoveLeft", _interrupt] call _addArray; - [actionKeys "MoveRight", _interrupt] call _addArray; - [actionKeys "MoveForward", _interrupt] call _addArray; - [actionKeys "MoveBack", _interrupt] call _addArray; - [actionKeys "TurnLeft", _interrupt] call _addArray; - [actionKeys "TurnRight", _interrupt] call _addArray; + [[DIK_1], _rifle] call _addArray; + [[DIK_2], _pistol] call _addArray; + [[DIK_3], _melee] call _addArray; + [actionKeys "Gear", _gear] call _addArray; + [actionKeys "Prone", _drop] call _addArray; + [actionKeys "Crouch", _drop] call _addArray; + + [actionKeys "MoveLeft", _interrupt] call _addArray; // Delete Key + [actionKeys "MoveRight", _interrupt] call _addArray; // End Key + + [actionKeys "MoveForward", _interrupt] call _addArray; // W / Up Arrow Keys + [actionKeys "MoveBack", _interrupt] call _addArray; // S / Down Arrow Keys + [actionKeys "TurnLeft", _interrupt] call _addArray; // A / Left Arrow Keys + [actionKeys "TurnRight", _interrupt] call _addArray; // D / Right Arrow Keys + // keep these arrow keys directly below the move/turn action key entries + [[DIK_UP], _dze_up] call _addArray; + [[DIK_DOWN], _dze_down] call _addArray; + [[DIK_LEFT], _dze_left] call _addArray; + [[DIK_RIGHT], _dze_right] call _addArray; + [actionKeys "PushToTalk", _noise] call _addArray; [actionKeys "PushToTalkAll", _noise] call _addArray; [actionKeys "PushToTalkCommand", _noise] call _addArray; @@ -229,32 +346,34 @@ if (isNil "keyboard_keys") then { [actionKeys "PushToTalkGroup", _noise] call _addArray; [actionKeys "PushToTalkSide", _noise] call _addArray; [actionKeys "PushToTalkVehicle", _noise] call _addArray; - [actionKeys "VoiceOverNet", _noise] call _addArray; + [actionKeys "VoiceOverNet", _noise] call _addArray; [actionKeys "NextChannel", _noise] call _addArray; [actionKeys "PrevChannel", _noise] call _addArray; - [actionKeys "Chat", _noise] call _addArray; - [actionKeys "User20", _journal] call _addArray; - [actionKeys "Diary", _journal] call _addArray; - [actionKeys "NetworkStats", _journal] call _addArray; + [actionKeys "Chat", _noise] call _addArray; + [actionKeys "User20", _journal] call _addArray; + [actionKeys "Diary", _journal] call _addArray; + [actionKeys "NetworkStats", _journal] call _addArray; [[DIK_F1], _muteSound] call _addArray; [[DIK_F3], _statusUI] call _addArray; - [[DIK_F4], {if (diag_tickTime - dayz_lastSave > 10) then {call player_forceSave;};_handled = true;}] call _addArray; - [[DIK_TAB,DIK_DELETE], _forcesave] call _addArray; - [actionKeys "LeanLeft", {DZE_4 = true; dayz_dodge = true;}] call _addArray; + [[DIK_F5], {if (diag_tickTime - dayz_lastSave > 10) then {call player_forceSave;};_handled = true;}] call _addArray; +// [[DIK_TAB, DIK_DELETE], {if (isNil "DZE_buildItem") then {call _forcesave;}}] call _addArray; + [[DIK_TAB], _dze_tab] call _addArray; + + [actionKeys "LeanLeft", {DZE_4 = true; dayz_dodge = true;}] call _addArray; [actionKeys "LeanRight", {DZE_6 = true; dayz_dodge = true;}] call _addArray; - [actionKeys "GetOver", _bunnyhop] call _addArray; // V - [actionKeys "ForceCommandingMode", {DZE_5 = true;_handled = true;}] call _addArray; - [[ DIK_F9,DIK_F10,DIK_F11,DIK_F12, - DIK_F8,DIK_F7,DIK_F6,DIK_F5, - DIK_F2,DIK_9, - DIK_8,DIK_7,DIK_6,DIK_5,DIK_4,DIK_BACK], _block] call _addArray; + + [[DIK_Q], _dze_q] call _addArray; + [[DIK_E], _dze_e] call _addArray; + + [actionKeys "GetOver", _bunnyhop] call _addArray; // V + [actionKeys "ForceCommandingMode", {DZE_5 = true; _handled = true;}] call _addArray; + [[DIK_F2, DIK_F6, DIK_F7, DIK_F8, DIK_F9, DIK_F10, DIK_F11, DIK_F12, DIK_4, DIK_5, DIK_6, DIK_7, DIK_8, DIK_9], _block] call _addArray; if (dayz_groupSystem) then { [[DIK_F5], _openGroups] call _addArray; - [[DIK_LWIN,DIK_RWIN], {dayz_groupNameTags = !dayz_groupNameTags;_handled = true;}] call _addArray; + [[DIK_LWIN, DIK_RWIN], {dayz_groupNameTags = !dayz_groupNameTags; _handled = true;}] call _addArray; [actionKeys "TacticalView", _block] call _addArray; }; [actionKeys "DSInterface", _block] call _addArray; - [[DIK_P], {if (_shiftState) then {_handled = true;};}] call _addArray; //diag_log "keyboard_keys reset"; };