mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Initial commit. main, core (not complete) and to-merge.
This commit is contained in:
commit
8dd70e9b22
1
TO_MERGE/ace/air_hud/$PBOPREFIX$
Normal file
1
TO_MERGE/ace/air_hud/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
x\uo\Addons\sys_air_hud
|
23
TO_MERGE/ace/air_hud/CfgEventhandlers.hpp
Normal file
23
TO_MERGE/ace/air_hud/CfgEventhandlers.hpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_pre_init));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_post_init));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_GetIn_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call FUNC(onGetin));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_GetOut_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call FUNC(onGetout));
|
||||||
|
};
|
||||||
|
};
|
30
TO_MERGE/ace/air_hud/CfgUI.hpp
Normal file
30
TO_MERGE/ace/air_hud/CfgUI.hpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
class RscPicture;
|
||||||
|
class RscText;
|
||||||
|
class RscControlsGroupNoScrollbars;
|
||||||
|
|
||||||
|
class RscInGameUI
|
||||||
|
{
|
||||||
|
class RscUnitInfo
|
||||||
|
{
|
||||||
|
class CA_Radar: RscControlsGroupNoScrollbars
|
||||||
|
{
|
||||||
|
class controls
|
||||||
|
{
|
||||||
|
class CA_RadarBackground: RscPicture {
|
||||||
|
colorText[] = {0,0,0,0};
|
||||||
|
text = "";
|
||||||
|
};
|
||||||
|
class CA_RadarIcon: RscPicture {
|
||||||
|
colorText[] = {0,0,0,0};
|
||||||
|
};
|
||||||
|
class CA_Heading: RscText {
|
||||||
|
colorText[] = {0,0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class CfgInGameUI
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
35
TO_MERGE/ace/air_hud/CfgVehicles.hpp
Normal file
35
TO_MERGE/ace/air_hud/CfgVehicles.hpp
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
class CfgVehicles {
|
||||||
|
class AllVehicles;
|
||||||
|
|
||||||
|
class Air: AllVehicles {
|
||||||
|
class Turrets;
|
||||||
|
};
|
||||||
|
class Helicopter: Air
|
||||||
|
{
|
||||||
|
class Turrets: Turrets {
|
||||||
|
class MainTurret;
|
||||||
|
};
|
||||||
|
commanderCanSee = 2+32;
|
||||||
|
gunnerCanSee = 2+32;
|
||||||
|
driverCanSee = 2+32;
|
||||||
|
|
||||||
|
};
|
||||||
|
class Helicopter_Base_F: Helicopter {
|
||||||
|
class Turrets: Turrets {
|
||||||
|
class MainTurret: MainTurret {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Heli_Attack_01_base_F: Helicopter_Base_F {
|
||||||
|
class Turrets: Turrets {
|
||||||
|
class MainTurret: MainTurret {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class B_Heli_Attack_01_F: Heli_Attack_01_base_F {
|
||||||
|
driverCanEject = 1;
|
||||||
|
class Turrets: Turrets {
|
||||||
|
class MainTurret: MainTurret {
|
||||||
|
stabilizedInAxes = 4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
10
TO_MERGE/ace/air_hud/CfgWeapons.hpp
Normal file
10
TO_MERGE/ace/air_hud/CfgWeapons.hpp
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
class CfgWeapons {
|
||||||
|
class LauncherCore;
|
||||||
|
|
||||||
|
class RocketPods: LauncherCore {
|
||||||
|
canLock = 1;
|
||||||
|
};
|
||||||
|
class missiles_DAGR: RocketPods {
|
||||||
|
canLock = 1;
|
||||||
|
};
|
||||||
|
};
|
3
TO_MERGE/ace/air_hud/XEH_post_init.sqf
Normal file
3
TO_MERGE/ace/air_hud/XEH_post_init.sqf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
NO_DEDICATED;
|
||||||
|
|
9
TO_MERGE/ace/air_hud/XEH_pre_init.sqf
Normal file
9
TO_MERGE/ace/air_hud/XEH_pre_init.sqf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PREP(laserHudDesignateOn);
|
||||||
|
PREP(laserHudDesignateOff);
|
||||||
|
|
||||||
|
|
||||||
|
GVAR(laser) = nil;
|
||||||
|
|
||||||
|
FUNC(getPosASL) = {visiblePositionASL (_this select 0)};
|
17
TO_MERGE/ace/air_hud/config.cpp
Normal file
17
TO_MERGE/ace/air_hud/config.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = { "uo_main", "uo_sys_laser", "a3_ui_f" };
|
||||||
|
version = VERSION;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgUI.hpp"
|
||||||
|
|
||||||
|
#include "CfgEventhandlers.hpp"
|
||||||
|
#include "CfgWeapons.hpp"
|
||||||
|
#include "CfgVehicles.hpp"
|
19
TO_MERGE/ace/air_hud/fnc_laserHudDesignateOff.sqf
Normal file
19
TO_MERGE/ace/air_hud/fnc_laserHudDesignateOff.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if(isNil QGVAR(laser)) exitWith {
|
||||||
|
false
|
||||||
|
};
|
||||||
|
if(!local GVAR(laser)) then {
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
_handle = GVAR(laser) getVariable ["ACE_PFH_HANDLE", nil];
|
||||||
|
if(!isNil "_handle") then {
|
||||||
|
[_handle] call cba_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
REM(ACE_LASERS, GVAR(laser));
|
||||||
|
deleteVehicle GVAR(laser);
|
||||||
|
GVAR(laser) = nil;
|
||||||
|
|
||||||
|
true
|
87
TO_MERGE/ace/air_hud/fnc_laserHudDesignateOn.sqf
Normal file
87
TO_MERGE/ace/air_hud/fnc_laserHudDesignateOn.sqf
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
TRACE_1("enter", _this);
|
||||||
|
|
||||||
|
FUNC(magnitude) = {
|
||||||
|
_this distance [0, 0, 0]
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(mat_normalize3d) = {
|
||||||
|
private ["_mag"];
|
||||||
|
PARAMS_3(_vx,_vy,_vz);
|
||||||
|
|
||||||
|
_mag = _this call FUNC(magnitude);
|
||||||
|
if (_mag == 0) then {_mag = 1};
|
||||||
|
[(_vx/_mag), (_vy/_mag), (_vz/_mag)]
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(laserHudDesignatePFH) = {
|
||||||
|
_args = _this select 0;
|
||||||
|
_laserTarget = _args select 0;
|
||||||
|
_shooter = _args select 1;
|
||||||
|
|
||||||
|
_vehicle = vehicle _shooter;
|
||||||
|
_weapon = currentWeapon _vehicle;
|
||||||
|
|
||||||
|
if(!alive _shooter || isNull _vehicle || isNull _laserTarget) exitWith {
|
||||||
|
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Retrieve the gunner and turret memory point information
|
||||||
|
_gunnerInfo = [_vehicle, _weapon] call CBA_fnc_getFirer;
|
||||||
|
|
||||||
|
_turret = [_vehicle, _gunnerInfo select 1] call CBA_fnc_getTurret;
|
||||||
|
_pov = getText (_turret >> "memoryPointGunnerOptics");
|
||||||
|
_gunBeg = getText (_turret >> "gunBeg");
|
||||||
|
_gunEnd = getText (_turret >> "gunEnd");
|
||||||
|
TRACE_3("", _pov, _gunBeg, _gunEnd);
|
||||||
|
|
||||||
|
// Pull the PIP pov or barrel direction, depending on how the model is set up
|
||||||
|
_povPos = ATLtoASL ( _vehicle modelToWorld (_vehicle selectionPosition _pov ) );
|
||||||
|
_povDir = [0,0,0];
|
||||||
|
if(_pov == "pip0_pos") then {
|
||||||
|
_pipDir = ATLtoASL ( _vehicle modelToWorld (_vehicle selectionPosition "pip0_dir" ) );
|
||||||
|
_povDir = [_povPos, _pipDir] call BIS_fnc_vectorDiff;
|
||||||
|
} else {
|
||||||
|
_gunBeginPos = ATLtoASL ( _vehicle modelToWorld (_vehicle selectionPosition _gunBeg ) );
|
||||||
|
_gunEndPos = ATLtoASL ( _vehicle modelToWorld (_vehicle selectionPosition _gunEnd ) );
|
||||||
|
_povDir = [_gunEndPos, _gunBeginPos] call BIS_fnc_vectorDiff;
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_4("", _povDir, _povPos, _gunBeginPos, _gunEndPos);
|
||||||
|
|
||||||
|
_result = [_povPos, _povDir] call uo_sys_laser_fnc_shootCone;
|
||||||
|
|
||||||
|
if((count _result) > 0) then {
|
||||||
|
_resultPositions = _result select 2;
|
||||||
|
|
||||||
|
if((count _resultPositions) > 0) then {
|
||||||
|
_firstResult = _resultPositions select 0;
|
||||||
|
_pos = _firstResult select 0;
|
||||||
|
|
||||||
|
// If the laser has moved less than a half meter, then dont move it.
|
||||||
|
// Just regular use of lasers will commonly make them move this much,
|
||||||
|
// but not across multiple close frames.
|
||||||
|
// This loses accuracy a little, but saves position updates per frame.
|
||||||
|
//if( ((getPosASL _laserTarget) distance _pos) > 0.5) then {
|
||||||
|
_laserTarget setPosATL (ASLToATL _pos);
|
||||||
|
//};
|
||||||
|
#ifdef DEBUG_MODE_FULL
|
||||||
|
drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0,0,1], ASLToATL _pos, 0.75, 0.75, 0, "", 0.5, 0.025, "TahomaB"];
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if(isNil QGVAR(laser)) then {
|
||||||
|
_laserTarget = "LaserTargetW" createVehicle (getpos player);
|
||||||
|
_handle = [FUNC(laserHudDesignatePFH), 0, [_laserTarget, player]] call cba_fnc_addPerFrameHandler;
|
||||||
|
_laserTarget setVariable ["ACE_PFH_HANDLE", _handle, false];
|
||||||
|
|
||||||
|
GVAR(laser) = _laserTarget;
|
||||||
|
} else {
|
||||||
|
[] call FUNC(laserHudDesignateOff);
|
||||||
|
[] call FUNC(laserHudDesignateOn);
|
||||||
|
};
|
||||||
|
|
1
TO_MERGE/ace/air_hud/fnc_onGetin.sqf
Normal file
1
TO_MERGE/ace/air_hud/fnc_onGetin.sqf
Normal file
@ -0,0 +1 @@
|
|||||||
|
player addAction ["Laser Designator On", { _this call uo_sys_air_hud_fnc_laserHudDesignateOn }, name player];
|
1
TO_MERGE/ace/air_hud/fnc_onGetout.sqf
Normal file
1
TO_MERGE/ace/air_hud/fnc_onGetout.sqf
Normal file
@ -0,0 +1 @@
|
|||||||
|
player addAction ["Laser Designator Off", { _this call uo_sys_air_hud_fnc_laserHudDesignateOff }, name player];
|
12
TO_MERGE/ace/air_hud/script_component.hpp
Normal file
12
TO_MERGE/ace/air_hud/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#define COMPONENT sys_air_hud
|
||||||
|
#include "\x\uo\Addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_SYS_AIR_HUD
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_SYS_AIR_HUD
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_AIR_HUD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\x\uo\Addons\main\script_macros.hpp"
|
1
TO_MERGE/ace/arty_aimingpoints/$PBOPREFIX$
Normal file
1
TO_MERGE/ace/arty_aimingpoints/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
x\ace\addons\sys_arty_aimingpoints
|
BIN
TO_MERGE/ace/arty_aimingpoints/ACE_ARTY_AimingStakes.p3d
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/ACE_ARTY_AimingStakes.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/ACE_ARTY_AimingStakesW.p3d
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/ACE_ARTY_AimingStakesW.p3d
Normal file
Binary file not shown.
31
TO_MERGE/ace/arty_aimingpoints/CfgEventHandlers.hpp
Normal file
31
TO_MERGE/ace/arty_aimingpoints/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_pre_init));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_PostInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
clientInit = QUOTE(call COMPILE_FILE(XEH_post_init));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_Init_EventHandlers {
|
||||||
|
class ACE_Arty_M1A1_Collimator {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_collimator_init));
|
||||||
|
};
|
||||||
|
class ACE_Arty_M2A2_Aiming_Circle {
|
||||||
|
init = QUOTE(_this call FUNC(aimingCircleInit));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_GetIn_Eventhandlers {
|
||||||
|
class ACE_Arty_M2A2_Aiming_Circle {
|
||||||
|
clientGetin = QUOTE(_this call FUNC(aimingCircleGetIn));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Extended_GetOut_Eventhandlers {
|
||||||
|
class ACE_Arty_M2A2_Aiming_Circle {
|
||||||
|
clientGetout = QUOTE(_this call FUNC(aimingCircleGetOut));
|
||||||
|
};
|
||||||
|
};
|
153
TO_MERGE/ace/arty_aimingpoints/CfgVehicles.hpp
Normal file
153
TO_MERGE/ace/arty_aimingpoints/CfgVehicles.hpp
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
class CfgVehicles {
|
||||||
|
class Thing;
|
||||||
|
class ReammoBox;
|
||||||
|
class ACE_Arty_BaseThing;
|
||||||
|
// aiming stakes classes
|
||||||
|
#include "CfgVehicles_AimingStakes.hpp"
|
||||||
|
#include "CfgVehicles_Ammoboxes.hpp"
|
||||||
|
#include "CfgVehicles_Collimator.hpp"
|
||||||
|
class Land;
|
||||||
|
class LandVehicle: Land {
|
||||||
|
class NewTurret;
|
||||||
|
};
|
||||||
|
class StaticWeapon: LandVehicle {
|
||||||
|
class Turrets;
|
||||||
|
};
|
||||||
|
class StaticCannon: StaticWeapon {
|
||||||
|
class Turrets: Turrets {
|
||||||
|
class MainTurret;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ace_aimingcircle_base: StaticCannon {
|
||||||
|
class Turrets: Turrets {
|
||||||
|
class MainTurret : MainTurret {
|
||||||
|
class ViewOptics;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ACE_Arty_M2A2_Aiming_Circle: ace_aimingcircle_base {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_DSS_ACE_ARTY_AIMINGCIRCLE_M2A2;
|
||||||
|
model = QPATHTO_M(ace_arty_m2a2_aiming_circle.p3d);
|
||||||
|
icon = QPATHTO_T(data\equip\m2a2_icon_ca.paa);
|
||||||
|
vehicleClass = "ACE_Arty_Equipment";
|
||||||
|
animated = 0;
|
||||||
|
reversed = 0;
|
||||||
|
autocenter = 0;
|
||||||
|
mapSize = 0.5;
|
||||||
|
class Turrets: Turrets
|
||||||
|
{
|
||||||
|
class MainTurret: MainTurret
|
||||||
|
{
|
||||||
|
weapons[] = {};
|
||||||
|
magazines[] = {};
|
||||||
|
memoryPointsGetInGunner = "pos_gunner_dir";
|
||||||
|
memoryPointsGetInGunnerDir = "pos_gunner";
|
||||||
|
gunnerOpticsModel = "\x\ace\addons\sys_arty_m119\ace_arty_m119_scope";
|
||||||
|
gunnerAction = "M2_Gunner";
|
||||||
|
gunBeg = "gunBegin";
|
||||||
|
gunEnd = "gunEnd";
|
||||||
|
proxyIndex = 1;
|
||||||
|
maxHorizontalRotSpeed = 4;
|
||||||
|
class ViewOptics : ViewOptics {
|
||||||
|
initFov = 0.0787019;
|
||||||
|
minFov = 0.0787019;
|
||||||
|
maxFov = 0.0787019;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class AnimationSources {
|
||||||
|
class MainGun {
|
||||||
|
source="user";
|
||||||
|
animPeriod=0.02;
|
||||||
|
initPhase=0;
|
||||||
|
minValue="-400";
|
||||||
|
maxValue="800";
|
||||||
|
};
|
||||||
|
class MainTurret {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
};
|
||||||
|
class upper_motion {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.002;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
};
|
||||||
|
class deflection_knob {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-100";
|
||||||
|
maxValue="100";
|
||||||
|
};
|
||||||
|
class deflection_knob_coarse {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-64";
|
||||||
|
maxValue="64";
|
||||||
|
};
|
||||||
|
class elevation_knob {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-100";
|
||||||
|
maxValue="100";
|
||||||
|
};
|
||||||
|
class elevation_knob_coarse {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-4";
|
||||||
|
maxValue="8";
|
||||||
|
};
|
||||||
|
class orienting_knobs {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
};
|
||||||
|
class left_cover {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=1;
|
||||||
|
minValue="0";
|
||||||
|
maxValue="1";
|
||||||
|
};
|
||||||
|
class right_cover {
|
||||||
|
source="user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=1;
|
||||||
|
minValue="0";
|
||||||
|
maxValue="1";
|
||||||
|
};
|
||||||
|
class compass_needle {
|
||||||
|
source = "user";
|
||||||
|
initPhase = 0;
|
||||||
|
animPeriod=0.02;
|
||||||
|
minValue="-360";
|
||||||
|
maxValue="360";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// class MarkerLights {
|
||||||
|
// class Whitelight {
|
||||||
|
// name = "optic_backlight";
|
||||||
|
// color[] = {1,1,1, 0.0025};
|
||||||
|
// ambient[] = {1,1,1, 0.0025};
|
||||||
|
// brightness = 0.0005;
|
||||||
|
// size = 0.00004;
|
||||||
|
// blinking = "false";
|
||||||
|
// };
|
||||||
|
// };
|
||||||
|
ACE_CARGO_ONLY; ACE_Weight = 20.5;
|
||||||
|
};
|
||||||
|
};
|
44
TO_MERGE/ace/arty_aimingpoints/CfgVehicles_AimingStakes.hpp
Normal file
44
TO_MERGE/ace/arty_aimingpoints/CfgVehicles_AimingStakes.hpp
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// ace mortars aiming posts base class
|
||||||
|
class ACE_Arty_AimingStakes : ACE_Arty_BaseThing {
|
||||||
|
destrType = "DestructTree";
|
||||||
|
weight = 1000;
|
||||||
|
simulation = "house";
|
||||||
|
|
||||||
|
model = QPATHTO_M(ACE_ARTY_AimingStakes.p3d);
|
||||||
|
animated = 0;
|
||||||
|
reversed = 0;
|
||||||
|
autocenter = 1;
|
||||||
|
sectionsInherit = "ACE_ARTY_AimingStakes";
|
||||||
|
hiddenSelections[] = {"all"};
|
||||||
|
class AnimationSources{};
|
||||||
|
ACE_NOCARGOLOAD; ACE_Weight = 10000;
|
||||||
|
};
|
||||||
|
|
||||||
|
// aiming posts for US mortar usage
|
||||||
|
// 2x M1A2 (ie 2m height) aiming Posts with M58, illumunation device, green
|
||||||
|
class ACE_Arty_AimingPost_M1A2_M58 : ACE_Arty_AimingStakes {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_DN_ACE_ARTY_AIMINGPOST_M1A2_M58;
|
||||||
|
hiddenSelections[] = {"lamp_1","lightpoint_1"};
|
||||||
|
class MarkerLights {
|
||||||
|
class Greenlight {
|
||||||
|
name = "lightpoint_0";
|
||||||
|
color[] = { 0, 0.5, 0.1, 0.0025 };
|
||||||
|
ambient[] = { 0, 0.5, 0.1, 0.0025 };
|
||||||
|
brightness = 0.0015;
|
||||||
|
size = 0.00001;
|
||||||
|
blinking = "false";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ACE_CARGO_ONLY; ACE_Weight = 3;
|
||||||
|
};
|
||||||
|
// 2x M1A2 (ie 2m height) aiming Posts with M59, illumunation device, orange
|
||||||
|
class ACE_Arty_AimingPost_M1A2_M59 : ACE_Arty_AimingPost_M1A2_M58 {
|
||||||
|
displayName = $STR_DN_ACE_ARTY_AIMINGPOST_M1A2_M59;
|
||||||
|
class MarkerLights: MarkerLights {
|
||||||
|
class Orangelight: Greenlight {
|
||||||
|
color[] = {255/255, 74/255, 0/255, 0.0025};
|
||||||
|
ambient[] = {255/255, 74/255, 0/255, 0.0025};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
12
TO_MERGE/ace/arty_aimingpoints/CfgVehicles_AmmoBoxes.hpp
Normal file
12
TO_MERGE/ace/arty_aimingpoints/CfgVehicles_AmmoBoxes.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
class ACE_ArtyEquip_Box: ReammoBox {
|
||||||
|
vehicleClass = "ACE_Arty_Equipment";
|
||||||
|
picture = "pictureThing";
|
||||||
|
class TransportWeapons {
|
||||||
|
ACE_M_WEP(ACE_Arty_AimingPost_M1A2_M58, 12);
|
||||||
|
ACE_M_WEP(ACE_Arty_AimingPost_M1A2_M59, 12);
|
||||||
|
ACE_M_WEP(ACE_Arty_M1A1_Collimator, 6);
|
||||||
|
ACE_M_WEP(ACE_Arty_M2A2_Aiming_Circle, 2);
|
||||||
|
|
||||||
|
};
|
||||||
|
class TransportMagazines {};
|
||||||
|
};
|
82
TO_MERGE/ace/arty_aimingpoints/CfgVehicles_Collimator.hpp
Normal file
82
TO_MERGE/ace/arty_aimingpoints/CfgVehicles_Collimator.hpp
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
class ACE_Arty_M1A1_Collimator: ACE_Arty_AimingStakes {
|
||||||
|
scope = 2;
|
||||||
|
displayName = "$STR_DSS_ACE_ARTY_COLLIMATOR_M1A1";
|
||||||
|
model = QPATHTO_M(sa_collimator.p3d);
|
||||||
|
animated = 1;
|
||||||
|
reversed = 0;
|
||||||
|
autocenter = 0;
|
||||||
|
class Reflectors {
|
||||||
|
class Reflector {
|
||||||
|
color[] = {1,1,1, 1};
|
||||||
|
ambient[] = {1,1,1, 1};
|
||||||
|
position = "optic_backlight";
|
||||||
|
direction = "optic_proxy";
|
||||||
|
hitpoint = "optic_backlight";
|
||||||
|
selection = "optic_backlight";
|
||||||
|
brightness = 0.001;
|
||||||
|
size = 0.01;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class AnimationSources {
|
||||||
|
class elevate_optic {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.01;
|
||||||
|
minValue="-300";
|
||||||
|
maxValue="300";
|
||||||
|
};
|
||||||
|
class rotate_optic {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.01;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ACE_CARGO_ONLY; ACE_Weight = 14.5;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Arty_Collimator_Proxy: ACE_Arty_BaseThing { // No idea wether this should be hidden or not
|
||||||
|
scope = 1;
|
||||||
|
displayName = "Collimator Proxy";
|
||||||
|
destrType = "DestructTree";
|
||||||
|
weight = 1000;
|
||||||
|
simulation = "house";
|
||||||
|
model = QPATHTO_M(collimator_test.p3d);
|
||||||
|
animated = 1;
|
||||||
|
reversed = 0;
|
||||||
|
autocenter = 0;
|
||||||
|
sectionsInherit = "collimator_test";
|
||||||
|
|
||||||
|
class AnimationSources{
|
||||||
|
class offset {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.00001;
|
||||||
|
minValue = -100;
|
||||||
|
maxValue = 100;
|
||||||
|
};
|
||||||
|
class expand_ul {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.00001;
|
||||||
|
minValue = -1;
|
||||||
|
maxValue = 1;
|
||||||
|
};
|
||||||
|
class expand_ur {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.00001;
|
||||||
|
minValue = -1;
|
||||||
|
maxValue = 1;
|
||||||
|
};
|
||||||
|
class expand_ll {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.00001;
|
||||||
|
minValue = -1;
|
||||||
|
maxValue = 1;
|
||||||
|
};
|
||||||
|
class expand_lr {
|
||||||
|
source = "user";
|
||||||
|
animPeriod = 0.00001;
|
||||||
|
minValue = -1;
|
||||||
|
maxValue = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ACE_CARGO_ONLY; ACE_Weight = 14.5;
|
||||||
|
};
|
40
TO_MERGE/ace/arty_aimingpoints/CfgWeapons.hpp
Normal file
40
TO_MERGE/ace/arty_aimingpoints/CfgWeapons.hpp
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
class CfgWeapons {
|
||||||
|
class Launcher;
|
||||||
|
class ACE_BaseAimingPost: Launcher {
|
||||||
|
displayName = "Aiming Post";
|
||||||
|
descriptionShort = "";
|
||||||
|
type = 4;
|
||||||
|
model = QPATHTO_M(ACE_ARTY_AimingStakesW.p3d);
|
||||||
|
picture = QPATHTO_T(data\equip\w_stake_ca.paa);
|
||||||
|
class Library {
|
||||||
|
libTextDesc = "";
|
||||||
|
};
|
||||||
|
ACE_Weight = 3;
|
||||||
|
};
|
||||||
|
class ACE_Arty_AimingPost_M1A2_M58: ACE_BaseAimingPost {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_DN_ACE_ARTY_AIMINGPOST_M1A2_M58;
|
||||||
|
descriptionShort = $STR_DSS_ACE_ARTY_AIMINGPOST_M1A2_M58;
|
||||||
|
};
|
||||||
|
class ACE_Arty_AimingPost_M1A2_M59: ACE_BaseAimingPost {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_DN_ACE_ARTY_AIMINGPOST_M1A2_M59;
|
||||||
|
descriptionShort = $STR_DSS_ACE_ARTY_AIMINGPOST_M1A2_M59;
|
||||||
|
};
|
||||||
|
class ACE_Arty_M1A1_Collimator: ACE_BaseAimingPost {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_DSS_ACE_ARTY_COLLIMATOR_M1A1;
|
||||||
|
descriptionShort = $STR_DSS_ACE_ARTY_COLLIMATOR_M1A1;
|
||||||
|
picture = QPATHTO_T(data\equip\collimator_item_ca.paa);
|
||||||
|
model = QPATHTO_M(sa_collimator_wep.p3d);
|
||||||
|
ACE_Weight = 14.5;
|
||||||
|
};
|
||||||
|
class ACE_Arty_M2A2_Aiming_Circle: ACE_BaseAimingPost {
|
||||||
|
scope = 2;
|
||||||
|
displayName = $STR_DSS_ACE_ARTY_AIMINGCIRCLE_M2A2;
|
||||||
|
descriptionShort = $STR_DSS_ACE_ARTY_AIMINGCIRCLE_M2A2;
|
||||||
|
picture = QPATHTO_T(data\equip\m2a2_item_ca.paa);
|
||||||
|
model = QPATHTO_M(ace_arty_m2a2_aiming_circle_wep.p3d);
|
||||||
|
ACE_Weight = 20.5;
|
||||||
|
};
|
||||||
|
};
|
6
TO_MERGE/ace/arty_aimingpoints/XEH_collimator_init.sqf
Normal file
6
TO_MERGE/ace/arty_aimingpoints/XEH_collimator_init.sqf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
//XEH_collimator_init.sqf
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PARAMS_1(_collimator);
|
||||||
|
|
||||||
|
_adjustCollimator = _collimator addAction [localize "STR_ACE_ARTY_ADJUST_COLLIMATOR", "fnc_adjustCollimator.sqf", [], -100, false, true, "", "alive _target"];
|
10
TO_MERGE/ace/arty_aimingpoints/XEH_post_init.sqf
Normal file
10
TO_MERGE/ace/arty_aimingpoints/XEH_post_init.sqf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ADDON = false;
|
||||||
|
|
||||||
|
["player", [ace_sys_interaction_key], 1, [QPATHTO_F(fnc_menuDef_stake), "main"]] call CBA_ui_fnc_add;
|
||||||
|
["player", [ace_sys_interaction_key_self], 9, [QPATHTO_F(fnc_menuDef_stake_self), "main"]] call CBA_ui_fnc_add;
|
||||||
|
[QGVAR(aimingCircleLightEvent), { _this call FUNC(aimingCircleHandleLight); }] call CBA_fnc_addEventHandler;
|
||||||
|
|
||||||
|
ADDON = true;
|
476
TO_MERGE/ace/arty_aimingpoints/XEH_pre_init.sqf
Normal file
476
TO_MERGE/ace/arty_aimingpoints/XEH_pre_init.sqf
Normal file
@ -0,0 +1,476 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ADDON = false;
|
||||||
|
|
||||||
|
PREP(menuDef_stake);
|
||||||
|
PREP(menuDef_stake_self);
|
||||||
|
|
||||||
|
PREP(isKindOf);
|
||||||
|
|
||||||
|
PREP(onPickupStake);
|
||||||
|
PREP(onPlaceStake);
|
||||||
|
PREP(onModifyStake);
|
||||||
|
|
||||||
|
PREP(onPlaceStakeConfirm);
|
||||||
|
PREP(onPlaceStakeCancel);
|
||||||
|
|
||||||
|
ACE_ARTY_COLLIMATORS = [];
|
||||||
|
ACE_ARTY_COLLIMATORS_PFH_ID = -1;
|
||||||
|
|
||||||
|
FUNC(milsFromGunBarrel) = {
|
||||||
|
private "_gunDir";
|
||||||
|
PARAMS_2(_gun,_obj);
|
||||||
|
// TODO: get relative directoin of placement from barrel in mils
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(findGun) = {
|
||||||
|
private["_detectorPos", "_distance", "_target","_targets","_closeDist"];
|
||||||
|
_target = objNull;
|
||||||
|
_detectorPos = [0, 0, 0];
|
||||||
|
|
||||||
|
for [
|
||||||
|
{_distance = 10},
|
||||||
|
{(_distance <= viewdistance) && ((_detectorPos select 2) > -2) && isNull _target},
|
||||||
|
{_distance = _distance + 10}
|
||||||
|
] do {
|
||||||
|
_detectorPos = positionCameraToWorld [0, 0, _distance];
|
||||||
|
_targets = _detectorPos nearEntities ["StaticWeapon", 10];
|
||||||
|
|
||||||
|
if (count _targets > 0) exitWith {
|
||||||
|
private["_closeDist", "_dist"];
|
||||||
|
_closeDist = 9999;
|
||||||
|
{
|
||||||
|
private["_gun"];
|
||||||
|
_gun = _x;
|
||||||
|
_dist = player distance _gun;
|
||||||
|
if(_dist < _closeDist) then {
|
||||||
|
_closeDist = _dist;
|
||||||
|
_target = _gun;
|
||||||
|
};
|
||||||
|
} forEach _targets;
|
||||||
|
_target
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_target
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(collimatorHandler) = {
|
||||||
|
_gp = positionCameraToWorld [0,0,0];
|
||||||
|
_gp set[2, getTerrainHeightASL [_gp select 0, _gp select 1]];
|
||||||
|
_nearCollimators = (positionCameraToWorld [0,0,0]) nearEntities ["ACE_Arty_M1A1_Collimator", 20];
|
||||||
|
_moved = false;
|
||||||
|
{
|
||||||
|
_lastPos = _x getVariable [QGVAR(colLastPos), [0,0,0]];
|
||||||
|
if(_lastPos distance (getPosASL _x) > 0) exitWith {
|
||||||
|
_moved = true;
|
||||||
|
};
|
||||||
|
} forEach _nearCollimators;
|
||||||
|
_proxies = (positionCameraToWorld [0,0,0]) nearEntities ["ACE_Arty_Collimator_Proxy", 20];
|
||||||
|
if((count _proxies) != (count _nearCollimators)) then {
|
||||||
|
_moved = true;
|
||||||
|
};
|
||||||
|
if(_moved) then {
|
||||||
|
ACE_ARTY_COLLIMATORS = [];
|
||||||
|
{
|
||||||
|
deleteVehicle _x;
|
||||||
|
} forEach _proxies;
|
||||||
|
};
|
||||||
|
_newCollimators = _nearCollimators - ACE_ARTY_COLLIMATORS;
|
||||||
|
{
|
||||||
|
// player sideChat format["creating proxyaaaa"];
|
||||||
|
_collimatorProxy = "ACE_Arty_Collimator_Proxy" createVehicleLocal (getPos _x);
|
||||||
|
_collimatorProxy setDir 180;
|
||||||
|
_collimatorProxy attachTo [_x, [0,0,0], "optic_proxy"];
|
||||||
|
_x setVariable ["ace_collimator_proxy", _collimatorProxy];
|
||||||
|
} forEach _newCollimators;
|
||||||
|
_oldCollimators = ACE_ARTY_COLLIMATORS - _nearCollimators;
|
||||||
|
{
|
||||||
|
// player sideChat format["deleting proxy"];
|
||||||
|
_collimatorProxy = _x getVariable "ace_collimator_proxy";
|
||||||
|
detach _collimatorProxy;
|
||||||
|
deleteVehicle _collimatorProxy;
|
||||||
|
} forEach _oldCollimators;
|
||||||
|
ACE_ARTY_COLLIMATORS = _nearCollimators;
|
||||||
|
{
|
||||||
|
_collimatorProxy = _x getVariable "ace_collimator_proxy";
|
||||||
|
_x setVariable [QGVAR(colLastPos), (getPosASL _x)];
|
||||||
|
_cp = _collimatorProxy modelToWorld (_collimatorProxy selectionPosition "optic");
|
||||||
|
_cp set[2, getTerrainHeightASL [_cp select 0, _cp select 1]];
|
||||||
|
_dis = (_gp distance _cp);
|
||||||
|
_disDif = 0.59-(_dis * 0.062);
|
||||||
|
_collimatorProxy animate["expand_ul", _disDif];
|
||||||
|
_collimatorProxy animate["expand_ur", _disDif];
|
||||||
|
_collimatorProxy animate["expand_ll", _disDif];
|
||||||
|
_collimatorProxy animate["expand_lr", _disDif];
|
||||||
|
_offset = 0;
|
||||||
|
_relDir = [_collimatorProxy, _gp] call BIS_fnc_relativeDirTo;
|
||||||
|
_relDir = (_relDir-180);
|
||||||
|
_relDir = DEG2MIL(_relDir);
|
||||||
|
_cf = -0.0011*(_dis^2) + 0.1335*_dis - 1.005;
|
||||||
|
_relDir = _relDir + (_relDir*_cf);
|
||||||
|
_collimatorProxy animate["offset", _relDir];
|
||||||
|
_colRot = _x animationPhase "rotate_optic";
|
||||||
|
_collimatorProxy setDir MIL2DEG(_colRot);
|
||||||
|
// player sideChat format["ds: %1", _colRot];
|
||||||
|
// _wepVec = (vehicle player) weaponDirection ((weapons (vehicle player)) select 0);
|
||||||
|
// _wepDir = (_wepVec call CBA_fnc_vect2polar) select 1;
|
||||||
|
// _wepDir = DEG2MIL(_wepDir);
|
||||||
|
// player sideChat format["_wepDir: %1", _wepDir];
|
||||||
|
} forEach ACE_ARTY_COLLIMATORS;
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(startCollimatorHandler) = {
|
||||||
|
ACE_ARTY_COLLIMATORS = [];
|
||||||
|
ACE_ARTY_COLLIMATORS_PFH_ID = [FUNC(collimatorHandler), 0.0, []] call CBA_fnc_addPerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(endCollimatorHandler) = {
|
||||||
|
{
|
||||||
|
_collimatorProxy = _x getVariable "ace_collimator_proxy";
|
||||||
|
detach _collimatorProxy;
|
||||||
|
deleteVehicle _collimatorProxy;
|
||||||
|
} forEach ACE_ARTY_COLLIMATORS;
|
||||||
|
[ACE_ARTY_COLLIMATORS_PFH_ID] call CBA_fnc_removePerFrameHandler;
|
||||||
|
ACE_ARTY_COLLIMATORS = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(onAlignCollimator) = {
|
||||||
|
// player sideChat format["lol"];
|
||||||
|
GVAR(aligningCollimator) = _this select 0;
|
||||||
|
_pos = GVAR(aligningCollimator) modelToWorld (GVAR(aligningCollimator) selectionPosition "sight_begin");
|
||||||
|
_camera = "camera" camCreate _pos;
|
||||||
|
_camera cameraEffect ["internal", "back"];
|
||||||
|
_camera camSetTarget (GVAR(aligningCollimator) modelToWorld (GVAR(aligningCollimator) selectionPosition "sight_end"));
|
||||||
|
_camera camSetFov 0.2;
|
||||||
|
_camera camCommit 0.1;
|
||||||
|
|
||||||
|
|
||||||
|
showCinemaBorder false;
|
||||||
|
GVAR(collimatorAlignHorz) = GVAR(aligningCollimator) animationPhase "rotate_optic";
|
||||||
|
GVAR(collimatorAlignVert) = GVAR(aligningCollimator) animationPhase "elevate_optic";
|
||||||
|
[] call FUNC(addKeys);
|
||||||
|
_func = {
|
||||||
|
_camera = (_this select 0) select 0;
|
||||||
|
if(GVAR(aligning)) then {
|
||||||
|
_pos = GVAR(aligningCollimator) modelToWorld (GVAR(aligningCollimator) selectionPosition "sight_begin");
|
||||||
|
_camera camSetPos _pos;
|
||||||
|
_camera camSetTarget (GVAR(aligningCollimator) modelToWorld (GVAR(aligningCollimator) selectionPosition "sight_end"));
|
||||||
|
camUseNVG ace_sys_nvg_on;
|
||||||
|
_camera camSetFov 0.2;
|
||||||
|
_camera camCommit 0.1;
|
||||||
|
} else {
|
||||||
|
_camera cameraEffect ["terminate", "back"];
|
||||||
|
cutrsc ["default", "PLAIN DOWN"];
|
||||||
|
camDestroy _camera;
|
||||||
|
[] call FUNC(removeKeys);
|
||||||
|
[(_this select 1)] call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
GVAR(aligning) = true;
|
||||||
|
[_func, 0.05, [_camera]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(addKeys) = {
|
||||||
|
GVAR(key_dn) = (findDisplay 46) displayAddEventHandler["KeyDown", '["KeyDown", _this] call FUNC(keyEvent)'];
|
||||||
|
GVAR(key_up) = (findDisplay 46) displayAddEventHandler["KeyUp", '["KeyUp", _this] call FUNC(keyEvent)'];
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(removeKeys) = {
|
||||||
|
(findDisplay 46) displayRemoveEventhandler ["KeyDown", GVAR(key_dn)];
|
||||||
|
(findDisplay 46) displayRemoveEventhandler ["KeyUp", GVAR(key_up)];
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(keyEvent) = {
|
||||||
|
_event = _this select 0;
|
||||||
|
_parameters = _this select 1;
|
||||||
|
|
||||||
|
if (GVAR(presstime) == time) exitwith {false};
|
||||||
|
GVAR(presstime) = time;
|
||||||
|
switch(_event) do {
|
||||||
|
case "KeyDown": {
|
||||||
|
_key = _parameters select 1;
|
||||||
|
switch(_key) do {
|
||||||
|
case 0xCD: { GVAR(collimatorAlignHorz) = GVAR(collimatorAlignHorz) + 0.25; };
|
||||||
|
case 0xCB: { GVAR(collimatorAlignHorz) = GVAR(collimatorAlignHorz) - 0.25; };
|
||||||
|
case 0xD0: { GVAR(collimatorAlignVert) = GVAR(collimatorAlignVert) + 0.25; };
|
||||||
|
case 0xC8: { GVAR(collimatorAlignVert) = GVAR(collimatorAlignVert) - 0.25; };
|
||||||
|
case 1: { GVAR(aligning) = false; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if ((GVAR(aligningCollimator) animationPhase "rotate_optic") != GVAR(collimatorAlignHorz)) then {
|
||||||
|
GVAR(aligningCollimator) animate ["rotate_optic", GVAR(collimatorAlignHorz)];
|
||||||
|
};
|
||||||
|
if ((GVAR(aligningCollimator) animationPhase "elevate_optic") != GVAR(collimatorAlignVert)) then {
|
||||||
|
GVAR(aligningCollimator) animate ["elevate_optic", GVAR(collimatorAlignVert)];
|
||||||
|
};
|
||||||
|
!(GVAR(aligning))
|
||||||
|
};
|
||||||
|
|
||||||
|
GVAR(placingStake) = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
AIMING CIRCLE CODE
|
||||||
|
*/
|
||||||
|
|
||||||
|
GVAR(aimingCircleViewIndex) = 1;
|
||||||
|
GVAR(aimingCircleCurrentViews) = nil;
|
||||||
|
GVAR(aimingCircleCurrentDeflection) = 0;
|
||||||
|
GVAR(aimingCircleCurrentDeflectionFine) = 0;
|
||||||
|
|
||||||
|
GVAR(aimingCircleCurrentElevation) = 0;
|
||||||
|
GVAR(aimingCircleCurrentElevationFine) = 0;
|
||||||
|
|
||||||
|
GVAR(aimingCircleCurrentOrientation) = 0;
|
||||||
|
|
||||||
|
|
||||||
|
GVAR(aimingCircleMainViews) = [
|
||||||
|
[["view_elevation", "gunEnd"], 0.5, 0, [], 0, [], 0],
|
||||||
|
["gunnerview", 0.5, 0, [], 0, [], 0],
|
||||||
|
[["view_deflection", "centerpoint"], 0.45, 0, [], 0, [], 0],
|
||||||
|
[["view_needle", "view_target_reticle"], 0.44, 0, [], 0, [], 0]
|
||||||
|
];
|
||||||
|
|
||||||
|
//
|
||||||
|
GVAR(currentAimingCircle) = nil;
|
||||||
|
GVAR(aimingCircleCam) = nil;
|
||||||
|
GVAR(aimingCircleDisplayOpen) = false;
|
||||||
|
GVAR(aimingCircleActionIds) = [];
|
||||||
|
GVAR(aimingCircleLights) = [];
|
||||||
|
GVAR(aimingCircleLightLoopPid) = [] spawn { };
|
||||||
|
|
||||||
|
|
||||||
|
FUNC(aimingCircleGetOut) = {
|
||||||
|
PARAMS_3(_circle,_pos,_unit);
|
||||||
|
|
||||||
|
if (_unit == player) then {
|
||||||
|
{
|
||||||
|
GVAR(currentAimingCircle) removeAction _x;
|
||||||
|
} forEach GVAR(aimingCircleActionIds);
|
||||||
|
_needleUnlocked = GVAR(currentAimingCircle) getVariable[QGVAR(aimingCircleNeedleUnlocked), false];
|
||||||
|
if(_needleUnlocked) then {
|
||||||
|
GVAR(currentAimingCircle) setVariable[QGVAR(aimingCircleNeedleUnlocked), false];
|
||||||
|
};
|
||||||
|
GVAR(aimingCircleActionIds) = [];
|
||||||
|
GVAR(currentAimingCircle) = nil;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleCloseDisplay) = {
|
||||||
|
GVAR(aimingCircleCam) cameraEffect ["terminate", "back"];
|
||||||
|
cutrsc ["default", "PLAIN DOWN"];
|
||||||
|
camDestroy GVAR(aimingCircleCam);
|
||||||
|
GVAR(aimingCircleCam) = nil;
|
||||||
|
GVAR(currentAimingCircle) switchCamera "INTERNAL";
|
||||||
|
GVAR(aimingCircleDisplayOpen) = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleInitDisplay) = {
|
||||||
|
GVAR(aimingCircleDisplayOpen) = true;
|
||||||
|
[GVAR(aimingCircleMainViews), GVAR(aimingCircleViewIndex)] call FUNC(aimingCircleSetView);
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleSetView) = {
|
||||||
|
_views = _this select 0;
|
||||||
|
GVAR(aimingCircleCurrentViews) = _views;
|
||||||
|
_index = _this select 1;
|
||||||
|
_selectedView = _views select _index;
|
||||||
|
if(IS_ARRAY((_selectedView select 0))) then {
|
||||||
|
GVAR(currentAimingCircle) switchCamera "INTERNAL";
|
||||||
|
_viewPositions = _selectedView select 0;
|
||||||
|
_snap = false;
|
||||||
|
_camPos = (GVAR(currentAimingCircle) modelToWorld (GVAR(currentAimingCircle) selectionPosition (_viewPositions select 0)));
|
||||||
|
_targetPos = (GVAR(currentAimingCircle) modelToWorld (GVAR(currentAimingCircle) selectionPosition (_viewPositions select 1)));
|
||||||
|
if (isNil QGVAR(aimingCircleCam)) then {
|
||||||
|
GVAR(aimingCircleCam) = "camera" camCreate _camPos;
|
||||||
|
_snap = true;
|
||||||
|
showCinemaBorder false;
|
||||||
|
};
|
||||||
|
preloadCamera _targetPos;
|
||||||
|
5 preloadObject GVAR(currentAimingCircle);
|
||||||
|
GVAR(aimingCircleCam) camPreload 5;
|
||||||
|
GVAR(aimingCircleCam) camSetPos _camPos;
|
||||||
|
GVAR(aimingCircleCam) cameraEffect ["internal", "back"];
|
||||||
|
GVAR(aimingCircleCam) camSetTarget _targetPos;
|
||||||
|
GVAR(aimingCircleCam) camSetFov (_selectedView select 1);
|
||||||
|
if(_snap) then {
|
||||||
|
GVAR(aimingCircleCam) camCommit 0;
|
||||||
|
} else {
|
||||||
|
GVAR(aimingCircleCam) camCommit (_selectedView select 2);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
GVAR(aimingCircleCam) cameraEffect ["terminate", "back"];
|
||||||
|
cutrsc ["default", "PLAIN DOWN"];
|
||||||
|
camDestroy GVAR(aimingCircleCam);
|
||||||
|
GVAR(aimingCircleCam) = nil;
|
||||||
|
if((_selectedView select 0) == "gunnerview") then {
|
||||||
|
GVAR(currentAimingCircle) switchCamera "GUNNER";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleHandleAdjustKey) = {
|
||||||
|
_key = _this select 1;
|
||||||
|
_shift = _this select 2;
|
||||||
|
_ctrl = _this select 3;
|
||||||
|
_orient = false;
|
||||||
|
if(GVAR(currentAimingCircle) animationPhase "right_cover" == 1) then {
|
||||||
|
_orient = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(_key == 205 || {_key == 203}) then {
|
||||||
|
if(!_shift) then {
|
||||||
|
_amount = 1;
|
||||||
|
if(_ctrl) then {
|
||||||
|
_amount = 0.25;
|
||||||
|
};
|
||||||
|
if(_key == 203) then {
|
||||||
|
_amount = _amount*-1;
|
||||||
|
};
|
||||||
|
if(_orient) then {
|
||||||
|
GVAR(aimingCircleCurrentOrientation) = GVAR(aimingCircleCurrentOrientation) + _amount;
|
||||||
|
GVAR(currentAimingCircle) animate ["MainTurret", GVAR(aimingCircleCurrentOrientation)];
|
||||||
|
GVAR(currentAimingCircle) animate ["orienting_knobs", GVAR(aimingCircleCurrentOrientation)];
|
||||||
|
} else {
|
||||||
|
GVAR(aimingCircleCurrentDeflectionFine) = GVAR(aimingCircleCurrentDeflectionFine) + _amount;
|
||||||
|
GVAR(aimingCircleCurrentDeflection) = GVAR(aimingCircleCurrentDeflection) + _amount;
|
||||||
|
GVAR(currentAimingCircle) animate ["upper_motion", GVAR(aimingCircleCurrentDeflection)];
|
||||||
|
GVAR(currentAimingCircle) animate ["deflection_knob", GVAR(aimingCircleCurrentDeflectionFine)];
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_amount = 100;
|
||||||
|
if(_key == 203) then {
|
||||||
|
_amount = _amount*-1;
|
||||||
|
};
|
||||||
|
if(_orient) then {
|
||||||
|
_currentPhase = GVAR(currentAimingCircle) animationPhase "MainTurret";
|
||||||
|
if(_currentPhase == GVAR(aimingCircleCurrentOrientation)) then {
|
||||||
|
GVAR(aimingCircleCurrentOrientation) = GVAR(aimingCircleCurrentOrientation) + _amount;
|
||||||
|
GVAR(currentAimingCircle) animate ["MainTurret", GVAR(aimingCircleCurrentOrientation)];
|
||||||
|
GVAR(currentAimingCircle) animate ["orienting_knobs", GVAR(aimingCircleCurrentOrientation)];
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_currentPhase = GVAR(currentAimingCircle) animationPhase "upper_motion";
|
||||||
|
if(_currentPhase == GVAR(aimingCircleCurrentDeflection)) then {
|
||||||
|
GVAR(aimingCircleCurrentDeflection) = GVAR(aimingCircleCurrentDeflection) + _amount;
|
||||||
|
GVAR(currentAimingCircle) animate ["upper_motion", GVAR(aimingCircleCurrentDeflection)];
|
||||||
|
GVAR(currentAimingCircle) animate ["deflection_knob_coarse", (GVAR(currentAimingCircle) animationPhase "deflection_knob_coarse")+(_amount/100)];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleHandleKey) = {
|
||||||
|
_key = _this select 1;
|
||||||
|
_move = false;
|
||||||
|
if(_key in [203, 205, 200, 208]) then {
|
||||||
|
_this call FUNC(aimingCircleHandleAdjustKey);
|
||||||
|
} else {
|
||||||
|
if(_key in (actionKeys "MoveForward")) then {
|
||||||
|
GVAR(aimingCircleViewIndex) = (GVAR(aimingCircleViewIndex) - 1) max 0;
|
||||||
|
_move = true;
|
||||||
|
};
|
||||||
|
if(_key in (actionKeys "MoveBack")) then {
|
||||||
|
GVAR(aimingCircleViewIndex) = (GVAR(aimingCircleViewIndex) + 1) min ((count GVAR(aimingCircleCurrentViews))-1);
|
||||||
|
_move = true;
|
||||||
|
};
|
||||||
|
if(_move) then {
|
||||||
|
[GVAR(aimingCircleMainViews), GVAR(aimingCircleViewIndex)] call FUNC(aimingCircleSetView);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleMonitor) = {
|
||||||
|
if(player in GVAR(currentAimingCircle)) then {
|
||||||
|
if(cameraView == "GUNNER") then {
|
||||||
|
if(!GVAR(aimingCircleDisplayOpen)) then {
|
||||||
|
createDialog "ace_sys_aimingpoints_aimingCircleDisplay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if(GVAR(aimingCircleDisplayOpen)) then {
|
||||||
|
[GVAR(aimingCircleMainViews), GVAR(aimingCircleViewIndex)] call FUNC(aimingCircleSetView);
|
||||||
|
};
|
||||||
|
_needleUnlocked = GVAR(currentAimingCircle) getVariable[QGVAR(aimingCircleNeedleUnlocked), false];
|
||||||
|
if(_needleUnlocked) then {
|
||||||
|
_currentAzi = GVAR(currentAimingCircle) getVariable[QGVAR(aimingCircleCurrentAzi), 0];
|
||||||
|
_currentDir = (getDir GVAR(currentAimingCircle));
|
||||||
|
if(_currentDir != _currentAzi) then {
|
||||||
|
GVAR(currentAimingCircle) setVariable[QGVAR(aimingCircleCurrentAzi), _currentDir, true];
|
||||||
|
GVAR(currentAimingCircle) animate ["compass_needle", _currentDir];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
[(_this select 1)] call CBA_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleHandleLight) = {
|
||||||
|
_ac = _this select 0;
|
||||||
|
_state = _this select 1;
|
||||||
|
if(_state) then {
|
||||||
|
_light = "#lightPoint" createVehicleLocal [0,0,0];
|
||||||
|
_light lightAttachObject [_ac, [0,0,2]];
|
||||||
|
_light setLightBrightness 0.005;
|
||||||
|
_light setLightAmbient[1, 0.5, 0.5];
|
||||||
|
_light setLightColor[1, 0.5, 0.5];
|
||||||
|
GVAR(aimingCircleLights) set[(count GVAR(aimingCircleLights)), [_ac, _light]];
|
||||||
|
_ac setVariable [QGVAR(aimingCircleLightPoint), _light];
|
||||||
|
if(scriptDone GVAR(aimingCircleLightLoopPid)) then {
|
||||||
|
GVAR(aimingCircleLightLoopPid) = [] spawn FUNC(aimingCircleLightLoop);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_lightObj = _ac getVariable QGVAR(aimingCircleLightPoint);
|
||||||
|
_ac setVariable [QGVAR(aimingCircleLightPoint), nil];
|
||||||
|
deleteVehicle _lightObj;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleLightLoop) = {
|
||||||
|
while { (count GVAR(aimingCircleLights)) > 0 } do {
|
||||||
|
_tempArray = [];
|
||||||
|
{
|
||||||
|
_ac = _x select 0;
|
||||||
|
_light = _x select 1;
|
||||||
|
if(!alive _ac) then {
|
||||||
|
deleteVehicle _light;
|
||||||
|
} else {
|
||||||
|
if(alive _light) then {
|
||||||
|
_tempArray set[(count _tempArray), _x];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} forEach GVAR(aimingCircleLights);
|
||||||
|
GVAR(aimingCircleLights) = _tempArray;
|
||||||
|
sleep 0.1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleGetIn) = {
|
||||||
|
PARAMS_3(_circle,_pos,_unit);
|
||||||
|
|
||||||
|
if (_unit == player) then {
|
||||||
|
GVAR(currentAimingCircle) = _circle;
|
||||||
|
[FUNC(aimingCircleMonitor), 0] call CBA_fnc_addPerFrameHandler;
|
||||||
|
_actionId = GVAR(currentAimingCircle) addAction ["Uncover Orienting Knobs", QPATHTO_C(fnc_uncoverKnobs.sqf), [], -100, false, true, "", "gunner _target == player && {(_target animationPhase 'right_cover') == 0}"];
|
||||||
|
GVAR(aimingCircleActionIds) set[(count GVAR(aimingCircleActionIds)), _actionId];
|
||||||
|
_actionId = GVAR(currentAimingCircle) addAction ["Cover Orienting Knobs", QPATHTO_C(fnc_coverKnobs.sqf), [], -100, false, true, "", "gunner _target == player && {(_target animationPhase 'right_cover') == 1}"];
|
||||||
|
GVAR(aimingCircleActionIds) set[(count GVAR(aimingCircleActionIds)), _actionId];
|
||||||
|
_actionId = GVAR(currentAimingCircle) addAction ["Unlock Compass Needle", QPATHTO_C(fnc_needle.sqf), [], -100, false, true, "", format["gunner _target == player && !(_target getVariable[""%1"", false])", QGVAR(aimingCircleNeedleUnlocked)]];
|
||||||
|
GVAR(aimingCircleActionIds) set[(count GVAR(aimingCircleActionIds)), _actionId];
|
||||||
|
_actionId = GVAR(currentAimingCircle) addAction ["Lock Compass Needle", QPATHTO_C(fnc_needle.sqf), [], -100, false, true, "", format["gunner _target == player && (_target getVariable[""%1"", false])", QGVAR(aimingCircleNeedleUnlocked)]];
|
||||||
|
GVAR(aimingCircleActionIds) set[(count GVAR(aimingCircleActionIds)), _actionId];
|
||||||
|
_actionId = GVAR(currentAimingCircle) addAction ["Turn On Lamp", QPATHTO_C(fnc_lamp.sqf), [], -100, false, true, "", format["gunner _target == player && !(_target getVariable[""%1"", false])", QGVAR(aimingCircleLampOn)]];
|
||||||
|
GVAR(aimingCircleActionIds) set[(count GVAR(aimingCircleActionIds)), _actionId];
|
||||||
|
_actionId = GVAR(currentAimingCircle) addAction ["Turn Off Lamp", QPATHTO_C(fnc_lamp.sqf), [], -100, false, true, "", format["gunner _target == player && (_target getVariable[""%1"", false])", QGVAR(aimingCircleLampOn)]];
|
||||||
|
GVAR(aimingCircleActionIds) set[(count GVAR(aimingCircleActionIds)), _actionId];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
FUNC(aimingCircleInit) = {
|
||||||
|
_ac = _this select 0;
|
||||||
|
_ac setVectorUp [0,0,0.000001];
|
||||||
|
};
|
||||||
|
|
||||||
|
ADDON = true;
|
BIN
TO_MERGE/ace/arty_aimingpoints/ace_arty_m2a2_aiming_circle.p3d
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/ace_arty_m2a2_aiming_circle.p3d
Normal file
Binary file not shown.
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/collimator_test.p3d
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/collimator_test.p3d
Normal file
Binary file not shown.
25
TO_MERGE/ace/arty_aimingpoints/config.cpp
Normal file
25
TO_MERGE/ace/arty_aimingpoints/config.cpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {
|
||||||
|
"ACE_Arty_AimingPost_M1A2_M58",
|
||||||
|
"ACE_Arty_AimingPost_M1A2_M59",
|
||||||
|
"ACE_Arty_M1A1_Collimator",
|
||||||
|
"ACE_Arty_M2A2_Aiming_Circle"
|
||||||
|
};
|
||||||
|
requiredVersion = REQUIRED_VERSION;
|
||||||
|
requiredAddons[] = {"CAWeapons", "ace_sys_arty", "ace_sys_interaction", "ace_main"};
|
||||||
|
author[] = {"Nou"};
|
||||||
|
VERSION_CONFIG;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
PRELOAD_ADDONS;
|
||||||
|
|
||||||
|
#include "CfgEventHandlers.hpp"
|
||||||
|
#include "CfgWeapons.hpp"
|
||||||
|
#include "CfgVehicles.hpp"
|
||||||
|
#include "dialogs.hpp"
|
||||||
|
|
||||||
|
|
BIN
TO_MERGE/ace/arty_aimingpoints/data/aimingPosts_M1A2_co.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/aimingPosts_M1A2_co.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/c2.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/c2.paa
Normal file
Binary file not shown.
13
TO_MERGE/ace/arty_aimingpoints/data/c2.rvmat
Normal file
13
TO_MERGE/ace/arty_aimingpoints/data/c2.rvmat
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
ambient[]={1,1,1,1};
|
||||||
|
diffuse[]={1,1,1,1};
|
||||||
|
forcedDiffuse[]={0,0,0,0};
|
||||||
|
emmisive[]={0,0,0,1};
|
||||||
|
specular[]={0,0,0,1};
|
||||||
|
specularPower=1;
|
||||||
|
PixelShaderID="Normal";
|
||||||
|
VertexShaderID="Basic";
|
||||||
|
class Stage0
|
||||||
|
{
|
||||||
|
texture="x\ace\Addons\sys_arty_aimingpoints\data\collimator_pattern_alpha.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_aimingpoints/data/collimator_pattern.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/collimator_pattern.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/collimator_pattern_alpha.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/collimator_pattern_alpha.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/collimator_item_ca.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/collimator_item_ca.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/m2a2_icon_ca.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/m2a2_icon_ca.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/m2a2_item_ca.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/m2a2_item_ca.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/w_stake_ca.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/equip/w_stake_ca.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_co.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_co.paa
Normal file
Binary file not shown.
123
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_mat.rvmat
Normal file
123
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_mat.rvmat
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
ambient[] = {1.28,1.2,1.55,1.0}; // ambient color shine
|
||||||
|
diffuse[] = {1.28,1.2,1.55,1.0}; // diffuse color shine
|
||||||
|
forcedDiffuse[] = {0.0,0.0,0.0,0.0}; // unused
|
||||||
|
emmisive[] = {0.0,0.0,0.0,1.0}; // emmisive color
|
||||||
|
specular[] = {0.375,0.375,0.375,1}; // specular color
|
||||||
|
|
||||||
|
specularPower = 10.0; // glosiness
|
||||||
|
|
||||||
|
PixelShaderID = "Super"; // type of pixelshader
|
||||||
|
VertexShaderID = "Super"; // type of vertexshader
|
||||||
|
/*********************************
|
||||||
|
** STAGE 1 Normal Map (NOHQ) **
|
||||||
|
*********************************/
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture = "x\ace\addons\sys_arty_aimingpoints\data\m2a2_1_nohq.paa"; // path to normal map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 2 Detail Map (DT) **
|
||||||
|
*********************************/
|
||||||
|
class Stage2
|
||||||
|
{
|
||||||
|
texture = "ca\data\destruct\metal_rough_half_dt.paa"; // path to detail map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {19.9239,-1.74311,0};
|
||||||
|
up[] = {1.74311,19.9239,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 3 Micro Map (MC) **
|
||||||
|
*********************************/
|
||||||
|
class Stage3
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; // micro color
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {0.984808,-0.173648,0};
|
||||||
|
up[] = {0.173648,0.984808,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 4 Ambient Shadow (AS) **
|
||||||
|
*********************************/
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; // path to as map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 5 Specular (SMDI) **
|
||||||
|
*********************************/
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture = "x\ace\addons\sys_arty_aimingpoints\data\m2a2_1_smdi.paa"; // path to smdi map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 6 Fresnel reflection **
|
||||||
|
*********************************/
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture = "#(ai,16,2,2)fresnel(1.4,1.16)"; // fresnel reflection terms #(ai, size,size, tile)fresnel(term 1, term 2)
|
||||||
|
uvSource = "none";
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 7 Reflection map **
|
||||||
|
*********************************/
|
||||||
|
class Stage7
|
||||||
|
{
|
||||||
|
texture = "ca\data\env_land_co.paa"; // path to reflection map
|
||||||
|
uvSource = "none"; // source of uv mapping
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 7 Thermal **
|
||||||
|
*********************************/
|
||||||
|
class StageTI
|
||||||
|
{
|
||||||
|
texture = "";
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_nohq.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_nohq.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_smdi.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_1_smdi.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_co.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_co.paa
Normal file
Binary file not shown.
124
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_mat.rvmat
Normal file
124
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_mat.rvmat
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
ambient[] = {1.28,1.2,1.55,1.0}; // ambient color shine
|
||||||
|
diffuse[] = {1.28,1.2,1.55,1.0}; // diffuse color shine
|
||||||
|
forcedDiffuse[] = {0.0,0.0,0.0,0.0}; // unused
|
||||||
|
emmisive[] = {0.0,0.0,0.0,1.0}; // emmisive color
|
||||||
|
specular[] = {0.375,0.375,0.375,1}; // specular color
|
||||||
|
|
||||||
|
specularPower = 10.0; // glosiness
|
||||||
|
|
||||||
|
PixelShaderID = "Super"; // type of pixelshader
|
||||||
|
VertexShaderID = "Super"; // type of vertexshader
|
||||||
|
/*********************************
|
||||||
|
** STAGE 1 Normal Map (NOHQ) **
|
||||||
|
*********************************/
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture = "x\ace\addons\sys_arty_aimingpoints\data\m2a2_2_nohq.paa"; // path to normal map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 2 Detail Map (DT) **
|
||||||
|
*********************************/
|
||||||
|
class Stage2
|
||||||
|
{
|
||||||
|
texture = "ca\data\destruct\metal_rough_half_dt.paa"; // path to detail map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {19.9239,-1.74311,0};
|
||||||
|
up[] = {1.74311,19.9239,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 3 Micro Map (MC) **
|
||||||
|
*********************************/
|
||||||
|
class Stage3
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; // micro color
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {0.984808,-0.173648,0};
|
||||||
|
up[] = {0.173648,0.984808,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 4 Ambient Shadow (AS) **
|
||||||
|
*********************************/
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; // path to as map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 5 Specular (SMDI) **
|
||||||
|
*********************************/
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture = "x\ace\addons\sys_arty_aimingpoints\data\m2a2_2_smdi.paa"; // path to smdi map
|
||||||
|
//texture = "#(argb,8,8,3)color(1,1,1,1,SMDI)";
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 6 Fresnel reflection **
|
||||||
|
*********************************/
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture = "#(ai,16,2,2)fresnel(1.4,1.16)"; // fresnel reflection terms #(ai, size,size, tile)fresnel(term 1, term 2)
|
||||||
|
uvSource = "none";
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 7 Reflection map **
|
||||||
|
*********************************/
|
||||||
|
class Stage7
|
||||||
|
{
|
||||||
|
texture = "ca\data\env_land_co.paa"; // path to reflection map
|
||||||
|
uvSource = "none"; // source of uv mapping
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 7 Thermal **
|
||||||
|
*********************************/
|
||||||
|
class StageTI
|
||||||
|
{
|
||||||
|
texture = "";
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_nohq.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_nohq.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_smdi.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_2_smdi.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_co.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_co.paa
Normal file
Binary file not shown.
124
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_mat.rvmat
Normal file
124
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_mat.rvmat
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
ambient[] = {1.28,1.2,1.55,1.0}; // ambient color shine
|
||||||
|
diffuse[] = {1.28,1.2,1.55,1.0}; // diffuse color shine
|
||||||
|
forcedDiffuse[] = {0.0,0.0,0.0,0.0}; // unused
|
||||||
|
emmisive[] = {0.0,0.0,0.0,1.0}; // emmisive color
|
||||||
|
specular[] = {0.375,0.375,0.375,1}; // specular color
|
||||||
|
|
||||||
|
specularPower = 10.0; // glosiness
|
||||||
|
|
||||||
|
PixelShaderID = "Super"; // type of pixelshader
|
||||||
|
VertexShaderID = "Super"; // type of vertexshader
|
||||||
|
|
||||||
|
/*********************************
|
||||||
|
** STAGE 1 Normal Map (NOHQ) **
|
||||||
|
*********************************/
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture = "x\ace\addons\sys_arty_aimingpoints\data\m2a2_3_nohq.paa"; // path to normal map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 2 Detail Map (DT) **
|
||||||
|
*********************************/
|
||||||
|
class Stage2
|
||||||
|
{
|
||||||
|
texture = "ca\data\destruct\metal_rough_half_dt.paa"; // path to detail map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {19.9239,-1.74311,0};
|
||||||
|
up[] = {1.74311,19.9239,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 3 Micro Map (MC) **
|
||||||
|
*********************************/
|
||||||
|
class Stage3
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; // micro color
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {0.984808,-0.173648,0};
|
||||||
|
up[] = {0.173648,0.984808,0};
|
||||||
|
dir[] = {0,0,0};
|
||||||
|
pos[] = {0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 4 Ambient Shadow (AS) **
|
||||||
|
*********************************/
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture = "#(argb,8,8,3)color(1,1,1,1,AS)"; // path to as map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 5 Specular (SMDI) **
|
||||||
|
*********************************/
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture = "x\ace\addons\sys_arty_aimingpoints\data\m2a2_3_smdi.paa"; // path to smdi map
|
||||||
|
uvSource = "tex"; // source of uv mapping
|
||||||
|
/*****************************
|
||||||
|
** UV Distorsion **
|
||||||
|
*****************************/
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[] = {1.0,0.0,0.0};
|
||||||
|
up[] = {0.0,1.0,0.0};
|
||||||
|
dir[] = {0.0,0.0,0.0};
|
||||||
|
pos[] = {0.0,0.0,0.0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 6 Fresnel reflection **
|
||||||
|
*********************************/
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture = "#(ai,16,2,2)fresnel(1.4,1.16)"; // fresnel reflection terms #(ai, size,size, tile)fresnel(term 1, term 2)
|
||||||
|
uvSource = "none";
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 7 Reflection map **
|
||||||
|
*********************************/
|
||||||
|
class Stage7
|
||||||
|
{
|
||||||
|
texture = "ca\data\env_land_co.paa"; // path to reflection map
|
||||||
|
uvSource = "none"; // source of uv mapping
|
||||||
|
};
|
||||||
|
/*********************************
|
||||||
|
** STAGE 7 Thermal **
|
||||||
|
*********************************/
|
||||||
|
class StageTI
|
||||||
|
{
|
||||||
|
texture = "";
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_nohq.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_nohq.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_smdi.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/m2a2_3_smdi.paa
Normal file
Binary file not shown.
75
TO_MERGE/ace/arty_aimingpoints/data/m2a2_reflector_mat.rvmat
Normal file
75
TO_MERGE/ace/arty_aimingpoints/data/m2a2_reflector_mat.rvmat
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
class StageTI
|
||||||
|
{
|
||||||
|
texture="";
|
||||||
|
};
|
||||||
|
ambient[]={1.28,1.2,1.55,1};
|
||||||
|
diffuse[]={1.28,1.2,1.55,1};
|
||||||
|
forcedDiffuse[]={0,0,0,0};
|
||||||
|
emmisive[]={0,0,0,1};
|
||||||
|
specular[]={0.99999928,0.99999994,0.99999988,1};
|
||||||
|
specularPower=100;
|
||||||
|
PixelShaderID="Super";
|
||||||
|
VertexShaderID="Super";
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture="x\ace\addons\sys_arty_aimingpoints\data\m2a2_1_nohq.tga";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage2
|
||||||
|
{
|
||||||
|
texture="ca\data\destruct\metal_rough_half_dt.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage3
|
||||||
|
{
|
||||||
|
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture="#(argb,8,8,3)color(0,1,1,1,SMDI)";
|
||||||
|
uvSource="none";
|
||||||
|
};
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture="#(ai,16,2,2)fresnel(1.4,1.16)";
|
||||||
|
uvSource="none";
|
||||||
|
};
|
||||||
|
class Stage7
|
||||||
|
{
|
||||||
|
texture="ca\data\env_land_co.paa";
|
||||||
|
uvSource="none";
|
||||||
|
};
|
78
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator.rvmat
Normal file
78
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator.rvmat
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
ambient[]={1,1,1,1};
|
||||||
|
diffuse[]={1,1,1,1};
|
||||||
|
forcedDiffuse[]={0,0,0,1};
|
||||||
|
emmisive[]={0,0,0,1};
|
||||||
|
specular[]={1,1,1,1};
|
||||||
|
specularPower=301.79999;
|
||||||
|
PixelShaderID="Super";
|
||||||
|
VertexShaderID="Super";
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture="x\ace\Addons\sys_arty_aimingpoints\data\sa_collimator_nohq.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage2
|
||||||
|
{
|
||||||
|
texture="ca\data\destruct\metal_rough_half_dt.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={10,0,0};
|
||||||
|
up[]={0,5,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage3
|
||||||
|
{
|
||||||
|
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture="x\ace\Addons\sys_arty_aimingpoints\data\sa_collimator_smdi.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture="#(ai,64,64,1)fresnel(4.74,1.16)";
|
||||||
|
uvSource="none";
|
||||||
|
};
|
||||||
|
class Stage7
|
||||||
|
{
|
||||||
|
texture="ca\data\env_land_co.paa";
|
||||||
|
uvSource="none";
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator_co.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator_co.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator_nohq.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator_nohq.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator_smdi.paa
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/data/sa_collimator_smdi.paa
Normal file
Binary file not shown.
120
TO_MERGE/ace/arty_aimingpoints/dialogs.hpp
Normal file
120
TO_MERGE/ace/arty_aimingpoints/dialogs.hpp
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
//dialogs.hpp
|
||||||
|
|
||||||
|
#define __X SafeZoneX
|
||||||
|
#define __Y SafeZoneY
|
||||||
|
#define __W SafeZoneW
|
||||||
|
#define __H SafeZoneH
|
||||||
|
|
||||||
|
#define __SX(var1) x = ((var1 * safeZoneW) + safeZoneX)
|
||||||
|
#define __SY(var1) y = ((var1 * safeZoneH) + safeZoneY)
|
||||||
|
#define __SW(var1) w = (var1 * safeZoneW)
|
||||||
|
#define __SH(var1) h = (var1 * safeZoneH)
|
||||||
|
|
||||||
|
// Control types
|
||||||
|
#define CT_STATIC 0
|
||||||
|
#define CT_BUTTON 1
|
||||||
|
#define CT_EDIT 2
|
||||||
|
#define CT_SLIDER 3
|
||||||
|
#define CT_COMBO 4
|
||||||
|
#define CT_LISTBOX 5
|
||||||
|
#define CT_LISTNBOX 102
|
||||||
|
#define CT_TOOLBOX 6
|
||||||
|
#define CT_CHECKBOXES 7
|
||||||
|
#define CT_PROGRESS 8
|
||||||
|
#define CT_HTML 9
|
||||||
|
#define CT_STATIC_SKEW 10
|
||||||
|
#define CT_ACTIVETEXT 11
|
||||||
|
#define CT_TREE 12
|
||||||
|
#define CT_STRUCTURED_TEXT 13
|
||||||
|
#define CT_CONTEXT_MENU 14
|
||||||
|
#define CT_CONTROLS_GROUP 15
|
||||||
|
#define CT_SHORTCUTBUTTON 16
|
||||||
|
#define CT_XKEYDESC 40
|
||||||
|
#define CT_XBUTTON 41
|
||||||
|
#define CT_XLISTBOX 42
|
||||||
|
#define CT_XSLIDER 43
|
||||||
|
#define CT_XCOMBO 44
|
||||||
|
#define CT_ANIMATED_TEXTURE 45
|
||||||
|
#define CT_OBJECT 80
|
||||||
|
#define CT_OBJECT_ZOOM 81
|
||||||
|
#define CT_OBJECT_CONTAINER 82
|
||||||
|
#define CT_OBJECT_CONT_ANIM 83
|
||||||
|
#define CT_LINEBREAK 98
|
||||||
|
#define CT_USER 99
|
||||||
|
#define CT_MAP 100
|
||||||
|
#define CT_MAP_MAIN 101
|
||||||
|
|
||||||
|
// Static styles
|
||||||
|
#define ST_POS 0x0F
|
||||||
|
#define ST_HPOS 0x03
|
||||||
|
#define ST_VPOS 0x0C
|
||||||
|
#define ST_LEFT 0x00
|
||||||
|
#define ST_RIGHT 0x01
|
||||||
|
#define ST_CENTER 0x02
|
||||||
|
#define ST_DOWN 0x04
|
||||||
|
#define ST_UP 0x08
|
||||||
|
#define ST_VCENTER 0x0c
|
||||||
|
|
||||||
|
#define ST_TYPE 0xF0
|
||||||
|
#define ST_SINGLE 0
|
||||||
|
#define ST_MULTI 16
|
||||||
|
#define ST_TITLE_BAR 32
|
||||||
|
#define ST_PICTURE 48
|
||||||
|
#define ST_FRAME 64
|
||||||
|
#define ST_BACKGROUND 80
|
||||||
|
#define ST_GROUP_BOX 96
|
||||||
|
#define ST_GROUP_BOX2 112
|
||||||
|
#define ST_HUD_BACKGROUND 128
|
||||||
|
#define ST_TILE_PICTURE 144
|
||||||
|
#define ST_WITH_RECT 160
|
||||||
|
#define ST_LINE 176
|
||||||
|
|
||||||
|
#define ST_SHADOW 0x100
|
||||||
|
#define ST_NO_RECT 0x200
|
||||||
|
#define ST_KEEP_ASPECT_RATIO 0x800
|
||||||
|
|
||||||
|
#define Mainback_IDC 1104
|
||||||
|
//MP Menu
|
||||||
|
#define Paused_Title_IDC 523
|
||||||
|
#define CA_B_SAVE_IDC 103
|
||||||
|
#define CA_B_Skip_IDC 1002
|
||||||
|
#define CA_B_REVERT_IDC 119
|
||||||
|
#define CA_B_Respawn_IDC 1010
|
||||||
|
#define CA_B_Options_IDC 101
|
||||||
|
#define CA_B_Abort_IDC 104
|
||||||
|
//SP Menu
|
||||||
|
#define CA_PGTitle_IDC 523
|
||||||
|
#define PG_Save_IDC 103
|
||||||
|
#define PG_Skip_IDC 1002
|
||||||
|
#define PG_Revert_IDC 119
|
||||||
|
#define PG_Again_IDC 1003
|
||||||
|
#define PG_Options_IDC 101
|
||||||
|
#define PG_Abort_IDC 104
|
||||||
|
|
||||||
|
#define ACE_SETTINGS_IDC 113801
|
||||||
|
#define ACE_LOGO_IDC 113805
|
||||||
|
|
||||||
|
#define FontM "Zeppelin32"
|
||||||
|
#define ClrWhite 1,1,1
|
||||||
|
#define ClrBlack 0,0,0
|
||||||
|
#define ClrGray 0.5,0.5,0.5
|
||||||
|
#define ClrBlue 0.2,0.5,1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ace_sys_aimingpoints_aimingCircleDisplay {
|
||||||
|
idd = 7832;
|
||||||
|
movingEnable = 0;
|
||||||
|
name = "ace_sys_aimingpoints_aimingCircleDisplay";
|
||||||
|
onLoad = "_this call ace_sys_arty_aimingpoints_fnc_aimingCircleInitDisplay";
|
||||||
|
onUnload = "_this call ace_sys_arty_aimingpoints_fnc_aimingCircleCloseDisplay";
|
||||||
|
onKeyDown = "_this call ace_sys_arty_aimingpoints_fnc_aimingCircleHandleKey";
|
||||||
|
class controlsBackground {
|
||||||
|
};
|
||||||
|
class objects {
|
||||||
|
// define controls here
|
||||||
|
};
|
||||||
|
class controls {
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
4
TO_MERGE/ace/arty_aimingpoints/fnc_coverKnobs.sqf
Normal file
4
TO_MERGE/ace/arty_aimingpoints/fnc_coverKnobs.sqf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
//fnc_coverKnobs.sqf
|
||||||
|
#include "\x\ace\addons\sys_arty_aimingpoints\script_component.hpp"
|
||||||
|
GVAR(currentAimingCircle) animate ["right_cover", 0];
|
||||||
|
GVAR(currentAimingCircle) animate ["left_cover", 0];
|
17
TO_MERGE/ace/arty_aimingpoints/fnc_isKindOf.sqf
Normal file
17
TO_MERGE/ace/arty_aimingpoints/fnc_isKindOf.sqf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private["_ret", "_parent"];
|
||||||
|
|
||||||
|
PARAMS_3(_mag,_type,_superClass);
|
||||||
|
|
||||||
|
_ret = false;
|
||||||
|
|
||||||
|
_parent = configName (inheritsFrom ( configFile >> _superClass >> _mag));
|
||||||
|
while { _parent != "" } do {
|
||||||
|
if (_parent == _type) exitWith {
|
||||||
|
_ret = true;
|
||||||
|
};
|
||||||
|
_parent = configName (inheritsFrom ( configFile >> _superClass >> _parent));
|
||||||
|
};
|
||||||
|
|
||||||
|
_ret
|
5
TO_MERGE/ace/arty_aimingpoints/fnc_lamp.sqf
Normal file
5
TO_MERGE/ace/arty_aimingpoints/fnc_lamp.sqf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
//fnc_lamp.sqf
|
||||||
|
#include "\x\ace\addons\sys_arty_aimingpoints\script_component.hpp"
|
||||||
|
_currentState = GVAR(currentAimingCircle) getVariable [QGVAR(aimingCircleLampOn), false];
|
||||||
|
GVAR(currentAimingCircle) setVariable [QGVAR(aimingCircleLampOn), !_currentState, true];
|
||||||
|
[QGVAR(aimingCircleLightEvent), [GVAR(currentAimingCircle), !_currentState]] call CBA_fnc_globalEvent;
|
110
TO_MERGE/ace/arty_aimingpoints/fnc_menuDef_stake.sqf
Normal file
110
TO_MERGE/ace/arty_aimingpoints/fnc_menuDef_stake.sqf
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
#include "\ca\editor\Data\Scripts\dikCodes.h"
|
||||||
|
|
||||||
|
TRACE_1("enter", _this);
|
||||||
|
|
||||||
|
private ["_menuDef", "_target", "_params", "_menuName", "_menuRsc", "_menus", "_goodStake", "_obj", "_objList"];
|
||||||
|
PARAMS_2(_target,_params);
|
||||||
|
|
||||||
|
_menuDef = [];
|
||||||
|
_menuName = "";
|
||||||
|
_menuRsc = "popup";
|
||||||
|
|
||||||
|
if (typeName _params == typeName []) then {
|
||||||
|
if (count _params < 1) exitWith {diag_log format["Error: Invalid params: %1, %2", _this, __FILE__];};
|
||||||
|
_menuName = _params select 0;
|
||||||
|
_menuRsc = if (count _params > 1) then {_params select 1} else {_menuRsc};
|
||||||
|
} else {
|
||||||
|
_menuName = _params;
|
||||||
|
};
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if (GVAR(placingStake)) exitWith {
|
||||||
|
TRACE_1("EXITINGGGG", GVAR(placingStake));
|
||||||
|
_menuDef
|
||||||
|
};
|
||||||
|
|
||||||
|
_goodStake = false;
|
||||||
|
_isCollimator = false;
|
||||||
|
_isAimingCircle = false;
|
||||||
|
GVAR(pickupStakeObject) = nil;
|
||||||
|
_obj = nil;
|
||||||
|
if(_target isKindOf "ACE_Arty_AimingStakes" || {_target isKindOf "ACE_Arty_M2A2_Aiming_Circle"}) then {
|
||||||
|
_obj = _target;
|
||||||
|
_goodStake = true;
|
||||||
|
if (typeOf _obj == "ACE_Arty_M1A1_Collimator") then {
|
||||||
|
_isCollimator = true;
|
||||||
|
};
|
||||||
|
if(typeOf _obj == "ACE_Arty_M2A2_Aiming_Circle") then {
|
||||||
|
_isAimingCircle = true;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
_objList = (getPos player) nearObjects["ACE_Arty_AimingStakes", 1.5];
|
||||||
|
|
||||||
|
|
||||||
|
if (count _objList > 0) then {
|
||||||
|
{
|
||||||
|
private["_stake", "_rPos"];
|
||||||
|
_stake = _x;
|
||||||
|
|
||||||
|
_rPos = player worldToModel (getPos _stake);
|
||||||
|
TRACE_2("checking", _stake, _rPos);
|
||||||
|
if (_rPos select 1 > 0) exitWith {
|
||||||
|
TRACE_1("done!", _stake);
|
||||||
|
_obj = _stake;
|
||||||
|
_goodStake = true;
|
||||||
|
if (typeOf _stake == "ACE_Arty_M1A1_Collimator") then {
|
||||||
|
_isCollimator = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} forEach _objList;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!_goodStake) exitWith {
|
||||||
|
TRACE_1("EXITINGGGG BAD STAKE", _menuDef,GVAR(placingStake));
|
||||||
|
_menuDef
|
||||||
|
};
|
||||||
|
|
||||||
|
GVAR(pickupStakeObject) = _obj;
|
||||||
|
TRACE_1("doing menu");
|
||||||
|
_menus =
|
||||||
|
[
|
||||||
|
[
|
||||||
|
["main", "", _menuRsc],
|
||||||
|
[
|
||||||
|
[localize "STR_ACE_ARTY_ALLIGN_COLLIMATOR",
|
||||||
|
{ [GVAR(pickupStakeObject)] call FUNC(onAlignCollimator) },
|
||||||
|
"", "", "", -1,
|
||||||
|
1, (_goodStake && {_isCollimator})],
|
||||||
|
// Moved to sys_cargo\fnc_carry!
|
||||||
|
[localize "STR_ACE_ARTY_PICKUP_STAKE",
|
||||||
|
{ [GVAR(pickupStakeObject)] call FUNC(onPickupStake) },
|
||||||
|
"", "", "", -1,
|
||||||
|
1, (_goodStake)],
|
||||||
|
[localize "STR_ACE_ARTY_RAISE_STAKE",
|
||||||
|
{ [GVAR(pickupStakeObject), 0.25] call FUNC(onModifyStake) },
|
||||||
|
"", "", "", -1,
|
||||||
|
1, (_goodStake && {!_isCollimator} && {!_isAimingCircle})],
|
||||||
|
[localize "STR_ACE_ARTY_LOWER_STAKE",
|
||||||
|
{ [GVAR(pickupStakeObject), -0.25] call FUNC(onModifyStake) },
|
||||||
|
"", "", "", -1,
|
||||||
|
1, (_goodStake && {!_isCollimator} && {!_isAimingCircle})]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
{
|
||||||
|
if (_x select 0 select 0 == _menuName) exitWith {_menuDef = _x};
|
||||||
|
} forEach _menus;
|
||||||
|
|
||||||
|
if (count _menuDef == 0) then {
|
||||||
|
hintC format ["Error: Menu not found: %1\n%2\n%3", str _menuName, if (_menuName == "") then {_this}else{""}, __FILE__];
|
||||||
|
diag_log format ["Error: Menu not found: %1, %2, %3", str _menuName, _this, __FILE__];
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_1("",_menuDef);
|
||||||
|
if(isNil "_menuDef") then {_menuDef = [] };
|
||||||
|
_menuDef // return value
|
64
TO_MERGE/ace/arty_aimingpoints/fnc_menuDef_stake_self.sqf
Normal file
64
TO_MERGE/ace/arty_aimingpoints/fnc_menuDef_stake_self.sqf
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
#include "\ca\editor\Data\Scripts\dikCodes.h"
|
||||||
|
|
||||||
|
TRACE_1("enter", _this);
|
||||||
|
|
||||||
|
private ["_menuDef", "_target", "_params", "_menuName", "_menuRsc", "_menus", "_playerHasStake", "_wepArray"];
|
||||||
|
private [];
|
||||||
|
// _this==[_target, _menuNameOrParams]
|
||||||
|
_target = _this select 0;
|
||||||
|
_params = _this select 1;
|
||||||
|
|
||||||
|
_menuDef = [];
|
||||||
|
_menuName = "";
|
||||||
|
_menuRsc = "popup";
|
||||||
|
|
||||||
|
if (typeName _params == typeName []) then {
|
||||||
|
if (count _params < 1) exitWith {diag_log format["Error: Invalid params: %1, %2", _this, __FILE__];};
|
||||||
|
_menuName = _params select 0;
|
||||||
|
_menuRsc = if (count _params > 1) then {_params select 1} else {_menuRsc};
|
||||||
|
} else {
|
||||||
|
_menuName = _params;
|
||||||
|
};
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if (GVAR(placingStake)) exitWith { _menuDef };
|
||||||
|
|
||||||
|
_playerHasStake = false;
|
||||||
|
GVAR(selfInteractStake) = nil;
|
||||||
|
{
|
||||||
|
private["_wep"];
|
||||||
|
_wep = _x;
|
||||||
|
if ([_wep, "ACE_BaseAimingPost", "CfgWeapons"] call FUNC(isKindOf)) exitWith {
|
||||||
|
GVAR(selfInteractStake) = _wep;
|
||||||
|
_playerHasStake = true;
|
||||||
|
};
|
||||||
|
} forEach (weapons player);
|
||||||
|
|
||||||
|
_playerInVehicle = (vehicle player != player);
|
||||||
|
|
||||||
|
_menus =
|
||||||
|
[
|
||||||
|
[
|
||||||
|
["main", localize "STR_ACE_MENU_EQUIPPLAYER", _menuRsc],
|
||||||
|
[
|
||||||
|
[localize "STR_ACE_ARTY_PLACE_STAKE",
|
||||||
|
{ [GVAR(selfInteractStake)] call FUNC(onPlaceStake) },
|
||||||
|
"", "", "", -1,
|
||||||
|
1, !_playerInVehicle && {_playerHasStake}]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
{
|
||||||
|
if (_x select 0 select 0 == _menuName) exitWith {_menuDef = _x};
|
||||||
|
} forEach _menus;
|
||||||
|
|
||||||
|
if (count _menuDef == 0) then {
|
||||||
|
hintC format ["Error: Menu not found: %1\n%2\n%3", str _menuName, if (_menuName == "") then {_this}else{""}, __FILE__];
|
||||||
|
diag_log format ["Error: Menu not found: %1, %2, %3", str _menuName, _this, __FILE__];
|
||||||
|
};
|
||||||
|
|
||||||
|
_menuDef // return value
|
4
TO_MERGE/ace/arty_aimingpoints/fnc_needle.sqf
Normal file
4
TO_MERGE/ace/arty_aimingpoints/fnc_needle.sqf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
//fnc_needle.sqf
|
||||||
|
#include "\x\ace\addons\sys_arty_aimingpoints\script_component.hpp"
|
||||||
|
_needleUnlocked = GVAR(currentAimingCircle) getVariable[QGVAR(aimingCircleNeedleUnlocked), false];
|
||||||
|
GVAR(currentAimingCircle) setVariable[QGVAR(aimingCircleNeedleUnlocked), !_needleUnlocked];
|
2
TO_MERGE/ace/arty_aimingpoints/fnc_onFineMoveStake.sqf
Normal file
2
TO_MERGE/ace/arty_aimingpoints/fnc_onFineMoveStake.sqf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
18
TO_MERGE/ace/arty_aimingpoints/fnc_onModifyStake.sqf
Normal file
18
TO_MERGE/ace/arty_aimingpoints/fnc_onModifyStake.sqf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private["_pos", "_atl"];
|
||||||
|
|
||||||
|
PARAMS_2(_stake,_action);
|
||||||
|
|
||||||
|
_atl = getPosATL _stake;
|
||||||
|
if ((_atl select 2) <= -1.75 && {_action < 0}) exitWith { };
|
||||||
|
if ((_atl select 2) >= 0 && {_action > 0}) exitWith { };
|
||||||
|
|
||||||
|
_pos = getPos _stake;
|
||||||
|
_pos set[2, (_pos select 2) + _action];
|
||||||
|
|
||||||
|
_stake setPos _pos;
|
||||||
|
{
|
||||||
|
_x reveal _obj;
|
||||||
|
} forEach playableUnits;
|
13
TO_MERGE/ace/arty_aimingpoints/fnc_onPickupStake.sqf
Normal file
13
TO_MERGE/ace/arty_aimingpoints/fnc_onPickupStake.sqf
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private["_stake", "_class"];
|
||||||
|
//TRACE_1("", _this);
|
||||||
|
|
||||||
|
PARAMS_1(_stake);
|
||||||
|
|
||||||
|
_class = typeOf _stake;
|
||||||
|
|
||||||
|
// deleteVehicle _stake;
|
||||||
|
|
||||||
|
[_stake] call FUNC(onPlaceStake);
|
97
TO_MERGE/ace/arty_aimingpoints/fnc_onPlaceStake.sqf
Normal file
97
TO_MERGE/ace/arty_aimingpoints/fnc_onPlaceStake.sqf
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#define ACE_TEXT_RED(Text) ("<t color='#FF0000'>" + ##Text + "</t>")
|
||||||
|
#define ACE_TEXT_SILVER(Text) ("<t color='#C0C0C0'>" + ##Text + "</t>")
|
||||||
|
#define ACE_TEXT_ORANGE(Text) ("<t color='#ffa500'>" + ##Text + "</t>")
|
||||||
|
|
||||||
|
TRACE_1("enter", _this);
|
||||||
|
|
||||||
|
GVAR(placingStake) = true;
|
||||||
|
|
||||||
|
// begin stake placement
|
||||||
|
private["_localStake", "_pos", "_dir"];
|
||||||
|
|
||||||
|
PARAMS_1(_stake);
|
||||||
|
if(IS_STRING(_stake)) then {
|
||||||
|
player removeWeapon _stake;
|
||||||
|
|
||||||
|
_localStake = _stake createVehicle [0,0,0];
|
||||||
|
} else {
|
||||||
|
_localStake = _stake;
|
||||||
|
};
|
||||||
|
TRACE_1("", _localStake);
|
||||||
|
|
||||||
|
_pos = player modelToWorld [0, 1, 0];
|
||||||
|
_dir = getDir player;
|
||||||
|
_stakeType = typeOf _localStake;
|
||||||
|
[_pos, _dir, _localStake, _stakeType] spawn {
|
||||||
|
private["_gunArray", "_confirmPlaceAction", "_cancelPlaceAction"];
|
||||||
|
|
||||||
|
PARAMS_4(_pos,_dir,_obj,_stakeType);
|
||||||
|
|
||||||
|
player setVariable [QGVAR(stakePlaced), false, false];
|
||||||
|
player setVariable [QGVAR(stakeCancel), false, false];
|
||||||
|
player setVariable [QGVAR(registeredGun),objNull,false];
|
||||||
|
|
||||||
|
_confirmPlaceAction = player addAction[ACE_TEXT_SILVER(localize "STR_ACE_ARTY_PLACE_STAKE"),QPATHTO_F(fnc_onPlaceStakeConfirm),[_obj],-99,false,false,"","_target == player"];
|
||||||
|
_cancelPlaceAction = player addAction[ACE_TEXT_RED(localize "STR_ACE_ARTY_TAKE_STAKE"),QPATHTO_F(fnc_onPlaceStakeCancel),[_obj],-100,false,false,"","_target == player"];
|
||||||
|
_registerGunAction = player addAction[ACE_TEXT_ORANGE(localize "STR_ACE_ARTY_REGISTERGUN2STAKE"),QPATHTO_F(fnc_onRegisterGun),[],-101,false,false,"","_target == player && {cursorTarget isKindOf ""StaticWeapon""}"];
|
||||||
|
|
||||||
|
_obj attachTo [player, [0, 1, 0]];
|
||||||
|
_obj setDir 0;
|
||||||
|
if (typeOf _obj == "ACE_Arty_M1A1_Collimator") then {
|
||||||
|
_obj setDir 180;
|
||||||
|
};
|
||||||
|
_atlPos = [0,0,0];
|
||||||
|
_aslPos = [0,0,0];
|
||||||
|
while {!(player getVariable QGVAR(stakePlaced)) && {!(player getVariable QGVAR(stakeCancel))} && {alive player}} do{
|
||||||
|
private["_distance", "_gun"];
|
||||||
|
_pos = getPos _obj;
|
||||||
|
_atlPos = getPosATL _obj;
|
||||||
|
_aslPos = getPosASL _obj;
|
||||||
|
_dir = getDir player;
|
||||||
|
if (typeOf _obj == "ACE_Arty_M1A1_Collimator") then {
|
||||||
|
_dir = (_dir + 180) mod 360;
|
||||||
|
};
|
||||||
|
// _obj setDir _dir;
|
||||||
|
// _obj setPos _pos;
|
||||||
|
// _obj setVectorUp[0,0,0.00001]; // fix incase we are on an incline
|
||||||
|
// TODO: show the "distance from gun" and "mil from gun" hints...? or a non-interrupt dialog?
|
||||||
|
//_gun = player getVariable [QGVAR(registeredGun),objNull];
|
||||||
|
_gun = [] call FUNC(findGun); // keep working code in till you find a better fix rocko! :O
|
||||||
|
_distance = (_obj distance _gun) max 0;
|
||||||
|
_dn = if (!isNull _gun) then { getText(configFile >> "CfgVehicles" >> typeOf _gun >> "displayName") } else { "" };
|
||||||
|
hintSilent format[localize "STR_ACE_ARTY_DISTANCE2GUN",_dn,_distance];
|
||||||
|
sleep 0.1;
|
||||||
|
};
|
||||||
|
detach _obj;
|
||||||
|
if ((player getVariable QGVAR(stakePlaced)) && {alive player}) then {
|
||||||
|
// deleteVehicle _obj;
|
||||||
|
|
||||||
|
// _obj = _stakeType createVehicle _pos;
|
||||||
|
// player sideChat format["atl: %1, agl: %2", (_atlPos select 2), (_pos select 2)];
|
||||||
|
// if(abs((_atlPos select 2)-(_pos select 2)) < 0.05) then {
|
||||||
|
// _aslPos set[2, (getTerrainHeightASL [_aslPos select 0, _aslPos select 1])];
|
||||||
|
// };
|
||||||
|
|
||||||
|
_obj setPosASL _aslPos;
|
||||||
|
_obj setDir _dir;
|
||||||
|
_obj setVectorUp[0,0,0.00001]; // fix incase we are on an incline
|
||||||
|
{
|
||||||
|
(group _x) reveal _obj;
|
||||||
|
} forEach playableUnits;
|
||||||
|
(group player) reveal _obj;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
deleteVehicle _obj;
|
||||||
|
player addWeapon _stakeType;
|
||||||
|
};
|
||||||
|
|
||||||
|
// remove action item menus
|
||||||
|
player removeAction _confirmPlaceAction;
|
||||||
|
player removeAction _cancelPlaceAction;
|
||||||
|
player removeAction _registerGunAction;
|
||||||
|
|
||||||
|
GVAR(placingStake) = false;
|
||||||
|
};
|
@ -0,0 +1,3 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
player setVariable [QGVAR(stakeCancel), true, false];
|
@ -0,0 +1,3 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
player setVariable [QGVAR(stakePlaced), true, false];
|
9
TO_MERGE/ace/arty_aimingpoints/fnc_onRegisterGun.sqf
Normal file
9
TO_MERGE/ace/arty_aimingpoints/fnc_onRegisterGun.sqf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PARAMS_3(_target,_caller,_id);
|
||||||
|
|
||||||
|
if (cursorTarget isKindOf "StaticWeapon") then {
|
||||||
|
player removeAction _id;
|
||||||
|
player setVariable [QGVAR(registeredGun),cursorTarget,false];
|
||||||
|
};
|
4
TO_MERGE/ace/arty_aimingpoints/fnc_uncoverKnobs.sqf
Normal file
4
TO_MERGE/ace/arty_aimingpoints/fnc_uncoverKnobs.sqf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
//fnc_uncoverKnobs.sqf
|
||||||
|
#include "\x\ace\addons\sys_arty_aimingpoints\script_component.hpp"
|
||||||
|
GVAR(currentAimingCircle) animate ["right_cover", 1];
|
||||||
|
GVAR(currentAimingCircle) animate ["left_cover", 1];
|
79
TO_MERGE/ace/arty_aimingpoints/license.txt
Normal file
79
TO_MERGE/ace/arty_aimingpoints/license.txt
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
License (short)
|
||||||
|
===============
|
||||||
|
|
||||||
|
You are free:
|
||||||
|
- to Share — to copy, distribute and transmit the work
|
||||||
|
|
||||||
|
Under the following conditions:
|
||||||
|
- Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
|
||||||
|
- Noncommercial — You may not use this work for commercial purposes.
|
||||||
|
- No Derivative Works — You may not alter, transform, or build upon this work.
|
||||||
|
|
||||||
|
With the understanding that:
|
||||||
|
|
||||||
|
Waiver — Any of the above conditions can be waived if you get permission from the copyright holder.
|
||||||
|
|
||||||
|
Public Domain — Where the work or any of its elements is in the public domain under applicable law, that status is in no way affected by the license.
|
||||||
|
|
||||||
|
Other Rights — In no way are any of the following rights affected by the license:
|
||||||
|
- Your fair dealing or fair use rights, or other applicable copyright exceptions and limitations;
|
||||||
|
- The author's moral rights;
|
||||||
|
- Rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights.
|
||||||
|
|
||||||
|
Notice — For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page.
|
||||||
|
|
||||||
|
|
||||||
|
Full license text
|
||||||
|
=================
|
||||||
|
|
||||||
|
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||||
|
|
||||||
|
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
|
||||||
|
"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
|
||||||
|
"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
|
||||||
|
"Distribute" means to make available to the public the original and copies of the Work through sale or other transfer of ownership.
|
||||||
|
"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
|
||||||
|
"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
|
||||||
|
"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
|
||||||
|
"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
|
||||||
|
"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
|
||||||
|
"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
|
||||||
|
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
|
||||||
|
|
||||||
|
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
|
||||||
|
|
||||||
|
to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; and,
|
||||||
|
to Distribute and Publicly Perform the Work including as incorporated in Collections.
|
||||||
|
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d).
|
||||||
|
|
||||||
|
4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
|
||||||
|
|
||||||
|
You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested.
|
||||||
|
You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works.
|
||||||
|
If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
|
||||||
|
For the avoidance of doubt:
|
||||||
|
|
||||||
|
Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
|
||||||
|
Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and,
|
||||||
|
Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b).
|
||||||
|
Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation.
|
||||||
|
5. Representations, Warranties and Disclaimer
|
||||||
|
|
||||||
|
UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
7. Termination
|
||||||
|
|
||||||
|
This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
|
||||||
|
Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
|
||||||
|
8. Miscellaneous
|
||||||
|
|
||||||
|
Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
|
||||||
|
If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
|
||||||
|
No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
|
||||||
|
This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
|
||||||
|
The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
|
320
TO_MERGE/ace/arty_aimingpoints/model.cfg
Normal file
320
TO_MERGE/ace/arty_aimingpoints/model.cfg
Normal file
@ -0,0 +1,320 @@
|
|||||||
|
class CfgSkeletons {
|
||||||
|
class Default {
|
||||||
|
isDiscrete = 1;
|
||||||
|
skeletonInherit = "";
|
||||||
|
skeletonBones[] = {};
|
||||||
|
};
|
||||||
|
class ACE_ARTY_AimingStakes_Skeleton: Default {
|
||||||
|
skeletonInherit = "Default";
|
||||||
|
};
|
||||||
|
class collimator_test_skeleton: Default {
|
||||||
|
skeletonInherit = "Default";
|
||||||
|
skeletonBones[] = {
|
||||||
|
"stand","",
|
||||||
|
"Optics","stand",
|
||||||
|
"pattern","Optics",
|
||||||
|
"ll","pattern",
|
||||||
|
"lr","pattern",
|
||||||
|
"ur","pattern",
|
||||||
|
"ul","pattern"
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class sa_collimator_skeleton: Default {
|
||||||
|
skeletonInherit = "Default";
|
||||||
|
skeletonBones[] = {
|
||||||
|
"body","",
|
||||||
|
"optic_rotate_body","body",
|
||||||
|
"optic","optic_rotate_body"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_m2a2_aiming_circle_skeleton: Default {
|
||||||
|
skeletonInherit = "Default";
|
||||||
|
skeletonBones[] = {
|
||||||
|
"base","",
|
||||||
|
"OrientKnobLeft","base",
|
||||||
|
"OrientKnobRight","base",
|
||||||
|
"KnobCapLeft","base",
|
||||||
|
"KnobCapRight","base",
|
||||||
|
"LowerMotion","base",
|
||||||
|
"needle","base",
|
||||||
|
"UpperMotion","LowerMotion",
|
||||||
|
"MaskBox","LowerMotion",
|
||||||
|
"eye","UpperMotion",
|
||||||
|
"DeflectionKnob","UpperMotion",
|
||||||
|
"DeflectionKnobCoarse","DeflectionKnob",
|
||||||
|
"ElevationKnob","UpperMotion",
|
||||||
|
"ElevationKnobCoarse","ElevationKnob",
|
||||||
|
"ElevationOptic","UpperMotion"
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CfgModels {
|
||||||
|
class Default {
|
||||||
|
sectionsInherit = "";
|
||||||
|
sections[] = {};
|
||||||
|
};
|
||||||
|
class ACE_ARTY_AimingStakes: Default {
|
||||||
|
sectionsInherit = "Default";
|
||||||
|
sections[] = {"all","stake","lamps","lamp_0","lamp_1","lightpoint_0","lightpoint_1"};
|
||||||
|
skeletonName = "ACE_ARTY_AimingStakes_Skeleton";
|
||||||
|
class Animations {};
|
||||||
|
};
|
||||||
|
class ACE_ARTY_AimingStakesW: ACE_ARTY_AimingStakes {};
|
||||||
|
|
||||||
|
class ace_arty_m2a2_aiming_circle: Default {
|
||||||
|
sectionsInherit = "Default";
|
||||||
|
sections[] = {};
|
||||||
|
skeletonName = "ace_arty_m2a2_aiming_circle_skeleton";
|
||||||
|
class Animations {
|
||||||
|
class MainGun {
|
||||||
|
type="rotation";
|
||||||
|
selection="ElevationOptic";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
source="user";
|
||||||
|
axis="optic_elevation_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
initPhase=0;
|
||||||
|
maxValue="800";
|
||||||
|
minValue="-400";
|
||||||
|
angle1="rad -45";
|
||||||
|
angle0="rad 22.5";
|
||||||
|
};
|
||||||
|
class MainTurret {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="LowerMotion";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="motion_rotation_axis";
|
||||||
|
animPeriod=0.005;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
angle0="rad -360";
|
||||||
|
angle1="rad +360";
|
||||||
|
};
|
||||||
|
class upper_motion {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="UpperMotion";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="motion_rotation_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
initPhase=0;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
angle0="rad -360";
|
||||||
|
angle1="rad +360";
|
||||||
|
};
|
||||||
|
class deflection_knob {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="DeflectionKnob";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="deflection_rotation_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
minValue="-100";
|
||||||
|
maxValue="100";
|
||||||
|
angle0="rad -360";
|
||||||
|
angle1="rad +360";
|
||||||
|
};
|
||||||
|
class deflection_knob_coarse {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="DeflectionKnobCoarse";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="deflection_rotation_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
minValue="-64";
|
||||||
|
maxValue="64";
|
||||||
|
angle0="rad -720";
|
||||||
|
angle1="rad +720";
|
||||||
|
};
|
||||||
|
class elevation_knob {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="ElevationKnob";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="elevation_rotation_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
minValue="-100";
|
||||||
|
maxValue="100";
|
||||||
|
angle1="rad -360";
|
||||||
|
angle0="rad +360";
|
||||||
|
};
|
||||||
|
class elevation_knob_coarse {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="ElevationKnobCoarse";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="elevation_rotation_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
minValue="-4";
|
||||||
|
maxValue="8";
|
||||||
|
angle1="rad -360";
|
||||||
|
angle0="rad +360";
|
||||||
|
};
|
||||||
|
class orienting_knobs {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="OrientingKnobs";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="orienting_knob_axis";
|
||||||
|
animPeriod=0.01;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
angle0="rad -360";
|
||||||
|
angle1="rad +360";
|
||||||
|
};
|
||||||
|
class left_cover {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="KnobCapLeft";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="cover_left_rotation_axis";
|
||||||
|
animPeriod=1;
|
||||||
|
minValue="0";
|
||||||
|
maxValue="1";
|
||||||
|
angle0="rad 0";
|
||||||
|
angle1="rad +45";
|
||||||
|
};
|
||||||
|
class right_cover {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="KnobCapRight";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="cover_right_rotation_axis";
|
||||||
|
animPeriod=1;
|
||||||
|
minValue="0";
|
||||||
|
maxValue="1";
|
||||||
|
angle0="rad 0";
|
||||||
|
angle1="rad -45";
|
||||||
|
};
|
||||||
|
class compass_needle
|
||||||
|
{
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
animPeriod = 0;//Unknown
|
||||||
|
sourceAddress = "loop";
|
||||||
|
selection="needle";
|
||||||
|
axis="motion_rotation_axis";
|
||||||
|
minValue="-360";
|
||||||
|
maxValue="360";
|
||||||
|
angle0="rad +360";
|
||||||
|
angle1="rad -360";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class sa_collimator: Default {
|
||||||
|
sectionsInherit = "Default";
|
||||||
|
sections[] = {"backlight_reflector"};
|
||||||
|
skeletonName = "sa_collimator_skeleton";
|
||||||
|
class Animations {
|
||||||
|
class elevate_optic {
|
||||||
|
type="rotation";
|
||||||
|
selection="optic";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
source="user";
|
||||||
|
axis="optic_axis";
|
||||||
|
animPeriod=0;
|
||||||
|
initPhase=0;
|
||||||
|
minValue="-300";
|
||||||
|
maxValue="300";
|
||||||
|
angle0="rad 16.875";
|
||||||
|
angle1="rad -16.875";
|
||||||
|
};
|
||||||
|
class rotate_optic {
|
||||||
|
type="rotation";
|
||||||
|
source="user";
|
||||||
|
selection="optic_rotate_body";
|
||||||
|
sourceAddress = "loop";
|
||||||
|
axis="optic_rotate_axis";
|
||||||
|
memory = true;
|
||||||
|
animPeriod=0;
|
||||||
|
minValue="-6400";
|
||||||
|
maxValue="6400";
|
||||||
|
angle0="rad -360";
|
||||||
|
angle1="rad +360";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class collimator_test: Default {
|
||||||
|
sectionsInherit = "Default";
|
||||||
|
sections[] = {"ll","ul","lr","ur","stand","Optics","pattern"};
|
||||||
|
skeletonName = "collimator_test_skeleton";
|
||||||
|
class Animations {
|
||||||
|
class expand_ul {
|
||||||
|
type="translation";
|
||||||
|
source="user";
|
||||||
|
selection="ul";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="ul_axis";
|
||||||
|
memory = true;
|
||||||
|
animPeriod=0.0001;
|
||||||
|
minValue="-1";
|
||||||
|
maxValue="1";
|
||||||
|
offset0="-1";
|
||||||
|
offset1="1";
|
||||||
|
};
|
||||||
|
class expand_lr {
|
||||||
|
type="translation";
|
||||||
|
source="user";
|
||||||
|
selection="lr";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="lr_axis";
|
||||||
|
memory = true;
|
||||||
|
animPeriod=0.0001;
|
||||||
|
minValue="-1";
|
||||||
|
maxValue="1";
|
||||||
|
offset0="-1";
|
||||||
|
offset1="1";
|
||||||
|
};
|
||||||
|
class expand_ur {
|
||||||
|
type="translation";
|
||||||
|
source="user";
|
||||||
|
selection="ur";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="ur_axis";
|
||||||
|
memory = true;
|
||||||
|
animPeriod=0.0001;
|
||||||
|
minValue="-1";
|
||||||
|
maxValue="1";
|
||||||
|
offset0="-1";
|
||||||
|
offset1="1";
|
||||||
|
};
|
||||||
|
class expand_ll {
|
||||||
|
type="translation";
|
||||||
|
source="user";
|
||||||
|
selection="ll";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="ll_axis";
|
||||||
|
memory = true;
|
||||||
|
animPeriod=0.0001;
|
||||||
|
minValue="-1";
|
||||||
|
maxValue="1";
|
||||||
|
offset0="-1";
|
||||||
|
offset1="1";
|
||||||
|
};
|
||||||
|
|
||||||
|
class offset {
|
||||||
|
type="translation";
|
||||||
|
source="user";
|
||||||
|
selection="pattern";
|
||||||
|
sourceAddress = "clamp";
|
||||||
|
axis="offset_axis";
|
||||||
|
memory = true;
|
||||||
|
animPeriod=0.0001;
|
||||||
|
minValue="-100";
|
||||||
|
maxValue="100";
|
||||||
|
offset0="-0.23377";
|
||||||
|
offset1="0.23377";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_aimingpoints/sa_collimator.p3d
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/sa_collimator.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_aimingpoints/sa_collimator_wep.p3d
Normal file
BIN
TO_MERGE/ace/arty_aimingpoints/sa_collimator_wep.p3d
Normal file
Binary file not shown.
15
TO_MERGE/ace/arty_aimingpoints/script_component.hpp
Normal file
15
TO_MERGE/ace/arty_aimingpoints/script_component.hpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#define COMPONENT sys_arty_aimingpoints
|
||||||
|
#include "\x\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_SYS_ARTY_AIMINGPOINTS
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_SYS_ARTY_AIMINGPOINTS
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_SYS_ARTY_AIMINGPOINTS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\x\ace\addons\main\script_macros.hpp"
|
||||||
|
#define MILPREC 17.7777777777778
|
||||||
|
#define DEG2MIL(deg) (((deg*MILPREC)) min 6400)
|
||||||
|
#define MIL2DEG(mil) mil/MILPREC
|
178
TO_MERGE/ace/arty_aimingpoints/stringtable.xml
Normal file
178
TO_MERGE/ace/arty_aimingpoints/stringtable.xml
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Project name="Arma2"><Package name="sys_arty_aimingpoints">
|
||||||
|
<!-- DIALOG -->
|
||||||
|
<Container name="STR_DIALOG">
|
||||||
|
<Key ID="STR_ACE_ARTY_REGISTERGUN2STAKE">
|
||||||
|
<German>Richtlatte ausrichten</German>
|
||||||
|
<English>Align Stake</English>
|
||||||
|
<Spanish>Align Stake to %1</Spanish>
|
||||||
|
<Czech>Zarovnat Tyč</Czech>
|
||||||
|
<French>Align Stake</French>
|
||||||
|
<Polish>Dopasuj słup celowniczy</Polish>
|
||||||
|
<Italian>Align Stake</Italian>
|
||||||
|
<Russian>Выровнять Стойку</Russian>
|
||||||
|
<Hungarian>Align Stake</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_RAISE_STAKE">
|
||||||
|
<German>Richtlatte hoch</German>
|
||||||
|
<English>Raise Stake</English>
|
||||||
|
<Spanish>Raise Stake</Spanish>
|
||||||
|
<Czech>Zvýšit výšku tyče</Czech>
|
||||||
|
<French>Raise Stake</French>
|
||||||
|
<Polish>Podnieś słup celowniczy</Polish>
|
||||||
|
<Italian>Raise Stake</Italian>
|
||||||
|
<Russian>Поднять Стойку</Russian>
|
||||||
|
<Hungarian>Raise Stake</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_LOWER_STAKE">
|
||||||
|
<German>Richtlatte runter</German>
|
||||||
|
<English>Lower Stake</English>
|
||||||
|
<Spanish>Lower Stake</Spanish>
|
||||||
|
<Czech>Snižít výšku tyče</Czech>
|
||||||
|
<French>Lower Stake</French>
|
||||||
|
<Polish>Opuść słup celowniczy</Polish>
|
||||||
|
<Italian>Lower Stake</Italian>
|
||||||
|
<Russian>Опустить Стойку</Russian>
|
||||||
|
<Hungarian>Lower Stake</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_PICKUP_STAKE">
|
||||||
|
<German>Richtlatte aufnehmen</German>
|
||||||
|
<English>Pickup Aiming Point</English>
|
||||||
|
<Spanish>Pickup Aiming Point</Spanish>
|
||||||
|
<Czech>Sebrat zaměřovací tyč</Czech>
|
||||||
|
<French>Pickup Aiming Point</French>
|
||||||
|
<Polish>Zabierz słup celowniczy</Polish>
|
||||||
|
<Italian>Pickup Aiming Point</Italian>
|
||||||
|
<Russian>Взять Стойку</Russian>
|
||||||
|
<Hungarian>Pickup Aiming Point</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_PLACE_STAKE">
|
||||||
|
<German>Richtlatte platzieren</German>
|
||||||
|
<English>Place Aiming Point</English>
|
||||||
|
<Spanish>Place Aiming Point</Spanish>
|
||||||
|
<Czech>Umístit zaměřovací tyč</Czech>
|
||||||
|
<French>Place Aiming Point</French>
|
||||||
|
<Polish>Ustaw słup celowniczy</Polish>
|
||||||
|
<Italian>Place Aiming Point</Italian>
|
||||||
|
<Russian>Установить прицельную стойку</Russian>
|
||||||
|
<Hungarian>Place Aiming Point</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_TAKE_STAKE">
|
||||||
|
<German>Richtlatte einpacken</German>
|
||||||
|
<English>Pack Aiming Point</English>
|
||||||
|
<Spanish>Pack Aiming Point</Spanish>
|
||||||
|
<Czech>Sbalit zaměřovací tyč</Czech>
|
||||||
|
<French>Pack Aiming Point</French>
|
||||||
|
<Polish>Spakuj słup celowniczy</Polish>
|
||||||
|
<Italian>Pack Aiming Point</Italian>
|
||||||
|
<Russian>Упаковать прицельную стойку</Russian>
|
||||||
|
<Hungarian>Pack Aiming Point</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_ALLIGN_COLLIMATOR">
|
||||||
|
<German>Kollimator ausrichten</German>
|
||||||
|
<English>Align Collimator</English>
|
||||||
|
<Spanish>Align Collimator</Spanish>
|
||||||
|
<Czech>Zarovnat kolimátor</Czech>
|
||||||
|
<French>Align Collimator</French>
|
||||||
|
<Polish>Dopasuj kolimator</Polish>
|
||||||
|
<Italian>Align Collimator</Italian>
|
||||||
|
<Russian>Выровнять коллиматор</Russian>
|
||||||
|
<Hungarian>Align Collimator</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_ADJUST_COLLIMATOR">
|
||||||
|
<German>Kollimator einstellen</German>
|
||||||
|
<English>Adjust Collimator</English>
|
||||||
|
<Spanish>Adjust Collimator</Spanish>
|
||||||
|
<Czech>Nastavit kolimátor</Czech>
|
||||||
|
<French>Adjust Collimator</French>
|
||||||
|
<Polish>Wyreguluj kolimator</Polish>
|
||||||
|
<Italian>Adjust Collimator</Italian>
|
||||||
|
<Russian>Отрегулировать коллиматор</Russian>
|
||||||
|
<Hungarian>Adjust Collimator</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_ARTY_DISTANCE2GUN">
|
||||||
|
<German>Abstand zu %1: %2 m</German>
|
||||||
|
<English>Distance to %1: %2 m</English>
|
||||||
|
<Spanish>Distance to %1: %2 m</Spanish>
|
||||||
|
<Czech>Vzdálenost k %1: %2 m</Czech>
|
||||||
|
<French>Distance to %1: %2 m</French>
|
||||||
|
<Polish>Odległość do %1: %2 m</Polish>
|
||||||
|
<Italian>Distance to %1: %2 m</Italian>
|
||||||
|
<Russian>Дистанция до %1: %2 m</Russian>
|
||||||
|
<Hungarian>Distance to %1: %2 m</Hungarian>
|
||||||
|
</Key>
|
||||||
|
</Container>
|
||||||
|
<!-- DISPLAYNAMES -->
|
||||||
|
<Container name="STR_DN">
|
||||||
|
<Key ID="STR_DN_ACE_ARTY_AIMINGPOST_M1A2_M58">
|
||||||
|
<German>Richtlatte (M58)</German>
|
||||||
|
<English>M1A2 M58 Aiming Post</English>
|
||||||
|
<Spanish>M1A2 M58 Aiming Post</Spanish>
|
||||||
|
<Czech>M1A2 M58 zaměřovací tyč</Czech>
|
||||||
|
<French>M1A2 M58 Aiming Post</French>
|
||||||
|
<Polish>Słup celowniczy M1A2 M58</Polish>
|
||||||
|
<Italian>M1A2 M58 Aiming Post</Italian>
|
||||||
|
<Russian>Прицельная стойка M1A2 M58</Russian>
|
||||||
|
<Hungarian>M1A2 M58 Aiming Post</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_DN_ACE_ARTY_AIMINGPOST_M1A2_M59">
|
||||||
|
<German>Richtlatte (M59)</German>
|
||||||
|
<English>M1A2 M59 Aiming Post</English>
|
||||||
|
<Spanish>M1A2 M59 Aiming Post</Spanish>
|
||||||
|
<Czech>M1A2 M59 zaměřovací tyč</Czech>
|
||||||
|
<French>M1A2 M59 Aiming Post</French>
|
||||||
|
<Polish>Słup celowniczy M1A2 M59</Polish>
|
||||||
|
<Italian>M1A2 M59 Aiming Post</Italian>
|
||||||
|
<Russian>Прицельная стойка M1A2 M59</Russian>
|
||||||
|
<Hungarian>M1A2 M59 Aiming Post</Hungarian>
|
||||||
|
</Key>
|
||||||
|
</Container>
|
||||||
|
<!-- DISPLAYNAMES SHORT -->
|
||||||
|
<Container name="STR_DSS">
|
||||||
|
<Key ID="STR_DSS_ACE_ARTY_AIMINGPOST_M1A2_M58">
|
||||||
|
<German>Farbe: grün</German>
|
||||||
|
<English>Aiming Post, M1A2 with M58, green</English>
|
||||||
|
<Spanish>Aiming Post, M1A2 with M58, green</Spanish>
|
||||||
|
<Czech>Zaměřovací tyč, M1A2 s M58, zelená</Czech>
|
||||||
|
<French>Aiming Post, M1A2 with M58, green</French>
|
||||||
|
<Polish>Słup celowniczy M1A2 M59 (zielony)</Polish>
|
||||||
|
<Italian>Aiming Post, M1A2 with M58, green</Italian>
|
||||||
|
<Russian>Прицельная стойка, M1A2 с M58, зелёная</Russian>
|
||||||
|
<Hungarian>Aiming Post, M1A2 with M58, green</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_DSS_ACE_ARTY_AIMINGPOST_M1A2_M59">
|
||||||
|
<German>Farbe: orange</German>
|
||||||
|
<English>Aiming Post, M1A2 with M59, orange</English>
|
||||||
|
<Spanish>Aiming Post, M1A2 with M59, orange</Spanish>
|
||||||
|
<Czech>Zaměřovací tyč, M1A2 s M59, oranžová</Czech>
|
||||||
|
<French>Aiming Post, M1A2 with M59, orange</French>
|
||||||
|
<Polish>Słup celowniczy M1A2 M59 (pomarańczowy)</Polish>
|
||||||
|
<Italian>Aiming Post, M1A2 with M59, orange</Italian>
|
||||||
|
<Russian>Прицельная стойка, M1A2 с M59, оранжевая</Russian>
|
||||||
|
<Hungarian>Aiming Post, M1A2 with M59, orange</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_DSS_ACE_ARTY_COLLIMATOR_M1A1">
|
||||||
|
<German>Kollimator (M1A1)</German>
|
||||||
|
<English>Collimator, M1A1</English>
|
||||||
|
<Spanish>Collimator, M1A1</Spanish>
|
||||||
|
<Czech>Kolimátor, M1A1</Czech>
|
||||||
|
<French>Collimator, M1A1</French>
|
||||||
|
<Polish>Kolimator M1A1</Polish>
|
||||||
|
<Italian>Collimator, M1A1</Italian>
|
||||||
|
<Russian>Коллиматор, M1A1</Russian>
|
||||||
|
<Hungarian>Collimator, M1A1</Hungarian>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_DSS_ACE_ARTY_AIMINGCIRCLE_M2A2">
|
||||||
|
<German>Aiming Circle, M2A2</German>
|
||||||
|
<English>Aiming Circle, M2A2</English>
|
||||||
|
<Spanish>Aiming Circle, M2A2</Spanish>
|
||||||
|
<Czech>Aiming Circle, M2A2</Czech>
|
||||||
|
<French>Aiming Circle, M2A2</French>
|
||||||
|
<Polish>Okrąg celowniczy M2A2</Polish>
|
||||||
|
<Italian>Aiming Circle, M2A2</Italian>
|
||||||
|
<Russian>Буссоль, M2A2</Russian>
|
||||||
|
<Hungarian>Aiming Circle, M2A2</Hungarian>
|
||||||
|
</Key>
|
||||||
|
</Container>
|
||||||
|
</Package>
|
||||||
|
</Project>
|
1
TO_MERGE/ace/arty_ammunition/$PBOPREFIX$
Normal file
1
TO_MERGE/ace/arty_ammunition/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
|||||||
|
x\ace\Addons\sys_arty_ammunition
|
165
TO_MERGE/ace/arty_ammunition/105mm/CfgAmmo.hpp
Normal file
165
TO_MERGE/ace/arty_ammunition/105mm/CfgAmmo.hpp
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
|
||||||
|
// class name structure
|
||||||
|
// prefix_caliber_shell_fuze_setting
|
||||||
|
class ace_arty_howitzer_105mm_base : ace_arty_howitzer_base {
|
||||||
|
whistleDist = 1500;
|
||||||
|
//soundFly[] = {"\x\ace\addons\sys_arty_ammunition\Sounds\arty_flightsound",10,1.2,600};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_pd: ace_arty_howitzer_105mm_base {
|
||||||
|
hit = 110;
|
||||||
|
indirecthit = 50;
|
||||||
|
indirecthitrange = 11.52;
|
||||||
|
typicalSpeed = 300;
|
||||||
|
timeToLive = 500;
|
||||||
|
explosive = 1;
|
||||||
|
cost = 300;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m1_shell.p3d";
|
||||||
|
airFriction = -0.0000758;
|
||||||
|
CraterEffects = "ArtyShellCrater";
|
||||||
|
ExplosionEffects = "ArtyShellExplosion";
|
||||||
|
caliber = 6;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_time: ace_arty_105mm_m1_m782_pd {
|
||||||
|
hit = 0;
|
||||||
|
indirecthit = 0;
|
||||||
|
indirecthitrange = 0;
|
||||||
|
CraterEffects = "";
|
||||||
|
ExplosionEffects = "";
|
||||||
|
ACE_ARTY_FIRE_HANDLER = "\x\ace\addons\sys_arty_ammunition\fuzes\m782\fuze_time.sqf";
|
||||||
|
ACE_ARTY_EXPLOSION = "ace_arty_105mm_m1_explosion";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_prox: ace_arty_105mm_m1_m782_time {
|
||||||
|
ACE_ARTY_FIRE_HANDLER = "\x\ace\addons\sys_arty_ammunition\fuzes\m782\fuze_prox.sqf";
|
||||||
|
ACE_ARTY_EXPLOSION = "ace_arty_105mm_m1_explosion";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox {
|
||||||
|
ACE_FRAG_SKIP = 1;
|
||||||
|
ACE_ARTY_FIRE_HANDLER = "\x\ace\addons\sys_arty_ammunition\fuzes\m782\fuze_delay.sqf";
|
||||||
|
soundHit[] = {"",0,1,0};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_explosion : ace_arty_howitzer_105mm_base {
|
||||||
|
hit = 110;
|
||||||
|
indirecthit = 50;
|
||||||
|
indirecthitrange = 11.52;
|
||||||
|
explosionTime = 0.0001;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m1_shell.p3d"; // Add model or : No shape for ammo type ace_arty_105mm_m1_explosion
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_delay_action: ace_arty_105mm_m1_m782_pd {
|
||||||
|
explosionTime = 0.05;
|
||||||
|
deflecting=65;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class ace_arty_105mm_m314a3_m782 : ace_arty_howitzer_105mm_base {
|
||||||
|
hit = 0;
|
||||||
|
indirecthit = 0;
|
||||||
|
indirecthitrange = 0;
|
||||||
|
typicalSpeed = 300;
|
||||||
|
timeToLive = 500;
|
||||||
|
explosive = 0.01;
|
||||||
|
cost = 300;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m314a3_shell.p3d";
|
||||||
|
airFriction = -0.0000758;
|
||||||
|
CraterEffects = "";
|
||||||
|
ExplosionEffects = "GrenadeExplosion";
|
||||||
|
caliber = 6;
|
||||||
|
ACE_ARTY_ISBASEEJECTING = 1;
|
||||||
|
ACE_ARTY_BASEEJECT_HOB = 500;
|
||||||
|
ACE_ARTY_BASEEJECT_COMPENSATE = 0; // calculate the trajectory for this round's submunitions 1 true, 0 false
|
||||||
|
ACE_ARTY_BASEEJECT_POWER = 0.25; // the percent speed at which the base ejection charges will enter the airstream.
|
||||||
|
ACE_ARTY_FIRE_HANDLER = "\x\ace\addons\sys_arty_ammunition\fuzes\m782\fuze_time.sqf";
|
||||||
|
ACE_ARTY_BASE_EJECT_HANDLER = "\x\ace\addons\sys_arty_ammunition\105mm\eject_illum.sqf";
|
||||||
|
ACE_ARTY_EXPLOSION = "ace_arty_baseEject";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m84a1_m782 : ace_arty_howitzer_105mm_base {
|
||||||
|
hit = 0;
|
||||||
|
indirecthit = 0;
|
||||||
|
indirecthitrange = 0;
|
||||||
|
typicalSpeed = 300;
|
||||||
|
timeToLive = 500;
|
||||||
|
explosive = 0.01;
|
||||||
|
cost = 300;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m84a1_shell.p3d";
|
||||||
|
airFriction = -0.0000758;
|
||||||
|
CraterEffects = "";
|
||||||
|
ExplosionEffects = "WPExplosion";
|
||||||
|
caliber = 6;
|
||||||
|
ACE_ARTY_FIRE_HANDLER = "\x\ace\addons\sys_arty_ammunition\fuzes\m782\fuze_time.sqf";
|
||||||
|
ACE_ARTY_ISBASEEJECTING = 1;
|
||||||
|
ACE_ARTY_BASEEJECT_HOB = 150;
|
||||||
|
ACE_ARTY_BASEEJECT_COMPENSATE = 1; // calculate the trajectory for this round's submunitions 1 true, 0 false
|
||||||
|
ACE_ARTY_BASEEJECT_POWER = 0.125; // the percent speed at which the base ejection charges will enter the airstream.
|
||||||
|
ACE_ARTY_BASE_EJECT_HANDLER = "\x\ace\addons\sys_arty_ammunition\105mm\eject_smoke_m84.sqf";
|
||||||
|
ACE_ARTY_EXPLOSION = "ace_arty_baseEject";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m916_m782 : ace_arty_howitzer_105mm_base {
|
||||||
|
hit = 0;
|
||||||
|
indirecthit = 0;
|
||||||
|
indirecthitrange = 5;
|
||||||
|
typicalSpeed = 300;
|
||||||
|
timeToLive = 500;
|
||||||
|
explosive = 0.01;
|
||||||
|
cost = 300;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m916_shell.p3d";
|
||||||
|
airFriction = -0.0000758;
|
||||||
|
CraterEffects = "";
|
||||||
|
ExplosionEffects = "";
|
||||||
|
caliber = 6;
|
||||||
|
ACE_ARTY_FIRE_HANDLER = "\x\ace\addons\sys_arty_ammunition\fuzes\m782\fuze_time.sqf";
|
||||||
|
ACE_ARTY_ISBASEEJECTING = 1;
|
||||||
|
ACE_ARTY_BASEEJECT_HOB = 50;
|
||||||
|
ACE_ARTY_BASEEJECT_COMPENSATE = 1; // calculate the trajectory for this round's submunitions 1 true, 0 false
|
||||||
|
ACE_ARTY_BASEEJECT_POWER = 0.25; // the percent speed at which the base ejection charges will enter the airstream.
|
||||||
|
ACE_ARTY_BASE_EJECT_HANDLER = "\x\ace\addons\sys_arty_ammunition\105mm\eject_dpicm.sqf";
|
||||||
|
ACE_ARTY_EXPLOSION = "ace_arty_baseEject";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd: ace_arty_howitzer_105mm_base {
|
||||||
|
hit = 110;
|
||||||
|
indirecthit = 50;
|
||||||
|
indirecthitrange = 11.52;
|
||||||
|
typicalSpeed = 300;
|
||||||
|
timeToLive = 500;
|
||||||
|
explosive = 1;
|
||||||
|
cost = 300;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m60a2_shell.p3d";
|
||||||
|
airFriction = -0.0000758;
|
||||||
|
CraterEffects = "";
|
||||||
|
ExplosionEffects = "ace_arty_WPExplosion";
|
||||||
|
caliber = 6;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ARTY_SmokeShellWhite;
|
||||||
|
class ace_arty_105mm_m84a1_m782_smokeCanisterHC : ARTY_SmokeShellWhite {
|
||||||
|
explosionTime = 6;
|
||||||
|
timeToLive = 120;
|
||||||
|
smokeColor[] = {1, 1, 1, 1};
|
||||||
|
effectsSmoke = "ace_arty_105mm_m84a1_m782_smokeCanisterHC_effect";
|
||||||
|
model = "\ca\Weapons\granat";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m314a3_m782_flare :FlareBase {
|
||||||
|
model="\ca\Weapons\granat";
|
||||||
|
lightColor[] = {0.8, 0.8, 0.8, 0};
|
||||||
|
deflecting=65;
|
||||||
|
};
|
||||||
|
|
||||||
|
class G_40mm_HE;
|
||||||
|
class ace_arty_dpicm_m80 : G_40mm_HE {
|
||||||
|
hit = 100;
|
||||||
|
ace_hit = 100;
|
||||||
|
ace_heat = 1;
|
||||||
|
indirectHit = 24;
|
||||||
|
indirectHitRange = 5;
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m80_bomblet.p3d";
|
||||||
|
ExplosionEffects = "ace_arty_dpicmEffects";
|
||||||
|
};
|
201
TO_MERGE/ace/arty_ammunition/105mm/CfgMagazines.hpp
Normal file
201
TO_MERGE/ace/arty_ammunition/105mm/CfgMagazines.hpp
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
class ace_arty_105mm_default : ace_arty_howitzer_default {
|
||||||
|
ACE_ARTY_BTABS = "\x\ace\addons\sys_arty_ammunition\105mm\tables\ace_arty_105mm_genericBtab_%1_chg%2.sqf"; // 1 = angle (LA/HA) 2 = chg#
|
||||||
|
ACE_ARTY_BTABS_KEY = "ace_arty_105mm_genericBtab_%1_chg%2";
|
||||||
|
scope = 2;
|
||||||
|
ACE_Weight = 18.10;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1 : ace_arty_105mm_default {
|
||||||
|
scope = 1;
|
||||||
|
type = 0;
|
||||||
|
displayName = "105mm M1 HE";
|
||||||
|
ACE_ARTY_MAGAZINE_FORMAT = "ace_arty_105mm_m1_m782_%1_chg%2";
|
||||||
|
ACE_ARTY_CHARGE_IMAGE_FORMAT = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\m14_chg%1.paa";
|
||||||
|
ACE_ARTY_SHELL_IMAGE = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\m1.paa";
|
||||||
|
ACE_ARTY_SHELL_VEHICLE = "ace_arty_m1_cartridge";
|
||||||
|
ACE_ARTY_FUZE_TYPES[] = {"pd", "prox", "time", "delay"};
|
||||||
|
ACE_ARTY_FUZE_DESC[] = {"Point Detonate", "Proximity", "Time", "Delay"};
|
||||||
|
ACE_ARTY_AMMO_CLASSES[] = {"ace_arty_105mm_m1_m782_pd", "ace_arty_105mm_m1_m782_prox", "ace_arty_105mm_m1_m782_time", "ace_arty_105mm_m1_m782_delay"};
|
||||||
|
ACE_ARTY_MINCHARGE = 1;
|
||||||
|
ACE_ARTY_MAXCHARGE = 8;
|
||||||
|
ACE_ARTY_INEFFECT = "HE";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M1 - M782 PD Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m1_m782_pd";
|
||||||
|
initSpeed = 205;
|
||||||
|
ACE_ARTY_DEFAULT_CLASS = "ace_arty_105mm_m1";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg2 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 223; displayName = "105mm M1 - M782 PD Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg3 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 247; displayName = "105mm M1 - M782 PD Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg4 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 278; displayName = "105mm M1 - M782 PD Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg5 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 325; displayName = "105mm M1 - M782 PD Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg6 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 393; displayName = "105mm M1 - M782 PD Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg7 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 494; displayName = "105mm M1 - M782 PD Chg. 7"; };
|
||||||
|
class ace_arty_105mm_m1_m782_pd_chg8 : ace_arty_105mm_m1_m782_pd_chg1 { initSpeed = 616; displayName = "105mm M1 - M782 PD Chg. 8"; };
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M1 - M782 TIME Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m1_m782_time";
|
||||||
|
initSpeed = 205;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg2 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 223; displayName = "105mm M1 - M782 TIME Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg3 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 247; displayName = "105mm M1 - M782 TIME Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg4 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 278; displayName = "105mm M1 - M782 TIME Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg5 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 325; displayName = "105mm M1 - M782 TIME Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg6 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 393; displayName = "105mm M1 - M782 TIME Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg7 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 494; displayName = "105mm M1 - M782 TIME Chg. 7"; };
|
||||||
|
class ace_arty_105mm_m1_m782_time_chg8 : ace_arty_105mm_m1_m782_time_chg1 { initSpeed = 616; displayName = "105mm M1 - M782 TIME Chg. 8"; };
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M1 - M782 PROX Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m1_m782_prox";
|
||||||
|
initSpeed = 205;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg2 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 223; displayName = "105mm M1 - M782 PROX Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg3 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 247; displayName = "105mm M1 - M782 PROX Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg4 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 278; displayName = "105mm M1 - M782 PROX Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg5 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 325; displayName = "105mm M1 - M782 PROX Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg6 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 393; displayName = "105mm M1 - M782 PROX Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg7 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 494; displayName = "105mm M1 - M782 PROX Chg. 7"; };
|
||||||
|
class ace_arty_105mm_m1_m782_prox_chg8 : ace_arty_105mm_m1_m782_prox_chg1 { initSpeed = 616; displayName = "105mm M1 - M782 PROX Chg. 8"; };
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M1 - M782 DELAY Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m1_m782_delay";
|
||||||
|
initSpeed = 205;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg2 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 223; displayName = "105mm M1 - M782 DELAY Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg3 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 247; displayName = "105mm M1 - M782 DELAY Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg4 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 278; displayName = "105mm M1 - M782 DELAY Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg5 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 325; displayName = "105mm M1 - M782 DELAY Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg6 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 393; displayName = "105mm M1 - M782 DELAY Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg7 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 494; displayName = "105mm M1 - M782 DELAY Chg. 7"; };
|
||||||
|
class ace_arty_105mm_m1_m782_delay_chg8 : ace_arty_105mm_m1_m782_delay_chg1 { initSpeed = 616; displayName = "105mm M1 - M782 DELAY Chg. 8"; };
|
||||||
|
|
||||||
|
class ace_arty_105mm_m314a3 : ace_arty_105mm_default {
|
||||||
|
scope = 1;
|
||||||
|
type = 0;
|
||||||
|
displayName = "105mm M314A3 Illumination";
|
||||||
|
ACE_ARTY_MAGAZINE_FORMAT = "ace_arty_105mm_m314a3_m782_%1_chg%2";
|
||||||
|
ACE_ARTY_CHARGE_IMAGE_FORMAT = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\m14_chg%1.paa";
|
||||||
|
ACE_ARTY_SHELL_IMAGE = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\M314A3.paa";
|
||||||
|
ACE_ARTY_SHELL_VEHICLE = "ace_arty_m314a3_cartridge";
|
||||||
|
ACE_ARTY_FUZE_TYPES[] = {"time"};
|
||||||
|
ACE_ARTY_FUZE_DESC[] = {"Time"};
|
||||||
|
ACE_ARTY_AMMO_CLASSES[] = {"ace_arty_105mm_m314a3_m782"};
|
||||||
|
ACE_ARTY_MINCHARGE = 1;
|
||||||
|
ACE_ARTY_MAXCHARGE = 7;
|
||||||
|
ACE_ARTY_INEFFECT = "ILLUM";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M314A3 - M782 TIME Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m314a3_m782";
|
||||||
|
initSpeed = 205;
|
||||||
|
ACE_ARTY_DEFAULT_CLASS = "ace_arty_105mm_m314a3";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg2 : ace_arty_105mm_m314a3_m782_time_chg1 { initSpeed = 223; displayName = "105mm M314A3 - M782 TIME Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg3 : ace_arty_105mm_m314a3_m782_time_chg1 { initSpeed = 247; displayName = "105mm M314A3 - M782 TIME Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg4 : ace_arty_105mm_m314a3_m782_time_chg1 { initSpeed = 278; displayName = "105mm M314A3 - M782 TIME Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg5 : ace_arty_105mm_m314a3_m782_time_chg1 { initSpeed = 325; displayName = "105mm M314A3 - M782 TIME Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg6 : ace_arty_105mm_m314a3_m782_time_chg1 { initSpeed = 393; displayName = "105mm M314A3 - M782 TIME Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m314a3_m782_time_chg7 : ace_arty_105mm_m314a3_m782_time_chg1 { initSpeed = 494; displayName = "105mm M314A3 - M782 TIME Chg. 7"; };
|
||||||
|
|
||||||
|
class ace_arty_105mm_m84a1 : ace_arty_105mm_default {
|
||||||
|
scope = 1;
|
||||||
|
type = 0;
|
||||||
|
displayName = "105mm M84A1 Base Ejecting HC Smoke";
|
||||||
|
ACE_ARTY_MAGAZINE_FORMAT = "ace_arty_105mm_m84a1_m782_%1_chg%2";
|
||||||
|
ACE_ARTY_CHARGE_IMAGE_FORMAT = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\m14_chg%1.paa";
|
||||||
|
ACE_ARTY_SHELL_IMAGE = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\M84A1.paa";
|
||||||
|
ACE_ARTY_SHELL_VEHICLE = "ace_arty_m84a1_cartridge";
|
||||||
|
ACE_ARTY_FUZE_TYPES[] = {"time"};
|
||||||
|
ACE_ARTY_FUZE_DESC[] = {"Time"};
|
||||||
|
ACE_ARTY_AMMO_CLASSES[] = {"ace_arty_105mm_m84a1_m782"};
|
||||||
|
ACE_ARTY_MINCHARGE = 1;
|
||||||
|
ACE_ARTY_MAXCHARGE = 7;
|
||||||
|
ACE_ARTY_INEFFECT = "SMOKE";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M84A1 - M782 TIME Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m84a1_m782";
|
||||||
|
initSpeed = 205;
|
||||||
|
ACE_ARTY_DEFAULT_CLASS = "ace_arty_105mm_m84a1";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg2 : ace_arty_105mm_m84a1_m782_time_chg1 { initSpeed = 223; displayName = "105mm M84A1 - M782 TIME Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg3 : ace_arty_105mm_m84a1_m782_time_chg1 { initSpeed = 247; displayName = "105mm M84A1 - M782 TIME Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg4 : ace_arty_105mm_m84a1_m782_time_chg1 { initSpeed = 278; displayName = "105mm M84A1 - M782 TIME Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg5 : ace_arty_105mm_m84a1_m782_time_chg1 { initSpeed = 325; displayName = "105mm M84A1 - M782 TIME Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg6 : ace_arty_105mm_m84a1_m782_time_chg1 { initSpeed = 393; displayName = "105mm M84A1 - M782 TIME Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m84a1_m782_time_chg7 : ace_arty_105mm_m84a1_m782_time_chg1 { initSpeed = 494; displayName = "105mm M84A1 - M782 TIME Chg. 7"; };
|
||||||
|
|
||||||
|
class ace_arty_105mm_m916 : ace_arty_105mm_default {
|
||||||
|
scope = 1;
|
||||||
|
type = 0;
|
||||||
|
displayName = "105mm M916 Base Ejecting DPICM";
|
||||||
|
ACE_ARTY_MAGAZINE_FORMAT = "ace_arty_105mm_m916_m782_%1_chg%2";
|
||||||
|
ACE_ARTY_CHARGE_IMAGE_FORMAT = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\m14_chg%1.paa";
|
||||||
|
ACE_ARTY_SHELL_IMAGE = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\M916.paa";
|
||||||
|
ACE_ARTY_SHELL_VEHICLE = "ace_arty_m916_cartridge";
|
||||||
|
ACE_ARTY_FUZE_TYPES[] = {"time"};
|
||||||
|
ACE_ARTY_FUZE_DESC[] = {"Time"};
|
||||||
|
ACE_ARTY_AMMO_CLASSES[] = {"ace_arty_105mm_m916_m782"};
|
||||||
|
ACE_ARTY_MINCHARGE = 1;
|
||||||
|
ACE_ARTY_MAXCHARGE = 8;
|
||||||
|
ACE_ARTY_INEFFECT = "DPICM";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M916 - M782 TIME Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m916_m782";
|
||||||
|
initSpeed = 205;
|
||||||
|
ACE_ARTY_DEFAULT_CLASS = "ace_arty_105mm_m916";
|
||||||
|
};
|
||||||
|
// m119 setVariable ["ace_sys_arty_currentRound", ["ace_arty_105mm_m1_m782_pd_chg6", [0], random (10000)]]; m119 fire "ace_arty_m119";
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg2 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 223; displayName = "105mm M916 - M782 TIME Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg3 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 247; displayName = "105mm M916 - M782 TIME Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg4 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 278; displayName = "105mm M916 - M782 TIME Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg5 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 325; displayName = "105mm M916 - M782 TIME Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg6 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 393; displayName = "105mm M916 - M782 TIME Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg7 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 494; displayName = "105mm M916 - M782 TIME Chg. 7"; };
|
||||||
|
class ace_arty_105mm_m916_m782_time_chg8 : ace_arty_105mm_m916_m782_time_chg1 { initSpeed = 616; displayName = "105mm M916 - M782 TIME Chg. 8"; };
|
||||||
|
|
||||||
|
|
||||||
|
class ace_arty_105mm_m60a2 : ace_arty_105mm_default {
|
||||||
|
scope = 1;
|
||||||
|
type = 0;
|
||||||
|
displayName = "105mm M60A2 WP";
|
||||||
|
ACE_ARTY_MAGAZINE_FORMAT = "ace_arty_105mm_m60a2_m782_%1_chg%2";
|
||||||
|
ACE_ARTY_CHARGE_IMAGE_FORMAT = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\m14_chg%1.paa";
|
||||||
|
ACE_ARTY_SHELL_IMAGE = "\x\ace\Addons\sys_arty_ammunition\105mm\data\images\M60A2.paa";
|
||||||
|
ACE_ARTY_SHELL_VEHICLE = "ace_arty_m60a2_cartridge";
|
||||||
|
ACE_ARTY_FUZE_TYPES[] = {"pd"};
|
||||||
|
ACE_ARTY_FUZE_DESC[] = {"Point Detonate"};
|
||||||
|
ACE_ARTY_AMMO_CLASSES[] = {"ace_arty_105mm_m60a2_m782"};
|
||||||
|
ACE_ARTY_MINCHARGE = 1;
|
||||||
|
ACE_ARTY_MAXCHARGE = 7;
|
||||||
|
ACE_ARTY_INEFFECT = "WP";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg1 : ace_arty_howitzer_mag {
|
||||||
|
displayName = "105mm M60A2 - M782 PD Chg. 1";
|
||||||
|
ammo = "ace_arty_105mm_m60a2_m782_pd";
|
||||||
|
initSpeed = 205;
|
||||||
|
ACE_ARTY_DEFAULT_CLASS = "ace_arty_105mm_m60a2";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg2 : ace_arty_105mm_m60a2_m782_pd_chg1 { initSpeed = 223; displayName = "105mm M60A2 - M782 PD Chg. 2"; };
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg3 : ace_arty_105mm_m60a2_m782_pd_chg1 { initSpeed = 247; displayName = "105mm M60A2 - M782 PD Chg. 3"; };
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg4 : ace_arty_105mm_m60a2_m782_pd_chg1 { initSpeed = 278; displayName = "105mm M60A2 - M782 PD Chg. 4"; };
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg5 : ace_arty_105mm_m60a2_m782_pd_chg1 { initSpeed = 325; displayName = "105mm M60A2 - M782 PD Chg. 5"; };
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg6 : ace_arty_105mm_m60a2_m782_pd_chg1 { initSpeed = 393; displayName = "105mm M60A2 - M782 PD Chg. 6"; };
|
||||||
|
class ace_arty_105mm_m60a2_m782_pd_chg7 : ace_arty_105mm_m60a2_m782_pd_chg1 { initSpeed = 494; displayName = "105mm M60A2 - M782 PD Chg. 7"; };
|
63
TO_MERGE/ace/arty_ammunition/105mm/CfgVehicles.hpp
Normal file
63
TO_MERGE/ace/arty_ammunition/105mm/CfgVehicles.hpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
class ace_arty_m1_cartridge : ACE_Arty_ShellHolder {
|
||||||
|
scope = 1;
|
||||||
|
icon = "iconThing";
|
||||||
|
mapSize = 0; // iconsize on map... small object such as a tree is 0.7
|
||||||
|
|
||||||
|
displayName = "M1 HE Cartridge";
|
||||||
|
|
||||||
|
vehicleClass = "Objects";
|
||||||
|
nameSound = "obj_object";
|
||||||
|
|
||||||
|
picture = "pictureThing";
|
||||||
|
class Library {libTextDesc = "";};
|
||||||
|
descriptionShort = "";
|
||||||
|
|
||||||
|
destrType = "DestructTree";
|
||||||
|
weight = 1000;
|
||||||
|
simulation = "house";
|
||||||
|
type = 1;
|
||||||
|
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m1_cartridge.p3d";
|
||||||
|
animated = false;
|
||||||
|
reversed = false;
|
||||||
|
class EventHandlers {
|
||||||
|
killed = "_this call ace_sys_arty_ammunition_fnc_onShellDestroyed";
|
||||||
|
};
|
||||||
|
|
||||||
|
ACE_ARTY_MAGAZINE_CLASS = "ace_arty_105mm_m1";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_m84a1_cartridge: ace_arty_m1_cartridge {
|
||||||
|
displayName = "M84A1 Smoke Cartridge";
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m84a1_cartridge.p3d";
|
||||||
|
ACE_ARTY_MAGAZINE_CLASS = "ace_arty_105mm_m84a1";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_m314a3_cartridge : ace_arty_m1_cartridge {
|
||||||
|
displayName = "M314A3 Illum Cartridge";
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m314a3_cartridge.p3d";
|
||||||
|
ACE_ARTY_MAGAZINE_CLASS = "ace_arty_105mm_m314a3";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_m916_cartridge : ace_arty_m1_cartridge {
|
||||||
|
displayName = "M916 DPICM Cartridge";
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m916_cartridge.p3d";
|
||||||
|
ACE_ARTY_MAGAZINE_CLASS = "ace_arty_105mm_m916";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_m60a2_cartridge : ace_arty_m1_cartridge {
|
||||||
|
displayName = "M602A2 WP Cartridge";
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m60a2_cartridge.p3d";
|
||||||
|
ACE_ARTY_MAGAZINE_CLASS = "ace_arty_105mm_m60a2";
|
||||||
|
};
|
||||||
|
class ACE_UsedTubes;
|
||||||
|
class ace_arty_m14_casing : ACE_UsedTubes {
|
||||||
|
model = "\x\ace\addons\sys_arty_ammunition\105mm\ace_arty_m14_casing.p3d";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ace_arty_105mm_m314a3_m782_parachute : ACE_HuntIR {
|
||||||
|
class EventHandlers {
|
||||||
|
EXTENDED_EVENTHANDLERS
|
||||||
|
};
|
||||||
|
SLX_XEH_DISABLED = 0;
|
||||||
|
}; // Defined in 60mm
|
71
TO_MERGE/ace/arty_ammunition/105mm/XEH_illum_init.sqf
Normal file
71
TO_MERGE/ace/arty_ammunition/105mm/XEH_illum_init.sqf
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
//XEH_illum_init.sqf
|
||||||
|
#define MAX_ILL 2.1
|
||||||
|
|
||||||
|
private["_flareChute", "_pos", "_light", "_sm", "_sp"];
|
||||||
|
|
||||||
|
_flareChute = _this select 0;
|
||||||
|
_pos = getPos (_flareChute);
|
||||||
|
|
||||||
|
_light = "#lightpoint" createVehicleLocal _pos;
|
||||||
|
_light setPos _pos;
|
||||||
|
_light setLightBrightness MAX_ILL;
|
||||||
|
_light setLightAmbient[238/255, 233/255, 183/255];
|
||||||
|
_light setLightColor[241/255, 226/255, 62/255];
|
||||||
|
_light lightAttachObject [_flareChute, [0,0,-0.8]];
|
||||||
|
|
||||||
|
_sm = "#particlesource" createVehicleLocal getPos (_flareChute);
|
||||||
|
_sm setParticleRandom [0.5, [0, 0, 0], [0, 0, 0], 0, 0.3, [0, 0, 0, 0], 0, 0, 360];
|
||||||
|
_sm setParticleParams [["\ca\Data\ParticleEffects\Universal\Universal", 16, 12, 8,0],
|
||||||
|
"", "Billboard", 1, 30, [0, 0, 0],
|
||||||
|
[0,0,0], 1, 1, 0.80, 0.5, [1.3,4],
|
||||||
|
[[0.9,0.9,0.9,0.6], [1,1,1,0.3], [1,1,1,0]],[1],0.1,0.1,"","",_light];
|
||||||
|
_sm setDropInterval 0.02;
|
||||||
|
|
||||||
|
_sp = "#particlesource" createVehicleLocal getPos (_flareChute);
|
||||||
|
_sp setParticleRandom [0.03, [0, 0, 0], [0, 0, 0], 0, 0.2, [0, 0, 0, 0], 0, 0, 360];
|
||||||
|
_sp setParticleParams [["\ca\Data\ParticleEffects\Universal\Universal", 16, 13, 2,0],
|
||||||
|
"", "Billboard", 1, 0.1, [0, 0, 0],
|
||||||
|
[0,0,0], 1, 1, 0.80, 0.5, [1.5,0],
|
||||||
|
[[1,1,1,-4], [1,1,1,-4], [1,1,1,-2],[1,1,1,0]],[1000],0.1,0.1,"","",_light,360];
|
||||||
|
_sp setDropInterval 0.001;
|
||||||
|
|
||||||
|
// _sp2 = "#particlesource" createVehicleLocal getPos (_flareChute);
|
||||||
|
// _sp2 setParticleRandom [0.03, [0, 0, 0], [0, 0, 0], 0, 0.2, [0, 0, 0, 0], 0, 0, 360];
|
||||||
|
// _sp2 setParticleParams ["\ca\Data\Flare12",
|
||||||
|
// "", "Billboard", 1, 0.1, [0, 0, 0],
|
||||||
|
// [0,0,0], 1, 1, 0.80, 0.5, [1.5,0],
|
||||||
|
// [[1,1,1,-4], [1,1,1,-4], [1,1,1,-2],[1,1,1,0]],[1000],0.1,0.1,"","",_light,360];
|
||||||
|
// _sp2 setDropInterval 0.001;
|
||||||
|
|
||||||
|
|
||||||
|
//_flareChute setVectorDir _chuteVel;
|
||||||
|
|
||||||
|
[_flareChute, _light, _sp, _sm] spawn {
|
||||||
|
private["_shell", "_light", "_sp", "_sm", "_start", "_b", "_s"];
|
||||||
|
_shell = _this select 0;
|
||||||
|
_light = _this select 1;
|
||||||
|
_sp = _this select 2;
|
||||||
|
_sm = _this select 3;
|
||||||
|
|
||||||
|
|
||||||
|
_start = time;
|
||||||
|
_b = MAX_ILL;
|
||||||
|
_s = 0;
|
||||||
|
waitUntil {
|
||||||
|
if((_start + 50) < time) then {
|
||||||
|
_b = (_b - random (0.1)) max 0;
|
||||||
|
_light setLightBrightness _b;
|
||||||
|
};
|
||||||
|
if((_start + 60) < time) then {
|
||||||
|
deleteVehicle _light;
|
||||||
|
deleteVehicle _sp;
|
||||||
|
// deleteVehicle _sp2;
|
||||||
|
deleteVehicle _sm;
|
||||||
|
};
|
||||||
|
sleep 0.1;
|
||||||
|
(!alive _shell && (_start + 60) < time);
|
||||||
|
};
|
||||||
|
deleteVehicle _light;
|
||||||
|
deleteVehicle _sp;
|
||||||
|
deleteVehicle _sm;
|
||||||
|
};
|
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_105mm_box.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_105mm_box.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m14_casing.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m14_casing.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m1_cartridge.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m1_cartridge.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m1_shell.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m1_shell.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m314a3_cartridge.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m314a3_cartridge.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m314a3_shell.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m314a3_shell.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m60a2_cartridge.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m60a2_cartridge.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m60a2_shell.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m60a2_shell.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m80_bomblet.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m80_bomblet.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m84a1_cartridge.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m84a1_cartridge.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m84a1_shell.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m84a1_shell.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m916_cartridge.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m916_cartridge.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m916_shell.p3d
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/ace_arty_m916_shell.p3d
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M1.paa
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M1.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M314A3.paa
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M314A3.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M60A2.paa
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M60A2.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M84A1.paa
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M84A1.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M916.paa
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/M916.paa
Normal file
Binary file not shown.
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/m14_chg1.paa
Normal file
BIN
TO_MERGE/ace/arty_ammunition/105mm/data/images/m14_chg1.paa
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user