Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <macro.h>
- /*
- File: fn_keyHandler.sqf
- Author: Bryan "Tonic" Boardwine
- Description:
- Main key handler for event 'keyDown'
- */
- private ["_handled","_shift","_alt","_code","_ctrl","_alt","_ctrlKey","_veh","_locked","_interactionKey","_mapKey","_interruptionKeys"];
- _ctrl = _this select 0;
- _code = _this select 1;
- _shift = _this select 2;
- _ctrlKey = _this select 3;
- _alt = _this select 4;
- _speed = speed cursorTarget;
- _handled = false;
- _interactionKey = if(count (actionKeys "User10") == 0) then {219} else {(actionKeys "User10") select 0};
- _mapKey = actionKeys "ShowMap" select 0;
- //hintSilent str _code;
- _interruptionKeys = [17,30,31,32]; //A,S,W,D
- //Vault handling...
- if((_code in (actionKeys "GetOver") || _code in (actionKeys "salute")) && {(player getVariable ["restrained",false])}) exitWith {
- true;
- };
- if(life_action_inUse) exitWith {
- if(!life_interrupted && _code in _interruptionKeys) then {life_interrupted = true;};
- _handled;
- };
- //Hotfix for Interaction key not being able to be bound on some operation systems.
- if(count (actionKeys "User10") != 0 && {(inputAction "User10" > 0)}) exitWith {
- //Interaction key (default is Left Windows, can be mapped via Controls -> Custom -> User Action 10)
- if(!life_action_inUse) then {
- [] spawn
- {
- private["_handle"];
- _handle = [] spawn life_fnc_actionKeyHandler;
- waitUntil {scriptDone _handle};
- life_action_inUse = false;
- };
- };
- true;
- };
- switch (_code) do
- {
- //Space key for Jumping
- case 57:
- {
- if(isNil "jumpActionTime") then {jumpActionTime = 0;};
- if(_shift && {animationState player != "AovrPercMrunSrasWrflDf"} && {isTouchingGround player} && {stance player == "STAND"} && {speed player > 2} && {!life_is_arrested} && {(velocity player) select 2 < 2.5} && {time - jumpActionTime > 1.5}) then {
- jumpActionTime = time; //Update the time.
- [player,true] spawn life_fnc_jumpFnc; //Local execution
- [[player,false],"life_fnc_jumpFnc",nil,FALSE] call life_fnc_MP; //Global execution
- _handled = true;
- };
- };
- //Map Key
- case _mapKey:
- {
- switch (playerSide) do
- {
- case west: {if(!visibleMap) then {[] spawn life_fnc_copMarkers;}};
- case independent: {if(!visibleMap) then {[] spawn life_fnc_medicMarkers;}};
- case civilian: {if(!visibleMap) then {[] spawn life_fnc_gangMarkers;}};
- };
- };
- //Surrender... shift + g
- case 34:
- {
- if(_shift) then {_handled = true;};
- if (_shift) then
- {
- if (vehicle player == player && !(player getVariable ["restrained", false]) && (animationState player) != "Incapacitated" && !life_istazed) then
- {
- if (player getVariable ["surrender", false]) then
- {
- player setVariable ["surrender", false, true];
- } else
- {
- [] spawn life_fnc_surrender;
- };
- };
- };
- };
- //Holster / recall weapon.
- case 35:
- {
- if(_shift && !_ctrlKey && currentWeapon player != "") then {
- life_curWep_h = currentWeapon player;
- player action ["SwitchWeapon", player, player, 100];
- player switchcamera cameraView;
- };
- if(!_shift && _ctrlKey && !isNil "life_curWep_h" && {(life_curWep_h != "")}) then {
- if(life_curWep_h in [primaryWeapon player,secondaryWeapon player,handgunWeapon player]) then {
- player selectWeapon life_curWep_h;
- };
- };
- };
- //Interaction key (default is Left Windows, can be mapped via Controls -> Custom -> User Action 10)
- case _interactionKey:
- {
- if(!life_action_inUse) then {
- [] spawn
- {
- private["_handle"];
- _handle = [] spawn life_fnc_actionKeyHandler;
- waitUntil {scriptDone _handle};
- life_action_inUse = false;
- };
- };
- };
- //Knock out - Shift + T
- case 47:
- {
- if(_shift) then {_handled = true;};
- if(_shift && playerSide == civilian && !isNull cursorTarget && cursorTarget isKindOf "Man" && isPlayer cursorTarget && alive cursorTarget && cursorTarget distance player < 4 && speed cursorTarget < 1) then
- {
- if((animationState cursorTarget) != "Incapacitated" && (currentWeapon player == primaryWeapon player OR currentWeapon player == handgunWeapon player) && currentWeapon player != "" && !life_knockout && !(player getVariable["restrained",false]) && !life_istazed) then
- {
- [cursorTarget] spawn life_fnc_knockoutAction;
- };
- };
- };
- //Restraining (Shift + R)
- case 19:
- {
- if(_shift) then {_handled = true;};
- if(_shift && playerSide == west && !isNull cursorTarget && cursorTarget isKindOf "Man" && (isPlayer cursorTarget) && (side cursorTarget in [civilian,independent]) && alive cursorTarget && cursorTarget distance player < 3.5 && !(cursorTarget getVariable "Escorting") && !(cursorTarget getVariable "restrained") && speed cursorTarget < 1) then
- {
- [] call life_fnc_restrainAction;
- };
- };
- //T Key (Trunk)
- case 20:
- {
- if(!_alt && !_ctrlKey) then
- {
- if(vehicle player != player && alive vehicle player) then
- {
- if((vehicle player) in life_vehicles) then
- {
- [vehicle player] call life_fnc_openInventory;
- };
- }
- else
- {
- if((cursorTarget isKindOf "Car" OR cursorTarget isKindOf "Air" OR cursorTarget isKindOf "Ship" OR cursorTarget isKindOf "House_F") && player distance cursorTarget < 7 && vehicle player == player && alive cursorTarget) then
- {
- if(cursorTarget in life_vehicles OR {!(cursorTarget getVariable ["locked",true])}) then
- {
- [cursorTarget] call life_fnc_openInventory;
- };
- };
- };
- };
- };
- //L Key?
- case 38:
- {
- //If cop run checks for turning lights on.
- if(_shift && playerSide in [west,independent]) then {
- if(vehicle player != player && (typeOf vehicle player) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","C_Hatchback_01_F"]) then {
- if(!isNil {vehicle player getVariable "lights"}) then {
- if(playerSide == west) then {
- [vehicle player] call life_fnc_sirenLights;
- } else {
- [vehicle player] call life_fnc_sirenLights;
- };
- _handled = true;
- };
- };
- };
- if(!_alt && !_ctrlKey) then { [] call life_fnc_radar; };
- };
- //F Key
- case 33:
- {
- if (vehicle player != player && (typeOf vehicle player) in["C_Offroad_01_repair_F","B_Truck_01_transport_F"]) exitWith {hintSilent "Sirene nicht verfügbar"};
- if(playerSide in [west,independent] && vehicle player != player && !life_siren_active && ((driver vehicle player) == player)) then
- {
- [] spawn
- {
- life_siren_active = true;
- uiSleep 4.5;
- life_siren_active = false;
- };
- _veh = vehicle player;
- if(isNil {_veh getVariable "siren"}) then {_veh setVariable["siren",false,true];};
- if((_veh getVariable "siren")) then
- {
- titleText ["Sirene AUS","PLAIN"];
- _veh setVariable["siren",false,true];
- }
- else
- {
- titleText ["Sirene AN","PLAIN"];
- _veh setVariable["siren",true,true];
- if(playerSide == west) then {
- [[_veh],"life_fnc_copSiren",nil,true] spawn life_fnc_MP;
- } else {
- [[_veh],"life_fnc_medicSiren",nil,true] spawn life_fnc_MP;
- };
- };
- };
- };
- //Ö Key
- case 39:
- {
- if(playerSide in [west] && vehicle player != player && !life_siren_active && ((driver vehicle player) == player)) then
- {
- [] spawn
- {
- life_siren_active = true;
- uiSleep 7;
- life_siren_active = false;
- };
- _veh = vehicle player;
- if(isNil {_veh getVariable "siren2"}) then {_veh setVariable["siren2",false,true];};
- if((_veh getVariable "siren2")) then
- {
- titleText ["Warnung AUS","PLAIN"];
- _veh setVariable["siren2",false,true];
- }
- else
- {
- titleText ["Warnung AN","PLAIN"];
- _veh setVariable["siren2",true,true];
- if(playerSide == west) then {
- [[_veh],"life_fnc_copSiren2",nil,true] spawn life_fnc_MP;
- } else {
- [[_veh],"life_fnc_medicSiren",nil,true] spawn life_fnc_MP;
- };
- };
- };
- };
- //Shift+O Zipties
- case 24:
- {
- if(_shift) then {_handled = true;};
- if(playerSide in [west,independent]) exitWith {};
- if !(license_civ_rebel) exitWith { hintSilent "You need a rebel license !"; };
- if(_shift && playerSide == civilian && !isNull cursorTarget && cursorTarget isKindOf "Man" && (isPlayer cursorTarget) && (side cursorTarget in [civilian,east]) && alive cursorTarget && cursorTarget distance player < 3.5 && !(cursorTarget getVariable "Escorting") && !(cursorTarget getVariable "restrained") && speed cursorTarget < 1) then
- {
- if([false,"zipties",1] call life_fnc_handleInv) then
- {
- [] call life_fnc_restrainAction;
- hintSilent "You have cuffed him! ";
- } else {
- hintSilent "You don't have zipties";
- };
- };
- };
- //U Key
- case 22:
- {
- if(!_alt && !_ctrlKey) then {
- if(vehicle player == player) then {
- _veh = cursorTarget;
- } else {
- _veh = vehicle player;
- };
- if(_veh isKindOf "House_F" && playerSide == civilian) then {
- if(_veh in life_vehicles && player distance _veh < 8) then {
- _door = [_veh] call life_fnc_nearestDoor;
- if(_door == 0) exitWith {hintSilent "You're not near a door"};
- _locked = _veh getVariable [format["bis_disabled_Door_%1",_door],0];
- if(_locked == 0) then {
- _veh setVariable[format["bis_disabled_Door_%1",_door],1,true];
- _veh animate [format["door_%1_rot",_door],0];
- systemChat "The door has been locked";
- } else {
- _veh setVariable[format["bis_disabled_Door_%1",_door],0,true];
- _veh animate [format["door_%1_rot",_door],1];
- systemChat "The door has been opened";
- };
- };
- } else {
- _locked = locked _veh;
- if(_veh in life_vehicles && player distance _veh < 8) then {
- if(_locked == 2) then {
- if(local _veh) then {
- _veh lock 0;
- } else {
- [[_veh,0],"life_fnc_lockVehicle",_veh,false] spawn life_fnc_MP;
- };
- systemChat "You have unlocked the vehicle";
- [[_veh],"life_fnc_LockCarSound",nil,true] spawn life_fnc_MP;
- } else {
- if(local _veh) then {
- _veh lock 2;
- } else {
- [[_veh,2],"life_fnc_lockVehicle",_veh,false] spawn life_fnc_MP;
- };
- systemChat "You have locked the vehicle";
- [[_veh],"life_fnc_UnLockCarSound",nil,true] spawn life_fnc_MP;
- };
- };
- };
- };
- };
- //EMP Konsole - K
- case 37:
- {
- if (!_shift && !_alt && !_ctrlKey && (playerSide == west) && (vehicle player != player && (typeOf vehicle player) in ["B_Heli_Light_01_F"])) then
- {
- [] call life_fnc_openEmpMenu; [_this] call life_fnc_isEmpOperator;
- };
- };
- //Pickaxe - Q
- case 41:
- {
- if((!life_action_inUse) && (vehicle player == player) ) then
- {
- {
- _str = [_x] call life_fnc_varToStr;
- _val = missionNameSpace getVariable _x;
- if(_val > 0 ) then
- {
- if( _str == "Spitzhacke" || _str == "pickaxe" ) then
- {
- [] spawn life_fnc_pickAxeUse;
- };
- };
- } foreach life_inv_items;
- }
- };
- //SmartPhone Shift + 1
- case 2:
- {
- if(_shift) then {_handled = true;};
- if (_shift) then
- {
- if(!_alt && !_ctrlKey && !dialog) then
- {
- [] call life_fnc_callCellPhone;
- };
- };
- };
- //Wanted List Shift + 2
- case 3:
- {
- if(playerSide in [independent,civilian]) exitWith {};
- if(_shift) then {_handled = true;};
- if (_shift) then
- {
- if(!_alt && !_ctrlKey && !dialog) then
- {
- [] call life_fnc_wantedMenu;
- };
- };
- };
- //Wanted List Shift + 3
- case 4:
- {
- if(playerSide in [independent,civilian]) exitWith {};
- if(_shift) then {_handled = true;};
- if (_shift) then
- {
- if(!_alt && !_ctrlKey && !dialog) then
- {
- createDialog "life_wantedadd2";
- };
- };
- };
- // O Schranken öffnen
- case 40:
- {
- if (!_shift && !_alt && !_ctrlKey && (playerSide in [west,independent]) && (vehicle player != player)) then {
- [] call life_fnc_copOpener;
- };
- };
- //Ü Nagelbänder
- case 26:
- {
- if(vehicle player != player) exitWith {hintSilent "You're in a vehicle!"};
- if(playerSide == west) then {
- if(!isNull life_spikestrip) exitWith {hintSilent "You have placed a SpikeStrip"};
- if(([false,"spikeStrip",1] call life_fnc_handleInv)) then
- {
- [] spawn life_fnc_spikeStrip;
- };
- };
- };
- case 59: // F1
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- hintc "This button got blocked from the server";
- _handled = false;
- };
- case 60: // F2
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- hintc "This button got blocked from the server";
- _handled = false;
- };
- case 61: // F3
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 62: // F4
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 63: // F5
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 64: //F6 key
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 65: // F7 Key
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 66: //F8 key
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 67: //F9 key
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 68: //10 key
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- case 211: //DELETE key
- {
- if(__GETC__(life_adminlevel) > 0) exitWith {hintSilent "AdminLogin successfull"};
- closeDialog 0;
- _handled = false;
- };
- };
- _handled;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement