/**
* ExileClient_construction_beginExistingObject
*
* Edited for Exile by _sinworks
*
* Exile Mod
* www.exilemod.com
* © 2015 Exile Mod Team
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
*/
private["_stopPropagation","_caller","_keyCode","_shiftState","_controlState","_altState","_posObject","_step"];
_stopPropagation = false;
_caller = _this select 0;
_keyCode = _this select 1;
_shiftState = _this select 2;
_controlState = _this select 3;
_altState = _this select 4;
if (_keyCode in (actionKeys "TacticalView")) exitWith {true};
if (_keyCode in (actionKeys "User1") && !(_keyCode isEqualTo 0x02)) exitWith
{
if !(ExileClientIsHandcuffed) then
{
call ExileClient_object_vehicle_interaction_keyLock;
};
true
};
if (_keyCode in (actionKeys "User2")) exitWith
{
if (ExileClientAllowPartyMarkers) then
{
if !(ExileClientPartyID isEqualTo -1) then
{
if !(ExileClientIsHandcuffed) then
{
call ExileClient_system_party_updateMyMarker;
};
};
};
true
};
switch (_keyCode) do
{
case 0x29:
{
call ExileClient_gui_hud_toggleStatsBar;
_stopPropagation = true;
};
case 0x11,
case 0x1E,
case 0x1F,
case 0x20:
{
if (ExileClientIsAutoRunning) then
{
call ExileClient_system_autoRun_stop;
_stopPropagation = true;
};
};
case 0x0B:
{
if !(ExileClientIsHandcuffed) then
{
call ExileClient_system_autoRun_toggle;
};
_stopPropagation = true;
};
case 0x09: { _stopPropagation = true; };
case 0x0A: { _stopPropagation = true; };
case 0x3B: { _stopPropagation = true; };
case 0x3C: { _stopPropagation = true; };
case 0x3D: { _stopPropagation = true; };
case 0x3E: { _stopPropagation = true; };
case 0x41: { _stopPropagation = true; };
case 0x42: { _stopPropagation = true; };
case 0x43: { _stopPropagation = true; };
case 0x44: { _stopPropagation = true; };
case 0x57: { _stopPropagation = true; };
case 0x58: { _stopPropagation = true; };
case 0x0E: { _stopPropagation = true; };
case 0x02:
{
if !(ExileClientIsHandcuffed || ExileIsPlayingRussianRoulette) then
{
if (ExileClientIsInConstructionMode) then
{
ExileClientConstructionObject setObjectTextureGlobal [0, "#(argb,2,2,1)color(0.7,0.93,0,0.6,ca)"];
ExileClientConstructionCurrentSnapToObject = objNull;
ExileClientConstructionIsInSelectSnapObjectMode = false;
ExileClientConstructionPossibleSnapPositions = [];
ExileClientConstructionMode = 1;
[] call ExileClient_gui_constructionMode_update;
}
else
{
if (primaryWeapon player != "") then
{
if (primaryWeapon player != currentWeapon player) then
{
player selectWeapon (primaryWeapon player);
};
};
};
};
_stopPropagation = true;
};
case 0x03:
{
if !(ExileClientIsHandcuffed || ExileIsPlayingRussianRoulette) then
{
if (ExileClientIsInConstructionMode) then
{
ExileClientConstructionObject setObjectTextureGlobal [0, "#(argb,2,2,1)color(0.7,0.93,0,0.6,ca)"];
ExileClientConstructionCurrentSnapToObject = objNull;
ExileClientConstructionIsInSelectSnapObjectMode = false;
ExileClientConstructionPossibleSnapPositions = [];
ExileClientConstructionMode = 2;
[] call ExileClient_gui_constructionMode_update;
}
else
{
if (handgunWeapon player != "") then
{
if (handgunWeapon player != currentWeapon player) then
{
player selectWeapon (handgunWeapon player);
};
};
};
};
_stopPropagation = true;
};
case 0x04:
{
if !(ExileClientIsHandcuffed || ExileIsPlayingRussianRoulette) then
{
if (ExileClientIsInConstructionMode) then
{
if (ExileClientConstructionSupportSnapMode) then
{
if (ExileClientConstructionMode != 3) then
{
ExileClientConstructionCurrentSnapToObject = objNull;
ExileClientConstructionPossibleSnapPositions = [];
["InfoTitleAndText", ["Snap Mode", "Look at the object you want to snap to, press SPACE to lock on it and then move your object next to a snap point. Press SPACE again to place the object."]] call ExileClient_gui_toaster_addTemplateToast;
};
ExileClientConstructionMode = 3;
ExileClientConstructionIsInSelectSnapObjectMode = true;
[] call ExileClient_gui_constructionMode_update;
};
}
else
{
if (secondaryWeapon player != "") then
{
if (secondaryWeapon player != currentWeapon player) then
{
player selectWeapon (secondaryWeapon player);
};
};
};
};
_stopPropagation = true;
};
case 0x05:
{
if !(ExileClientIsHandcuffed || ExileIsPlayingRussianRoulette) then
{
if (ExileClientIsInConstructionMode) then
{
if !(ExileClientConstructionKitClassName isEqualTo "Exile_Item_Flag") then
{
ExileClientConstructionModePhysx = !ExileClientConstructionModePhysx;
[] call ExileClient_gui_constructionMode_update;
};
}
else
{
if (currentWeapon player != "") then
{
ExileClientPlayerHolsteredWeapon = currentWeapon player;
player action["switchWeapon", player, player, 100];
}
else
{
if (ExileClientPlayerHolsteredWeapon != "") then
{
player selectWeapon ExileClientPlayerHolsteredWeapon;
};
};
};
};
_stopPropagation = true;
};
case 0x06:
{
if (ExileClientIsInConstructionMode) then
{
ExileClientConstructionShowHint = !ExileClientConstructionShowHint;
[] call ExileClient_gui_constructionMode_update;
}
else
{
call ExileClient_system_music_earplugs_toggle;
};
_stopPropagation = true;
};
case 0x07:
{
if (ExileClientIsInConstructionMode) then
{
if(ExileClientConstructionLock)then
{
ExileClientConstructionLock = false;
_posObject = position ExileClientConstructionObject;
ExileClientConstructionOffset = player worldToModel _posObject;
ExileClientConstructionRotation = (getDir ExileClientConstructionObject) - (getDir player);
}
else
{
ExileClientConstructionLock = true;
};
}
else
{
if (!ExileClientXM8IsVisible) then
{
if ("Exile_Item_XM8" in (assignedItems player)) then
{
if (alive player) then
{
[] call ExileClient_gui_xm8_show;
};
};
};
};
_stopPropagation = true;
};
case 0x39:
{
if (ExileIsPlayingRussianRoulette) then
{
if (ExileRussianRouletteCanFire) then
{
[] spawn ExileClient_system_russianRoulette_fire;
};
}
else
{
if (ExileClientIsInConstructionMode) then
{
if (ExileClientConstructionMode == 3) then
{
if (ExileClientConstructionIsInSelectSnapObjectMode) then
{
if !(isNull ExileClientConstructionCurrentSnapToObject) then
{
ExileClientConstructionIsInSelectSnapObjectMode = false;
[] call ExileClient_gui_constructionMode_update;
};
}
else
{
if (ExileClientConstructionCanPlaceObject) then
{
ExileClientConstructionResult = 1;
};
};
}
else
{
if (ExileClientConstructionCanPlaceObject) then
{
ExileClientConstructionResult = 1;
};
};
_stopPropagation = true;
};
};
};
case 0x01:
{
if (ExileIsPlayingRussianRoulette) then
{
_stopPropagation = true;
}
else
{
if (ExileClientIsInConstructionMode) then
{
_stopPropagation = true;
};
};
};
case 0x08:
{
if !(ExileClientIsHandcuffed) then
{
if (ExileClientIsInConstructionMode) then
{
if(ExileClientConstructionVectorMode) then
{
ExileClientConstructionVectorMode = false;
}
else
{
ExileClientConstructionVectorMode = true;
};
[] call ExileClient_gui_constructionMode_update;
};
};
_stopPropagation = true;
};
case 0x10:
{
if (ExileClientIsInConstructionMode) then
{
_step = 45;
if (_shiftState) then
{
_step = 90;
}
else
{
if (_controlState) then
{
_step = 22.5;
};
};
if(ExileClientConstructionVectorMode) then
{
_step = 22.5;
if (_shiftState) then
{
_step = 45;
}
else
{
if (_controlState) then
{
_step = 1;
};
};
ExileClientConstructionBank = ExileClientConstructionBank - _step;
}
else
{
ExileClientConstructionRotation = (ExileClientConstructionRotation - _step + 360) % 360;
};
[] call ExileClient_gui_constructionMode_update;
_stopPropagation = true;
};
};
case 0x12:
{
if (ExileClientIsInConstructionMode) then
{
_step = 45;
if (_shiftState) then
{
_step = 90;
}
else
{
if (_controlState) then
{
_step = 22.5;
};
};
if(ExileClientConstructionVectorMode) then
{
_step = 22.5;
if (_shiftState) then
{
_step = 45;
}
else
{
if (_controlState) then
{
_step = 1;
};
};
//Tilt right
ExileClientConstructionBank = ExileClientConstructionBank + _step;
}
else
{
ExileClientConstructionRotation = (ExileClientConstructionRotation + _step + 360) % 360;
};
[] call ExileClient_gui_constructionMode_update;
_stopPropagation = true;
};
};
case 0x19:
{
if (ExileClientIsInBush) then
{
call ExileClient_object_bush_detach;
_stopPropagation = true;
};
};
case 0x31:
{
if!(isNull ExileClientCameraParentObject)then
{
if(ExileClientCameraNVG)then
{
camUseNVG false;
}
else
{
camUseNVG true;
};
ExileClientCameraNVG = !ExileClientCameraNVG;
_stopPropagation = true;
};
};
case 0xC9:
{
if (ExileClientIsInConstructionMode) then
{
_step = 0.25;
if (_shiftState) then
{
_step = 1;
}
else
{
if (_controlState) then
{
_step = 0.025;
};
};
if(ExileClientConstructionVectorMode) then
{
_step = 22.5;
if (_shiftState) then
{
_step = 45;
}
else
{
if (_controlState) then
{
_step = 1;
};
};
//Tilt forward
ExileClientConstructionPitch = ExileClientConstructionPitch + _step;
}
else
{
ExileClientConstructionOffset set [2, ((((ExileClientConstructionOffset select 2) + _step) min 6) max -3) ];
};
[] call ExileClient_gui_constructionMode_update;
_stopPropagation = true;
};
};
case 0xD1:
{
if (ExileClientIsInConstructionMode) then
{
_step = 0.25;
if (_shiftState) then
{
_step = 1;
}
else
{
if (_controlState) then
{
_step = 0.025;
};
};
if(ExileClientConstructionVectorMode) then
{
_step = 22.5;
if (_shiftState) then
{
_step = 45;
}
else
{
if (_controlState) then
{
_step = 1;
};
};
//Tilt backward
ExileClientConstructionPitch = ExileClientConstructionPitch - _step;
}
else
{
ExileClientConstructionOffset set [2, ((((ExileClientConstructionOffset select 2) - _step) min 6) max -3) ];
[] call ExileClient_gui_constructionMode_update;
};
[] call ExileClient_gui_constructionMode_update;
_stopPropagation = true;
};
};
case 0xC7:
{
if (ExileClientIsInConstructionMode) then
{
_step = 0.25;
if (_shiftState) then
{
_step = 1;
}
else
{
if (_controlState) then
{
_step = 0.025;
};
};
ExileClientConstructionOffset set [1, (((ExileClientConstructionOffset select 1) + _step) min 6) max ExileClientConstructionBoundingRadius ];
[] call ExileClient_gui_constructionMode_update;
_stopPropagation = true;
};
};
case 0xCF:
{
if (ExileClientIsInConstructionMode) then
{
_step = 0.25;
if (_shiftState) then
{
_step = 1;
}
else
{
if (_controlState) then
{
_step = 0.025;
};
};
ExileClientConstructionOffset set [1, (((ExileClientConstructionOffset select 1) - _step) min 6) max ExileClientConstructionBoundingRadius ];
[] call ExileClient_gui_constructionMode_update;
_stopPropagation = true;
};
};
case 0xDB:
{
switch (ExilePartyEspMode) do
{
case 0: { ExilePartyEspMode = 1; };
case 1: { ExilePartyEspMode = 2; };
case 2: { ExilePartyEspMode = 0; };
};
_stopPropagation = true;
};
};
_stopPropagation
Comments