mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge remote-tracking branch 'refs/remotes/origin/master' into Traduction-Fr
This commit is contained in:
commit
ffe940e389
@ -39,7 +39,7 @@ private _fnc_parseConfigForDisplayNames = {
|
||||
} else {
|
||||
private _value = missionNamespace getVariable [_name, -1];
|
||||
if ((_value < 0) || {_value >= (count _values)}) then {
|
||||
ACE_LOGWARNING_3("Setting [%1] out of bounds %2 (values[] count is %3)(", _name, _value, count _values);
|
||||
ACE_LOGWARNING_3("Setting [%1] out of bounds %2 (values[] count is %3)", _name, _value, count _values);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -36,16 +36,40 @@ GVAR(Setup) = objNull;
|
||||
GVAR(pfeh_running) = false;
|
||||
GVAR(CurrentSpeedDial) = 0;
|
||||
|
||||
// Properly angle preplaced bottom-attack SLAMs
|
||||
// In case we are a JIP client, ask the server for orientation of any previously
|
||||
// placed mine.
|
||||
if (isServer) then {
|
||||
["clientRequestsOrientations", {
|
||||
params ["_logic"];
|
||||
TRACE_1("clientRequestsOrientations received:",_logic);
|
||||
// Filter the array before sending it
|
||||
GVAR(explosivesOrientations) = GVAR(explosivesOrientations) select {
|
||||
_x params ["_explosive"];
|
||||
(!isNull _explosive && {alive _explosive})
|
||||
};
|
||||
TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations));
|
||||
["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
} else {
|
||||
["serverSendsOrientations", {
|
||||
params ["_explosivesOrientations"];
|
||||
TRACE_1("serverSendsOrientations received:",_explosivesOrientations);
|
||||
{
|
||||
if (local _x) then {
|
||||
switch (typeOf _x) do {
|
||||
case ("ACE_SLAMDirectionalMine_Magnetic_Ammo"): {
|
||||
[_x, getDir _x, 90] call FUNC(setPosition);
|
||||
_x params ["_explosive","_direction","_pitch"];
|
||||
TRACE_3("orientation set:",_explosive,_direction,_pitch);
|
||||
[_explosive, _direction, _pitch] call FUNC(setPosition);
|
||||
} forEach _explosivesOrientations;
|
||||
private _group = group GVAR(localLogic);
|
||||
deleteVehicle GVAR(localLogic);
|
||||
GVAR(localLogic) = nil;
|
||||
deleteGroup _group;
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// Create a logic to get the client ID
|
||||
GVAR(localLogic) = (createGroup sideLogic) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
|
||||
TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic));
|
||||
["clientRequestsOrientations", [GVAR(localLogic)]] call EFUNC(common,serverEvent);
|
||||
};
|
||||
};
|
||||
};
|
||||
} forEach allMines;
|
||||
|
||||
["interactMenuOpened", {
|
||||
//Cancel placement if interact menu opened
|
||||
|
@ -19,4 +19,8 @@ ADDON = false;
|
||||
|
||||
#include "XEH_PREP.hpp"
|
||||
|
||||
if (isServer) then {
|
||||
GVAR(explosivesOrientations) = []
|
||||
};
|
||||
|
||||
ADDON = true;
|
||||
|
@ -29,3 +29,15 @@ if (isNull (attachedTo _explosive)) then {
|
||||
//Attaching to a vehicle (dirAndUp based on vehicle)
|
||||
_explosive setVectorDirAndUp [[0,0,1],[(sin _direction),(cos _direction),0]];
|
||||
};
|
||||
|
||||
if (isServer) then {
|
||||
// Store the orientation to broadcast it later to JIP players
|
||||
GVAR(explosivesOrientations) pushBack [_explosive, _direction, _pitch];
|
||||
|
||||
// This is a good time to filter the array and remove explosives that no longer exist
|
||||
GVAR(explosivesOrientations) = GVAR(explosivesOrientations) select {
|
||||
_x params ["_explosive"];
|
||||
(!isNull _explosive && {alive _explosive})
|
||||
};
|
||||
TRACE_1("setPosition",GVAR(explosivesOrientations));
|
||||
};
|
||||
|
@ -91,6 +91,7 @@
|
||||
<Czech>Blokováno</Czech>
|
||||
<Polish>Zablokowany</Polish>
|
||||
<Italian>Bloccato</Italian>
|
||||
<German>Blockiert</German>
|
||||
<French>Bloqué</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_CancelAction">
|
||||
|
1
addons/fastroping/$PBOPREFIX$
Normal file
1
addons/fastroping/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\fastroping
|
11
addons/fastroping/CfgEventHandlers.hpp
Normal file
11
addons/fastroping/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
39
addons/fastroping/CfgMoves.hpp
Normal file
39
addons/fastroping/CfgMoves.hpp
Normal file
@ -0,0 +1,39 @@
|
||||
class CfgMovesBasic {
|
||||
class DefaultDie;
|
||||
class ManActions {
|
||||
ACE_FastRoping = "ACE_FastRoping";
|
||||
};
|
||||
};
|
||||
|
||||
class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
class States {
|
||||
class Crew;
|
||||
class ACE_freefallLoop: Crew {
|
||||
file = PATHTOF(anim\freefallLoop.rtm);
|
||||
interpolateTo[] = {"Unconscious", 1};
|
||||
disableWeapons = 1;
|
||||
disableWeaponsLong = 1;
|
||||
canReload = 0;
|
||||
looped = 1;
|
||||
speed = 0.204082;
|
||||
};
|
||||
class ACE_freefallStart: Crew {
|
||||
file = PATHTOF(anim\freefallStart.rtm);
|
||||
interpolateTo[] = {"Unconscious", 1};
|
||||
disableWeapons = 1;
|
||||
disableWeaponsLong = 1;
|
||||
canReload = 0;
|
||||
looped = 0;
|
||||
speed = 0.61224502;
|
||||
};
|
||||
class ACE_slidingLoop: Crew {
|
||||
file = PATHTOF(anim\slidingLoop.rtm);
|
||||
interpolateTo[] = {"Unconscious", 1};
|
||||
disableWeapons = 1;
|
||||
disableWeaponsLong = 1;
|
||||
canReload = 0;
|
||||
looped = 1;
|
||||
speed = 0.441176;
|
||||
};
|
||||
};
|
||||
};
|
207
addons/fastroping/CfgVehicles.hpp
Normal file
207
addons/fastroping/CfgVehicles.hpp
Normal file
@ -0,0 +1,207 @@
|
||||
#define EQUIP_FRIES_ATTRIBUTE class Attributes { \
|
||||
class GVAR(equipFRIES) { \
|
||||
property = QGVAR(equipFRIES); \
|
||||
control = "Checkbox"; \
|
||||
displayName = CSTRING(Eden_equipFRIES); \
|
||||
tooltip = CSTRING(Eden_equipFRIES_Tooltip); \
|
||||
expression = [_this] call FUNC(equipFRIES); \
|
||||
typeName = "BOOL"; \
|
||||
condition = "objectVehicle"; \
|
||||
defaultValue = false; \
|
||||
}; \
|
||||
}
|
||||
|
||||
class CfgVehicles {
|
||||
class Building;
|
||||
class NonStrategic: Building {
|
||||
class AnimationSources;
|
||||
};
|
||||
class ACE_friesBase: NonStrategic {
|
||||
destrType = "";
|
||||
};
|
||||
class ACE_friesAnchorBar: ACE_friesBase {
|
||||
author = "jokoho48";
|
||||
scope = 1;
|
||||
model = PATHTOF(data\friesAnchorBar.p3d);
|
||||
animated = 1;
|
||||
class AnimationSources: AnimationSources {
|
||||
class extendHookRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 1.5;
|
||||
};
|
||||
class extendHookLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 1.5;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_friesGantry: ACE_friesBase {
|
||||
author = "jokoho48";
|
||||
scope = 1;
|
||||
model = PATHTOF(data\friesGantry.p3d);
|
||||
animated = 1;
|
||||
class AnimationSources: AnimationSources {
|
||||
class adjustWidth {
|
||||
source = "user";
|
||||
initPhase = 0.211;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0;
|
||||
animPeriod = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_friesGantryReverse: ACE_friesGantry {
|
||||
class AnimationSources: AnimationSources {
|
||||
class adjustWidth {
|
||||
source = "user";
|
||||
initPhase = 0.213;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
source = "user";
|
||||
initPhase = 0.5;
|
||||
animPeriod = 0;
|
||||
};
|
||||
class rotateGantryRight {
|
||||
source = "user";
|
||||
initPhase = 0.5;
|
||||
animPeriod = 0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Logic;
|
||||
class Module_F: Logic {
|
||||
class ModuleDescription;
|
||||
};
|
||||
class ACE_Module: Module_F {};
|
||||
class ACE_moduleEquipFRIES: ACE_Module {
|
||||
scope = 2;
|
||||
displayName = CSTRING(Module_FRIES_DisplayName);
|
||||
icon = QUOTE(PATHTOF(UI\Icon_Module_FRIES_ca.paa));
|
||||
category = "ACE";
|
||||
function = QUOTE(FUNC(moduleEquipFRIES));
|
||||
functionPriority = 10;
|
||||
isGlobal = 0;
|
||||
isTriggerActivated = 0;
|
||||
isDisposable = 0;
|
||||
author = "BaerMitUmlaut";
|
||||
|
||||
class ModuleDescription: ModuleDescription {
|
||||
description = CSTRING(Module_FRIES_Description);
|
||||
sync[] = {"AnyVehicle"};
|
||||
};
|
||||
};
|
||||
|
||||
class Air;
|
||||
class Helicopter: Air {
|
||||
class ACE_SelfActions {
|
||||
class ACE_prepareFRIES {
|
||||
displayName = CSTRING(Interaction_prepareFRIES);
|
||||
condition = [vehicle _player] call FUNC(canPrepareFRIES);
|
||||
statement = [vehicle _player] call FUNC(prepareFRIES);
|
||||
showDisabled = 0;
|
||||
priority = 1;
|
||||
};
|
||||
class ACE_deployRopes {
|
||||
displayName = CSTRING(Interaction_deployRopes);
|
||||
condition = [_player, vehicle _player] call FUNC(canDeployRopes);
|
||||
statement = [QGVAR(deployRopes), [vehicle _player]] call EFUNC(common,serverEvent);
|
||||
showDisabled = 0;
|
||||
priority = 1;
|
||||
};
|
||||
class ACE_cutRopes {
|
||||
displayName = CSTRING(Interaction_cutRopes);
|
||||
condition = [vehicle _player] call FUNC(canCutRopes);
|
||||
statement = [vehicle _player] call FUNC(cutRopes);
|
||||
showDisabled = 0;
|
||||
priority = 1;
|
||||
};
|
||||
class ACE_fastRope {
|
||||
displayName = CSTRING(Interaction_fastRope);
|
||||
condition = [_player, vehicle _player] call FUNC(canFastRope);
|
||||
statement = [_player, vehicle _player] call FUNC(fastRope);
|
||||
showDisabled = 0;
|
||||
priority = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Helicopter_Base_H;
|
||||
class Helicopter_Base_F;
|
||||
|
||||
class GVAR(helper): Helicopter_Base_F {
|
||||
author = "KoffeinFlummi";
|
||||
scope = 1;
|
||||
model = PATHTOF(data\helper.p3d);
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
condition = "false";
|
||||
};
|
||||
};
|
||||
class Turrets {};
|
||||
};
|
||||
|
||||
class Heli_Light_02_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{1.41, 1.38, 0}, {-1.41, 1.38, 0}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
};
|
||||
class Heli_Attack_02_base_F: Helicopter_Base_F {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{1.25, 1.5, -0.6}, {-1.1, 1.5, -0.6}};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
};
|
||||
class Heli_Transport_01_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 2;
|
||||
GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(friesType) = "ACE_friesAnchorBar";
|
||||
GVAR(friesAttachmentPoint[]) = {0.065, 2.2, -0.15};
|
||||
GVAR(onPrepare) = QFUNC(onPrepareCommon);
|
||||
GVAR(onCut) = QFUNC(onCutCommon);
|
||||
EQUIP_FRIES_ATTRIBUTE;
|
||||
};
|
||||
class Heli_Transport_02_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{0.94, -4.82, -1.16}, {-0.94, -4.82, -1.16}};
|
||||
};
|
||||
class Heli_Transport_03_base_F: Helicopter_Base_H {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{0.75, -5.29, -0.11}, {-0.87, -5.29, -0.11}};
|
||||
};
|
||||
class Heli_light_03_base_F: Helicopter_Base_F {
|
||||
GVAR(enabled) = 2;
|
||||
GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(friesType) = "ACE_friesGantryReverse";
|
||||
GVAR(friesAttachmentPoint[]) = {1.04, 2.5, -0.34};
|
||||
EQUIP_FRIES_ATTRIBUTE;
|
||||
};
|
||||
class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {
|
||||
GVAR(enabled) = 2;
|
||||
GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
GVAR(friesType) = "ACE_friesGantry";
|
||||
GVAR(friesAttachmentPoint[]) = {-1.07, 3.26, -0.5};
|
||||
EQUIP_FRIES_ATTRIBUTE;
|
||||
};
|
||||
class Heli_Transport_04_base_F;
|
||||
class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{1.03, 1.6, -0.23}, {1.03, -1.36, -0.23}, {-1.23, 1.6, -0.23}, {-1.23, -1.36, -0.23}};
|
||||
};
|
||||
class O_Heli_Transport_04_covered_F: Heli_Transport_04_base_F {
|
||||
GVAR(enabled) = 1;
|
||||
GVAR(ropeOrigins[]) = {{0.83, -4.7, -0.03}, {-1.02, -4.7, -0.03}};
|
||||
};
|
||||
};
|
BIN
addons/fastroping/UI/Icon_Module_FRIES_ca.paa
Normal file
BIN
addons/fastroping/UI/Icon_Module_FRIES_ca.paa
Normal file
Binary file not shown.
14
addons/fastroping/XEH_postInit.sqf
Normal file
14
addons/fastroping/XEH_postInit.sqf
Normal file
@ -0,0 +1,14 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
[QGVAR(deployRopes), {
|
||||
_this call FUNC(deployRopes);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
[QGVAR(startFastRope), {
|
||||
[FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler;
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
[QGVAR(ropeDetach), {
|
||||
params ["_object", "_rope"];
|
||||
_object ropeDetach _rope;
|
||||
}] call EFUNC(common,addEventHandler);
|
21
addons/fastroping/XEH_preInit.sqf
Normal file
21
addons/fastroping/XEH_preInit.sqf
Normal file
@ -0,0 +1,21 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(canCutRopes);
|
||||
PREP(canDeployRopes);
|
||||
PREP(canFastRope);
|
||||
PREP(canPrepareFRIES);
|
||||
PREP(cutRopes);
|
||||
PREP(deployRopes);
|
||||
PREP(equipFRIES);
|
||||
PREP(fastRope);
|
||||
PREP(fastRopeLocalPFH);
|
||||
PREP(fastRopeServerPFH);
|
||||
PREP(moduleEquipFRIES);
|
||||
PREP(onCutCommon);
|
||||
PREP(onPrepareCommon);
|
||||
PREP(onRopeBreak);
|
||||
PREP(prepareFRIES);
|
||||
|
||||
ADDON = true;
|
110
addons/fastroping/anim/LICENSE
Normal file
110
addons/fastroping/anim/LICENSE
Normal file
@ -0,0 +1,110 @@
|
||||
ARMA PUBLIC LICENSE
|
||||
https://www.bistudio.com/community/licenses/arma-public-license
|
||||
|
||||
Brief summary of this Licence
|
||||
|
||||
PLEASE, NOTE THAT THIS SUMMARY HAS NO LEGAL EFFECT AND IS ONLY OF AN INFORMATORY NATURE DESIGNED FOR YOU TO GET THE BASIC INFORMATION ABOUT THE CONTENT OF THIS LICENCE. THE ONLY LEGALLY BINDING PROVISIONS ARE THOSE IN THE ORIGINAL AND FULL TEXT OF THIS LICENCE.
|
||||
|
||||
With this licence you are free to adapt (i.e. modify, rework or update) and share (i.e. copy, distribute or transmit) the material under the following conditions:
|
||||
|
||||
Attribution - You must attribute the material in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the material).
|
||||
Noncommercial - You may not use this material for any commercial purposes.
|
||||
Arma Only - You may not convert or adapt this material to be used in other games than Arma.
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Arma Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||
|
||||
Section 1 - Definitions
|
||||
|
||||
Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
||||
Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||
ArmaOnly means primarily intended for or directed towards the use in any of existing and future Arma games, including but not limited to Arma: Cold War Assault, Arma, Arma 2 and Arma 3 and its official sequels and expansion packs.
|
||||
Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||
Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||
Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
||||
Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
||||
Licensor means the individual(s) or entity(ies) granting rights under this Public License.
|
||||
NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
|
||||
Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
||||
Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||
You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 – Scope
|
||||
|
||||
License grant
|
||||
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
|
||||
reproduce and Share the Licensed Material, in whole or in part, for NonCommercial and ArmaOnly purposes only; and
|
||||
produce, reproduce, and Share Adapted Material for NonCommercial and ArmaOnly purposes only.
|
||||
Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
|
||||
Term. The term of this Public License is specified in Section 6(a).
|
||||
Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
||||
Downstream recipients.
|
||||
Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
|
||||
No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||
No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(a)(i).
|
||||
Other rights
|
||||
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
|
||||
Patent and trademark rights are not licensed under this Public License.
|
||||
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial and ArmaOnly purposes.
|
||||
|
||||
Section 3 – License Conditions
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
||||
|
||||
Attribution
|
||||
|
||||
If You Share the Licensed Material (including in modified form), You must:
|
||||
retain the following if it is supplied by the Licensor with the Licensed Material:
|
||||
identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
||||
a copyright notice;
|
||||
a notice that refers to this Public License;
|
||||
a notice that refers to the disclaimer of warranties;
|
||||
a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||
indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
|
||||
indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
|
||||
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
|
||||
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(a) to the extent reasonably practicable.
|
||||
If You Share Adapted Material You produce, the Adapter’s License You apply must not prevent recipients of the Adapted Material from complying with this Public License.
|
||||
|
||||
Section 4 – Sui Generis Database Rights
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||
|
||||
for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial and ArmaOnly purposes only;
|
||||
if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
|
||||
You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
||||
|
||||
Section 5 – Disclaimer of Warranties and Limitation of Liability
|
||||
|
||||
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
||||
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
|
||||
The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||
|
||||
Section 6 – Term and Termination
|
||||
|
||||
This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||
|
||||
Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
||||
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
|
||||
upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
|
||||
For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
||||
Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||
|
||||
Section 7 – Other Terms and Conditions
|
||||
|
||||
The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
||||
Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
||||
|
||||
Section 8 – Interpretation
|
||||
|
||||
For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
||||
To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
||||
No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
||||
Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
||||
|
||||
Bohemia Interactive Notices
|
||||
|
||||
Bohemia Interactive a.s. is not a party to this License, and makes no warranty whatsoever in connection with the Licensed Material. Bohemia Interactive a.s. will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, Bohemia Interactive a.s. may elect to apply the Public License to material it publishes and in those instances it becomes the "Licensor".
|
||||
Except for the limited purpose of indicating to the public that the Licensed Material is shared under this Public License, Bohemia Interactive a.s. does not authorize the use by either party of the trademarks "Arma", "Bohemia Interactive" or any related trademark or logo of Arma or Bohemia Interactive without the prior written consent of Bohemia Interactive a.s.
|
BIN
addons/fastroping/anim/freefallLoop.rtm
Normal file
BIN
addons/fastroping/anim/freefallLoop.rtm
Normal file
Binary file not shown.
After Width: | Height: | Size: 146 KiB |
BIN
addons/fastroping/anim/freefallStart.rtm
Normal file
BIN
addons/fastroping/anim/freefallStart.rtm
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
addons/fastroping/anim/slidingLoop.rtm
Normal file
BIN
addons/fastroping/anim/slidingLoop.rtm
Normal file
Binary file not shown.
After Width: | Height: | Size: 108 KiB |
17
addons/fastroping/config.cpp
Normal file
17
addons/fastroping/config.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interaction"};
|
||||
author[] = {"KoffeinFlummi", "BaerMitUmlaut"};
|
||||
authorUrl = "";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgMoves.hpp"
|
||||
#include "CfgVehicles.hpp"
|
BIN
addons/fastroping/data/friesAnchorBar.p3d
Normal file
BIN
addons/fastroping/data/friesAnchorBar.p3d
Normal file
Binary file not shown.
66
addons/fastroping/data/friesAnchorBar.rvmat
Normal file
66
addons/fastroping/data/friesAnchorBar.rvmat
Normal file
@ -0,0 +1,66 @@
|
||||
ambient[] = {1,1,1,1};
|
||||
diffuse[] = {1,1,1,1};
|
||||
forcedDiffuse[] = {0,0,0,0};
|
||||
emmisive[] = {0,0,0,0};
|
||||
specular[] = {0.071,0.071,0.071,1};
|
||||
specularPower = 110;
|
||||
PixelShaderID = "Super";
|
||||
VertexShaderID = "Super";
|
||||
class Stage1 {
|
||||
texture = "z\ace\addons\fastroping\data\friesAnchorBar_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,0};
|
||||
pos[] = {0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage2 {
|
||||
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {10,0,0};
|
||||
up[] = {0,10,0};
|
||||
dir[] = {0,0,0};
|
||||
pos[] = {0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage3 {
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,0};
|
||||
pos[] = {0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage4 {
|
||||
texture = "z\ace\addons\fastroping\data\friesAnchorBar_as.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,1};
|
||||
pos[] = {0,0,1};
|
||||
};
|
||||
};
|
||||
class Stage5 {
|
||||
texture = "z\ace\addons\fastroping\data\friesAnchorBar_smdi.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,1};
|
||||
pos[] = {0,0,1};
|
||||
};
|
||||
};
|
||||
class Stage6 {
|
||||
texture = "#(ai,64,64,1)fresnel(4.5,1.1)";
|
||||
uvSource = "none";
|
||||
};
|
||||
class Stage7 {
|
||||
texture = "a3\data_f\env_land_ca.paa";
|
||||
uvSource = "none";
|
||||
};
|
BIN
addons/fastroping/data/friesAnchorBar_as.paa
Normal file
BIN
addons/fastroping/data/friesAnchorBar_as.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesAnchorBar_co.paa
Normal file
BIN
addons/fastroping/data/friesAnchorBar_co.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesAnchorBar_nohq.paa
Normal file
BIN
addons/fastroping/data/friesAnchorBar_nohq.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesAnchorBar_smdi.paa
Normal file
BIN
addons/fastroping/data/friesAnchorBar_smdi.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesGantry.p3d
Normal file
BIN
addons/fastroping/data/friesGantry.p3d
Normal file
Binary file not shown.
66
addons/fastroping/data/friesGantry.rvmat
Normal file
66
addons/fastroping/data/friesGantry.rvmat
Normal file
@ -0,0 +1,66 @@
|
||||
ambient[] = {1,1,1,1};
|
||||
diffuse[] = {1,1,1,1};
|
||||
forcedDiffuse[] = {0,0,0,0};
|
||||
emmisive[] = {0,0,0,0};
|
||||
specular[] = {0.071,0.071,0.071,1};
|
||||
specularPower = 110;
|
||||
PixelShaderID = "Super";
|
||||
VertexShaderID = "Super";
|
||||
class Stage1 {
|
||||
texture = "z\ace\addons\fastroping\data\friesGantry_nohq.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,0};
|
||||
pos[] = {0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage2 {
|
||||
texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {10,0,0};
|
||||
up[] = {0,10,0};
|
||||
dir[] = {0,0,0};
|
||||
pos[] = {0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage3 {
|
||||
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,0};
|
||||
pos[] = {0,0,0};
|
||||
};
|
||||
};
|
||||
class Stage4 {
|
||||
texture = "z\ace\addons\fastroping\data\friesGantry_as.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,1};
|
||||
pos[] = {0,0,1};
|
||||
};
|
||||
};
|
||||
class Stage5 {
|
||||
texture = "z\ace\addons\fastroping\data\friesGantry_smdi.paa";
|
||||
uvSource = "tex";
|
||||
class uvTransform {
|
||||
aside[] = {1,0,0};
|
||||
up[] = {0,1,0};
|
||||
dir[] = {0,0,1};
|
||||
pos[] = {0,0,1};
|
||||
};
|
||||
};
|
||||
class Stage6 {
|
||||
texture = "#(ai,64,64,1)fresnel(4.5,1.1)";
|
||||
uvSource = "none";
|
||||
};
|
||||
class Stage7 {
|
||||
texture = "a3\data_f\env_land_ca.paa";
|
||||
uvSource = "none";
|
||||
};
|
BIN
addons/fastroping/data/friesGantry_as.paa
Normal file
BIN
addons/fastroping/data/friesGantry_as.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesGantry_co.paa
Normal file
BIN
addons/fastroping/data/friesGantry_co.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesGantry_nohq.paa
Normal file
BIN
addons/fastroping/data/friesGantry_nohq.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/friesGantry_smdi.paa
Normal file
BIN
addons/fastroping/data/friesGantry_smdi.paa
Normal file
Binary file not shown.
BIN
addons/fastroping/data/helper.p3d
Normal file
BIN
addons/fastroping/data/helper.p3d
Normal file
Binary file not shown.
95
addons/fastroping/data/model.cfg
Normal file
95
addons/fastroping/data/model.cfg
Normal file
@ -0,0 +1,95 @@
|
||||
class CfgSkeletons {
|
||||
class Default {
|
||||
isDiscrete = 1;
|
||||
skeletonInherit = "";
|
||||
skeletonBones[] = {};
|
||||
};
|
||||
class ace_friesAnchorBar_skeleton: Default {
|
||||
isDiscrete = 1;
|
||||
skeletonInherit = "Default";
|
||||
skeletonBones[] = {
|
||||
"barRight", "",
|
||||
"barLeft", ""
|
||||
};
|
||||
};
|
||||
class ace_friesGantry_skeleton: Default {
|
||||
isDiscrete = 1;
|
||||
skeletonInherit = "Default";
|
||||
skeletonBones[] = {
|
||||
"gantryRight", "",
|
||||
"gantryLeft", ""
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class CfgModels {
|
||||
class Default {
|
||||
sectionsInherit = "";
|
||||
sections[] = {""};
|
||||
skeletonName = "";
|
||||
};
|
||||
class friesAnchorBar: Default {
|
||||
skeletonName = "ace_friesAnchorBar_skeleton";
|
||||
sectionsInherit = "";
|
||||
sections[] = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
class animations {
|
||||
class extendHookRight {
|
||||
type = "translation";
|
||||
source = "";
|
||||
selection = "barRight";
|
||||
axis = "slideAxis";
|
||||
animPeriod = 0;
|
||||
minValue = 0;
|
||||
maxValue = 1;
|
||||
minPhase = 0;
|
||||
maxPhase = 1;
|
||||
offset0 = 0;
|
||||
offset1 = 0.45;
|
||||
};
|
||||
class extendHookLeft: extendHookRight {
|
||||
selection = "barLeft";
|
||||
offset1 = -0.45;
|
||||
};
|
||||
};
|
||||
};
|
||||
class friesGantry: Default {
|
||||
skeletonName = "ace_friesGantry_skeleton";
|
||||
sectionsInherit = "";
|
||||
sections[] = {"ropeOriginRight", "ropeOriginLeft"};
|
||||
class animations {
|
||||
class adjustWidth {
|
||||
type = "translation";
|
||||
source = "";
|
||||
selection = "gantryRight";
|
||||
axis = "axisWidth";
|
||||
animPeriod = 0;
|
||||
minValue = 0;
|
||||
maxValue = 1;
|
||||
offset0 = 0;
|
||||
offset1 = 10;
|
||||
};
|
||||
class rotateGantryLeft {
|
||||
type = "rotation";
|
||||
source = "";
|
||||
selection = "gantryLeft";
|
||||
axis = "axisRotation";
|
||||
animPeriod = 0;
|
||||
minValue = 0;
|
||||
maxValue = 1;
|
||||
angle0 = "rad 0";
|
||||
angle1 = "rad 360";
|
||||
};
|
||||
class rotateGantryRight {
|
||||
type = "rotation";
|
||||
source = "";
|
||||
selection = "gantryRight";
|
||||
axis = "axisRotation";
|
||||
animPeriod = 0;
|
||||
minValue = 0;
|
||||
maxValue = 1;
|
||||
angle0 = "rad 0";
|
||||
angle1 = "rad 360";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
22
addons/fastroping/functions/fnc_canCutRopes.sqf
Normal file
22
addons/fastroping/functions/fnc_canCutRopes.sqf
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Checks if the unit can cut deployed ropes.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The helicopter itself <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Able to cut ropes <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_canCutRopes
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
|
||||
private _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
|
||||
!(_deployedRopes isEqualTo [])
|
30
addons/fastroping/functions/fnc_canDeployRopes.sqf
Normal file
30
addons/fastroping/functions/fnc_canDeployRopes.sqf
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Checks if the unit can deploy ropes from the helicopter.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit occupying the helicopter <OBJECT>
|
||||
* 1: The helicopter itself <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Able to deploy ropes <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [_player, _vehicle] call ace_fastroping_fnc_canDeployRopes
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_unit", "_vehicle"];
|
||||
private ["_deployedRopes", "_config"];
|
||||
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
|
||||
((driver _vehicle != _unit) &&
|
||||
{
|
||||
((_vehicle getVariable [QGVAR(deploymentStage), 0]) == 2) ||
|
||||
{!(isText (_config >> QGVAR(onPrepare))) && {(_vehicle getVariable [QGVAR(deploymentStage), 0]) == 0}}
|
||||
} &&
|
||||
{getPos _vehicle select 2 > 2})
|
26
addons/fastroping/functions/fnc_canFastRope.sqf
Normal file
26
addons/fastroping/functions/fnc_canFastRope.sqf
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Checks if the unit can fast rope from the helicopter.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit occupying the helicopter <OBJECT>
|
||||
* 1: The helicopter itself <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Able to fast ropes <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [_player, _vehicle] call ace_fastroping_fnc_canDeployRopes
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_unit", "_vehicle"];
|
||||
|
||||
private _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
|
||||
((driver _vehicle != _unit) &&
|
||||
{!(_deployedRopes isEqualTo [])} &&
|
||||
{{!(_x select 5)} count (_deployedRopes) > 0} &&
|
||||
{getPos _vehicle select 2 > 2})
|
27
addons/fastroping/functions/fnc_canPrepareFRIES.sqf
Normal file
27
addons/fastroping/functions/fnc_canPrepareFRIES.sqf
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Checks if the unit can prepare the helicopters FRIES.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The helicopter itself <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Able to prepare FRIES <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_canPrepareFRIES
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
private ["_deployedRopes", "_config"];
|
||||
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
|
||||
(isNumber (_config >> QGVAR(enabled)) &&
|
||||
{(getNumber (_config >> QGVAR(enabled)) == 1) || {!(isNull (_vehicle getVariable [QGVAR(FRIES), objNull]))}} &&
|
||||
{(_vehicle getVariable [QGVAR(deploymentStage), 0]) == 0} &&
|
||||
{isText (_config >> QGVAR(onPrepare))})
|
50
addons/fastroping/functions/fnc_cutRopes.sqf
Normal file
50
addons/fastroping/functions/fnc_cutRopes.sqf
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Cut deployed ropes.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: A helicopter with deployed ropes <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_cutRopes
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
private ["_deployedRopes", "_config", "_waitTime"];
|
||||
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
{
|
||||
_x params ["", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"];
|
||||
|
||||
//Make player fall if rope is occupied
|
||||
if (_occupied) then {
|
||||
private _attachedObjects = attachedObjects _dummy;
|
||||
//Rope is considered occupied when it's broken as well, so check if array is empty
|
||||
//Note: ropes are not considered attached objects by Arma
|
||||
if !(_attachedObjects isEqualTo []) then {
|
||||
detach ((attachedObjects _dummy) select 0);
|
||||
};
|
||||
};
|
||||
|
||||
[QGVAR(ropeDetach), [_hook, _ropeTop]] call EFUNC(common,serverEvent);
|
||||
[{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy, _hook], 60] call EFUNC(common,waitAndExecute);
|
||||
} count _deployedRopes;
|
||||
|
||||
_vehicle setVariable [QGVAR(deployedRopes), [], true];
|
||||
_vehicle setVariable [QGVAR(deploymentStage), 1, true];
|
||||
|
||||
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
_waitTime = 0;
|
||||
if (isText (_config >> QGVAR(onCut))) then {
|
||||
_waitTime = [_vehicle] call (missionNamespace getVariable (getText (_config >> QGVAR(onCut))));
|
||||
};
|
||||
|
||||
[{
|
||||
_this setVariable [QGVAR(deploymentStage), 0, true];
|
||||
}, _vehicle, _waitTime] call EFUNC(common,waitAndExecute);
|
56
addons/fastroping/functions/fnc_deployRopes.sqf
Normal file
56
addons/fastroping/functions/fnc_deployRopes.sqf
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Deploy ropes from the helicopter.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The helicopter itself <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_deployRopes
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
private ["_config", "_ropeOrigins", "_ropeOrigin", "_deployedRopes", "_hookAttachment", "_origin", "_dummy", "_hook", "_ropeTop", "_ropeBottom"];
|
||||
|
||||
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
|
||||
_ropeOrigins = getArray (_config >> QGVAR(ropeOrigins));
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
_hookAttachment = _vehicle getVariable [QGVAR(FRIES), _vehicle];
|
||||
{
|
||||
_ropeOrigin = _x;
|
||||
_hook = QGVAR(helper) createVehicle [0, 0, 0];
|
||||
_hook allowDamage false;
|
||||
if (typeName _ropeOrigin == "ARRAY") then {
|
||||
_hook attachTo [_hookAttachment, _ropeOrigin];
|
||||
} else {
|
||||
_hook attachTo [_hookAttachment, [0, 0, 0], _ropeOrigin];
|
||||
};
|
||||
|
||||
_origin = getPosATL _hook;
|
||||
|
||||
_dummy = createVehicle [QGVAR(helper), _origin vectorAdd [0, 0, -1], [], 0, "CAN_COLLIDE"];
|
||||
_dummy allowDamage false;
|
||||
_dummy disableCollisionWith _vehicle;
|
||||
|
||||
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
|
||||
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 1];
|
||||
ropeUnwind [_ropeBottom, 30, 34.5, false];
|
||||
|
||||
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
|
||||
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
|
||||
|
||||
//deployedRopes format: attachment point, top part of the rope, bottom part of the rope, attachTo helper object, occupied
|
||||
_deployedRopes pushBack [_ropeOrigin, _ropeTop, _ropeBottom, _dummy, _hook, false];
|
||||
|
||||
false
|
||||
} count _ropeOrigins;
|
||||
|
||||
_vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true];
|
||||
_vehicle setVariable [QGVAR(deploymentStage), 3, true];
|
39
addons/fastroping/functions/fnc_equipFRIES.sqf
Normal file
39
addons/fastroping/functions/fnc_equipFRIES.sqf
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Equips the given helicopter with a FRIES.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The helicopter <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_equipFRIES
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
private ["_config", "_fries"];
|
||||
|
||||
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
if !(isNumber (_config >> QGVAR(enabled))) then {
|
||||
["%1 has not been configured for ACE_Fastroping.", getText (_config >> "DisplayName")] call BIS_fnc_error;
|
||||
} else {
|
||||
if (getNumber (_config >> QGVAR(enabled)) == 2) then {
|
||||
_fries = (getText (_config >> QGVAR(friesType))) createVehicle [0, 0, 0];
|
||||
_fries attachTo [_vehicle, (getArray (_config >> QGVAR(friesAttachmentPoint)))];
|
||||
_vehicle setVariable [QGVAR(FRIES), _fries, true];
|
||||
_vehicle addEventHandler ["Killed", {
|
||||
params ["_vehicle"];
|
||||
deleteVehicle (_vehicle getVariable [QGVAR(FRIES), objNull]);
|
||||
_vehicle setVariable [QGVAR(FRIES), nil, true];
|
||||
|
||||
if !((_vehicle getVariable [QGVAR(deployedRopes), []] isEqualTo [])) then {
|
||||
[_vehicle] call FUNC(cutRopes);
|
||||
};
|
||||
}];
|
||||
};
|
||||
};
|
40
addons/fastroping/functions/fnc_fastRope.sqf
Normal file
40
addons/fastroping/functions/fnc_fastRope.sqf
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Lets the unit fast rope.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit occupying the helicopter <OBJECT>
|
||||
* 1: The helicopter itself <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_player, _vehicle] call ace_fastroping_fnc_fastRope
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_unit", "_vehicle"];
|
||||
private ["_deployedRopes", "_usableRope", "_usableRopeIndex"];
|
||||
|
||||
//Select unoccupied rope
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
_usableRope = _deployedRopes select 0;
|
||||
_usableRopeIndex = 0;
|
||||
{
|
||||
if !(_x select 6) exitWith {
|
||||
_usableRope = _x;
|
||||
_usableRopeIndex = _forEachIndex;
|
||||
};
|
||||
} forEach _deployedRopes;
|
||||
|
||||
_usableRope set [5, true];
|
||||
_deployedRopes set [_usableRopeIndex, _usableRope];
|
||||
_vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true];
|
||||
|
||||
//Start server PFH asap
|
||||
[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex]] call EFUNC(common,serverEvent);
|
||||
moveOut _unit;
|
||||
[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex]] call CBA_fnc_addPerFrameHandler;
|
50
addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf
Normal file
50
addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Local PerFrameHandler during fast roping.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: PFH arguments <ARRAY>
|
||||
* 1: PFH handle <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [[_unit, _vehicle, _rope, _ropeIndex], 0] call ace_fastroping_fnc_fastRopeLocalPFH
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_arguments", "_pfhHandle"];
|
||||
_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"];
|
||||
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"];
|
||||
private ["_vectorUp", "_vectorDir", "_origin"];
|
||||
|
||||
//Wait until the unit is actually outside of the helicopter
|
||||
if (vehicle _unit != _unit) exitWith {};
|
||||
|
||||
//Start fast roping
|
||||
if (animationState _unit != "ACE_slidingLoop") exitWith {
|
||||
_unit disableCollisionWith _dummy;
|
||||
_unit attachTo [_dummy, [0, 0, -0.5]];
|
||||
[_unit, "ACE_slidingLoop", 2] call EFUNC(common,doAnimation);
|
||||
};
|
||||
|
||||
//End of fast rope
|
||||
if (isNull attachedTo _unit) exitWith {
|
||||
if ((getPos _unit) select 2 > 1) then {
|
||||
[_unit, "ACE_freeFallStart", 2] call EFUNC(common,doAnimation);
|
||||
[_unit, "ACE_freeFallLoop", 1] call EFUNC(common,doAnimation);
|
||||
[{
|
||||
isTouchingGround _this
|
||||
}, {
|
||||
[_this, "", 2] call EFUNC(common,doAnimation);
|
||||
}, _unit] call EFUNC(common,waitUntilAndExecute);
|
||||
} else {
|
||||
[_unit, "", 2] call EFUNC(common,doAnimation);
|
||||
};
|
||||
_unit setVectorUp [0, 0, 1];
|
||||
|
||||
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
75
addons/fastroping/functions/fnc_fastRopeServerPFH.sqf
Normal file
75
addons/fastroping/functions/fnc_fastRopeServerPFH.sqf
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Server PerFrameHandler during fast roping.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: PFH arguments <ARRAY>
|
||||
* 1: PFH handle <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [[_unit, _vehicle, _rope, _ropeIndex], 0] call ace_fastroping_fnc_fastRopeServerPFH
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_arguments", "_pfhHandle"];
|
||||
_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"];
|
||||
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"];
|
||||
private ["_vectorUp", "_vectorDir", "_origin"];
|
||||
|
||||
//Wait until the unit is actually outside of the helicopter
|
||||
if (vehicle _unit != _unit) exitWith {};
|
||||
|
||||
//Start fast roping
|
||||
if (animationState _unit != "ACE_slidingLoop") exitWith {
|
||||
//Fix for twitchyness
|
||||
_dummy setMass 80;
|
||||
_dummy setCenterOfMass [0, 0, -2];
|
||||
_origin = getPosASL _hook;
|
||||
_dummy setPosASL (_origin vectorAdd [0, 0, -2]);
|
||||
_dummy setVectorUp [0, 0, 1];
|
||||
|
||||
ropeUnwind [_ropeTop, 6, 34.5];
|
||||
ropeUnwind [_ropeBottom, 6, 0.5];
|
||||
};
|
||||
|
||||
//Check if rope broke and unit is falling
|
||||
if (isNull attachedTo _unit) exitWith {
|
||||
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
//Setting the velocity manually to reduce twitching
|
||||
_dummy setVelocity [0,0,-6];
|
||||
|
||||
//Check if fast rope is finished
|
||||
if (((getPos _unit select 2) < 0.2) || {ropeLength _ropeTop == 34.5} || {vectorMagnitude (velocity _vehicle) > 5} || {!(alive _unit)} || {captive _unit}) exitWith {
|
||||
detach _unit;
|
||||
|
||||
//Reset rope
|
||||
deleteVehicle _ropeTop;
|
||||
deleteVehicle _ropeBottom;
|
||||
|
||||
_origin = getPosASL _hook;
|
||||
_dummy setPosASL (_origin vectorAdd [0, 0, -1]);
|
||||
|
||||
//Restore original mass and center of mass
|
||||
_dummy setMass 40;
|
||||
_dummy setCenterOfMass [0.000143227,0.00105986,-0.246147];
|
||||
|
||||
_ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5];
|
||||
_ropeBottom = ropeCreate [_dummy, [0, 0, 0], 34.5];
|
||||
|
||||
_ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}];
|
||||
_ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}];
|
||||
|
||||
//Update deployedRopes array
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
_deployedRopes set [_ropeIndex, [_attachmentPoint, _ropeTop, _ropeBottom, _dummy, _hook, false]];
|
||||
_vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true];
|
||||
|
||||
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
27
addons/fastroping/functions/fnc_moduleEquipFRIES.sqf
Normal file
27
addons/fastroping/functions/fnc_moduleEquipFRIES.sqf
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Equips synched helicopters with a FRIES.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Module <LOGIC>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_module] call ace_fastroping_fnc_moduleEquipFRIES
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_module"];
|
||||
|
||||
private _synchedUnits = synchronizedObjects _module;
|
||||
{
|
||||
if (_x isKindOf "CAManBase") then {
|
||||
_x = vehicle _x;
|
||||
};
|
||||
[_x] call FUNC(equipFRIES);
|
||||
false
|
||||
} count _synchedUnits;
|
39
addons/fastroping/functions/fnc_onCutCommon.sqf
Normal file
39
addons/fastroping/functions/fnc_onCutCommon.sqf
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Function for opening doors and extending the hook for most vanilla helos.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Helicopter <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Amount of time to wait before cutting ropes <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_onCutRopesCommon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
|
||||
private _fries = _vehicle getVariable [QGVAR(FRIES), objNull];
|
||||
if !(isNull _fries) then {
|
||||
_fries animate ["extendHookRight", 0];
|
||||
_fries animate ["extendHookLeft", 0];
|
||||
[{
|
||||
_this animateDoor ["door_R", 0];
|
||||
_this animateDoor ["door_L", 0];
|
||||
_vehicle animate ["dvere1_posunZ", 0];
|
||||
_vehicle animate ["dvere2_posunZ", 0];
|
||||
}, _vehicle, 2] call EFUNC(common,waitAndExecute);
|
||||
|
||||
4
|
||||
} else {
|
||||
_vehicle animateDoor ["door_R", 0];
|
||||
_vehicle animateDoor ["door_L", 0];
|
||||
_vehicle animate ["dvere1_posunZ", 0];
|
||||
_vehicle animate ["dvere2_posunZ", 0];
|
||||
|
||||
2
|
||||
};
|
37
addons/fastroping/functions/fnc_onPrepareCommon.sqf
Normal file
37
addons/fastroping/functions/fnc_onPrepareCommon.sqf
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Function for closing doors and retracting the hook for most vanilla helos.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Helicopter <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Amount of time to wait before deploying ropes <NUMBER>
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_onDeployRopesCommon
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
private ["_fries", "_waitTime"];
|
||||
|
||||
_waitTime = 2;
|
||||
|
||||
_vehicle animateDoor ["door_R", 1];
|
||||
_vehicle animateDoor ["door_L", 1];
|
||||
_vehicle animate ["dvere1_posunZ", 1];
|
||||
_vehicle animate ["dvere2_posunZ", 1];
|
||||
|
||||
_fries = _vehicle getVariable [QGVAR(FRIES), objNull];
|
||||
if !(isNull _fries) then {
|
||||
[{
|
||||
_this animate ["extendHookRight", 1];
|
||||
_this animate ["extendHookLeft", 1];
|
||||
}, _fries, 2] call EFUNC(common,waitAndExecute);
|
||||
_waitTime = 4;
|
||||
};
|
||||
|
||||
_waitTime
|
52
addons/fastroping/functions/fnc_onRopeBreak.sqf
Normal file
52
addons/fastroping/functions/fnc_onRopeBreak.sqf
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Handles ropes breaking when deployed.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: RopeBreak EH arguments <ARRAY>
|
||||
* 1: Part of rope ("top" or "bottom") <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_ehArgs", "_part"];
|
||||
_ehArgs params ["_rope", "_helper1", "_helper2"];
|
||||
private ["_vehicle", "_deployedRopes", "_brokenRope", "_unit"];
|
||||
|
||||
if (_part == "bottom") then {
|
||||
_helper2 = (ropeAttachedObjects _helper1) select 0;
|
||||
};
|
||||
|
||||
_vehicle = attachedTo _helper2;
|
||||
if (isNil "_vehicle") exitWith {}; //Exit when vehicle got destroyed
|
||||
if (_vehicle isKindOf "ACE_friesBase") then {
|
||||
_vehicle = attachedTo _vehicle;
|
||||
};
|
||||
|
||||
_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []];
|
||||
_brokenRope = [];
|
||||
{
|
||||
if ((_x select 1 == _rope) || {(_x select 2 == _rope)}) exitWith {
|
||||
_brokenRope = _x;
|
||||
};
|
||||
} forEach _deployedRopes;
|
||||
_brokenRope set [5, true];
|
||||
_vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true];
|
||||
|
||||
_unit = {
|
||||
if (_x isKindOf "CAManBase") exitWith {_x};
|
||||
} forEach (attachedObjects (_brokenRope select 3));
|
||||
|
||||
if !(isNil "_unit") then {
|
||||
if (_part == "top") then {
|
||||
detach _unit;
|
||||
} else {
|
||||
//TODO: ???
|
||||
//Rope might break at the very bottom
|
||||
//-> letting the unit fall is not always ideal
|
||||
};
|
||||
};
|
32
addons/fastroping/functions/fnc_prepareFRIES.sqf
Normal file
32
addons/fastroping/functions/fnc_prepareFRIES.sqf
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Author: BaerMitUmlaut
|
||||
* Prepares the helicopters FRIES.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: A helicopter with deployed ropes <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [_vehicle] call ace_fastroping_fnc_prepareFRIES
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
params ["_vehicle"];
|
||||
private ["_config", "_waitTime"];
|
||||
|
||||
//Stage indicator: 0 - travel mode; 1 - preparing FRIES; 2 - FRIES ready; 3 - ropes deployed
|
||||
_vehicle setVariable [QGVAR(deploymentStage), 1, true];
|
||||
|
||||
_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
|
||||
_waitTime = 0;
|
||||
if (isText (_config >> QGVAR(onPrepare))) then {
|
||||
_waitTime = [_vehicle] call (missionNamespace getVariable (getText (_config >> QGVAR(onPrepare))));
|
||||
};
|
||||
|
||||
[{
|
||||
_this setVariable [QGVAR(deploymentStage), 2, true];
|
||||
}, _vehicle, _waitTime] call EFUNC(common,waitAndExecute);
|
1
addons/fastroping/functions/script_component.hpp
Normal file
1
addons/fastroping/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
||||
#include "\z\ace\addons\fastroping\script_component.hpp"
|
12
addons/fastroping/script_component.hpp
Normal file
12
addons/fastroping/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
||||
#define COMPONENT fastroping
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
#ifdef DEBUG_ENABLED_FASTROPING
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_SETTINGS_FASTROPING
|
||||
#define DEBUG_SETTINGS DEBUG_SETTINGS_FASTROPING
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
53
addons/fastroping/stringtable.xml
Normal file
53
addons/fastroping/stringtable.xml
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Fastroping">
|
||||
<Key ID="STR_ACE_Fastroping_Module_FRIES_DisplayName">
|
||||
<English>Equip FRIES</English>
|
||||
<German>Rüste FRIES aus</German>
|
||||
<Polish>Wyposaż FRIES</Polish>
|
||||
<French>Equiper le FRIES</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Module_FRIES_Description">
|
||||
<English>Equips compatible helicopters with a Fast Rope Insertion Extraction System.</English>
|
||||
<German>Rüstet kompatible Helikopter mit einem Fast Rope Insertion Extraction System aus.</German>
|
||||
<Polish>Wyposaża kompatybilne helikoptery w zestaw Fast Rope Insertion Extraction System.</Polish>
|
||||
<French>Equipe les hélicoptères compatibles avec un Module Fast Rope Insertion Extraction System.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_prepareFRIES">
|
||||
<English>Prepare fast roping system</English>
|
||||
<German>Bereite Fast Roping System vor</German>
|
||||
<Polish>Przygotuj system zjazdu na linach</Polish>
|
||||
<French>Préparer le système de corde lisse</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_deployRopes">
|
||||
<English>Deploy ropes</English>
|
||||
<German>Seile auswerfen</German>
|
||||
<Polish>Wypuść liny</Polish>
|
||||
<French>Déployer les cordes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_fastRope">
|
||||
<English>Fast rope</English>
|
||||
<German>Abseilen</German>
|
||||
<Polish>Zjedź na linie</Polish>
|
||||
<French>Descendre à la corde</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Interaction_cutRopes">
|
||||
<English>Cut ropes</English>
|
||||
<German>Seile abwerfen</German>
|
||||
<Polish>Odetnij liny</Polish>
|
||||
<French>Détacher les cordes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Eden_equipFRIES">
|
||||
<English>Equip helicopter with FRIES</English>
|
||||
<German>Rüste Helicopter mit FRIES aus</German>
|
||||
<Polish>Wyposaż helikopter w FRIES</Polish>
|
||||
<French>Equiper l'hélicoptère avec le FRIED</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Fastroping_Eden_equipFRIES_Tooltip">
|
||||
<English>Equips the selected helicopter with a Fast Rope Insertion Extraction System</English>
|
||||
<German>Rüstet den ausgewählten Helicopter mit einem Fast Rope Insertion Extraction System aus</German>
|
||||
<Polish>Wyposaża wybrany helikopter w zestaw Fast Rope Insertion Extraction System</Polish>
|
||||
<French>Equipe l'hélicoptère sélectionné avec un Fast Rope Insertion Extraction System</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -65,12 +65,14 @@
|
||||
<English>Explosion Reflections Simulation</English>
|
||||
<Polish>Symulacja odbicia eksplozji</Polish>
|
||||
<Italian>Simulazione Riflessi Esplosioni</Italian>
|
||||
<German>Druckwellensimulation</German>
|
||||
<Spanish>Activar simulación de reflexiones</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableReflections_Desc">
|
||||
<English>Enable the ACE Explosion Reflection Simulation</English>
|
||||
<Polish>Włącz symulację odbicia eksplozji ACE</Polish>
|
||||
<Italian>Abilita la Simulazione Riflessi Esplosioni di ACE</Italian>
|
||||
<German>Aktiviere die ACE-Druckwellensimulation</German>
|
||||
<Spanish>Activa la simulación de reflexiones para las explosiones.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrack">
|
||||
|
@ -77,19 +77,29 @@ if (GVAR(useCursorMenu)) then {
|
||||
|
||||
GVAR(selfMenuOffset) = (AGLtoASL (positionCameraToWorld [0, 0, 2])) vectorDiff (AGLtoASL (positionCameraToWorld [0, 0, 0]));
|
||||
|
||||
if (GVAR(menuAnimationSpeed) > 0) then {
|
||||
//Auto expand the first level when self, mounted vehicle or zeus (skips the first animation as there is only one choice)
|
||||
if (GVAR(openedMenuType) == 0) then {
|
||||
if (isNull curatorCamera) then {
|
||||
if (vehicle ACE_player != ACE_player) then {
|
||||
GVAR(menuDepthPath) = [["ACE_SelfActions", (vehicle ACE_player)]];
|
||||
GVAR(expanded) = true;
|
||||
GVAR(expandedTime) = ACE_diagTime;
|
||||
GVAR(lastPath) = +GVAR(menuDepthPath);
|
||||
GVAR(startHoverTime) = -1000;
|
||||
};
|
||||
} else {
|
||||
GVAR(menuDepthPath) = [["ACE_ZeusActions", (getAssignedCuratorLogic player)]];
|
||||
GVAR(expanded) = true;
|
||||
GVAR(expandedTime) = ACE_diagTime;
|
||||
GVAR(lastPath) = +GVAR(menuDepthPath);
|
||||
GVAR(startHoverTime) = -1000;
|
||||
};
|
||||
} else {
|
||||
GVAR(menuDepthPath) = [["ACE_SelfActions", ACE_player]];
|
||||
};
|
||||
GVAR(expanded) = true;
|
||||
GVAR(expandedTime) = ACE_diagTime;
|
||||
GVAR(lastPath) = +GVAR(menuDepthPath);
|
||||
GVAR(startHoverTime) = -1000;
|
||||
};
|
||||
|
||||
["interactMenuOpened", [_menuType]] call EFUNC(common,localEvent);
|
||||
|
@ -116,8 +116,6 @@ if (GVAR(openedMenuType) >= 0) then {
|
||||
|
||||
if(!_foundTarget && GVAR(actionSelected)) then {
|
||||
GVAR(actionSelected) = false;
|
||||
GVAR(expanded) = false;
|
||||
GVAR(lastPath) = [];
|
||||
};
|
||||
for "_i" from GVAR(iconCount) to (count GVAR(iconCtrls))-1 do {
|
||||
ctrlDelete (GVAR(iconCtrls) select _i);
|
||||
|
@ -353,6 +353,7 @@
|
||||
<English>Get Out</English>
|
||||
<Polish>Wyjdź</Polish>
|
||||
<Italian>Esci</Italian>
|
||||
<German>Aussteigen!</German>
|
||||
<Spanish>Sal del vehículo!</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_TeamManagement">
|
||||
@ -653,6 +654,7 @@
|
||||
<Portuguese>Abrir</Portuguese>
|
||||
<Russian>Открыть</Russian>
|
||||
<Italian>Apri</Italian>
|
||||
<German>Öffnen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Module_DisplayName">
|
||||
<English>Interaction System</English>
|
||||
|
@ -1,53 +1,69 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(BFT_Interval) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1.0;
|
||||
typeName = "SCALAR";
|
||||
displayName = CSTRING(BFT_Interval_DisplayName);
|
||||
description = CSTRING(BFT_Interval_Description);
|
||||
};
|
||||
class GVAR(BFT_Enabled) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(BFT_Enabled_DisplayName);
|
||||
description = CSTRING(BFT_Enabled_Description);
|
||||
};
|
||||
class GVAR(BFT_HideAiGroups) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(BFT_HideAiGroups_DisplayName);
|
||||
description = CSTRING(BFT_HideAiGroups_Description);
|
||||
};
|
||||
class GVAR(BFT_ShowPlayerNames) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(BFT_ShowPlayerNames_DisplayName);
|
||||
description = CSTRING(BFT_ShowPlayerNames_Description);
|
||||
};
|
||||
class GVAR(mapIllumination) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(MapIllumination_DisplayName);
|
||||
description = CSTRING(MapIllumination_Description);
|
||||
};
|
||||
class GVAR(mapGlow) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(MapGlow_DisplayName);
|
||||
description = CSTRING(MapGlow_Description);
|
||||
};
|
||||
class GVAR(mapShake) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 1;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(MapShake_DisplayName);
|
||||
description = CSTRING(MapShake_Description);
|
||||
};
|
||||
class GVAR(mapLimitZoom) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(MapLimitZoom_DisplayName);
|
||||
description = CSTRING(MapLimitZoom_Description);
|
||||
};
|
||||
class GVAR(mapShowCursorCoordinates) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
displayName = CSTRING(MapShowCursorCoordinates_DisplayName);
|
||||
description = CSTRING(MapShowCursorCoordinates_Description);
|
||||
};
|
||||
class GVAR(DefaultChannel) {
|
||||
category = CSTRING(Module_DisplayName);
|
||||
value = -1;
|
||||
typeName = "SCALAR";
|
||||
displayName = CSTRING(DefaultChannel_DisplayName);
|
||||
|
@ -104,6 +104,12 @@ class CfgVehicles {
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class ShowPlayerNames {
|
||||
displayName = CSTRING(BFT_ShowPlayerNames_DisplayName);
|
||||
description = CSTRING(BFT_ShowPlayerNames_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = CSTRING(BFT_Module_Description);
|
||||
|
@ -18,5 +18,6 @@ params ["_logic"];
|
||||
[_logic, QGVAR(BFT_Enabled), "Enabled"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(BFT_Interval), "Interval"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(BFT_HideAiGroups), "HideAiGroups"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(BFT_ShowPlayerNames), "ShowPlayerNames"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
ACE_LOGINFO_3("Blue Force Tracking Module Initialized:", GVAR(BFT_Enabled), GVAR(BFT_Interval), GVAR(BFT_HideAiGroups));
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "script_component.hpp"
|
||||
// BEGIN_COUNTER(blueForceTrackingUpdate);
|
||||
|
||||
private ["_groupsToDrawMarkers", "_playerSide", "_anyPlayers", "_colour", "_marker"];
|
||||
private ["_groupsToDrawMarkers", "_playersToDrawMarkers", "_playerSide", "_anyPlayers", "_colour", "_marker"];
|
||||
|
||||
// Delete last set of markers (always)
|
||||
{
|
||||
@ -26,6 +26,9 @@ if (GVAR(BFT_Enabled) and {(!isNil "ACE_player") and {alive ACE_player}}) then {
|
||||
};
|
||||
};
|
||||
|
||||
if (GVAR(BFT_ShowPlayerNames)) then {
|
||||
_playersToDrawMarkers = allPlayers select {side _x == _playerSide};
|
||||
|
||||
{
|
||||
private _markerType = [_x] call EFUNC(common,getMarkerType);
|
||||
private _colour = format ["Color%1", side _x];
|
||||
@ -33,7 +36,26 @@ if (GVAR(BFT_Enabled) and {(!isNil "ACE_player") and {alive ACE_player}}) then {
|
||||
private _marker = createMarkerLocal [format ["ACE_BFT_%1", _forEachIndex], [(getPos leader _x) select 0, (getPos leader _x) select 1]];
|
||||
_marker setMarkerTypeLocal _markerType;
|
||||
_marker setMarkerColorLocal _colour;
|
||||
_marker setMarkerTextLocal (groupID _x);
|
||||
_marker setMarkerTextLocal (name _x);
|
||||
|
||||
GVAR(BFT_markers) pushBack _marker;
|
||||
} forEach _playersToDrawMarkers;
|
||||
|
||||
_groupsToDrawMarkers = _groupsToDrawMarkers select {
|
||||
{
|
||||
!(_x call EFUNC(common,isPlayer));
|
||||
} count units _x > 0;
|
||||
};
|
||||
};
|
||||
|
||||
{
|
||||
private _markerType = [_x] call EFUNC(common,getMarkerType);
|
||||
private _colour = format ["Color%1", side _x];
|
||||
|
||||
private _marker = createMarkerLocal [format ["ACE_BFT_%1", _forEachIndex], [(getPos leader _x) select 0, (getPos leader _x) select 1]];
|
||||
_marker setMarkerTypeLocal _markerType;
|
||||
_marker setMarkerColorLocal _colour;
|
||||
_marker setMarkerTextLocal (groupId _x);
|
||||
|
||||
GVAR(BFT_markers) pushBack _marker;
|
||||
} forEach _groupsToDrawMarkers;
|
||||
|
@ -225,6 +225,30 @@
|
||||
<Russian>Скрыть маркеры групп, которые состоят полностью из ботов?</Russian>
|
||||
<Italian>Nascondi markers per gruppi di sole IA?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_ShowPlayerNames_DisplayName">
|
||||
<English>Show player names?</English>
|
||||
<Polish>Pokaż imiona graczy?</Polish>
|
||||
<Spanish>Mostrar nombres de los jugadores?</Spanish>
|
||||
<German>Zeigen Sie die Namen der Spieler?</German>
|
||||
<Czech>Zobrazit jména hráčů?</Czech>
|
||||
<Portuguese>Mostrar os nomes dos jogadores?</Portuguese>
|
||||
<French>Afficher les noms des joueurs?</French>
|
||||
<Hungarian>Itt található az a játékos nevét?</Hungarian>
|
||||
<Russian>Показать имена игроков?</Russian>
|
||||
<Italian>Mostra i nomi dei giocatori?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_ShowPlayerNames_Description">
|
||||
<English>Show individual player names?</English>
|
||||
<Polish>Pokaż poszczególne imiona graczy?</Polish>
|
||||
<Spanish>Mostrar nombres de los jugadores individuales?</Spanish>
|
||||
<German>Zeigen einzelnen Spielernamen?</German>
|
||||
<Czech>Zobrazit názvy jednotlivých hráčů?</Czech>
|
||||
<Portuguese>Mostrar nomes individuais dos jogadores?</Portuguese>
|
||||
<French>Afficher les noms des joueurs individuels?</French>
|
||||
<Hungarian>Itt található az adott játékos neveket?</Hungarian>
|
||||
<Russian>Показать отдельные имена игроков?</Russian>
|
||||
<Italian>Mostra i nomi dei giocatori singoli?</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Module_Description">
|
||||
<English>This module allows the tracking of allied units with BFT map markers.</English>
|
||||
<Polish>Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT.</Polish>
|
||||
|
@ -8,6 +8,7 @@
|
||||
<Russian>Жесты на карте</Russian>
|
||||
<Czech>Ukazování v mapě</Czech>
|
||||
<Italian>Gesti Mappa</Italian>
|
||||
<German>Kartenzeichen</German>
|
||||
<Spanish>Gestos en mapa</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_enabled_displayName">
|
||||
@ -17,6 +18,7 @@
|
||||
<Russian>Включено</Russian>
|
||||
<Czech>Povolit</Czech>
|
||||
<Italian>Abilita</Italian>
|
||||
<German>Aktiviert</German>
|
||||
<Spanish>Activado</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_maxRange_displayName">
|
||||
@ -26,6 +28,7 @@
|
||||
<Russian>Макс. дистанция жестов на карте</Russian>
|
||||
<Czech>Max. vzdálenost pro ukazování v mapě</Czech>
|
||||
<Italian>Distanza Massima Gesti Mappa</Italian>
|
||||
<German>Maximale Reichweite der Kartenzeichen</German>
|
||||
<Spanish>Máx. dist. para gestos en mapa</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_maxRange_description">
|
||||
@ -35,6 +38,7 @@
|
||||
<Russian>Макс. дистанция между игроками для отображения жестов на карте [по-умолчанию: 7 метров]</Russian>
|
||||
<Czech>Maximální vzdálenost mezi hráči pro zobrazení indikátoru ukázání v mapě [výchozí: 7 metrů] </Czech>
|
||||
<Italian>Distanza massima tra giocatori per mostrare i gesti in mappa [default: 7 metri]</Italian>
|
||||
<German>Maximale Reichweite zwischen Spielern um Kartenzeichen anzuzeigen (Standard: 7 Meter)</German>
|
||||
<Spanish>Máxima distancia a la cual pueden verse el indicador de gestos [defecto: 7 m]</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName">
|
||||
@ -44,6 +48,7 @@
|
||||
<Russian>Лид. цвет по-умолчанию</Russian>
|
||||
<Czech>Výchozí barva velitele</Czech>
|
||||
<Italian>Colore Default Caposquadra</Italian>
|
||||
<German>Gruppenführer-Standardfarbe</German>
|
||||
<Spanish>Color por defecto para el lider</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultLeadColor_description">
|
||||
@ -52,6 +57,7 @@
|
||||
<Polish>Domyślny kolor dla liderów grup.</Polish>
|
||||
<Russian>Значение цвета для лидеров групп.</Russian>
|
||||
<Italian>Colore di riserva dei capisquadra quando non c'è nessuna impostazione gruppo. [Modulo: lascia vuoto per non forzare su clients]</Italian>
|
||||
<German>Ersatz-Farbwert für Gruppenführer wenn keine Gruppeneinstellung vorhanden ist. [Modul: leer lassen um Anwendung bei Clients nicht zu erzwingen]</German>
|
||||
<Spanish>Color por defecto para líderes cuando no está configurado [Módulo: dejar en blanco para no forzar]</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultColor_displayName">
|
||||
@ -61,6 +67,7 @@
|
||||
<Russian>Цвет по-умолчанию</Russian>
|
||||
<Czech>Výchozí barva</Czech>
|
||||
<Italian>Colore Default</Italian>
|
||||
<German>Standardfarbe</German>
|
||||
<Spanish>Color por defecto</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_defaultColor_description">
|
||||
@ -69,6 +76,7 @@
|
||||
<Polish>Kolor domyślny</Polish>
|
||||
<Russian>Значение цвета.</Russian>
|
||||
<Italian>Colore di riserva quando non ci sono impostazioni gruppo. [Modulo: lascia vuto per non forzare sui clients]</Italian>
|
||||
<German>Ersatz-Farbwert wenn keine Gruppeneinstellung vorhanden ist. [Modul: leer lassen um Anwendung bei Clients nicht zu erzwingen]</German>
|
||||
<Spanish>Color por defecto cuando no está configurado [Módulo: dejar en blanco para no forzar]</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_leadColor_displayName">
|
||||
@ -78,6 +86,7 @@
|
||||
<Russian>Лид. цвет</Russian>
|
||||
<Czech>Barva velitele</Czech>
|
||||
<Italian>Colore Caposquadra</Italian>
|
||||
<German>Gruppenführer-Farbe</German>
|
||||
<Spanish>Color para el líder</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_leadColor_description">
|
||||
@ -86,6 +95,7 @@
|
||||
<Polish>Kolor dla liderów grup zsynchronizowanych z tym modułem.</Polish>
|
||||
<Russian>Значение цвета для лидеров групп, которые [группы] синхронизированы с этим модулем.</Russian>
|
||||
<Italian>Colore dei Caposquadra per gruppi sincronizzati con questo modulo.</Italian>
|
||||
<German>Farbwert für Gruppenführer, die mit diesem Modul synchronisiert werden.</German>
|
||||
<Spanish>Color para los líderes de los grupos sincronizados al módulo.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_color_displayName">
|
||||
@ -95,6 +105,7 @@
|
||||
<Russian>Цвет</Russian>
|
||||
<Czech>Barva</Czech>
|
||||
<Italian>Colore</Italian>
|
||||
<German>Farbe</German>
|
||||
<Spanish>Color</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_color_description">
|
||||
@ -103,6 +114,7 @@
|
||||
<Polish>Kolor dla członków grup zsynchronizowanych z tym modułem.</Polish>
|
||||
<Russian>Значение цвета для членов групп, которые [группы] синхронизированы с этим модулем.</Russian>
|
||||
<Italian>Colore per membri di gruppi sincronizzati con questo modulo.</Italian>
|
||||
<German>Farbwert für Gruppenmitglieder, die mit diesem Modul synchronisiert werden.</German>
|
||||
<Spanish>Color para los miembros de los grupos sincronizados al módulo.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_moduleGroupSettings_displayName">
|
||||
@ -112,6 +124,7 @@
|
||||
<Russian>Жесты на карте - настройки групп</Russian>
|
||||
<Czech>Ukazování v mapě - nastavení skupiny</Czech>
|
||||
<Italian>Gesti Mappa - Impostazioni Gruppi</Italian>
|
||||
<German>Kartenzeichen - Gruppeneinstellungen</German>
|
||||
<Spanish>Gestos en mapas - Configuración de grupos</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_interval_displayName">
|
||||
@ -121,6 +134,7 @@
|
||||
<Russian>Интервал обновления</Russian>
|
||||
<Czech>Interval aktualizace</Czech>
|
||||
<Italian>Intervallo Aggiornamento</Italian>
|
||||
<German>Update-Intervall</German>
|
||||
<Spanish>Período de actualización</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_interval_description">
|
||||
@ -130,6 +144,7 @@
|
||||
<Russian>Время между обновлениями данных.</Russian>
|
||||
<Czech>Čas mezi aktualizacemi dat.</Czech>
|
||||
<Italian>Intervallo tra aggiornamenti dati.</Italian>
|
||||
<German>Zeit zwischen Datenupdates.</German>
|
||||
<Spanish>Tiempo entre actualizaciones sucesivas.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName">
|
||||
@ -139,6 +154,7 @@
|
||||
<Russian>Конфигурация цвета групп</Russian>
|
||||
<Czech>Konfigurace barvy pro skupinu</Czech>
|
||||
<Italian>Configurazioni colori dei gruppi</Italian>
|
||||
<German>Konfiguration der Gruppenfarbe</German>
|
||||
<Spanish>Configuración de color de grupo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description">
|
||||
@ -147,6 +163,7 @@
|
||||
<Polish>Konfiguracja kolorów grup zawierająca tablice par kolorów ([kolorLidera, kolor]).</Polish>
|
||||
<Russian>Конфигурация цвета групп содержит массив цветовых пар ([лид. цвет, цвет]).</Russian>
|
||||
<Italian>Configurazioni colori gruppi contenenti array di coppie di colori ([leadColor, color]).</Italian>
|
||||
<German>Konfiguration der Gruppenfarbe mit zugeordneten Farbpaaren der Aufstellung ([leadColor, color]).</German>
|
||||
<Spanish>Configuración de color de grupo conteniendo una lista de pares de colores ([colorLider, colo]).</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_description">
|
||||
@ -155,6 +172,7 @@
|
||||
<Polish>Hasz ID grup zmapowanych w indeksie konfiguracji koloru grup.</Polish>
|
||||
<Russian>Хеш ID групп, соответствующих индексам конфигурации цвета групп.</Russian>
|
||||
<Italian>Hash degli ID Gruppi mappati nell'indice configurazioni colori gruppi.</Italian>
|
||||
<German>Hashwert der Gruppen-ID, die dem Konfigurations-Index der Gruppenfarbe zugeordnet werden.</German>
|
||||
<Spanish>ID de Grupo mapeado al índice de la configuración de color de grupo.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_displayName">
|
||||
@ -163,6 +181,7 @@
|
||||
<Polish>Mapowanie kolorów poprzez GroupID</Polish>
|
||||
<Russian>Соответствие ID групп конфигурации цвета групп</Russian>
|
||||
<Italian>Mappatura configurazioni colori GroupID</Italian>
|
||||
<German>Gruppen-ID-Farbe Konfigurationszuordnung</German>
|
||||
<Spanish>Mapeado de ID de Grupo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_enabled_description">
|
||||
@ -172,6 +191,7 @@
|
||||
<Russian>Включает указания на карте.</Russian>
|
||||
<Czech>Povolit ukazování v mapě</Czech>
|
||||
<Italian>Abilita i Gesti Mappa</Italian>
|
||||
<German>Aktiviert die Kartenzeichen.</German>
|
||||
<Spanish>Activar Gestos en Mapa</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_nameTextColor_displayName">
|
||||
@ -181,6 +201,7 @@
|
||||
<Russian>Цвет текста имени</Russian>
|
||||
<Czech>Barva textu pro jména</Czech>
|
||||
<Italian>Colore Testo Nome</Italian>
|
||||
<German>Farbe der Namenstexte.</German>
|
||||
<Spanish>Color de los nombres</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_nameTextColor_description">
|
||||
@ -189,6 +210,7 @@
|
||||
<Polish>Kolor nazwy gracza obok markera gestu mapy.</Polish>
|
||||
<Russian>Цвет инмени игрока рядом с маркером жестов.</Russian>
|
||||
<Italian>Colore del testo dei nametag oltre a quello dei Gesti Mappa</Italian>
|
||||
<German>Farbe der Namenstexte neben der Kartenzeichen-Markierung.</German>
|
||||
<Spanish>Color de los nombres dibujados al lado del marcados de gestos.</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_map_gestures_mapGestures_category">
|
||||
@ -198,6 +220,7 @@
|
||||
<Russian>Жесты на карте</Russian>
|
||||
<Czech>Ukazovní v mapě</Czech>
|
||||
<Italian>Gesti Mappa</Italian>
|
||||
<German>Kartenzeichen</German>
|
||||
<Spanish>Gestos en mapa</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
|
@ -9,9 +9,8 @@
|
||||
|
||||
// request marker data for JIP
|
||||
if (isMultiplayer && {!isServer} && {hasInterface}) then {
|
||||
private _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"];
|
||||
|
||||
[QGVAR(sendMarkersJIP), [_logic]] call EFUNC(common,serverEvent);
|
||||
GVAR(localLogic) = (createGroup sideLogic) createUnit ["Logic", [0,0,0], [], 0, "NONE"];
|
||||
[QGVAR(sendMarkersJIP), [GVAR(localLogic)]] call EFUNC(common,serverEvent);
|
||||
};
|
||||
|
||||
GVAR(mapDisplaysWithDrawEHs) = [];
|
||||
|
@ -21,5 +21,5 @@ TRACE_1("params",_logic);
|
||||
[
|
||||
QGVAR(setMarkerJIP),
|
||||
[_logic],
|
||||
[GETGVAR(allMapMarkers,[]), GETGVAR(allMapMarkersProperties,[]), _logic]
|
||||
[GETGVAR(allMapMarkers,[]), GETGVAR(allMapMarkersProperties,[])]
|
||||
] call EFUNC(common,targetEvent);
|
||||
|
@ -17,8 +17,8 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_allMapMarkers", "_allMapMarkersProperties", "_logic"];
|
||||
TRACE_3("params",_allMapMarkers,_allMapMarkersProperties,_logic);
|
||||
params ["_allMapMarkers", "_allMapMarkersProperties"];
|
||||
TRACE_3("params",_allMapMarkers,_allMapMarkersProperties);
|
||||
|
||||
{
|
||||
private _index = _allMapMarkers find _x;
|
||||
@ -51,4 +51,7 @@ TRACE_3("params",_allMapMarkers,_allMapMarkersProperties,_logic);
|
||||
false
|
||||
} count allMapMarkers;
|
||||
|
||||
deleteVehicle _logic;
|
||||
private _group = group GVAR(localLogic);
|
||||
deleteVehicle GVAR(localLogic);
|
||||
GVAR(localLogic) = nil;
|
||||
deleteGroup _group;
|
||||
|
@ -77,6 +77,10 @@ _minLethalDamage = if (_typeIndex >= 0) then {
|
||||
0.01
|
||||
};
|
||||
|
||||
if (!isNull _shooter) then {
|
||||
_unit setvariable [QGVAR(lastDamageSource), _shooter, false];
|
||||
};
|
||||
|
||||
private _vehicle = vehicle _unit;
|
||||
private _effectiveSelectionName = _selection;
|
||||
if ((_vehicle != _unit) && {!(_vehicle isKindOf "StaticWeapon")} && {_shooter in [objNull, driver _vehicle, _vehicle]} && {_projectile == ""} && {_selection == ""}) then {
|
||||
@ -98,6 +102,7 @@ if ((_minLethalDamage <= _newDamage) && {[_unit, [_effectiveSelectionName] call
|
||||
_damageReturn = _damageReturn min 0.89;
|
||||
};
|
||||
|
||||
|
||||
[_unit] call FUNC(addToInjuredCollection);
|
||||
|
||||
if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith {
|
||||
|
@ -51,6 +51,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Inject_Adenosine">
|
||||
<English>Inject Adenosine</English>
|
||||
<German>Adenosin injizieren</German>
|
||||
<Spanish>Inyectar Adenosina</Spanish>
|
||||
<Polish>Wstrzyknij adenozynę</Polish>
|
||||
</Key>
|
||||
@ -248,6 +249,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Injecting_Adenosine">
|
||||
<English>Injecting Adenosine...</English>
|
||||
<German>Adenosin injizieren...</German>
|
||||
<Spanish>Inyectando Adenosina...</Spanish>
|
||||
<Polish>Wstrzykiwanie adenozyny...</Polish>
|
||||
</Key>
|
||||
@ -937,7 +939,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Morphine_Desc_Short">
|
||||
<English>Used to combat moderate to severe pain experiences</English>
|
||||
<German>Wird verwendet um moderate bis starke Schmärzen zu lindern.</German>
|
||||
<German>Wird verwendet um moderate bis starke Schmerzen zu lindern.</German>
|
||||
<Russian>Для снятия средних и сильных болевых ощущений</Russian>
|
||||
<Spanish>Usado para combatir los estados dolorosos de moderados a severos</Spanish>
|
||||
<French>Utilisé pour réduire les douleurs modérées à sévères.</French>
|
||||
@ -961,16 +963,19 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Adenosine_Display">
|
||||
<English>Adenosine autoinjector</English>
|
||||
<German>Adenosin-Autoinjektor</German>
|
||||
<Spanish>Asenosina auto-inyectable</Spanish>
|
||||
<Polish>Autostrzykawka z adenozyną</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Adenosine_Desc_Short">
|
||||
<English>Used to counter effects of Epinephrine</English>
|
||||
<German>Wird verwendet um die Symptome von Epiniphrin zu lindern</German>
|
||||
<Spanish>Utilizada para contrarrestar los effectos de la Epinefrina</Spanish>
|
||||
<Polish>Adenozyna. Stosowana do zwalczania efektów działania adrenaliny.</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Adenosine_Desc_Use">
|
||||
<English>A drug used to counter the effects of Epinephrine</English>
|
||||
<German>Ein Medikament, das die Symptome von Epiniphrin bekämpft.</German>
|
||||
<Spanish>Medicamento usado para contrarrestar los efectos de la Epinefrina.</Spanish>
|
||||
<Polish>Organiczny związek chemiczny z grupy nukleozydów. Skuteczna w leczeniu częstoskurczu komorowego. Działa rozszerzająco na naczynia krwionośne.</Polish>
|
||||
</Key>
|
||||
@ -2128,7 +2133,7 @@
|
||||
<English>%1 applied a tourniquet</English>
|
||||
<Spanish>%1 aplicado torniquete</Spanish>
|
||||
<Russian>%1 наложил жгут</Russian>
|
||||
<German>%1 hat einen Tourniquet angelegt</German>
|
||||
<German>%1 hat ein Tourniquet angelegt</German>
|
||||
<Polish>%1 założył stazę</Polish>
|
||||
<French>%1 a appliqué un garrot</French>
|
||||
<Hungarian>%1 felhelyezett egy érszorítót</Hungarian>
|
||||
@ -2272,6 +2277,7 @@
|
||||
<Portuguese>Curar hitpoints totalmente enfaixados</Portuguese>
|
||||
<Czech>Heal fully bandaged hitpoints</Czech>
|
||||
<Italian>Cura hitpoints completamente bendati</Italian>
|
||||
<German>Heilt vollständig bandagierte Trefferpunkte</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_painIsOnlySuppressed">
|
||||
<English>Pain is only temporarily suppressed</English>
|
||||
@ -2670,7 +2676,7 @@
|
||||
<Czech>Střelné poranění</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Wounds_VelocityWound_Minor">
|
||||
<English>Smal Velocity Wound</English>
|
||||
<English>Small Velocity Wound</English>
|
||||
<German>Kleines Ballistisches Trauma</German>
|
||||
<Italian>Lenta Velocità Ferita</Italian>
|
||||
<Russian>Малая огнестрельная рана</Russian>
|
||||
@ -2889,6 +2895,7 @@
|
||||
<English>Locations boost training</English>
|
||||
<Czech>Místa pro vylepšení zkušeností</Czech>
|
||||
<Italian>Località aumentano addestramento</Italian>
|
||||
<German>Örtliche Trainingssteigerung</German>
|
||||
<Spanish>Ubicación mejora entrenamiento.</Spanish>
|
||||
<Polish>Miejsca zwiększają wyszkolenie</Polish>
|
||||
</Key>
|
||||
@ -2896,6 +2903,7 @@
|
||||
<English>Boost medic rating in medical vehicles or near medical facilities [untrained becomes medic, medic becomes doctor]</English>
|
||||
<Czech>Zlepšit zkušenosti zdravotníka v medickém vozidle nebo poblíž zdravotního zařízení [nezkušení se stane zdravotníkem, zdravotník se stane doktorem] </Czech>
|
||||
<Italian>Aumenta il rating medico in veicoli medici o vicino strutture mediche [non addestrato diventa medico, medico diventa dottore]</Italian>
|
||||
<German>Steigert die medizinische Einstufung eines Soldaten in Sanitätsfarhzeugen oder in der Nähe von Sanitätseinrichtungen [untrainiert wird zu Sanitäter, Sanitäter zu Doktor]</German>
|
||||
<Spanish>Mejora el entrenamiento médico dentro de vehículos médicos o cerca de instalaciones médicas (no entrenados se convierten en médicos, médicos se convierten en doctores)</Spanish>
|
||||
<Polish>Zwiększa poziom wyszkolenia medyków wewnątrz pojazdów medycznych lub w pobliżu budynków medycznych [niedoświadczony zostaje medykiem, medyk zostaje doktorem]</Polish>
|
||||
</Key>
|
||||
@ -3069,7 +3077,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_remoteControlledAI_Description">
|
||||
<English>Treat remote controlled units as AI not players?</English>
|
||||
<German>Behandle ferngesteuerte Einheiten als KI und nicht als Spieler?</German>
|
||||
<German>Legt fest, ob ferngesteuerte Einheiten als KI anstatt als Spieler behandelt werden sollen.</German>
|
||||
<Spanish>¿Tratar unidades remotamente controladas como IA?</Spanish>
|
||||
<Portuguese>Tratar unidades remotamente controladas como IA?</Portuguese>
|
||||
<Polish>Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy?</Polish>
|
||||
@ -3144,7 +3152,7 @@
|
||||
<Russian>Коэффициент, изменяющий уровень боли</Russian>
|
||||
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
|
||||
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
|
||||
<German>Multiplikator um den Schmerzintensität zu verändern</German>
|
||||
<German>Multiplikator um die Schmerzintensität zu verändern</German>
|
||||
<Czech>Koeficient intenzity bolesti</Czech>
|
||||
<Portuguese>Coeficiente para modificar a instensidade de dor</Portuguese>
|
||||
<French>Coefficient modifiant l'intensité de la douleur</French>
|
||||
@ -3189,6 +3197,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_BasicMedicalSettings_Module_DisplayName">
|
||||
<English>Basic Medical Settings [ACE]</English>
|
||||
<German>Standard Sanitätseinstellungen [ACE]</German>
|
||||
<Polish>Podstawowe ustawienia medyczne</Polish>
|
||||
<Spanish>Ajustes médicos básicos [ACE]</Spanish>
|
||||
</Key>
|
||||
@ -3302,11 +3311,13 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_BasicMedicalSettings_medicSetting_basicEpi_DisplayName">
|
||||
<English>Allow Epinephrine</English>
|
||||
<German>Erlaube Epiniphrin</German>
|
||||
<Spanish>Permitir Epinefrina</Spanish>
|
||||
<Polish>Ograniczenia adrenaliny</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_BasicMedicalSettings_medicSetting_basicEpi_Description">
|
||||
<English>Who can use Epinephrine for full heal? (Basic medical only)</English>
|
||||
<German>Wer darf Epiniphrin zur vollständigen Heilung benutzen? (Standard Sanitätseinstellungen)</German>
|
||||
<Spanish>Configura quienes pueden usar Epinefrina (Solo sistema médico básico)</Spanish>
|
||||
<Polish>Kto może skorzystać z adrenaliny w celu pełnego uleczenia? (Tylko podstawowy system medyczny)</Polish>
|
||||
</Key>
|
||||
@ -3375,7 +3386,7 @@
|
||||
<Russian>Удалять аптечки после использования</Russian>
|
||||
<Polish>Usuń apteczkę po użyciu</Polish>
|
||||
<Spanish>Eliminar EPA después del uso</Spanish>
|
||||
<German>Entferne Erste-Hilfe-Set bei Verwendung</German>
|
||||
<German>Entf. Erste-Hilfe-Set bei Verwendung</German>
|
||||
<Czech>Odebrat osobní lékárničku po použití</Czech>
|
||||
<Portuguese>Remover o KPS depois do uso</Portuguese>
|
||||
<French>Enlever le KPS à l'utilisation</French>
|
||||
@ -3396,11 +3407,13 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_BasicMedicalSettings_useLocation_basicEpi_DisplayName">
|
||||
<English>Locations Epinephrine</English>
|
||||
<German>Orte für Epiniphrin</German>
|
||||
<Spanish>Ubicaciones epinefrina</Spanish>
|
||||
<Polish>Ograniczenia adrenaliny</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_BasicMedicalSettings_useLocation_basicEpi_Description">
|
||||
<English>Where can the Epinephrine be used? (Basic Medical)</English>
|
||||
<German>Wo kann Epiniphrin verwendet werden? (Standard Sanitätseinstellungen)</German>
|
||||
<Spanish>Configura donde puede usarse Epinefrina (Solo sistema médico básico)</Spanish>
|
||||
<Polish>Gdzie można korzystać z adrenaliny? (Podstawowy system medyczny)</Polish>
|
||||
</Key>
|
||||
@ -3430,7 +3443,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useCondition_PAK_DisplayName">
|
||||
<English>Condition PAK</English>
|
||||
<German>Voraussetzungen für das Erste-Hilfe-Set</German>
|
||||
<German>Bedingungen für d. Erste-Hilfe-Set</German>
|
||||
<Czech>Podmínka osobní lékárničky</Czech>
|
||||
<Spanish>Condición EPA</Spanish>
|
||||
<French>Condition d'utilisation du KPS</French>
|
||||
@ -3574,7 +3587,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName">
|
||||
<English>Condition Surgical Kit (Adv)</English>
|
||||
<German>Voraussetzungen für den Operationskasten (erweitert)</German>
|
||||
<German>Beding. für d. Operationskasten (erw.)</German>
|
||||
<Czech>Podmínka chirurgické soupravy (Pokr.)</Czech>
|
||||
<Spanish>Condición de equipo quirúrgico (Av)</Spanish>
|
||||
<French>Conditions d'utilisation du kit de chirurgie</French>
|
||||
@ -3642,6 +3655,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_BasicMedicalSettings_Module_Description">
|
||||
<English>Configure the treatment settings from ACE Basic Medical</English>
|
||||
<German>Behandlungseinstellungen der Standard ACE-Medizin konfigurieren</German>
|
||||
<Spanish>Configure las opciones de tratamiento del sistema médico básico de ACE</Spanish>
|
||||
<Polish>Skonfiguruj ustawienia leczenia podstawowego systemu medycznego ACE</Polish>
|
||||
</Key>
|
||||
@ -3998,7 +4012,7 @@
|
||||
<Russian>[ACE] Ящик с медикаментами (базовая медицина)</Russian>
|
||||
<Polish>[ACE] Skrzynka z zapasami medycznymi (podstawowa)</Polish>
|
||||
<Spanish>[ACE] Caja de suministros médicos (Básica)</Spanish>
|
||||
<German>[ACE] Sanitätskiste (standard)</German>
|
||||
<German>[ACE] Sanitätskiste (Standard)</German>
|
||||
<Czech>[ACE] Zdravotnické zásoby (základní)</Czech>
|
||||
<Portuguese>[ACE] Caixa com suprimentos médicos</Portuguese>
|
||||
<French>[ACE] Caisse médicale (basique)</French>
|
||||
@ -4075,7 +4089,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_noTourniquetOnBodyPart">
|
||||
<English>There is no tourniquet on this body part!</English>
|
||||
<German>An diesem Körperteil befindet sich kein Tourniquet</German>
|
||||
<German>An diesem Körperteil befindet sich kein Tourniquet!</German>
|
||||
<Polish>Na tej części ciała nie ma stazy!</Polish>
|
||||
<Spanish>No hay torniquete en esta parte del cuerpo!</Spanish>
|
||||
<Russian>Нет жгута на этой части тела!</Russian>
|
||||
@ -4087,28 +4101,29 @@
|
||||
<English>Medical training</English>
|
||||
<Polish>Wyszkolenie medyczne</Polish>
|
||||
<Italian>Addestramento Medico</Italian>
|
||||
<German>Sanitätsausbildung</German>
|
||||
<Spanish>Entrenamiento médico</Spanish>
|
||||
</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>
|
||||
<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>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_delayUnconCaptive">
|
||||
<English>Delay Medical Unconscious Captivity</English>
|
||||
<English>Delay cease fire of AI during medical 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>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_delayUnconCaptive_Description">
|
||||
<English>Delay Medical Unconscious Captivity</English>
|
||||
<Spanish>Demora antes de volverse neutral al caer inconsciente</Spanish>
|
||||
<Polish>Opóźnij status captive u nieprzytomnych osób</Polish>
|
||||
<English>Delay cease fire of AI while player is unconscious for medical reasons.</English>
|
||||
<German>Verzögert das Ende des KI-Beschusses auf einen Spieler, wenn dieser aus medizinischen Gründen bewustlos wird.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_delayUnconCaptive_DisplayName">
|
||||
<English>Delay Medical Unconscious Captivity</English>
|
||||
<Spanish>Demora antes de volverse neutral al caer inconsciente</Spanish>
|
||||
<Polish>Opóźnij status captive u nieprzytomnych osób</Polish>
|
||||
<English>Delay cease fire of AI for unconsciousness</English>
|
||||
<German>Verzögert Ende des KI-Beschusses bei medizinischer Bewustlosigkeit</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Medical Menu">
|
||||
<Key ID="STR_ACE_Medical_Menu_OpenMenu">
|
||||
@ -209,6 +209,7 @@
|
||||
<Portuguese>Vias aéreas</Portuguese>
|
||||
<Czech>Dýchací systém</Czech>
|
||||
<Italian>Gestione Vie Respiratorie</Italian>
|
||||
<German>Atemwegssicherung</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Menu_ADVANCED_TREATMENT">
|
||||
<English>Advanced Treatments</English>
|
||||
|
@ -129,6 +129,7 @@ if (_enabledTagsNearby) then {
|
||||
{
|
||||
private _target = _x;
|
||||
|
||||
if !(isNull _target) then {
|
||||
private _relPos = (visiblePositionASL _target) vectorDiff _camPosASL;
|
||||
private _distance = vectorMagnitude _relPos;
|
||||
private _projDist = _relPos vectorDistance (_vecy vectorMultiply (_relPos vectorDotProduct _vecy));
|
||||
@ -150,6 +151,7 @@ if (_enabledTagsNearby) then {
|
||||
if (_alpha > 0) then {
|
||||
[ACE_player, _target, _alpha, _distance * 0.026, _drawName, _drawRank, _drawSoundwave] call FUNC(drawNameTagIcon);
|
||||
};
|
||||
};
|
||||
nil
|
||||
} count _targets;
|
||||
};
|
||||
|
@ -41,7 +41,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Overheating_showParticleEffectsForEveryone_displayName">
|
||||
<English>Overheating Particle Effects for everyone</English>
|
||||
<German>Zeige Partikeleffekt bei allen</German>
|
||||
<German>Zeige Partikeleffekt bei Überhitzung für jeden</German>
|
||||
<Polish>Pokaż efekty cząsteczkowe dla wszystkich</Polish>
|
||||
<Italian>Effetti Particellari Surriscaldamento per tutti</Italian>
|
||||
<Spanish>Efectos de partículas para todos</Spanish>
|
||||
@ -69,21 +69,25 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Overheating_unJamOnreload_displayName">
|
||||
<English>Unjam weapon on reload</English>
|
||||
<German>Behebt Ladehemmung beim Nachladen</German>
|
||||
<Spanish>Desencasquillar el arma al recargar.</Spanish>
|
||||
<Polish>Usuń zacięcie przy przeładowaniu</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Overheating_unJamOnreload_description">
|
||||
<English>Reloading clears a weapon jam.</English>
|
||||
<German>Nachladen behebt eine Ladehemmung.</German>
|
||||
<Spanish>Recargar el arma la desencasquilla.</Spanish>
|
||||
<Polish>Przeładowywanie usuwa zacięcie</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Overheating_unJamFailChance_displayName">
|
||||
<English>Chance of unjam failing</English>
|
||||
<German>Wahrscheinlichkeit, dass Ladehemmung nicht behoben wird</German>
|
||||
<Spanish>Probabilidad de falla al desencasquillar.</Spanish>
|
||||
<Polish>Szansa na porażkę usuw. zacięcia</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Overheating_unJamFailChance_description">
|
||||
<English>Probability that an unjam action might fail, requiring to be repeated.</English>
|
||||
<German>Wahrscheinlichkeit, dass der Versuch eine Ladehemmung zu beheben fehl schlägt und erneut durchgeführt werden muss.</German>
|
||||
<Spanish>Probabilidad de que el proceso de desencasquille falle, teniendo que repetirlo.</Spanish>
|
||||
<Polish>Szansa na to, że przy przeładowaniu broni zacięcie nie zostanie usunięte, przez co czynność będzie musiała zostać powtórzona ponownie.</Polish>
|
||||
</Key>
|
||||
@ -149,6 +153,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Overheating_WeaponUnjamFailed">
|
||||
<English>Jam failed to clear</English>
|
||||
<German>Ladehemmung nicht behoben</German>
|
||||
<Spanish>Falló el desencasquillado</Spanish>
|
||||
<Polish>Porażka przy usuwaniu zacięcia</Polish>
|
||||
</Key>
|
||||
|
@ -19,8 +19,13 @@
|
||||
params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]]];
|
||||
|
||||
private _nozzle = _unit getVariable [QGVAR(nozzle), objNull];
|
||||
private _engine = false;
|
||||
|
||||
if (_target isKindOf "AllVehicles") then {
|
||||
_engine = isEngineOn _target;
|
||||
};
|
||||
|
||||
!(isNull _nozzle ||
|
||||
{isEngineOn _target} ||
|
||||
{_engine} ||
|
||||
{(_target distance _unit) > REFUEL_ACTION_DISTANCE} ||
|
||||
{!isNull (_target getVariable [QGVAR(nozzle), objNull])}) // TODO verify cant connect multiple fuel lines
|
||||
|
@ -125,7 +125,12 @@ _endPosTestOffset set [2, (_startingOffset select 2)];
|
||||
_target setVariable [QGVAR(nozzle), _nozzle, true];
|
||||
|
||||
_source = _nozzle getVariable QGVAR(source);
|
||||
_source setVariable [QGVAR(fuelCounter), [_source] call FUNC(getFuel), true];
|
||||
private _fuel = [_source] call FUNC(getFuel);
|
||||
if (_fuel == REFUEL_INFINITE_FUEL) then {
|
||||
_source setVariable [QGVAR(fuelCounter), 0, true];
|
||||
} else {
|
||||
_source setVariable [QGVAR(fuelCounter), _fuel, true];
|
||||
};
|
||||
|
||||
[_unit, _target, _nozzle, _endPosTestOffset] call FUNC(refuel);
|
||||
},
|
||||
|
@ -11,12 +11,14 @@
|
||||
* Example:
|
||||
* [fuelTruck] call ace_refuel_fnc_getFuel
|
||||
*
|
||||
* Public: No
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params [["_target", objNull, [objNull]]];
|
||||
|
||||
if (isNull _target) exitWith {0};
|
||||
|
||||
private _fuel = _target getVariable QGVAR(currentFuelCargo);
|
||||
|
||||
if (isNil "_fuel") then {
|
||||
|
@ -26,8 +26,13 @@ params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]]];
|
||||
_args params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]]];
|
||||
|
||||
private _currentFuel = [_target] call FUNC(getFuel);
|
||||
if (_currentFuel == REFUEL_INFINITE_FUEL) then {
|
||||
private _fuelCounter = 0.01 * round (100 * (_target getVariable [QGVAR(fuelCounter), 0]));
|
||||
[[LSTRING(Hint_FuelCounter), _fuelCounter], 1.5, _unit] call EFUNC(common,displayTextStructured);
|
||||
} else {
|
||||
private _fuelCounter = 0.01 * round (100 * ((_target getVariable [QGVAR(fuelCounter), _currentFuel]) - _currentFuel));
|
||||
[[LSTRING(Hint_FuelCounter), _fuelCounter], 1.5, _unit] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
},
|
||||
"",
|
||||
localize LSTRING(CheckFuelCounterAction),
|
||||
|
@ -59,8 +59,10 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >>
|
||||
};
|
||||
if !(_fuelInSource == REFUEL_INFINITE_FUEL) then {
|
||||
_fuelInSource = _fuelInSource - _rate;
|
||||
} else {
|
||||
_source setVariable [QGVAR(fuelCounter), (_source getVariable [QGVAR(fuelCounter), 0]) + _rate, true];
|
||||
};
|
||||
if (_fuelInSource < 0 && {_fuelInSource > -1}) then {
|
||||
if (_fuelInSource < 0 && {_fuelInSource > REFUEL_INFINITE_FUEL}) then {
|
||||
_fuelInSource = 0;
|
||||
_finished = true;
|
||||
[LSTRING(Hint_SourceEmpty), 2, _unit] call EFUNC(common,displayTextStructured);
|
||||
|
@ -32,8 +32,8 @@ if !(isNil "_nozzle") then {
|
||||
_nozzleTarget setVariable [QGVAR(nozzle), nil, true];
|
||||
};
|
||||
|
||||
private _rope = _nozzle getVariable [QGVAR(rope), nil];
|
||||
if !(isNil "_rope") then {
|
||||
private _rope = _nozzle getVariable [QGVAR(rope), objNull];
|
||||
if !(isNull _rope) then {
|
||||
ropeDestroy _rope;
|
||||
};
|
||||
|
||||
|
@ -42,7 +42,10 @@ if (isNull _nozzle || {_source != _target}) exitWith {false};
|
||||
|
||||
_target setVariable [QGVAR(isConnected), false, true];
|
||||
_target setVariable [QGVAR(ownedNozzle), nil, true];
|
||||
ropeDestroy (_nozzle getVariable QGVAR(rope));
|
||||
private _rope = _nozzle getVariable [QGVAR(rope), objNull];
|
||||
if !(isNull _rope) then {
|
||||
ropeDestroy _rope;
|
||||
};
|
||||
deleteVehicle _nozzle;
|
||||
|
||||
if !(local _target) then {
|
||||
|
@ -12,7 +12,7 @@
|
||||
* Example:
|
||||
* [fuelTruck, 42] call ace_refuel_fnc_setFuel
|
||||
*
|
||||
* Public: No
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
|
@ -55,10 +55,13 @@ if (isNull _nozzle) then { // func is called on fuel truck
|
||||
_newNozzle attachTo [_unit, [-0.02,0.05,-0.12], "righthandmiddle1"];
|
||||
_unit setVariable [QGVAR(nozzle), _newNozzle, true];
|
||||
|
||||
if (_target isKindOf "AllVehicles") then {
|
||||
// Currently ropeCreate requires its first parameter to be a real vehicle
|
||||
private _rope = ropeCreate [_target, _endPosOffset, _newNozzle, [0, -0.20, 0.12], REFUEL_HOSE_LENGTH];
|
||||
_newNozzle setVariable [QGVAR(rope), _rope, true];
|
||||
};
|
||||
_newNozzle setVariable [QGVAR(attachPos), _endPosOffset, true];
|
||||
_newNozzle setVariable [QGVAR(source), _target, true];
|
||||
_newNozzle setVariable [QGVAR(rope), _rope, true];
|
||||
_target setVariable [QGVAR(ownedNozzle), _newNozzle, true];
|
||||
|
||||
_unit setVariable [QGVAR(isRefueling), true];
|
||||
@ -83,7 +86,7 @@ if (isNull _nozzle) then { // func is called on fuel truck
|
||||
{true},
|
||||
["isnotinside"]
|
||||
] call EFUNC(common,progressBar);
|
||||
} else { // func is called in muzzle either connected or on ground
|
||||
} else { // func is called on muzzle either connected or on ground
|
||||
[
|
||||
2,
|
||||
[_unit, _nozzle],
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define REFUEL_INFINITE_FUEL -1
|
||||
#define REFUEL_INFINITE_FUEL -10
|
||||
#define REFUEL_ACTION_DISTANCE 7
|
||||
#define REFUEL_HOSE_LENGTH 12
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<Package name="Refuel">
|
||||
<Key ID="STR_ACE_Refuel_RefuelSettings_Module_DisplayName">
|
||||
<English>Refuel Settings</English>
|
||||
<German>Betankungseinst.</German>
|
||||
<German>Betankungseinstellungen</German>
|
||||
<Polish>Ustawienia tankowania</Polish>
|
||||
<Russian>Настройки дозаправки</Russian>
|
||||
<Portuguese>Ajustes de reabastecimento</Portuguese>
|
||||
|
@ -35,6 +35,7 @@ class Extended_InitPost_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(_this call DFUNC(addRepairActions));
|
||||
serverInit = QUOTE(_this call DFUNC(addSpareParts));
|
||||
exclude[] = {QEGVAR(fastroping,helper)};
|
||||
};
|
||||
};
|
||||
class Plane {
|
||||
|
@ -381,6 +381,7 @@
|
||||
<Spanish>Estabilizador horizontal izquierdo</Spanish>
|
||||
<Czech>Levý horizontální stabilizátor</Czech>
|
||||
<Italian>Stabilizzatore Orizzontale Sinistro</Italian>
|
||||
<German>Linkes Höhenleitwerk</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_HitHStabilizerR1">
|
||||
<English>Right Horizontal Stabilizer</English>
|
||||
@ -390,6 +391,7 @@
|
||||
<Spanish>Estabilizador horizontal derecho</Spanish>
|
||||
<Czech>Pravý horizontální stabilizátor</Czech>
|
||||
<Italian>Stabilizzatore Orizzontale Destro</Italian>
|
||||
<German>Rechtes Höhenleitwerk</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_HitVStabilizer1">
|
||||
<English>Vertical Stabilizer</English>
|
||||
@ -399,6 +401,7 @@
|
||||
<Portuguese>Estabilizador Vertical</Portuguese>
|
||||
<Spanish>Estabilizador vertical</Spanish>
|
||||
<Italian>Stabilizzatore Verticale</Italian>
|
||||
<German>Seitenleitwerk</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_HitFuel">
|
||||
<English>Fuel Tank</English>
|
||||
@ -723,6 +726,7 @@
|
||||
<Czech>ERA</Czech>
|
||||
<Polish>ERA</Polish>
|
||||
<Italian>ERA</Italian>
|
||||
<German>Reaktivpanzerung</German>
|
||||
<Spanish>ERA</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Repair_moduleName">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Slideshow">
|
||||
<Key ID="STR_ACE_Slideshow_DisplayName">
|
||||
@ -106,6 +106,7 @@
|
||||
<Czech>Názvy interakcí</Czech>
|
||||
<Spanish>Nombres de interacción</Spanish>
|
||||
<Italian>Nomi Interazioni</Italian>
|
||||
<German>Interaktionsnamen</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Names_Description">
|
||||
<English>List of names that will be used for interaction entries, separated by commas, in order of images.</English>
|
||||
@ -116,6 +117,7 @@
|
||||
<Russian>Список имен, которые будут использованы при взаимодействии, разделенные запятыми, в порядке следования изображений.</Russian>
|
||||
<Spanish>Lista de nombres que se utilizarán para las entradas de interacción, separados por comas, en el orden de las imágenes.</Spanish>
|
||||
<Italian>Lista di nomi che verranno usati per per le interazioni, separati da virgole, in ordine per immagini.</Italian>
|
||||
<German>Liste aller Namen, die für Interaktionseinträge genutzt werden. Mit Kommata getrennt, in Reihenfolge der Bilder.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Duration_DisplayName">
|
||||
<English>Slide Duration</English>
|
||||
@ -127,6 +129,7 @@
|
||||
<Spanish>Duración de diapositiva</Spanish>
|
||||
<Czech>Doba trvání snímku</Czech>
|
||||
<Italian>Durata Diapositiva</Italian>
|
||||
<German>Länge der Diavorführung pro Bild</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Duration_Description">
|
||||
<English>Duration of each slide. Default: 0 (Automatic Transitions Disabled)</English>
|
||||
@ -138,6 +141,7 @@
|
||||
<Spanish>Duración de cada diapositiva. Por defecto: 0 (Transiciones automáticas desactivadas)</Spanish>
|
||||
<Czech>Doba trvání každého snímku. Výchozí: 0 (Automatické posouvání je zakázáno)</Czech>
|
||||
<Italian>Durata di ogni diapositiva. Default: 0 (Transizioni Automatiche Disabilitate)</Italian>
|
||||
<German>Länge der Diavorführung pro Bild. Standard: 0 (Automatischer Wechsel deaktiviert)</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Interaction">
|
||||
<English>Slides</English>
|
||||
@ -149,6 +153,7 @@
|
||||
<Spanish>Diapositivas</Spanish>
|
||||
<Czech>Snímky</Czech>
|
||||
<Italian>Diapositive</Italian>
|
||||
<German>Dias</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -37,7 +37,7 @@
|
||||
<English>SwitchUnits System</English>
|
||||
<Polish>System zmiany stron</Polish>
|
||||
<Spanish>Sistema de cambio de unidad</Spanish>
|
||||
<German>Einheiten-Switch-System?</German>
|
||||
<German>Einheiten-Wechsel-System</German>
|
||||
<Czech>Systém výměny stran</Czech>
|
||||
<Portuguese>Sistema de troca de unidades</Portuguese>
|
||||
<French>Système de changement d'unité</French>
|
||||
|
@ -242,6 +242,7 @@
|
||||
<Russian>Добавить запасное колесо</Russian>
|
||||
<Czech>Přidat rezervní kolo</Czech>
|
||||
<Italian>Aggiungi Ruota di Scorta</Italian>
|
||||
<German>Ersatzrad hinzufügen</German>
|
||||
<Spanish>Agregar rueda de auxilio</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_Description">
|
||||
@ -251,6 +252,7 @@
|
||||
<Russian>Добавляет запасное колесо в транспорт</Russian>
|
||||
<Czech>Přidá rezervní kolo do vozidla</Czech>
|
||||
<Italian>Aggiungi una ruota di scorta al veicolo</Italian>
|
||||
<German>Fügt dem Fahrzeug ein Ersatzrad hinzu</German>
|
||||
<Spanish>Agrega una rueda de auxilio al vehículo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_DisplayName">
|
||||
@ -260,6 +262,7 @@
|
||||
<Russian>Дабавить запасную гусеницу</Russian>
|
||||
<Czech>Přidat náhradní pás</Czech>
|
||||
<Italian>Aggiungi Cingolo di Scorta</Italian>
|
||||
<German>Ersatzkette hinzufügen</German>
|
||||
<Spanish>Agregar oruga de repuesto</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_Description">
|
||||
@ -269,6 +272,7 @@
|
||||
<Russian>Добавляет запасную гусеницу в транспорт</Russian>
|
||||
<Czech>Přidá náhradní pás do vozidla</Czech>
|
||||
<Italian>Aggiungi un cingolo di scorta al veicolo</Italian>
|
||||
<German>Fügt dem Fahrzeug eine Ersatzkette hinzu</German>
|
||||
<Spanish>Agrega una oruga de repuesto al vehículo</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_OnlyAlive">
|
||||
@ -322,6 +326,7 @@
|
||||
<Russian>Юнит должен быть транспортом с грузовым отсеком</Russian>
|
||||
<Czech>Jednotka musí být vozidlo s úložným prostorem</Czech>
|
||||
<Italian>L'unità dev'essere un veicolo con spazio di carico</Italian>
|
||||
<German>Einheit muss ein Fahrzeug mit Ladekapazität sein</German>
|
||||
<Spanish>La unidad debe ser un vehículo con espacio de carga</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_OnlyEnoughCargoSpace">
|
||||
@ -331,6 +336,7 @@
|
||||
<Russian>Юнит должен иметь свободное место в грузовом отсеке</Russian>
|
||||
<Czech>Jednotka musí mít místo v úložném prostoru</Czech>
|
||||
<Italian>L'unità deve avere spazio di carico disponibile</Italian>
|
||||
<German>Einheit muss freie Ladekapazität haben</German>
|
||||
<Spanish>La unidad debe tener espacio de carga disponible</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_OnlyNonCaptive">
|
||||
@ -377,6 +383,7 @@
|
||||
<Spanish>Agregar objetos al director</Spanish>
|
||||
<Czech>Přidat objekty kurátorovi</Czech>
|
||||
<Italian>Aggiungi Oggetti al Curatore</Italian>
|
||||
<German>Fügt Objekte zum Kurator hinzu</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_AddObjectsToCurator_desc">
|
||||
<English>Adds any spawned object to all curators in the mission</English>
|
||||
@ -386,6 +393,7 @@
|
||||
<Spanish>Añadir cualquier objeto creado a todos los directores en la misión</Spanish>
|
||||
<Czech>Přidá jakékoliv spawnuté objekty všem kurátorům v misi</Czech>
|
||||
<Italian>Aggiungi ogni oggetto creato a tutti i Curatori in missione</Italian>
|
||||
<German>Fügt jedes gespawnte Objekt allen Kuratoren der Mission hinzu</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,4 +1,3 @@
|
||||
|
||||
class Extended_PreStart_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preStart));
|
||||
|
@ -1,2 +1 @@
|
||||
|
||||
PREP(empty);
|
||||
|
@ -1,6 +1,11 @@
|
||||
#define COMPONENT blank
|
||||
#include "\z\ace\addons\main\script_mod.hpp"
|
||||
|
||||
// #define DEBUG_MODE_FULL
|
||||
// #define DISABLE_COMPILE_CACHE
|
||||
// #define CBA_DEBUG_SYNCHRONOUS
|
||||
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||
|
||||
#ifdef DEBUG_ENABLED_BLANK
|
||||
#define DEBUG_MODE_FULL
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user