mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
port movement
This commit is contained in:
parent
8683667d24
commit
e67602d76e
Binary file not shown.
@ -1,4 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
//0 spawn compile preprocessFileLineNumbers "\AGM_Movement\fatigue.sqf";
|
|
||||||
0 spawn compile preprocessFileLineNumbers "\AGM_Movement\showWeight.sqf";
|
|
@ -1,223 +0,0 @@
|
|||||||
// PATCH CONFIG
|
|
||||||
class CfgPatches {
|
|
||||||
class AGM_Movement {
|
|
||||||
units[] = {};
|
|
||||||
weapons[] = {};
|
|
||||||
requiredVersion = 0.10;
|
|
||||||
requiredAddons[] = {AGM_Core};
|
|
||||||
version = "0.95";
|
|
||||||
versionStr = "0.95";
|
|
||||||
versionAr[] = {0,95,0};
|
|
||||||
author[] = {"commy2", "KoffeinFlummi", "Tachii"};
|
|
||||||
authorUrl = "https://github.com/commy2/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgFunctions {
|
|
||||||
class AGM_Movement {
|
|
||||||
class AGM_Movement {
|
|
||||||
file = "AGM_Movement\functions";
|
|
||||||
class blinking;
|
|
||||||
class canClimb;
|
|
||||||
class climb;
|
|
||||||
class fatigueModule;
|
|
||||||
class heartbeat;
|
|
||||||
class getWeight;
|
|
||||||
class handleClimb;
|
|
||||||
class recoil;
|
|
||||||
class stumble;
|
|
||||||
class vision;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class Extended_PostInit_EventHandlers {
|
|
||||||
class AGM_Movement {
|
|
||||||
clientInit = "call compile preprocessFileLineNumbers '\AGM_Movement\clientInit.sqf'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_Core_Default_Keys {
|
|
||||||
class climb {
|
|
||||||
displayName = "$STR_AGM_Movement_Climb";
|
|
||||||
condition = "_player == _vehicle";
|
|
||||||
statement = "[_player] call AGM_Movement_fnc_climb";
|
|
||||||
key = 47;
|
|
||||||
shift = 0;
|
|
||||||
control = 1;
|
|
||||||
alt = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/*class CfgInventoryGlobalVariable {
|
|
||||||
maxSoldierLoad = 1200;
|
|
||||||
};*/
|
|
||||||
|
|
||||||
class CfgFatigue {
|
|
||||||
MinValue1 = 0.2;
|
|
||||||
MinValue2 = 0.8;
|
|
||||||
NormalRunSpeed = 7.2;
|
|
||||||
TiredRunSpeedLimit = 0.8;
|
|
||||||
FrequencyMin = 0.2;
|
|
||||||
FrequencyMax = 1.0;
|
|
||||||
TotalLoadCoef = 1.1;
|
|
||||||
MaxDuty = 10;
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgSounds {
|
|
||||||
class AGM_Heartbeat {
|
|
||||||
name = "AGM_Heartbeat";
|
|
||||||
sound[] = {"AGM_Movement\sounds\heartbeat.ogg",1,1};
|
|
||||||
titles[] = {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_Core_Options {
|
|
||||||
class useImperial {
|
|
||||||
displayName = "$STR_AGM_Movement_UseImperial";
|
|
||||||
default = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// leaving this for compatibility
|
|
||||||
class CfgVehicles {
|
|
||||||
class Module_F;
|
|
||||||
class AGM_ModuleFatigue: Module_F {
|
|
||||||
author = "AGM Team";
|
|
||||||
category = "AGM";
|
|
||||||
displayName = "Fatigue System";
|
|
||||||
function = "AGM_Movement_fnc_fatigueModule";
|
|
||||||
scope = 2;
|
|
||||||
isGlobal = 1;
|
|
||||||
icon = "\AGM_Movement\UI\IconFatigue_ca.paa";
|
|
||||||
class Arguments {
|
|
||||||
class CoefFatigue {
|
|
||||||
displayName = "Getting Tired Coef.";
|
|
||||||
description = "Multiplier for the rate of getting tired. Default: 1";
|
|
||||||
defaultValue = 1;
|
|
||||||
};
|
|
||||||
class CoefRecover {
|
|
||||||
displayName = "Recover Coef.";
|
|
||||||
description = "Multiplier for the time to rest after getting tired. Default: 1";
|
|
||||||
defaultValue = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgMovesBasic {
|
|
||||||
class ManActions {
|
|
||||||
AGM_Climb = "AGM_Climb";
|
|
||||||
};
|
|
||||||
|
|
||||||
class Actions {
|
|
||||||
class RifleStandActionsNoAdjust;
|
|
||||||
class RifleLowStandActionsNoAdjust;
|
|
||||||
|
|
||||||
// WEAPON RAISED - RUNNING
|
|
||||||
class RifleStandActionsRunF: RifleStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
class RifleStandActionsRunFL: RifleStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
class RifleStandActionsRunFR: RifleStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
// WEAPON RAISED - SPRINTING
|
|
||||||
class RifleStandEvasiveActionsF: RifleStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
class RifleStandEvasiveActionsFL: RifleStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
class RifleStandEvasiveActionsFR: RifleStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
// WEAPON LOWERED - RUNNING
|
|
||||||
class RifleLowStandActionsRunF: RifleLowStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
class RifleLowStandActionsRunFL: RifleLowStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
class RifleLowStandActionsRunFR: RifleLowStandActionsNoAdjust {
|
|
||||||
getOver = "AovrPercMrunSrasWrflDf";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgMovesMaleSdr: CfgMovesBasic {
|
|
||||||
class StandBase;
|
|
||||||
class States {
|
|
||||||
// better slow walk with lowered rifle animation
|
|
||||||
class AmovPercMstpSrasWrflDnon;
|
|
||||||
class AmovPercMrunSrasWrflDf: AmovPercMstpSrasWrflDnon {
|
|
||||||
InterpolateTo[] = {"AovrPercMrunSrasWrflDf",0.22,"AmovPercMrunSlowWrflDf",0.025,"AmovPercMwlkSrasWrflDf",0.025,"AmovPknlMrunSrasWrflDf",0.03,"AmovPercMrunSlowWrflDf_AmovPpneMstpSrasWrflDnon",0.02,"AmovPercMevaSrasWrflDf",0.025,"Unconscious",0.01,"AmovPercMtacSrasWrflDf",0.02,"AmovPercMrunSrasWrflDfl",0.02,"AmovPercMrunSrasWrflDfl_ldst",0.02,"AmovPercMrunSrasWrflDfr",0.02,"AmovPercMrunSrasWrflDfr_ldst",0.02,"AmovPercMstpSrasWrflDnon",0.02,"AmovPercMrunSrasWrflDl",0.02,"AmovPercMrunSrasWrflDbl",0.02,"AmovPercMrunSrasWrflDb",0.02,"AmovPercMrunSrasWrflDbr",0.02,"AmovPercMrunSrasWrflDr",0.02,"AmovPknlMstpSlowWrflDnon_relax",0.1,"AmovPercMrunSrasWrflDf_ldst",0.02,"AmovPercMrunSrasWrflDf",0.02};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AmovPercMstpSlowWrflDnon;
|
|
||||||
class AmovPercMwlkSlowWrflDf: AmovPercMstpSlowWrflDnon {
|
|
||||||
speed = 0.3; //0.206897;
|
|
||||||
file = "\A3\anims_f\Data\Anim\Sdr\Mov\Erc\Wlk\Low\Rfl\AmovPercMwlkSlowWrflDf_ver2";
|
|
||||||
leftHandIKCurve[] = {1};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDfl: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDfr: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDb: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDbl: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDbr: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDl: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
class AmovPercMwlkSlowWrflDr: AmovPercMwlkSlowWrflDf {
|
|
||||||
leftHandIKCurve[] = {};
|
|
||||||
};
|
|
||||||
|
|
||||||
// enable optics in prone left and right stance
|
|
||||||
class AidlPpneMstpSrasWrflDnon_G0S;
|
|
||||||
class AadjPpneMstpSrasWrflDleft: AidlPpneMstpSrasWrflDnon_G0S {
|
|
||||||
enableOptics = 1;
|
|
||||||
};
|
|
||||||
class AadjPpneMstpSrasWrflDright: AidlPpneMstpSrasWrflDnon_G0S {
|
|
||||||
enableOptics = 1;
|
|
||||||
};
|
|
||||||
class AadjPpneMstpSrasWrflDup;
|
|
||||||
class AadjPpneMstpSrasWrflDdown: AadjPpneMstpSrasWrflDup {
|
|
||||||
enableOptics = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
class AidlPpneMstpSrasWpstDnon_G0S;
|
|
||||||
class AadjPpneMstpSrasWpstDleft: AidlPpneMstpSrasWpstDnon_G0S {
|
|
||||||
enableOptics = 2;
|
|
||||||
};
|
|
||||||
class AadjPpneMstpSrasWpstDright: AidlPpneMstpSrasWpstDnon_G0S {
|
|
||||||
enableOptics = 2;
|
|
||||||
};
|
|
||||||
class AadjPpneMstpSrasWpstDup;
|
|
||||||
class AadjPpneMstpSrasWpstDdown: AadjPpneMstpSrasWpstDup {
|
|
||||||
enableOptics = 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
// climb animation
|
|
||||||
class AmovPercMstpSnonWnonDnon: StandBase {
|
|
||||||
ConnectTo[] += {"AGM_Climb",0.02};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInMedium;
|
|
||||||
class AGM_Climb: AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInMedium {
|
|
||||||
canReload = 0;
|
|
||||||
forceAim = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
@ -1,55 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
#define THRESHOLD_1 0.8
|
|
||||||
#define THRESHOLD_2 0.9
|
|
||||||
#define THRESHOLD_3 0.99
|
|
||||||
|
|
||||||
// init onEachFrame EH
|
|
||||||
AGM_UpdatePlayerFatigue_EHID = ["AGM_UpdatePlayerFatigue", "onEachFrame", {
|
|
||||||
_player = AGM_player;
|
|
||||||
|
|
||||||
// calc new fatigue
|
|
||||||
_fatigue = getFatigue _player;
|
|
||||||
_fatigueOld = _player getVariable ["AGM_Fatigue", getFatigue _player];
|
|
||||||
|
|
||||||
if (_fatigue > _fatigueOld) then {
|
|
||||||
_fatigue = _fatigueOld + (missionNamespace getVariable ["AGM_Fatigue_CoefFatigue", 1]) * (_fatigue - _fatigueOld) max 0 min 1;
|
|
||||||
} else {
|
|
||||||
_fatigue = _fatigueOld - (missionNamespace getVariable ["AGM_Fatigue_CoefRecover", 1]) * (_fatigueOld - _fatigue) max 0 min 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
_player setFatigue _fatigue;
|
|
||||||
_player setVariable ["AGM_Fatigue", _fatigue];
|
|
||||||
|
|
||||||
["Fatigue", _player, {getFatigue _this}] call AGM_Debug_fnc_log;
|
|
||||||
}] call BIS_fnc_addStackedEventHandler;
|
|
||||||
|
|
||||||
// init script ehids
|
|
||||||
_handleRecoil = scriptNull;
|
|
||||||
_handleBlinking = scriptNull;
|
|
||||||
_handleHeartbeat = scriptNull;
|
|
||||||
_handleStumble = scriptNull;
|
|
||||||
|
|
||||||
// apply fatigue effects
|
|
||||||
while {true} do {
|
|
||||||
_fatigue = getFatigue AGM_player;
|
|
||||||
|
|
||||||
if (_fatigue > THRESHOLD_1) then {
|
|
||||||
if (scriptDone _handleHeartbeat) then {
|
|
||||||
_handleHeartbeat = call AGM_Movement_fnc_heartbeat;
|
|
||||||
};
|
|
||||||
if (_fatigue > THRESHOLD_2) then {
|
|
||||||
if (scriptDone _handleBlinking) then {
|
|
||||||
_handleBlinking = call AGM_Movement_fnc_blinking;
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_fatigue > THRESHOLD_3) then {
|
|
||||||
if (scriptDone _handleStumble) then {
|
|
||||||
_handleStumble = call AGM_Movement_fnc_stumble;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sleep 0.5;
|
|
||||||
};
|
|
@ -1,23 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private "_script_handle";
|
|
||||||
|
|
||||||
_script_handle = _this spawn {
|
|
||||||
if (!isTouchingGround player) exitWith {};
|
|
||||||
|
|
||||||
_ppEffect = ppEffectCreate ["ColorCorrections", 1240];
|
|
||||||
_ppEffect ppEffectEnable true;
|
|
||||||
_ppEffect ppEffectForceInNVG true;
|
|
||||||
_ppEffect ppEffectAdjust [0, -1, 0, [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]];
|
|
||||||
_ppEffect ppEffectCommit 0.2;
|
|
||||||
sleep 0.2;
|
|
||||||
|
|
||||||
_ppEffect ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [0.5, 0.5, 0.5, 0.5]];
|
|
||||||
_ppEffect ppEffectCommit 0.2;
|
|
||||||
sleep 0.2;
|
|
||||||
|
|
||||||
_ppEffect ppEffectEnable false;
|
|
||||||
ppEffectDestroy _ppEffect;
|
|
||||||
sleep 2 + random 2;
|
|
||||||
};
|
|
||||||
_script_handle
|
|
@ -1,21 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private "_unit";
|
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
|
|
||||||
if !([_unit] call AGM_Movement_fnc_canClimb) exitWith {
|
|
||||||
[localize "STR_AGM_Movement_CanNotClimb"] call AGM_Core_fnc_displayTextStructured;
|
|
||||||
};
|
|
||||||
|
|
||||||
if !(_unit getVariable ["AGM_isClimbInit", false]) then {
|
|
||||||
_unit addEventHandler ["AnimDone", {
|
|
||||||
if (local (_this select 0) && {_this select 1 == "AGM_Climb"}) then {_this call AGM_Movement_fnc_handleClimb};
|
|
||||||
}];
|
|
||||||
|
|
||||||
_unit setVariable ["AGM_isClimbInit", true];
|
|
||||||
};
|
|
||||||
|
|
||||||
[_unit] call AGM_Core_fnc_fixLoweredRifleAnimation;
|
|
||||||
[_unit, "AmovPercMstpSnonWnonDnon", 2] call AGM_Core_fnc_doAnimation;
|
|
||||||
[_unit, "AGM_Climb", 0] call AGM_Core_fnc_doAnimation;
|
|
@ -1,14 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
_logic = _this select 0;
|
|
||||||
_units = _this select 1;
|
|
||||||
_activated = _this select 2;
|
|
||||||
|
|
||||||
if !(_activated) exitWith {};
|
|
||||||
|
|
||||||
AGM_Fatigue_Module = true;
|
|
||||||
|
|
||||||
AGM_Fatigue_CoefFatigue = parseNumber (_logic getVariable "CoefFatigue");
|
|
||||||
AGM_Fatigue_CoefRecover = parseNumber (_logic getVariable "CoefRecover");
|
|
||||||
|
|
||||||
diag_log text "[AGM]: Fatigue Module Initialized.";
|
|
@ -1,17 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
#define FACTOR_POUND_TO_KILOGRAMM 1/2.2046
|
|
||||||
|
|
||||||
private ["_unit", "_weight"];
|
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
|
|
||||||
_weight = loadAbs _unit * 0.1;
|
|
||||||
|
|
||||||
if (profileNamespace getVariable ["AGM_useImperial", false]) then {
|
|
||||||
_weight = format ["%1lb", (round (_weight * 100)) / 100];
|
|
||||||
} else {
|
|
||||||
_weight = format ["%1kg", (round (_weight * FACTOR_POUND_TO_KILOGRAMM * 100)) / 100];
|
|
||||||
};
|
|
||||||
|
|
||||||
_weight
|
|
@ -1,9 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private "_script_handle";
|
|
||||||
|
|
||||||
_script_handle = _this spawn {
|
|
||||||
playSound "AGM_Heartbeat";
|
|
||||||
sleep 8;
|
|
||||||
};
|
|
||||||
_script_handle
|
|
@ -1,15 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private "_script_handle";
|
|
||||||
|
|
||||||
_script_handle = _this spawn {
|
|
||||||
_recoilFactor = _this select 0;
|
|
||||||
_recoverThreshold = _this select 1;
|
|
||||||
|
|
||||||
player setUnitRecoilCoefficient (_recoilFactor * unitRecoilCoefficient player);
|
|
||||||
|
|
||||||
waitUntil {getFatigue player < _recoverThreshold};
|
|
||||||
|
|
||||||
player setUnitRecoilCoefficient (_recoilFactor / unitRecoilCoefficient player);
|
|
||||||
};
|
|
||||||
_script_handle
|
|
@ -1,16 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
_this spawn {
|
|
||||||
if (isTouchingGround player) then {
|
|
||||||
_animation = switch (currentWeapon player) do {
|
|
||||||
case "" : {"AmovPpneMstpSnonWnonDnon"};
|
|
||||||
case (primaryWeapon player) : {"AmovPpneMstpSrasWrflDnon"};
|
|
||||||
case (secondaryWeapon player) : {"AmovPpneMstpSrasWrflDnon"};
|
|
||||||
case (handgunWeapon player) : {"AmovPpneMstpSrasWpstDnon"};
|
|
||||||
case (binocular player) : {"AmovPpneMstpSrasWbinDnon"};
|
|
||||||
default {"AmovPpneMstpSnonWnonDnon"};
|
|
||||||
};
|
|
||||||
[player, _animation] call AGM_Core_fnc_doAnimation;
|
|
||||||
};
|
|
||||||
sleep 6;
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private "_script_handle";
|
|
||||||
|
|
||||||
_script_handle = _this spawn {
|
|
||||||
_ppEffect = ppEffectCreate ["radialBlur", 1241];
|
|
||||||
|
|
||||||
_ppEffect ppEffectEnable true;
|
|
||||||
_ppEffect ppEffectForceInNVG true;
|
|
||||||
_ppEffect ppEffectAdjust [0.01, 0.01, 0.1, 0.1];
|
|
||||||
_ppEffect ppEffectCommit 0;
|
|
||||||
|
|
||||||
sleep 0.5;
|
|
||||||
|
|
||||||
_ppEffect ppEffectEnable false;
|
|
||||||
ppEffectDestroy _ppEffect;
|
|
||||||
};
|
|
||||||
_script_handle
|
|
@ -1,10 +0,0 @@
|
|||||||
//by commy2
|
|
||||||
|
|
||||||
while {true} do {
|
|
||||||
waitUntil {!isNull (findDisplay 602)};
|
|
||||||
waitUntil {
|
|
||||||
_player = AGM_player;
|
|
||||||
findDisplay 602 displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [_player] call AGM_Core_fnc_getName, localize "STR_AGM_Movement_Weight", [_player] call AGM_Movement_fnc_getWeight];
|
|
||||||
isNull (findDisplay 602)
|
|
||||||
};
|
|
||||||
};
|
|
Binary file not shown.
@ -99,6 +99,14 @@ GVAR(OldPlayerTurret) = [ACE_player] call FUNC(getTurretIndex);
|
|||||||
["playerVisionModeChanged", [ACE_player, _newPlayerVisionMode]] call FUNC(localEvent);
|
["playerVisionModeChanged", [ACE_player, _newPlayerVisionMode]] call FUNC(localEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// "inventoryDisplayChanged" event
|
||||||
|
_newInventoryDisplayIsOpen = !(isNull findDisplay 602);
|
||||||
|
if !(_newInventoryDisplayIsOpen isEqualTo GVAR(OldInventoryDisplayIsOpen)) then {
|
||||||
|
// Raise ACE event locally
|
||||||
|
GVAR(OldInventoryDisplayIsOpen) = _newInventoryDisplayIsOpen;
|
||||||
|
["inventoryDisplayChanged", [ACE_player, _newInventoryDisplayIsOpen]] call FUNC(localEvent);
|
||||||
|
};
|
||||||
|
|
||||||
// "zeusDisplayChanged" event
|
// "zeusDisplayChanged" event
|
||||||
_newZeusDisplayIsOpen = !(isNull findDisplay 312);
|
_newZeusDisplayIsOpen = !(isNull findDisplay 312);
|
||||||
if !(_newZeusDisplayIsOpen isEqualTo GVAR(OldZeusDisplayIsOpen)) then {
|
if !(_newZeusDisplayIsOpen isEqualTo GVAR(OldZeusDisplayIsOpen)) then {
|
||||||
|
1
addons/movement/$PBOPREFIX$
Normal file
1
addons/movement/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
z\ace\addons\movement
|
12
addons/movement/CfgEventHandlers.hpp
Normal file
12
addons/movement/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
|
};
|
||||||
|
};
|
11
addons/movement/CfgFatigue.hpp
Normal file
11
addons/movement/CfgFatigue.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
class CfgFatigue {
|
||||||
|
MinValue1 = 0.2;
|
||||||
|
MinValue2 = 0.8;
|
||||||
|
NormalRunSpeed = 7.2;
|
||||||
|
TiredRunSpeedLimit = 0.8;
|
||||||
|
FrequencyMin = 0.2;
|
||||||
|
FrequencyMax = 1.0;
|
||||||
|
TotalLoadCoef = 1.1;
|
||||||
|
MaxDuty = 10;
|
||||||
|
};
|
4
addons/movement/CfgInventoryGlobalVariable.hpp
Normal file
4
addons/movement/CfgInventoryGlobalVariable.hpp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
class CfgInventoryGlobalVariable {
|
||||||
|
maxSoldierLoad = 1200;
|
||||||
|
};
|
117
addons/movement/CfgMoves.hpp
Normal file
117
addons/movement/CfgMoves.hpp
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
|
||||||
|
class CfgMovesBasic {
|
||||||
|
class ManActions {
|
||||||
|
ACE_Climb = "ACE_Climb";
|
||||||
|
};
|
||||||
|
|
||||||
|
class Actions {
|
||||||
|
class RifleStandActionsNoAdjust;
|
||||||
|
class RifleLowStandActionsNoAdjust;
|
||||||
|
|
||||||
|
// WEAPON RAISED - RUNNING
|
||||||
|
class RifleStandActionsRunF: RifleStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
class RifleStandActionsRunFL: RifleStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
class RifleStandActionsRunFR: RifleStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
// WEAPON RAISED - SPRINTING
|
||||||
|
class RifleStandEvasiveActionsF: RifleStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
class RifleStandEvasiveActionsFL: RifleStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
class RifleStandEvasiveActionsFR: RifleStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
// WEAPON LOWERED - RUNNING
|
||||||
|
class RifleLowStandActionsRunF: RifleLowStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
class RifleLowStandActionsRunFL: RifleLowStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
class RifleLowStandActionsRunFR: RifleLowStandActionsNoAdjust {
|
||||||
|
getOver = "AovrPercMrunSrasWrflDf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CfgMovesMaleSdr: CfgMovesBasic {
|
||||||
|
class StandBase;
|
||||||
|
class States {
|
||||||
|
// better slow walk with lowered rifle animation
|
||||||
|
class AmovPercMstpSrasWrflDnon;
|
||||||
|
class AmovPercMrunSrasWrflDf: AmovPercMstpSrasWrflDnon {
|
||||||
|
InterpolateTo[] = {"AovrPercMrunSrasWrflDf",0.22,"AmovPercMrunSlowWrflDf",0.025,"AmovPercMwlkSrasWrflDf",0.025,"AmovPknlMrunSrasWrflDf",0.03,"AmovPercMrunSlowWrflDf_AmovPpneMstpSrasWrflDnon",0.02,"AmovPercMevaSrasWrflDf",0.025,"Unconscious",0.01,"AmovPercMtacSrasWrflDf",0.02,"AmovPercMrunSrasWrflDfl",0.02,"AmovPercMrunSrasWrflDfl_ldst",0.02,"AmovPercMrunSrasWrflDfr",0.02,"AmovPercMrunSrasWrflDfr_ldst",0.02,"AmovPercMstpSrasWrflDnon",0.02,"AmovPercMrunSrasWrflDl",0.02,"AmovPercMrunSrasWrflDbl",0.02,"AmovPercMrunSrasWrflDb",0.02,"AmovPercMrunSrasWrflDbr",0.02,"AmovPercMrunSrasWrflDr",0.02,"AmovPknlMstpSlowWrflDnon_relax",0.1,"AmovPercMrunSrasWrflDf_ldst",0.02,"AmovPercMrunSrasWrflDf",0.02};
|
||||||
|
};
|
||||||
|
|
||||||
|
class AmovPercMstpSlowWrflDnon;
|
||||||
|
class AmovPercMwlkSlowWrflDf: AmovPercMstpSlowWrflDnon {
|
||||||
|
speed = 0.3; //0.206897;
|
||||||
|
file = "\A3\anims_f\Data\Anim\Sdr\Mov\Erc\Wlk\Low\Rfl\AmovPercMwlkSlowWrflDf_ver2";
|
||||||
|
leftHandIKCurve[] = {1};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDfl: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDfr: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDb: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDbl: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDbr: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDl: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
class AmovPercMwlkSlowWrflDr: AmovPercMwlkSlowWrflDf {
|
||||||
|
leftHandIKCurve[] = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
// enable optics in prone left and right stance
|
||||||
|
class AidlPpneMstpSrasWrflDnon_G0S;
|
||||||
|
class AadjPpneMstpSrasWrflDleft: AidlPpneMstpSrasWrflDnon_G0S {
|
||||||
|
enableOptics = 1;
|
||||||
|
};
|
||||||
|
class AadjPpneMstpSrasWrflDright: AidlPpneMstpSrasWrflDnon_G0S {
|
||||||
|
enableOptics = 1;
|
||||||
|
};
|
||||||
|
class AadjPpneMstpSrasWrflDup;
|
||||||
|
class AadjPpneMstpSrasWrflDdown: AadjPpneMstpSrasWrflDup {
|
||||||
|
enableOptics = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
class AidlPpneMstpSrasWpstDnon_G0S;
|
||||||
|
class AadjPpneMstpSrasWpstDleft: AidlPpneMstpSrasWpstDnon_G0S {
|
||||||
|
enableOptics = 2;
|
||||||
|
};
|
||||||
|
class AadjPpneMstpSrasWpstDright: AidlPpneMstpSrasWpstDnon_G0S {
|
||||||
|
enableOptics = 2;
|
||||||
|
};
|
||||||
|
class AadjPpneMstpSrasWpstDup;
|
||||||
|
class AadjPpneMstpSrasWpstDdown: AadjPpneMstpSrasWpstDup {
|
||||||
|
enableOptics = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
// climb animation
|
||||||
|
class AmovPercMstpSnonWnonDnon: StandBase {
|
||||||
|
ConnectTo[] += {"ACE_Climb",0.02};
|
||||||
|
};
|
||||||
|
|
||||||
|
class AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInMedium;
|
||||||
|
class ACE_Climb: AmovPercMstpSnonWnonDnon_AcrgPknlMstpSnonWnonDnon_getInMedium {
|
||||||
|
canReload = 0;
|
||||||
|
forceAim = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
19
addons/movement/XEH_postInit.sqf
Normal file
19
addons/movement/XEH_postInit.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
//by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
["inventoryDisplayLoaded", {
|
||||||
|
|
||||||
|
[{
|
||||||
|
private "_dialog";
|
||||||
|
|
||||||
|
_dialog = _this select 0;
|
||||||
|
|
||||||
|
if (isNull _dialog) exitWith {
|
||||||
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
_dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player] call EFUNC(common,getName), localize "STR_ACE_Movement_Weight", [ACE_player] call FUNC(getWeight)];
|
||||||
|
|
||||||
|
}, 0, _this select 0] call CBA_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
|
}] call EFUNC(common,addEventHandler);
|
6
addons/movement/XEH_preInit.sqf
Normal file
6
addons/movement/XEH_preInit.sqf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PREP(getWeight);
|
||||||
|
PREP(canClimb);
|
||||||
|
PREP(climb);
|
||||||
|
PREP(handleClimb);
|
37
addons/movement/config.cpp
Normal file
37
addons/movement/config.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {"ace_common"};
|
||||||
|
author[] = {"commy2","KoffeinFlummi","Tachii"};
|
||||||
|
authorUrl = "https://github.com/commy2/";
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgEventHandlers.hpp"
|
||||||
|
#include "CfgFatigue.hpp"
|
||||||
|
//#include "CfgInventoryGlobalVariable.hpp"
|
||||||
|
#include "CfgMoves.hpp"
|
||||||
|
|
||||||
|
class ACE_Default_Keys {
|
||||||
|
class climb {
|
||||||
|
displayName = "$STR_ACE_Movement_Climb";
|
||||||
|
condition = QUOTE(_player == _vehicle);
|
||||||
|
statement = QUOTE([_player] call FUNC(climb););
|
||||||
|
key = 47;
|
||||||
|
shift = 0;
|
||||||
|
control = 1;
|
||||||
|
alt = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Options {
|
||||||
|
class useImperial {
|
||||||
|
displayName = "$STR_ACE_Movement_UseImperial";
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
};
|
@ -1,4 +1,5 @@
|
|||||||
// by commy2
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_unit", "_pos", "_dir"];
|
private ["_unit", "_pos", "_dir"];
|
||||||
|
|
22
addons/movement/functions/fnc_climb.sqf
Normal file
22
addons/movement/functions/fnc_climb.sqf
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private "_unit";
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
|
||||||
|
if !([_unit] call FUNC(canClimb)) exitWith {
|
||||||
|
[localize "STR_ACE_Movement_CanNotClimb"] call EFUNC(common,displayTextStructured);
|
||||||
|
};
|
||||||
|
|
||||||
|
if !(_unit getVariable ["ACE_isClimbInit", false]) then {
|
||||||
|
_unit addEventHandler ["AnimDone", {
|
||||||
|
if (local (_this select 0) && {_this select 1 == "ACE_Climb"}) then {_this call FUNC(handleClimb)};
|
||||||
|
}];
|
||||||
|
|
||||||
|
_unit setVariable ["ACE_isClimbInit", true];
|
||||||
|
};
|
||||||
|
|
||||||
|
[_unit] call EFUNC(common,fixLoweredRifleAnimation);
|
||||||
|
[_unit, "AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
|
||||||
|
[_unit, "ACE_Climb", 0] call EFUNC(common,doAnimation);
|
16
addons/movement/functions/fnc_getWeight.sqf
Normal file
16
addons/movement/functions/fnc_getWeight.sqf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_weight"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
|
||||||
|
_weight = loadAbs _unit * 0.1;
|
||||||
|
|
||||||
|
if (profileNamespace getVariable ["ACE_useImperial", false]) then {
|
||||||
|
_weight = format ["%1lb", (round (_weight * 100)) / 100];
|
||||||
|
} else {
|
||||||
|
_weight = format ["%1kg", (round (_weight * FACTOR_POUND_TO_KILOGRAMM * 100)) / 100];
|
||||||
|
};
|
||||||
|
|
||||||
|
_weight
|
@ -1,4 +1,5 @@
|
|||||||
// by commy2
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_unit", "_anim", "_pos"];
|
private ["_unit", "_anim", "_pos"];
|
||||||
|
|
||||||
@ -6,7 +7,7 @@ _unit = _this select 0;
|
|||||||
_anim = _this select 1;
|
_anim = _this select 1;
|
||||||
|
|
||||||
_pos = _unit modelToWorld (_unit selectionPosition "camera");
|
_pos = _unit modelToWorld (_unit selectionPosition "camera");
|
||||||
[_unit, "AmovPknlMstpSnonWnonDnon", 2] call AGM_Core_fnc_doAnimation;
|
[_unit, "AmovPknlMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
|
||||||
|
|
||||||
_pos = _pos vectorDiff (_unit selectionPosition "camera");
|
_pos = _pos vectorDiff (_unit selectionPosition "camera");
|
||||||
|
|
1
addons/movement/functions/script_component.hpp
Normal file
1
addons/movement/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "\z\ace\addons\movement\script_component.hpp"
|
14
addons/movement/script_component.hpp
Normal file
14
addons/movement/script_component.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#define COMPONENT movement
|
||||||
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_MOVEMENT
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_MOVEMENT
|
||||||
|
#define DEBUG_SETTINGS DEBUG_ENABLED_MOVEMENT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
|
#define FACTOR_POUND_TO_KILOGRAMM 1/2.2046
|
@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Edited with tabler - 2014-12-22 -->
|
<!-- Edited with tabler - 2014-12-22 -->
|
||||||
<Project name="AGM">
|
<Project name="ACE">
|
||||||
<Package name="Movement">
|
<Package name="Movement">
|
||||||
<Key ID="STR_AGM_Movement_UseImperial">
|
<Key ID="STR_ACE_Movement_UseImperial">
|
||||||
<English>Show weight in lb</English>
|
<English>Show weight in lb</English>
|
||||||
<German>Zeige Gewicht in Pfund</German>
|
<German>Zeige Gewicht in Pfund</German>
|
||||||
<Spanish>Mostrar peso en libras</Spanish>
|
<Spanish>Mostrar peso en libras</Spanish>
|
||||||
@ -14,7 +14,7 @@
|
|||||||
<Hungarian>Súly megjelenítése fontban.</Hungarian>
|
<Hungarian>Súly megjelenítése fontban.</Hungarian>
|
||||||
<Russian>Показать вес в фунтах</Russian>
|
<Russian>Показать вес в фунтах</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_AGM_Movement_Weight">
|
<Key ID="STR_ACE_Movement_Weight">
|
||||||
<English>Weight:</English>
|
<English>Weight:</English>
|
||||||
<German>Gewicht:</German>
|
<German>Gewicht:</German>
|
||||||
<Spanish>Peso:</Spanish>
|
<Spanish>Peso:</Spanish>
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<Hungarian>Súly:</Hungarian>
|
<Hungarian>Súly:</Hungarian>
|
||||||
<Russian>Вес:</Russian>
|
<Russian>Вес:</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_AGM_Movement_Climb">
|
<Key ID="STR_ACE_Movement_Climb">
|
||||||
<English>Climb</English>
|
<English>Climb</English>
|
||||||
<German>Klettern</German>
|
<German>Klettern</German>
|
||||||
<Polish>Wspinaczka</Polish>
|
<Polish>Wspinaczka</Polish>
|
||||||
@ -34,7 +34,7 @@
|
|||||||
<Czech>Vylézt</Czech>
|
<Czech>Vylézt</Czech>
|
||||||
<Russian>Подняться</Russian>
|
<Russian>Подняться</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_AGM_Movement_CanNotClimb">
|
<Key ID="STR_ACE_Movement_CanNotClimb">
|
||||||
<English>Can't climb here</English>
|
<English>Can't climb here</English>
|
||||||
<German>Kann hier nicht klettern</German>
|
<German>Kann hier nicht klettern</German>
|
||||||
<Polish>Nie możesz wspiąć się tutaj</Polish>
|
<Polish>Nie możesz wspiąć się tutaj</Polish>
|
Loading…
Reference in New Issue
Block a user