mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into japanesestringtables
This commit is contained in:
commit
72899643bd
55
.gibot.yml
Normal file
55
.gibot.yml
Normal file
@ -0,0 +1,55 @@
|
||||
stages:
|
||||
mark_for_closing:
|
||||
days: 30
|
||||
labels:
|
||||
- need more info
|
||||
- invalid
|
||||
- can't reproduce
|
||||
- wontfix
|
||||
- information required
|
||||
exclude:
|
||||
- marked for cleanup
|
||||
comment:
|
||||
- 'Hello @{author}! There has been no activity on this ticket for over a period of {days} days. I am automatically replying to let you know we will close this ticket within 1 week due to inactivity and consider this resolved.'
|
||||
- 'If you believe this in error, please reply with the requested information.'
|
||||
- 'Thank you. :robot:'
|
||||
action:
|
||||
close: false
|
||||
comment: true
|
||||
assign_label:
|
||||
- marked for cleanup
|
||||
clean_up:
|
||||
days: 7
|
||||
labels:
|
||||
- marked for cleanup
|
||||
comment:
|
||||
- 'Hello @{author}! We have detected no activity for {days} days on this ticket. We therefore assume that the original reporter has lost interest or the issue has been resolved.'
|
||||
- 'Since we have marked this ticket for deletion, we will be closing it.'
|
||||
- 'If this has been closed in error, please create a comment below and we can reopen this issue. Note that you may need to provide additional information that was requested.'
|
||||
- 'Thank you. :robot:'
|
||||
action:
|
||||
close: true
|
||||
comment: true
|
||||
assign_label:
|
||||
- closed by bot
|
||||
remove_label:
|
||||
- marked for cleanup
|
||||
remind_about_old_ticket:
|
||||
days: 130
|
||||
labels:
|
||||
- bug
|
||||
- critical bug
|
||||
exclude:
|
||||
- need more info
|
||||
- invalid
|
||||
- can't reproduce
|
||||
- wontfix
|
||||
- information required
|
||||
- marked for cleanup
|
||||
- inactive
|
||||
comment:
|
||||
- 'Hello @acemod/maintainers. This ticket has been open for over {days} days without any activity.'
|
||||
action:
|
||||
comment: true
|
||||
assign_label:
|
||||
- inactive
|
3
.lgtm
3
.lgtm
@ -1,3 +0,0 @@
|
||||
approvals = 1
|
||||
pattern = "(?i)LGTM|(?i):\\+1:|(?i):shipit:"
|
||||
self_approval_off = true
|
@ -22,6 +22,7 @@ _initStartTime = CBA_missionTime;
|
||||
_mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
|
||||
|
||||
if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith {
|
||||
ACE_LOGINFO_1("Terrain already initialized [world: %1]", worldName);
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
systemChat "AdvancedBallistics: Terrain already initialized";
|
||||
#endif
|
||||
@ -32,11 +33,14 @@ _gridCells = _mapGrids * _mapGrids;
|
||||
|
||||
GVAR(currentGrid) = 0;
|
||||
|
||||
ACE_LOGINFO_2("Starting Terrain Extension [cells: %1] [world: %2]", _gridCells, worldName);
|
||||
|
||||
[{
|
||||
params ["_args","_idPFH"];
|
||||
_args params ["_mapGrids", "_gridCells", "_initStartTime"];
|
||||
|
||||
if (GVAR(currentGrid) >= _gridCells) exitWith {
|
||||
ACE_LOGINFO_2("Finished terrain initialization in %1 seconds [world: %2]", ceil(CBA_missionTime - _initStartTime), worldName);
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(CBA_missionTime - _initStartTime)];
|
||||
#endif
|
||||
|
@ -5,6 +5,6 @@ PREP(getMetabolicCosts);
|
||||
PREP(handleEffects);
|
||||
PREP(handlePlayerChanged);
|
||||
PREP(handleStaminaBar);
|
||||
PREP(mainLoop);
|
||||
PREP(moduleSettings);
|
||||
PREP(pfhMain);
|
||||
PREP(removeDutyFactor);
|
||||
|
@ -18,25 +18,27 @@ if (!hasInterface) exitWith {};
|
||||
["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// - Duty factors -------------------------------------------------------------
|
||||
[QEGVAR(medical,pain), {
|
||||
1 + (((_this getVariable [QEGVAR(medical,pain), 0]) min 1) / 10)
|
||||
}] call FUNC(addDutyFactor);
|
||||
[QEGVAR(medical,bloodVolume), {
|
||||
2 - (((_this getVariable [QEGVAR(medical,bloodVolume), 100]) min 100) / 100)
|
||||
}] call FUNC(addDutyFactor);
|
||||
[QEGVAR(dragging,isCarrying), {
|
||||
if (_this getVariable [QEGVAR(dragging,isCarrying), false]) then {
|
||||
3
|
||||
} else {
|
||||
1
|
||||
};
|
||||
}] call FUNC(addDutyFactor);
|
||||
[QEGVAR(weather,temperature), {
|
||||
(((missionNamespace getVariable [QEGVAR(weather,currentTemperature), 25]) - 35) / 10) max 2 min 1
|
||||
}] call FUNC(addDutyFactor);
|
||||
if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
||||
[QEGVAR(medical,pain), { // 0->1.0, 0.5->1.05, 1->1.1
|
||||
linearConversion [0, 1, (_this getVariable [QEGVAR(medical,pain), 0]), 1, 1.1, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
[QEGVAR(medical,bloodVolume), { // 100->1.0, 90->1.1, 80->1.2
|
||||
linearConversion [100, 0, (_this getVariable [QEGVAR(medical,bloodVolume), 100]), 1, 2, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
};
|
||||
if (["ACE_Dragging"] call EFUNC(common,isModLoaded)) then {
|
||||
[QEGVAR(dragging,isCarrying), {
|
||||
[1, 3] select (_this getVariable [QEGVAR(dragging,isCarrying), false]);
|
||||
}] call FUNC(addDutyFactor);
|
||||
};
|
||||
if (["ACE_Weather"] call EFUNC(common,isModLoaded)) then {
|
||||
[QEGVAR(weather,temperature), { // 35->1, 45->2
|
||||
linearConversion [35, 45, (missionNamespace getVariable [QEGVAR(weather,currentTemperature), 25]), 1, 2, true];
|
||||
}] call FUNC(addDutyFactor);
|
||||
};
|
||||
|
||||
// - Add main PFH -------------------------------------------------------------
|
||||
[FUNC(pfhMain), 1, []] call CBA_fnc_addPerFrameHandler;
|
||||
// - Add main loop at 1 second interval -------------------------------------------------------------
|
||||
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
["ace_settingChanged", {
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Main perFrameHandler that updates fatigue values.
|
||||
* Main looping function that updates fatigue values.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
@ -9,7 +9,9 @@
|
||||
* None
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
if (!alive ACE_player) exitWith {}; // Dead people don't breath, Will also handle null (Map intros)
|
||||
if (!alive ACE_player) exitWith { // Dead people don't breath, Will also handle null (Map intros)
|
||||
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
|
||||
};
|
||||
|
||||
private _currentWork = REE;
|
||||
private _currentSpeed = (vectorMagnitude (velocity ACE_player)) min 6;
|
||||
@ -61,3 +63,5 @@ private _perceivedFatigue = 1 - (_anReservePercentage min _aeReservePercentage);
|
||||
if (GVAR(enableStaminaBar)) then {
|
||||
[GVAR(anReserve) / AN_MAXRESERVE] call FUNC(handleStaminaBar);
|
||||
};
|
||||
|
||||
[FUNC(mainLoop), [], 1] call CBA_fnc_waitAndExecute;
|
@ -5,66 +5,79 @@
|
||||
<English>Performance Factor</English>
|
||||
<German>Leistungsfaktor</German>
|
||||
<Japanese>パフォーマンス要因</Japanese>
|
||||
<Polish>Współczynnik wydolności</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_Description">
|
||||
<English>Influences the overall performance of all players with no custom factor. Higher means better.</English>
|
||||
<German>Beinflusst die Leistungsfähigkeit aller Spieler ohne eigenen Leistungsfaktor. Ein höherer Wert bedeutet bessere Leistung.</German>
|
||||
<Japanese>非カスタム要因をもつ全プレイヤーへ全体的に動作を影響させます。高いほど影響がでます。</Japanese>
|
||||
<Polish>Wpływa na ogólną wydolność organizmu u wszystkich graczy bez ustawionego niestandardowego współczynnika. Więcej znaczy lepiej.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_PerformanceFactor_EdenDescription">
|
||||
<English>Influences the overall performance of this unit. Higher means better.</English>
|
||||
<German>Beinflusst die Leistungsfähigkeit dieser Einheit. Ein höherer Wert bedeutet bessere Leistung.</German>
|
||||
<Japanese>非カスタム要因をもつ全プレイヤーへ全体的に動作を影響させます。高いほど影響がでます。</Japanese>
|
||||
<Polish>Wpływa na ogólną wydolność tej jednostki. Więcej znaczy lepiej.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor">
|
||||
<English>Recovery Factor</English>
|
||||
<German>Erholungsfaktor</German>
|
||||
<Japanese>回復要因</Japanese>
|
||||
<Polish>Współczynnik regeneracji</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_RecoveryFactor_Description">
|
||||
<English>Changes how fast the player recovers when resting. Higher is faster.</English>
|
||||
<German>Ändert, wie schnell ein Spieler Ausdauer regeneriert. Ein höherer Wert bedeutet eine schnellere Regeneration.</German>
|
||||
<Japanese>休憩時は、プレイヤーが早く回復します。高いほど早くなります。</Japanese>
|
||||
<Polish>Wpływa na czas regeneracji podczas postoju. Więcej znaczy szybciej.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor">
|
||||
<English>Load Factor</English>
|
||||
<German>Gewichtsfaktor</German>
|
||||
<Japanese>負荷要因</Japanese>
|
||||
<Polish>Współczynnik masy ekwipunku</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_LoadFactor_Description">
|
||||
<English>Increases or decreases how much weight influences the players performance. Zero means equipment weight has no performance influence.</English>
|
||||
<German>Erhöht oder verringert, wie viel Einfluss das Ausrüstungsgewicht auf die Leistung hat. Null heißt, dass es keinen Einfluss hat.</German>
|
||||
<Japanese>重量によりプレイヤーの動作への影響下増加したり、低下します。装備を持っていない場合、影響はしません。</Japanese>
|
||||
<Polish>Zmniejsza lub zwiększa wpływ ciężaru ekwipunku na wydolność gracza. Zero oznacza kompletny brak wpływu na wydolność.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor">
|
||||
<English>Terrain Gradient Factor</English>
|
||||
<German>Terrainsteigungsfaktor</German>
|
||||
<Japanese>地形の勾配による要因</Japanese>
|
||||
<Polish>Współczynnik terenu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_TerrainGradientFactor_Description">
|
||||
<English>Sets how much steep terrain increases stamina loss. Higher means higher stamina loss.</English>
|
||||
<German>Beeinflusst, wie stark Steigungen den Ausdauerverbrauch erhöhen. Ein höherer Wert erhöht den Ausdauerverbrauch.</German>
|
||||
<Japanese>地形によって影響する体力の消費量を決定します。高数値ではより体力を消費します。</Japanese>
|
||||
<Polish>Wpływa na to w jakim stopniu stromy teren wpływa na utratę wytrzymałości. Więcej oznacza szybszą utratę wytrzymałości.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled">
|
||||
<English>Enabled</English>
|
||||
<German>Aktiv</German>
|
||||
<Japanese>有効化</Japanese>
|
||||
<Polish>Włączone</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_Enabled_Description">
|
||||
<English>Enables/disables Advanced Fatigue.</English>
|
||||
<German>Aktiviert/deaktiviert Advanced Fatigue.</German>
|
||||
<Japanese>アドバンスド疲労の有効化と無効化</Japanese>
|
||||
<Polish>Włącza/wyłącza zaawansowaną wytrzymałość</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar">
|
||||
<English>Show stamina bar</English>
|
||||
<German>Zeige Ausdauerleiste</German>
|
||||
<Japanese>体力バーを表示</Japanese>
|
||||
<Polish>Pokaż pasek wytrzymałości</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Fatigue_EnableStaminaBar_Description">
|
||||
<English>Shows the stamina bar.</English>
|
||||
<German>Zeigt die Ausdauerleiste an.</German>
|
||||
<Japanese>体力バーを表示します。</Japanese>
|
||||
<Polish>Pokazuje pasek wytrzymałości.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -12,6 +12,6 @@ class Extended_PreInit_EventHandlers {
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient));
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Fired XEH
|
||||
[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
|
||||
|
||||
// Exit on HC
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
@ -63,6 +66,13 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
||||
[_this select 1, "Player changed"] call FUNC(exitThrowMode);
|
||||
}] call CBA_fnc_addPlayerEventhandler;
|
||||
|
||||
["visibleMap", {
|
||||
if (visibleMap && {ACE_player getVariable [QGVAR(inHand), false]}) then {
|
||||
[ACE_player, "Opened Map"] call FUNC(exitThrowMode);
|
||||
};
|
||||
}] call CBA_fnc_addPlayerEventhandler;
|
||||
|
||||
|
||||
["ace_interactMenuOpened", {
|
||||
// Exit if advanced throwing is disabled (pick up only supports advanced throwing)
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
@ -80,9 +90,6 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
// Fired XEH
|
||||
[QGVAR(throwFiredXEH), FUNC(throwFiredXEH)] call CBA_fnc_addEventHandler;
|
||||
|
||||
// Set last thrown time on Vanilla Throwing and Advanced Throwing
|
||||
["ace_firedPlayer", {
|
||||
if (_weapon == "Throw") then {
|
@ -47,11 +47,15 @@ for "_i" from 0.05 to 1.45 step 0.1 do {
|
||||
|
||||
if (_newTrajASL distance (getPosASLVisual ACE_player) <= 20) then {
|
||||
if ((ASLToATL _newTrajASL) select 2 <= 0) then {
|
||||
_cross = 1
|
||||
_cross = 1; // 1: Distance Limit (Green)
|
||||
} else {
|
||||
// Even vanilla throwables go through glass, only "GEOM" LOD will stop it but that will also stop it when there is glass in a window
|
||||
if (lineIntersects [_prevTrajASL, _newTrajASL]) then {
|
||||
_cross = 2;
|
||||
if (lineIntersects [_prevTrajASL, _newTrajASL]) then { // Checks the "VIEW" LOD
|
||||
_cross = 2; // 2: View LOD Block (Red)
|
||||
} else {
|
||||
if (!((lineIntersectsSurfaces [_prevTrajASL, _newTrajASL, _activeThrowable, ACE_player, true, 1, "GEOM", "FIRE"]) isEqualTo [])) then {
|
||||
_cross = 3; // 3: GEOM/FIRE LOD Block (Yellow) - pass a3 bulding glass, but blocked on some CUP glass
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@ -60,7 +64,7 @@ for "_i" from 0.05 to 1.45 step 0.1 do {
|
||||
private _movePerc = linearConversion [3, 0, vectorMagnitude (velocity ACE_player), 0, 1, true];
|
||||
_alpha = _alpha * _movePerc;
|
||||
|
||||
private _col = [ [1, 1, 1, _alpha], [0, 1, 0, _alpha], [1, 0, 0, _alpha] ] select _cross;
|
||||
private _col = [ [1, 1, 1, _alpha], [0, 1, 0, _alpha], [1, 0, 0, _alpha], [1, 1, 0, _alpha] ] select _cross;
|
||||
|
||||
if (_cross != 2 && {lineIntersects [eyePos ACE_player, _newTrajASL]}) then {
|
||||
_col set [3, 0.1]
|
||||
|
@ -31,6 +31,12 @@ private _muzzle = _unit getVariable [QGVAR(activeMuzzle), ""];
|
||||
// Set muzzle ammo to 0 to block vanilla throwing (can only be 0 or 1), removeItem above resets it
|
||||
_unit setAmmo [_muzzle, 0];
|
||||
|
||||
// Handle weird scripted grenades (RHS) which could cause unexpected behaviour
|
||||
private _nonInheritedCfg = configProperties [configFile >> "CfgAmmo" >> _throwableType, 'configName _x == QGVAR(replaceWith)', false];
|
||||
if ((count _nonInheritedCfg) == 1) then {
|
||||
_throwableType = getText (_nonInheritedCfg select 0);
|
||||
};
|
||||
|
||||
// Create actual throwable globally
|
||||
private _activeThrowableOld = _unit getVariable [QGVAR(activeThrowable), objNull];
|
||||
private _activeThrowable = createVehicle [_throwableType, _activeThrowableOld, [], 0, "CAN_COLLIDE"];
|
||||
|
@ -5,106 +5,127 @@
|
||||
<English>Advanced Throwing</English>
|
||||
<Russian>Улучшенный бросок гранат</Russian>
|
||||
<Japanese>アドバンスド投てき</Japanese>
|
||||
<Polish>Zaawansowane rzucanie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Module_Description">
|
||||
<English>Allows changing advanced throwing behaviour.</English>
|
||||
<Russian>Позволяет настраивать поведение улучшенного броска гранат.</Russian>
|
||||
<Japanese>アドバンスド投てきの挙動変更を許可します。</Japanese>
|
||||
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
|
||||
<English>Enable Advanced Throwing</English>
|
||||
<Russian>Включить улучшенный бросок</Russian>
|
||||
<Japanese>アドバンスド投てきを有効化</Japanese>
|
||||
<Polish>Aktywuj zaawansowane rzucanie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Enable_Description">
|
||||
<English>Enables advanced throwing system.</English>
|
||||
<Russian>Включает систему улучшенного броска.</Russian>
|
||||
<Japanese>アドバンスド投てきシステムを有効化</Japanese>
|
||||
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_DisplayName">
|
||||
<English>Show Throw Arc</English>
|
||||
<Russian>Показать траекторию броска</Russian>
|
||||
<Japanese>軌道を表示</Japanese>
|
||||
<Polish>Pokaż trasę lotu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_Description">
|
||||
<English>Enables visualization of the throw arc (where throwable will fly).</English>
|
||||
<Russian>Включает визуализацию траектории броска (как полетит граната).</Russian>
|
||||
<Japanese>投てき物の予測軌道の表示を有効化します。</Japanese>
|
||||
<Polish>Wyświetla wizualizację trasy przelotu granatu.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_DisplayName">
|
||||
<English>Show Throwing Mouse Controls</English>
|
||||
<Russian>Показывать управление мышью</Russian>
|
||||
<Japanese>投てきのマウス操作を表示</Japanese>
|
||||
<Polish>Pokaż podpowiedzi sterowania myszą</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_Description">
|
||||
<English>Enables visual cues for mouse controls when throwable is prepared.</English>
|
||||
<Russian>Включает отображение подсказок по управлению мышью, когда граната подготовлена.</Russian>
|
||||
<Japanese>投てき物を投げるとき、マウス操作の説明表示を有効化します。</Japanese>
|
||||
<Polish>Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_DisplayName">
|
||||
<English>Enable Throwables Pick Up</English>
|
||||
<Russian>Включить подбор гранат</Russian>
|
||||
<Japanese>投てき物の拾い上げを有効化</Japanese>
|
||||
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_Description">
|
||||
<English>Enables ability to pick up throwables from the ground.</English>
|
||||
<Russian>Включает возможность подбирать гранаты с земли.</Russian>
|
||||
<Japanese>地面に落ちている投てき物の拾い上げ動作を有効化します。</Japanese>
|
||||
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_DisplayName">
|
||||
<English>Enable Attached Throwables Pick Up</English>
|
||||
<Russian>Включить подбор прикрепленных гранат</Russian>
|
||||
<Japanese>拾い上げた投てき物の取り付けを有効化</Japanese>
|
||||
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_Description">
|
||||
<English>Enables ability to pick up throwables from attached objects.</English>
|
||||
<Russian>Включает возможность подбирать гранаты, прикрепленные к объектам.</Russian>
|
||||
<Japanese>オブジェクトに取り付けられていた投てき物を拾い上げられるようにします。</Japanese>
|
||||
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
|
||||
<English>Prepare/Change Throwable</English>
|
||||
<Russian>Подготовить/заменить гранату</Russian>
|
||||
<Japanese>機能の起動/変更</Japanese>
|
||||
<Polish>Przygotuj/zmień ob. miotany</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_dropModeHold">
|
||||
<English>Throwable Drop Mode (Hold)</English>
|
||||
<Russian>Режим броска гранаты (удерживать)</Russian>
|
||||
<Japanese>投てきモード (押しっぱ)</Japanese>
|
||||
<Polish>Tryb upuszczania ob. miotanego (przytrzymaj)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_DropModeToggle">
|
||||
<English>Throwable Drop Mode (Toggle)</English>
|
||||
<Russian>Режим броска гранаты (переключить)</Russian>
|
||||
<Japanese>投てきモード (トグル)</Japanese>
|
||||
<Polish>Tryb upuszczania ob. miotanego (przełącz)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Primed">
|
||||
<English>Primed</English>
|
||||
<Russian>Подготовлена</Russian>
|
||||
<Japanese>起動した</Japanese>
|
||||
<Polish>Odbezpieczony</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Throw">
|
||||
<English>Throw</English>
|
||||
<Russian>Бросить</Russian>
|
||||
<Japanese>投げる</Japanese>
|
||||
<Polish>Rzuć</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_ChangeMode">
|
||||
<English>(Scroll) Change Mode</English>
|
||||
<Russian>(Скролл) Изменить режим</Russian>
|
||||
<Japanese>(スクロール) モード変更</Japanese>
|
||||
<Polish>(Kółko m.) zmień tryb</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Extend">
|
||||
<English>(Scroll) Extend</English>
|
||||
<Russian>(Скролл) Увеличить</Russian>
|
||||
<Japanese>(スクロール) 遠くに</Japanese>
|
||||
<Polish>(Kółko m.) przedłuż</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_Cook">
|
||||
<English>(Click) Cook</English>
|
||||
<Russian>(Клик) Подготовить</Russian>
|
||||
<Japanese>(クリック) 起爆</Japanese>
|
||||
<Polish>(Kliknięcie) Odbezpiecz</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Throwing_PickUp">
|
||||
<English>Pick Up</English>
|
||||
<Russian>Подобрать</Russian>
|
||||
<Japanese>拾い上げる</Japanese>
|
||||
<Polish>Podnieś</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -22,6 +22,7 @@ class CfgWeapons {
|
||||
};
|
||||
|
||||
class Rifle_Base_F: Rifle {};
|
||||
class Rifle_Short_Base_F: Rifle_Base_F {};
|
||||
class Rifle_Long_Base_F: Rifle_Base_F {};
|
||||
|
||||
// MX
|
||||
@ -470,7 +471,7 @@ class CfgWeapons {
|
||||
};
|
||||
|
||||
// PD2000
|
||||
class pdw2000_base_F: Rifle_Base_F {
|
||||
class pdw2000_base_F: Rifle_Short_Base_F {
|
||||
aiDispersionCoefY = 18.0;
|
||||
aiDispersionCoefX = 12.0;
|
||||
|
||||
@ -484,7 +485,7 @@ class CfgWeapons {
|
||||
};
|
||||
|
||||
// Vector
|
||||
class SMG_01_Base: Rifle_Base_F {
|
||||
class SMG_01_Base: Rifle_Short_Base_F {
|
||||
aiDispersionCoefY = 18.0;
|
||||
aiDispersionCoefX = 12.0;
|
||||
|
||||
|
@ -18,7 +18,3 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "RscTitles.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
RangerfinderData = QEGVAR(vector,rangefinderData);
|
||||
};
|
||||
|
@ -19,7 +19,3 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "GUI_VirtualAmmo.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
interactMenuOpened = "ace_interactMenuOpened";
|
||||
};
|
@ -15,7 +15,3 @@ class CfgPatches {
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
backpackOpened = "ace_backpackOpened";
|
||||
};
|
||||
|
@ -9,7 +9,8 @@ class CfgWeapons {
|
||||
class MMG_01_base_F;
|
||||
class MMG_02_base_F;
|
||||
class Rifle_Base_F;
|
||||
class Rifle_Long_Base_F;
|
||||
class Rifle_Short_Base_F: Rifle_Base_F {};
|
||||
class Rifle_Long_Base_F: Rifle_Base_F {};
|
||||
class MuzzleSlot;
|
||||
|
||||
/* Long Rifles */
|
||||
@ -189,8 +190,8 @@ class CfgWeapons {
|
||||
dispersion = 0.0008727; // radians. Equal to 3 MOA.
|
||||
};
|
||||
};
|
||||
class pdw2000_base_F: Rifle_Base_F {};
|
||||
class SMG_01_Base: Rifle_Base_F {};
|
||||
class pdw2000_base_F: Rifle_Short_Base_F {};
|
||||
class SMG_01_Base: Rifle_Short_Base_F {};
|
||||
class SMG_02_base_F: Rifle_Base_F {};
|
||||
|
||||
/* Pistols */
|
||||
|
@ -20,11 +20,3 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgEden.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
SetSurrendered = QGVAR(setSurrendered);
|
||||
SetHandcuffed = QGVAR(setHandcuffed);
|
||||
MoveOutCaptive = QGVAR(moveOutCaptive);
|
||||
MoveInCaptive = QGVAR(moveInCaptive);
|
||||
CaptiveStatusChanged = "ace_captiveStatusChanged";
|
||||
};
|
||||
|
@ -18,13 +18,3 @@ class CfgPatches {
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "menu.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
LoadCargo = "ace_loadCargo";
|
||||
cargoUnloaded = "ace_cargoUnloaded";
|
||||
cargoLoaded = "ace_cargoLoaded";
|
||||
AddCargoByClass = "ace_addCargo";
|
||||
ServerUnloadCargo = QGVAR(serverUnload);
|
||||
UnloadCargo = "ace_unloadCargo";
|
||||
cargoAddedByClass = "ace_cargoAdded";
|
||||
};
|
||||
|
@ -49,7 +49,7 @@ private _itemObject = if (_item isEqualType objNull) then {
|
||||
_newItem
|
||||
};
|
||||
|
||||
_newItem setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vectorDir _vehicle)) vectorMultiply 10));
|
||||
_itemObject setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vectorDir _vehicle)) vectorMultiply 10));
|
||||
|
||||
// open parachute and ir light effect
|
||||
[{
|
||||
@ -57,13 +57,16 @@ _newItem setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vectorDi
|
||||
|
||||
if (isNull _item || {getPos _item select 2 < 1}) exitWith {};
|
||||
|
||||
private _itemPosASL = getPosASL _item;
|
||||
private _itemVelocity = velocity _item;
|
||||
private _parachute = createVehicle ["B_Parachute_02_F", [0,0,0], [], 0, "CAN_COLLIDE"];
|
||||
|
||||
_item attachTo [_parachute, [0,0,0.2]];
|
||||
_parachute setPosASL _itemPosASL;
|
||||
_parachute setVelocity _itemVelocity;
|
||||
// cannot use setPos on parachutes without them closing down
|
||||
_parachute attachTo [_item, [0,0,0]];
|
||||
detach _parachute;
|
||||
|
||||
private _velocity = velocity _item;
|
||||
|
||||
_item attachTo [_parachute, [0,0,-1]];
|
||||
_parachute setVelocity _velocity;
|
||||
|
||||
private _light = "Chemlight_yellow" createVehicle [0,0,0];
|
||||
_light attachTo [_item, [0,0,0]];
|
||||
|
@ -223,11 +223,13 @@
|
||||
<English>Airdrop</English>
|
||||
<German>Türlast</German>
|
||||
<Japanese>空中投下</Japanese>
|
||||
<Polish>Zrzut zaopatrzenia</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_unlevelFlightWarning">
|
||||
<English>Unlevel Flight</English>
|
||||
<German>Schieflage</German>
|
||||
<Japanese>機体が水平ではありません</Japanese>
|
||||
<Polish>Nierówny lot</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -4,14 +4,17 @@
|
||||
<Key ID="STR_ACE_Chemlights_Action_Chemlights">
|
||||
<English>Chemlights</English>
|
||||
<Japanese>ケミライト</Japanese>
|
||||
<Polish>Świetliki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Action_Prepare">
|
||||
<English>Prepare %1</English>
|
||||
<Japanese>%1 をつかう</Japanese>
|
||||
<Polish>Przygotuj %1</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
|
||||
<English>%1<br/>Prepared</English>
|
||||
<Japanese>%1&lt;br/&gt; をつかった</Japanese>
|
||||
<Polish>%1<br/>Przygotowany</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Inventory_Full">
|
||||
<English>No inventory space</English>
|
||||
@ -29,146 +32,181 @@
|
||||
<Key ID="STR_ACE_Chemlights_Box_DisplayName">
|
||||
<English>[ACE] Chemlights</English>
|
||||
<Japanese>[ACE] ケミライト</Japanese>
|
||||
<Polish>[ACE] Świetliki</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
|
||||
<English>Chemlight (Orange)</English>
|
||||
<Japanese>ケミライト (オレンジ)</Japanese>
|
||||
<Polish>Świetlik (pomarańczowy)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
|
||||
<English>Orange Light</English>
|
||||
<Japanese>オレンジ色</Japanese>
|
||||
<Polish>Pomarańczowe światło</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
|
||||
<English>Type: Light - Orange<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - オレンジ&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DisplayName">
|
||||
<English>Chemlight (White)</English>
|
||||
<Japanese>ケミライト (白)</Japanese>
|
||||
<Polish>Świetlik (biały)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
|
||||
<English>White Light</English>
|
||||
<Japanese>白色</Japanese>
|
||||
<Polish>Białe światło</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
|
||||
<English>Type: Light - White<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - 白&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
|
||||
<English>Chemlight (Hi Red)</English>
|
||||
<Japanese>ケミライト (高輝度 赤)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy czerwony)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
|
||||
<English>Red Hi Light</English>
|
||||
<Japanese>高輝度の赤色</Japanese>
|
||||
<Polish>Jaskrawe czerwone światło</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DescriptionShort">
|
||||
<English>Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - 高輝度 赤 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
|
||||
<English>Chemlight (Hi Yellow)</English>
|
||||
<Japanese>ケミライト (高輝度 黄)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy żółty)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
|
||||
<English>Yellow Hi Light</English>
|
||||
<Japanese>高輝度の黄色</Japanese>
|
||||
<Polish>Jaskrawe żółte światło</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DescriptionShort">
|
||||
<English>Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - 高輝度 黄 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayName">
|
||||
<English>Chemlight (Hi Orange)</English>
|
||||
<Japanese>ケミライト (高輝度 オレンジ)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy pomarańczowy)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayNameShort">
|
||||
<English>Orange Hi Light</English>
|
||||
<Japanese>高輝度のオレンジ</Japanese>
|
||||
<Polish>Jaskrawe pomarańczowe światło</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiOrange_DescriptionShort">
|
||||
<English>Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - 高輝度 オレンジ (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
|
||||
<English>Chemlight (Hi White)</English>
|
||||
<Japanese>ケミライト (高輝度 白)</Japanese>
|
||||
<Polish>Świetlik (jaskrawy biały)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
|
||||
<English>White Hi Light</English>
|
||||
<Japanese>高輝度の白色</Japanese>
|
||||
<Polish>Jaskrawe białe światło</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DescriptionShort">
|
||||
<English>Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - 高輝度 白 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
|
||||
<English>Chemlight (IR)</English>
|
||||
<Japanese>ケミライト (IR)</Japanese>
|
||||
<Polish>Świetlik (podczerwony)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
|
||||
<English>IR Light</English>
|
||||
<Japanese>赤外線光</Japanese>
|
||||
<Polish>Światło podczerwone</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
|
||||
<English>Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand</English>
|
||||
<Japanese>種類: 照明 - 赤外線&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯</Japanese>
|
||||
<Polish>Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
|
||||
<English>Chemlight Shield (Empty)</English>
|
||||
<Japanese>ケミライト シールド (空)</Japanese>
|
||||
<Polish>Osłona na świetlik (pusta)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
|
||||
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
|
||||
<Japanese>ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。</Japanese>
|
||||
<Polish>Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
|
||||
<English>Chemlight Shield (Green)</English>
|
||||
<Japanese>ケミライト シールド (緑)</Japanese>
|
||||
<Polish>Osłona na świetlik (zielona)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
|
||||
<English>Green reading light.</English>
|
||||
<Japanese>緑色の照明。</Japanese>
|
||||
<Polish>Zielona lampka.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
|
||||
<English>Chemlight Shield (Red)</English>
|
||||
<Japanese>ケミライト シールド (赤)</Japanese>
|
||||
<Polish>Osłona na świetlik (czerwona)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
|
||||
<English>Red reading light.</English>
|
||||
<Japanese>赤色の照明。</Japanese>
|
||||
<Polish>Czerwona lampka.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
|
||||
<English>Chemlight Shield (Blue)</English>
|
||||
<Japanese>ケミライト シールド (青)</Japanese>
|
||||
<Polish>Osłona na świetlik (niebieska)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
|
||||
<English>Blue reading light.</English>
|
||||
<Japanese>青色の照明。</Japanese>
|
||||
<Polish>Niebieska lampka.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
|
||||
<English>Chemlight Shield (Yellow)</English>
|
||||
<Japanese>ケミライト シールド (黄)</Japanese>
|
||||
<Polish>Osłona na świetlik (żółta)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
|
||||
<English>Yellow reading light.</English>
|
||||
<Japanese>黄色の照明。</Japanese>
|
||||
<Polish>Żółta lampka.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
|
||||
<English>Chemlight Shield (Orange)</English>
|
||||
<Japanese>ケミライト シールド (オレンジ)</Japanese>
|
||||
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
|
||||
<English>Orange reading light.</English>
|
||||
<Japanese>オレンジの照明。</Japanese>
|
||||
<Polish>Pomarańczowa lampka.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
|
||||
<English>Chemlight Shield (White)</English>
|
||||
<Japanese>ケミライト シールド (白)</Japanese>
|
||||
<Polish>Osłona na świetlik (biała)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
|
||||
<English>White reading light.</English>
|
||||
<Japanese>白の照明。</Japanese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -8,4 +8,14 @@ class Cfg3DEN {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Group {
|
||||
class AttributeCategories {
|
||||
class ace_attributes {
|
||||
displayName = CSTRING(Options);
|
||||
collapsed = 1;
|
||||
class Attributes {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -2,8 +2,24 @@
|
||||
|
||||
class RscStructuredText;
|
||||
class RscMapControl;
|
||||
class ctrlStructuredText;
|
||||
|
||||
class GVAR(debug_structuredText): ctrlStructuredText {
|
||||
sizeEx = "16 * pixelH";
|
||||
size = "16 * pixelH";
|
||||
};
|
||||
|
||||
class RscTitles {
|
||||
class GVAR(watchVariableUI) {
|
||||
idd = -1;
|
||||
onLoad = QUOTE(with uiNameSpace do {GVAR(watchVariableUI) = _this select 0};);
|
||||
movingEnable = 0;
|
||||
duration = 999999;
|
||||
fadeIn = "false";
|
||||
fadeOut = "false";
|
||||
class controls {};
|
||||
};
|
||||
|
||||
class ACE_RscHint {
|
||||
idd = -1;
|
||||
onLoad = "uiNamespace setVariable ['ACE_ctrlHint', (_this select 0) displayCtrl 1];";
|
||||
|
@ -38,7 +38,6 @@ PREP(dropBackpack);
|
||||
PREP(endRadioTransmission);
|
||||
PREP(eraseCache);
|
||||
PREP(errorMessage);
|
||||
PREP(execNextFrame);
|
||||
PREP(findUnloadPosition);
|
||||
PREP(firedEH);
|
||||
PREP(fixCollision);
|
||||
@ -85,12 +84,10 @@ PREP(hadamardProduct);
|
||||
PREP(handleEngine);
|
||||
PREP(handleModifierKey);
|
||||
PREP(handleModifierKeyUp);
|
||||
PREP(handleScrollWheel);
|
||||
PREP(hasItem);
|
||||
PREP(hasMagazine);
|
||||
PREP(headBugFix);
|
||||
PREP(hideUnit);
|
||||
PREP(insertionSort);
|
||||
PREP(interpolateFromArray);
|
||||
PREP(inTransitionAnim);
|
||||
PREP(isAwake);
|
||||
@ -172,8 +169,7 @@ PREP(unloadPersonLocal);
|
||||
PREP(unmuteUnit);
|
||||
PREP(useItem);
|
||||
PREP(useMagazine);
|
||||
PREP(waitAndExecute);
|
||||
PREP(waitUntilAndExecute);
|
||||
PREP(watchVariable);
|
||||
PREP(waveHeightAt);
|
||||
|
||||
PREP(translateToWeaponSpace);
|
||||
@ -183,14 +179,12 @@ PREP(translateToModelSpace);
|
||||
PREP(worldToScreenBounds);
|
||||
|
||||
// config items
|
||||
PREP(getConfigType);
|
||||
PREP(getItemType);
|
||||
PREP(getWeaponType);
|
||||
PREP(getWeaponModes);
|
||||
PREP(getWeaponMuzzles);
|
||||
|
||||
// config objects
|
||||
PREP(getConfigTypeObject);
|
||||
PREP(getConfigGunner);
|
||||
PREP(getConfigCommander);
|
||||
PREP(getSelectionsWithoutHitPoints);
|
||||
@ -211,10 +205,6 @@ PREP(getTurretsFFV);
|
||||
PREP(getTurretsOther);
|
||||
PREP(hasHatch);
|
||||
|
||||
// missing inventory commands
|
||||
PREP(binocularMagazine);
|
||||
PREP(removeBinocularMagazine);
|
||||
|
||||
// ACE_Debug
|
||||
PREP(getChildren);
|
||||
PREP(getDisplayConfigName);
|
||||
@ -224,15 +214,6 @@ PREP(showUser);
|
||||
PREP(dumpPerformanceCounters);
|
||||
PREP(dumpArray);
|
||||
|
||||
PREP(globalEvent);
|
||||
PREP(addEventHandler);
|
||||
PREP(objectEvent);
|
||||
PREP(targetEvent);
|
||||
PREP(serverEvent);
|
||||
PREP(localEvent);
|
||||
PREP(removeEventHandler);
|
||||
PREP(removeAlLEventHandlers);
|
||||
|
||||
// Synchronized Events
|
||||
PREP(syncedEventPFH);
|
||||
PREP(addSyncedEventHandler);
|
||||
@ -247,17 +228,8 @@ PREP(_handleRequestAllSyncedEvents);
|
||||
// other eventhandlers
|
||||
PREP(addActionEventHandler);
|
||||
PREP(addActionMenuEventHandler);
|
||||
PREP(addScrollWheelEventHandler);
|
||||
PREP(addMapMarkerCreatedEventHandler);
|
||||
|
||||
PREP(removeActionEventHandler);
|
||||
PREP(removeActionMenuEventHandler);
|
||||
PREP(removeScrollWheelEventHandler);
|
||||
PREP(removeMapMarkerCreatedEventHandler);
|
||||
|
||||
// hashes
|
||||
PREP(hashCreate);
|
||||
PREP(hashSet);
|
||||
PREP(hashGet);
|
||||
PREP(hashHasKey);
|
||||
PREP(hashRem);
|
||||
|
@ -1,4 +1,3 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
call COMPILE_FILE(init_handleScrollWheel);
|
||||
call COMPILE_FILE(init_handleModifierKey);
|
||||
|
@ -306,71 +306,6 @@ if (!isNull (missionNamespace getVariable ["cba_events_oldUnit", objNull])) then
|
||||
// "playerChanged" event
|
||||
["unit", {
|
||||
ACE_player = (_this select 0);
|
||||
["ace_playerChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// "playerVehicleChanged" event
|
||||
["vehicle", {
|
||||
["ace_playerVehicleChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// "playerTurretChanged" event
|
||||
["turret", {
|
||||
["ace_playerTurretChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// "playerWeaponChanged" event
|
||||
["weapon", {
|
||||
["ace_playerWeaponChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// "playerInventoryChanged" event
|
||||
["loadout", {
|
||||
private _fnc_getAllGear = {
|
||||
if (isNull _this) exitWith {[
|
||||
"",
|
||||
"",
|
||||
"", [],
|
||||
"", [],
|
||||
"", [],
|
||||
"", ["","","",""], [],
|
||||
"", ["","","",""], [],
|
||||
"", ["","","",""], [],
|
||||
[],
|
||||
"",
|
||||
""
|
||||
]};
|
||||
|
||||
[
|
||||
headgear _this,
|
||||
goggles _this,
|
||||
uniform _this, uniformItems _this,
|
||||
vest _this, vestItems _this,
|
||||
backpack _this, backpackItems _this,
|
||||
primaryWeapon _this, primaryWeaponItems _this, primaryWeaponMagazine _this,
|
||||
secondaryWeapon _this, secondaryWeaponItems _this, secondaryWeaponMagazine _this,
|
||||
handgunWeapon _this, handgunItems _this, handgunMagazine _this,
|
||||
assignedItems _this,
|
||||
binocular _this,
|
||||
_this call CBA_fnc_binocularMagazine
|
||||
]
|
||||
};
|
||||
|
||||
["ace_playerInventoryChanged", [ACE_player, ACE_player call _fnc_getAllGear]] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// "playerVisionModeChanged" event
|
||||
["visionMode", {
|
||||
["ace_playerVisionModeChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// "cameraViewChanged" event
|
||||
["cameraView", {
|
||||
["ace_cameraViewChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
["visibleMap", {
|
||||
["ace_visibleMapChanged", _this] call CBA_fnc_localEvent;
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
GVAR(OldIsCamera) = false;
|
||||
|
@ -14,70 +14,6 @@ class CfgPatches {
|
||||
};
|
||||
};
|
||||
|
||||
// This class will be deprecated in version 3.8.0
|
||||
class ACE_newEvents {
|
||||
// Status effect events
|
||||
forceWalk = QGVAR(forceWalk);
|
||||
blockSprint = QGVAR(blockSprint);
|
||||
setCaptive = QGVAR(setCaptive);
|
||||
blockDamage = QGVAR(blockDamage);
|
||||
blockEngine = QGVAR(blockEngine);
|
||||
|
||||
// Public listenable events
|
||||
PlayerJip = "ace_playerJIP";
|
||||
activeCameraChanged = "ace_activeCameraChanged";
|
||||
visibleMapChanged = "ace_visibleMapChanged";
|
||||
cameraViewChanged = "ace_cameraViewChanged";
|
||||
playerVisionModeChanged = "ace_playerVisionModeChanged";
|
||||
playerInventoryChanged = "ace_playerInventoryChanged";
|
||||
playerWeaponChanged = "ace_playerWeaponChanged";
|
||||
playerTurretChanged = "ace_playerTurretChanged";
|
||||
playerVehicleChanged = "ace_playerVehicleChanged";
|
||||
playerChanged = "ace_playerChanged";
|
||||
SettingsInitialized = "ace_settingsInitialized";
|
||||
SettingChanged = "ace_settingChanged";
|
||||
firedNonPlayerVehicle = "ace_firedNonPlayerVehicle";
|
||||
firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal";
|
||||
firedPlayerVehicle = "ace_firedPlayerVehicle";
|
||||
firedNonPlayer = "ace_firedNonPlayer";
|
||||
firedPlayerNonLocal = "ace_firedPlayerNonLocal";
|
||||
firedPlayer = "ace_firedPlayer";
|
||||
unloadPersonEvent = "ace_unloadPersonEvent";
|
||||
loadPersonEvent = "ace_loadPersonEvent";
|
||||
useItem = "ace_useItem";
|
||||
infoDisplayChanged = "ace_infoDisplayChanged";
|
||||
|
||||
// Internal callable events
|
||||
setStatusEffect = QGVAR(setStatusEffect);
|
||||
HeadbugFixUsed = QGVAR(headbugFixUsed);
|
||||
InitSettingsFromModules = QGVAR(initSettingsFromModules);
|
||||
enableSimulationGlobal = QGVAR(enableSimulationGlobal);
|
||||
hideObjectGlobal = QGVAR(hideObjectGlobal);
|
||||
fixPosition = QGVAR(fixPosition);
|
||||
fixFloating = QGVAR(fixFloating);
|
||||
fixCollision = QGVAR(fixCollision);
|
||||
unlockVehicle = QGVAR(unlockVehicle);
|
||||
lockVehicle = QGVAR(lockVehicle);
|
||||
displayTextPicture = QGVAR(displayTextPicture);
|
||||
displayTextStructured = QGVAR(displayTextStructured);
|
||||
setVanillaHitPointDamage = QGVAR(setVanillaHitPointDamage);
|
||||
setVectorDirAndUp = QGVAR(setVectorDirAndUp);
|
||||
switchMove = QGVAR(switchMove);
|
||||
playMoveNow = QGVAR(playMoveNow);
|
||||
playMove = QGVAR(playMove);
|
||||
setVelocity = QGVAR(setVelocity);
|
||||
selectLeader = QGVAR(selectLeader);
|
||||
setSpeaker = QGVAR(setSpeaker);
|
||||
engineOn = QGVAR(engineOn);
|
||||
setFuel = QGVAR(setFuel);
|
||||
setDir = QGVAR(setDir);
|
||||
|
||||
// Events framework
|
||||
SEH_s = "ACEs";
|
||||
SEH = "ACEe";
|
||||
SEH_all = "ACEa";
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#include "CfgLocationTypes.hpp"
|
||||
|
@ -1,14 +0,0 @@
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventCode"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName, _eventCode] call CBA_fnc_addEventHandler;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_addEventHandler","3.8.0","CBA_fnc_addEventHandler");
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Add an event handler that executes every time the scroll wheel is used. This is needed, because adding a MouseZ display event handler to display 46 will break in save games.
|
||||
* _this will be [Interval] where 'Interval' is a number.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Code to execute <CODE, STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* ID of the event script (used to remove it later). <NUMBER>
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_statement"];
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_addScrollWheelEventHandler", "3.8.0", "'MouseZChanged' Display EventHandler");
|
||||
|
||||
if (_statement isEqualType "") then {
|
||||
_statement = compile _statement;
|
||||
};
|
||||
|
||||
private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]];
|
||||
|
||||
_actionsVar params ["_id", "_actionIDs", "_actions"];
|
||||
|
||||
_id = _id + 1;
|
||||
|
||||
_actionIDs pushBack _id;
|
||||
_actions pushBack _statement;
|
||||
|
||||
missionNamespace setVariable ["ACE_EventHandler_ScrollWheel", [_id, _actionIDs, _actions]];
|
||||
|
||||
_id
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Returns the magazine of the units rangefinder.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Magazine of the units binocular <STRING>
|
||||
*
|
||||
* Example:
|
||||
* player call ace_common_fnc_binocularMagazine
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_binocularMagazine","3.8.0","CBA_fnc_binocularMagazine");
|
||||
|
||||
_this call CBA_fnc_binocularMagazine
|
@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Executes a code on the next frame
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Code to execute <CODE>
|
||||
* 1: Parameters to run the code with <ARRAY>
|
||||
*
|
||||
* Return Value:
|
||||
* PFH handler ID <NUMBER>
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_execNextFrame","3.8.0","CBA_fnc_execNextFrame");
|
||||
|
||||
_this call CBA_fnc_execNextFrame;
|
@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Determins type of item. Can be CfgMagaines, CfgWeapons or CfgGlasses.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Item Classname <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Config category ("CfgWeapons", "CfgMagazines", "CfgGlasses", "") <STRING>
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_getConfigType","3.8.0","CBA_fnc_getItemConfig");
|
||||
|
||||
configName (configHierarchy (_item call CBA_fnc_getItemConfig) param [1, configNull])
|
@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Determins type of object. Can be CfgVehicles or CfgAmmo.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Object classname <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Config category ("CfgWeapons", "Cfgmagazines", "CfgGlasses", "") <STRING>
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_getConfigTypeObject","3.8.0","CBA_fnc_getObjectConfig");
|
||||
|
||||
configName (configHierarchy (_item call CBA_fnc_getObjectConfig) param [1, configNull])
|
@ -1,14 +0,0 @@
|
||||
#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventArgs"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName, _eventArgs] call CBA_fnc_globalEvent;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_globalEvent","3.8.0","CBA_fnc_globalEvent");
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Handles MouseZChanged event.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public : No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
{
|
||||
[_this select 1] call _x;
|
||||
false
|
||||
} count ((missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]) select 2);
|
||||
|
||||
nil
|
@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Author: ?
|
||||
* Returns an empty hash structure
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* Empty Hash Structure <ARRAY>
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED(QFUNC(hashCreate),"3.8.0","CBA_fnc_hashCreate");
|
||||
|
||||
[[],[]]
|
@ -1,40 +0,0 @@
|
||||
/*
|
||||
* Author: ?
|
||||
* Returns value attached to key in given hash.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Hash <ARRAY>
|
||||
* 1: Key <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Value <ANY>
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED(QFUNC(hashGet),"3.8.0","CBA_fnc_hashGet");
|
||||
|
||||
params ["_hash", "_key"];
|
||||
|
||||
ERRORDATA(2);
|
||||
private _val = nil;
|
||||
try {
|
||||
if(VALIDHASH(_hash)) then {
|
||||
private _index = (_hash select 0) find _key;
|
||||
if(_index != -1) then {
|
||||
_val = (_hash select 1) select _index;
|
||||
if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then {
|
||||
_val = nil;
|
||||
};
|
||||
};
|
||||
} else {
|
||||
ERROR("Input hash is not valid");
|
||||
};
|
||||
} catch {
|
||||
HANDLECATCH;
|
||||
};
|
||||
|
||||
if (isNil "_val") exitWith { nil };
|
||||
|
||||
_val
|
@ -1,35 +0,0 @@
|
||||
/*
|
||||
* Author: ?
|
||||
* ?
|
||||
*
|
||||
* Arguments:
|
||||
* ?
|
||||
*
|
||||
* Return Value:
|
||||
* ?
|
||||
*
|
||||
* Public: ?
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED(QFUNC(hashHasKey),"3.8.0","CBA_fnc_hashHasKey");
|
||||
|
||||
// diag_log text format["%1 HASH HAS KEY: %2", diag_tickTime, _this];
|
||||
|
||||
params ["_hash", "_key"];
|
||||
|
||||
ERRORDATA(2);
|
||||
private _val = false;
|
||||
try {
|
||||
if(VALIDHASH(_hash)) then {
|
||||
private _index = (_hash select 0) find _key;
|
||||
if(_index != -1) then {
|
||||
_val = true;
|
||||
};
|
||||
} else {
|
||||
ERROR("Input hash is not valid");
|
||||
};
|
||||
} catch {
|
||||
HANDLECATCH;
|
||||
};
|
||||
_val
|
@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Author: ?
|
||||
* ?
|
||||
*
|
||||
* Arguments:
|
||||
* ?
|
||||
*
|
||||
* Return Value:
|
||||
* ?
|
||||
*
|
||||
* Public: ?
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED(QFUNC(hashRem),"3.8.0","CBA_fnc_hashRem");
|
||||
|
||||
params ["_hash", "_key"];
|
||||
|
||||
ERRORDATA(2);
|
||||
private _val = nil;
|
||||
try {
|
||||
if(VALIDHASH(_hash)) then {
|
||||
private _index = (_hash select 0) find _key;
|
||||
if(_index != -1) then {
|
||||
(_hash select 1) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"];
|
||||
// is this hash is not part of a hash list?
|
||||
// if it is we need to leave the keys intact.
|
||||
if((count _hash) == 2) then {
|
||||
// if this is a standalone hash then we can clean it up
|
||||
(_hash select 0) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"];
|
||||
_hash set[0, ((_hash select 0) - ["ACREHASHREMOVEDONOTUSETHISVAL"])];
|
||||
_hash set[1, ((_hash select 1) - ["ACREHASHREMOVEDONOTUSETHISVAL"])];
|
||||
};
|
||||
};
|
||||
} else {
|
||||
ERROR("Input hash is not valid");
|
||||
};
|
||||
} catch {
|
||||
HANDLECATCH;
|
||||
};
|
||||
true
|
@ -1,38 +0,0 @@
|
||||
/*
|
||||
* Author: ?
|
||||
* ?
|
||||
*
|
||||
* Arguments:
|
||||
* ?
|
||||
*
|
||||
* Return Value:
|
||||
* ?
|
||||
*
|
||||
* Public: ?
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED(QFUNC(hashSet),"3.8.0","CBA_fnc_hashSet");
|
||||
|
||||
// diag_log text format["%1 HASH SET: %2", diag_tickTime, _this];
|
||||
|
||||
params ["_hash", "_key", "_val"];
|
||||
|
||||
ERRORDATA(3);
|
||||
try {
|
||||
if(VALIDHASH(_hash)) then {
|
||||
private _index = (_hash select 0) find _key;
|
||||
if(_index == -1) then {
|
||||
_index = (_hash select 0) find "ACREHASHREMOVEDONOTUSETHISVAL";
|
||||
if(_index == -1) then {
|
||||
_index = (count (_hash select 0));
|
||||
};
|
||||
(_hash select 0) set[_index, _key];
|
||||
};
|
||||
(_hash select 1) set[_index, _val];
|
||||
} else {
|
||||
ERROR("Input hash is not valid");
|
||||
};
|
||||
} catch {
|
||||
HANDLECATCH;
|
||||
};
|
@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Author: Ruthberg
|
||||
* Sorts an array of numbers
|
||||
*
|
||||
* Arguments:
|
||||
* 0: array <ARRAY>
|
||||
* 1: ascending (optional) <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* sortedArray (ARRAY)
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED(QFUNC(insertionSort),"3.8.0","sort");
|
||||
|
||||
params [["_list", [], [[]]], ["_ascending", true, [false]]];
|
||||
|
||||
_list = + _list; // copy array to not alter the original one
|
||||
_list sort _ascending;
|
||||
_list
|
@ -1,13 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventArgs"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName, _eventArgs] call CBA_fnc_localEvent;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_localEvent","3.8.0","CBA_fnc_localEvent");
|
@ -1,13 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventTargets", "_eventArgs"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName, _eventArgs, _eventTargets] call CBA_fnc_targetEvent;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_objectEvent","3.8.0","CBA_fnc_targetEvent");
|
@ -1,14 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
CBA_events_eventNamespace setVariable [_eventName,nil];
|
||||
CBA_events_eventHashes setVariable [_eventName,nil];
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_removeAllEventHandlers","3.8.0","N/A (remove events individually w/ CBA_fnc_removeEventHandler)");
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Removes the magazine of the units rangefinder.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* player call ace_common_fnc_removeBinocularMagazine
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_removeBinocularMagazine","3.8.0","CBA_fnc_removeBinocularMagazine");
|
||||
|
||||
_this call CBA_fnc_removeBinocularMagazine
|
@ -1,13 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventCode"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName, _eventCode] call CBA_fnc_removeEventHandler;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_removeEventHandler","3.8.0","CBA_fnc_removeEventHandler");
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Remove a scroll wheel event handler.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: ID of the event handler <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_id"];
|
||||
|
||||
private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]];
|
||||
|
||||
_actionsVar params ["_currentId", "_actionIDs", "_actions"];
|
||||
|
||||
_id = _actionIDs find _id;
|
||||
|
||||
if (_id == -1) exitWith {};
|
||||
|
||||
_actionIDs set [_id, -1];
|
||||
_actionIDs = _actionIDs - [-1];
|
||||
|
||||
_actions set [_id, []];//{}
|
||||
_actions = _actions - [[]];//[{}]
|
||||
|
||||
missionNamespace setVariable ["ACE_EventHandler_ScrollWheel", [_currentId, _actionIDs, _actions]];
|
@ -1,13 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventArgs"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName, _eventArgs] call CBA_fnc_serverEvent;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_serverEvent","3.8.0","CBA_fnc_serverEvent");
|
@ -1,13 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_eventName", "_eventTargets", "_eventArgs"];
|
||||
|
||||
private _newName = getText (configFile >> "ACE_newEvents" >> _eventName);
|
||||
if (_newName != "") then {
|
||||
TRACE_2("Switching Names",_eventName,_newName);
|
||||
_eventName = _newName;
|
||||
};
|
||||
|
||||
[_eventName,_eventArgs,_eventTargets] call CBA_fnc_targetEvent;
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_targetEvent","3.8.0","CBA_fnc_targetEvent");
|
@ -1,22 +0,0 @@
|
||||
/*
|
||||
* Author: esteldunedain
|
||||
* Executes a code once with a given game time delay, using a PFH
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Code to execute <CODE>
|
||||
* 1: Parameters to run the code with <ARRAY>
|
||||
* 2: Delay in seconds before executing the code <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [{(_this select 0) setVelocity [0,0,200];}, [player], 10] call ace_common_fnc_waitAndExecute
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_waitAndExecute","3.8.0","CBA_fnc_waitAndExecute");
|
||||
|
||||
_this call CBA_fnc_waitAndExecute;
|
@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Author: joko // Jonas
|
||||
* Executes a code once with after the Condition is True, using a PFH
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Condition <CODE>
|
||||
* 1: Code to execute <CODE>
|
||||
* 2: Parameters to run the code with <ARRAY,ANY,NIL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitUntilAndExecute
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
ACE_DEPRECATED("ace_common_fnc_waitUntilAndExecute","3.8.0","CBA_fnc_waitUntilAndExecute");
|
||||
|
||||
_this call CBA_fnc_waitUntilAndExecute;
|
||||
|
||||
nil
|
149
addons/common/functions/fnc_watchVariable.sqf
Normal file
149
addons/common/functions/fnc_watchVariable.sqf
Normal file
@ -0,0 +1,149 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Shows multiple watched variables on the main display (for easy debugging)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Title (var name) <STRING>
|
||||
* 1: Code to generate result (passed nothing, can return any) <OPTIONAL><CODE>
|
||||
* 2: Array containing modifiers <OPTIONAL><ARRAY>
|
||||
* For Numbers:
|
||||
* 0: Show Delta change (default: true) <OPTIONAL><BOOL>
|
||||
* 1: Slider Min Value (default: 0) <OPTIONAL><NUMBER>
|
||||
* 1: Slider Max Value (default: 0) <OPTIONAL><NUMBER>
|
||||
* For Anything else:
|
||||
* 0: Number of structured text lines (default: 1) <OPTIONAL><NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* ["CBA_missionTime"] call ace_common_fnc_watchVariable; // Uses title as code
|
||||
* ["diag_frameNo", {diag_frameNo}, [false]] call ace_common_fnc_watchVariable; // Won't show delta
|
||||
* ["blood", {player getVariable "ace_medical_bloodVolume"}, [true, 0, 100]] call ace_common_fnc_watchVariable; // Shows slider
|
||||
* ["multiLine text", {"Line 1 <br/>Line 2"}, [2]] call ace_common_fnc_watchVariable;
|
||||
* ["player names", {allPlayers apply {name _x}}, [5]] call ace_common_fnc_watchVariable; // handles any data types
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
// #define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define TEXT_HEIGHT 16
|
||||
|
||||
params [["_name", "", [""]],["_code", {}, [{}]], ["_mods", [], [[]]]];
|
||||
TRACE_3("params",_name,_code,_mods);
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
if (canSuspend) exitWith { // Ensure atomic - (fix `disableSerialization` error when called from init.sqf)
|
||||
[FUNC(watchVariable), _this] call CBA_fnc_directCall;
|
||||
};
|
||||
|
||||
if (isNull (findDisplay 46)) exitWith {
|
||||
TRACE_1("waiting for main display to be ready",isNull (findDisplay 46));
|
||||
[{!isNull (findDisplay 46)}, {_this call FUNC(watchVariable);}, _this] call CBA_fnc_waitUntilAndExecute;
|
||||
};
|
||||
|
||||
if (_code isEqualTo {}) then {TRACE_1("using title as code",_title); _code = compile _name;};
|
||||
|
||||
private _trackedDisplay = uiNamespace getVariable [QGVAR(watchVariableUI), displayNull];
|
||||
if (isNull _trackedDisplay) then {
|
||||
TRACE_1("creating display and adding PFEH",time);
|
||||
QGVAR(watchVariableUI) cutRsc [QGVAR(watchVariableUI), "PLAIN", 1, true];
|
||||
|
||||
[{
|
||||
private _trackedDisplay = uiNamespace getVariable [QGVAR(watchVariableUI), displayNull];
|
||||
private _varArray = _trackedDisplay getVariable [QGVAR(vars), []];
|
||||
TRACE_1("updating watched variables",count _varArray);
|
||||
{
|
||||
_x params ["_ctrlGroup", "_code", "_showDelta", "_lastNumber", "_barMin", "_barMax"];
|
||||
private _result = [] call _code;
|
||||
if (isNil "_result") then {
|
||||
(_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["<t color='#FFFF00'>NIL</t>"];
|
||||
} else {
|
||||
if (_result isEqualType 0) then {
|
||||
(_ctrlGroup controlsGroupCtrl 2) progressSetPosition linearConversion [_barMin, _barMax, _result, 0, 1, true];
|
||||
if (_showDelta) then {
|
||||
private _delta = _result - _lastNumber;
|
||||
_x set [3, _result];
|
||||
if (_delta < 0) then {
|
||||
(_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1 (<t color='#FF0000'>%2</t>)", _result, _delta];
|
||||
} else {
|
||||
(_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1 (<t color='#00FF00'>%2</t>)", _result, _delta];
|
||||
};
|
||||
} else {
|
||||
(_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1", _result];
|
||||
};
|
||||
} else {
|
||||
(_ctrlGroup controlsGroupCtrl 1) ctrlSetStructuredText parseText format ["%1", _result];
|
||||
};
|
||||
};
|
||||
} forEach _varArray;
|
||||
}, 1, []] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
||||
// Add curent call:
|
||||
|
||||
private _trackedDisplay = uiNamespace getVariable [QGVAR(watchVariableUI), displayNull];
|
||||
private _varArray = _trackedDisplay getVariable [QGVAR(vars), []];
|
||||
private _freePositionY = _trackedDisplay getVariable [QGVAR(freePosition), safeZoneY + 100 * pixelH];
|
||||
|
||||
private _height = 2 * TEXT_HEIGHT * pixelH;
|
||||
|
||||
private _ctrlGroup = _trackedDisplay ctrlCreate ["ctrlControlsGroupNoScrollbars", -1];
|
||||
|
||||
private _ctrlBackground = (_trackedDisplay ctrlCreate ["ctrlStaticBackground", -1, _ctrlGroup]);
|
||||
_ctrlBackground ctrlSetBackgroundColor [0.2, 0.2, 0.2, 0.5];
|
||||
|
||||
private _ctrlTitle = (_trackedDisplay ctrlCreate ["ctrlStatic", -1, _ctrlGroup]);
|
||||
_ctrlTitle ctrlSetFontHeight (TEXT_HEIGHT * pixelH);
|
||||
_ctrlTitle ctrlSetFont "EtelkaMonospacePro";
|
||||
_ctrlTitle ctrlSetPosition [0, 0, 300 * pixelW, TEXT_HEIGHT * pixelW];
|
||||
_ctrlTitle ctrlCommit 0;
|
||||
_ctrlTitle ctrlSetText _name;
|
||||
|
||||
if ((_mods param [0, true, [0, false]]) isEqualType false) then {
|
||||
_mods params [["_showDelta", true, [false]], ["_barMin", 0, [0]], ["_barMax", 0, [0]]];
|
||||
TRACE_3("adding number",_barMin,_barMax,_showDelta);
|
||||
|
||||
if (_barMin != _barMax) then {
|
||||
TRACE_2("creating bar",_barMin,_barMax);
|
||||
private _ctrlSlider = _trackedDisplay ctrlCreate ["RscProgress", 2, _ctrlGroup];
|
||||
_ctrlSlider ctrlSetPosition [0 * pixelW, TEXT_HEIGHT * pixelH, 300 * pixelW, TEXT_HEIGHT * pixelH];
|
||||
_ctrlSlider ctrlSetFade 0.25;
|
||||
_ctrlSlider ctrlSetTextColor [0, 0, 0.2, 1];
|
||||
_ctrlSlider ctrlCommit 0;
|
||||
};
|
||||
|
||||
private _ctrlResultText = _trackedDisplay ctrlCreate [QGVAR(debug_structuredText), 1, _ctrlGroup];
|
||||
_ctrlResultText ctrlSetPosition [25 * pixelW, TEXT_HEIGHT * pixelH, 275 * pixelW, TEXT_HEIGHT * pixelH];
|
||||
_ctrlResultText ctrlCommit 0;
|
||||
|
||||
_varArray pushBack [_ctrlGroup, _code, _showDelta, 0, _barMin, _barMax];
|
||||
|
||||
} else {
|
||||
_mods params [["_lines", 1, [1]]];
|
||||
_lines = _lines max 1;
|
||||
TRACE_1("adding text",_lines);
|
||||
|
||||
private _ctrlResultText = _trackedDisplay ctrlCreate [QGVAR(debug_structuredText), 1, _ctrlGroup];
|
||||
_ctrlResultText ctrlSetPosition [25 * pixelW, TEXT_HEIGHT * pixelH, 275 * pixelW, _lines * TEXT_HEIGHT * pixelH];
|
||||
_ctrlResultText ctrlCommit 0;
|
||||
|
||||
_height = (1 + _lines) * TEXT_HEIGHT * pixelH;
|
||||
|
||||
_varArray pushBack [_ctrlGroup, _code, false, -1, 0, 0];
|
||||
};
|
||||
|
||||
_trackedDisplay setVariable [QGVAR(vars), _varArray];
|
||||
|
||||
_ctrlGroup ctrlSetPosition [safeZoneX, _freePositionY, 300 * pixelW, _height];
|
||||
_ctrlGroup ctrlCommit 0;
|
||||
_ctrlBackground ctrlSetPosition [0, 0, 300 * pixelW, _height];
|
||||
_ctrlBackground ctrlCommit 0;
|
||||
|
||||
|
||||
_freePositionY = _freePositionY + _height + 5 * pixelH;
|
||||
_trackedDisplay setVariable [QGVAR(freePosition), _freePositionY];
|
||||
|
||||
nil
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Initializes the MouseZChanged eventhandler.
|
||||
*
|
||||
* Arguments:
|
||||
* None
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public : No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
disableSerialization;
|
||||
|
||||
params ["_display"];
|
||||
|
||||
_display displayAddEventHandler ["MouseZChanged", QUOTE(_this call FUNC(handleScrollWheel))];
|
@ -16,7 +16,3 @@ class CfgPatches {
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
interactMenuOpened = "ace_interactMenuOpened";
|
||||
};
|
||||
|
21
addons/cookoff/CfgEden.hpp
Normal file
21
addons/cookoff/CfgEden.hpp
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
class Cfg3DEN {
|
||||
class Object {
|
||||
class AttributeCategories {
|
||||
class ace_attributes {
|
||||
class Attributes {
|
||||
class GVAR(enable) {
|
||||
property = QGVAR(enable);
|
||||
control = "Checkbox";
|
||||
displayName = CSTRING(enable_name);
|
||||
tooltip = CSTRING(enable_tooltip);
|
||||
expression = QUOTE(if !(_value) then {_this setVariable [ARR_3('%s',_value,true)];};);
|
||||
typeName = "BOOL";
|
||||
condition = "objectVehicle";
|
||||
defaultValue = "(true)"; // fix pbo project preprocessing bug
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -11,15 +11,19 @@ class CfgVehicles {
|
||||
class ThingX;
|
||||
class GVAR(Turret_MBT_01): ThingX {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
_generalMacro = QGVAR(TurretDummy);
|
||||
_generalMacro = QGVAR(Turret_MBT_01);
|
||||
scope = 1;
|
||||
displayName = CSTRING(generic_turret_wreck);
|
||||
model = "\A3\Structures_F\Wrecks\Wreck_Slammer_turret_F.p3d";
|
||||
icon = "\A3\armor_f_gamma\MBT_01\Data\ui\map_slammer_mk4_ca.paa";
|
||||
};
|
||||
class GVAR(Turret_MBT_02): ThingX {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
_generalMacro = QGVAR(TurretDummy);
|
||||
_generalMacro = QGVAR(Turret_MBT_02);
|
||||
scope = 1;
|
||||
displayName = CSTRING(generic_turret_wreck);
|
||||
model = "\A3\Structures_F\Wrecks\Wreck_T72_turret_F.p3d";
|
||||
icon = "\A3\armor_f_gamma\MBT_02\Data\UI\map_MBT_02_ca.paa";
|
||||
};
|
||||
|
||||
class Tank;
|
||||
@ -53,4 +57,20 @@ class CfgVehicles {
|
||||
class O_MBT_02_cannon_F: O_MBT_02_base_F {
|
||||
GVAR(turret)[] = {QGVAR(Turret_MBT_02),{0,-1,0}};
|
||||
};
|
||||
|
||||
class MRAP_01_base_F: Car_F {
|
||||
GVAR(engineSmokeOffset)[] = {0,-2,0};
|
||||
};
|
||||
|
||||
class MRAP_02_base_F: Car_F {
|
||||
GVAR(engineSmokeOffset)[] = {0,-2,0};
|
||||
};
|
||||
|
||||
class MRAP_03_base_F: Car_F {
|
||||
GVAR(engineSmokeOffset)[] = {0,-2,0};
|
||||
};
|
||||
|
||||
class Quadbike_01_base_F: Car_F {
|
||||
GVAR(engineSmokeOffset)[] = {0,1,0};
|
||||
};
|
||||
};
|
||||
|
@ -8,37 +8,45 @@ GVAR(cacheTankDuplicates) = call CBA_fnc_createNamespace;
|
||||
// cookoff and burning engine
|
||||
["Tank", "init", {
|
||||
params ["_vehicle"];
|
||||
|
||||
private _typeOf = typeOf _vehicle;
|
||||
|
||||
if (isNil {GVAR(cacheTankDuplicates) getVariable _typeOf}) then {
|
||||
private _hitpoints = (getAllHitPointsDamage _vehicle param [0, []]) apply {toLower _x};
|
||||
private _duplicateHitpoints = [];
|
||||
|
||||
{
|
||||
if ((_x != "") && {_x in (_hitpoints select [0,_forEachIndex])}) then {
|
||||
_duplicateHitpoints pushBack _forEachIndex;
|
||||
};
|
||||
} forEach _hitpoints;
|
||||
|
||||
TRACE_2("dupes",_typeOf,_duplicateHitpoints);
|
||||
GVAR(cacheTankDuplicates) setVariable [_typeOf, _duplicateHitpoints];
|
||||
};
|
||||
|
||||
_vehicle addEventHandler ["HandleDamage", {
|
||||
if (GVAR(enable)) then {
|
||||
if ((_this select 0) getVariable [QGVAR(enable), GVAR(enable)]) then {
|
||||
["tank", _this] call FUNC(handleDamage);
|
||||
};
|
||||
}];
|
||||
}, nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
["Wheeled_APC_F", "init", {
|
||||
(_this select 0) addEventHandler ["HandleDamage", {
|
||||
if (GVAR(enable)) then {
|
||||
params ["_vehicle"];
|
||||
|
||||
_vehicle addEventHandler ["HandleDamage", {
|
||||
if ((_this select 0) getVariable [QGVAR(enable), GVAR(enable)]) then {
|
||||
["tank", _this] call FUNC(handleDamage);
|
||||
};
|
||||
}];
|
||||
}, nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
["Car", "init", {
|
||||
(_this select 0) addEventHandler ["HandleDamage", {
|
||||
if (GVAR(enable)) then {
|
||||
params ["_vehicle"];
|
||||
|
||||
_vehicle addEventHandler ["HandleDamage", {
|
||||
if ((_this select 0) getVariable [QGVAR(enable), GVAR(enable)]) then {
|
||||
["car", _this] call FUNC(handleDamage);
|
||||
};
|
||||
}];
|
||||
@ -46,14 +54,31 @@ GVAR(cacheTankDuplicates) = call CBA_fnc_createNamespace;
|
||||
|
||||
// secondary explosions
|
||||
["AllVehicles", "killed", {
|
||||
if (GVAR(enable)) then {
|
||||
(_this select 0) call FUNC(secondaryExplosions);
|
||||
params ["_vehicle"];
|
||||
|
||||
if (_vehicle getVariable [QGVAR(enable), GVAR(enable)]) then {
|
||||
_vehicle call FUNC(secondaryExplosions);
|
||||
};
|
||||
}, nil, ["Man"]] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
// blow off turret effect
|
||||
["Tank", "killed", {
|
||||
if (GVAR(enable)) then {
|
||||
(_this select 0) call FUNC(blowOffTurret);
|
||||
params ["_vehicle"];
|
||||
|
||||
if (_vehicle getVariable [QGVAR(enable), GVAR(enable)]) then {
|
||||
_vehicle call FUNC(blowOffTurret);
|
||||
};
|
||||
}] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
// event to add a turret to a curator if the vehicle already belonged to that curator
|
||||
if (isServer) then {
|
||||
[QGVAR(addTurretToEditable), {
|
||||
params ["_vehicle", "_turret"];
|
||||
|
||||
{
|
||||
if (_vehicle in curatorEditableObjects _x) then {
|
||||
_x addCuratorEditableObjects [[_turret], false];
|
||||
};
|
||||
} forEach allCurators;
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
};
|
||||
|
@ -15,6 +15,7 @@ class CfgPatches {
|
||||
};
|
||||
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "CfgEden.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
|
||||
#include "CfgCloudlets.hpp"
|
||||
|
@ -30,4 +30,7 @@
|
||||
|
||||
_turret setVectorUp [random 1, random 1, 1];
|
||||
_turret setVelocity [random 7, random 7, 8 + random 5];
|
||||
|
||||
// add turret to all curators that already own the wreck
|
||||
[QGVAR(addTurretToEditable), [_vehicle, _turret]] call CBA_fnc_serverEvent;
|
||||
}, _this, 1] call CBA_fnc_waitAndExecute;
|
||||
|
@ -24,11 +24,17 @@ if (local _vehicle) then {
|
||||
[QGVAR(engineFire), _vehicle] call CBA_fnc_remoteEvent;
|
||||
};
|
||||
|
||||
private _offset = getArray (_vehicle call CBA_fnc_getObjectConfig >> QGVAR(engineSmokeOffset));
|
||||
|
||||
if (_offset isEqualTo []) then {
|
||||
_offset = [0,0,0];
|
||||
};
|
||||
|
||||
private _position = [
|
||||
0,
|
||||
(boundingBoxReal _vehicle select 1 select 1) - 4,
|
||||
(boundingBoxReal _vehicle select 1 select 1) - 2,
|
||||
(boundingBoxReal _vehicle select 0 select 2) + 2
|
||||
];
|
||||
] vectorAdd _offset;
|
||||
|
||||
private _smoke = "#particlesource" createVehicleLocal [0,0,0];
|
||||
_smoke setParticleClass "ObjectDestructionSmoke1_2Smallx";
|
||||
|
@ -70,7 +70,7 @@ if (_simulationType == "tank") exitWith {
|
||||
_vehicle call FUNC(cookOff);
|
||||
};
|
||||
} else {
|
||||
if (_hitpoint in ["hitbody", "hitturret", "#structural"] && {_newDamage > 0.6 + random 0.3}) then {
|
||||
if (_hitpoint in ["hithull", "hitturret", "#structural"] && {_newDamage > 0.6 + random 0.3}) then {
|
||||
_vehicle call FUNC(cookOff);
|
||||
};
|
||||
};
|
||||
|
@ -7,6 +7,7 @@
|
||||
<Czech>Povolit explozi munice</Czech>
|
||||
<Russian>Включить воспламенение</Russian>
|
||||
<Japanese>誘爆を有効化</Japanese>
|
||||
<Polish>Aktywuj efekty zapłonu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enable_tooltip">
|
||||
<English>Enables cook off and related vehicle destruction effects.</English>
|
||||
@ -14,6 +15,21 @@
|
||||
<Czech>Povolí explozi munice a její následné ničivé efekty.</Czech>
|
||||
<Russian>Включает воспламенение и сопутствующие эффекты повреждения техники.</Russian>
|
||||
<Japanese>誘爆を有効化し、車両が誘爆によって破壊されていきます。</Japanese>
|
||||
<Polish>Aktywuje efekt zapłonu na zniszczonych pojazdach.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_generic_turret_wreck">
|
||||
<Original>Wreck (Turret)</Original>
|
||||
<French>Épave (tourelle)</French>
|
||||
<Spanish>Restos (torreta)</Spanish>
|
||||
<Italian>Rottami (torretta)</Italian>
|
||||
<Polish>Wrak (wieżyczka)</Polish>
|
||||
<Russian>Обломки (башня)</Russian>
|
||||
<German>Wrack (Geschützturm)</German>
|
||||
<Czech>Vrak (věž)</Czech>
|
||||
<English>Wreck (Turret)</English>
|
||||
<Portuguese>Ruínas (torre)</Portuguese>
|
||||
<Korean>잔해(포탑)</Korean>
|
||||
<Japanese>残骸(タレット)</Japanese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -19,7 +19,3 @@ class CfgPatches {
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "Dialog.hpp"
|
||||
#include "RscTitles.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
RangerfinderData = QEGVAR(vector,rangefinderData);
|
||||
};
|
||||
|
@ -19,8 +19,3 @@ class CfgPatches {
|
||||
#include "CfgWeapons.hpp"
|
||||
|
||||
#include "gui_disarm.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
DisarmDebugCallback = QGVAR(debugCallback);
|
||||
DisarmDropItems = QGVAR(dropItems);
|
||||
};
|
||||
|
@ -2,30 +2,29 @@ class CfgVehicles {
|
||||
class Man;
|
||||
class CAManBase: Man {
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
class ACE_Dogtag {
|
||||
displayName = CSTRING(itemName);
|
||||
condition = "";
|
||||
statement = "";
|
||||
class ACE_Dogtag {
|
||||
displayName = CSTRING(itemName);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag));
|
||||
statement = "";
|
||||
showDisabled = 0;
|
||||
distance = 1.75;
|
||||
icon = QPATHTOF(data\dogtag_icon_ca.paa);
|
||||
selection = "neck";
|
||||
class ACE_CheckDogtag {
|
||||
displayName = CSTRING(checkDogtag);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckDogtag));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkDogtag));
|
||||
showDisabled = 0;
|
||||
priority = 3;
|
||||
icon = QPATHTOF(data\dogtag_icon_ca.paa);
|
||||
};
|
||||
class ACE_TakeDogtag {
|
||||
displayName = CSTRING(takeDogtag);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(takeDogtag));
|
||||
showDisabled = 0;
|
||||
priority = 3;
|
||||
icon = QPATHTOF(data\dogtag_icon_ca.paa);
|
||||
class ACE_CheckDogtag {
|
||||
displayName = CSTRING(checkDogtag);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckDogtag));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkDogtag));
|
||||
showDisabled = 0;
|
||||
priority = 3;
|
||||
icon = QPATHTOF(data\dogtag_icon_ca.paa);
|
||||
};
|
||||
class ACE_TakeDogtag {
|
||||
displayName = CSTRING(takeDogtag);
|
||||
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeDogtag));
|
||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(takeDogtag));
|
||||
showDisabled = 0;
|
||||
priority = 3;
|
||||
icon = QPATHTOF(data\dogtag_icon_ca.paa);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -10,25 +10,27 @@
|
||||
// - Adding actions via config would create a dependency
|
||||
if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then {
|
||||
if (hasInterface) then {
|
||||
|
||||
private _checkTagAction = [
|
||||
"ACE_CheckDogtag",
|
||||
format ["%1: %2", localize LSTRING(itemName), localize LSTRING(checkDogtag)],
|
||||
QPATHTOF(data\dogtag_icon_ca.paa),
|
||||
{[_player,_target] call FUNC(checkDogtag)},
|
||||
{!isNil {_target getVariable QGVAR(dogtagData)}}
|
||||
] call ace_interact_menu_fnc_createAction;
|
||||
"ACE_CheckDogtag",
|
||||
format ["%1: %2", localize LSTRING(itemName), localize LSTRING(checkDogtag)],
|
||||
QPATHTOF(data\dogtag_icon_ca.paa),
|
||||
{[_player,_target] call FUNC(checkDogtag)},
|
||||
{!isNil {_target getVariable QGVAR(dogtagData)}}
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
["ACE_bodyBagObject", 0, ["ACE_MainActions"], _checkTagAction] call EFUNC(interact_menu,addActionToClass);
|
||||
|
||||
private _takeTagAction = [
|
||||
"ACE_TakeDogtag",
|
||||
format ["%1: %2", localize LSTRING(itemName), localize LSTRING(takeDogtag)],
|
||||
QPATHTOF(data\dogtag_icon_ca.paa),
|
||||
{[_player,_target] call FUNC(takeDogtag)},
|
||||
{(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}}
|
||||
] call ace_interact_menu_fnc_createAction;
|
||||
"ACE_TakeDogtag",
|
||||
format ["%1: %2", localize LSTRING(itemName), localize LSTRING(takeDogtag)],
|
||||
QPATHTOF(data\dogtag_icon_ca.paa),
|
||||
{[_player,_target] call FUNC(takeDogtag)},
|
||||
{(!isNil {_target getVariable QGVAR(dogtagData)}) && {((_target getVariable [QGVAR(dogtagTaken), objNull]) != _target)}}
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
["ACE_bodyBagObject", 0, ["ACE_MainActions"], _takeTagAction] call EFUNC(interact_menu,addActionToClass);
|
||||
};
|
||||
|
||||
if (isServer) then {
|
||||
["ace_placedInBodyBag", {
|
||||
params ["_target", "_bodyBag"];
|
||||
|
@ -6,7 +6,7 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
requiredAddons[] = {"ace_interaction"};
|
||||
author = ECSTRING(common,ACETeam);
|
||||
authors[] = {"SzwedzikPL"};
|
||||
url = ECSTRING(main,URL);
|
||||
|
@ -24,4 +24,8 @@ if (_item == "") exitWith {};
|
||||
|
||||
_dogtagData params ["_nickName"];
|
||||
private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickName];
|
||||
[_displayText] call EFUNC(common,displayText);
|
||||
|
||||
// display message
|
||||
[{
|
||||
[_this, 2.5] call EFUNC(common,displayTextStructured);
|
||||
}, _displayText, DOGTAG_SHOW_DELAY] call CBA_fnc_waitAndExecute;
|
||||
|
@ -18,7 +18,26 @@
|
||||
|
||||
params ["_player", "_target"];
|
||||
|
||||
// animation
|
||||
_player call EFUNC(common,goKneeling);
|
||||
|
||||
// sound
|
||||
private _position = AGLToASL (_target modelToWorld (_target selectionPosition "neck"));
|
||||
|
||||
playSound3D [
|
||||
selectRandom RUSTLING_SOUNDS,
|
||||
objNull,
|
||||
false,
|
||||
_position,
|
||||
1,
|
||||
1,
|
||||
50
|
||||
];
|
||||
|
||||
// display dogtag
|
||||
private _doubleTags = (_target getVariable [QGVAR(dogtagTaken), objNull]) != _target;
|
||||
private _dogTagData = [_target] call FUNC(getDogTagData);
|
||||
|
||||
[QGVAR(showDogtag), [_dogTagData, _doubleTags]] call CBA_fnc_localEvent;
|
||||
[{
|
||||
[QGVAR(showDogtag), _this] call CBA_fnc_localEvent;
|
||||
}, [_dogTagData, _doubleTags], DOGTAG_SHOW_DELAY] call CBA_fnc_waitAndExecute;
|
||||
|
@ -19,8 +19,27 @@
|
||||
|
||||
params ["_player", "_target"];
|
||||
|
||||
// animation
|
||||
_player call EFUNC(common,goKneeling);
|
||||
|
||||
// sound
|
||||
private _position = AGLToASL (_target modelToWorld (_target selectionPosition "neck"));
|
||||
|
||||
playSound3D [
|
||||
selectRandom RUSTLING_SOUNDS,
|
||||
objNull,
|
||||
false,
|
||||
_position,
|
||||
1,
|
||||
1,
|
||||
50
|
||||
];
|
||||
|
||||
// display message
|
||||
if ((_target getVariable [QGVAR(dogtagTaken), objNull]) == _target) then {
|
||||
[localize LSTRING(dogtagAlreadyTaken)] call EFUNC(common,displayText);
|
||||
[{
|
||||
[_this, 2.5] call EFUNC(common,displayTextStructured);
|
||||
}, localize LSTRING(dogtagAlreadyTaken), DOGTAG_SHOW_DELAY] call CBA_fnc_waitAndExecute;
|
||||
} else {
|
||||
_target setVariable [QGVAR(dogtagTaken), _target, true];
|
||||
[QGVAR(getDogtagItem), [_player, _target]] call CBA_fnc_serverEvent;
|
||||
|
@ -16,3 +16,12 @@
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define DOGTAG_SHOW_DELAY 1
|
||||
|
||||
#define RUSTLING_SOUNDS [\
|
||||
"a3\sounds_f\characters\ingame\AinvPknlMstpSlayWpstDnon_medic.wss",\
|
||||
"a3\sounds_f\characters\ingame\AinvPknlMstpSlayWrflDnon_medic.wss",\
|
||||
"a3\sounds_f\characters\ingame\AinvPpneMstpSlayWpstDnon_medic.wss",\
|
||||
"a3\sounds_f\characters\ingame\AinvPpneMstpSlayWrflDnon_medic.wss"\
|
||||
]
|
||||
|
@ -45,8 +45,3 @@ class CfgMineTriggers {
|
||||
mineTriggerRange = 1;
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_newEvents {
|
||||
clientRequestsOrientations = QGVAR(sendOrientations);
|
||||
serverSendsOrientations = QGVAR(orientationsSent);
|
||||
};
|
||||
|
@ -819,11 +819,13 @@
|
||||
<English>Tripwire Flare</English>
|
||||
<Russian>Сигнальная растяжка</Russian>
|
||||
<Japanese>仕掛け型照明地雷</Japanese>
|
||||
<Polish>Flara na linkę</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_TripFlare_Description">
|
||||
<English>Type: Tripwire flare - Ignites a non-lethal flare when triggered.<br />Rounds: 1<br />Used on: Ground</English>
|
||||
<Russian>Тип: Сигнальная растяжка - При срабатывании выпускает несмертельную сгнальную вспышку.<br />Зарядов: 1<br />Используется на: Земле</Russian>
|
||||
<Japanese>種類: 仕掛け型照明地雷 - 発動したとき、非致死性の照明を発炎します。<br />装填数: 1<br />次で使用: 地表</Japanese>
|
||||
<Polish>Typ: Flara na linkę - Wystrzeliwuje nieszkodliwą flarę przy nadepnięciu linki.<br/>Pociski: 1<br/>Używane na: ziemia</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -105,6 +105,7 @@
|
||||
<French>LAISSER LES UNITES UTILISER LA CORDE </French>
|
||||
<Russian>ДЕСАНТИРОВАНИЕ ПО КАНАТУ</Russian>
|
||||
<Japanese>ユニットへファスト ロープをさせる</Japanese>
|
||||
<Polish>ZJAZD NA LINACH</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -9,6 +9,12 @@ class asdg_MuzzleSlot_762: asdg_MuzzleSlot { // for 7.62x51 universal mount supp
|
||||
ACE_muzzle_mzls_B = 1;
|
||||
};
|
||||
};
|
||||
class asdg_MuzzleSlot_65: asdg_MuzzleSlot_762 { // for 6.5 weapons, mostly to deal with BIS vanilla compatibility
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
class asdg_MuzzleSlot_93x64: asdg_MuzzleSlot { // for 9.3x64 universal mount suppressors
|
||||
class compatibleItems {
|
||||
ACE_muzzle_mzls_93mmg = 1;
|
||||
@ -19,6 +25,11 @@ class asdg_MuzzleSlot_9MM_SMG: asdg_MuzzleSlot { // for 9x19mm universal mount S
|
||||
ACE_muzzle_mzls_smg_02 = 1;
|
||||
};
|
||||
};
|
||||
class asdg_MuzzleSlot_9MM: asdg_MuzzleSlot { // for 9x19mm universal mount pistol suppressors
|
||||
class compatibleItems {
|
||||
ACE_muzzle_mzls_smg_02 = 1;
|
||||
};
|
||||
};
|
||||
class asdg_MuzzleSlot_556: asdg_MuzzleSlot { // for 5.56x45 universal mount suppressors
|
||||
class compatibleItems {
|
||||
ACE_muzzle_mzls_L = 1;
|
||||
@ -29,12 +40,16 @@ class asdg_MuzzleSlot_45ACP_SMG: asdg_MuzzleSlot { // for .45ACP universal mount
|
||||
ACE_muzzle_mzls_smg_01 = 1;
|
||||
};
|
||||
};
|
||||
class asdg_MuzzleSlot_45ACP: asdg_MuzzleSlot { // for .45ACP universal mount pistol suppressors
|
||||
class compatibleItems {
|
||||
ACE_muzzle_mzls_smg_01 = 1;
|
||||
};
|
||||
};
|
||||
class asdg_MuzzleSlot_762MG: asdg_MuzzleSlot { // for 7.62, 6.5 and 5.56 universal mount MG suppressors
|
||||
class compatibleItems {
|
||||
ACE_muzzle_mzls_B = 1;
|
||||
};
|
||||
};
|
||||
|
||||
class MuzzleSlot;
|
||||
|
||||
class CfgWeapons {
|
||||
@ -44,100 +59,6 @@ class CfgWeapons {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
/* MX */
|
||||
class arifle_MX_Base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
class arifle_MXC_F: arifle_MX_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class arifle_MX_F: arifle_MX_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class arifle_MX_GL_F: arifle_MX_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class arifle_MX_SW_F: arifle_MX_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762MG {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class arifle_MXM_F: arifle_MX_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* Katiba */
|
||||
|
||||
class arifle_Katiba_Base_F: Rifle_Base_F {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
class arifle_Katiba_F: arifle_Katiba_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class arifle_Katiba_C_F: arifle_Katiba_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
class arifle_Katiba_GL_F: arifle_Katiba_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: asdg_MuzzleSlot_762 {
|
||||
class compatibleItems: compatibleItems {
|
||||
ACE_muzzle_mzls_H = 1;
|
||||
ACE_muzzle_mzls_B = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/* Other */
|
||||
class LMG_Mk200_F: Rifle_Long_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
@ -150,56 +71,6 @@ class CfgWeapons {
|
||||
};
|
||||
};
|
||||
|
||||
/* Pistols */
|
||||
|
||||
class Pistol;
|
||||
class Pistol_Base_F: Pistol {
|
||||
class WeaponSlotsInfo;
|
||||
};
|
||||
|
||||
class hgun_P07_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class hgun_Rook40_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_02"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class hgun_ACPC2_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class hgun_Pistol_heavy_01_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot: MuzzleSlot {
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*class hgun_Pistol_heavy_02_F: Pistol_Base_F {
|
||||
class WeaponSlotsInfo: WeaponSlotsInfo {
|
||||
class MuzzleSlot {
|
||||
linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
|
||||
compatibleItems[] += {"ACE_muzzle_mzls_smg_01"};
|
||||
};
|
||||
};
|
||||
};*/
|
||||
|
||||
|
||||
/* Flashsuppressors */
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
<French>Effets de force gravitationnelle</French>
|
||||
<Russian>Эффекты перегрузок</Russian>
|
||||
<Japanese>G による効果</Japanese>
|
||||
<Polish>Efekty przeciążeń</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_gforces_enabledFor_onlyAircraft">
|
||||
<English>Only Aircraft</English>
|
||||
@ -20,6 +21,7 @@
|
||||
<French>Avions seulement</French>
|
||||
<Russian>Только для летательных аппаратов</Russian>
|
||||
<Japanese>航空機のみ</Japanese>
|
||||
<Polish>Tylko samoloty</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -270,8 +270,3 @@ class CfgCloudlets {
|
||||
destroyOnWaterSurface = 1;
|
||||
};
|
||||
};
|
||||
|
||||
class ACE_newEvents {
|
||||
GlassesChanged = "ace_glassesChanged";
|
||||
GlassesCracked = "ace_glassesCracked";
|
||||
};
|
||||
|
@ -31,16 +31,19 @@
|
||||
<English>Goggle Effects</English>
|
||||
<Russian>Эффект очков</Russian>
|
||||
<Japanese>ゴーグルによる効果</Japanese>
|
||||
<Polish>Efekty gogli</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_effects_tintOnly">
|
||||
<English>Tint</English>
|
||||
<Russian>Тонировка</Russian>
|
||||
<Japanese>色彩のみ</Japanese>
|
||||
<Polish>Winieta</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Goggles_enabled_tintAndEffects">
|
||||
<English>Tint + Effects</English>
|
||||
<Russian>Тонировка + эффекты</Russian>
|
||||
<Japanese>色彩 + 効果</Japanese>
|
||||
<Polish>Winieta + Efekty</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -28,7 +28,3 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
|
||||
#include "Effects.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
flashbangExplosion = "ace_flashbangExploded";
|
||||
};
|
||||
|
@ -34,6 +34,8 @@
|
||||
|
||||
params ["_projectile", "_timeToLive"];
|
||||
|
||||
if (isNull _projectile) exitWith {TRACE_1("null",_projectile);};
|
||||
|
||||
private _position = position _projectile;
|
||||
|
||||
// --- fire
|
||||
@ -144,7 +146,7 @@ if (isServer) then {
|
||||
//systemChat format ["burn: %1", _x];
|
||||
|
||||
// --- destroy nearby static weapons and ammo boxes
|
||||
if (_x isKindOf "StaticWeapon" || {_x isKindOf "ReammoBox_F"}) then {
|
||||
if (_x isKindOf "StaticWeapon" || {_x isKindOf "ReammoBox_F"} || {_x isKindOf "ACE_RepairItem_Base"}) then {
|
||||
_x setDamage 1;
|
||||
};
|
||||
|
||||
@ -158,11 +160,39 @@ if (isServer) then {
|
||||
};
|
||||
} forEach (_position nearObjects EFFECT_SIZE);
|
||||
|
||||
// --- burn car engine
|
||||
// --- damage local vehicle
|
||||
private _vehicle = _position nearestObject "Car";
|
||||
if (!local _vehicle || {_vehicle isKindOf "Wheeled_APC_F"}) exitWith {};
|
||||
|
||||
private _engineSelection = getText (_vehicle call CBA_fnc_getObjectConfig >> "HitPoints" >> "HitEngine" >> "name");
|
||||
if (!local _vehicle) exitWith {};
|
||||
|
||||
private _config = _vehicle call CBA_fnc_getObjectConfig;
|
||||
|
||||
// --- burn tyres
|
||||
private _fnc_isWheelHitPoint = {
|
||||
params ["_selectionName"];
|
||||
|
||||
// wheels must use a selection named "wheel_X_Y_steering" for PhysX to work
|
||||
_selectionName select [0, 6] == "wheel_" && {
|
||||
_selectionName select [count _selectionName - 9] == "_steering"
|
||||
} // return
|
||||
};
|
||||
|
||||
{
|
||||
private _wheelSelection = getText (_config >> "HitPoints" >> _x >> "name");
|
||||
|
||||
if (_wheelSelection call _fnc_isWheelHitPoint) then {
|
||||
private _wheelPosition = _vehicle modelToWorld (_vehicle selectionPosition _wheelSelection);
|
||||
|
||||
if (_position distance _wheelPosition < EFFECT_SIZE * 2) then {
|
||||
_vehicle setHit [_wheelSelection, 1];
|
||||
};
|
||||
};
|
||||
} forEach (getAllHitPointsDamage _vehicle param [0, []]);
|
||||
|
||||
// --- burn car engine
|
||||
if (_vehicle isKindOf "Wheeled_APC_F") exitWith {};
|
||||
|
||||
private _engineSelection = getText (_config >> "HitPoints" >> "HitEngine" >> "name");
|
||||
private _enginePosition = _vehicle modelToWorld (_vehicle selectionPosition _engineSelection);
|
||||
|
||||
if (_position distance _enginePosition < EFFECT_SIZE * 2) then {
|
||||
|
@ -279,18 +279,21 @@
|
||||
<German>AN-M14 Brandsatz</German>
|
||||
<Russian>AN-M14 Зажигательная граната</Russian>
|
||||
<Japanese>AN-M14 焼夷手榴弾</Japanese>
|
||||
<Polish>Granat zapalający AN-M14</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_Incendiary_NameShort">
|
||||
<English>AN-M14</English>
|
||||
<German>AN-M14</German>
|
||||
<Russian>AN-M14</Russian>
|
||||
<Japanese>AN-M14</Japanese>
|
||||
<Polish>AN-M14</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Grenades_Incendiary_Description">
|
||||
<English>Incendiary grenade used to destroy weapons, ammunition and other equipment.</English>
|
||||
<German>Brandsatzgranate. Verwendet um Waffen, Munition und andere Ausrüstung zu zerstören.</German>
|
||||
<Russian>Зажигательная граната используется для уничтожения оружия, боеприпасов и прочего оборудования.</Russian>
|
||||
<Japanese>焼夷手榴弾は武器や弾薬箱などの装備を破壊するために使われます。</Japanese>
|
||||
<Polish>Granat zapalający, używany do niszczenia broni, amunicji i innego sprzętu.</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -8,6 +8,7 @@
|
||||
<Russian>Чехол</Russian>
|
||||
<Czech>Pouzdro na zbraň</Czech>
|
||||
<Japanese>ガンバッグ</Japanese>
|
||||
<Polish>Torba na broń</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gunbag_DisplayName_Tan">
|
||||
<English>Gunbag (Tan)</English>
|
||||
@ -16,6 +17,7 @@
|
||||
<Russian>Чехол (желтовато-коричневый)</Russian>
|
||||
<Czech>Pouzdro na zbraň (Žlutohnědá)</Czech>
|
||||
<Japanese>ガンバッグ (タン)</Japanese>
|
||||
<Polish>Torba na broń (jasnobrązowa)</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gunbag_ToGunbag">
|
||||
<English>Put weapon into gunbag</English>
|
||||
@ -24,6 +26,7 @@
|
||||
<Russian>Зачехлить оружие</Russian>
|
||||
<Czech>Vložit zbraň do pouzdra</Czech>
|
||||
<Japanese>ガンバッグへ武器を入れる</Japanese>
|
||||
<Polish>Włóż broń do torby</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gunbag_OffGunbag">
|
||||
<English>Get weapon out of gunbag</English>
|
||||
@ -32,6 +35,7 @@
|
||||
<Russian>Расчехлить оружие</Russian>
|
||||
<Czech>Vytáhnout zbraň z pouzdra</Czech>
|
||||
<Japanese>ガンバッグから武器を出す</Japanese>
|
||||
<Polish>Wyciągnij broń z torby</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gunbag_Status">
|
||||
<English>Status</English>
|
||||
@ -40,6 +44,7 @@
|
||||
<Russian>Статус</Russian>
|
||||
<Czech>Status</Czech>
|
||||
<Japanese>中身</Japanese>
|
||||
<Polish>Status</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Gunbag_Empty">
|
||||
<English>Gunbag Empty</English>
|
||||
@ -48,6 +53,7 @@
|
||||
<Russian>Чехол пуст</Russian>
|
||||
<Czech>Prázdné pouzdro na zbraň</Czech>
|
||||
<Japanese>ガンバッグは空</Japanese>
|
||||
<Polish>Torba jest pusta</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -25,9 +25,3 @@ class CfgPatches {
|
||||
class ACE_Extensions {
|
||||
extensions[] += {"ace_break_line", "ace_parse_imagepath"};
|
||||
};
|
||||
|
||||
class ACE_newEvents {
|
||||
interactMenuOpened = "ace_interactMenuOpened";
|
||||
clearConditionCaches = QGVAR(clearConditionCaches);
|
||||
interactMenuClosed = "ace_interactMenuClosed";
|
||||
};
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
if (!params [["_objectType", "", [""]], ["_typeNum", 0, [0]], ["_parentPath", [], [[]]], ["_action", [], [[]], 11]]) exitWith {
|
||||
ERROR("Bad Params");
|
||||
[]
|
||||
};
|
||||
TRACE_4("params",_objectType,_typeNum,_parentPath,_action);
|
||||
|
||||
@ -38,6 +39,9 @@ if (param [4, false, [false]]) exitwith {
|
||||
', _index];
|
||||
TRACE_2("Added inheritable action",_objectType,_index);
|
||||
[_objectType, "init", _initEH, true, [], true] call CBA_fnc_addClassEventHandler;
|
||||
|
||||
// Return the full path
|
||||
(_parentPath + [_action select 0])
|
||||
};
|
||||
|
||||
// Ensure the config menu was compiled first
|
||||
@ -62,10 +66,11 @@ private _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode);
|
||||
if (isNil {_parentNode}) exitWith {
|
||||
ERROR("Failed to add action");
|
||||
ACE_LOGERROR_4("action (%1) to parent %2 on object %3 [%4]",(_action select 0),_parentPath,_objectType,_typeNum);
|
||||
[]
|
||||
};
|
||||
|
||||
// Add action node as children of the correct node of action tree
|
||||
(_parentNode select 1) pushBack [_action,[]];
|
||||
|
||||
// Return the full path
|
||||
(+ _parentPath) pushBack (_action select 0)
|
||||
(_parentPath + [_action select 0])
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
if (!params [["_object", objNull, [objNull]], ["_typeNum", 0, [0]], ["_parentPath", [], [[]]], ["_action", [], [[]], 11]]) exitWith {
|
||||
ERROR("Bad Params");
|
||||
[]
|
||||
};
|
||||
|
||||
private _varName = [QGVAR(actions),QGVAR(selfActions)] select _typeNum;
|
||||
@ -38,4 +39,4 @@ if (_parentPath isEqualTo ["ACE_MainActions"]) then {
|
||||
_actionList pushBack [_action, +_parentPath];
|
||||
|
||||
// Return the full path
|
||||
(+ _parentPath) pushBack (_action select 0)
|
||||
(_parentPath + [_action select 0])
|
||||
|
@ -19,12 +19,3 @@ class CfgPatches {
|
||||
#include "RscTitles.hpp"
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "ACE_ZeusActions.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
getDown = QGVAR(getDown);
|
||||
pardon = QGVAR(pardon);
|
||||
tapShoulder = QGVAR(tapShoulder);
|
||||
sendAway = QGVAR(sendAway);
|
||||
lampTurnOff = QGVAR(setLampOff);
|
||||
lampTurnOn = QGVAR(setLampOn);
|
||||
};
|
||||
|
@ -17,8 +17,3 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "RscInGameUI.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
laser_laserOff = "ace_laserOff";
|
||||
laser_laserOn = "ace_laserOn";
|
||||
};
|
||||
|
@ -19,8 +19,3 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgJointRails.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
GunLightOff = "ace_gunLightOff";
|
||||
SetHandcuffed = QEGVAR(captives,setHandcuffed);
|
||||
};
|
||||
|
@ -17,7 +17,3 @@ class CfgPatches {
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
|
||||
class ACE_newEvents {
|
||||
interactMenuOpened = "ace_interactMenuOpened";
|
||||
};
|
21
addons/map/Cfg3DEN.hpp
Normal file
21
addons/map/Cfg3DEN.hpp
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
class Cfg3DEN {
|
||||
class Group {
|
||||
class AttributeCategories {
|
||||
class ace_attributes {
|
||||
class Attributes {
|
||||
class GVAR(hideBlueForceMarker) {
|
||||
property = QGVAR(hideBlueForceMarker);
|
||||
control = "Checkbox";
|
||||
displayName = CSTRING(disableBFT);
|
||||
tooltip = CSTRING(disableBFT_description);
|
||||
// groups are kaputt. have to delay setVariable public for it to work.
|
||||
expression = QUOTE(if (_value) then {[ARR_2({(_this select 0) setVariable [ARR_3('%s',_this select 1,true)];},[ARR_2(_this,_value)])] call CBA_fnc_execNextFrame};);
|
||||
typeName = "BOOL";
|
||||
defaultValue = "(false)"; // fix pbo project preprocessing bug
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -26,6 +26,7 @@ class RscButtonMenu;
|
||||
class RscEdit;
|
||||
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "Cfg3DEN.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgMarkers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
|
@ -406,5 +406,13 @@
|
||||
<French>Change le canal de communication par défaut au début de la mission.</French>
|
||||
<Japanese>ミッション開始時にあらかじめ設定されているマーカ チャンネルを変更します</Japanese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_disableBFT">
|
||||
<English>Disable BFT</English>
|
||||
<German>BFT deaktivieren</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_disableBFT_description">
|
||||
<English>Always disable Blue Force Tracking for this group.</English>
|
||||
<German>Blue Force Tracking für diese Gruppe immer deaktivieren.</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -149,12 +149,14 @@
|
||||
<French>Touche de rotation des outils de naviguation</French>
|
||||
<Russian>Клавиша поворота инструментов карты</Russian>
|
||||
<Japanese>マップ ツールの回転キー</Japanese>
|
||||
<Polish>Klawisz obrotu narzędzi nawigacyjnych</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MapTools_rotateModifierKey_description">
|
||||
<English>Modifier key to allow rotating map tools</English>
|
||||
<French>Touche modificatrice permettant la rotation des outils de naviguation </French>
|
||||
<Russian>Клавиша-модификатор, позволяющая поворачивать инструменты карты</Russian>
|
||||
<Japanese>マップ ツールを回転させるキーを編集できます。</Japanese>
|
||||
<Polish>Modyfikator pozwalający na obracanie narzędzi nawigacyjnych</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -4517,7 +4517,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Attributes_isMedicalVehicle_Description">
|
||||
<English>Whether or not the object will be a medical vehicle.</English>
|
||||
<Polish>Czy pojazdy ma być pojazdem medycznym?</Polish>
|
||||
<Polish>Czy pojazd ma być pojazdem medycznym?</Polish>
|
||||
<Italian>L'oggetto in questione sarà un veicolo medico o meno.</Italian>
|
||||
<German>Legt fest, ob das Objekt ein Sanitätsfahrzeug ist.</German>
|
||||
<Spanish>Es un vehículo médico?</Spanish>
|
||||
@ -4535,12 +4535,13 @@
|
||||
<French>Délai de cessez le feu pour l'IA pendant que le joueur est inconscient pour des raisons médicales</French>
|
||||
<Russian>Задержка прекращения огня ботами, когда игрок теряет сознание по медицинским причинам.</Russian>
|
||||
<Japanese>AI はプレイヤーが医療的な理由で気絶している場合にかぎり、撃つのをためらいます。</Japanese>
|
||||
<Polish>Opóźnij stan wstrzymania ognia u AI kiedy gracz jest nieprzytomny z powodów medycznych.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_delayUnconCaptive_DisplayName">
|
||||
<English>Delay cease fire of AI for unconsciousness</English>
|
||||
<German>Verzögert Ende des KI-Beschusses bei medizinischer Bewustlosigkeit</German>
|
||||
<Spanish>Demora antes de volverse neutral al caer inconsciente</Spanish>
|
||||
<Polish>Opóźnij status captive u nieprzytomnych osób</Polish>
|
||||
<Polish>Opóźnij wstrzymanie ognia AI dla nieprzytomnych osób</Polish>
|
||||
<Italian>Ritarda il cessate il fuoco dell'IA quando si è svenuti</Italian>
|
||||
<Czech>Prodleva zastavení palby AI na bezvědomé</Czech>
|
||||
<Portuguese>Atraso durante cessar fogo da AI durante inconsciência</Portuguese>
|
||||
@ -4549,4 +4550,4 @@
|
||||
<Japanese>AI は気絶している人へ、ためらってから射撃します</Japanese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,5 +1,6 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabledFor) {
|
||||
category = ECSTRING(medical,Category_Medical);
|
||||
value = 2;
|
||||
typeName = "SCALAR";
|
||||
values[] = {ECSTRING(Common,Disabled), CSTRING(enabledFor_OnlyServerAndHC), ECSTRING(Common,Enabled)};
|
||||
|
@ -19,7 +19,7 @@
|
||||
if ([_this] call EFUNC(medical,isMedic) || {vehicle _this != _this}) exitWith {false};
|
||||
|
||||
{
|
||||
if ([_x] call EFUNC(medical,isMedic)) exitWith {
|
||||
if ([_x] call EFUNC(medical,isMedic) && {!([_x] call EFUNC(common,isPlayer))}) exitWith {
|
||||
_this setVariable [QGVAR(assignedMedic), _x];
|
||||
true
|
||||
};
|
||||
|
@ -7,6 +7,7 @@
|
||||
<Spanish>Sólo Server y HC</Spanish>
|
||||
<Russian>Нур сервера унд HC</Russian>
|
||||
<Japanese>サーバーと HC のみ</Japanese>
|
||||
<Polish>Tylko serwer i HC</Polish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
1
addons/medical_blood/$PBOPREFIX$
Normal file
1
addons/medical_blood/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\medical_blood
|
10
addons/medical_blood/ACE_Settings.hpp
Normal file
10
addons/medical_blood/ACE_Settings.hpp
Normal file
@ -0,0 +1,10 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabledFor) {
|
||||
category = ECSTRING(medical,Category_Medical);
|
||||
displayName = CSTRING(MedicalBloodSettings_enabledFor_DisplayName);
|
||||
description = CSTRING(MedicalBloodSettings_enabledFor_Description);
|
||||
value = 2;
|
||||
typeName = "SCALAR";
|
||||
values[] = {ECSTRING(Common,Disabled), CSTRING(enabledFor_OnlyPlayers), ECSTRING(Common,Enabled)};
|
||||
};
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user