mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Add framework doc
This commit is contained in:
parent
8d5f368609
commit
3c983b60db
@ -6,7 +6,7 @@ class CfgAmmo {
|
|||||||
indirectHit = 200;
|
indirectHit = 200;
|
||||||
indirectHitRange = 4;
|
indirectHitRange = 4;
|
||||||
|
|
||||||
GVAR(deployApplyDrag) = 1;
|
GVAR(artilleryDrag) = 1;
|
||||||
GVAR(deployCondition) = QFUNC(copperhead_deployCondition);
|
GVAR(deployCondition) = QFUNC(copperhead_deployCondition);
|
||||||
submunitionAmmo = "ace_155mm_m712_guidance";
|
submunitionAmmo = "ace_155mm_m712_guidance";
|
||||||
submunitionCount = 1;
|
submunitionCount = 1;
|
||||||
@ -99,7 +99,6 @@ class CfgAmmo {
|
|||||||
class Eventhandlers {
|
class Eventhandlers {
|
||||||
fired = QUOTE(call FUNC(submunition_ammoFired));
|
fired = QUOTE(call FUNC(submunition_ammoFired));
|
||||||
};
|
};
|
||||||
GVAR(deployApplyDrag) = -1;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class MissileBase;
|
class MissileBase;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
// Add shell config action to vehicles that can fire it
|
// Copperhead - Add shell interface action to vehicles that can fire it
|
||||||
if (hasInterface) then {
|
if (hasInterface) then {
|
||||||
["turret", {
|
["turret", {
|
||||||
params ["_player", "_turret"];
|
params ["_player", "_turret"];
|
||||||
@ -10,9 +10,9 @@ if (hasInterface) then {
|
|||||||
|
|
||||||
if ((!alive _player) || {!alive _vehicle} || {_vehicle getVariable [QGVAR(actionsAdded), false]}) exitWith {};
|
if ((!alive _player) || {!alive _vehicle} || {_vehicle getVariable [QGVAR(actionsAdded), false]}) exitWith {};
|
||||||
_vehicle setVariable [QGVAR(actionsAdded), true];
|
_vehicle setVariable [QGVAR(actionsAdded), true];
|
||||||
|
private _copperheadMag = ["ace_1rnd_155mm_m712"] call EFUNC(common,getConfigName);
|
||||||
if (((_vehicle weaponsTurret [0]) findIf {"ace_1rnd_155mm_m712" in (compatibleMagazines _x)}) != -1) then {
|
if (((_vehicle weaponsTurret [0]) findIf {_copperheadMag in (compatibleMagazines _x)}) != -1) then {
|
||||||
TRACE_2("adding copperhead action to object",_vehicle,typeOf _vehicle);
|
TRACE_2("adding copperhead action to vehicle",_vehicle,typeOf _vehicle);
|
||||||
private _action = [QGVAR(copperhead), LLSTRING(copperhead_action), "", LINKFUNC(copperhead_uiCreate), LINKFUNC(copperhead_uiCanOpen)] call EFUNC(interact_menu,createAction);
|
private _action = [QGVAR(copperhead), LLSTRING(copperhead_action), "", LINKFUNC(copperhead_uiCreate), LINKFUNC(copperhead_uiCanOpen)] call EFUNC(interact_menu,createAction);
|
||||||
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
|
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
|
||||||
};
|
};
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "..\script_component.hpp"
|
#include "..\script_component.hpp"
|
||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Generic handler for firing a clgp submuntion ammo
|
* Generic handler for firing a clgp submuntion ammo. Called from the ammo's fired EH.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* FiredEH
|
* FiredEH
|
||||||
|
@ -30,18 +30,19 @@ if (_guidanceArgs isNotEqualTo []) then { // Inject the submunition projectile a
|
|||||||
[EFUNC(missileguidance,guidancePFH), 0, _guidanceArgs] call CBA_fnc_addPerFrameHandler;
|
[EFUNC(missileguidance,guidancePFH), 0, _guidanceArgs] call CBA_fnc_addPerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// NOTE: Probably need to remove after frag-rewrite
|
||||||
if (!isNil QEFUNC(frag,addPfhRound)) then { // todo make frag work for original and sub
|
if (!isNil QEFUNC(frag,addPfhRound)) then { // todo make frag work for original and sub
|
||||||
TRACE_1("-Starting frag track",_submunitionProjectile);
|
TRACE_1("-Starting frag track",_submunitionProjectile);
|
||||||
[_firedEH # 0, _firedEH # 4, _submunitionProjectile] call EFUNC(frag,addPfhRound);
|
[_firedEH # 0, _firedEH # 4, _submunitionProjectile] call EFUNC(frag,addPfhRound);
|
||||||
};
|
};
|
||||||
|
|
||||||
// if negative then ignore, any other value is a coefficent
|
private _deployArtilleryDragConfig = (configOf _projectile) >> QGVAR(artilleryDrag);
|
||||||
private _deployApplyDrag = getNumber ((configOf _projectile) >> QGVAR(deployApplyDrag));
|
if (isNumber _deployArtilleryDragConfig) then {
|
||||||
TRACE_1("",_deployApplyDrag);
|
private _deployArtilleryDrag = getNumber _deployArtilleryDragConfig;
|
||||||
if (_deployApplyDrag >= 0) then {
|
if (_deployArtilleryDrag < 0) exitWith { TRACE_1("-Ignoring Drag",_deployArtilleryDrag); };
|
||||||
private _kFactor = _projectile getVariable [QEGVAR(artillerytables,kFactor), 0];
|
private _kFactor = _projectile getVariable [QEGVAR(artillerytables,kFactor), 0];
|
||||||
_kFactor = _kFactor * _deployApplyDrag; // maybe be 0 from either source
|
TRACE_2("-Drag",_deployArtilleryDrag,_kFactor);
|
||||||
TRACE_3("-Applying Drag",_submunitionProjectile,_deployApplyDrag,_kFactor);
|
_kFactor = _kFactor * _deployArtilleryDrag; // Can be 0 from either source (0 is valid and will keep nose pointed)
|
||||||
private _dragArray = [_submunitionProjectile, _kFactor, CBA_missionTime];
|
private _dragArray = [_submunitionProjectile, _kFactor, CBA_missionTime];
|
||||||
_submunitionProjectile setVariable [QGVAR(dragArray), _dragArray];
|
_submunitionProjectile setVariable [QGVAR(dragArray), _dragArray];
|
||||||
};
|
};
|
||||||
|
56
docs/wiki/framework/clgp-framework.md
Normal file
56
docs/wiki/framework/clgp-framework.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
layout: wiki
|
||||||
|
title: CLGP Framework
|
||||||
|
description: Explains how to set-up ammo for the cannon-launched-guided-projectile system.
|
||||||
|
group: framework
|
||||||
|
parent: wiki
|
||||||
|
order: 7
|
||||||
|
mod: ace
|
||||||
|
version:
|
||||||
|
major: 3
|
||||||
|
minor: 0
|
||||||
|
patch: 0
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Overview
|
||||||
|
|
||||||
|
CLGP allows firing submunition shells that will deploy into missiles that can use the Missile Guidance framework.
|
||||||
|
|
||||||
|
## 2. Config Values
|
||||||
|
|
||||||
|
### 2.1 Example Config
|
||||||
|
```cpp
|
||||||
|
class CfgAmmo {
|
||||||
|
class x_submunition: SubmunitionBase { // this ammo can be fired normally
|
||||||
|
ace_clgp_deployCondition = "your_fnc"; // function that returns true when it should be triggered
|
||||||
|
ace_clgp_artilleryDrag = 1;
|
||||||
|
submunitionAmmo = "x_missle";
|
||||||
|
class Eventhandlers {
|
||||||
|
fired = "call ace_clgp_fnc_submunition_ammoFired"; // need to add the EH yourself to all ammos
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class x_missle: MissileBase {
|
||||||
|
class ace_missileguidance {
|
||||||
|
enabled = 2;
|
||||||
|
// rest of normal ace missile guidance config
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 Configs
|
||||||
|
|
||||||
|
`ace_clgp_deployCondition`
|
||||||
|
- A function that will trigger the ammo when returning true, passed `[_projectile, _guidanceArgs]`
|
||||||
|
- Is optional, can just use normal submuntion triggers
|
||||||
|
|
||||||
|
`ace_clgp_artilleryDrag`
|
||||||
|
- Optional (Leave undefined (or set to -1) to ignore)
|
||||||
|
- Used as a coefficient on drag from ace_artilleryTables's advancedCorrections
|
||||||
|
- Value of 0 is valid and will not apply drag but still keep nose pointed correctly (for unpowered missiles)
|
||||||
|
|
||||||
|
## 3. Note on adding magazines via mission
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
if (local turretLocal [0]) then {
|
||||||
|
this addMagazineTurret ["ace_1rnd_155mm_m712", [0]];
|
||||||
|
};
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user