mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into medical-focus-feature
This commit is contained in:
commit
84878c3d8b
@ -53,6 +53,7 @@ Coren <coren4@gmail.com>
|
|||||||
Crusty
|
Crusty
|
||||||
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
|
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
|
||||||
Dimaslg <dimaslg@telecable.es>
|
Dimaslg <dimaslg@telecable.es>
|
||||||
|
dixon13 <dixonbegay@gmail.com>
|
||||||
Drill <drill87@gmail.com>
|
Drill <drill87@gmail.com>
|
||||||
Dudakov aka [OMCB]Kaban <dudakov.s@gmail.com>
|
Dudakov aka [OMCB]Kaban <dudakov.s@gmail.com>
|
||||||
Dslyecxi <dslyecxi@gmail.com>
|
Dslyecxi <dslyecxi@gmail.com>
|
||||||
@ -63,11 +64,13 @@ Falke75
|
|||||||
Ferenczi
|
Ferenczi
|
||||||
Ferenzi
|
Ferenzi
|
||||||
Filip Basara <filip.basara93@googlemail.com>
|
Filip Basara <filip.basara93@googlemail.com>
|
||||||
|
fr89k <kaschitoku@web.de>
|
||||||
FreeZbe <freeseb@gmail.com>
|
FreeZbe <freeseb@gmail.com>
|
||||||
geraldbolso1899
|
geraldbolso1899
|
||||||
Ghost
|
Ghost
|
||||||
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
|
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
|
||||||
GieNkoV <gienkov.grzegorz@gmail.com>
|
GieNkoV <gienkov.grzegorz@gmail.com>
|
||||||
|
GitHawk <githawk@gmx.net>
|
||||||
gpgpgpgp
|
gpgpgpgp
|
||||||
Grzegorz
|
Grzegorz
|
||||||
Hamburger SV
|
Hamburger SV
|
||||||
@ -103,6 +106,7 @@ Robert Boklahánics <bokirobi@gmail.com>
|
|||||||
ruPaladin <happyworm24@rambler.ru>
|
ruPaladin <happyworm24@rambler.ru>
|
||||||
simon84 <badguy360th@gmail.com>
|
simon84 <badguy360th@gmail.com>
|
||||||
Sniperwolf572 <tenga6@gmail.com>
|
Sniperwolf572 <tenga6@gmail.com>
|
||||||
|
System98
|
||||||
SzwedzikPL <szwedzikpl@gmail.com>
|
SzwedzikPL <szwedzikpl@gmail.com>
|
||||||
Tachi <zaveruha007@gmail.com>
|
Tachi <zaveruha007@gmail.com>
|
||||||
Toaster <jonathan.pereira@gmail.com>
|
Toaster <jonathan.pereira@gmail.com>
|
||||||
@ -113,3 +117,4 @@ voiper
|
|||||||
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
|
||||||
Winter <simon@agius-muscat.net>
|
Winter <simon@agius-muscat.net>
|
||||||
zGuba
|
zGuba
|
||||||
|
Grey-Soldierman <gungamer101@hotmail.com>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg" width="480">
|
<img src="https://github.com/acemod/ACE3/raw/master/extras/assets/logo/black/ACE3-Logo.jpg" width="480">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
|
@ -28,7 +28,7 @@ if (currentWeapon ACE_player != primaryWeapon ACE_player) exitWith { false };
|
|||||||
|
|
||||||
2 cutText ["", "PLAIN"];
|
2 cutText ["", "PLAIN"];
|
||||||
EGVAR(weather,WindInfo) = false;
|
EGVAR(weather,WindInfo) = false;
|
||||||
0 cutText ["", "PLAIN"];
|
(["RscWindIntuitive"] call BIS_fnc_rscLayer) cutText ["", "PLAIN"];
|
||||||
GVAR(Protractor) = true;
|
GVAR(Protractor) = true;
|
||||||
|
|
||||||
[{
|
[{
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT advanced_ballistics
|
#define COMPONENT advanced_ballistics
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_ADVANCEDBALLISTICS
|
#ifdef DEBUG_ENABLED_ADVANCEDBALLISTICS
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<Spanish>Mostrar información del viento</Spanish>
|
<Spanish>Mostrar información del viento</Spanish>
|
||||||
<German>Windinformationen anzeigen</German>
|
<German>Windinformationen anzeigen</German>
|
||||||
<Hungarian>Széladatok mutatása</Hungarian>
|
<Hungarian>Széladatok mutatása</Hungarian>
|
||||||
<Czech>Zobrazit informace o větru</Czech>
|
<Czech>Zobrazit údaje o větru</Czech>
|
||||||
<Portuguese>Mostrar Informação do Vento</Portuguese>
|
<Portuguese>Mostrar Informação do Vento</Portuguese>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Advanced_Ballistics_ProtractorKey">
|
<Key ID="STR_ACE_Advanced_Ballistics_ProtractorKey">
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<Spanish>Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)</Spanish>
|
<Spanish>Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)</Spanish>
|
||||||
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)</Polish>
|
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)</Polish>
|
||||||
<German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German>
|
<German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German>
|
||||||
<Czech>Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku)</Czech>
|
<Czech>Aktivuje pokročilou balistiku pro nelokální odstřelovače (při použití optiky)</Czech>
|
||||||
<Portuguese>Ativa balística avançada para caçadores não locais (quando usando miras telescópicas)</Portuguese>
|
<Portuguese>Ativa balística avançada para caçadores não locais (quando usando miras telescópicas)</Portuguese>
|
||||||
<French>Active la balistique avancée pour les snipers non locaux (en utilisant les optiques avancées)</French>
|
<French>Active la balistique avancée pour les snipers non locaux (en utilisant les optiques avancées)</French>
|
||||||
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian>
|
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian>
|
||||||
@ -118,7 +118,7 @@
|
|||||||
<Spanish>Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).</Spanish>
|
<Spanish>Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).</Spanish>
|
||||||
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)</Polish>
|
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)</Polish>
|
||||||
<German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German>
|
<German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German>
|
||||||
<Czech>Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru)</Czech>
|
<Czech>Aktivuje pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles FPS během velké přestřelky v multiplayeru)</Czech>
|
||||||
<Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese>
|
<Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese>
|
||||||
<French>Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
|
<French>Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
|
||||||
<Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian>
|
<Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian>
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT ai
|
#define COMPONENT ai
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_AI
|
#ifdef DEBUG_ENABLED_AI
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT aircraft
|
#define COMPONENT aircraft
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_AIRCRAFT
|
#ifdef DEBUG_ENABLED_AIRCRAFT
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
BIN
addons/apl/ace_entrchtool.p3d
Normal file
BIN
addons/apl/ace_entrchtool.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_envelope_big.p3d
Normal file
BIN
addons/apl/ace_envelope_big.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_envelope_big4.p3d
Normal file
BIN
addons/apl/ace_envelope_big4.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_envelope_big4_nogeo.p3d
Normal file
BIN
addons/apl/ace_envelope_big4_nogeo.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_envelope_small.p3d
Normal file
BIN
addons/apl/ace_envelope_small.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_envelope_small4.p3d
Normal file
BIN
addons/apl/ace_envelope_small4.p3d
Normal file
Binary file not shown.
BIN
addons/apl/ace_envelope_small4_nogeo.p3d
Normal file
BIN
addons/apl/ace_envelope_small4_nogeo.p3d
Normal file
Binary file not shown.
75
addons/apl/data/entrchtool.rvmat
Normal file
75
addons/apl/data/entrchtool.rvmat
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
ambient[]={1,1,1,1};
|
||||||
|
diffuse[]={2,2,2,0};
|
||||||
|
forcedDiffuse[]={0,0,0,0};
|
||||||
|
emmisive[]={0,0,0,1};
|
||||||
|
specular[]={0.054000214,0.054000214,0.058000047,0};
|
||||||
|
specularPower=50.700001;
|
||||||
|
PixelShaderID="Super";
|
||||||
|
VertexShaderID="Super";
|
||||||
|
class Stage1
|
||||||
|
{
|
||||||
|
texture="z\ace\addons\apl\data\entrchtool_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[]={4,0,0};
|
||||||
|
up[]={0,6,0};
|
||||||
|
dir[]={0,0,2};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
Filter="Anizotropic";
|
||||||
|
};
|
||||||
|
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};
|
||||||
|
};
|
||||||
|
Filter="Anizotropic";
|
||||||
|
};
|
||||||
|
class Stage4
|
||||||
|
{
|
||||||
|
texture="z\ace\addons\apl\data\entrchtool_as.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage5
|
||||||
|
{
|
||||||
|
texture="z\ace\addons\apl\data\entrchtool_smdi.paa";
|
||||||
|
uvSource="tex";
|
||||||
|
class uvTransform
|
||||||
|
{
|
||||||
|
aside[]={1,0,0};
|
||||||
|
up[]={0,1,0};
|
||||||
|
dir[]={0,0,0};
|
||||||
|
pos[]={0,0,0};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Stage6
|
||||||
|
{
|
||||||
|
texture="a3\data_f\env_co.paa";
|
||||||
|
uvSource="none";
|
||||||
|
};
|
BIN
addons/apl/data/entrchtool_as.paa
Normal file
BIN
addons/apl/data/entrchtool_as.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/entrchtool_co.paa
Normal file
BIN
addons/apl/data/entrchtool_co.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/entrchtool_nohq.paa
Normal file
BIN
addons/apl/data/entrchtool_nohq.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/entrchtool_smdi.paa
Normal file
BIN
addons/apl/data/entrchtool_smdi.paa
Normal file
Binary file not shown.
BIN
addons/apl/data/zr_plevel_co.paa
Normal file
BIN
addons/apl/data/zr_plevel_co.paa
Normal file
Binary file not shown.
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT APL
|
#define COMPONENT APL
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_APL
|
#ifdef DEBUG_ENABLED_APL
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT atragmx
|
#define COMPONENT atragmx
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_ATRAGMX
|
#ifdef DEBUG_ENABLED_ATRAGMX
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -49,7 +49,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
|||||||
} else {
|
} else {
|
||||||
GVAR(placeAction) = PLACE_WAITING;
|
GVAR(placeAction) = PLACE_WAITING;
|
||||||
|
|
||||||
[_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus);
|
[_unit, "forceWalk", "ACE_Attach", true] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
[{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
|
[{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
|
||||||
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)];
|
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)];
|
||||||
@ -88,7 +88,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
|
|||||||
{!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) then {
|
{!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) then {
|
||||||
|
|
||||||
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
[_idPFH] call CBA_fnc_removePerFrameHandler;
|
||||||
[_unit, QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus);
|
[_unit, "forceWalk", "ACE_Attach", false] call EFUNC(common,statusEffect_set);
|
||||||
[] call EFUNC(interaction,hideMouseHint);
|
[] call EFUNC(interaction,hideMouseHint);
|
||||||
[_unit, "DefaultAction", (_unit getVariable [QGVAR(placeActionEH), -1])] call EFUNC(common,removeActionEventHandler);
|
[_unit, "DefaultAction", (_unit getVariable [QGVAR(placeActionEH), -1])] call EFUNC(common,removeActionEventHandler);
|
||||||
_unit removeAction _actionID;
|
_unit removeAction _actionID;
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT attach
|
#define COMPONENT attach
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_ATTACH
|
#ifdef DEBUG_ENABLED_ATTACH
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Attach">
|
<Package name="Attach">
|
||||||
<Key ID="STR_ACE_Attach_AttachDetach">
|
<Key ID="STR_ACE_Attach_AttachDetach">
|
||||||
@ -7,7 +7,7 @@
|
|||||||
<Spanish>Acoplar objeto >></Spanish>
|
<Spanish>Acoplar objeto >></Spanish>
|
||||||
<Polish>Przyczep >></Polish>
|
<Polish>Przyczep >></Polish>
|
||||||
<French>Attacher l'objet >></French>
|
<French>Attacher l'objet >></French>
|
||||||
<Czech>Připnout předmět >></Czech>
|
<Czech>Připnout >></Czech>
|
||||||
<Portuguese>Fixar item >></Portuguese>
|
<Portuguese>Fixar item >></Portuguese>
|
||||||
<Italian>Attacca l'oggetto >></Italian>
|
<Italian>Attacca l'oggetto >></Italian>
|
||||||
<Hungarian>Tárgy hozzácsatolása >></Hungarian>
|
<Hungarian>Tárgy hozzácsatolása >></Hungarian>
|
||||||
@ -115,7 +115,7 @@
|
|||||||
<Spanish>Sin espacio en inventario</Spanish>
|
<Spanish>Sin espacio en inventario</Spanish>
|
||||||
<Polish>Brak miejsca w ekwipunku</Polish>
|
<Polish>Brak miejsca w ekwipunku</Polish>
|
||||||
<French>Pas de place dans l'inventaire</French>
|
<French>Pas de place dans l'inventaire</French>
|
||||||
<Czech>Není místo v inventáři</Czech>
|
<Czech>Nedostatek místa v inventáři</Czech>
|
||||||
<Portuguese>Sem espaço no inventário</Portuguese>
|
<Portuguese>Sem espaço no inventário</Portuguese>
|
||||||
<Italian>Non hai più spazio</Italian>
|
<Italian>Non hai più spazio</Italian>
|
||||||
<Hungarian>Nincs több hely</Hungarian>
|
<Hungarian>Nincs több hely</Hungarian>
|
||||||
@ -175,7 +175,7 @@
|
|||||||
<German>Befestigen fehlgeschlagen</German>
|
<German>Befestigen fehlgeschlagen</German>
|
||||||
<Russian>Не удалось присоединить</Russian>
|
<Russian>Не удалось присоединить</Russian>
|
||||||
<Spanish>Error al acoplar</Spanish>
|
<Spanish>Error al acoplar</Spanish>
|
||||||
<Czech>Připnutí selhalo</Czech>
|
<Czech>Připnout přesmět se nezdařilo</Czech>
|
||||||
<Portuguese>Erro ao fixar</Portuguese>
|
<Portuguese>Erro ao fixar</Portuguese>
|
||||||
<Polish>Przyczepianie nie powiodło się</Polish>
|
<Polish>Przyczepianie nie powiodło się</Polish>
|
||||||
<Hungarian>Hozzácsatolás sikertelen</Hungarian>
|
<Hungarian>Hozzácsatolás sikertelen</Hungarian>
|
||||||
@ -187,7 +187,7 @@
|
|||||||
<Spanish>%1<br/>acoplada</Spanish>
|
<Spanish>%1<br/>acoplada</Spanish>
|
||||||
<Polish>Przyczepiono<br/>%1</Polish>
|
<Polish>Przyczepiono<br/>%1</Polish>
|
||||||
<French>%1<br/>attachée</French>
|
<French>%1<br/>attachée</French>
|
||||||
<Czech>%1<br/>Připnutý</Czech>
|
<Czech>%1<br/>Připnuto</Czech>
|
||||||
<Portuguese>%1<br/>Fixada</Portuguese>
|
<Portuguese>%1<br/>Fixada</Portuguese>
|
||||||
<Italian>%1<br/>attaccata</Italian>
|
<Italian>%1<br/>attaccata</Italian>
|
||||||
<Hungarian>%1<br/>hozzácsatolva</Hungarian>
|
<Hungarian>%1<br/>hozzácsatolva</Hungarian>
|
||||||
@ -199,7 +199,7 @@
|
|||||||
<Spanish>%1<br/>quitada</Spanish>
|
<Spanish>%1<br/>quitada</Spanish>
|
||||||
<Polish>Odczepiono<br/>%1</Polish>
|
<Polish>Odczepiono<br/>%1</Polish>
|
||||||
<French>%1<br/>détachée</French>
|
<French>%1<br/>détachée</French>
|
||||||
<Czech>%1<br/>Odepnutý</Czech>
|
<Czech>%1<br/>Odepnuto</Czech>
|
||||||
<Portuguese>%1<br/>Separada</Portuguese>
|
<Portuguese>%1<br/>Separada</Portuguese>
|
||||||
<Italian>%1<br/>staccata</Italian>
|
<Italian>%1<br/>staccata</Italian>
|
||||||
<Hungarian>%1<br/>lecsatolva</Hungarian>
|
<Hungarian>%1<br/>lecsatolva</Hungarian>
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT backpacks
|
#define COMPONENT backpacks
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_BACKPACKS
|
#ifdef DEBUG_ENABLED_BACKPACKS
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT ballistics
|
#define COMPONENT ballistics
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_BALLISTICS
|
#ifdef DEBUG_ENABLED_BALLISTICS
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Ballistics">
|
<Package name="Ballistics">
|
||||||
<!-- MX -->
|
<!-- MX -->
|
||||||
@ -33,7 +33,7 @@
|
|||||||
<Spanish>Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL</Spanish>
|
<Spanish>Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL</Spanish>
|
||||||
<French>Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL</French>
|
<French>Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL</French>
|
||||||
<Polish>Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL</Polish>
|
<Polish>Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL</Polish>
|
||||||
<Czech>Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
<Czech>Ráže: 6.5x39mm Svítící IR-DIM<br />Nábojů: 30<br />Použití u: MX</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
<Portuguese>Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
<Italian>Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
||||||
<Russian>Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
<Russian>Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
||||||
@ -69,7 +69,7 @@
|
|||||||
<Spanish>Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL</Spanish>
|
<Spanish>Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL</Spanish>
|
||||||
<French>Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL</French>
|
<French>Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL</French>
|
||||||
<Polish>Kaliber: 6,5x39mm SD<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL</Polish>
|
<Polish>Kaliber: 6,5x39mm SD<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL</Polish>
|
||||||
<Czech>Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
<Czech>Ráže: 6.5x39mm SD<br />Nábojů: 30<br />Použití u: MX</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
<Portuguese>Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL </Italian>
|
<Italian>Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL </Italian>
|
||||||
<Russian>Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
<Russian>Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
||||||
@ -105,7 +105,7 @@
|
|||||||
<Spanish>Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL</Spanish>
|
<Spanish>Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL</Spanish>
|
||||||
<French>Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL</French>
|
<French>Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL</French>
|
||||||
<Polish>Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL</Polish>
|
<Polish>Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL</Polish>
|
||||||
<Czech>Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
<Czech>Ráže: 6.5x39mm AP<br />Nábojů: 30<br />Použití u: MX</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
<Portuguese>Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
<Italian>Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
||||||
<Russian>Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
<Russian>Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
||||||
@ -142,7 +142,7 @@
|
|||||||
<Spanish>Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: Katiba</Spanish>
|
<Spanish>Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: Katiba</Spanish>
|
||||||
<French>Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: Katiba</French>
|
<French>Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: Katiba</French>
|
||||||
<Polish>Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: Katiba</Polish>
|
<Polish>Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: Katiba</Polish>
|
||||||
<Czech>Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba</Czech>
|
<Czech>Ráže: 6.5x39mm Svítící IR-DIM<br />Nábojů: 30<br />Použití u: KH 2002 Sama</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
<Portuguese>Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
<Italian>Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
||||||
<Russian>Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
<Russian>Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
||||||
@ -178,7 +178,7 @@
|
|||||||
<Spanish>Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: Katiba</Spanish>
|
<Spanish>Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: Katiba</Spanish>
|
||||||
<French>Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: Katiba</French>
|
<French>Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: Katiba</French>
|
||||||
<Polish>Kaliber: 6,5x39mm SD<br />Naboje: 30<br />Używane w: Katiba</Polish>
|
<Polish>Kaliber: 6,5x39mm SD<br />Naboje: 30<br />Używane w: Katiba</Polish>
|
||||||
<Czech>Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: Katiba</Czech>
|
<Czech>Ráže: 6.5x39mm SD<br />Nábojů: 30<br />Použití u: KH 2002 Sama</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
<Portuguese>Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
<Italian>Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
||||||
<Russian>Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
<Russian>Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
||||||
@ -214,7 +214,7 @@
|
|||||||
<Spanish>Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: Katiba</Spanish>
|
<Spanish>Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: Katiba</Spanish>
|
||||||
<French>Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: Katiba</French>
|
<French>Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: Katiba</French>
|
||||||
<Polish>Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: Katiba</Polish>
|
<Polish>Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: Katiba</Polish>
|
||||||
<Czech>Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: Katiba</Czech>
|
<Czech>Ráže: 6.5x39mm AP<br />Nábojů: 30<br />Použití u: KH 2002 Sama</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
<Portuguese>Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
<Italian>Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
||||||
<Russian>Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
<Russian>Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
||||||
@ -251,7 +251,7 @@
|
|||||||
<Spanish>Calibre: 5,56x45mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Spanish>
|
<Spanish>Calibre: 5,56x45mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Spanish>
|
||||||
<French>Calibre: 5,56x45mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</French>
|
<French>Calibre: 5,56x45mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</French>
|
||||||
<Polish>Kaliber: 5,56x45mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Polish>
|
<Polish>Kaliber: 5,56x45mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Polish>
|
||||||
<Czech>Ráže: 5.56x45mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
|
<Czech>Ráže: 5.56x45mm Svítící IR-DIM<br />Nábojů: 30<br />Použití u: CTAR-21, TAR-21, F2000, RFB SDAR</Czech>
|
||||||
<Portuguese>Calibre: 5,56x45mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
<Portuguese>Calibre: 5,56x45mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
||||||
<Italian>Calibro: 5.56x45mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
<Italian>Calibro: 5.56x45mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
||||||
<Russian>Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
<Russian>Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
||||||
@ -288,7 +288,7 @@
|
|||||||
<Spanish>Calibre: 7,62x51mm Trazadora<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
<Spanish>Calibre: 7,62x51mm Trazadora<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
||||||
<French>Calibre: 7,62x51mm Traçantes<br />Cartouches: 20<br />Utilisé avec: EBR</French>
|
<French>Calibre: 7,62x51mm Traçantes<br />Cartouches: 20<br />Utilisé avec: EBR</French>
|
||||||
<Polish>Kaliber: 7,62x51mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
<Polish>Kaliber: 7,62x51mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
||||||
<Czech>Ráže: 7.62x51mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51mm Svítící<br />Nábojů: 20<br />Použití u: Mk14 Mod 1 EBR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
@ -324,7 +324,7 @@
|
|||||||
<Spanish>Calibre: 7,62x51mm Trazadoras IR-DIM<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
<Spanish>Calibre: 7,62x51mm Trazadoras IR-DIM<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
||||||
<French>Calibre: 7,62x51mm Traçantes IR-DIM<br />Cartouches: 20<br />Utilisé avec: EBR</French>
|
<French>Calibre: 7,62x51mm Traçantes IR-DIM<br />Cartouches: 20<br />Utilisé avec: EBR</French>
|
||||||
<Polish>Kaliber: 7,62x51mm Smugacz IR-DIM<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
<Polish>Kaliber: 7,62x51mm Smugacz IR-DIM<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
||||||
<Czech>Ráže: 7.62x51mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51mm Svítící IR-DIM<br />Nábojů: 20<br />Použití u: Mk14 Mod 1 EBR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
@ -360,7 +360,7 @@
|
|||||||
<Spanish>Calibre: 7,62x51mm SD<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
<Spanish>Calibre: 7,62x51mm SD<br />Balas: 20<br />Se usa en: Mk18 ABR</Spanish>
|
||||||
<French>Calibre: 7,62x51mm SD<br />Cartouches: 20<br />Utilisé avec: EBR</French>
|
<French>Calibre: 7,62x51mm SD<br />Cartouches: 20<br />Utilisé avec: EBR</French>
|
||||||
<Polish>Kaliber: 7,62x51mm SD<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
<Polish>Kaliber: 7,62x51mm SD<br />Pociski: 20<br />Używane w: Mk18 ABR</Polish>
|
||||||
<Czech>Ráže: 7.62x51mm SD<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51mm SD<br />Nábojů: 20<br />Použití u: Mk14 Mod 1 EBR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
@ -398,7 +398,7 @@
|
|||||||
<Spanish>Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
<Spanish>Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
||||||
<Russian>Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG</Russian>
|
<Russian>Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG</Russian>
|
||||||
<Italian>Calibro: .338 Norma Magnum Tracciante<br />Munizioni: 130<br />In uso su: SPMG</Italian>
|
<Italian>Calibro: .338 Norma Magnum Tracciante<br />Munizioni: 130<br />In uso su: SPMG</Italian>
|
||||||
<Czech>Ráže: .338 Noma Magnum Svítící<br />Munice: 130<br />Použití: SPMG</Czech>
|
<Czech>Ráže: .338 Noma Magnum Svítící<br />Nábojů: 130<br />Použití u: LWMMG</Czech>
|
||||||
<Portuguese>Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG</Portuguese>
|
<Portuguese>Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG</Portuguese>
|
||||||
<Hungarian>Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG</Hungarian>
|
<Hungarian>Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -434,7 +434,7 @@
|
|||||||
<Spanish>Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
<Spanish>Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
||||||
<Russian>Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG</Russian>
|
<Russian>Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG</Russian>
|
||||||
<Italian>Calibro: .338 Norma Magnum Tracciante IR-DIM<br />Munizioni: 130<br />In uso su: SPMG</Italian>
|
<Italian>Calibro: .338 Norma Magnum Tracciante IR-DIM<br />Munizioni: 130<br />In uso su: SPMG</Italian>
|
||||||
<Czech>Ráže: .338 Noma Magnum Svítící IR-DIM<br />Munice: 130<br />Použití: SPMG</Czech>
|
<Czech>Ráže: .338 Noma Magnum Svítící IR-DIM<br />Nábojů: 130<br />Použití u: LWMMG</Czech>
|
||||||
<Portuguese>Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG</Portuguese>
|
<Portuguese>Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG</Portuguese>
|
||||||
<Hungarian>Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG</Hungarian>
|
<Hungarian>Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -470,7 +470,7 @@
|
|||||||
<Spanish>Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
<Spanish>Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
||||||
<Russian>Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG</Russian>
|
<Russian>Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG</Russian>
|
||||||
<Italian>Calibro: .338 Norma Magnum AP<br />Munizioni: 130<br />In uso su: SPMG</Italian>
|
<Italian>Calibro: .338 Norma Magnum AP<br />Munizioni: 130<br />In uso su: SPMG</Italian>
|
||||||
<Czech>Ráže: .338 Noma Magnum AP<br />Munice: 130<br />Použití: SPMG</Czech>
|
<Czech>Ráže: .338 Noma Magnum AP<br />Nábojů: 130<br />Použití u: LWMMG</Czech>
|
||||||
<Portuguese>Calibre: .338 Norma Magnum AP<br />Cartuchos: 130<br />Usado em: SPMG</Portuguese>
|
<Portuguese>Calibre: .338 Norma Magnum AP<br />Cartuchos: 130<br />Usado em: SPMG</Portuguese>
|
||||||
<Hungarian>Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG</Hungarian>
|
<Hungarian>Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -507,7 +507,7 @@
|
|||||||
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||||
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||||
<Italian>Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus</Italian>
|
<Italian>Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus</Italian>
|
||||||
<Czech>Ráže: 9.3x64mm Svítící<br />Munice: 10<br />Použití: Cyrus</Czech>
|
<Czech>Ráže: 9.3x64mm Svítící<br />Nábojů: 10<br />Použití u: Cyrus</Czech>
|
||||||
<Portuguese>Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus</Portuguese>
|
<Portuguese>Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus</Portuguese>
|
||||||
<Hungarian>Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus</Hungarian>
|
<Hungarian>Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -543,7 +543,7 @@
|
|||||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||||
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||||
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus</Italian>
|
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus</Italian>
|
||||||
<Czech>Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 10<br />Použití: Cyrus</Czech>
|
<Czech>Ráže: 9.3x64mm Svítící IR-DIM<br />Nábojů: 10<br />Použití u: Cyrus</Czech>
|
||||||
<Portuguese>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus</Portuguese>
|
<Portuguese>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus</Portuguese>
|
||||||
<Hungarian>Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus</Hungarian>
|
<Hungarian>Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -580,7 +580,7 @@
|
|||||||
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||||
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||||
<Italian>Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
<Italian>Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
||||||
<Czech>Ráže: 9.3x64mm Svítící<br />Munice: 150<br />Použití: Navid</Czech>
|
<Czech>Ráže: 9.3x64mm Svítící<br />Nábojů: 150<br />Použití u: HK121</Czech>
|
||||||
<Portuguese>Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid</Portuguese>
|
<Portuguese>Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid</Portuguese>
|
||||||
<Hungarian>Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid</Hungarian>
|
<Hungarian>Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -616,7 +616,7 @@
|
|||||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||||
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||||
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
||||||
<Czech>Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 150<br />Použití: Navid</Czech>
|
<Czech>Ráže: 9.3x64mm Svítící IR-DIM<br />Nábojů: 150<br />Použití u: HK121</Czech>
|
||||||
<Portuguese>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid</Portuguese>
|
<Portuguese>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid</Portuguese>
|
||||||
<Hungarian>Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid</Hungarian>
|
<Hungarian>Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -652,7 +652,7 @@
|
|||||||
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||||
<Russian>Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид</Russian>
|
<Russian>Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||||
<Italian>Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
<Italian>Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
||||||
<Czech>Ráže: 9.3x64mm AP<br />Munice: 150<br />Použití: Navid</Czech>
|
<Czech>Ráže: 9.3x64mm AP<br />Nábojů: 150<br />Použití u: HK121</Czech>
|
||||||
<Portuguese>Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid</Portuguese>
|
<Portuguese>Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid</Portuguese>
|
||||||
<Hungarian>Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid</Hungarian>
|
<Hungarian>Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -796,7 +796,7 @@
|
|||||||
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
|
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
|
||||||
<German>6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW</German>
|
<German>6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW</German>
|
||||||
<Italian>6.5mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW</Italian>
|
<Italian>6.5mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW</Italian>
|
||||||
<Czech>6.5mm 100náb. Svítící IR-DIM Zásobník<br />Munice: 100<br />Použití: MX LSW</Czech>
|
<Czech>6.5mm 100náb. Svítící IR-DIM Zásobník<br />Nábojů: 100<br />Použití u: MX LSW</Czech>
|
||||||
<Portuguese>Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW</Portuguese>
|
<Portuguese>Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW</Portuguese>
|
||||||
<Hungarian>6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW</Hungarian>
|
<Hungarian>6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -832,7 +832,7 @@
|
|||||||
<Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
|
<Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
|
||||||
<German>6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG</German>
|
<German>6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG</German>
|
||||||
<Italian>6.5mm 200Rnd Tracer IR-DIM Belt<br />Munizioni: 200<br />In uso su: Stoner 99 LMG</Italian>
|
<Italian>6.5mm 200Rnd Tracer IR-DIM Belt<br />Munizioni: 200<br />In uso su: Stoner 99 LMG</Italian>
|
||||||
<Czech>6.5mm 200náb. Svítící IR-DIM Pás<br />Munice: 200<br />Použití: Stoner 99 LMG</Czech>
|
<Czech>6.5mm 200náb. Svítící IR-DIM Pás<br />Nábojů: 200<br />Použití u: Stoner 99 LMG</Czech>
|
||||||
<Portuguese>Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG</Portuguese>
|
<Portuguese>Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG</Portuguese>
|
||||||
<Hungarian>6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG</Hungarian>
|
<Hungarian>6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -868,7 +868,7 @@
|
|||||||
<Russian>Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30</Russian>
|
<Russian>Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30</Russian>
|
||||||
<German>Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30</German>
|
<German>Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30</German>
|
||||||
<Italian>Calibro: 5.56x45 mm NATO (Mk262)<br />Munizioni: 30</Italian>
|
<Italian>Calibro: 5.56x45 mm NATO (Mk262)<br />Munizioni: 30</Italian>
|
||||||
<Czech>Ráže: 5.56x45mm NATO (Mk262)<br />Munice: 30</Czech>
|
<Czech>Ráže: 5.56x45mm NATO (Mk262)<br />Nábojů: 30</Czech>
|
||||||
<Portuguese>Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30</Portuguese>
|
<Portuguese>Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30</Portuguese>
|
||||||
<Hungarian>Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30</Hungarian>
|
<Hungarian>Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -904,7 +904,7 @@
|
|||||||
<Russian>Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30</Russian>
|
<Russian>Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30</Russian>
|
||||||
<German>Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30</German>
|
<German>Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30</German>
|
||||||
<Italian>Calibro: 5.56x45 mm NATO (Mk318)<br />Munizioni: 30</Italian>
|
<Italian>Calibro: 5.56x45 mm NATO (Mk318)<br />Munizioni: 30</Italian>
|
||||||
<Czech>Ráže: 5.56x45mm NATO (Mk318)<br />Munice: 30</Czech>
|
<Czech>Ráže: 5.56x45mm NATO (Mk318)<br />Nábojů: 30</Czech>
|
||||||
<Portuguese>Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30</Portuguese>
|
<Portuguese>Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30</Portuguese>
|
||||||
<Hungarian>Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30</Hungarian>
|
<Hungarian>Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -940,7 +940,7 @@
|
|||||||
<Russian>Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30</Russian>
|
<Russian>Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30</Russian>
|
||||||
<German>Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30</German>
|
<German>Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30</German>
|
||||||
<Italian>Calibro: 5.56x45 mm NATO (M995 AP)<br />Munizioni: 30</Italian>
|
<Italian>Calibro: 5.56x45 mm NATO (M995 AP)<br />Munizioni: 30</Italian>
|
||||||
<Czech>Ráže: 5.56x45mm NATO (M995 AP)<br />Munice: 30</Czech>
|
<Czech>Ráže: 5.56x45mm NATO (M995 AP)<br />Nábojů: 30</Czech>
|
||||||
<Portuguese>Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30</Portuguese>
|
<Portuguese>Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30</Portuguese>
|
||||||
<Hungarian>Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30</Hungarian>
|
<Hungarian>Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -976,7 +976,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10</German>
|
<German>Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 10</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 10</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 10</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (M118LR)<br />Nábojů: 10</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1012,7 +1012,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 20</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (M118LR)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1048,7 +1048,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10</German>
|
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 10</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 10</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 10</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Nábojů: 10</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1084,7 +1084,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 20</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1120,7 +1120,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10</German>
|
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 10</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 10</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 10</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Nábojů: 10</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1156,7 +1156,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 20</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1192,7 +1192,7 @@
|
|||||||
<Russian>Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10</Russian>
|
<Russian>Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10</German>
|
<German>Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 10</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 10</Italian>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 10</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (M993 AP)<br />Nábojů: 10</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1228,7 +1228,7 @@
|
|||||||
<German>Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20</Italian>
|
||||||
<Spanish>Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20</Spanish>
|
<Spanish>Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20</Spanish>
|
||||||
<Czech>Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x51mm NATO (M993 AP)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1264,7 +1264,7 @@
|
|||||||
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20</Russian>
|
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x67 mm NATO (Mk248 Mod 0)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x67 mm NATO (Mk248 Mod 0)<br />Munizioni: 20</Italian>
|
||||||
<Czech>Ráže: 7.62x67mm NATO (Mk248 Mod 0)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x67mm NATO (Mk248 Mod 0)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1300,7 +1300,7 @@
|
|||||||
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20</Russian>
|
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20</Russian>
|
||||||
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x67 mm NATO (Mk248 Mod 1)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x67 mm NATO (Mk248 Mod 1)<br />Munizioni: 20</Italian>
|
||||||
<Czech>Ráže: 7.62x67mm NATO (Mk248 Mod 1)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x67mm NATO (Mk248 Mod 1)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1336,7 +1336,7 @@
|
|||||||
<Russian>Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20</Russian>
|
<Russian>Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20</Russian>
|
||||||
<German>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20</German>
|
<German>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20</German>
|
||||||
<Italian>Calibro: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Munizioni: 20</Italian>
|
<Italian>Calibro: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Munizioni: 20</Italian>
|
||||||
<Czech>Ráže: 7.62x67mm NATO (Berger Hybrid OTM)<br />Munice: 20</Czech>
|
<Czech>Ráže: 7.62x67mm NATO (Berger Hybrid OTM)<br />Nábojů: 20</Czech>
|
||||||
<Portuguese>Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20</Portuguese>
|
<Portuguese>Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20</Portuguese>
|
||||||
<Hungarian>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20</Hungarian>
|
<Hungarian>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1372,7 +1372,7 @@
|
|||||||
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM</Russian>
|
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM</Russian>
|
||||||
<German>Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 30<br />Eingesetzt von: MXM</German>
|
<German>Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 30<br />Eingesetzt von: MXM</German>
|
||||||
<Italian>Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 30<br />In uso su: MXM</Italian>
|
<Italian>Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 30<br />In uso su: MXM</Italian>
|
||||||
<Czech>Ráže: 6.5x47mm (HPBT Scenar)<br />Munice: 30<br />Použití: MXM</Czech>
|
<Czech>Ráže: 6.5x47mm (HPBT Scenar)<br />Nábojů: 30<br />Použití u: MXM</Czech>
|
||||||
<Portuguese>Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM</Portuguese>
|
<Portuguese>Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM</Portuguese>
|
||||||
<Hungarian>Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM</Hungarian>
|
<Hungarian>Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1408,7 +1408,7 @@
|
|||||||
<Italian>Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM</Italian>
|
<Italian>Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM</Italian>
|
||||||
<Spanish>Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM</Spanish>
|
<Spanish>Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM</Spanish>
|
||||||
<Russian>Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM</Russian>
|
<Russian>Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM</Russian>
|
||||||
<Czech>Ráže: 6.5x47mm Creedmor<br />Munice: 30<br />Použití: MXM</Czech>
|
<Czech>Ráže: 6.5x47mm Creedmor<br />Nábojů: 30<br />Použití u: MXM</Czech>
|
||||||
<Portuguese>Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM</Portuguese>
|
<Portuguese>Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM</Portuguese>
|
||||||
<Hungarian>Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM</Hungarian>
|
<Hungarian>Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1444,7 +1444,7 @@
|
|||||||
<Russian>Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10</Russian>
|
<Russian>Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10</Russian>
|
||||||
<German>Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Patronen: 10</German>
|
<German>Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Patronen: 10</German>
|
||||||
<Italian>Calibro: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munizioni: 10</Italian>
|
<Italian>Calibro: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munizioni: 10</Italian>
|
||||||
<Czech>Ráže: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munice: 10</Czech>
|
<Czech>Ráže: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Nábojů: 10</Czech>
|
||||||
<Portuguese>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10</Portuguese>
|
<Portuguese>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10</Portuguese>
|
||||||
<Hungarian>Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1480,7 +1480,7 @@
|
|||||||
<Russian>Калибр: 8,6x70 мм (API526)<br />Патронов: 10</Russian>
|
<Russian>Калибр: 8,6x70 мм (API526)<br />Патронов: 10</Russian>
|
||||||
<German>Kaliber: 8,6x70mm (API526)<br />Patronen: 10</German>
|
<German>Kaliber: 8,6x70mm (API526)<br />Patronen: 10</German>
|
||||||
<Italian>Calibro: 8.6x70mm (API526)<br />Munizioni: 10</Italian>
|
<Italian>Calibro: 8.6x70mm (API526)<br />Munizioni: 10</Italian>
|
||||||
<Czech>Ráže: 8.6x70mm (API526)<br />Munice: 10</Czech>
|
<Czech>Ráže: 8.6x70mm (API526)<br />Nábojů: 10</Czech>
|
||||||
<Portuguese>Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10</Portuguese>
|
<Portuguese>Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10</Portuguese>
|
||||||
<Hungarian>Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10</Hungarian>
|
<Hungarian>Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1516,7 +1516,7 @@
|
|||||||
<Russian>Калибр: 12,7x99 мм<br />Патронов: 5</Russian>
|
<Russian>Калибр: 12,7x99 мм<br />Патронов: 5</Russian>
|
||||||
<German>Kaliber: 12,7x99mm<br />Patronen: 5</German>
|
<German>Kaliber: 12,7x99mm<br />Patronen: 5</German>
|
||||||
<Italian>Calibro: 12.7x99mm<br />Munizioni: 5</Italian>
|
<Italian>Calibro: 12.7x99mm<br />Munizioni: 5</Italian>
|
||||||
<Czech>Ráže: 12.7x99mm<br />Munice: 5</Czech>
|
<Czech>Ráže: 12.7x99mm<br />Nábojů: 5</Czech>
|
||||||
<Portuguese>Calibre: 12.7x99mm<br/>Cartuchos: 5</Portuguese>
|
<Portuguese>Calibre: 12.7x99mm<br/>Cartuchos: 5</Portuguese>
|
||||||
<Hungarian>Kaliber: 12,7x99mm<br />Lövedékek: 5</Hungarian>
|
<Hungarian>Kaliber: 12,7x99mm<br />Lövedékek: 5</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1552,7 +1552,7 @@
|
|||||||
<Russian>Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5</Russian>
|
<Russian>Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5</Russian>
|
||||||
<German>Kaliber:12,7x99mm API<br />Patronen: 5</German>
|
<German>Kaliber:12,7x99mm API<br />Patronen: 5</German>
|
||||||
<Italian>Calibro: 12.7x99mm API<br />Munizioni: 5</Italian>
|
<Italian>Calibro: 12.7x99mm API<br />Munizioni: 5</Italian>
|
||||||
<Czech>Ráže: 12.7x99mm API<br />Munice: 5</Czech>
|
<Czech>Ráže: 12.7x99mm API<br />Nábojů: 5</Czech>
|
||||||
<Portuguese>Calibre: 12.7x99mm API<br/>Cartuchos: 5</Portuguese>
|
<Portuguese>Calibre: 12.7x99mm API<br/>Cartuchos: 5</Portuguese>
|
||||||
<Hungarian>Kaliber: 12,7x99mm API<br />Lövedékek: 5</Hungarian>
|
<Hungarian>Kaliber: 12,7x99mm API<br />Lövedékek: 5</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -1588,7 +1588,7 @@
|
|||||||
<Russian>Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5</Russian>
|
<Russian>Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5</Russian>
|
||||||
<Italian>Calibro: 12.7x99mm (AMAX)<br />Munizioni: 5</Italian>
|
<Italian>Calibro: 12.7x99mm (AMAX)<br />Munizioni: 5</Italian>
|
||||||
<German>Kaliber:12,7x99mm (AMAX)<br />Patronen: 5</German>
|
<German>Kaliber:12,7x99mm (AMAX)<br />Patronen: 5</German>
|
||||||
<Czech>Ráže: 12.7x99mm (AMAX)<br />Munice: 5</Czech>
|
<Czech>Ráže: 12.7x99mm (AMAX)<br />Nábojů: 5</Czech>
|
||||||
<Portuguese>Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5</Portuguese>
|
<Portuguese>Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5</Portuguese>
|
||||||
<Hungarian>Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5</Hungarian>
|
<Hungarian>Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
|
@ -40,12 +40,12 @@ if (_respawn > 3) then {
|
|||||||
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
|
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
|
||||||
[_unit, false] call FUNC(setHandcuffed);
|
[_unit, false] call FUNC(setHandcuffed);
|
||||||
};
|
};
|
||||||
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
|
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
|
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
|
||||||
[_unit, false] call FUNC(setSurrendered);
|
[_unit, false] call FUNC(setSurrendered);
|
||||||
};
|
};
|
||||||
[_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
|
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_oldUnit getVariable [QGVAR(isEscorting), false]) then {
|
if (_oldUnit getVariable [QGVAR(isEscorting), false]) then {
|
||||||
_oldUnit setVariable [QGVAR(isEscorting), false, true];
|
_oldUnit setVariable [QGVAR(isEscorting), false, true];
|
||||||
|
@ -28,7 +28,7 @@ if ((_unit getVariable [QGVAR(isHandcuffed), false]) isEqualTo _state) exitWith
|
|||||||
|
|
||||||
if (_state) then {
|
if (_state) then {
|
||||||
_unit setVariable [QGVAR(isHandcuffed), true, true];
|
_unit setVariable [QGVAR(isHandcuffed), true, true];
|
||||||
[_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus);
|
[_unit, "setCaptive", QGVAR(Handcuffed), true] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_unit getVariable [QGVAR(isSurrendering), false]) then { //If surrendering, stop
|
if (_unit getVariable [QGVAR(isSurrendering), false]) then { //If surrendering, stop
|
||||||
[_unit, false] call FUNC(setSurrendered);
|
[_unit, false] call FUNC(setSurrendered);
|
||||||
@ -89,7 +89,7 @@ if (_state) then {
|
|||||||
}, [_unit], 0.01] call EFUNC(common,waitAndExecute);
|
}, [_unit], 0.01] call EFUNC(common,waitAndExecute);
|
||||||
} else {
|
} else {
|
||||||
_unit setVariable [QGVAR(isHandcuffed), false, true];
|
_unit setVariable [QGVAR(isHandcuffed), false, true];
|
||||||
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
|
[_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
//remove AnimChanged EH
|
//remove AnimChanged EH
|
||||||
private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
|
private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
|
||||||
|
@ -33,7 +33,7 @@ if (_state) then {
|
|||||||
|
|
||||||
_unit setVariable [QGVAR(isSurrendering), true, true];
|
_unit setVariable [QGVAR(isSurrendering), true, true];
|
||||||
|
|
||||||
[_unit, QGVAR(Surrendered), true] call EFUNC(common,setCaptivityStatus);
|
[_unit, "setCaptive", QGVAR(Surrendered), true] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
if (_unit == ACE_player) then {
|
if (_unit == ACE_player) then {
|
||||||
["captive", [false, false, false, false, false, false, false, false]] call EFUNC(common,showHud);
|
["captive", [false, false, false, false, false, false, false, false]] call EFUNC(common,showHud);
|
||||||
@ -65,7 +65,7 @@ if (_state) then {
|
|||||||
}, [_unit], 0.01] call EFUNC(common,waitAndExecute);
|
}, [_unit], 0.01] call EFUNC(common,waitAndExecute);
|
||||||
} else {
|
} else {
|
||||||
_unit setVariable [QGVAR(isSurrendering), false, true];
|
_unit setVariable [QGVAR(isSurrendering), false, true];
|
||||||
[_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
|
[_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set);
|
||||||
|
|
||||||
//remove AnimChanged EH
|
//remove AnimChanged EH
|
||||||
private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
|
private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
// #define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
// #define CBA_DEBUG_SYNCHRONOUS
|
||||||
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_CAPTIVES
|
#ifdef DEBUG_ENABLED_CAPTIVES
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<Spanish>Tomar prisionero</Spanish>
|
<Spanish>Tomar prisionero</Spanish>
|
||||||
<French>Capturer le prisonnier</French>
|
<French>Capturer le prisonnier</French>
|
||||||
<Polish>Aresztuj</Polish>
|
<Polish>Aresztuj</Polish>
|
||||||
<Czech>Zajmout Osobu</Czech>
|
<Czech>Zajmout osobu</Czech>
|
||||||
<Italian>Arresta il prigioniero</Italian>
|
<Italian>Arresta il prigioniero</Italian>
|
||||||
<Portuguese>Tomar Prisioneiro</Portuguese>
|
<Portuguese>Tomar Prisioneiro</Portuguese>
|
||||||
<Hungarian>Foglyul ejtés</Hungarian>
|
<Hungarian>Foglyul ejtés</Hungarian>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<Spanish>Liberar prisionero</Spanish>
|
<Spanish>Liberar prisionero</Spanish>
|
||||||
<Polish>Wypuść więźnia</Polish>
|
<Polish>Wypuść więźnia</Polish>
|
||||||
<French>Libérer le prisonnier</French>
|
<French>Libérer le prisonnier</French>
|
||||||
<Czech>Osvobodit Zajatce</Czech>
|
<Czech>Osvobodit zajatce</Czech>
|
||||||
<Italian>Libera il prigioniero</Italian>
|
<Italian>Libera il prigioniero</Italian>
|
||||||
<Portuguese>Libertar Prisioneiro</Portuguese>
|
<Portuguese>Libertar Prisioneiro</Portuguese>
|
||||||
<Hungarian>Fogoly szabadon engedése</Hungarian>
|
<Hungarian>Fogoly szabadon engedése</Hungarian>
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<Spanish>Escoltar prisionero</Spanish>
|
<Spanish>Escoltar prisionero</Spanish>
|
||||||
<Polish>Eskortuj więźnia</Polish>
|
<Polish>Eskortuj więźnia</Polish>
|
||||||
<French>Escorter le prisonnier</French>
|
<French>Escorter le prisonnier</French>
|
||||||
<Czech>Eskortovat Zajatce</Czech>
|
<Czech>Eskortovat zajatce</Czech>
|
||||||
<Italian>Scorta il Prigioniero</Italian>
|
<Italian>Scorta il Prigioniero</Italian>
|
||||||
<Portuguese>Escoltar Prisioneiro</Portuguese>
|
<Portuguese>Escoltar Prisioneiro</Portuguese>
|
||||||
<Hungarian>Fogoly kísérése</Hungarian>
|
<Hungarian>Fogoly kísérése</Hungarian>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
<Spanish>Soltar prisionero</Spanish>
|
<Spanish>Soltar prisionero</Spanish>
|
||||||
<Polish>Anuluj eskortowanie</Polish>
|
<Polish>Anuluj eskortowanie</Polish>
|
||||||
<French>Relâcher le prisonnier</French>
|
<French>Relâcher le prisonnier</French>
|
||||||
<Czech>Uvolnit Zajatce</Czech>
|
<Czech>Uvolnit zajatce</Czech>
|
||||||
<Italian>Rilascia il Prigioniero</Italian>
|
<Italian>Rilascia il Prigioniero</Italian>
|
||||||
<Portuguese>Largar Prisioneiro</Portuguese>
|
<Portuguese>Largar Prisioneiro</Portuguese>
|
||||||
<Hungarian>Fogoly elengedése</Hungarian>
|
<Hungarian>Fogoly elengedése</Hungarian>
|
||||||
@ -91,7 +91,7 @@
|
|||||||
<Polish>Opaska zaciskowa</Polish>
|
<Polish>Opaska zaciskowa</Polish>
|
||||||
<Spanish>Precinto</Spanish>
|
<Spanish>Precinto</Spanish>
|
||||||
<French>Serflex</French>
|
<French>Serflex</French>
|
||||||
<Czech>Stahovací Pásek</Czech>
|
<Czech>Stahovací pásek</Czech>
|
||||||
<Portuguese>Algema Plástica</Portuguese>
|
<Portuguese>Algema Plástica</Portuguese>
|
||||||
<Italian>Fascietta</Italian>
|
<Italian>Fascietta</Italian>
|
||||||
<Hungarian>Gyorskötöző</Hungarian>
|
<Hungarian>Gyorskötöző</Hungarian>
|
||||||
|
@ -12,7 +12,9 @@ class Extended_PostInit_EventHandlers {
|
|||||||
|
|
||||||
class Extended_Killed_EventHandlers {
|
class Extended_Killed_EventHandlers {
|
||||||
class All {
|
class All {
|
||||||
init = QUOTE(call FUNC(handleDestroyed));
|
class ADDON {
|
||||||
|
serverKilled = QUOTE(call FUNC(handleDestroyed));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
class CfgVehicles {
|
class CfgVehicles {
|
||||||
class ACE_Module;
|
class Logic;
|
||||||
|
class Module_F: Logic {
|
||||||
|
class ModuleDescription;
|
||||||
|
};
|
||||||
|
class ACE_Module: Module_F {};
|
||||||
class ACE_moduleCargoSettings: ACE_Module {
|
class ACE_moduleCargoSettings: ACE_Module {
|
||||||
scope = 2;
|
scope = 2;
|
||||||
displayName = CSTRING(SettingsModule_DisplayName);
|
displayName = CSTRING(SettingsModule_DisplayName);
|
||||||
@ -26,6 +30,33 @@ class CfgVehicles {
|
|||||||
sync[] = {};
|
sync[] = {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
class GVAR(makeLoadable): ACE_Module {
|
||||||
|
scope = 2;
|
||||||
|
displayName = CSTRING(makeLoadable_displayName);
|
||||||
|
icon = QUOTE(PATHTOF(UI\Icon_Module_makeLoadable_ca.paa));
|
||||||
|
category = "ACE_Logistics";
|
||||||
|
function = QFUNC(moduleMakeLoadable);
|
||||||
|
isGlobal = 1;
|
||||||
|
isTriggerActivated = 0;
|
||||||
|
author = ECSTRING(common,ACETeam);
|
||||||
|
class Arguments {
|
||||||
|
class canLoad {
|
||||||
|
displayName = CSTRING(makeLoadable_displayName);
|
||||||
|
description = CSTRING(MakeLoadable_description);
|
||||||
|
typeName = "BOOL";
|
||||||
|
defaultValue = 1;
|
||||||
|
};
|
||||||
|
class setSize {
|
||||||
|
displayName = CSTRING(makeLoadable_setSize_displayName);
|
||||||
|
typeName = "NUMBER";
|
||||||
|
defaultValue = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ModuleDescription: ModuleDescription {
|
||||||
|
description = CSTRING(module_MakeLoadable_description);
|
||||||
|
sync[] = {"AnyStaticObject"};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
class LandVehicle;
|
class LandVehicle;
|
||||||
class Car: LandVehicle {
|
class Car: LandVehicle {
|
||||||
|
BIN
addons/cargo/UI/Icon_Module_makeLoadable_ca.paa
Normal file
BIN
addons/cargo/UI/Icon_Module_makeLoadable_ca.paa
Normal file
Binary file not shown.
@ -4,14 +4,14 @@
|
|||||||
|
|
||||||
["LoadCargo", {
|
["LoadCargo", {
|
||||||
(_this select 0) params ["_item","_vehicle"];
|
(_this select 0) params ["_item","_vehicle"];
|
||||||
private ["_loaded", "_hint", "_itemName", "_vehicleName"];
|
TRACE_2("LoadCargo EH",_item,_vehicle);
|
||||||
|
|
||||||
_loaded = [_item, _vehicle] call FUNC(loadItem);
|
private _loaded = [_item, _vehicle] call FUNC(loadItem);
|
||||||
|
|
||||||
// Show hint as feedback
|
// Show hint as feedback
|
||||||
_hint = [LSTRING(LoadingFailed), LSTRING(LoadedItem)] select _loaded;
|
private _hint = [LSTRING(LoadingFailed), LSTRING(LoadedItem)] select _loaded;
|
||||||
_itemName = getText (configFile >> "CfgVehicles" >> typeOf _item >> "displayName");
|
private _itemName = getText (configFile >> "CfgVehicles" >> typeOf _item >> "displayName");
|
||||||
_vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
||||||
|
|
||||||
["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call EFUNC(common,localEvent);
|
["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call EFUNC(common,localEvent);
|
||||||
|
|
||||||
@ -22,17 +22,17 @@
|
|||||||
}] call EFUNC(common,addEventHandler);
|
}] call EFUNC(common,addEventHandler);
|
||||||
|
|
||||||
["UnloadCargo", {
|
["UnloadCargo", {
|
||||||
(_this select 0) params ["_item","_vehicle"];
|
(_this select 0) params ["_item","_vehicle", ["_unloader", objNull]];
|
||||||
private ["_unloaded", "_itemClass", "_hint", "_itemName", "_vehicleName"];
|
TRACE_3("UnloadCargo EH",_item,_vehicle,_unloader);
|
||||||
|
|
||||||
_unloaded = [_item, _vehicle] call FUNC(unloadItem);
|
private _unloaded = [_item, _vehicle, _unloader] call FUNC(unloadItem); //returns true if sucessful
|
||||||
|
|
||||||
_itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
||||||
|
|
||||||
// Show hint as feedback
|
// Show hint as feedback
|
||||||
_hint = [LSTRING(UnloadingFailed), LSTRING(UnloadedItem)] select _unloaded;
|
private _hint = [LSTRING(UnloadingFailed), LSTRING(UnloadedItem)] select _unloaded;
|
||||||
_itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName");
|
private _itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName");
|
||||||
_vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName");
|
||||||
|
|
||||||
["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call EFUNC(common,localEvent);
|
["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call EFUNC(common,localEvent);
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ PREP(handleDestroyed);
|
|||||||
PREP(initObject);
|
PREP(initObject);
|
||||||
PREP(initVehicle);
|
PREP(initVehicle);
|
||||||
PREP(loadItem);
|
PREP(loadItem);
|
||||||
|
PREP(makeLoadable);
|
||||||
|
PREP(moduleMakeLoadable);
|
||||||
PREP(moduleSettings);
|
PREP(moduleSettings);
|
||||||
PREP(onMenuOpen);
|
PREP(onMenuOpen);
|
||||||
PREP(startLoadIn);
|
PREP(startLoadIn);
|
||||||
@ -21,5 +23,6 @@ PREP(unloadItem);
|
|||||||
PREP(validateCargoSpace);
|
PREP(validateCargoSpace);
|
||||||
|
|
||||||
GVAR(initializedItemClasses) = [];
|
GVAR(initializedItemClasses) = [];
|
||||||
|
GVAR(initializedVehicleClasses) = [];
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_itemClass", "_vehicle", ["_amount", 1], ["_showHint", false, [false]] ];
|
params ["_itemClass", "_vehicle", ["_amount", 1], ["_showHint", false, [false]]];
|
||||||
TRACE_3("params",_itemClass,_vehicle,_amount);
|
TRACE_3("params",_itemClass,_vehicle,_amount);
|
||||||
|
|
||||||
for "_i" from 1 to _amount do {
|
for "_i" from 1 to _amount do {
|
||||||
|
@ -17,11 +17,11 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_player", "_object"];
|
params ["_player", "_object"];
|
||||||
|
TRACE_2("params",_player,_object);
|
||||||
|
|
||||||
if (!([_player, _object, []] call EFUNC(common,canInteractWith))) exitWith {false};
|
if (!([_player, _object, []] call EFUNC(common,canInteractWith))) exitWith {false};
|
||||||
|
|
||||||
private ["_nearestVehicle"];
|
private _nearestVehicle = [_player] call FUNC(findNearestVehicle);
|
||||||
_nearestVehicle = [_player] call FUNC(findNearestVehicle);
|
|
||||||
|
|
||||||
if (_nearestVehicle isKindOf "Cargo_Base_F" || isNull _nearestVehicle) then {
|
if (_nearestVehicle isKindOf "Cargo_Base_F" || isNull _nearestVehicle) then {
|
||||||
{
|
{
|
||||||
|
@ -18,11 +18,10 @@
|
|||||||
|
|
||||||
params [["_item", "", [objNull,""]], "_vehicle"];
|
params [["_item", "", [objNull,""]], "_vehicle"];
|
||||||
|
|
||||||
if (speed _vehicle > 1 || (((getPos _vehicle) select 2) > 3)) exitWith {false};
|
if (speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
|
||||||
|
|
||||||
private ["_itemSize", "_validItem"];
|
|
||||||
_itemSize = [_item] call FUNC(getSizeItem);
|
|
||||||
|
|
||||||
|
private _itemSize = [_item] call FUNC(getSizeItem);
|
||||||
|
private _validItem = false;
|
||||||
if (_item isEqualType "") then {
|
if (_item isEqualType "") then {
|
||||||
_validItem =
|
_validItem =
|
||||||
isClass (configFile >> "CfgVehicles" >> _item) &&
|
isClass (configFile >> "CfgVehicles" >> _item) &&
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: loaded Object <OBJECT>
|
* 0: loaded Object <OBJECT>
|
||||||
* 1: Object <OBJECT>
|
* 1: Object <OBJECT>
|
||||||
|
* 2: Unloader (player) <OPTIONAL><OBJECT>
|
||||||
*
|
*
|
||||||
* Return value:
|
* Return value:
|
||||||
* Can be unloaded <BOOL>
|
* Can be unloaded <BOOL>
|
||||||
@ -16,30 +17,14 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_item", "_vehicle"];
|
params ["_item", "_vehicle", ["_unloader", objNull]];
|
||||||
private ["_loaded", "_itemClass", "_validVehiclestate", "_emptyPos"];
|
TRACE_2("params",_item,_vehicle);
|
||||||
|
|
||||||
_loaded = _vehicle getVariable [QGVAR(loaded), []];
|
private _loaded = _vehicle getVariable [QGVAR(loaded), []];
|
||||||
if !(_item in _loaded) exitWith {false};
|
if !(_item in _loaded) exitWith {false};
|
||||||
|
|
||||||
_itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
||||||
|
|
||||||
_validVehiclestate = true;
|
private _emptyPos = [_vehicle, _itemClass, _unloader] call EFUNC(common,findUnloadPosition);
|
||||||
_emptyPos = [];
|
|
||||||
if (_vehicle isKindOf "Ship" ) then {
|
|
||||||
if !(speed _vehicle <1 && {(((getPosATL _vehicle) select 2) < 2)}) then {_validVehiclestate = false};
|
|
||||||
_emptyPos = ((getPosASL _vehicle) call EFUNC(common,ASLtoPosition) findEmptyPosition [0, 15, _itemClass]); // TODO: if spot is underwater pick another spot.
|
|
||||||
} else {
|
|
||||||
if (_vehicle isKindOf "Air" ) then {
|
|
||||||
if !(speed _vehicle <1 && {isTouchingGround _vehicle}) then {_validVehiclestate = false};
|
|
||||||
_emptyPos = (getPosASL _vehicle) call EFUNC(common,ASLtoPosition);
|
|
||||||
_emptyPos = [(_emptyPos select 0) + random(5), (_emptyPos select 1) + random(5), _emptyPos select 2 ];
|
|
||||||
} else {
|
|
||||||
if !(speed _vehicle <1 && {(((getPosATL _vehicle) select 2) < 2)}) then {_validVehiclestate = false};
|
|
||||||
_emptyPos = ((getPosASL _vehicle) call EFUNC(common,ASLtoPosition) findEmptyPosition [0, 15, _itemClass]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!_validVehiclestate) exitWith {false};
|
(count _emptyPos) == 3
|
||||||
|
|
||||||
(count _emptyPos != 0)
|
|
||||||
|
@ -15,23 +15,21 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_loadCar", "_loadHelicopter", "_loadTank", "_loadShip", "_loadContainer"];
|
|
||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
_loadCar = nearestObject [_unit, "car"];
|
private _loadCar = nearestObject [_unit, "car"];
|
||||||
if (_unit distance _loadCar <= MAX_LOAD_DISTANCE) exitWith {_loadCar};
|
if (_unit distance _loadCar <= MAX_LOAD_DISTANCE) exitWith {_loadCar};
|
||||||
|
|
||||||
_loadHelicopter = nearestObject [_unit, "air"];
|
private _loadHelicopter = nearestObject [_unit, "air"];
|
||||||
if (_unit distance _loadHelicopter <= MAX_LOAD_DISTANCE) exitWith {_loadHelicopter};
|
if (_unit distance _loadHelicopter <= MAX_LOAD_DISTANCE) exitWith {_loadHelicopter};
|
||||||
|
|
||||||
_loadTank = nearestObject [_unit, "tank"];
|
private _loadTank = nearestObject [_unit, "tank"];
|
||||||
if (_unit distance _loadTank <= MAX_LOAD_DISTANCE) exitWith {_loadTank};
|
if (_unit distance _loadTank <= MAX_LOAD_DISTANCE) exitWith {_loadTank};
|
||||||
|
|
||||||
_loadShip = nearestObject [_unit, "ship"];
|
private _loadShip = nearestObject [_unit, "ship"];
|
||||||
if (_unit distance _loadShip <= MAX_LOAD_DISTANCE) exitWith {_loadShip};
|
if (_unit distance _loadShip <= MAX_LOAD_DISTANCE) exitWith {_loadShip};
|
||||||
|
|
||||||
_loadContainer = nearestObject [_unit,"Cargo_base_F"];
|
private _loadContainer = nearestObject [_unit,"Cargo_base_F"];
|
||||||
if (_unit distance _loadContainer <= MAX_LOAD_DISTANCE) exitWith {_loadContainer};
|
if (_unit distance _loadContainer <= MAX_LOAD_DISTANCE) exitWith {_loadContainer};
|
||||||
|
|
||||||
objNull
|
objNull
|
||||||
|
@ -16,5 +16,6 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_object"];
|
params ["_object"];
|
||||||
|
// TRACE_1("params",_object);
|
||||||
|
|
||||||
_object getVariable [QGVAR(space), getNumber (configFile >> "CfgVehicles" >> typeOf _object >> QGVAR(space))]
|
_object getVariable [QGVAR(space), getNumber (configFile >> "CfgVehicles" >> typeOf _object >> QGVAR(space))]
|
||||||
|
@ -16,22 +16,23 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_item"];
|
params ["_item"];
|
||||||
private ["_isVirtual","_itemClass","_config"];
|
|
||||||
scopeName "return";
|
scopeName "return";
|
||||||
|
|
||||||
_isVirtual = (_item isEqualType "");
|
private _isVirtual = (_item isEqualType "");
|
||||||
_itemClass = if (_isVirtual) then {_item} else {typeOf _item};
|
private _itemClass = if (_isVirtual) then {_item} else {typeOf _item};
|
||||||
_config = (configFile >> "CfgVehicles" >> _itemClass >> QGVAR(size));
|
private _config = (configFile >> "CfgVehicles" >> _itemClass >> QGVAR(size));
|
||||||
|
|
||||||
if (_isVirtual) then {
|
if (_isVirtual) then {
|
||||||
if (isNumber _config) then {
|
if (isNumber _config) then {
|
||||||
(getNumber _config) breakOut "return";
|
(getNumber _config) breakOut "return";
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
_config = (configFile >> "CfgVehicles" >> typeOf _item >> QGVAR(size));
|
if (!isNil {_item getVariable QGVAR(size)}) then {
|
||||||
|
(_item getVariable QGVAR(size)) breakOut "return";
|
||||||
|
};
|
||||||
if (isNumber _config) then {
|
if (isNumber _config) then {
|
||||||
(_item getVariable [QGVAR(size), getNumber _config]) breakOut "return";
|
(getNumber _config) breakOut "return";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Author: Glowbal
|
* Author: Glowbal
|
||||||
* Handle object being destroyed.
|
* Handle object being destroyed. Only runs on server.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Object <OBJECT>
|
* 0: Object <OBJECT>
|
||||||
@ -16,10 +16,9 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
|
TRACE_1("params",_vehicle);
|
||||||
|
|
||||||
private["_loaded"];
|
private _loaded = _vehicle getVariable [QGVAR(loaded), []];
|
||||||
|
|
||||||
_loaded = _vehicle getVariable [QGVAR(loaded), []];
|
|
||||||
if (_loaded isEqualTo []) exitWith {};
|
if (_loaded isEqualTo []) exitWith {};
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -27,6 +26,7 @@ if (_loaded isEqualTo []) exitWith {};
|
|||||||
if (_x isEqualType objNull) then {
|
if (_x isEqualType objNull) then {
|
||||||
deleteVehicle _x;
|
deleteVehicle _x;
|
||||||
};
|
};
|
||||||
|
nil
|
||||||
} count _loaded;
|
} count _loaded;
|
||||||
|
|
||||||
[_vehicle] call FUNC(validateCargoSpace);
|
[_vehicle] call FUNC(validateCargoSpace);
|
||||||
|
@ -16,15 +16,31 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_object"];
|
params ["_object"];
|
||||||
|
private _type = typeOf _object;
|
||||||
|
TRACE_2("params",_object,_type);
|
||||||
|
|
||||||
if (getNumber (configFile >> "CfgVehicles" >> typeOf _object >> QGVAR(canLoad)) != 1) exitWith {};
|
if ((_object getVariable [QGVAR(canLoad), getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(canLoad))]) != 1) exitWith {};
|
||||||
|
|
||||||
private ["_type", "_action"];
|
|
||||||
_type = typeOf _object;
|
|
||||||
|
|
||||||
// do nothing if the class is already initialized
|
// do nothing if the class is already initialized
|
||||||
if (_type in GVAR(initializedItemClasses)) exitWith {};
|
if (_type in GVAR(initializedItemClasses)) exitWith {};
|
||||||
GVAR(initializedItemClasses) pushBack _type;
|
GVAR(initializedItemClasses) pushBack _type;
|
||||||
|
|
||||||
_action = [QGVAR(load), localize LSTRING(loadObject), QUOTE(PATHTOF(UI\Icon_load.paa)), {[_player, _target] call FUNC(startLoadIn)}, {GVAR(enable) && {[_player, _target] call FUNC(canLoad)}}] call EFUNC(interact_menu,createAction);
|
TRACE_1("Adding load cargo action to class", _type);
|
||||||
|
|
||||||
|
private _condition = {
|
||||||
|
GVAR(enable) &&
|
||||||
|
{(_target getVariable [QGVAR(canLoad), getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(canLoad))]) == 1} &&
|
||||||
|
{locked _target < 2} &&
|
||||||
|
{alive _target} &&
|
||||||
|
{[_player, _target, []] call EFUNC(common,canInteractWith)}
|
||||||
|
};
|
||||||
|
private _statement = {
|
||||||
|
params ["_target", "_player"];
|
||||||
|
[_player, _target] call FUNC(startLoadIn);
|
||||||
|
};
|
||||||
|
private _text = localize LSTRING(loadObject);
|
||||||
|
private _icon = QUOTE(PATHTOF(UI\Icon_load.paa));
|
||||||
|
|
||||||
|
private _action = [QGVAR(load), _text, _icon, _statement, _condition] call EFUNC(interact_menu,createAction);
|
||||||
[_type, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass);
|
[_type, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass);
|
||||||
|
|
||||||
|
@ -18,9 +18,7 @@
|
|||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
TRACE_1("params", _vehicle);
|
TRACE_1("params", _vehicle);
|
||||||
|
|
||||||
private ["_type", "_initializedClasses"];
|
private _type = typeOf _vehicle;
|
||||||
_type = typeOf _vehicle;
|
|
||||||
_initializedClasses = GETMVAR(GVAR(initializedClasses),[]);
|
|
||||||
|
|
||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
{
|
{
|
||||||
@ -35,21 +33,24 @@ if (isServer) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// do nothing if the class is already initialized
|
// do nothing if the class is already initialized
|
||||||
if (_type in _initializedClasses) exitWith {};
|
if (_type in GVAR(initializedVehicleClasses)) exitWith {};
|
||||||
// set class as initialized
|
// set class as initialized
|
||||||
_initializedClasses pushBack _type;
|
GVAR(initializedVehicleClasses) pushBack _type;
|
||||||
SETMVAR(GVAR(initializedClasses),_initializedClasses);
|
|
||||||
|
|
||||||
|
if (!hasInterface) exitWith {};
|
||||||
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
|
if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {};
|
||||||
|
|
||||||
private ["_text", "_condition", "_statement", "_icon", "_action"];
|
TRACE_1("Adding unload cargo action to class", _type);
|
||||||
_condition = {
|
|
||||||
params ["_target", "_player"];
|
|
||||||
GVAR(enable) && {locked _target < 2} && {alive _target} && {[_player, _target, []] call EFUNC(common,canInteractWith)}
|
|
||||||
};
|
|
||||||
_text = localize LSTRING(openMenu);
|
|
||||||
_statement = {GVAR(interactionVehicle) = _target; createDialog QGVAR(menu);};
|
|
||||||
_icon = "";
|
|
||||||
|
|
||||||
_action = [QGVAR(openMenu), _text, _icon, _statement, _condition] call EFUNC(interact_menu,createAction);
|
private _condition = {
|
||||||
|
GVAR(enable) && {locked _target < 2} && {alive _target} && {[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)}
|
||||||
|
};
|
||||||
|
private _statement = {
|
||||||
|
GVAR(interactionVehicle) = _target;
|
||||||
|
createDialog QGVAR(menu);
|
||||||
|
};
|
||||||
|
private _text = localize LSTRING(openMenu);
|
||||||
|
private _icon = "";
|
||||||
|
|
||||||
|
private _action = [QGVAR(openMenu), _text, _icon, _statement, _condition] call EFUNC(interact_menu,createAction);
|
||||||
[_type, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass);
|
[_type, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass);
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Item <OBJECT or STRING>
|
* 0: Item <OBJECT or STRING>
|
||||||
* 1: Vehicle <OBJECT>
|
* 1: Vehicle <OBJECT>
|
||||||
* 2: Show Hint <BOOL> (default: true)
|
|
||||||
*
|
*
|
||||||
* Return value:
|
* Return value:
|
||||||
* Object loaded <BOOL>
|
* Object loaded <BOOL>
|
||||||
@ -19,18 +18,18 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params [["_item","",[objNull,""]], ["_vehicle",objNull,[objNull]]];
|
params [["_item","",[objNull,""]], ["_vehicle",objNull,[objNull]]];
|
||||||
private ["_loaded", "_space", "_itemSize"];
|
TRACE_2("params",_item,_vehicle);
|
||||||
|
|
||||||
if !([_item, _vehicle] call FUNC(canLoadItemIn)) exitWith {false};
|
if !([_item, _vehicle] call FUNC(canLoadItemIn)) exitWith {TRACE_2("cannot load",_item,_vehicle); false};
|
||||||
|
|
||||||
_loaded = _vehicle getVariable [QGVAR(loaded), []];
|
private _loaded = _vehicle getVariable [QGVAR(loaded), []];
|
||||||
_loaded pushBack _item;
|
_loaded pushBack _item;
|
||||||
_vehicle setVariable [QGVAR(loaded), _loaded, true];
|
_vehicle setVariable [QGVAR(loaded), _loaded, true];
|
||||||
|
|
||||||
TRACE_1("added to loaded array",_loaded);
|
TRACE_1("added to loaded array",_loaded);
|
||||||
|
|
||||||
_space = [_vehicle] call FUNC(getCargoSpaceLeft);
|
private _space = [_vehicle] call FUNC(getCargoSpaceLeft);
|
||||||
_itemSize = [_item] call FUNC(getSizeItem);
|
private _itemSize = [_item] call FUNC(getSizeItem);
|
||||||
_vehicle setVariable [QGVAR(space), _space - _itemSize, true];
|
_vehicle setVariable [QGVAR(space), _space - _itemSize, true];
|
||||||
|
|
||||||
if (_item isEqualType objNull) then {
|
if (_item isEqualType objNull) then {
|
||||||
|
47
addons/cargo/functions/fnc_makeLoadable.sqf
Normal file
47
addons/cargo/functions/fnc_makeLoadable.sqf
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Makes any object loadable. Needs to be called on all machines.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Object <OBJECT>
|
||||||
|
* 1: Set as loadable (default: true) <BOOL><SCALAR>
|
||||||
|
* 2: Size. (default: 1) <NUMBER>
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [cursorTarget, true, 1] call ace_cargo_fnc_makeLoadable
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params [["_object", objNull, [objNull]], ["_canLoad", true, [false, 0]], ["_setSize", 1, [0]]];
|
||||||
|
TRACE_3("params",_object,_canLoad,_setSize);
|
||||||
|
|
||||||
|
if (isNull _object) exitWith {TRACE_1("null",_object);};
|
||||||
|
private _type = typeOf _object;
|
||||||
|
private _cfgCanLoad = getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(canLoad));
|
||||||
|
private _curSize = [_object] call FUNC(getSizeItem);
|
||||||
|
|
||||||
|
_canLoad = [0, 1] select _canLoad; //convert true/false to scalar
|
||||||
|
|
||||||
|
if ((_canLoad == 1) && {_setSize <= 0}) exitWith {
|
||||||
|
ACE_LOGERROR("ace_cargo_fnc_makeLoadable (size <= 0) when making loadable");
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_2("setVar if different from config",_canLoad,_cfgCanLoad);
|
||||||
|
if (_canLoad != _cfgCanLoad) then {
|
||||||
|
_object setVariable [QGVAR(canLoad), _canLoad];
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_2("setVar if different from config",_setSize,_curSize);
|
||||||
|
if (_setSize != _curSize) then {
|
||||||
|
_object setVariable [QGVAR(size), _setSize];
|
||||||
|
};
|
||||||
|
|
||||||
|
//Add the load actions to the object class if not already added
|
||||||
|
[_object] call FUNC(initObject);
|
||||||
|
|
||||||
|
nil
|
34
addons/cargo/functions/fnc_moduleMakeLoadable.sqf
Normal file
34
addons/cargo/functions/fnc_moduleMakeLoadable.sqf
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Module to make an object loadable.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: The module logic <OBJECT>
|
||||||
|
* 1: Synchronized units <ARRAY>
|
||||||
|
* 2: Activated <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [logic, [box], true] call ace_cargo_fnc_moduleMakeLoadable
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_logic", "_objects", "_activated"];
|
||||||
|
TRACE_3("params",_logic,_objects,_activated);
|
||||||
|
|
||||||
|
if ((isNull _logic) || {!_activated}) exitWith {};
|
||||||
|
if (_objects isEqualTo []) exitWith {
|
||||||
|
ACE_LOGWARNING_1("ace_cargo_fnc_moduleMakeLoadable has no synced objects [%1]", _logic);
|
||||||
|
};
|
||||||
|
|
||||||
|
private _canLoad = _logic getVariable ["canLoad", true];
|
||||||
|
private _setSize = _logic getVariable ["setSize", 1];
|
||||||
|
TRACE_2("settings",_canLoad,_setSize);
|
||||||
|
|
||||||
|
{
|
||||||
|
[_x, _canLoad, _setSize] call FUNC(makeLoadable);
|
||||||
|
} forEach _objects;
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
if (!isServer) exitWith {};
|
if (!isServer) exitWith {};
|
||||||
|
|
||||||
params ["_logic", "_units", "_activated"];
|
params ["_logic", "", "_activated"];
|
||||||
|
|
||||||
if (!_activated) exitWith {};
|
if (!_activated) exitWith {};
|
||||||
|
|
||||||
|
@ -22,25 +22,24 @@ params ["_display"];
|
|||||||
uiNamespace setVariable [QGVAR(menuDisplay), _display];
|
uiNamespace setVariable [QGVAR(menuDisplay), _display];
|
||||||
|
|
||||||
[{
|
[{
|
||||||
private ["_display","_loaded", "_ctrl", "_class", "_label"];
|
|
||||||
disableSerialization;
|
disableSerialization;
|
||||||
_display = uiNamespace getVariable QGVAR(menuDisplay);
|
private _display = uiNamespace getVariable QGVAR(menuDisplay);
|
||||||
if (isnil "_display") exitWith {
|
if (isnil "_display") exitWith {
|
||||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isNull GVAR(interactionVehicle) || ACE_player distance GVAR(interactionVehicle) >= 10) exitWith {
|
if (isNull GVAR(interactionVehicle) || {ACE_player distance GVAR(interactionVehicle) >= 10}) exitWith {
|
||||||
closeDialog 0;
|
closeDialog 0;
|
||||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
_loaded = GVAR(interactionVehicle) getVariable [QGVAR(loaded), []];
|
private _loaded = GVAR(interactionVehicle) getVariable [QGVAR(loaded), []];
|
||||||
_ctrl = _display displayCtrl 100;
|
private _ctrl = _display displayCtrl 100;
|
||||||
_label = _display displayCtrl 2;
|
private _label = _display displayCtrl 2;
|
||||||
|
|
||||||
lbClear _ctrl;
|
lbClear _ctrl;
|
||||||
{
|
{
|
||||||
_class = if (_x isEqualType "") then {_x} else {typeOf _x};
|
private _class = if (_x isEqualType "") then {_x} else {typeOf _x};
|
||||||
_ctrl lbAdd (getText(configfile >> "CfgVehicles" >> _class >> "displayName"));
|
_ctrl lbAdd (getText(configfile >> "CfgVehicles" >> _class >> "displayName"));
|
||||||
true
|
true
|
||||||
} count _loaded;
|
} count _loaded;
|
||||||
|
@ -3,38 +3,46 @@
|
|||||||
* Start load item.
|
* Start load item.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Object <OBJECT>
|
* 0: Player <OBJECT>
|
||||||
|
* 1: Object <OBJECT>
|
||||||
*
|
*
|
||||||
* Return value:
|
* Return value:
|
||||||
* Object loaded <BOOL>
|
* Load ProgressBar Started <BOOL>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [object] call ace_cargo_fnc_starLoadIn
|
* [player, cursorTarget] call ace_cargo_fnc_startLoadIn
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_player", "_object"];
|
params ["_player", "_object"];
|
||||||
private ["_vehicle", "_size", "_displayName"];
|
TRACE_2("params",_player,_object);
|
||||||
|
|
||||||
_vehicle = [_player] call FUNC(findNearestVehicle);
|
private _vehicle = [_player] call FUNC(findNearestVehicle);
|
||||||
|
|
||||||
if (isNull _vehicle || _vehicle isKindOf "Cargo_Base_F") then {
|
if ((isNull _vehicle) || {_vehicle isKindOf "Cargo_Base_F"}) then {
|
||||||
{
|
{
|
||||||
if ([_object, _x] call FUNC(canLoadItemIn)) exitWith {_vehicle = _x};
|
if ([_object, _x] call FUNC(canLoadItemIn)) exitWith {_vehicle = _x};
|
||||||
} forEach (nearestObjects [_player, ["Cargo_base_F", "Land_PaperBox_closed_F"], MAX_LOAD_DISTANCE]);
|
} forEach (nearestObjects [_player, ["Cargo_base_F", "Land_PaperBox_closed_F"], MAX_LOAD_DISTANCE]);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isNull _vehicle) exitWith {false};
|
if (isNull _vehicle) exitWith {
|
||||||
|
TRACE_3("Could not find vehicle",_player,_object,_vehicle);
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
private _return = false;
|
||||||
// Start progress bar
|
// Start progress bar
|
||||||
if ([_object, _vehicle] call FUNC(canLoadItemIn)) then {
|
if ([_object, _vehicle] call FUNC(canLoadItemIn)) then {
|
||||||
_size = [_object] call FUNC(getSizeItem);
|
private _size = [_object] call FUNC(getSizeItem);
|
||||||
|
|
||||||
[5 * _size, [_object,_vehicle], "LoadCargo", {}, localize LSTRING(LoadingItem)] call EFUNC(common,progressBar);
|
[5 * _size, [_object,_vehicle], "LoadCargo", {}, localize LSTRING(LoadingItem)] call EFUNC(common,progressBar);
|
||||||
|
_return = true;
|
||||||
} else {
|
} else {
|
||||||
_displayName = getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName");
|
private _displayName = getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName");
|
||||||
|
|
||||||
["displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call EFUNC(common,localEvent);
|
["displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call EFUNC(common,localEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_return
|
||||||
|
@ -15,34 +15,29 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_display", "_loaded", "_ctrl", "_selected", "_item"];
|
|
||||||
|
|
||||||
disableSerialization;
|
disableSerialization;
|
||||||
|
|
||||||
_display = uiNamespace getVariable QGVAR(menuDisplay);
|
private _display = uiNamespace getVariable QGVAR(menuDisplay);
|
||||||
if (isNil "_display") exitWith {};
|
if (isNil "_display") exitWith {};
|
||||||
|
|
||||||
_loaded = GVAR(interactionVehicle) getVariable [QGVAR(loaded), []];
|
private _loaded = GVAR(interactionVehicle) getVariable [QGVAR(loaded), []];
|
||||||
if (count _loaded == 0) exitWith {};
|
if (_loaded isEqualTo []) exitWith {};
|
||||||
|
|
||||||
_ctrl = _display displayCtrl 100;
|
private _ctrl = _display displayCtrl 100;
|
||||||
|
|
||||||
_selected = (lbCurSel _ctrl) max 0;
|
private _selected = (lbCurSel _ctrl) max 0;
|
||||||
|
|
||||||
if (count _loaded <= _selected) exitWith {};
|
if (count _loaded <= _selected) exitWith {};
|
||||||
_item = _loaded select _selected;
|
private _item = _loaded select _selected; //This can be an object or a classname string
|
||||||
|
|
||||||
|
|
||||||
// Start progress bar
|
// Start progress bar
|
||||||
private ["_size", "_itemClass", "_displayName"];
|
if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then {
|
||||||
|
private _size = [_item] call FUNC(getSizeItem);
|
||||||
|
|
||||||
if ([_item, GVAR(interactionVehicle)] call FUNC(canUnloadItem)) then {
|
[5 * _size, [_item, GVAR(interactionVehicle), ACE_player], "UnloadCargo", {}, localize LSTRING(UnloadingItem), {true}, ["isNotSwimming"]] call EFUNC(common,progressBar);
|
||||||
_size = [_item] call FUNC(getSizeItem);
|
|
||||||
|
|
||||||
[5 * _size, [_item, GVAR(interactionVehicle)], "UnloadCargo", {}, localize LSTRING(UnloadingItem)] call EFUNC(common,progressBar);
|
|
||||||
} else {
|
} else {
|
||||||
_itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
||||||
_displayName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName");
|
private _displayName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName");
|
||||||
|
|
||||||
["displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call EFUNC(common,localEvent);
|
["displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call EFUNC(common,localEvent);
|
||||||
};
|
};
|
||||||
|
@ -16,53 +16,45 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_item", "_vehicle"];
|
params ["_item", "_vehicle", ["_unloader", objNull]];
|
||||||
private ["_loaded", "_space", "_itemSize", "_emptyPos", "_validVehiclestate"];
|
TRACE_3("params",_item,_vehicle,_unloader);
|
||||||
|
|
||||||
if !([_item, _vehicle] call FUNC(canUnloadItem)) exitWith {
|
private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
||||||
|
|
||||||
|
//This covers testing vehicle stability and finding a safe position
|
||||||
|
private _emptyPosAGL = [_vehicle, _itemClass, _unloader] call EFUNC(common,findUnloadPosition);
|
||||||
|
TRACE_1("findUnloadPosition",_emptyPosAGL);
|
||||||
|
|
||||||
|
if ((count _emptyPosAGL) != 3) exitWith {
|
||||||
|
TRACE_4("Could not find unload pos",_vehicle,getPosASL _vehicle,isTouchingGround _vehicle,speed _vehicle);
|
||||||
|
if ((!isNull _unloader) && {_unloader == ACE_player}) then {
|
||||||
|
//display text saying there are no safe places to exit the vehicle
|
||||||
|
["displayTextStructured", [localize ELSTRING(common,NoRoomToUnload)]] call EFUNC(common,localEvent);
|
||||||
|
};
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
_itemClass = if (_item isEqualType "") then {_item} else {typeOf _item};
|
private _loaded = _vehicle getVariable [QGVAR(loaded), []];
|
||||||
|
|
||||||
_validVehiclestate = true;
|
if !(_item in _loaded) exitWith {
|
||||||
_emptyPos = [];
|
ACE_LOGERROR_3("Tried to unload item [%1] not in vehicle[%2] cargo[%3]", _item, _vehicle, _loaded);
|
||||||
if (_vehicle isKindOf "Ship" ) then {
|
false
|
||||||
if !(speed _vehicle <1 && {(((getPosATL _vehicle) select 2) < 2)}) then {_validVehiclestate = false};
|
|
||||||
TRACE_1("SHIP Ground Check", getPosATL _vehicle );
|
|
||||||
_emptyPos = ((getPosASL _vehicle) call EFUNC(common,ASLtoPosition) findEmptyPosition [0, 15, _itemClass]); // TODO: if spot is underwater pick another spot.
|
|
||||||
} else {
|
|
||||||
if (_vehicle isKindOf "Air" ) then {
|
|
||||||
if !(speed _vehicle <1 && {isTouchingGround _vehicle}) then {_validVehiclestate = false};
|
|
||||||
TRACE_1("Vehicle Ground Check", isTouchingGround _vehicle);
|
|
||||||
_emptyPos = (getPosASL _vehicle) call EFUNC(common,ASLtoPosition);
|
|
||||||
_emptyPos = [(_emptyPos select 0) + random(5), (_emptyPos select 1) + random(5), _emptyPos select 2 ];
|
|
||||||
} else {
|
|
||||||
if !(speed _vehicle <1 && {(((getPosATL _vehicle) select 2) < 2)}) then {_validVehiclestate = false};
|
|
||||||
TRACE_1("Vehicle Ground Check", isTouchingGround _vehicle);
|
|
||||||
_emptyPos = ((getPosASL _vehicle) call EFUNC(common,ASLtoPosition) findEmptyPosition [0, 13, _itemClass]);
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle);
|
|
||||||
if (!_validVehiclestate) exitWith {false};
|
|
||||||
|
|
||||||
if (count _emptyPos == 0) exitWith {false};
|
|
||||||
|
|
||||||
_loaded = _vehicle getVariable [QGVAR(loaded), []];
|
|
||||||
_loaded deleteAt (_loaded find _item);
|
_loaded deleteAt (_loaded find _item);
|
||||||
_vehicle setVariable [QGVAR(loaded), _loaded, true];
|
_vehicle setVariable [QGVAR(loaded), _loaded, true];
|
||||||
|
|
||||||
_space = [_vehicle] call FUNC(getCargoSpaceLeft);
|
private _space = [_vehicle] call FUNC(getCargoSpaceLeft);
|
||||||
_itemSize = [_item] call FUNC(getSizeItem);
|
private _itemSize = [_item] call FUNC(getSizeItem);
|
||||||
_vehicle setVariable [QGVAR(space), (_space + _itemSize), true];
|
_vehicle setVariable [QGVAR(space), (_space + _itemSize), true];
|
||||||
|
|
||||||
if (_item isEqualType objNull) then {
|
if (_item isEqualType objNull) then {
|
||||||
detach _item;
|
detach _item;
|
||||||
_item setPosASL (_emptyPos call EFUNC(common,PositiontoASL));
|
_item setPosASL (AGLtoASL _emptyPosAGL);
|
||||||
["hideObjectGlobal", [_item, false]] call EFUNC(common,serverEvent);
|
["hideObjectGlobal", [_item, false]] call EFUNC(common,serverEvent);
|
||||||
} else {
|
} else {
|
||||||
createVehicle [_item, _emptyPos, [], 0, ""];
|
private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""];
|
||||||
|
_newItem setPosASL (AGLtoASL _emptyPosAGL);
|
||||||
};
|
};
|
||||||
|
|
||||||
true
|
true
|
||||||
|
@ -15,14 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_loaded", "_newLoaded", "_totalSpaceOccupied"];
|
|
||||||
|
|
||||||
params ["_vehicle"];
|
params ["_vehicle"];
|
||||||
|
TRACE_1("params",_vehicle);
|
||||||
|
|
||||||
_loaded = _vehicle getVariable [QGVAR(loaded), []];
|
private _loaded = _vehicle getVariable [QGVAR(loaded), []];
|
||||||
|
|
||||||
_newLoaded = [];
|
private _newLoaded = [];
|
||||||
_totalSpaceOccupied = 0;
|
private _totalSpaceOccupied = 0;
|
||||||
{
|
{
|
||||||
if ((_x isEqualType "") || {!isNull _x}) then {
|
if ((_x isEqualType "") || {!isNull _x}) then {
|
||||||
_newLoaded pushback _x;
|
_newLoaded pushback _x;
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
// #define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
// #define CBA_DEBUG_SYNCHRONOUS
|
||||||
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_CARGO
|
#ifdef DEBUG_ENABLED_CARGO
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
<Polish>Pozostałe miejsce: %1</Polish>
|
<Polish>Pozostałe miejsce: %1</Polish>
|
||||||
<Portuguese>Espaço de carga restante: %1</Portuguese>
|
<Portuguese>Espaço de carga restante: %1</Portuguese>
|
||||||
<Russian>Осталось мест: %1</Russian>
|
<Russian>Осталось мест: %1</Russian>
|
||||||
<Czech>Volný prostor: %1</Czech>
|
<Czech>Zbývající prostor: %1</Czech>
|
||||||
<Spanish>Espacio de carga restante: %1</Spanish>
|
<Spanish>Espacio de carga restante: %1</Spanish>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable">
|
<Key ID="STR_ACE_Cargo_ModuleSettings_enable">
|
||||||
@ -62,6 +62,7 @@
|
|||||||
<Portuguese>Ativar o módulo de carregamento de carga</Portuguese>
|
<Portuguese>Ativar o módulo de carregamento de carga</Portuguese>
|
||||||
<Russian>Включает модуль погрузки и перевозки грузов</Russian>
|
<Russian>Включает модуль погрузки и перевозки грузов</Russian>
|
||||||
<Spanish>Habilitar la carga en el módulo de carga</Spanish>
|
<Spanish>Habilitar la carga en el módulo de carga</Spanish>
|
||||||
|
<Czech>Umožňuje naložit předměty do nákladového prostoru vozidla</Czech>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
|
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
|
||||||
<English>Cargo Settings</English>
|
<English>Cargo Settings</English>
|
||||||
@ -133,5 +134,14 @@
|
|||||||
<Czech>%1<br/>nemůže být vyloženo</Czech>
|
<Czech>%1<br/>nemůže být vyloženo</Czech>
|
||||||
<Russian>%1<br/>не может быть выгружен</Russian>
|
<Russian>%1<br/>не может быть выгружен</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Cargo_makeLoadable_displayName">
|
||||||
|
<English>Make Object Loadable</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Cargo_makeLoadable_description">
|
||||||
|
<English>Sets the synced object as loadable by the cargo system.</English>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Cargo_makeLoadable_setSize_displayName">
|
||||||
|
<English>Object's Size</English>
|
||||||
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -23,9 +23,6 @@ class Extended_InitPost_EventHandlers {
|
|||||||
class GVAR(setName) {
|
class GVAR(setName) {
|
||||||
init = QUOTE(if (local (_this select 0)) then {_this call FUNC(setName)};);
|
init = QUOTE(if (local (_this select 0)) then {_this call FUNC(setName)};);
|
||||||
};
|
};
|
||||||
class GVAR(forceWalk) {
|
|
||||||
init = QUOTE(_this call FUNC(applyForceWalkStatus));
|
|
||||||
};
|
|
||||||
class GVAR(muteUnit) {
|
class GVAR(muteUnit) {
|
||||||
init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
|
init = QUOTE(_this call FUNC(muteUnitHandleInitPost));
|
||||||
};
|
};
|
||||||
@ -43,6 +40,9 @@ class Extended_Respawn_EventHandlers {
|
|||||||
class GVAR(RESETDefaults) {
|
class GVAR(RESETDefaults) {
|
||||||
respawn = QUOTE(_this call FUNC(resetAllDefaults));
|
respawn = QUOTE(_this call FUNC(resetAllDefaults));
|
||||||
};
|
};
|
||||||
|
class GVAR(statusEffect) {
|
||||||
|
respawn = QUOTE(_this call FUNC(statusEffect_respawnEH));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class CAManBase {
|
class CAManBase {
|
||||||
class GVAR(muteUnit) {
|
class GVAR(muteUnit) {
|
||||||
@ -50,3 +50,12 @@ class Extended_Respawn_EventHandlers {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Extended_Local_EventHandlers {
|
||||||
|
class All {
|
||||||
|
class GVAR(statusEffect) {
|
||||||
|
local = QUOTE(_this call FUNC(statusEffect_localEH));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
16
addons/common/CfgLocationTypes.hpp
Normal file
16
addons/common/CfgLocationTypes.hpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
//Create a location type that won't be drawn on the map
|
||||||
|
//Ref: https://community.bistudio.com/wiki/Location
|
||||||
|
|
||||||
|
class CfgLocationTypes {
|
||||||
|
class ACE_HashLocation {
|
||||||
|
color[] = {0,0,0,0};
|
||||||
|
drawStyle = "bananas";
|
||||||
|
font = "PuristaMedium";
|
||||||
|
importance = 5;
|
||||||
|
name = "HashLocation";
|
||||||
|
shadow = 0;
|
||||||
|
size = 0;
|
||||||
|
textSize = 0.0;
|
||||||
|
texture = "";
|
||||||
|
};
|
||||||
|
};
|
@ -1,5 +1,6 @@
|
|||||||
// ACE - Common
|
// ACE - Common
|
||||||
// #define ENABLE_PERFORMANCE_COUNTERS
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
|
||||||
@ -57,6 +58,39 @@
|
|||||||
// Eventhandlers
|
// Eventhandlers
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//Status Effect EHs:
|
||||||
|
["setStatusEffect", {_this call FUNC(statusEffect_set)}] call FUNC(addEventHandler);
|
||||||
|
["forceWalk", false, ["ACE_SwitchUnits", "ACE_Attach", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_dragging"]] call FUNC(statusEffect_addType);
|
||||||
|
["blockSprint", false, []] call FUNC(statusEffect_addType);
|
||||||
|
["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType);
|
||||||
|
["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType);
|
||||||
|
|
||||||
|
["forceWalk", {
|
||||||
|
params ["_object", "_set"];
|
||||||
|
TRACE_2("forceWalk EH",_object,_set);
|
||||||
|
_object forceWalk (_set > 0);
|
||||||
|
}] call FUNC(addEventHandler);
|
||||||
|
["blockSprint", { //Name reversed from `allowSprint` because we want NOR logic
|
||||||
|
params ["_object", "_set"];
|
||||||
|
TRACE_2("blockSprint EH",_object,_set);
|
||||||
|
_object allowSprint (_set == 0);
|
||||||
|
}] call FUNC(addEventHandler);
|
||||||
|
["setCaptive", {
|
||||||
|
params ["_object", "_set"];
|
||||||
|
TRACE_2("setCaptive EH",_object,_set);
|
||||||
|
_object setCaptive (_set > 0);
|
||||||
|
}] call FUNC(addEventHandler);
|
||||||
|
["blockDamage", { //Name reversed from `allowDamage` because we want NOR logic
|
||||||
|
params ["_object", "_set"];
|
||||||
|
if ((_object isKindOf "CAManBase") && {(["ace_medical"] call FUNC(isModLoaded))}) then {
|
||||||
|
TRACE_2("blockDamage EH (using medical)",_object,_set);
|
||||||
|
_object setvariable [QEGVAR(medical,allowDamage), (_set == 0), true];
|
||||||
|
} else {
|
||||||
|
TRACE_2("blockDamage EH (using allowDamage)",_object,_set);
|
||||||
|
_object allowDamage (_set == 0);
|
||||||
|
};
|
||||||
|
}] call FUNC(addEventHandler);
|
||||||
|
|
||||||
//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit
|
//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit
|
||||||
//This variable is used for isPlayer checks
|
//This variable is used for isPlayer checks
|
||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
@ -431,9 +465,6 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then {
|
|||||||
// Eventhandlers for player controlled machines
|
// Eventhandlers for player controlled machines
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
// @todo still needed?
|
|
||||||
[QGVAR(StateArrested), false, true, QUOTE(ADDON)] call FUNC(defineVariable);
|
|
||||||
|
|
||||||
["displayTextStructured", {_this call FUNC(displayTextStructured)}] call FUNC(addEventhandler);
|
["displayTextStructured", {_this call FUNC(displayTextStructured)}] call FUNC(addEventhandler);
|
||||||
["displayTextPicture", {_this call FUNC(displayTextPicture)}] call FUNC(addEventhandler);
|
["displayTextPicture", {_this call FUNC(displayTextPicture)}] call FUNC(addEventhandler);
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ PREP(addToInventory);
|
|||||||
PREP(assignedItemFix);
|
PREP(assignedItemFix);
|
||||||
PREP(assignObjectsInList);
|
PREP(assignObjectsInList);
|
||||||
PREP(ambientBrightness);
|
PREP(ambientBrightness);
|
||||||
PREP(applyForceWalkStatus);
|
|
||||||
PREP(ASLToPosition);
|
PREP(ASLToPosition);
|
||||||
PREP(binarizeNumber);
|
PREP(binarizeNumber);
|
||||||
PREP(blurScreen);
|
PREP(blurScreen);
|
||||||
@ -47,14 +46,15 @@ PREP(execPersistentFnc);
|
|||||||
PREP(execRemoteFnc);
|
PREP(execRemoteFnc);
|
||||||
PREP(executePersistent);
|
PREP(executePersistent);
|
||||||
PREP(filter);
|
PREP(filter);
|
||||||
|
PREP(findUnloadPosition);
|
||||||
PREP(fixCollision);
|
PREP(fixCollision);
|
||||||
PREP(fixFloating);
|
PREP(fixFloating);
|
||||||
PREP(fixLoweredRifleAnimation);
|
PREP(fixLoweredRifleAnimation);
|
||||||
PREP(fixPosition);
|
PREP(fixPosition);
|
||||||
PREP(getAllDefinedSetVariables);
|
PREP(getAllDefinedSetVariables);
|
||||||
PREP(getAllGear);
|
PREP(getAllGear);
|
||||||
PREP(getCaptivityStatus);
|
|
||||||
PREP(getDeathAnim);
|
PREP(getDeathAnim);
|
||||||
|
PREP(getCaptivityStatus);
|
||||||
PREP(getDefaultAnim);
|
PREP(getDefaultAnim);
|
||||||
PREP(getDefinedVariable);
|
PREP(getDefinedVariable);
|
||||||
PREP(getDefinedVariableDefault);
|
PREP(getDefinedVariableDefault);
|
||||||
@ -154,6 +154,7 @@ PREP(selectWeaponMode);
|
|||||||
PREP(sendRequest);
|
PREP(sendRequest);
|
||||||
PREP(serverLog);
|
PREP(serverLog);
|
||||||
PREP(setAllGear);
|
PREP(setAllGear);
|
||||||
|
PREP(setApproximateVariablePublic);
|
||||||
PREP(setCaptivityStatus);
|
PREP(setCaptivityStatus);
|
||||||
PREP(setDefinedVariable);
|
PREP(setDefinedVariable);
|
||||||
PREP(setDisableUserInputStatus);
|
PREP(setDisableUserInputStatus);
|
||||||
@ -170,6 +171,13 @@ PREP(setVariablePublic);
|
|||||||
PREP(setVolume);
|
PREP(setVolume);
|
||||||
PREP(sortAlphabeticallyBy);
|
PREP(sortAlphabeticallyBy);
|
||||||
PREP(showHud);
|
PREP(showHud);
|
||||||
|
PREP(statusEffect_addType);
|
||||||
|
PREP(statusEffect_get);
|
||||||
|
PREP(statusEffect_localEH);
|
||||||
|
PREP(statusEffect_resetVariables);
|
||||||
|
PREP(statusEffect_respawnEH);
|
||||||
|
PREP(statusEffect_sendEffects);
|
||||||
|
PREP(statusEffect_set);
|
||||||
PREP(stringCompare);
|
PREP(stringCompare);
|
||||||
PREP(stringToColoredText);
|
PREP(stringToColoredText);
|
||||||
PREP(stringRemoveWhiteSpace);
|
PREP(stringRemoveWhiteSpace);
|
||||||
@ -316,6 +324,8 @@ if (isServer) then {
|
|||||||
call FUNC(loadSettingsOnServer);
|
call FUNC(loadSettingsOnServer);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GVAR(statusEffect_Names) = [];
|
||||||
|
GVAR(statusEffect_isGlobal) = [];
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
// Set up PlayerChanged eventhandler for pre init
|
// Set up PlayerChanged eventhandler for pre init
|
||||||
|
@ -14,6 +14,7 @@ class CfgPatches {
|
|||||||
|
|
||||||
#include "CfgEventHandlers.hpp"
|
#include "CfgEventHandlers.hpp"
|
||||||
|
|
||||||
|
#include "CfgLocationTypes.hpp"
|
||||||
#include "CfgSounds.hpp"
|
#include "CfgSounds.hpp"
|
||||||
#include "CfgVehicles.hpp"
|
#include "CfgVehicles.hpp"
|
||||||
#include "CfgWeapons.hpp"
|
#include "CfgWeapons.hpp"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* Arguments [Client] :
|
* Arguments [Client] :
|
||||||
* 0: eventName <STRING>
|
* 0: eventName <STRING>
|
||||||
* 1: arguments <ARRAY>
|
* 1: arguments <ARRAY>
|
||||||
* 2: ttl <SCALAR>
|
* 2: ttl <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Boolean of success <BOOL>
|
* Boolean of success <BOOL>
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: Pabst Mirror
|
|
||||||
* Applys the forceWalk status of an unit. Called from Extended_InitPost_EventHandlers.
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* 0: Unit <OBJECT>
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
* Example:
|
|
||||||
* [ACE_Player] call ace_common_fnc_applyForceWalkStatus
|
|
||||||
*
|
|
||||||
* Public: No
|
|
||||||
*/
|
|
||||||
#include "script_component.hpp"
|
|
||||||
|
|
||||||
params ["_unit"];
|
|
||||||
|
|
||||||
private _forceWalkNumber = _unit getVariable ["ACE_forceWalkStatusNumber", 0];
|
|
||||||
|
|
||||||
_unit forceWalk (_forceWalkNumber > 0);
|
|
117
addons/common/functions/fnc_findUnloadPosition.sqf
Normal file
117
addons/common/functions/fnc_findUnloadPosition.sqf
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror, ViperMaul
|
||||||
|
* Find a safe place near a vehicle to unload something
|
||||||
|
* Handles Normal Terrain, In Water or On Buildings (Pier, StaticShip)
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Source Vehicle <OBJECT>
|
||||||
|
* 1: Cargo Classname <STRING>
|
||||||
|
* 2: Unloader (player) <OBJECT><OPTIONAL>
|
||||||
|
* 3: Max Distance (meters) <NUMBER><OPTIONAL>
|
||||||
|
* 4: Check Vehicle is Stable <BOOL><OPTIONAL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Unload PositionAGL (Can Be [] if no valid pos found) <ARRAY>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [theCar, "CAManBase", player, 10, true] call ace_common_fnc_findUnloadPosition;
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
//Number of tests run (effects performance in worst case scenarior where nothing is found VERSUES reliably finding a pos):
|
||||||
|
#define MAX_TESTS 75
|
||||||
|
|
||||||
|
//Manual collision tests (count and radius):
|
||||||
|
#define COL_TEST_COUNT 12
|
||||||
|
|
||||||
|
params ["_vehicle", "_typeOfCargo", ["_theUnloader", objNull], ["_maxDistance", 10], ["_checkVehicleIsStable", true]];
|
||||||
|
TRACE_5("params",_vehicle,_typeOfCargo,_theUnloader,_maxDistance,_checkVehicleIsStable);
|
||||||
|
|
||||||
|
scopeName "main";
|
||||||
|
|
||||||
|
if (_checkVehicleIsStable) then {
|
||||||
|
if (((vectorMagnitude (velocity _vehicle)) > 1.5) || {(!(_vehicle isKindOf "Ship")) && {(!isTouchingGround _vehicle) && {((getPos _vehicle) select 2) > 1.5}}}) then {
|
||||||
|
TRACE_4("bad vehicle state",_vehicle,velocity _vehicle,isTouchingGround _vehicle,getPos _vehicle);
|
||||||
|
[] breakOut "main";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
private _radiusOfItem = 1;
|
||||||
|
if (_typeOfCargo isKindOf "CAManBase") then {
|
||||||
|
_radiusOfItem = 1.1;
|
||||||
|
} else {
|
||||||
|
//`sizeOf` is unreliable, and does not work with object types that don't exist on map, so estimate size based on cargo size
|
||||||
|
if (isNumber (configFile >> "CfgVehicles" >> _typeOfCargo >> QEGVAR(cargo,size))) then {
|
||||||
|
_radiusOfItem = (((getNumber (configFile >> "CfgVehicles" >> _typeOfCargo >> QEGVAR(cargo,size))) ^ 0.35) max 0.75);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if (isNull _theUnloader) then {_theUnloader = _vehicle;};
|
||||||
|
|
||||||
|
//Ideal unload pos is halfway between unloader and vehicle (at the unloader's height)
|
||||||
|
private _originASL = ((getPosASL _theUnloader) vectorAdd (getPosASL _vehicle)) vectorMultiply 0.5;
|
||||||
|
_originASL set [2, (getPosASL _theUnloader) select 2];
|
||||||
|
private _originAGL = ASLtoAGL _originASL;
|
||||||
|
|
||||||
|
//Do a manual search for empty pos (handles underwater, buildings or piers)
|
||||||
|
TRACE_2("Checking for unload",_originAGL,_radiusOfItem);
|
||||||
|
private _rangeToCheck = 0;
|
||||||
|
while {_rangeToCheck < _maxDistance} do {
|
||||||
|
private _roundDistance = random _rangeToCheck;
|
||||||
|
private _roundAngle = random 360;
|
||||||
|
private _roundAGL = _originAGL vectorAdd [(cos _roundAngle) * _roundDistance, (sin _roundAngle) * _roundDistance, 0];
|
||||||
|
|
||||||
|
private _roundPointIsValid = false;
|
||||||
|
if (((AGLtoASL _roundAGL) select 2) > 0) then {
|
||||||
|
//Shoot a ray down, and make sure we hit something solid like a building or the ground:
|
||||||
|
private _belowRoundArray = lineIntersectsSurfaces [(AGLtoASL _roundAGL) vectorAdd [0,0,0.5], (AGLtoASL _roundAGL) vectorAdd [0,0,-1]];
|
||||||
|
TRACE_4("Testing for solid",_roundDistance,_roundAngle,_roundAGL,_belowRoundArray);
|
||||||
|
if (!(_belowRoundArray isEqualTo [])) then {
|
||||||
|
private _aboveBuilding = (_belowRoundArray select 0) select 2;
|
||||||
|
//Point is above something: Terrain(null) or Building
|
||||||
|
if ((isNull _aboveBuilding) || {_aboveBuilding isKindOf "Building"}) then {
|
||||||
|
//Get the real intersection point:
|
||||||
|
_roundAGL = ASLtoAGL ((_belowRoundArray select 0) select 0);
|
||||||
|
_roundPointIsValid = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
//Underwater, just unload anywhere
|
||||||
|
TRACE_3("Under the sea",_roundDistance,_roundAngle,_roundAGL);
|
||||||
|
_roundPointIsValid = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Make sure point is valid and do a fast check for people in the way (which sometimes aren't caught by line scaning)
|
||||||
|
if (_roundPointIsValid && {(_roundAGL nearEntities ["Man", _radiusOfItem]) isEqualTo []}) then {
|
||||||
|
for "_index" from 0 to (COL_TEST_COUNT -1) do {
|
||||||
|
//Scan for colisions with objects with lineIntersectsSurfaces
|
||||||
|
private _angle = _index * (360 / COL_TEST_COUNT);
|
||||||
|
private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1];
|
||||||
|
private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)];
|
||||||
|
private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
|
||||||
|
if (!(_testIntersections isEqualTo [])) exitWith {
|
||||||
|
TRACE_2("collision low/high",_roundAGL,_testIntersections);
|
||||||
|
_roundPointIsValid = false;
|
||||||
|
};
|
||||||
|
_point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.5];
|
||||||
|
_point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, 1];
|
||||||
|
_testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL];
|
||||||
|
if (!(_testIntersections isEqualTo [])) exitWith {
|
||||||
|
TRACE_2("collision mid",_roundAGL,_testIntersections);
|
||||||
|
_roundPointIsValid = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if (_roundPointIsValid) then {
|
||||||
|
TRACE_3("Valid point found", _rangeToCheck,_roundAGL, (_originAGL distance _roundAGL));
|
||||||
|
//Raise it slightly so we don't sink through the floor:
|
||||||
|
(_roundAGL vectorAdd [0,0,0.05]) breakOut "main";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_rangeToCheck = _rangeToCheck + (_maxDistance / MAX_TESTS);
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_1("no valid spots found",_rangeToCheck);
|
||||||
|
[] //return empty array
|
@ -15,8 +15,8 @@
|
|||||||
// allowDamage requires local object
|
// allowDamage requires local object
|
||||||
if (!local _this) exitWith {};
|
if (!local _this) exitWith {};
|
||||||
|
|
||||||
// prevent collision damage, @todo allowDamage API
|
// prevent collision damage
|
||||||
_this allowDamage false;
|
[_this, "blockDamage", "fixCollision", true] call FUNC(statusEffect_set);
|
||||||
|
|
||||||
// re-allow damage after 2 seconds
|
// re-allow damage after 2 seconds
|
||||||
[{_this allowDamage true}, _this, 2, 0] call EFUNC(common,waitAndExecute);
|
[{[_this, "blockDamage", "fixCollision", false] call FUNC(statusEffect_set);}, _this, 2] call EFUNC(common,waitAndExecute);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2
|
* Author: commy2
|
||||||
* Attempt to fix floating physx with disabled damage after setPosXXX commands.
|
* Attempt to fix floating physx with disabled damage after setPosXXX commands.
|
||||||
|
* Handles the "fixFloating" event
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* PhysX object <OBJECT>
|
* PhysX object <OBJECT>
|
||||||
@ -16,6 +17,11 @@ params ["_object"];
|
|||||||
|
|
||||||
// setHitPointDamage requires local object
|
// setHitPointDamage requires local object
|
||||||
if (!local _object) exitWith {};
|
if (!local _object) exitWith {};
|
||||||
|
//Ignore mans
|
||||||
|
if (_object isKindOf "CAManBase") exitWith {};
|
||||||
|
|
||||||
|
//We need to manually set allowDamage to true for setHitIndex to function
|
||||||
|
["blockDamage", [_object, 0]] call FUNC(localEvent);
|
||||||
|
|
||||||
// save and restore hitpoints, see below why
|
// save and restore hitpoints, see below why
|
||||||
private _hitPointDamages = getAllHitPointsDamage _object;
|
private _hitPointDamages = getAllHitPointsDamage _object;
|
||||||
@ -31,3 +37,8 @@ _object setDamage damage _object;
|
|||||||
{
|
{
|
||||||
_object setHitIndex [_forEachIndex, _x];
|
_object setHitIndex [_forEachIndex, _x];
|
||||||
} forEach (_hitPointDamages select 2);
|
} forEach (_hitPointDamages select 2);
|
||||||
|
|
||||||
|
//manually re-enable allowDamage to previous setting (ref statusEffect_funcs)
|
||||||
|
private _effectVarName = format [QGVAR(effect_%1), "blockDamage"];
|
||||||
|
private _effectNumber = _object getVariable [_effectVarName, 0];
|
||||||
|
["blockDamage", [_object, _effectNumber]] call FUNC(localEvent);
|
||||||
|
@ -14,15 +14,7 @@
|
|||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
private _captivityReasons = missionNamespace getVariable ["ACE_captivityReasons", []];
|
//Now just a wrapper for FUNC(statusEffect_get) [No longer used in ace as of 3.5]
|
||||||
private _unitCaptivityStatus = [captiveNum _unit, count _captivityReasons] call FUNC(binarizeNumber);
|
ACE_DEPRECATED("ace_common_fnc_getCaptivityStatus","3.7.0","ace_common_fnc_statusEffect_get");
|
||||||
|
|
||||||
private _unitCaptivityReasons = [];
|
([_unit, "setCaptive"] call FUNC(statusEffect_get)) select 1
|
||||||
|
|
||||||
{
|
|
||||||
if (_unitCaptivityStatus select _forEachIndex) then {
|
|
||||||
_unitCaptivityReasons pushBack _x;
|
|
||||||
};
|
|
||||||
} forEach _captivityReasons;
|
|
||||||
|
|
||||||
_unitCaptivityReasons
|
|
||||||
|
@ -17,16 +17,7 @@
|
|||||||
|
|
||||||
params ["_unit"];
|
params ["_unit"];
|
||||||
|
|
||||||
private _forceWalkReasons = missionNamespace getVariable ["ACE_forceWalkReasons", []];
|
//Now just a wrapper for FUNC(statusEffect_get) [No longer used in ace as of 3.5]
|
||||||
private _unitForceWalkNumber = _unit getVariable ["ACE_forceWalkStatusNumber", 0];
|
ACE_DEPRECATED("ace_common_fnc_getForceWalkStatus","3.7.0","ace_common_fnc_statusEffect_get");
|
||||||
private _unitForceWalkStatus = [_unitForceWalkNumber, count _forceWalkReasons] call FUNC(binarizeNumber);
|
|
||||||
|
|
||||||
private _unitForceWalkReasons = [];
|
([_unit, "forceWalk"] call FUNC(statusEffect_get)) select 1
|
||||||
|
|
||||||
{
|
|
||||||
if (_unitForceWalkStatus select _forEachIndex) then {
|
|
||||||
_unitForceWalkReasons pushBack _x;
|
|
||||||
};
|
|
||||||
} forEach _forceWalkReasons;
|
|
||||||
|
|
||||||
_unitForceWalkReasons
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2
|
* Author: VKing
|
||||||
* Get the distance to the next object the player is looking at. Used for laser distance measurements.
|
* Get the distance to the next object the player is looking at. Used for laser distance measurements.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Messurement Accuracy <NUMBER>
|
* 0: Measurement Accuracy (default: 1) <NUMBER>
|
||||||
* 1: Maximal messure distance <NUMBER>
|
* 1: Maximum measure distance (default: 5000) <NUMBER>
|
||||||
* 2: Minimal messure distance (default: nil) <NUMBER>
|
* 2: Minimum measure distance (default: 0) <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Distance in meters <NUMBER>
|
* Distance in meters <NUMBER>
|
||||||
@ -14,33 +14,23 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_interval", "_maxDistance", "_minDistance"];
|
params [["_accuracy",1], ["_maxDistance",5000], ["_minDistance",0]];
|
||||||
|
|
||||||
private _position = ATLToASL positionCameraToWorld [0, 0, 0];
|
private _camPosition = AGLToASL positionCameraToWorld [0, 0, 0];
|
||||||
_position set [2, (_position select 2) - (getTerrainHeightASL _position min 0)];
|
private _aimLinePos = AGLToASL positionCameraToWorld [0, 0, _maxDistance];
|
||||||
|
|
||||||
private _laser = + _position;
|
private _LIS = lineIntersectsSurfaces [_camPosition, _aimLinePos];
|
||||||
private _line = [_position, _laser];
|
|
||||||
|
|
||||||
private _distance = _maxDistance;
|
private _distance = 0;
|
||||||
private _iteration = _distance;
|
if (count _LIS > 0) then {
|
||||||
|
_distance = _camPosition vectorDistance ((_LIS select 0) select 0);
|
||||||
while {
|
} else {
|
||||||
_iteration > _interval / 2
|
_distance = _maxDistance;
|
||||||
} do {
|
|
||||||
_iteration = _iteration / 2;
|
|
||||||
|
|
||||||
_laser = ATLToASL positionCameraToWorld [0, 0, _distance];
|
|
||||||
_laser set [2, (_laser select 2) - (getTerrainHeightASL _laser min 0)];
|
|
||||||
_line set [1, _laser];
|
|
||||||
|
|
||||||
_distance = _distance + (([1, -1] select (lineIntersects (_line + [vehicle ACE_player]) || {terrainIntersectASL _line})) * _iteration);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_distance = _interval * round (_distance / _interval);
|
_distance = _distance max _minDistance;
|
||||||
|
|
||||||
_distance = _distance min _maxDistance;
|
_accuracy = _accuracy max 1;
|
||||||
|
_distance = (round (_distance/_accuracy)) * _accuracy;
|
||||||
if (!isNil "_minDistance") then {_distance = _distance max _minDistance};
|
|
||||||
|
|
||||||
_distance
|
_distance
|
||||||
|
@ -19,11 +19,6 @@ _unit setVariable ["ACE_isUnconscious", nil, true];
|
|||||||
|
|
||||||
if (isPlayer _unit) then {
|
if (isPlayer _unit) then {
|
||||||
[true] call FUNC(setVolume);
|
[true] call FUNC(setVolume);
|
||||||
// [false] call FUNC(disableKeyInput); //func does not exist
|
|
||||||
|
|
||||||
if (["ace_medical"] call FUNC(isModLoaded)) then {
|
|
||||||
// [false] call EFUNC(medical,effectBlackOut); //func does not exist
|
|
||||||
};
|
|
||||||
|
|
||||||
if !(isNil QGVAR(DISABLE_USER_INPUT_COLLECTION)) then {
|
if !(isNil QGVAR(DISABLE_USER_INPUT_COLLECTION)) then {
|
||||||
// clear all disable user input
|
// clear all disable user input
|
||||||
@ -40,5 +35,3 @@ if (isPlayer _unit) then {
|
|||||||
};
|
};
|
||||||
false
|
false
|
||||||
} count ([_unit] call FUNC(getAllDefinedSetVariables));
|
} count ([_unit] call FUNC(getAllDefinedSetVariables));
|
||||||
|
|
||||||
_unit setVariable ["ACE_forceWalkStatusNumber", 0, true];
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Author: bux578, commy2
|
* Author: bux578, commy2
|
||||||
* Applies gear to unit.
|
* Applies gear to unit. It must be called in the machine in which the unit is local.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Unit <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
@ -20,6 +20,10 @@
|
|||||||
|
|
||||||
params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]];
|
params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]];
|
||||||
|
|
||||||
|
if (!local _unit) exitWith {
|
||||||
|
ACE_LOGWARNING_1("setAllGear - %1 has to be local.",_unit);
|
||||||
|
};
|
||||||
|
|
||||||
// remove all starting gear of a player
|
// remove all starting gear of a player
|
||||||
removeAllWeapons _unit;
|
removeAllWeapons _unit;
|
||||||
removeGoggles _unit;
|
removeGoggles _unit;
|
||||||
|
42
addons/common/functions/fnc_setApproximateVariablePublic.sqf
Normal file
42
addons/common/functions/fnc_setApproximateVariablePublic.sqf
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Author: esteldunedain
|
||||||
|
* Publish a variable if it's different enough from the previously published value.
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: Object the variable should be assigned to <OBJECT>
|
||||||
|
* 1: Name of the variable <STRING>
|
||||||
|
* 2: Value of the variable <ANY>
|
||||||
|
* 3: Absolute tolerance <NUMBER>
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Nothing.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, "balls", 2, 0.1] call ace_common_fnc_setApproximateVariablePublic;
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_object", "_varName", "_value", "_tolerance"];
|
||||||
|
TRACE_4("params",_object,_varName,_value,_tolerance);
|
||||||
|
|
||||||
|
// Set exact new value locally
|
||||||
|
_object setVariable [_varName, _value];
|
||||||
|
|
||||||
|
// Exit if in SP - "duh"
|
||||||
|
if (!isMultiplayer) exitWith {};
|
||||||
|
|
||||||
|
// If new value is not different
|
||||||
|
private _oldVarName = format ["ACE_oldValue_%1", _varName];
|
||||||
|
private _oldValue = _object getVariable [_oldVarName, -100000];
|
||||||
|
|
||||||
|
// Exit if new value is not different enough from the old onedifferent
|
||||||
|
if (abs(_value - _oldValue) < _tolerance) exitWith {};
|
||||||
|
|
||||||
|
// Publish the new value:
|
||||||
|
_object setVariable [_varName, _value, true];
|
||||||
|
_object setVariable [_oldVarName, _value];
|
||||||
|
|
||||||
|
TRACE_2("Published variable:", _varName, _value);
|
@ -16,28 +16,7 @@
|
|||||||
|
|
||||||
params ["_unit", "_reason", "_status"];
|
params ["_unit", "_reason", "_status"];
|
||||||
|
|
||||||
private _captivityReasons = missionNamespace getVariable ["ACE_captivityReasons", []];
|
//Now just a wrapper for FUNC(statusEffect_set) [No longer used in ace as of 3.5]
|
||||||
|
ACE_DEPRECATED("ace_common_fnc_setCaptivityStatus","3.7.0","ace_common_fnc_statusEffect_set");
|
||||||
|
|
||||||
// register new reason (these reasons are shared publicly, since units can change ownership, but keep their captivity status)
|
[_unit, "setCaptive", _reason, _status] call FUNC(statusEffect_set);
|
||||||
if !(_reason in _captivityReasons) then {
|
|
||||||
_captivityReasons pushBack _reason;
|
|
||||||
|
|
||||||
ACE_captivityReasons = _captivityReasons;
|
|
||||||
publicVariable "ACE_captivityReasons";
|
|
||||||
};
|
|
||||||
|
|
||||||
// get reasons why the unit is captive already and update to the new status
|
|
||||||
private _unitCaptivityReasons = _unit call FUNC(getCaptivityStatus);
|
|
||||||
|
|
||||||
private _captivityReasonsBooleans = [];
|
|
||||||
|
|
||||||
{
|
|
||||||
_captivityReasonsBooleans set [_forEachIndex, (_captivityReasons select _forEachIndex) in _unitCaptivityReasons];
|
|
||||||
} forEach _captivityReasons;
|
|
||||||
|
|
||||||
_captivityReasonsBooleans set [_captivityReasons find _reason, _status];
|
|
||||||
|
|
||||||
private _bitmask = _captivityReasonsBooleans call FUNC(toBitmask);
|
|
||||||
|
|
||||||
// actually apply the setCaptive command globaly
|
|
||||||
[[_unit, _bitmask], "{(_this select 0) setCaptive (_this select 1)}", _unit] call FUNC(execRemoteFnc);
|
|
||||||
|
@ -20,29 +20,7 @@
|
|||||||
|
|
||||||
params ["_unit", "_reason", "_status"];
|
params ["_unit", "_reason", "_status"];
|
||||||
|
|
||||||
private _forceWalkReasons = missionNamespace getVariable ["ACE_forceWalkReasons", []];
|
//Now just a wrapper for FUNC(statusEffect_set) [No longer used in ace as of 3.5]
|
||||||
|
ACE_DEPRECATED("ace_common_fnc_setForceWalkStatus","3.7.0","ace_common_fnc_statusEffect_set");
|
||||||
|
|
||||||
// register new reason (these reasons are shared publicly, since units can change ownership, but keep their forceWalk status)
|
[_unit, "forceWalk", _reason, _status] call FUNC(statusEffect_set);
|
||||||
if !(_reason in _forceWalkReasons) then {
|
|
||||||
_forceWalkReasons pushBack _reason;
|
|
||||||
ACE_forceWalkReasons = _forceWalkReasons;
|
|
||||||
publicVariable "ACE_forceWalkReasons";
|
|
||||||
};
|
|
||||||
|
|
||||||
// get reasons why the unit is forceWalking already and update to the new status
|
|
||||||
private _unitForceWalkReasons = [_unit] call FUNC(getForceWalkStatus);
|
|
||||||
|
|
||||||
private _forceWalkReasonsBooleans = [];
|
|
||||||
|
|
||||||
{
|
|
||||||
_forceWalkReasonsBooleans set [_forEachIndex, (_forceWalkReasons select _forEachIndex) in _unitForceWalkReasons];
|
|
||||||
} forEach _forceWalkReasons;
|
|
||||||
|
|
||||||
_forceWalkReasonsBooleans set [_forceWalkReasons find _reason, _status];
|
|
||||||
|
|
||||||
private _bitmaskNumber = _forceWalkReasonsBooleans call FUNC(toBitmask);
|
|
||||||
|
|
||||||
_unit setVariable ["ACE_forceWalkStatusNumber", _bitmaskNumber, true];
|
|
||||||
|
|
||||||
// actually apply the forceWalk command globaly
|
|
||||||
[[_unit], QFUNC(applyForceWalkStatus), 2] call FUNC(execRemoteFnc);
|
|
||||||
|
@ -1,54 +1,53 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2 and joko // Jonas
|
* Author: commy2 and CAA-Picard and joko and PabstMirror
|
||||||
* Sets a public variable, but wait a certain amount of time to transfer the value over the network. Changing the value by calling this function again resets the windup timer.
|
* Publish a variable, but wait a certain amount of time before allowing it to be published it again.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Argument:
|
||||||
* 0: Object the variable should be assigned to <OBJECT>
|
* 0: Object the variable should be assigned to <OBJECT>
|
||||||
* 1: Name of the variable <STRING>
|
* 1: Name of the variable <STRING>
|
||||||
* 2: Value of the variable <ANY>
|
* 2: Value of the variable <ANY>
|
||||||
* 3: Windup time <NUMBER> (default: 1)
|
* 3: Embargo delay <NUMBER> (Optional. Default: 1)
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return value:
|
||||||
* None
|
* Nothing.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, "balls", 2, 1] call ace_common_fnc_setVariablePublic;
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
params ["_object", "_varName", "_value", ["_sync", 1]];
|
params ["_object", "_varName", "_value", ["_delay", 1]];
|
||||||
|
TRACE_4("params",_object,_varName,_value,_delay);
|
||||||
|
|
||||||
// set value locally
|
// set value locally
|
||||||
_object setVariable [_varName, _value];
|
_object setVariable [_varName, _value];
|
||||||
|
|
||||||
// Exit if in SP
|
// Exit if in SP - "duh"
|
||||||
if (!isMultiplayer) exitWith {};
|
if (!isMultiplayer) exitWith {};
|
||||||
|
|
||||||
private _idName = format ["ACE_setVariablePublic_%1", _varName];
|
// If we are on embargo, exit
|
||||||
|
if (_object isEqualTo (_object getVariable [format ["ACE_onEmbargo_%1", _varName], objNull])) exitWith {};
|
||||||
|
|
||||||
if (_idName in GVAR(setVariableNames)) exitWith {};
|
// Publish Now and set last update time:
|
||||||
|
_object setVariable [_varName, _value, true];
|
||||||
|
_object setVariable [format ["ACE_onEmbargo_%1", _varName], _object];
|
||||||
|
|
||||||
private _syncTime = ACE_diagTime + _sync;
|
TRACE_2("Starting Embargo", _varName, _delay);
|
||||||
|
|
||||||
GVAR(setVariableNames) pushBack _idName;
|
[{
|
||||||
|
params ["_object", "_varName", "_value"];
|
||||||
|
if (isNull _object) exitWith {TRACE_1("objNull",_this);};
|
||||||
|
|
||||||
GVAR(setVariablePublicArray) pushBack [_object, _varName, _syncTime, _idName];
|
_object setVariable [format ["ACE_onEmbargo_%1", _varName], nil]; //Remove Embargo
|
||||||
|
private _curValue = _object getVariable _varName;
|
||||||
|
|
||||||
if (isNil QGVAR(setVariablePublicPFH)) exitWith {};
|
TRACE_4("End of embargo", _object, _varName, _value, _curValue);
|
||||||
|
|
||||||
GVAR(setVariablePublicPFH) = [{
|
//If value at start of embargo doesn't equal current, then broadcast and start new embargo
|
||||||
{
|
if (!(_value isEqualTo _curValue)) then {
|
||||||
_x params ["_object", "_varName", "_syncTime", "_idName"];
|
_this call FUNC(setVariablePublic);
|
||||||
if (ACE_diagTime > _syncTime) then {
|
|
||||||
// set value public
|
|
||||||
_object setVariable [_varName, _object getVariable _varName, true];
|
|
||||||
GVAR(setVariablePublicArray) deleteAt (GVAR(setVariablePublicArray) find _x);
|
|
||||||
GVAR(setVariableNames) deleteAt (GVAR(setVariableNames) find _x);
|
|
||||||
};
|
};
|
||||||
nil
|
}, _this, _delay] call FUNC(waitAndExecute);
|
||||||
} count +GVAR(setVariablePublicArray);
|
|
||||||
|
|
||||||
if (GVAR(setVariablePublicArray) isEqualTo []) then {
|
|
||||||
[GVAR(setVariablePublicPFH)] call CBA_fnc_removePerFrameHandler;
|
|
||||||
GVAR(setVariablePublicPFH) = nil;
|
|
||||||
};
|
|
||||||
}, 0, []] call CBA_fnc_addPerFrameHandler;
|
|
||||||
|
37
addons/common/functions/fnc_statusEffect_addType.sqf
Normal file
37
addons/common/functions/fnc_statusEffect_addType.sqf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Adds a status effect that will be handled.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Status Effect Name, this should match a corisponding event name <STRING>
|
||||||
|
* 1: Send event globaly <BOOL>
|
||||||
|
* 2: Common Effect Reaons to pre-seed durring init <ARRAY>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ["setCaptive", true, []] call ace_common_fnc_statusEffect_addType
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params [["_name", "", [""]], ["_isGlobal", false, [false]], ["_commonReasonsArray", [], [[]]]];
|
||||||
|
TRACE_3("params",_name,_isGlobal,_commonReasonsArray);
|
||||||
|
|
||||||
|
if (_name == "") exitWith {ACE_LOGERROR_1("addStatusEffect - Bad Name %1", _this)};
|
||||||
|
if (_name in GVAR(statusEffect_Names)) exitWith {ACE_LOGWARNING_1("addStatusEffect - Effect Already Added (note, will not update global bit) %1", _this)};
|
||||||
|
|
||||||
|
GVAR(statusEffect_Names) pushBack _name;
|
||||||
|
GVAR(statusEffect_isGlobal) pushBack _isGlobal;
|
||||||
|
|
||||||
|
//We add reasons at any time, but more efficenet to add all common ones at one time during init
|
||||||
|
if (isServer && {!(_commonReasonsArray isEqualTo [])}) then {
|
||||||
|
//Switch case to lower:
|
||||||
|
{
|
||||||
|
_commonReasonsArray set [_forEachIndex, toLower _x];
|
||||||
|
} forEach _commonReasonsArray;
|
||||||
|
missionNamespace setVariable [(format [QGVAR(statusEffects_%1), _name]), _commonReasonsArray, true];
|
||||||
|
};
|
63
addons/common/functions/fnc_statusEffect_get.sqf
Normal file
63
addons/common/functions/fnc_statusEffect_get.sqf
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Retrives list of current status effects
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: vehicle that it will be attached to (player or vehicle) <OBJECT>
|
||||||
|
* 1: Effect Name <STRING>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Effect status <ARRAY>
|
||||||
|
* 0: is activly set (if false, the effect is ignored and never modified) <BOOL>
|
||||||
|
* 1: reasons why it is set true (list of strings, count of 0 = false, 1+ = true) <ARRAY>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, "forceWalk"] call ace_common_fnc_statusEffect_get
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params [["_object", objNull, [objNull]], ["_effectName", "", [""]]];
|
||||||
|
TRACE_2("params",_object,_effectName);
|
||||||
|
|
||||||
|
if (isNull _object) exitWith {
|
||||||
|
TRACE_1("null",_object);
|
||||||
|
[false, []]
|
||||||
|
};
|
||||||
|
|
||||||
|
[_object, false] call FUNC(statusEffect_resetVariables); //Check for mismatch
|
||||||
|
|
||||||
|
//List of reasons
|
||||||
|
private _statusReasons = missionNamespace getVariable [(format [QGVAR(statusEffects_%1), _effectName]), []];
|
||||||
|
if (_statusReasons isEqualTo []) exitWith {
|
||||||
|
TRACE_1("no reasons - bad effect?",_statusReasons);
|
||||||
|
[false, []]
|
||||||
|
};
|
||||||
|
|
||||||
|
//Get Effect Number
|
||||||
|
private _effectVarName = format [QGVAR(effect_%1), _effectName];
|
||||||
|
private _effectNumber = _object getVariable [_effectVarName, -1];
|
||||||
|
TRACE_2("current",_effectVarName,_effectNumber);
|
||||||
|
|
||||||
|
if (_effectNumber == -1) exitWith { //Nil array - no effect
|
||||||
|
[false, []]
|
||||||
|
};
|
||||||
|
if (_effectNumber == 0) exitWith { //empty array - false effect
|
||||||
|
[true, []]
|
||||||
|
};
|
||||||
|
|
||||||
|
//if no change: skip sending publicVar and events
|
||||||
|
private _effectBoolArray = [_effectNumber, count _statusReasons] call FUNC(binarizeNumber);
|
||||||
|
TRACE_2("bitArray",_statusIndex,_effectBoolArray);
|
||||||
|
|
||||||
|
private _activeEffects = [];
|
||||||
|
{
|
||||||
|
if (_x) then {
|
||||||
|
_activeEffects pushBack (_statusReasons select _forEachIndex);
|
||||||
|
};
|
||||||
|
} forEach _effectBoolArray;
|
||||||
|
|
||||||
|
//non-empty array - true effect
|
||||||
|
[true, _activeEffects]
|
36
addons/common/functions/fnc_statusEffect_localEH.sqf
Normal file
36
addons/common/functions/fnc_statusEffect_localEH.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Handles locality switch, runs a respawn check and then reapplies all effect events.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: vehicle that it will be attached to (player or vehicle) <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, true] call ace_common_fnc_statusEffect_localEH
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_object", "_isLocal"];
|
||||||
|
TRACE_2("params",_object,_isLocal);
|
||||||
|
|
||||||
|
//Only run this after the settings are initialized
|
||||||
|
//Need to wait for all EH to be installed (local event will happen between pre and post init)
|
||||||
|
if !(GVAR(settingsInitFinished)) exitWith {
|
||||||
|
TRACE_1("pushing to runAtSettingsInitialized", _this);
|
||||||
|
GVAR(runAtSettingsInitialized) pushBack [FUNC(statusEffect_localEH), _this];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!_isLocal) exitWith {TRACE_1("object no longer local", _this)};
|
||||||
|
if (isNull _object) exitWith {TRACE_1("object null", _this)};
|
||||||
|
|
||||||
|
//Reset any variables because of respawn
|
||||||
|
[_object, false] call FUNC(statusEffect_resetVariables);
|
||||||
|
|
||||||
|
//Send all Variables to client
|
||||||
|
[_object, ""] call FUNC(statusEffect_sendEffects);
|
45
addons/common/functions/fnc_statusEffect_resetVariables.sqf
Normal file
45
addons/common/functions/fnc_statusEffect_resetVariables.sqf
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Resets all effect numbers to 0 when an object respawns (but does not apply the effect event).
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: vehicle that it will be attached to (player or vehicle) <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, true] call ace_common_fnc_statusEffect_resetVariables
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params [["_object", objNull, [objNull]], ["_setObjectRef", false, [false]]];
|
||||||
|
TRACE_2("params",_object,_setObjectRef);
|
||||||
|
|
||||||
|
if (isNull _object) exitWith {};
|
||||||
|
|
||||||
|
private _objectRef = _object getVariable QGVAR(statusEffect_object);
|
||||||
|
TRACE_2("testing",_object,_objectRef);
|
||||||
|
|
||||||
|
// If nothing was ever set, or objects match, exit (always true unless respawned)
|
||||||
|
if (isNil "_objectRef") exitWith {
|
||||||
|
if (_setObjectRef) then {
|
||||||
|
_object setVariable [QGVAR(statusEffect_object), _object, true]; //explicitly set new object ref
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if (_object == _objectRef) exitWith {};
|
||||||
|
|
||||||
|
//Mismatch, so if effect has ever been defined, reset to 0
|
||||||
|
{
|
||||||
|
private _effectVarName = format [QGVAR(effect_%1), _x];
|
||||||
|
private _effectNumber = _object getVariable [_effectVarName, -1];
|
||||||
|
if (_effectNumber != -1) then {
|
||||||
|
TRACE_2("forced reset defined array on object mismatch",_x,_effectNumber);
|
||||||
|
_object setVariable [_effectVarName, 0, true]; //This always resets to 0 (not -1/nil)!
|
||||||
|
};
|
||||||
|
} forEach GVAR(statusEffect_Names);
|
||||||
|
|
||||||
|
_object setVariable [QGVAR(statusEffect_object), _object, true];
|
36
addons/common/functions/fnc_statusEffect_respawnEH.sqf
Normal file
36
addons/common/functions/fnc_statusEffect_respawnEH.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Handles the Respawn Event Handler to reset effects.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: vehicle that it will be attached to (player or vehicle) <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, objNull] call ace_common_fnc_statusEffect_respawnEH
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params ["_object"];
|
||||||
|
TRACE_1("params",_object);
|
||||||
|
|
||||||
|
//Only run this after the settings are initialized
|
||||||
|
//Need to wait for all EH to be installed (local event will happen between pre and post init)
|
||||||
|
if !(GVAR(settingsInitFinished)) exitWith {
|
||||||
|
TRACE_1("pushing to runAtSettingsInitialized", _this);
|
||||||
|
GVAR(runAtSettingsInitialized) pushBack [FUNC(statusEffect_respawnEH), _this];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!local _object) exitWith {TRACE_1("object no longer local", _this)};
|
||||||
|
if (isNull _object) exitWith {TRACE_1("object null", _this)};
|
||||||
|
|
||||||
|
//Reset any variables on "real" respawn
|
||||||
|
[_object, false] call FUNC(statusEffect_resetVariables);
|
||||||
|
|
||||||
|
//Send all Variables to client
|
||||||
|
[_object, ""] call FUNC(statusEffect_sendEffects);
|
48
addons/common/functions/fnc_statusEffect_sendEffects.sqf
Normal file
48
addons/common/functions/fnc_statusEffect_sendEffects.sqf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Sends all status effects for an object (can be run on non-local objects)
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Object <OBJECT>
|
||||||
|
* 1: Effect name (or "" or send all) <STRING>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, ""] call ace_common_fnc_statusEffect_sendEffects
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params [["_object", objNull, [objNull]], ["_effectName", "", [""]]];
|
||||||
|
TRACE_2("params",_object,_effectName);
|
||||||
|
|
||||||
|
if (isNull _object) exitWith {};
|
||||||
|
|
||||||
|
{
|
||||||
|
if ((_effectName == "") || {_effectName == _x}) then {
|
||||||
|
private _effectVarName = format [QGVAR(effect_%1), _x];
|
||||||
|
private _effectNumber = _object getVariable [_effectVarName, -1];
|
||||||
|
|
||||||
|
//We only do anything if the effect has been defined at some point in the game for this unit
|
||||||
|
TRACE_2("checking if event is nil",_x,_effectNumber);
|
||||||
|
if (_effectNumber != -1) then {
|
||||||
|
if (GVAR(statusEffect_isGlobal) select _forEachIndex) then {
|
||||||
|
TRACE_2("Sending Global Event", _object, _effectNumber);
|
||||||
|
[_x, [_object, _effectNumber]] call FUNC(globalEvent);
|
||||||
|
} else {
|
||||||
|
if (local _object) then {
|
||||||
|
//If local, send directly to bypass network delay of targetEvent call
|
||||||
|
TRACE_2("Sending Target Local Event", _object, _effectNumber);
|
||||||
|
[_x, [_object, _effectNumber]] call FUNC(localEvent);
|
||||||
|
} else {
|
||||||
|
TRACE_2("Sending Target Non-Local Event", _object, _effectNumber);
|
||||||
|
[_x, [_object], [_object, _effectNumber]] call FUNC(targetEvent);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} forEach GVAR(statusEffect_Names);
|
70
addons/common/functions/fnc_statusEffect_set.sqf
Normal file
70
addons/common/functions/fnc_statusEffect_set.sqf
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Adds or removes an id to a status effect and will send an event to apply.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: vehicle that it will be attached to (player or vehicle) <OBJECT>
|
||||||
|
* 1: Effect Name <STRING>
|
||||||
|
* 2: Unique Reason ID <STRING>
|
||||||
|
* 3: Is Set (true adds/false removes) <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, "setCaptive", "reason1", true] call ace_common_fnc_statusEffect_set
|
||||||
|
*
|
||||||
|
* Public: Yes
|
||||||
|
*/
|
||||||
|
// #define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
params [["_object", objNull, [objNull]], ["_effectName", "", [""]], ["_ID", "", [""]], ["_set", true, [false]]];
|
||||||
|
TRACE_4("params",_object,_effectName,_ID,_set);
|
||||||
|
|
||||||
|
//Only run this after the settings are initialized
|
||||||
|
if !(GVAR(settingsInitFinished)) exitWith {
|
||||||
|
TRACE_1("pushing to runAtSettingsInitialized", _this);
|
||||||
|
GVAR(runAtSettingsInitialized) pushBack [FUNC(statusEffect_set), _this];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (isNull _object) exitWith {TRACE_1("null",_object);};
|
||||||
|
|
||||||
|
[_object, true] call FUNC(statusEffect_resetVariables); //Check for mismatch, and set object ref
|
||||||
|
|
||||||
|
//check ID case and set globaly if not already set:
|
||||||
|
_ID = toLower _ID;
|
||||||
|
private _statusReasons = missionNamespace getVariable [(format [QGVAR(statusEffects_%1), _effectName]), []];
|
||||||
|
private _statusIndex = _statusReasons find _ID;
|
||||||
|
if (_statusIndex == -1) then {
|
||||||
|
TRACE_2("ID not in global reasons, adding",_statusReasons,_ID);
|
||||||
|
_statusIndex = _statusReasons pushBack _ID;
|
||||||
|
missionNamespace setVariable [(format [QGVAR(statusEffects_%1), _effectName]), _statusReasons, true];
|
||||||
|
};
|
||||||
|
|
||||||
|
private _effectVarName = format [QGVAR(effect_%1), _effectName];
|
||||||
|
private _effectNumber = _object getVariable [_effectVarName, -1];
|
||||||
|
TRACE_2("current",_effectVarName,_effectNumber);
|
||||||
|
|
||||||
|
if ((_effectNumber == -1) && {!_set}) exitWith {
|
||||||
|
//Optimization for modules that always set an ID to false even if never set true
|
||||||
|
TRACE_2("Set False on nil array, exiting",_set,_effectNumber);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (_effectNumber == -1) then {_effectNumber = 0}; //reset (-1/nil) to 0
|
||||||
|
|
||||||
|
//if no change: skip sending publicVar and events
|
||||||
|
private _effectBoolArray = [_effectNumber, count _statusReasons] call FUNC(binarizeNumber);
|
||||||
|
TRACE_2("bitArray",_statusIndex,_effectBoolArray);
|
||||||
|
if (_set isEqualTo (_effectBoolArray select _statusIndex)) exitWith {
|
||||||
|
TRACE_2("No Change, exiting",_set,_effectBoolArray select _statusIndex);
|
||||||
|
};
|
||||||
|
|
||||||
|
TRACE_2("Setting to new value",_set,_effectBoolArray select _statusIndex);
|
||||||
|
_effectBoolArray set [_statusIndex, _set];
|
||||||
|
_effectNumber = _effectBoolArray call FUNC(toBitmask); //Convert array back to number
|
||||||
|
|
||||||
|
TRACE_2("Saving globaly",_effectVarName,_effectNumber);
|
||||||
|
_object setVariable [_effectVarName, _effectNumber, true];
|
||||||
|
|
||||||
|
[_object, _effectName] call FUNC(statusEffect_sendEffects);
|
@ -8,6 +8,9 @@
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* Returns true if succesfully unloaded person <BOOL>
|
* Returns true if succesfully unloaded person <BOOL>
|
||||||
*
|
*
|
||||||
|
* Example:
|
||||||
|
* [hurtGuy] call ace_common_fnc_unloadPerson
|
||||||
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
@ -20,14 +23,10 @@ private _vehicle = vehicle _unit;
|
|||||||
|
|
||||||
if (_vehicle == _unit) exitWith {false};
|
if (_vehicle == _unit) exitWith {false};
|
||||||
|
|
||||||
if (speed _vehicle > 1 || getPos _vehicle select 2 > 2) exitWith {false};
|
if (speed _vehicle > 1 || {((getPos _vehicle) select 2) > 2}) exitWith {false};
|
||||||
|
|
||||||
private _emptyPos = (getPos _vehicle) findEmptyPosition [0, 10, typeOf _unit]; // @todo to small?
|
|
||||||
|
|
||||||
if (count _emptyPos == 0) exitWith {false};
|
|
||||||
|
|
||||||
if (!isNull _vehicle) then {
|
if (!isNull _vehicle) then {
|
||||||
[[_unit], QUOTE(FUNC(unloadPersonLocal)), _unit, false] call FUNC(execRemoteFnc);
|
["unloadPersonEvent", [_unit], [_unit, _vehicle]] call EFUNC(common,targetEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
true
|
true
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
* Unload a person from a vehicle, local
|
* Unload a person from a vehicle, local
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: unit <OBJECT>
|
* 0: unit to unload <OBJECT>
|
||||||
|
* 1: Vehicle <OBJECT>
|
||||||
|
* 2: Unloader (player) <OBJECT><OPTIONAL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Returns true if succesfully unloaded person <BOOL>
|
* Returns true if succesfully unloaded person <BOOL>
|
||||||
@ -14,53 +16,22 @@
|
|||||||
|
|
||||||
#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson))
|
#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson))
|
||||||
|
|
||||||
params ["_unit", "_vehicle"];
|
params ["_unit", "_vehicle", ["_unloader", objNull]];
|
||||||
TRACE_2("params",_unit,_vehicle);
|
TRACE_3("params",_unit,_vehicle,_unloader);
|
||||||
|
|
||||||
private _validVehiclestate = true;
|
//This covers testing vehicle stability and finding a safe position
|
||||||
private _emptyPos = [];
|
private _emptyPos = [_vehicle, (typeOf _unit), _unloader] call EFUNC(common,findUnloadPosition);
|
||||||
|
TRACE_1("findUnloadPosition",_emptyPos);
|
||||||
|
|
||||||
if (_vehicle isKindOf "Ship") then {
|
if (count _emptyPos != 3) exitwith {
|
||||||
if (speed _vehicle > 1 || {getPos _vehicle select 2 > 2}) then {
|
ACE_LOGWARNING_4("Could not find unload pos %1-ASL: %2 isTouchingGround: %3 Speed: %4",_vehicle, getPosASL _vehicle, isTouchingGround _vehicle, speed _vehicle);
|
||||||
_validVehiclestate = false;
|
if ((!isNull _unloader) && {[_unloader] call FUNC(isPlayer)}) then {
|
||||||
|
//display text saying there are no safe places to exit the vehicle
|
||||||
|
["displayTextStructured", [_unloader], [localize LSTRING(NoRoomToUnload)]] call FUNC(targetEvent);
|
||||||
};
|
};
|
||||||
|
|
||||||
TRACE_1("SHIP Ground Check",getPos _vehicle);
|
|
||||||
|
|
||||||
_emptyPos = (ASLToAGL getPosASL _vehicle) findEmptyPosition [0, 13, typeOf _unit]; // TODO: if spot is underwater pick another spot.
|
|
||||||
} else {
|
|
||||||
if (_vehicle isKindOf "Air") then {
|
|
||||||
if (speed _vehicle > 1 || {!isTouchingGround _vehicle}) then {
|
|
||||||
_validVehiclestate = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
TRACE_1("Vehicle Ground Check",isTouchingGround _vehicle);
|
|
||||||
|
|
||||||
_emptyPos = ASLToAGL getPosASL _vehicle;
|
|
||||||
_emptyPos = _emptyPos vectorAdd [random 10 - 5, random 10 - 5, 0];
|
|
||||||
} else {
|
|
||||||
if (speed _vehicle > 1 || {getPos _vehicle select 2 > 2}) then {
|
|
||||||
_validVehiclestate = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
TRACE_1("Vehicle Ground Check", isTouchingGround _vehicle);
|
|
||||||
|
|
||||||
_emptyPos = (ASLToAGL getPosASL _vehicle) findEmptyPosition [0, 13, typeOf _unit];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle);
|
|
||||||
|
|
||||||
if !(_validVehiclestate) exitWith {
|
|
||||||
ACE_LOGWARNING_4("Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4",_vehicle,getPos _vehicle,isTouchingGround _vehicle,speed _vehicle);
|
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
if (count _emptyPos == 0) exitWith {
|
|
||||||
ACE_LOGWARNING_1("No safe empty spots to unload patient. %1",_emptyPos);
|
|
||||||
false
|
|
||||||
}; //consider displaying text saying there are no safe places to exit the vehicle
|
|
||||||
|
|
||||||
unassignVehicle _unit;
|
unassignVehicle _unit;
|
||||||
[_unit] orderGetIn false;
|
[_unit] orderGetIn false;
|
||||||
|
|
||||||
@ -87,16 +58,16 @@ _unit action ["Eject", vehicle _unit];
|
|||||||
if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then {
|
if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then {
|
||||||
[_unit, _anim, 2, true] call FUNC(doAnimation);
|
[_unit, _anim, 2, true] call FUNC(doAnimation);
|
||||||
};
|
};
|
||||||
}, [_unit, _anim], 0.5, 0] call FUNC(waitAndExecute);
|
}, [_unit, _anim], 0.5] call FUNC(waitAndExecute);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}, [_unit, _emptyPos], 0.5, 0] call FUNC(waitAndExecute);
|
}, [_unit, _emptyPos], 0.5] call FUNC(waitAndExecute);
|
||||||
|
|
||||||
[_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide);
|
[_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide);
|
||||||
|
|
||||||
private _loaded = _vehicle getVariable [QGVAR(loaded_persons),[]];
|
private _loaded = _vehicle getvariable [QGVAR(loaded_persons),[]];
|
||||||
_loaded deleteAt (_loaded find _unit);
|
_loaded deleteAt (_loaded find _unit);
|
||||||
|
|
||||||
_vehicle setVariable [QGVAR(loaded_persons), _loaded, true];
|
_vehicle setvariable [QGVAR(loaded_persons), _loaded, true];
|
||||||
|
|
||||||
true
|
true
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
// #define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
// #define CBA_DEBUG_SYNCHRONOUS
|
||||||
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_COMMON
|
#ifdef DEBUG_ENABLED_COMMON
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
|
@ -418,7 +418,7 @@
|
|||||||
<Russian>Цвет фона всплывающих подсказок АСЕ.</Russian>
|
<Russian>Цвет фона всплывающих подсказок АСЕ.</Russian>
|
||||||
<Polish>Kolor tła dla powiadomień ACE</Polish>
|
<Polish>Kolor tła dla powiadomień ACE</Polish>
|
||||||
<French>Notification ACE: couleur de l'arrière plan</French>
|
<French>Notification ACE: couleur de l'arrière plan</French>
|
||||||
<Czech>Barva pozadí ACE nápověd.</Czech>
|
<Czech>Barva pozadí ACE nápovědy.</Czech>
|
||||||
<Hungarian>Az ACE-súgók hátterének színe.</Hungarian>
|
<Hungarian>Az ACE-súgók hátterének színe.</Hungarian>
|
||||||
<Portuguese>A cor de fundo das hints do ACE.</Portuguese>
|
<Portuguese>A cor de fundo das hints do ACE.</Portuguese>
|
||||||
</Key>
|
</Key>
|
||||||
@ -430,7 +430,7 @@
|
|||||||
<Russian>Цвет шрифта всплывающих подсказок</Russian>
|
<Russian>Цвет шрифта всплывающих подсказок</Russian>
|
||||||
<Polish>Kolor tekstu powiadomień</Polish>
|
<Polish>Kolor tekstu powiadomień</Polish>
|
||||||
<French>Notification: couleur du texte</French>
|
<French>Notification: couleur du texte</French>
|
||||||
<Czech>Barva fontu nápověd.</Czech>
|
<Czech>Barva fontu nápovědy.</Czech>
|
||||||
<Hungarian>Súgószöveg betűinek színe</Hungarian>
|
<Hungarian>Súgószöveg betűinek színe</Hungarian>
|
||||||
<Portuguese>Cor do do texto da hint</Portuguese>
|
<Portuguese>Cor do do texto da hint</Portuguese>
|
||||||
</Key>
|
</Key>
|
||||||
@ -475,7 +475,7 @@
|
|||||||
<Polish>Sprawdzaj PBO</Polish>
|
<Polish>Sprawdzaj PBO</Polish>
|
||||||
<Spanish>Comprobar PBOs</Spanish>
|
<Spanish>Comprobar PBOs</Spanish>
|
||||||
<German>Überprüfe PBOs</German>
|
<German>Überprüfe PBOs</German>
|
||||||
<Czech>Zkontrolovat PBO</Czech>
|
<Czech>Zkontrolovat soubory PBO</Czech>
|
||||||
<Portuguese>Verificar PBOs</Portuguese>
|
<Portuguese>Verificar PBOs</Portuguese>
|
||||||
<French>Vérifier les PBOs</French>
|
<French>Vérifier les PBOs</French>
|
||||||
<Hungarian>PBO-k ellenőrzése</Hungarian>
|
<Hungarian>PBO-k ellenőrzése</Hungarian>
|
||||||
@ -658,7 +658,7 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_Enabled">
|
<Key ID="STR_ACE_Common_Enabled">
|
||||||
<English>Enabled</English>
|
<English>Enabled</English>
|
||||||
<Czech>Zapnuto</Czech>
|
<Czech>Povoleno</Czech>
|
||||||
<French>Oui</French>
|
<French>Oui</French>
|
||||||
<German>Aktiviert</German>
|
<German>Aktiviert</German>
|
||||||
<Italian>Attivato</Italian>
|
<Italian>Attivato</Italian>
|
||||||
@ -762,5 +762,8 @@
|
|||||||
<Czech>ACE3 Vozidla</Czech>
|
<Czech>ACE3 Vozidla</Czech>
|
||||||
<Spanish>ACE3 Vehículos</Spanish>
|
<Spanish>ACE3 Vehículos</Spanish>
|
||||||
</Key>
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Common_NoRoomToUnload">
|
||||||
|
<English>No Room to unload</English>
|
||||||
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -2,6 +2,9 @@
|
|||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
// #define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
// #define CBA_DEBUG_SYNCHRONOUS
|
||||||
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_CONCERTINA_WIRE
|
#ifdef DEBUG_ENABLED_CONCERTINA_WIRE
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="concertina_wire">
|
<Package name="concertina_wire">
|
||||||
<Key ID="STR_ACE_CONCERTINA_WIRE">
|
<Key ID="STR_ACE_CONCERTINA_WIRE">
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<Polish>Zwój koncentriny</Polish>
|
<Polish>Zwój koncentriny</Polish>
|
||||||
<Spanish>Bobina de alambre de espino</Spanish>
|
<Spanish>Bobina de alambre de espino</Spanish>
|
||||||
<French>Bobine de fil barbelé</French>
|
<French>Bobine de fil barbelé</French>
|
||||||
<Czech>Smyčka ostnatého drátu</Czech>
|
<Czech>Svitek ostnatého drátu</Czech>
|
||||||
<Italian>Concertina wire coil</Italian>
|
<Italian>Concertina wire coil</Italian>
|
||||||
<Hungarian>Concertina wire coil</Hungarian>
|
<Hungarian>Concertina wire coil</Hungarian>
|
||||||
<Portuguese>Bobina de arame farpado</Portuguese>
|
<Portuguese>Bobina de arame farpado</Portuguese>
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT dagr
|
#define COMPONENT dagr
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_DAGR
|
#ifdef DEBUG_ENABLED_DAGR
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT difficulties
|
#define COMPONENT difficulties
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_DIFFICULTIES
|
#ifdef DEBUG_ENABLED_DIFFICULTIES
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
#define COMPONENT disarming
|
#define COMPONENT disarming
|
||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#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_DISARMING
|
#ifdef DEBUG_ENABLED_DISARMING
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
#include "\z\ace\addons\main\script_mod.hpp"
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
// #define DEBUG_MODE_FULL
|
// #define DEBUG_MODE_FULL
|
||||||
|
// #define DISABLE_COMPILE_CACHE
|
||||||
|
// #define CBA_DEBUG_SYNCHRONOUS
|
||||||
|
// #define ENABLE_PERFORMANCE_COUNTERS
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED_ATTACH
|
#ifdef DEBUG_ENABLED_ATTACH
|
||||||
#define DEBUG_MODE_FULL
|
#define DEBUG_MODE_FULL
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Disposable">
|
<Package name="Disposable">
|
||||||
<Key ID="STR_ACE_Disposable_UsedTube">
|
<Key ID="STR_ACE_Disposable_UsedTube">
|
||||||
@ -29,7 +29,7 @@
|
|||||||
<English>Preloaded Missile Dummy</English>
|
<English>Preloaded Missile Dummy</English>
|
||||||
<German>Vorgeladene Racketennachbildung</German>
|
<German>Vorgeladene Racketennachbildung</German>
|
||||||
<French>Missile préchargé</French>
|
<French>Missile préchargé</French>
|
||||||
<Czech>Přednabitá dummy střela</Czech>
|
<Czech>Přednabitá maketa rakety</Czech>
|
||||||
<Polish>Wstępnie załadowana atrapa pocisku</Polish>
|
<Polish>Wstępnie załadowana atrapa pocisku</Polish>
|
||||||
<Spanish>Precargado misil inerte</Spanish>
|
<Spanish>Precargado misil inerte</Spanish>
|
||||||
<Hungarian>Előtöltött műrakéta</Hungarian>
|
<Hungarian>Előtöltött műrakéta</Hungarian>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2
|
* Author: commy2
|
||||||
*
|
|
||||||
* Check if unit can carry the object. Doesn't check weight.
|
* Check if unit can carry the object. Doesn't check weight.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
@ -10,6 +9,9 @@
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* Can the unit carry the object? <BOOL>
|
* Can the unit carry the object? <BOOL>
|
||||||
*
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, cursorTarget] call ace_dragging_fnc_canCarry;
|
||||||
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
@ -18,6 +20,10 @@ params ["_unit", "_target"];
|
|||||||
|
|
||||||
if !([_unit, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
if !([_unit, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||||
|
|
||||||
|
//#2644 - Units with injured legs cannot bear the extra weight of carrying an object
|
||||||
|
//The fireman carry animation does not slow down for injured legs, so you could carry and run
|
||||||
|
if ((_unit getHitPointDamage "HitLegs") >= 0.5) exitWith {false};
|
||||||
|
|
||||||
// a static weapon has to be empty for dragging (ignore UAV AI)
|
// a static weapon has to be empty for dragging (ignore UAV AI)
|
||||||
if (((typeOf _target) isKindOf "StaticWeapon") && {{(getText (configFile >> "CfgVehicles" >> (typeOf _x) >> "simulation")) != "UAVPilot"} count crew _target > 0}) exitWith {false};
|
if (((typeOf _target) isKindOf "StaticWeapon") && {{(getText (configFile >> "CfgVehicles" >> (typeOf _x) >> "simulation")) != "UAVPilot"} count crew _target > 0}) exitWith {false};
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2
|
* Author: commy2
|
||||||
*
|
|
||||||
* Check if unit can drag the object. Doesn't check weight.
|
* Check if unit can drag the object. Doesn't check weight.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
@ -10,14 +9,14 @@
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* Can the unit drag the object? <BOOL>
|
* Can the unit drag the object? <BOOL>
|
||||||
*
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, cursorTarget] call ace_dragging_fnc_canDrag;
|
||||||
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_unit", "_target"];
|
params ["_unit", "_target"];
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
_target = _this select 1;
|
|
||||||
|
|
||||||
if !([_unit, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
if !([_unit, _target, []] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2
|
* Author: commy2
|
||||||
*
|
|
||||||
* Check if unit can drop the object.
|
* Check if unit can drop the object.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
@ -10,6 +9,9 @@
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* Can the unit drop the object? <BOOL>
|
* Can the unit drop the object? <BOOL>
|
||||||
*
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, cursorTarget] call ace_dragging_fnc_canDrop;
|
||||||
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Author: commy2
|
* Author: commy2
|
||||||
*
|
|
||||||
* Check if unit can drop the carried object.
|
* Check if unit can drop the carried object.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
@ -10,6 +9,9 @@
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* Can the unit drop the object? <BOOL>
|
* Can the unit drop the object? <BOOL>
|
||||||
*
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, cursorTarget] call ace_dragging_fnc_canDrop_carry;
|
||||||
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user