mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into slideshow
This commit is contained in:
commit
a136545b85
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@ texHeaders.bin
|
||||
*.swp
|
||||
*.swo
|
||||
*.biprivatekey
|
||||
Thumbs.db
|
||||
|
BIN
ace_parse_imagepath.dll
Normal file
BIN
ace_parse_imagepath.dll
Normal file
Binary file not shown.
@ -31,6 +31,7 @@
|
||||
<Spanish>Balística avanzada</Spanish>
|
||||
<German>Erweiterte Ballistik</German>
|
||||
<Czech>Pokročilá balistika</Czech>
|
||||
<Portuguese>Balística avançada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
|
||||
<English>Advanced Ballistics</English>
|
||||
@ -38,6 +39,7 @@
|
||||
<Spanish>Balística avanzada</Spanish>
|
||||
<German>Erweiterte Ballistik</German>
|
||||
<Czech>Pokročilá balistika</Czech>
|
||||
<Portuguese>Balística avançada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
|
||||
<English>Enables advanced ballistics</English>
|
||||
@ -45,6 +47,7 @@
|
||||
<Spanish>Activa la balística avanzada</Spanish>
|
||||
<German>Aktiviert die erweiterte Ballistik</German>
|
||||
<Czech>Aktivuje pokročilou balistiku</Czech>
|
||||
<Portuguese>Ativa balística avançada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
|
||||
<English>Enabled For Snipers</English>
|
||||
@ -52,6 +55,7 @@
|
||||
<Polish>Akt. dla snajperów</Polish>
|
||||
<German>Für Scharfschützen aktiviert</German>
|
||||
<Czech>Povoleno pro odstřelovače</Czech>
|
||||
<Portuguese>Ativar para caçadores</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
|
||||
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
|
||||
@ -59,6 +63,7 @@
|
||||
<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>
|
||||
<Czech>Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku)</Czech>
|
||||
<Portuguese>Ativa balística avançada para caçadores não locais (quando usando miras telescópicas)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
|
||||
<English>Enabled For Group Members</English>
|
||||
@ -66,6 +71,7 @@
|
||||
<Polish>Akt. dla czł. grupy</Polish>
|
||||
<German>Für Gruppenmitglieder aktiviert</German>
|
||||
<Czech>Povoleno pro členy skupiny</Czech>
|
||||
<Portuguese>Ativada para membros do grupo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
|
||||
<English>Enables advanced ballistics for non local group members</English>
|
||||
@ -73,6 +79,7 @@
|
||||
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy</Polish>
|
||||
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
|
||||
<Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech>
|
||||
<Portuguese>Ativa balística avançada para membros de grupo não locais</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
|
||||
<English>Enabled For Everyone</English>
|
||||
@ -80,6 +87,7 @@
|
||||
<Polish>Akt. dla wszystkich</Polish>
|
||||
<German>Für jeden aktiviert</German>
|
||||
<Czech>Povoleno pro všechny</Czech>
|
||||
<Portuguese>Ativada para todos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_Description">
|
||||
<English>Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)</English>
|
||||
@ -87,6 +95,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
|
||||
<English>Always Enabled For Group Members</English>
|
||||
@ -94,6 +103,7 @@
|
||||
<Spanish>Siempre activada para miembros de grupo</Spanish>
|
||||
<German>Für Gruppenmitglieder immer aktiviert</German>
|
||||
<Czech>Vždy povoleno pro členy skupiny</Czech>
|
||||
<Portuguese>Sempre ativada para membros do grupo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
|
||||
<English>Always enables advanced ballistics when a group member fires</English>
|
||||
@ -101,6 +111,7 @@
|
||||
<Spanish>Activada la balística avanzada siempre cuando miembros de grupo disparan</Spanish>
|
||||
<German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German>
|
||||
<Czech>Aktivuje pokročilou balistiku pro členy skupiny</Czech>
|
||||
<Portuguese>Sempre ative balística avançada quando um membro do grupo disparar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
|
||||
<English>Disabled In FullAuto Mode</English>
|
||||
@ -108,6 +119,7 @@
|
||||
<Spanish>Desactivada en modo automático</Spanish>
|
||||
<German>Beim vollautomatischen Feuern deaktiviert</German>
|
||||
<Czech>Zakázáno v automatickém režimu střelby</Czech>
|
||||
<Portuguese>Desabilitar no modo automático</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
|
||||
<English>Disables the advanced ballistics during full auto fire</English>
|
||||
@ -115,6 +127,7 @@
|
||||
<Spanish>Desactivada la balística avanzada durante el fuego automático</Spanish>
|
||||
<German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German>
|
||||
<Czech>Zákáže pokročilou balistiku během střelby v režimu automat</Czech>
|
||||
<Portuguese>Desabilitar a balística avançada durante fogo automático</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
|
||||
<English>Enable Ammo Temperature Simulation</English>
|
||||
@ -122,6 +135,7 @@
|
||||
<Spanish>Activar simulación de temperatura de munición</Spanish>
|
||||
<German>Simulation der Munitionstemperatur aktivieren</German>
|
||||
<Czech>Povolit simulaci teploty munice</Czech>
|
||||
<Portuguese>Ativar simulação de temperatura de munição</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
|
||||
<English>Muzzle velocity varies with ammo temperature</English>
|
||||
@ -129,6 +143,7 @@
|
||||
<Spanish>La velocidad de salida varía con la temperatura de la munición</Spanish>
|
||||
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
|
||||
<Czech>Úsťová rychlost je závislá na teplotě munice</Czech>
|
||||
<Portuguese>A velocidade de saída varia com a temperatura da munição</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
|
||||
<English>Enable Barrel Length Simulation</English>
|
||||
@ -136,6 +151,7 @@
|
||||
<Spanish>Habilitar la simulación de longitud del cañón</Spanish>
|
||||
<German>Simulation der Lauflänge aktivieren</German>
|
||||
<Czech>Povolit simulaci délky hlavně</Czech>
|
||||
<Portuguese>Ativar a simulação de comprimento do cano</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
|
||||
<English>Muzzle velocity varies with barrel length</English>
|
||||
@ -143,6 +159,7 @@
|
||||
<Spanish>La velocidad de salidal varía con la longitud del cañón</Spanish>
|
||||
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
|
||||
<Czech>Úsťová rychlost je závislá na délce hlavně</Czech>
|
||||
<Portuguese>A velocidade de saída caria com o comprimento do cano</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
|
||||
<English>Enable Bullet Trace Effect</English>
|
||||
@ -150,6 +167,7 @@
|
||||
<Spanish>Activar el efecto trazador de la bala</Spanish>
|
||||
<German>Geschossspureffekt aktivieren</German>
|
||||
<Czech>Povolit efekt trasírek</Czech>
|
||||
<Portuguese>Ativa efeito traçante de projétil</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
|
||||
<English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
|
||||
@ -157,6 +175,7 @@
|
||||
<Spanish>Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica)</Spanish>
|
||||
<German>Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)</German>
|
||||
<Czech>Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku)</Czech>
|
||||
<Portuguese>Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
|
||||
<English>Simulation Interval</English>
|
||||
@ -164,6 +183,7 @@
|
||||
<Spanish>Intervalo de simulación</Spanish>
|
||||
<German>Simulationsintervall</German>
|
||||
<Czech>Interval simulace</Czech>
|
||||
<Portuguese>Intervalo da simulação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
|
||||
<English>Defines the interval between every calculation step</English>
|
||||
@ -171,6 +191,7 @@
|
||||
<Spanish>Define el intervalo entre cada cálculo</Spanish>
|
||||
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
|
||||
<Czech>Určuje interval mezi každým výpočtem</Czech>
|
||||
<Portuguese>Define o intervalo entre cada cálculo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
|
||||
<English>Simulation Radius</English>
|
||||
@ -178,6 +199,7 @@
|
||||
<Spanish>Radio de simulación</Spanish>
|
||||
<German>Simulationsradius</German>
|
||||
<Czech>Rozsah simulace</Czech>
|
||||
<Portuguese>Raio de simulação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description">
|
||||
<English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
|
||||
@ -185,11 +207,12 @@
|
||||
<Spanish>Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles</Spanish>
|
||||
<German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German>
|
||||
<Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech>
|
||||
<Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
|
||||
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
|
||||
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -1,8 +1,7 @@
|
||||
ace_lockbackpacks
|
||||
ace_backpacks
|
||||
=================
|
||||
|
||||
Introduces the ability to lock one's backpack.
|
||||
|
||||
Adds indication when someone else opens your backpack (soundeffect / camShake).
|
||||
|
||||
## Maintainers
|
||||
|
||||
|
@ -1598,6 +1598,7 @@
|
||||
<Spanish>[ACE] Caja de suministros de munición</Spanish>
|
||||
<German>[ACE] Munitionskiste</German>
|
||||
<Czech>[ACE] Bedna s municí</Czech>
|
||||
<Portuguese>[ACE] Caixa com suprimentos de munição</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -163,6 +163,7 @@
|
||||
<Spanish>Hacer que la unidad se rinda</Spanish>
|
||||
<German>Einheit kapitulieren lassen</German>
|
||||
<Czech>Vzdávající se jednotka</Czech>
|
||||
<Portuguese>Fazer unidade se render</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSurrender_Description">
|
||||
<English>Sync a unit to make them surrender.<br />Source: ace_captives</English>
|
||||
@ -170,42 +171,49 @@
|
||||
<Spanish>Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives</Spanish>
|
||||
<German>Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives</German>
|
||||
<Czech>Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives</Czech>
|
||||
<Portuguese>Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
|
||||
<English>Captives Settings</English>
|
||||
<Polish>Ustawienia więźniów</Polish>
|
||||
<Spanish>Ajustes de prisioneros</Spanish>
|
||||
<Czech>Nastavení zajatce</Czech>
|
||||
<Portuguese>Ajustes de prisioneiros</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_Description">
|
||||
<English>Controls settings for surrender and cable ties</English>
|
||||
<Polish>Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych</Polish>
|
||||
<Spanish>Ajustes de control para rendición y precintos</Spanish>
|
||||
<Czech>Toto kontroluje nastavení kapitulace a pout</Czech>
|
||||
<Portuguese>Controla as configurações de rendição e abraçadeiras</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name">
|
||||
<English>Can handcuff own side</English>
|
||||
<Polish>Skuwanie sojuszników</Polish>
|
||||
<Spanish>Se puede esposar el bando propio</Spanish>
|
||||
<Czech>Může spoutat spolubojovníky</Czech>
|
||||
<Portuguese>Pode algemar o próprio lado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_description">
|
||||
<English>Can players cabletie units on their own side</English>
|
||||
<Polish>Czy gracze mogą skuwać sojuszników?</Polish>
|
||||
<Spanish>Pueden los jugadores esposar unidades en su propio bando</Spanish>
|
||||
<Czech>Mohou hráči spoutat jednotky na své straně</Czech>
|
||||
<Portuguese>Os jogadores podem algemar unidades do seu lado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name">
|
||||
<English>Allow surrendering</English>
|
||||
<Polish>Pozwól kapitulować</Polish>
|
||||
<Spanish>Permitir rendición</Spanish>
|
||||
<Czech>Povolit vzdávání</Czech>
|
||||
<Portuguese>Permite rendição</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_description">
|
||||
<English>Players can surrender after holstering their weapon</English>
|
||||
<Polish>Gracze mogą skapitulować po schowaniu swojej broni do kabury</Polish>
|
||||
<Spanish>Los jugadores pueden rendirse después de enfundar su arma</Spanish>
|
||||
<Czech>Hráč se může vzdát poté, co si skryje zbraň</Czech>
|
||||
<Portuguese>Jogadores podem se render depois de guardar sua arma</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -6,7 +6,7 @@
|
||||
//Singe PFEH to handle execNextFrame and waitAndExec:
|
||||
[{
|
||||
private ["_entry"];
|
||||
|
||||
|
||||
//Handle the waitAndExec array:
|
||||
while {((count GVAR(waitAndExecArray)) > 0) && {((GVAR(waitAndExecArray) select 0) select 0) <= ACE_Time}} do {
|
||||
_entry = GVAR(waitAndExecArray) deleteAt 0;
|
||||
@ -56,6 +56,10 @@
|
||||
["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler);
|
||||
["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler);
|
||||
|
||||
if (isServer) then {
|
||||
["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler);
|
||||
};
|
||||
|
||||
// hack to get PFH to work in briefing
|
||||
[QGVAR(onBriefingPFH), "onEachFrame", {
|
||||
if (ACE_time > 0) exitWith {
|
||||
|
@ -102,6 +102,7 @@ PREP(goKneeling);
|
||||
PREP(hadamardProduct);
|
||||
PREP(hasItem);
|
||||
PREP(hasMagazine);
|
||||
PREP(hideUnit);
|
||||
PREP(inheritsFrom);
|
||||
PREP(insertionSort);
|
||||
PREP(interpolateFromArray);
|
||||
@ -179,6 +180,7 @@ PREP(toBin);
|
||||
PREP(toBitmask);
|
||||
PREP(toHex);
|
||||
PREP(toNumber);
|
||||
PREP(unhideUnit);
|
||||
PREP(uniqueElementsOnly);
|
||||
PREP(unloadPerson);
|
||||
PREP(unloadPersonLocal);
|
||||
|
@ -56,20 +56,23 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
|
||||
} forEach getArray (configFile >> "ACE_Extensions" >> "extensions");
|
||||
|
||||
///////////////
|
||||
// check server version
|
||||
// check server version/addons
|
||||
///////////////
|
||||
if (isMultiplayer) then {
|
||||
if (isServer) then {
|
||||
// send servers version of ACE to all clients
|
||||
GVAR(ServerVersion) = _version;
|
||||
GVAR(ServerAddons) = _addons;
|
||||
publicVariable QGVAR(ServerVersion);
|
||||
publicVariable QGVAR(ServerAddons);
|
||||
} else {
|
||||
// clients have to wait for the variable
|
||||
// clients have to wait for the variables
|
||||
[{
|
||||
if (isNil QGVAR(ServerVersion)) exitWith {};
|
||||
if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith {};
|
||||
|
||||
private "_version";
|
||||
_version = _this select 0;
|
||||
private ["_version","_addons"];
|
||||
_version = (_this select 0) select 0;
|
||||
_addons = (_this select 0) select 1;
|
||||
|
||||
if (_version != GVAR(ServerVersion)) then {
|
||||
private "_errorMsg";
|
||||
@ -82,7 +85,18 @@ if (isMultiplayer) then {
|
||||
};
|
||||
};
|
||||
|
||||
_addons = _addons - GVAR(ServerAddons);
|
||||
if !(_addons isEqualTo []) then {
|
||||
_errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons];
|
||||
|
||||
diag_log text format ["[ACE] ERROR: %1", _errorMsg];
|
||||
|
||||
if (hasInterface) then {diag_log str "1";
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
};
|
||||
};
|
||||
|
||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||
}, 1, _version] call CBA_fnc_addPerFrameHandler;
|
||||
}, 1, [_version,_addons]] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
};
|
||||
|
@ -8,8 +8,8 @@
|
||||
* 0: Warn once
|
||||
* 1: Warn permanently
|
||||
* 2: Kick
|
||||
* 1: Check all PBOs? <BOOL> (Optional - default: "[]")
|
||||
* 2: Whitelist <STRING> (Optinal - default: false)
|
||||
* 1: Check all PBOs? <BOOL> (Optional - default: false)
|
||||
* 2: Whitelist <STRING> (Optinal - default: "[]")
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
|
34
addons/common/functions/fnc_hideUnit.sqf
Normal file
34
addons/common/functions/fnc_hideUnit.sqf
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Author: SilentSpike (based on muteUnit)
|
||||
* Globally hides a unit. This allows the handling of more than one reason to hide an object globally.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Reason to hide the unit <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* nil
|
||||
*
|
||||
* Example:
|
||||
* [ACE_Player, "SpectatorMode"] call ace_common_fnc_hideUnit
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_2(_unit,_reason);
|
||||
|
||||
if (isNull _unit) exitWith {};
|
||||
|
||||
private "_setHiddenReasons";
|
||||
_setHiddenReasons = _unit getVariable [QGVAR(setHiddenReasons), []];
|
||||
|
||||
if !(_reason in _setHiddenReasons) then {
|
||||
_setHiddenReasons pushBack _reason;
|
||||
_unit setVariable [QGVAR(setHiddenReasons), _setHiddenReasons, true];
|
||||
};
|
||||
|
||||
//if !(isObjectHidden _unit) then { (Uncomment when isObjectHidden hits stable branch)
|
||||
["hideObjectGlobal",[_unit,true]] call FUNC(serverEvent);
|
||||
//};
|
@ -3,7 +3,9 @@
|
||||
* Initializes the check-PBOs module.
|
||||
*
|
||||
* Arguments:
|
||||
* Whatever the module provides. (I dunno.)
|
||||
* 0: The module logic <LOGIC>
|
||||
* 1: units <ARRAY>
|
||||
* 2: activated <BOOL>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
|
34
addons/common/functions/fnc_unhideUnit.sqf
Normal file
34
addons/common/functions/fnc_unhideUnit.sqf
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Author: SilentSpike (based on unmuteUnit)
|
||||
* Globally unhides a unit. Only unhides if the last reason was removed.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Reason to unhide the unit <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* nil
|
||||
*
|
||||
* Example:
|
||||
* [ACE_Player, "SpectatorMode"] call ace_common_fnc_unhideUnit
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_2(_unit,_reason);
|
||||
|
||||
if (isNull _unit) exitWith {};
|
||||
|
||||
private "_setHiddenReasons";
|
||||
_setHiddenReasons = _unit getVariable [QGVAR(setHiddenReasons), []];
|
||||
|
||||
if (_reason in _setHiddenReasons) then {
|
||||
_setHiddenReasons deleteAt (_setHiddenReasons find _reason);
|
||||
_unit setVariable [QGVAR(setHiddenReasons), _setHiddenReasons, true];
|
||||
};
|
||||
|
||||
if (_setHiddenReasons isEqualTo []) then {
|
||||
["hideObjectGlobal",[_unit,false]] call FUNC(serverEvent);
|
||||
};
|
@ -476,6 +476,7 @@
|
||||
<Spanish>Comprobar PBOs</Spanish>
|
||||
<German>Überprüfe PBOs</German>
|
||||
<Czech>Zkontrolovat PBO</Czech>
|
||||
<Portuguese>Verificar PBOs</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Description">
|
||||
<English></English>
|
||||
@ -483,6 +484,7 @@
|
||||
<Spanish>Este módulo verifica la integridad de los addons con los que iniciamos el simulador</Spanish>
|
||||
<German>Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat.</German>
|
||||
<Czech>Zjistit addon který je v souladu se serverem</Czech>
|
||||
<Portuguese>Este módulo verifica a integridade dos addons quando iniciamos a simulação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
|
||||
<English>Action</English>
|
||||
@ -490,6 +492,7 @@
|
||||
<Spanish>Acción</Spanish>
|
||||
<German>Aktion</German>
|
||||
<Czech>Akce</Czech>
|
||||
<Portuguese>Ação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_Description">
|
||||
<English>What to do with people who do not have the right PBOs?</English>
|
||||
@ -497,6 +500,7 @@
|
||||
<Spanish>¿Qué hacer con la gente que no tiene correctamente los PBOs?</Spanish>
|
||||
<German>Was soll mit Leuten passieren, die nicht die richtigen PBOs haben?</German>
|
||||
<Czech>Co udělat s lidmi, co nemají správné addony?</Czech>
|
||||
<Portuguese>O que fazer com pessoas que não tem os PBOs corretos?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
|
||||
<English>Warn once</English>
|
||||
@ -504,6 +508,7 @@
|
||||
<Spanish>Avisar una vez</Spanish>
|
||||
<German>Einmal verwarnen</German>
|
||||
<Czech>Upozornit jednou</Czech>
|
||||
<Portuguese>Avisar uma vez</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
|
||||
<English>Warn (permanent)</English>
|
||||
@ -511,6 +516,7 @@
|
||||
<Spanish>Avisar (permanente)</Spanish>
|
||||
<German>Immer verwarnen</German>
|
||||
<Czech>Upozornit (permanentně)</Czech>
|
||||
<Portuguese>Avisar (permanente)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
|
||||
<English>Kick</English>
|
||||
@ -518,6 +524,7 @@
|
||||
<Spanish>Expulsar</Spanish>
|
||||
<German>Kicken</German>
|
||||
<Czech>Vyhodit</Czech>
|
||||
<Portuguese>Chutar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
|
||||
<English>Check all addons</English>
|
||||
@ -525,6 +532,7 @@
|
||||
<Spanish>Comprobar todos los addons</Spanish>
|
||||
<German>Alle Addons überprüfen</German>
|
||||
<Czech>Zkontrolovat všechny addony</Czech>
|
||||
<Portuguese>Verificar todos addons</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
|
||||
<English>Check all addons instead of only those of ACE?</English>
|
||||
@ -532,6 +540,7 @@
|
||||
<Spanish>Comprobar todos los addons en vez de solo los del ACE</Spanish>
|
||||
<German>Alle Addons anstatt nur ACE überprüfen?</German>
|
||||
<Czech>Zkontrolovat všechny addony namísto jen těch od ACE?</Czech>
|
||||
<Portuguese>Verificar todos addons invés de só os do ACE?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
|
||||
<English>Whitelist</English>
|
||||
@ -539,6 +548,7 @@
|
||||
<Spanish>Lista blanca</Spanish>
|
||||
<German>Whitelist</German>
|
||||
<Czech>Seznam povolených</Czech>
|
||||
<Portuguese>Lista branca</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
|
||||
<English>What addons are allowed regardless?</English>
|
||||
@ -546,6 +556,7 @@
|
||||
<Spanish>Qué addons están permitidos igualmente</Spanish>
|
||||
<German>Welche Addons werden dennoch erlaubt?</German>
|
||||
<Czech>Jaké addony jsou povoleny?</Czech>
|
||||
<Portuguese>Quais addons são permitidos de qualquer maneira?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
|
||||
<English>LSD Vehicles</English>
|
||||
@ -553,6 +564,7 @@
|
||||
<Spanish>Vehículos LSD</Spanish>
|
||||
<German>LSD-Fahrzeuge</German>
|
||||
<Czech>LSD vozidla</Czech>
|
||||
<Portuguese>Veículos LSD</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_LSDVehicles_Description">
|
||||
<English>Adds LSD effect to synchronized vehicle</English>
|
||||
@ -560,18 +572,28 @@
|
||||
<Spanish>Añade el efecto LSD al vehículo sincronizado</Spanish>
|
||||
<German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German>
|
||||
<Czech>Přidá LSD efekt pro synchronizované vozidla</Czech>
|
||||
<Portuguese>Adiciona efeito LSD ao veículo sincronizado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_toggleHandheldDevice">
|
||||
<English>Toggle Handheld Device</English>
|
||||
<Spanish>Seleccionar dispositivo de mano</Spanish>
|
||||
<Portuguese>Ativa dispositivo de mão</Portuguese>
|
||||
<Polish>Przełącz urządzenie podręczne</Polish>
|
||||
<Czech>Přepnout ruční zařízení</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_closeHandheldDevice">
|
||||
<English>Close Handheld Device</English>
|
||||
<Spanish>Cerrar dispositivo de mano</Spanish>
|
||||
<Portuguese>Fecha dispositivo de mão</Portuguese>
|
||||
<Polish>Zamknij urządzenie podręczne</Polish>
|
||||
<Czech>Zavřít ruční zařízení</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_cycleHandheldDevices">
|
||||
<English>Cycle Handheld Devices</English>
|
||||
<Spanish>Cambiar dispositivos de mano</Spanish>
|
||||
<Portuguese>Troca dispositivos de mão</Portuguese>
|
||||
<Polish>Następne urządzenie podręczne</Polish>
|
||||
<Czech>Procházet ruční zařízení</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -6,44 +6,48 @@
|
||||
<German>NATO-Draht</German>
|
||||
<Russian>Проволочная спираль</Russian>
|
||||
<Polish>Drut kolczasty</Polish>
|
||||
<Spanish>Concertina wire</Spanish>
|
||||
<Spanish>Alambre de espino</Spanish>
|
||||
<French>Concertina wire</French>
|
||||
<Czech>Ostnatý drát</Czech>
|
||||
<Italian>Concertina wire</Italian>
|
||||
<Hungarian>Concertina wire</Hungarian>
|
||||
<Portuguese>Arame farpado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CONCERTINA_WIRECOIL">
|
||||
<English>Concertina Wire Coil</English>
|
||||
<German>NATO-Draht Rolle</German>
|
||||
<Russian>Проволочная спираль (моток)</Russian>
|
||||
<Polish>Zwój drutu kolczastego</Polish>
|
||||
<Spanish>Concertina wire coil</Spanish>
|
||||
<Spanish>Bobina de alambre de espino</Spanish>
|
||||
<French>Concertina wire coil</French>
|
||||
<Czech>Smyčka ostnatého drátu</Czech>
|
||||
<Italian>Concertina wire coil</Italian>
|
||||
<Hungarian>Concertina wire coil</Hungarian>
|
||||
<Portuguese>Bobina de arame farpado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_UNROLLWIRE">
|
||||
<English>Dismount Concertina Wire</English>
|
||||
<German>NATO-Draht abbauen</German>
|
||||
<Russian>Демонтировать проволочную спираль</Russian>
|
||||
<Polish>Zwiń drut kolczasty</Polish>
|
||||
<Spanish>Dismount Concertina wire</Spanish>
|
||||
<Spanish>Desmontar alambre de espino</Spanish>
|
||||
<French>Dismount Concertina wire</French>
|
||||
<Czech>Svinout ostnatý drát</Czech>
|
||||
<Italian>Dismount Concertina wire</Italian>
|
||||
<Hungarian>Dismount Concertina wire</Hungarian>
|
||||
<Portuguese>Desmontar arame farpado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_ROLLWIRE">
|
||||
<English>Deploy Concertina Wire</English>
|
||||
<German>NATO-Draht verlegen</German>
|
||||
<Russian>Монтировать проволочную спираль</Russian>
|
||||
<Polish>Rozwiń drut kolczasty</Polish>
|
||||
<Spanish>Deploy Concertina wire</Spanish>
|
||||
<Spanish>Desplegar alambre de espino</Spanish>
|
||||
<French>Deploy Concertina wire</French>
|
||||
<Czech>Rozvinout ostnatý drát</Czech>
|
||||
<Italian>Deploy Concertina wire</Italian>
|
||||
<Hungarian>Deploy Concertina wire</Hungarian>
|
||||
<Portuguese>Colocar arame farpado</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -511,6 +511,7 @@
|
||||
<Spanish>Sistema de explosivos</Spanish>
|
||||
<German>Sprengstoffsystem</German>
|
||||
<Czech>Systém výbušnin</Czech>
|
||||
<Portuguese>Sistema de explosivos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_RequireSpecialist_DisplayName">
|
||||
<English>Require specialists?</English>
|
||||
@ -518,6 +519,7 @@
|
||||
<Spanish>¿Requiere especialista?</Spanish>
|
||||
<German>Benötigt Sprengstoffexperten?</German>
|
||||
<Czech>Vyžadovat specialistu?</Czech>
|
||||
<Portuguese>Requer especialista?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_RequireSpecialist_Description">
|
||||
<English>Require explosive specialists to disable explosives? Default: No</English>
|
||||
@ -525,6 +527,7 @@
|
||||
<Spanish>Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No</Spanish>
|
||||
<German>Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein</German>
|
||||
<Czech>Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne</Czech>
|
||||
<Portuguese>Requer especialista em explosivos para desativar explosivos? Padrão: Não</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_DisplayName">
|
||||
<English>Punish non-specialists?</English>
|
||||
@ -532,6 +535,7 @@
|
||||
<Spanish>¿Penalizar a los no especialistas?</Spanish>
|
||||
<German>Bestrafe Nicht-Sprengstoffexperten?</German>
|
||||
<Czech>Potrestat, pokud není specialista?</Czech>
|
||||
<Portuguese>Punir não especialistas?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_Description">
|
||||
<English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English>
|
||||
@ -539,18 +543,27 @@
|
||||
<Spanish>Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si</Spanish>
|
||||
<German>Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja</German>
|
||||
<Czech>Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano</Czech>
|
||||
<Portuguese>Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ExplodeOnDefuse_DisplayName">
|
||||
<English>Explode on defusal?</English>
|
||||
<Portuguese>Explosão no desarmamento?</Portuguese>
|
||||
<Polish>Eksplozja przy rozbrajaniu?</Polish>
|
||||
<Czech>Explodovat při zneškodňování?</Czech>
|
||||
<Spanish>Explotar al desactivar?</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_ExplodeOnDefuse_Description">
|
||||
<English>Enable certain explosives to explode on defusal? Default: Yes</English>
|
||||
<Portuguese>Ativa certos explosivos para detonar no desarmamento? Padrão: Sim</Portuguese>
|
||||
<Polish>Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak</Polish>
|
||||
<Czech>Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano</Czech>
|
||||
<Spanish>¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem.</Polish>
|
||||
<German>Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern.</German>
|
||||
<Czech>Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin.</Czech>
|
||||
<Portuguese>Este módulo permite personalizar as definições relacionadas a explosivos.</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
@ -7,6 +7,7 @@
|
||||
<Spanish>Simulación de fragmentación</Spanish>
|
||||
<German>Splittersimulation</German>
|
||||
<Czech>Simulace fragmentace</Czech>
|
||||
<Portuguese>Simulação de fragmentação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableFrag_Desc">
|
||||
<English>Enable the ACE Fragmentation Simulation</English>
|
||||
@ -14,6 +15,7 @@
|
||||
<Polish>Aktywuje symulację fragmentacji ACE</Polish>
|
||||
<German>Aktiviere die ACE-Splittersimulation</German>
|
||||
<Czech>Povolit ACE simulaci fragmentace</Czech>
|
||||
<Portuguese>Ativa a simulação de fragmentação do ACE</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableSpall">
|
||||
<English>Spalling Simulation</English>
|
||||
@ -21,6 +23,7 @@
|
||||
<Polish>Symulacja odprysków</Polish>
|
||||
<German>Explosionssimulation</German>
|
||||
<Czech>Simulace úlomků</Czech>
|
||||
<Portuguese>Simulação de estilhaços</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableSpall_Desc">
|
||||
<English>Enable the ACE Spalling Simulation</English>
|
||||
@ -28,6 +31,7 @@
|
||||
<Polish>Aktywuje symulację odprysków ACE</Polish>
|
||||
<German>Aktiviere ACE-Explosionssimulation</German>
|
||||
<Czech>Povolit ACE simulaci úlomků</Czech>
|
||||
<Portuguese>Ativa a simulação de estilhaços do ACE</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrack">
|
||||
<English>Maximum Projectiles Tracked</English>
|
||||
@ -35,6 +39,7 @@
|
||||
<Polish>Maks. liczba śledzonych pocisków</Polish>
|
||||
<German>Maximalzahl der verfolgten Projektile</German>
|
||||
<Czech>Maximální počet sledovaných projektilů</Czech>
|
||||
<Portuguese>Máximo de projéteis rastreados</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrack_Desc">
|
||||
<English>This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once)</English>
|
||||
@ -42,6 +47,7 @@
|
||||
<Polish>To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz).</Polish>
|
||||
<German>Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft)</German>
|
||||
<Czech>Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu)</Czech>
|
||||
<Portuguese>Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrackPerFrame">
|
||||
<English>Maximum Projectiles Per Frame</English>
|
||||
@ -49,6 +55,7 @@
|
||||
<German>Maximale Anzahl an Projektilen pro Frame</German>
|
||||
<Polish>Maks. liczba pocisków na klatkę</Polish>
|
||||
<Czech>Maximální počet projektilů ze jeden snímek</Czech>
|
||||
<Portuguese>Projéteis máximos por quadro</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_MaxTrackPerFrame_Desc">
|
||||
<English>The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further.</English>
|
||||
@ -56,12 +63,14 @@
|
||||
<German>Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden.</German>
|
||||
<Spanish>El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto.</Spanish>
|
||||
<Czech>Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více.</Czech>
|
||||
<Portuguese>O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableDebugTrace">
|
||||
<English>(SP Only) Frag/Spall Debug Tracing</English>
|
||||
<Spanish>(Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento </Spanish>
|
||||
<Polish>(Tylko SP) Wizualny debug odł./odpr.</Polish>
|
||||
<Czech>(Pouze SP) Debug sledování Frag/Úlomků</Czech>
|
||||
<Portuguese>(Somente SP) Depuração de fragmentação e estilhaços traçantes</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Frag_EnableDebugTrace_Desc">
|
||||
<English>(SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only.</English>
|
||||
@ -69,6 +78,7 @@
|
||||
<Polish>(Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player.</Polish>
|
||||
<German>(nur SP) Splitter-/Explosions-Debugging</German>
|
||||
<Czech>(Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče.</Czech>
|
||||
<Portuguese>(Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP.</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -12,4 +12,39 @@ class CfgWeapons {
|
||||
mass = 1;
|
||||
};
|
||||
};
|
||||
|
||||
class H_HelmetB;
|
||||
class H_HelmetCrew_B: H_HelmetB {
|
||||
GVAR(protection) = 1;
|
||||
GVAR(lowerVolume) = 0.80;
|
||||
};
|
||||
class H_HelmetCrew_0: H_HelmetCrew_B {};
|
||||
class H_HelmetCrew_I: H_HelmetCrew_B {};
|
||||
|
||||
class H_CrewHelmetHeli_B: H_HelmetB {
|
||||
GVAR(protection) = 0.75;
|
||||
GVAR(lowerVolume) = 0.70;
|
||||
};
|
||||
class H_CrewHelmetHeli_O: H_CrewHelmetHeli_B {};
|
||||
class H_CrewHelmetHeli_I: H_CrewHelmetHeli_B {};
|
||||
|
||||
class H_PilotHelmetHeli_B: H_HelmetB {
|
||||
GVAR(protection) = 0.75;
|
||||
GVAR(lowerVolume) = 0.70;
|
||||
};
|
||||
class H_PilotHelmetHeli_O: H_PilotHelmetHeli_B {};
|
||||
class H_PilotHelmetHeli_I: H_PilotHelmetHeli_B {};
|
||||
|
||||
class H_PilotHelmetFighter_B: H_HelmetB {
|
||||
GVAR(protection) = 1;
|
||||
GVAR(lowerVolume) = 0.80;
|
||||
};
|
||||
class H_PilotHelmetFighter_O: H_PilotHelmetFighter_B {};
|
||||
class H_PilotHelmetFighter_I: H_PilotHelmetFighter_B {};
|
||||
|
||||
class H_Cap_headphones: H_HelmetB {
|
||||
GVAR(protection) = 0.5;
|
||||
GVAR(lowerVolume) = 0.60;
|
||||
};
|
||||
class H_Cap_marshal: H_Cap_headphones {};
|
||||
};
|
||||
|
@ -5,7 +5,7 @@ class CfgPatches {
|
||||
units[] = {};
|
||||
weapons[] = {"ACE_EarPlugs"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_interaction"};
|
||||
requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"};
|
||||
author[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"};
|
||||
authorUrl = "https://github.com/KoffeinFlummi/";
|
||||
VERSION_CONFIG;
|
||||
|
@ -15,9 +15,12 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit", "_launcher"];
|
||||
PARAMS_1(_unit);
|
||||
|
||||
_unit = _this select 0;
|
||||
// Exit if hearing is disabled or soldier has earplugs already in (persistence scenarios)
|
||||
if (!GVAR(enableCombatDeafness) || {[_unit] call FUNC(hasEarPlugsIn)}) exitWith {};
|
||||
|
||||
private ["_launcher"];
|
||||
|
||||
// add earplugs if the soldier has a rocket launcher
|
||||
_launcher = secondaryWeapon _unit;
|
||||
|
@ -27,6 +27,15 @@ if (_unit getVariable ["ACE_hasEarPlugsin", false]) then {
|
||||
_strength = _strength / 4;
|
||||
};
|
||||
|
||||
//headgear hearing protection
|
||||
if(headgear _unit != "") then {
|
||||
private ["_protection"];
|
||||
_protection = (getNumber (configFile >> "CfgWeapons" >> (headgear _unit) >> QGVAR(protection))) min 1;
|
||||
if(_protection > 0) then {
|
||||
_strength = _strength * (1 - _protection);
|
||||
};
|
||||
};
|
||||
|
||||
_unit setVariable [QGVAR(dv), (_unit getVariable [QGVAR(dv), 0]) + _strength];
|
||||
|
||||
if (GVAR(earRingingPFH) != -1) exitWith {};
|
||||
@ -35,8 +44,8 @@ GVAR(earRingingPFH) = [{
|
||||
EXPLODE_1_PVT(_this select 0,_unit);
|
||||
private ["_prior"];
|
||||
_prior = (_unit getvariable [QGVAR(dv), 0]) min 20;
|
||||
|
||||
if (!alive _unit || _prior <= 0) exitWith {
|
||||
|
||||
if (!alive _unit || _prior <= 0 || GVAR(DisableEarRinging)) exitWith {
|
||||
_unit setVariable [QGVAR(dv), 0];
|
||||
_unit setVariable [QGVAR(prior), 0];
|
||||
GVAR(beep) = false;
|
||||
@ -47,7 +56,7 @@ GVAR(earRingingPFH) = [{
|
||||
GVAR(earRingingPFH) = -1;
|
||||
[_this select 1] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
||||
|
||||
if (((_unit getvariable [QGVAR(dv), 0]) - (_unit getvariable [QGVAR(prior), 0])) > 2) then {
|
||||
if (ACE_time > GVAR(time3)) then {
|
||||
GVAR(beep2) = false;
|
||||
@ -58,16 +67,16 @@ GVAR(earRingingPFH) = [{
|
||||
GVAR(time3) = ACE_time + 5;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
_unit setvariable [QGVAR(prior), _prior];
|
||||
GVAR(volume) = (1 - (_prior / 20)) max 0;
|
||||
|
||||
|
||||
if (_prior > 19.75) then {
|
||||
_unit setvariable [QGVAR(deaf), true];
|
||||
} else {
|
||||
_unit setvariable [QGVAR(deaf), false];
|
||||
};
|
||||
|
||||
|
||||
if ((_unit getvariable [QGVAR(deaf), false]) && {ACE_time > GVAR(time4)}) then {
|
||||
playSound "ACE_Combat_Deafness";
|
||||
GVAR(beep2) = true;
|
||||
@ -77,7 +86,7 @@ GVAR(earRingingPFH) = [{
|
||||
|
||||
// Hearing takes longer to return to normal after it hits rock bottom
|
||||
_unit setvariable [QGVAR(dv), _prior - (0.5 * (GVAR(volume) max 0.1))];
|
||||
|
||||
|
||||
if (_prior > 10) then {
|
||||
//check if the ringing is already being played
|
||||
if (ACE_time > GVAR(time2)) then {
|
||||
|
@ -46,6 +46,15 @@ if ([ACE_player] call FUNC(hasEarPlugsIn)) then {
|
||||
_volume = _volume min GVAR(EarplugsVolume);
|
||||
};
|
||||
|
||||
// Headgear can reduce hearing
|
||||
if(headgear ACE_player != "") then {
|
||||
private ["_lowerVolume"];
|
||||
_lowerVolume = (getNumber (configFile >> "CfgWeapons" >> (headgear ACE_player) >> QGVAR(lowerVolume))) min 1;
|
||||
if(_lowerVolume > 0) then {
|
||||
_volume = _volume min (1 - _lowerVolume);
|
||||
};
|
||||
};
|
||||
|
||||
// Reduce volume if player is unconscious
|
||||
if (ACE_player getVariable ["ACE_isUnconscious", false]) then {
|
||||
_volume = _volume min GVAR(UnconsciousnessVolume);
|
||||
|
@ -115,6 +115,7 @@
|
||||
<Spanish>Audición</Spanish>
|
||||
<German>Gehör</German>
|
||||
<Czech>Sluch</Czech>
|
||||
<Portuguese>Audição</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_DisplayName">
|
||||
<English>Enable combat deafness?</English>
|
||||
@ -122,6 +123,7 @@
|
||||
<Spanish>¿Habilitar sordera de combate?</Spanish>
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
<Czech>Povolit ztrátu sluchu?</Czech>
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_CombatDeafness_Description">
|
||||
<English>Enable combat deafness?</English>
|
||||
@ -129,12 +131,14 @@
|
||||
<Spanish>Habilita la sordera de combate</Spanish>
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
<Czech>Povolit ztrátu sluchu?</Czech>
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.</Polish>
|
||||
<German>Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet.</German>
|
||||
<Czech>Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat.</Czech>
|
||||
<Portuguese>Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva.</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -4,178 +4,194 @@
|
||||
<Key ID="STR_DN_ACE_HUNTIRBOX">
|
||||
<English>HuntIR Transport Box</English>
|
||||
<German>HuntIR Transportkiste</German>
|
||||
<Spanish>HuntIR Transport Box</Spanish>
|
||||
<Spanish>Caja de transporte de HuntIR</Spanish>
|
||||
<Czech>Trasnportní bedna HuntIR</Czech>
|
||||
<Russian>Ящик с HuntIR</Russian>
|
||||
<Italian>HuntIR Transport Box</Italian>
|
||||
<Polish>Skrzynia HuntIR</Polish>
|
||||
<French>HuntIR Transport Box</French>
|
||||
<Hungarian>HuntIR Transport Box</Hungarian>
|
||||
<Portuguese>Caixa de transporte do HuntIR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_magazine_displayName">
|
||||
<English>HuntIR Round</English>
|
||||
<German>HuntIR Granate</German>
|
||||
<Spanish>HuntIR Round</Spanish>
|
||||
<Spanish>Proyectil HuntIR</Spanish>
|
||||
<Czech>HuntIR Round</Czech>
|
||||
<Russian>HuntIR снаряд</Russian>
|
||||
<Italian>HuntIR Round</Italian>
|
||||
<Polish>Nabój HuntIR</Polish>
|
||||
<French>Munition HuntIR</French>
|
||||
<Hungarian>HuntIR lövedék</Hungarian>
|
||||
<Portuguese>Cartucho HuntIR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_monitor_displayName">
|
||||
<English>HuntIR monitor</English>
|
||||
<German>HuntIR Monitor</German>
|
||||
<Spanish>HuntIR monitor</Spanish>
|
||||
<Spanish>Monitor HuntIR</Spanish>
|
||||
<Czech>HuntIR monitor</Czech>
|
||||
<Russian>HuntIR монитор</Russian>
|
||||
<Italian>HuntIR monitor</Italian>
|
||||
<Polish>Odbiornik HuntIR</Polish>
|
||||
<French>Ecran HuntIR</French>
|
||||
<Hungarian>HuntIR monitor</Hungarian>
|
||||
<Portuguese>Monitor HuntIR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_activateMonitor">
|
||||
<English>Activate HuntIR monitor</English>
|
||||
<German>HuntIR Monitor aktivieren</German>
|
||||
<Spanish>Activate HuntIR monitor</Spanish>
|
||||
<Spanish>Activar monitor HuntIR</Spanish>
|
||||
<Czech>Zapnout HuntIR monitor</Czech>
|
||||
<Russian>Включить HuntIR монитор</Russian>
|
||||
<Italian>Activate HuntIR monitor</Italian>
|
||||
<Polish>Włącz odbiornik HuntIR</Polish>
|
||||
<French>Allumer écran HuntIR</French>
|
||||
<Hungarian>HuntIR monitor aktiválása</Hungarian>
|
||||
<Portuguese>Ativar monitor do HuntIR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_CAM">
|
||||
<English>Camera:</English>
|
||||
<German>Kamera:</German>
|
||||
<Spanish>Camera:</Spanish>
|
||||
<Spanish>Camara:</Spanish>
|
||||
<Czech>Kamera:</Czech>
|
||||
<Russian>Камера:</Russian>
|
||||
<Italian>Camera:</Italian>
|
||||
<Polish>Kamera:</Polish>
|
||||
<French>Caméra:</French>
|
||||
<Hungarian>Kamera:</Hungarian>
|
||||
<Portuguese>Câmera:</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_ALT">
|
||||
<English>Altitude:</English>
|
||||
<German>Höhe:</German>
|
||||
<Spanish>Altitude:</Spanish>
|
||||
<Spanish>Altitud:</Spanish>
|
||||
<Czech>Výška:</Czech>
|
||||
<Russian>Высота:</Russian>
|
||||
<Italian>Altitude:</Italian>
|
||||
<Polish>Wysokość:</Polish>
|
||||
<French>Altitude:</French>
|
||||
<Hungarian>Magasság:</Hungarian>
|
||||
<Portuguese>Altitude:</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_TIME">
|
||||
<English>Recording Time:</English>
|
||||
<German>Aufnahmezeit:</German>
|
||||
<Spanish>Recording Time:</Spanish>
|
||||
<Spanish>Tiempo de grabación:</Spanish>
|
||||
<Czech>Čas nahrávání:</Czech>
|
||||
<Russian>Время записи:</Russian>
|
||||
<Italian>Recording Time:</Italian>
|
||||
<Polish>Czas nagrywania:</Polish>
|
||||
<French>Temps d'enregistrement:</French>
|
||||
<Hungarian>Felvételi idő:</Hungarian>
|
||||
<Portuguese>Tempo de gravação:</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_ESC">
|
||||
<English>Press ESC to quit camera</English>
|
||||
<German>Zum Verlassen ESC drücken</German>
|
||||
<Spanish>Press ESC to quit camera</Spanish>
|
||||
<Spanish>Pulsar ESC para salir de la camara</Spanish>
|
||||
<Czech>Stiskni ESC pro opustění kamery</Czech>
|
||||
<Russian>Нажмите ESC чтобы выйти из режима камеры</Russian>
|
||||
<Italian>Press ESC to quit camera</Italian>
|
||||
<Polish>Wciśnij ESC by wyjść z widoku kamery</Polish>
|
||||
<French>Appuyer sur ESC pour quitter camera</French>
|
||||
<Hungarian>Nyomj ESC-ket a kamerából való kilépéshez</Hungarian>
|
||||
<Portuguese>Pressione ESC para sair da câmera</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP">
|
||||
<English>Help</English>
|
||||
<German>Hilfe</German>
|
||||
<Spanish>Help</Spanish>
|
||||
<Spanish>Ayuda</Spanish>
|
||||
<Czech>Pomoc</Czech>
|
||||
<Russian>Помощь</Russian>
|
||||
<Italian>Help</Italian>
|
||||
<Polish>Pomoc</Polish>
|
||||
<French>Aide</French>
|
||||
<Hungarian>Súgó</Hungarian>
|
||||
<Portuguese>Ajuda</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_ZOOM">
|
||||
<English>A/D - Cycle zoom</English>
|
||||
<German>A/D - Zoom</German>
|
||||
<Spanish>A/D - Cycle zoom</Spanish>
|
||||
<Spanish>A/D - Cambiar zoom</Spanish>
|
||||
<Czech>A/D - Změna přiblížení</Czech>
|
||||
<Russian>A/D - Приближение</Russian>
|
||||
<Italian>A/D - Cycle zoom</Italian>
|
||||
<Polish>A/D - powiększenie</Polish>
|
||||
<French>A/D - Changement zoom</French>
|
||||
<Hungarian>A/D - Nagyítás</Hungarian>
|
||||
<Portuguese>A/D - Troca zoom</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_CAM">
|
||||
<English>W/S - Select camera</English>
|
||||
<German>W/S - Wähle Kamera</German>
|
||||
<Spanish>W/S - Select camera</Spanish>
|
||||
<Spanish>W/S - Seleccionar camara</Spanish>
|
||||
<Czech>W/S - Výběr kamery</Czech>
|
||||
<Russian>W/S - Выбрать камеру</Russian>
|
||||
<Italian>W/S - Select camera</Italian>
|
||||
<Polish>W/S - wybór kamery</Polish>
|
||||
<French>W/S - Sélectionner caméra</French>
|
||||
<Hungarian>W/S - Kamera váltás</Hungarian>
|
||||
<Portuguese>W/S - Seleciona câmera</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_ROT">
|
||||
<English>Left/Right - Rotate camera</English>
|
||||
<German>Links/Rechts - Rotiere Kamera</German>
|
||||
<Spanish>Left/Right - Rotate camera</Spanish>
|
||||
<Spanish>Left/Right - Rotar camara</Spanish>
|
||||
<Czech>Levá/Pravá - Rotace kamery</Czech>
|
||||
<Russian>Влево/Вправо - Вращать камеру</Russian>
|
||||
<Italian>Left/Right - Rotate camera</Italian>
|
||||
<Polish>Lewo/Prawo - obrót kamery w poziomie</Polish>
|
||||
<French>Gauche/Droite - Rotation caméra</French>
|
||||
<Hungarian>Jobb/Bal - Kamera forgatás</Hungarian>
|
||||
<Portuguese>Esquerda/Direita - Rotaciona câmera</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_ELV">
|
||||
<English>Up/Down - Elevate/lower camera</English>
|
||||
<German>Hoch/Runter - Neige Kamera</German>
|
||||
<Spanish>Up/Down - Elevate/lower camera</Spanish>
|
||||
<Spanish>Up/Down - Subir/bajar camara</Spanish>
|
||||
<Czech>Nahoru/Dolu - Zvýšít/snížit úhel pohledu kamery</Czech>
|
||||
<Russian>Вверх/Вниз - Поднять/Опустить камеру</Russian>
|
||||
<Italian>Up/Down - Elevate/lower camera</Italian>
|
||||
<Polish>Góra/Dół - obrót kamery w pionie</Polish>
|
||||
<French>Haut/Bas - Monter/descendre caméra</French>
|
||||
<Hungarian>Fel/Le - Kamera döntése/süllyesztése</Hungarian>
|
||||
<Portuguese>Acima/Abaixo - Eleva/Abaixa a câmera</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_MOD">
|
||||
<English>N - Cycle IT modes</English>
|
||||
<German>N - Sichtmodi</German>
|
||||
<Spanish>N - Cycle IT modes</Spanish>
|
||||
<Spanish>N - Cambiar modos de IT</Spanish>
|
||||
<Czech>N - Změna režimů kamery</Czech>
|
||||
<Russian>N - Режимы камеры</Russian>
|
||||
<Italian>N - Cycle IT modes</Italian>
|
||||
<Polish>N - wybór trybu IT</Polish>
|
||||
<French>N - Changement de modes IT</French>
|
||||
<Hungarian>N - Hőkép módok</Hungarian>
|
||||
<Portuguese>N - Troca modo IT</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_RES">
|
||||
<English>R - Reset camera</English>
|
||||
<German>R - Reset</German>
|
||||
<Spanish>R - Reset camera</Spanish>
|
||||
<Spanish>R - Reiniciar camara</Spanish>
|
||||
<Czech>R - Reset kamery</Czech>
|
||||
<Russian>R - Сбросить настройки камеры</Russian>
|
||||
<Italian>R - Reset camera</Italian>
|
||||
<Polish>R - resetuj kamerę</Polish>
|
||||
<French>R - Reset caméra</French>
|
||||
<Hungarian>R - Kamera visszaállítása</Hungarian>
|
||||
<Portuguese>R - Redefine a câmera</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_HUNTIR_HELP_EXIT">
|
||||
<English>Esc - Exit help</English>
|
||||
<German>ESC - Hilfe verlassen</German>
|
||||
<Spanish>Esc - Exit help</Spanish>
|
||||
<Spanish>Esc - Salit de ayuda</Spanish>
|
||||
<Czech>Esc - Ukončit pomoc </Czech>
|
||||
<Russian>Esc - Выйти из помощи</Russian>
|
||||
<Italian>Esc - Exit help</Italian>
|
||||
<Polish>Esc - wyjście z ekranu Pomocy</Polish>
|
||||
<French>Esc - Sortir de l'aide</French>
|
||||
<Hungarian>Exit - Kilépés a súgóból</Hungarian>
|
||||
<Portuguese>Esc - Sai do Ajuda</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -76,4 +76,11 @@ class ACE_Settings {
|
||||
displayName = CSTRING(background);
|
||||
values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(backgroundBlur), CSTRING(backgroundBlack)};
|
||||
};
|
||||
class GVAR(addBuildingActions) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
isClientSettable = 1;
|
||||
displayName = CSTRING(addBuildingActions);
|
||||
description = CSTRING(addBuildingActionsDescription);
|
||||
};
|
||||
};
|
||||
|
@ -3,6 +3,9 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(cachedBuildingTypes) = [];
|
||||
GVAR(cachedBuildingActionPairs) = [];
|
||||
|
||||
GVAR(ParsedTextCached) = [];
|
||||
|
||||
//Setup text/shadow/size/color settings matrix
|
||||
@ -17,6 +20,9 @@ GVAR(ParsedTextCached) = [];
|
||||
// Install the render EH on the main display
|
||||
addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
|
||||
//Add Actions to Houses:
|
||||
["interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// This spawn is probably worth keeping, as pfh don't work natively on the briefing screen and IDK how reliable the hack we implemented for them is.
|
||||
// The thread dies as soon as the mission start, so it's not really compiting for scheduler space.
|
||||
[] spawn {
|
||||
@ -30,8 +36,6 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
|
||||
["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)),
|
||||
{
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// Statement
|
||||
[0] call FUNC(keyDown)
|
||||
},{[0,false] call FUNC(keyUp)},
|
||||
@ -39,8 +43,6 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
|
||||
["ACE3 Common", QGVAR(SelfInteractKey), (localize LSTRING(SelfInteractKey)),
|
||||
{
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// Statement
|
||||
[1] call FUNC(keyDown)
|
||||
},{[1,false] call FUNC(keyUp)},
|
||||
@ -72,3 +74,11 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);};
|
||||
if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;};
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
||||
// Let key work with zeus open (not perfect, enables all added hotkeys in zeus interface rather than only menu)
|
||||
["zeusDisplayChanged",{
|
||||
if (_this select 1) then {
|
||||
(finddisplay 312) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}];
|
||||
(finddisplay 312) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}];
|
||||
};
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
@ -6,6 +6,7 @@ PREP(addActionToClass);
|
||||
PREP(addActionToObject);
|
||||
PREP(compileMenu);
|
||||
PREP(compileMenuSelfAction);
|
||||
PREP(compileMenuZeus);
|
||||
PREP(collectActiveActionTree);
|
||||
PREP(createAction);
|
||||
PREP(ctrlSetParsedTextCached);
|
||||
@ -24,6 +25,8 @@ PREP(renderMenu);
|
||||
PREP(renderSelector);
|
||||
PREP(setupTextColors);
|
||||
PREP(splitPath);
|
||||
PREP(userActions_addHouseActions);
|
||||
PREP(userActions_getHouseActions);
|
||||
|
||||
// Event handlers for all interact menu controls
|
||||
DFUNC(handleMouseMovement) = {
|
||||
@ -75,4 +78,7 @@ GVAR(lastTimeSearchedActions) = -1000;
|
||||
["CAManBase"] call FUNC(compileMenu);
|
||||
["CAManBase"] call FUNC(compileMenuSelfAction);
|
||||
|
||||
// Init zeus menu
|
||||
[] call FUNC(compileMenuZeus);
|
||||
|
||||
ADDON = true;
|
||||
|
@ -21,5 +21,5 @@ class CfgPatches {
|
||||
#include "ACE_Settings.hpp"
|
||||
|
||||
class ACE_Extensions {
|
||||
extensions[] += {"ace_break_line"};
|
||||
extensions[] += {"ace_break_line", "ace_parse_imagepath"};
|
||||
};
|
||||
|
@ -90,7 +90,7 @@ _recurseFnc = {
|
||||
[],
|
||||
_position,
|
||||
_distance,
|
||||
[_showDisabled,_enableInside,_canCollapse,_runOnHover],
|
||||
[_showDisabled,_enableInside,_canCollapse,_runOnHover, false],
|
||||
_modifierFunction
|
||||
],
|
||||
_children
|
||||
|
@ -74,7 +74,7 @@ _recurseFnc = {
|
||||
{},
|
||||
[0,0,0],
|
||||
10, //distace
|
||||
[_showDisabled,_enableInside,_canCollapse,_runOnHover],
|
||||
[_showDisabled,_enableInside,_canCollapse,_runOnHover, true],
|
||||
_modifierFunction
|
||||
],
|
||||
_children
|
||||
|
94
addons/interact_menu/functions/fnc_compileMenuZeus.sqf
Normal file
94
addons/interact_menu/functions/fnc_compileMenuZeus.sqf
Normal file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Author: SilentSpike
|
||||
* Compile the zeus action menu (only to be done once)
|
||||
*
|
||||
* Argument:
|
||||
* nil
|
||||
*
|
||||
* Return value:
|
||||
* None
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp";
|
||||
|
||||
// Exit if the action menu is already compiled for zeus
|
||||
if !(isNil {missionNamespace getVariable [QGVAR(ZeusActions), nil]}) exitWith {};
|
||||
|
||||
private "_recurseFnc";
|
||||
_recurseFnc = {
|
||||
private ["_actions", "_displayName", "_icon", "_statement", "_condition", "_showDisabled",
|
||||
"_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_insertChildren", "_modifierFunction"];
|
||||
EXPLODE_1_PVT(_this,_actionsCfg);
|
||||
_actions = [];
|
||||
|
||||
{
|
||||
_entryCfg = _x;
|
||||
if(isClass _entryCfg) then {
|
||||
_displayName = getText (_entryCfg >> "displayName");
|
||||
|
||||
_icon = getText (_entryCfg >> "icon");
|
||||
_statement = compile (getText (_entryCfg >> "statement"));
|
||||
|
||||
_condition = getText (_entryCfg >> "condition");
|
||||
if (_condition == "") then {_condition = "true"};
|
||||
|
||||
_insertChildren = compile (getText (_entryCfg >> "insertChildren"));
|
||||
_modifierFunction = compile (getText (_entryCfg >> "modifierFunction"));
|
||||
|
||||
_showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
|
||||
_enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
|
||||
_canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0;
|
||||
_runOnHover = true;
|
||||
if (isText (_entryCfg >> "runOnHover")) then {
|
||||
_runOnHover = compile getText (_entryCfg >> "runOnHover");
|
||||
} else {
|
||||
_runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
|
||||
};
|
||||
|
||||
_condition = compile _condition;
|
||||
_children = [_entryCfg] call _recurseFnc;
|
||||
|
||||
_entry = [
|
||||
[
|
||||
configName _entryCfg,
|
||||
_displayName,
|
||||
_icon,
|
||||
_statement,
|
||||
_condition,
|
||||
_insertChildren,
|
||||
{},
|
||||
[0,0,0],
|
||||
10, //distace
|
||||
[_showDisabled,_enableInside,_canCollapse,_runOnHover],
|
||||
_modifierFunction
|
||||
],
|
||||
_children
|
||||
];
|
||||
_actions pushBack _entry;
|
||||
};
|
||||
} forEach (configProperties [_actionsCfg, "isClass _x", true]);
|
||||
_actions
|
||||
};
|
||||
|
||||
private ["_actionsCfg"];
|
||||
_actionsCfg = configFile >> "ACE_ZeusActions";
|
||||
|
||||
// Create a master action to base zeus actions on
|
||||
GVAR(ZeusActions) = [
|
||||
[
|
||||
[
|
||||
"ACE_ZeusActions",
|
||||
localize LSTRING(ZeusActionsRoot),
|
||||
"\A3\Ui_F_Curator\Data\Logos\arma3_zeus_icon_ca.paa",
|
||||
{true},
|
||||
{true},
|
||||
{},
|
||||
{},
|
||||
{[0,0,0]},
|
||||
10,
|
||||
[false,true,false]
|
||||
],
|
||||
[_actionsCfg] call _recurseFnc
|
||||
]
|
||||
];
|
@ -68,7 +68,7 @@ _distance = if (count _this > 8) then {
|
||||
_params = if (count _this > 9) then {
|
||||
_this select 9
|
||||
} else {
|
||||
[false,false,false,false]
|
||||
[false,false,false,false,false]
|
||||
};
|
||||
|
||||
_modifierFunction = if (count _this > 10) then {
|
||||
|
@ -16,6 +16,11 @@ EXPLODE_1_PVT(_this,_menuType);
|
||||
|
||||
if (GVAR(openedMenuType) == _menuType) exitWith {true};
|
||||
|
||||
// Conditions: canInteract (these don't apply to zeus)
|
||||
if ((isNull curatorCamera) && {
|
||||
!([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith))
|
||||
}) exitWith {false};
|
||||
|
||||
while {dialog} do {
|
||||
closeDialog 0;
|
||||
};
|
||||
@ -34,6 +39,7 @@ GVAR(ParsedTextCached) = [];
|
||||
|
||||
GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) ||
|
||||
visibleMap ||
|
||||
(!isNull curatorCamera) ||
|
||||
{(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}} ||
|
||||
{(_menuType == 0) && GVAR(AlwaysUseCursorInteraction)};
|
||||
|
||||
@ -46,7 +52,12 @@ for "_i" from 0 to (count GVAR(iconCtrls))-1 do {
|
||||
GVAR(iconCtrls) resize GVAR(iconCount);
|
||||
|
||||
if (GVAR(useCursorMenu)) then {
|
||||
(findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";//
|
||||
// Don't close zeus interface if open
|
||||
if (isNull curatorCamera) then {
|
||||
(findDisplay 46) createDisplay QGVAR(cursorMenu); //"RscCinemaBorder";//
|
||||
} else {
|
||||
createDialog QGVAR(cursorMenu);
|
||||
};
|
||||
(finddisplay 91919) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}];
|
||||
(finddisplay 91919) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}];
|
||||
// The dialog sets:
|
||||
|
@ -46,6 +46,8 @@ if(GVAR(actionSelected)) then {
|
||||
};
|
||||
};
|
||||
|
||||
["interactMenuClosed", [GVAR(openedMenuType)]] call EFUNC(common,localEvent);
|
||||
|
||||
GVAR(keyDown) = false;
|
||||
GVAR(keyDownSelfAction) = false;
|
||||
GVAR(openedMenuType) = -1;
|
||||
@ -54,6 +56,4 @@ GVAR(expanded) = false;
|
||||
GVAR(lastPath) = [];
|
||||
GVAR(menuDepthPath) = [];
|
||||
|
||||
["interactMenuClosed", [GVAR(openedMenuType)]] call EFUNC(common,localEvent);
|
||||
|
||||
true
|
||||
|
@ -118,24 +118,35 @@ _fnc_renderSelfActions = {
|
||||
} forEach _classActions;
|
||||
};
|
||||
|
||||
_fnc_renderZeusActions = {
|
||||
{
|
||||
_action = _x;
|
||||
[_this, _action, [0.5, 0.5]] call FUNC(renderBaseMenu);
|
||||
} forEach GVAR(ZeusActions);
|
||||
};
|
||||
|
||||
|
||||
GVAR(collectedActionPoints) resize 0;
|
||||
|
||||
// Render nearby actions, unit self actions or vehicle self actions as appropiate
|
||||
if (GVAR(openedMenuType) == 0) then {
|
||||
|
||||
if (vehicle ACE_player == ACE_player) then {
|
||||
if (ACE_diagTime > GVAR(lastTimeSearchedActions) + 0.20) then {
|
||||
// Once every 0.2 secs, collect nearby objects active and visible action points and render them
|
||||
call _fnc_renderNearbyActions;
|
||||
if (isNull curatorCamera) then {
|
||||
if (vehicle ACE_player == ACE_player) then {
|
||||
if (ACE_diagTime > GVAR(lastTimeSearchedActions) + 0.20) then {
|
||||
// Once every 0.2 secs, collect nearby objects active and visible action points and render them
|
||||
call _fnc_renderNearbyActions;
|
||||
} else {
|
||||
// The rest of the frames just draw the same action points rendered the last frame
|
||||
call _fnc_renderLastFrameActions;
|
||||
};
|
||||
} else {
|
||||
// The rest of the frames just draw the same action points rendered the last frame
|
||||
call _fnc_renderLastFrameActions;
|
||||
// Render vehicle self actions when in vehicle
|
||||
(vehicle ACE_player) call _fnc_renderSelfActions;
|
||||
};
|
||||
} else {
|
||||
(vehicle ACE_player) call _fnc_renderSelfActions;
|
||||
// Render zeus actions when zeus open
|
||||
(getAssignedCuratorLogic player) call _fnc_renderZeusActions;
|
||||
};
|
||||
|
||||
} else {
|
||||
ACE_player call _fnc_renderSelfActions;
|
||||
};
|
||||
|
@ -36,7 +36,7 @@ _pos = if((count _this) > 2) then {
|
||||
};
|
||||
|
||||
// For non-self actions, exit if the action is too far away or ocluded
|
||||
if (GVAR(openedMenuType) == 0 && vehicle ACE_player == ACE_player &&
|
||||
if (GVAR(openedMenuType) == 0 && (vehicle ACE_player == ACE_player) && (isNull curatorCamera) &&
|
||||
{
|
||||
private ["_headPos","_actualDistance"];
|
||||
_headPos = ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot");
|
||||
@ -44,7 +44,7 @@ if (GVAR(openedMenuType) == 0 && vehicle ACE_player == ACE_player &&
|
||||
|
||||
if (_actualDistance > _distance) exitWith {true};
|
||||
|
||||
if (_actualDistance > 1.5) exitWith {
|
||||
if ((_actualDistance > 1.5) && {!((_actionData select 9) select 4)}) exitWith {
|
||||
// If distance to action is greater than 1.5 m, check LOS
|
||||
_line = [_headPos call EFUNC(common,positionToASL), _pos call EFUNC(common,positionToASL), _object, ACE_player];
|
||||
lineIntersects _line
|
||||
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Scans for nearby "Static" objects (buildings) and adds the UserActions to them.
|
||||
* Called when interact_menu starts rendering (from "interact_keyDown" event)
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Interact Menu Type (0 - world, 1 - self) <NUMBER>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [0] call ace_interact_menu_fnc_addHouseActions
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_interactionType);
|
||||
|
||||
//Ignore if not enabled:
|
||||
if (!GVAR(addBuildingActions)) exitWith {};
|
||||
//Ignore self-interaction menu:
|
||||
if (_interactionType != 0) exitWith {};
|
||||
//Ignore when mounted:
|
||||
if ((vehicle ACE_player) != ACE_player) exitWith {};
|
||||
|
||||
[{
|
||||
private ["_nearBuidlings", "_typeOfHouse", "_houseBeingScaned", "_actionSet", "_memPoints", "_memPointsActions", "_helperPos", "_helperObject"];
|
||||
PARAMS_2(_args,_pfID);
|
||||
EXPLODE_4_PVT(_args,_setPosition,_addedHelpers,_housesScaned,_housesToScanForActions);
|
||||
|
||||
if (!EGVAR(interact_menu,keyDown)) then {
|
||||
{deleteVehicle _x;} forEach _addedHelpers;
|
||||
[_pfID] call CBA_fnc_removePerFrameHandler;
|
||||
} else {
|
||||
// Prevent Rare Error when ending mission with interact key down:
|
||||
if (isNull ace_player) exitWith {};
|
||||
|
||||
//Make the common case fast (cursorTarget is looking at a door):
|
||||
if ((!isNull cursorTarget) && {cursorTarget isKindOf "Static"} && {!(cursorTarget in _housesScaned)}) then {
|
||||
if (((count (configFile >> "CfgVehicles" >> (typeOf cursorTarget) >> "UserActions")) > 0) || {(count (getArray (configFile >> "CfgVehicles" >> (typeOf cursorTarget) >> "ladders"))) > 0}) then {
|
||||
_housesToScanForActions = [cursorTarget];
|
||||
} else {
|
||||
_housesScaned pushBack cursorTarget;
|
||||
};
|
||||
};
|
||||
|
||||
//For performance, we only do 1 thing per frame,
|
||||
//-either do a wide scan and search for houses with actions
|
||||
//-or scan one house at a time and add the actions for that house
|
||||
|
||||
if (_housesToScanForActions isEqualTo []) then {
|
||||
//If player moved >2 meters from last pos, then rescan
|
||||
if (((getPosASL ace_player) distance _setPosition) < 2) exitWith {};
|
||||
|
||||
_nearBuidlings = nearestObjects [ace_player, ["Static"], 30];
|
||||
{
|
||||
_typeOfHouse = typeOf _x;
|
||||
if (((count (configFile >> "CfgVehicles" >> _typeOfHouse >> "UserActions")) == 0) && {(count (getArray (configFile >> "CfgVehicles" >> _typeOfHouse >> "ladders"))) == 0}) then {
|
||||
_housesScaned pushBack _x;
|
||||
} else {
|
||||
_housesToScanForActions pushBack _x;
|
||||
};
|
||||
} forEach (_nearBuidlings - _housesScaned);
|
||||
|
||||
_args set [0, (getPosASL ace_player)];
|
||||
} else {
|
||||
_houseBeingScaned = _housesToScanForActions deleteAt 0;
|
||||
_typeOfHouse = typeOf _houseBeingScaned;
|
||||
//Skip this house for now if we are outside of it's radius
|
||||
//(we have to scan far out for the big houses, but we don't want to waste time adding actions on every little shack)
|
||||
if ((_houseBeingScaned != cursorTarget) && {((ACE_player distance _houseBeingScaned) - ((sizeOf _typeOfHouse) / 2)) > 4}) exitWith {};
|
||||
|
||||
_housesScaned pushBack _houseBeingScaned;
|
||||
|
||||
_actionSet = [_typeOfHouse] call FUNC(userActions_getHouseActions);
|
||||
EXPLODE_2_PVT(_actionSet,_memPoints,_memPointsActions);
|
||||
|
||||
// systemChat format ["Add Actions for [%1] (count %2) @ %3", _typeOfHouse, (count _memPoints), diag_tickTime];
|
||||
{
|
||||
_helperPos = (_houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x)) call EFUNC(common,positionToASL);
|
||||
_helperObject = "Sign_Sphere25cm_F" createVehicleLocal _helperPos;
|
||||
_addedHelpers pushBack _helperObject;
|
||||
_helperObject setVariable [QGVAR(building), _houseBeingScaned];
|
||||
_helperObject setPosASL _helperPos;
|
||||
_helperObject hideObject true;
|
||||
TRACE_3("Making New Helper",_helperObject,_x,_houseBeingScaned);
|
||||
|
||||
{
|
||||
[_helperObject, 0, [], _x] call EFUNC(interact_menu,addActionToObject);
|
||||
} forEach (_memPointsActions select _forEachIndex);
|
||||
|
||||
} forEach _memPoints;
|
||||
};
|
||||
};
|
||||
}, 0, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], [], []]] call CBA_fnc_addPerFrameHandler;
|
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Author: PabstMirror
|
||||
* Scans the buidling type for UserActions and Ladder mount points.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Building Classname <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* [[Array of MemPoints], [Array Of Actions]]
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_typeOfBuilding);
|
||||
|
||||
private["_action", "_actionDisplayName", "_actionDisplayNameDefault", "_actionMaxDistance", "_actionOffset", "_actionPath", "_actionPosition", "_building", "_configPath", "_endIndex", "_iconImage", "_index", "_ladders", "_memPointIndex", "_memPoints", "_memPointsActions", "_startIndex"];
|
||||
|
||||
_searchIndex = GVAR(cachedBuildingTypes) find _typeOfBuilding;
|
||||
if (_searchIndex != -1) exitWith {GVAR(cachedBuildingActionPairs) select _searchIndex};
|
||||
|
||||
_memPoints = [];
|
||||
_memPointsActions = [];
|
||||
|
||||
//Get the offset for a memory point:
|
||||
_fnc_getMemPointOffset = {
|
||||
PARAMS_1(_memoryPoint);
|
||||
_memPointIndex = _memPoints find _memoryPoint;
|
||||
_actionOffset = [0,0,0];
|
||||
if (_memPointIndex == -1) then {
|
||||
_memPoints pushBack _memoryPoint;
|
||||
_memPointsActions pushBack [];
|
||||
} else {
|
||||
_actionOffset set [2, 0.0254 * (count (_memPointsActions select _memPointIndex))];
|
||||
};
|
||||
_actionOffset
|
||||
};
|
||||
|
||||
// Add UserActions for the building:
|
||||
_fnc_userAction_Statement = {
|
||||
PARAMS_3(_target,_player,_variable);
|
||||
EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition);
|
||||
this = _target getVariable [QGVAR(building), objNull];
|
||||
call _actionStatement;
|
||||
};
|
||||
_fnc_userAction_Condition = {
|
||||
PARAMS_3(_target,_player,_variable);
|
||||
EXPLODE_2_PVT(_variable,_actionStatement,_actionCondition);
|
||||
this = _target getVariable [QGVAR(building), objNull];
|
||||
if (isNull this) exitWith {false};
|
||||
call _actionCondition;
|
||||
};
|
||||
|
||||
_configPath = configFile >> "CfgVehicles" >> _typeOfBuilding >> "UserActions";
|
||||
for "_index" from 0 to ((count _configPath) - 1) do {
|
||||
_actionPath = _configPath select _index;
|
||||
|
||||
_actionDisplayName = getText (_actionPath >> "displayName");
|
||||
_actionDisplayNameDefault = getText (_actionPath >> "displayNameDefault");
|
||||
_actionPosition = getText (_actionPath >> "position");
|
||||
_actionCondition = getText (_actionPath >> "condition");
|
||||
_actionStatement = getText (_actionPath >> "statement");
|
||||
_actionMaxDistance = getNumber (_actionPath >> "radius");
|
||||
|
||||
if (_actionDisplayName == "") then {_actionDisplayName = (configName _x);};
|
||||
if (_actionPosition == "") then {ERROR("Bad Position");};
|
||||
if (_actionCondition == "") then {_actionCondition = "true";};
|
||||
if (_actionStatement == "") then {ERROR("No Statement");};
|
||||
|
||||
_actionStatement = compile _actionStatement;
|
||||
_actionCondition = compile _actionCondition;
|
||||
_actionMaxDistance = _actionMaxDistance + 0.1; //increase range slightly
|
||||
_iconImage = "";
|
||||
|
||||
//extension ~4x as fast:
|
||||
_iconImage = "ace_parse_imagepath" callExtension _actionDisplayNameDefault;
|
||||
|
||||
_actionOffset = [_actionPosition] call _fnc_getMemPointOffset;
|
||||
_memPointIndex = _memPoints find _actionPosition;
|
||||
|
||||
_action = [(configName _actionPath), _actionDisplayName, _iconImage, _fnc_userAction_Statement, _fnc_userAction_Condition, {}, [_actionStatement, _actionCondition], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction);
|
||||
(_memPointsActions select _memPointIndex) pushBack _action;
|
||||
};
|
||||
|
||||
// Add Ladder Actions for the building:
|
||||
_fnc_ladder_ladderUp = {
|
||||
PARAMS_3(_target,_player,_variable);
|
||||
EXPLODE_1_PVT(_variable,_ladderIndex);
|
||||
_building = _target getVariable [QGVAR(building), objNull];
|
||||
TRACE_3("Ladder Action - UP",_player,_building,_ladderIndex);
|
||||
_player action ["LadderUp", _building, _ladderIndex, 0];
|
||||
};
|
||||
_fnc_ladder_ladderDown = {
|
||||
PARAMS_3(_target,_player,_variable);
|
||||
EXPLODE_1_PVT(_variable,_ladderIndex);
|
||||
_building = _target getVariable [QGVAR(building), objNull];
|
||||
TRACE_3("Ladder Action - Down",_player,_building,_ladderIndex);
|
||||
_player action ["LadderDown", _building, _ladderIndex, 1];
|
||||
};
|
||||
|
||||
_fnc_ladder_conditional = {
|
||||
PARAMS_2(_target,_player);
|
||||
//(Check distance < 2) and (Don't show actions if on a ladder)
|
||||
((_target distance _player) < 2) && {((getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _player) >> "onLadder")) == 0)}
|
||||
};
|
||||
|
||||
_ladders = getArray (configFile >> "CfgVehicles" >> _typeOfBuilding >> "ladders");
|
||||
{
|
||||
EXPLODE_2_PVT(_x,_ladderBottomMemPoint,_ladderTopMemPoint);
|
||||
|
||||
_actionMaxDistance = 3; //interact_menu will check head -> target's offset; leave this high and do a precice distance check in condition
|
||||
|
||||
_actionDisplayName = localize "str_action_ladderup";
|
||||
_iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderup_ca.paa";
|
||||
//Ladder Up Action:
|
||||
_actionOffset = [_ladderBottomMemPoint] call _fnc_getMemPointOffset;
|
||||
_actionOffset = _actionOffset vectorAdd [0,0,1];
|
||||
_memPointIndex = _memPoints find _ladderBottomMemPoint;
|
||||
_action = [format ["LadderUp_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderUp, _fnc_ladder_conditional, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction);
|
||||
(_memPointsActions select _memPointIndex) pushBack _action;
|
||||
|
||||
_actionDisplayName = localize "str_action_ladderdown";
|
||||
_iconImage = "\A3\ui_f\data\igui\cfg\actions\ladderdown_ca.paa";
|
||||
//Ladder Down Action:
|
||||
_actionOffset = [_ladderTopMemPoint] call _fnc_getMemPointOffset;
|
||||
_actionOffset = _actionOffset vectorAdd [0,0,0.25];
|
||||
_memPointIndex = _memPoints find _ladderTopMemPoint;
|
||||
_action = [format ["LadderDown_%1", _forEachIndex], _actionDisplayName, _iconImage, _fnc_ladder_ladderDown, _fnc_ladder_conditional, {}, [_forEachIndex], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction);
|
||||
(_memPointsActions select _memPointIndex) pushBack _action;
|
||||
|
||||
} forEach _ladders;
|
||||
|
||||
GVAR(cachedBuildingTypes) pushBack _typeOfBuilding;
|
||||
GVAR(cachedBuildingActionPairs) pushBack [_memPoints, _memPointsActions];
|
||||
|
||||
|
||||
[_memPoints, _memPointsActions]
|
@ -85,6 +85,12 @@
|
||||
<Italian>Interazioni con veicoli</Italian>
|
||||
<Portuguese>Ações de Veículos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ZeusActionsRoot">
|
||||
<English>Zeus Actions</English>
|
||||
<Polish>Akcje Zeusa</Polish>
|
||||
<Czech>Akce Zeuse</Czech>
|
||||
<Spanish>Acciones Zeus</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_ColorTextMax">
|
||||
<English>Interaction - Text Max</English>
|
||||
<Polish>Interakcja - Tekst max</Polish>
|
||||
@ -222,24 +228,40 @@
|
||||
<Polish>Tło menu interakcji</Polish>
|
||||
<Spanish>Fondo del menú de interacción</Spanish>
|
||||
<Czech>Pozadí menu interakce</Czech>
|
||||
<Portuguese>Fundo do menu de interação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_blurScreenDesc">
|
||||
<English>Blur the background while the interaction menu is open.</English>
|
||||
<Polish>Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji</Polish>
|
||||
<Spanish>Desenfocar el fondo mientras el menú de interacción está abierto.</Spanish>
|
||||
<Czech>Rozmazat obraz pokud je interakční menu otevřené.</Czech>
|
||||
<Portuguese>Desfocar o fundo enquanto o menu de interação está aberto.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_backgroundBlur">
|
||||
<English>Blur screen</English>
|
||||
<Polish>Rozmycie ekranu</Polish>
|
||||
<Spanish>Pantalla de desenfoque</Spanish>
|
||||
<Czech>Rozmazaný obraz</Czech>
|
||||
<Portuguese>Desfoque de tela</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_backgroundBlack">
|
||||
<English>Black</English>
|
||||
<Polish>Przyciemnienie ekranu</Polish>
|
||||
<Spanish>Negra</Spanish>
|
||||
<Spanish>Negro</Spanish>
|
||||
<Czech>Černý obraz</Czech>
|
||||
<Portuguese>Preto</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_addBuildingActions">
|
||||
<English>Show actions for buildings</English>
|
||||
<Polish>Pokazuj akcje dla budynków</Polish>
|
||||
<Czech>Zobrazit akci pro budovy</Czech>
|
||||
<Spanish>Mostrar acciones para edificios</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interact_Menu_addBuildingActionsDescription">
|
||||
<English>Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns)</English>
|
||||
<Polish>Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach.</Polish>
|
||||
<Czech>Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) </Czech>
|
||||
<Spanish>Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades)</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
244
addons/interaction/ACE_ZeusActions.hpp
Normal file
244
addons/interaction/ACE_ZeusActions.hpp
Normal file
@ -0,0 +1,244 @@
|
||||
class ACE_ZeusActions {
|
||||
// _target = curatorLogic
|
||||
// curatorSelected = [objects,groups,waypoints,markers]
|
||||
class ZeusUnits {
|
||||
displayName = "$STR_A3_RscDisplayCurator_ModeUnits_tooltip";
|
||||
icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeUnits_ca.paa";
|
||||
|
||||
class stance {
|
||||
displayName = "$STR_A3_RscAttributeUnitPos_Title";
|
||||
|
||||
class prone {
|
||||
displayName = "$STR_Pos_Down";
|
||||
icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_prone_ca.paa";
|
||||
statement = "{_x setUnitPos 'DOWN';} forEach (curatorSelected select 0);";
|
||||
};
|
||||
class crouch {
|
||||
displayName = "$STR_Pos_Crouch";
|
||||
icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_crouch_ca.paa";
|
||||
statement = "{_x setUnitPos 'MIDDLE';} forEach (curatorSelected select 0);";
|
||||
};
|
||||
class stand {
|
||||
displayName = "$STR_Pos_Up";
|
||||
icon = "\A3\UI_F\Data\IGUI\RscIngameUI\RscUnitInfo\SI_stand_ca.paa";
|
||||
statement = "{_x setUnitPos 'UP';} forEach (curatorSelected select 0);";
|
||||
};
|
||||
class auto {
|
||||
displayName = "$STR_Pos_Automatic";
|
||||
icon = "\A3\UI_F_Curator\Data\default_ca.paa";
|
||||
statement = "{_x setUnitPos 'AUTO';} forEach (curatorSelected select 0);";
|
||||
};
|
||||
};
|
||||
class remoteControl {
|
||||
displayName = "$STR_A3_CfgVehicles_ModuleRemoteControl_F";
|
||||
icon = "\A3\Modules_F_Curator\Data\portraitRemoteControl_ca.paa";
|
||||
statement = "_unit = objNull; { if ((side _x in [east,west,resistance,civilian]) && !(isPlayer _x)) exitWith { _unit = _x; }; } forEach (curatorSelected select 0); bis_fnc_curatorObjectPlaced_mouseOver = ['OBJECT',_unit]; (group _target) createUnit ['ModuleRemoteControl_F',[0,0,0],[],0,''];";
|
||||
};
|
||||
};
|
||||
class ZeusGroups {
|
||||
displayName = "$STR_A3_RscDisplayCurator_ModeGroups_tooltip";
|
||||
icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa";
|
||||
|
||||
class behaviour {
|
||||
displayName = "$STR_Combat_Mode";
|
||||
|
||||
class careless {
|
||||
displayName = "$STR_Combat_Careless";
|
||||
statement = "{ _x setBehaviour 'CARELESS'; } forEach (curatorSelected select 1);";
|
||||
};
|
||||
class safe {
|
||||
displayName = "$STR_Combat_Safe";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa";
|
||||
statement = "{ _x setBehaviour 'SAFE'; } forEach (curatorSelected select 1);";
|
||||
};
|
||||
class aware {
|
||||
displayName = "$STR_Combat_Aware";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa";
|
||||
statement = "{ _x setBehaviour 'AWARE'; } forEach (curatorSelected select 1);";
|
||||
};
|
||||
class combat {
|
||||
displayName = "$STR_Combat_Combat";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa";
|
||||
statement = "{ _x setBehaviour 'COMBAT'; } forEach (curatorSelected select 1);";
|
||||
};
|
||||
class stealth {
|
||||
displayName = "$STR_Combat_Stealth";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa";
|
||||
statement = "{ _x setBehaviour 'STEALTH'; } forEach (curatorSelected select 1);";
|
||||
};
|
||||
};
|
||||
class speed {
|
||||
displayName = "$STR_HC_Menu_Speed";
|
||||
|
||||
class limited {
|
||||
displayName = "$STR_Speed_Limited";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\limited_ca.paa";
|
||||
statement = "{_x setSpeedMode 'LIMITED';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class normal {
|
||||
displayName = "$STR_Speed_Normal";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\normal_ca.paa";
|
||||
statement = "{_x setSpeedMode 'NORMAL';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class full {
|
||||
displayName = "$STR_Speed_Full";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\full_ca.paa";
|
||||
statement = "{_x setSpeedMode 'FULL';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
};
|
||||
class formation {
|
||||
displayName = "$STR_Formation";
|
||||
|
||||
class wedge {
|
||||
displayName = "$STR_Wedge";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa";
|
||||
statement = "{_x setFormation 'WEDGE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class vee {
|
||||
displayName = "$STR_Vee";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa";
|
||||
statement = "{_x setFormation 'VEE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class line {
|
||||
displayName = "$STR_Line";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa";
|
||||
statement = "{_x setFormation 'LINE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class column {
|
||||
displayName = "$STR_Column";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa";
|
||||
statement = "{_x setFormation 'COLUMN';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class file {
|
||||
displayName = "$STR_File";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa";
|
||||
statement = "{_x setFormation 'FILE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class stag_column {
|
||||
displayName = "$STR_Staggered";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\stag_column_ca.paa";
|
||||
statement = "{_x setFormation 'STAG COLUMN';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class ech_left {
|
||||
displayName = "$STR_EchL";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_left_ca.paa";
|
||||
statement = "{_x setFormation 'ECH LEFT';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class ech_right {
|
||||
displayName = "$STR_EchR";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_right_ca.paa";
|
||||
statement = "{_x setFormation 'ECH RIGHT';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class diamond {
|
||||
displayName = "$STR_Diamond";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa";
|
||||
statement = "{_x setFormation 'DIAMOND';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
};
|
||||
};
|
||||
class ZeusWaypoints {
|
||||
displayName = "Waypoints";
|
||||
icon = "\A3\UI_F_Curator\Data\CfgCurator\waypoint_ca.paa";
|
||||
|
||||
class behaviour {
|
||||
displayName = "$STR_Combat_Mode";
|
||||
|
||||
class careless {
|
||||
displayName = "$STR_Combat_Careless";
|
||||
statement = "{ _x setWaypointBehaviour 'CARELESS'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
class safe {
|
||||
displayName = "$STR_Combat_Safe";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\safe_ca.paa";
|
||||
statement = "{ _x setWaypointBehaviour 'SAFE'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
class aware {
|
||||
displayName = "$STR_Combat_Aware";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\aware_ca.paa";
|
||||
statement = "{ _x setWaypointBehaviour 'AWARE'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
class combat {
|
||||
displayName = "$STR_Combat_Combat";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\combat_ca.paa";
|
||||
statement = "{ _x setWaypointBehaviour 'COMBAT'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
class stealth {
|
||||
displayName = "$STR_Combat_Stealth";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeBehaviour\stealth_ca.paa";
|
||||
statement = "{ _x setWaypointBehaviour 'STEALTH'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
};
|
||||
class speed {
|
||||
displayName = "$STR_HC_Menu_Speed";
|
||||
|
||||
class limited {
|
||||
displayName = "$STR_Speed_Limited";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\limited_ca.paa";
|
||||
statement = "{ _x setWaypointSpeed 'LIMITED'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
class normal {
|
||||
displayName = "$STR_Speed_Normal";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\normal_ca.paa";
|
||||
statement = "{ _x setWaypointSpeed 'NORMAL'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
class full {
|
||||
displayName = "$STR_Speed_Full";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeSpeedMode\full_ca.paa";
|
||||
statement = "{ _x setWaypointSpeed 'FULL'; } forEach (curatorSelected select 2);";
|
||||
};
|
||||
};
|
||||
class formation {
|
||||
displayName = "$STR_Formation";
|
||||
|
||||
class wedge {
|
||||
displayName = "$STR_Wedge";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'WEDGE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class vee {
|
||||
displayName = "$STR_Vee";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'VEE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class line {
|
||||
displayName = "$STR_Line";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'LINE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class column {
|
||||
displayName = "$STR_Column";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'COLUMN';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class file {
|
||||
displayName = "$STR_File";
|
||||
icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'FILE';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class stag_column {
|
||||
displayName = "$STR_Staggered";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\stag_column_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'STAG COLUMN';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class ech_left {
|
||||
displayName = "$STR_EchL";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_left_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'ECH LEFT';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class ech_right {
|
||||
displayName = "$STR_EchR";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_right_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'ECH RIGHT';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
class diamond {
|
||||
displayName = "$STR_Diamond";
|
||||
icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa";
|
||||
statement = "{_x setWaypointFormation 'DIAMOND';} forEach (curatorSelected select 1);";
|
||||
};
|
||||
};
|
||||
};
|
||||
class ZeusMarkers {
|
||||
displayName = "$STR_A3_RscDisplayCurator_ModeMarkers_tooltip";
|
||||
icon = "\A3\UI_F_Curator\Data\Displays\RscDisplayCurator\modeMarkers_ca.paa";
|
||||
};
|
||||
};
|
@ -581,6 +581,13 @@ class CfgVehicles {
|
||||
selection = "";
|
||||
distance = 2;
|
||||
condition = "true";
|
||||
class ACE_OpenBox {
|
||||
displayName = CSTRING(OpenBox);
|
||||
condition = QUOTE(alive _target);
|
||||
statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)), _target)]);
|
||||
showDisabled = 0;
|
||||
priority = -1;
|
||||
};
|
||||
};
|
||||
};
|
||||
class ACE_SelfActions {};
|
||||
|
@ -16,3 +16,4 @@ class CfgPatches {
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "Menu_Config.hpp"
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "ACE_ZeusActions.hpp"
|
||||
|
@ -793,12 +793,19 @@
|
||||
<Italian>Passeggeri</Italian>
|
||||
<Portuguese>Passageiros</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_OpenBox">
|
||||
<English>Open</English>
|
||||
<Polish>Otwórz</Polish>
|
||||
<Czech>Otevřít</Czech>
|
||||
<Spanish>Abrir</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Module_DisplayName">
|
||||
<English>Interaction System</English>
|
||||
<Polish>System interakcji</Polish>
|
||||
<Spanish>Sistema de interacción</Spanish>
|
||||
<German>Interaktionssystem</German>
|
||||
<Czech>Systém interakce</Czech>
|
||||
<Russian>Sistema de interação</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_EnableTeamManagement_DisplayName">
|
||||
<English>Enable Team Management</English>
|
||||
@ -806,6 +813,7 @@
|
||||
<Spanish>Habilitar gestión de equipos</Spanish>
|
||||
<German>Aktiviere Gruppenverwaltung</German>
|
||||
<Czech>Povolit správu týmu</Czech>
|
||||
<Russian>Habilitar gestão de equipes</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_EnableTeamManagement_Description">
|
||||
<English>Should players be allowed to use the Team Management Menu? Default: Yes</English>
|
||||
@ -813,12 +821,15 @@
|
||||
<Spanish>¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si</Spanish>
|
||||
<German>Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja</German>
|
||||
<Czech>Mohou hráči použít menu správy týmu? Výchozí: Ano</Czech>
|
||||
<Russian>Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Interaction_Module_Description">
|
||||
<English></English>
|
||||
<English>Team management allows color allocation for team members, taking team command and joining/leaving teams.</English>
|
||||
<Polish>Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn.</Polish>
|
||||
<German>Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe.</German>
|
||||
<Czech>Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. </Czech>
|
||||
<Russian>O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes.</Russian>
|
||||
<Spanish>La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos.</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -25,7 +25,7 @@
|
||||
#ifndef STRING_MACROS_GUARD
|
||||
#define STRING_MACROS_GUARD
|
||||
#define LSTRING(var1) QUOTE(TRIPLES(STR,ADDON,var1))
|
||||
#define LESTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2))
|
||||
#define ELSTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2))
|
||||
#define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1))
|
||||
#define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2))
|
||||
#endif
|
||||
|
@ -18,7 +18,30 @@ call FUNC(determineZoom);
|
||||
GVAR(lastStillTime) = ACE_time;
|
||||
GVAR(isShaking) = false;
|
||||
|
||||
//Allow panning the lastStillPosition while mapShake is active
|
||||
GVAR(rightMouseButtonLastPos) = [];
|
||||
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", {[] call FUNC(updateMapEffects);}];
|
||||
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseMoving", {
|
||||
if (GVAR(isShaking) && {(count GVAR(rightMouseButtonLastPos)) == 2}) then {
|
||||
private["_lastPos", "_newPos"];
|
||||
_lastPos = (_this select 0) ctrlMapScreenToWorld GVAR(rightMouseButtonLastPos);
|
||||
_newPos = (_this select 0) ctrlMapScreenToWorld (_this select [1,2]);
|
||||
GVAR(lastStillPosition) set [0, (GVAR(lastStillPosition) select 0) + (_lastPos select 0) - (_newPos select 0)];
|
||||
GVAR(lastStillPosition) set [1, (GVAR(lastStillPosition) select 1) + (_lastPos select 1) - (_newPos select 1)];
|
||||
GVAR(rightMouseButtonLastPos) = _this select [1,2];
|
||||
TRACE_3("Mouse Move",_lastPos,_newPos,GVAR(rightMouseButtonLastPos));
|
||||
};
|
||||
}];
|
||||
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonDown", {
|
||||
if ((_this select 1) == 1) then {
|
||||
GVAR(rightMouseButtonLastPos) = _this select [2,2];
|
||||
};
|
||||
}];
|
||||
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["MouseButtonUp", {
|
||||
if ((_this select 1) == 1) then {
|
||||
GVAR(rightMouseButtonLastPos) = [];
|
||||
};
|
||||
}];
|
||||
};
|
||||
|
||||
["SettingsInitialized", {
|
||||
|
@ -7,6 +7,7 @@
|
||||
<Spanish>Mapa</Spanish>
|
||||
<German>Karte</German>
|
||||
<Czech>Mapa</Czech>
|
||||
<Portuguese>Mapa</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapIllumination_DisplayName">
|
||||
<English>Map illumination?</English>
|
||||
@ -14,6 +15,7 @@
|
||||
<Spanish>¿Iluminación de mapa?</Spanish>
|
||||
<German>Kartenausleuchtung</German>
|
||||
<Czech>Osvětlení mapy</Czech>
|
||||
<Portuguese>Iluminação do mapa?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapIllumination_Description">
|
||||
<English>Calculate dynamic map illumination based on light conditions?</English>
|
||||
@ -21,6 +23,7 @@
|
||||
<Spanish>Calcula la iluminación dinámica del mapa basandose en las condiciones de luz</Spanish>
|
||||
<German>Berechne die Kartenauslichtung anhand des Umgebungslichts?</German>
|
||||
<Czech>Vypočítat dynamické osvětlení mapy na základně světelných podmínek?</Czech>
|
||||
<Portuguese>Calcular a iluminação dinâmica do mapa de acordo com as condições de luz?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShake_DisplayName">
|
||||
<English>Map shake?</English>
|
||||
@ -28,6 +31,7 @@
|
||||
<Spanish>¿Temblor de mapa?</Spanish>
|
||||
<German>Kamerawackeln</German>
|
||||
<Czech>Třesení mapy?</Czech>
|
||||
<Portuguese>Tremor de mapa?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShake_Description">
|
||||
<English>Make map shake when walking?</English>
|
||||
@ -35,6 +39,7 @@
|
||||
<Spanish>Hace que el mapa tiemble cuando caminas</Spanish>
|
||||
<German>Kamerawackeln beim Gehen?</German>
|
||||
<Czech>Umožnit třesení mapy za pochodu?</Czech>
|
||||
<Portuguese>Tremer o mapa enquanto caminha?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapLimitZoom_DisplayName">
|
||||
<English>Limit map zoom?</English>
|
||||
@ -42,6 +47,7 @@
|
||||
<Spanish>¿Limitar el zoom de mapa?</Spanish>
|
||||
<German>Kartenzoom einschränken</German>
|
||||
<Czech>Omezit přiblížení mapy?</Czech>
|
||||
<Portuguese>Limitar zoom do mapa?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapLimitZoom_Description">
|
||||
<English>Limit the amount of zoom available for the map?</English>
|
||||
@ -49,6 +55,7 @@
|
||||
<Spanish>Limita la cantidad de zoom disponible para el mapa</Spanish>
|
||||
<German>Zoomstufe der Karte einschränken?</German>
|
||||
<Czech>Omezit stupeň přiblížení pro mapu?</Czech>
|
||||
<Portuguese>Limitar a quantidade de zoom disponível para o mapa?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShowCursorCoordinates_DisplayName">
|
||||
<English>Show cursor coordinates?</English>
|
||||
@ -56,6 +63,7 @@
|
||||
<Spanish>¿Mostrar coordenadas de cursor?</Spanish>
|
||||
<German>Zeige Cursor-Koordinaten?</German>
|
||||
<Czech>Zobrazit souřadnice u kurzoru?</Czech>
|
||||
<Portuguese>Mostrar coordenadas no cursor?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_MapShowCursorCoordinates_Description">
|
||||
<English>Show the grid coordinates on the mouse pointer?</English>
|
||||
@ -63,25 +71,35 @@
|
||||
<Spanish>Muestra las coordenadas de la cuadricula en el puntero del ratón</Spanish>
|
||||
<German>Gitter-Koordinaten auf dem Mauszeiger anzeigen?</German>
|
||||
<Czech>Zobrazit souřadnice u kurzoru v mapě?</Czech>
|
||||
<Portuguese>Mostrar as coordenadas de grade no ponteiro do mouse?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala dostosować opcje widoku ekranu mapy.</Polish>
|
||||
<German>Dieses Modul erweitert die Kartenfunktionen.</German>
|
||||
<Czech>Tento modul umožňuje přizpůsobit mapu s obrazem.</Czech>
|
||||
<Portuguese>Este módulo permite que você personalize a tela de mapa.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Module_DisplayName">
|
||||
<English>Blue Force Tracking</English>
|
||||
<Polish>Blue Force Tracking</Polish>
|
||||
<Spanish>Seguimiento de fuerzas amigas</Spanish>
|
||||
<Spanish>Blue Force Tracking</Spanish>
|
||||
<German>Blue Force Tracking</German>
|
||||
<Czech>Blue Force Tracking</Czech>
|
||||
<Portuguese>Rastreio de forças azuis</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Enabled_DisplayName">
|
||||
<English>BFT Enable</English>
|
||||
<Portuguese>RFA ativo</Portuguese>
|
||||
<Polish>Aktywuj BFT</Polish>
|
||||
<Czech>Povolit BFT</Czech>
|
||||
<Spanish>Activar BFT</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Enabled_Description">
|
||||
<English>Enable Blue Force Tracking. Default: No</English>
|
||||
<Portuguese>Ativa Rastreio de Forças Azuis. Padrão: Não</Portuguese>
|
||||
<Polish>Aktywuj Blue Force Tracking. Domyślnie: Nie</Polish>
|
||||
<Czech>Povolit Blue Force Tracking. Výchozí: Ne</Czech>
|
||||
<Spanish>Activar Blue Force Tracking. Por defecto: No</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Interval_DisplayName">
|
||||
<English>Interval</English>
|
||||
@ -89,6 +107,7 @@
|
||||
<Spanish>Intervalo</Spanish>
|
||||
<German>Intervall</German>
|
||||
<Czech>Interval</Czech>
|
||||
<Portuguese>Intervalo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Interval_Description">
|
||||
<English>How often the markers should be refreshed (in seconds)</English>
|
||||
@ -96,6 +115,7 @@
|
||||
<Spanish>Frecuencia de actualización de los marcadores (en segundos)</Spanish>
|
||||
<German>Wie oft sollen die Markierungen aktualisiert werden (in Sekunden)</German>
|
||||
<Czech>Jak často budou značky aktualizovány (v sekundách)</Czech>
|
||||
<Portuguese>Frequência em que os marcadores devem ser atualizados (em segundos)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_HideAiGroups_DisplayName">
|
||||
<English>Hide AI groups?</English>
|
||||
@ -103,6 +123,7 @@
|
||||
<Spanish>¿Ocultar grupos de IA?</Spanish>
|
||||
<German>KI-Gruppen verstecken?</German>
|
||||
<Czech>Skrýt AI skupiny?</Czech>
|
||||
<Portuguese>Esconder grupos de IA?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_HideAiGroups_Description">
|
||||
<English>Hide markers for 'AI only' groups?</English>
|
||||
@ -110,12 +131,13 @@
|
||||
<Spanish>Oculta las marcas de grupos 'solo IA'</Spanish>
|
||||
<German>Verstecke Marker für "nur KI"-Gruppen?</German>
|
||||
<Czech>Skrýt značky pouze pro AI skupiny?</Czech>
|
||||
<Portuguese>Esconder marcadores que pertencem ao grupo de IA?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_BFT_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT.</Polish>
|
||||
<German>Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen.</German>
|
||||
<Czech>Umožňuje sledovat přátelské jednokty na mapě v rámci BFT.</Czech>
|
||||
<Portuguese>Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA.</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -11,6 +11,7 @@ class ACE_Medical_Actions {
|
||||
treatmentTimeSelfCoef = 1;
|
||||
items[] = {{"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_quikclot"}};
|
||||
condition = "";
|
||||
patientStateCondition = 0;
|
||||
itemConsumed = 1;
|
||||
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentBasic_bandage));
|
||||
@ -107,6 +108,7 @@ class ACE_Medical_Actions {
|
||||
// Item required for the action. Leave empty for no item required.
|
||||
items[] = {"ACE_fieldDressing"};
|
||||
condition = "";
|
||||
patientStateCondition = 0;
|
||||
// Callbacks
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_bandage));
|
||||
callbackFailure = "";
|
||||
@ -206,6 +208,7 @@ class ACE_Medical_Actions {
|
||||
items[] = {"ACE_surgicalKit"};
|
||||
treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)};
|
||||
requiredMedic = QGVAR(medicSetting_SurgicalKit);
|
||||
patientStateCondition = QGVAR(useCondition_SurgicalKit);
|
||||
treatmentTime = "(count ((_this select 1) getVariable ['ACE_Medical_bandagedWounds', []]) * 5)";
|
||||
callbackSuccess = "";
|
||||
callbackProgress = QUOTE(DFUNC(treatmentAdvanced_surgicalKit_onProgress));
|
||||
@ -219,6 +222,7 @@ class ACE_Medical_Actions {
|
||||
items[] = {"ACE_personalAidKit"};
|
||||
treatmentLocations[] = {QGVAR(useLocation_PAK)};
|
||||
requiredMedic = QGVAR(medicSetting_PAK);
|
||||
patientStateCondition = QGVAR(useCondition_PAK);
|
||||
treatmentTime = QUOTE((_this select 1) call FUNC(treatmentAdvanced_fullHealTreatmentTime));
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_fullHeal));
|
||||
itemConsumed = QGVAR(consumeItem_PAK);
|
||||
@ -266,10 +270,10 @@ class ACE_Medical_Actions {
|
||||
requiredMedic = 0;
|
||||
treatmentTime = 15;
|
||||
items[] = {};
|
||||
condition = "((_this select 1) getvariable ['ACE_medical_inCardiacArrest', false])";
|
||||
condition = "!([(_this select 1)] call ace_common_fnc_isAwake)";
|
||||
callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_CPR));
|
||||
callbackFailure = "";
|
||||
callbackProgress = "(((_this select 0) select 1) getvariable ['ACE_medical_inCardiacArrest', false])";
|
||||
callbackProgress = "!([((_this select 0) select 1)] call ace_common_fnc_isAwake)";
|
||||
animationPatient = "";
|
||||
animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback";
|
||||
animationCaller = "AinvPknlMstpSlayWnonDnon_medic";
|
||||
|
@ -133,6 +133,20 @@ class ACE_Settings {
|
||||
value = 2;
|
||||
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"};
|
||||
};
|
||||
class GVAR(useCondition_PAK) {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
values[] = {"Anytime", "Stable"};
|
||||
};
|
||||
class GVAR(useCondition_SurgicalKit) {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description);
|
||||
typeName = "SCALAR";
|
||||
value = 0;
|
||||
values[] = {"Anytime", "Stable"};
|
||||
};
|
||||
class GVAR(keepLocalSettingsSynced) {
|
||||
typeName = "BOOL";
|
||||
value = 1;
|
||||
|
@ -196,13 +196,21 @@ class CfgVehicles {
|
||||
class consumeItem_PAK {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description);
|
||||
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class keep { name = CSTRING(No); value = 0; };
|
||||
class remove { name = CSTRING(Yes); value = 1; default = 1; };
|
||||
};
|
||||
};
|
||||
class useCondition_PAK {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useCondition_PAK_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useCondition_PAK_Description);
|
||||
typeName = "NUMBER";
|
||||
class values {
|
||||
class AnyTime { name = CSTRING(AnyTime); value = 0; };
|
||||
class Stable { name = CSTRING(Stable); value = 1; default = 1; };
|
||||
};
|
||||
};
|
||||
class useLocation_PAK {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description);
|
||||
@ -227,15 +235,23 @@ class CfgVehicles {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description);
|
||||
};
|
||||
class useCondition_SurgicalKit: useCondition_PAK {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_useCondition_SurgicalKit_Description);
|
||||
class values {
|
||||
class AnyTime { name = CSTRING(AnyTime); value = 0; default = 1; };
|
||||
class Stable { name = CSTRING(Stable); value = 1; };
|
||||
};
|
||||
};
|
||||
class healHitPointAfterAdvBandage {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
|
||||
description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class painIsOnlySuppressed {
|
||||
displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName);
|
||||
description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
|
||||
description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
|
@ -92,7 +92,7 @@ GVAR(effectTimeBlood) = ACE_time;
|
||||
[{
|
||||
private["_bleeding", "_blood"];
|
||||
// Zeus interface is open or player is dead; disable everything
|
||||
if (!(isNull (findDisplay 312)) or !(alive ACE_player)) exitWith {
|
||||
if (!(isNull curatorCamera) or !(alive ACE_player)) exitWith {
|
||||
GVAR(effectUnconsciousCC) ppEffectEnable false;
|
||||
GVAR(effectUnconsciousRB) ppEffectEnable false;
|
||||
GVAR(effectBlindingCC) ppEffectEnable false;
|
||||
@ -174,52 +174,54 @@ GVAR(lastHeartBeatSound) = ACE_time;
|
||||
if ((ACE_time > GVAR(lastHeartBeat) + _interval)) then {
|
||||
GVAR(lastHeartBeat) = ACE_time;
|
||||
|
||||
// Pain effect
|
||||
_strength = (_pain - (ACE_player getvariable [QGVAR(painSuppress), 0])) max 0;
|
||||
_strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]);
|
||||
if (GVAR(painEffectType) == 1) then {
|
||||
GVAR(effectPainCC) ppEffectEnable false;
|
||||
if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then {
|
||||
_strength = _strength * 0.15;
|
||||
GVAR(effectPainCA) ppEffectEnable true;
|
||||
GVAR(effectPainCA) ppEffectAdjust [_strength, _strength, false];
|
||||
GVAR(effectPainCA) ppEffectCommit 0.01;
|
||||
[{
|
||||
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
|
||||
GVAR(effectPainCA) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
|
||||
// Pain effect, no pain effect in zeus camera
|
||||
if (isNull curatorCamera) then {
|
||||
_strength = (_pain - (ACE_player getvariable [QGVAR(painSuppress), 0])) max 0;
|
||||
_strength = _strength * (ACE_player getVariable [QGVAR(painCoefficient), GVAR(painCoefficient)]);
|
||||
if (GVAR(painEffectType) == 1) then {
|
||||
GVAR(effectPainCC) ppEffectEnable false;
|
||||
if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then {
|
||||
_strength = _strength * 0.15;
|
||||
GVAR(effectPainCA) ppEffectEnable true;
|
||||
GVAR(effectPainCA) ppEffectAdjust [_strength, _strength, false];
|
||||
GVAR(effectPainCA) ppEffectCommit 0.01;
|
||||
}, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
|
||||
GVAR(effectPainCA) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
|
||||
GVAR(effectPainCA) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
|
||||
GVAR(effectPainCA) ppEffectCommit 0.01;
|
||||
}, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false];
|
||||
GVAR(effectPainCA) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute);
|
||||
} else {
|
||||
GVAR(effectPainCA) ppEffectEnable false;
|
||||
};
|
||||
} else {
|
||||
GVAR(effectPainCA) ppEffectEnable false;
|
||||
};
|
||||
} else {
|
||||
GVAR(effectPainCA) ppEffectEnable false;
|
||||
if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then {
|
||||
_strength = _strength * 0.9;
|
||||
GVAR(effectPainCC) ppEffectEnable true;
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit 0.01;
|
||||
[{
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
|
||||
if (_pain > (ACE_player getvariable [QGVAR(painSuppress), 0]) && {alive ACE_player}) then {
|
||||
_strength = _strength * 0.9;
|
||||
GVAR(effectPainCC) ppEffectEnable true;
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - _strength,1 - _strength,0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit 0.01;
|
||||
}, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute);
|
||||
} else {
|
||||
GVAR(effectPainCC) ppEffectEnable false;
|
||||
[{
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit 0.01;
|
||||
}, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute);
|
||||
[{
|
||||
GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]];
|
||||
GVAR(effectPainCC) ppEffectCommit (_this select 1);
|
||||
}, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute);
|
||||
} else {
|
||||
GVAR(effectPainCC) ppEffectEnable false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -56,6 +56,7 @@ PREP(isInMedicalFacility);
|
||||
PREP(isInMedicalVehicle);
|
||||
PREP(isMedic);
|
||||
PREP(isMedicalVehicle);
|
||||
PREP(isInStableCondition);
|
||||
PREP(itemCheck);
|
||||
PREP(modifyMedicalAction);
|
||||
PREP(onMedicationUsage);
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition"];
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
_selectionName = _this select 2;
|
||||
@ -44,7 +44,6 @@ if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false};
|
||||
_items = getArray (_config >> "items");
|
||||
if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false};
|
||||
|
||||
_locations = getArray (_config >> "treatmentLocations");
|
||||
|
||||
_return = true;
|
||||
if (getText (_config >> "condition") != "") then {
|
||||
@ -62,6 +61,14 @@ if (getText (_config >> "condition") != "") then {
|
||||
};
|
||||
if (!_return) exitwith {false};
|
||||
|
||||
_patientStateCondition = if (isText(_config >> "patientStateCondition")) then {
|
||||
missionNamespace getvariable [getText(_config >> "patientStateCondition"), 0]
|
||||
} else {
|
||||
getNumber(_config >> "patientStateCondition")
|
||||
};
|
||||
if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false};
|
||||
|
||||
_locations = getArray (_config >> "treatmentLocations");
|
||||
if ("All" in _locations) exitwith {true};
|
||||
|
||||
private [ "_medFacility", "_medVeh"];
|
||||
|
@ -16,7 +16,6 @@
|
||||
private ["_unit","_return"];
|
||||
_unit = _this select 0;
|
||||
|
||||
if (GVAR(level) == 1) exitwith {true};
|
||||
if (isnil QGVAR(unconsciousConditions)) then {
|
||||
GVAR(unconsciousConditions) = [];
|
||||
};
|
||||
|
@ -58,10 +58,10 @@ if (isClass (_config >> _className)) then {
|
||||
|
||||
_bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []];
|
||||
_exist = false;
|
||||
_injuryId = _injury select 0;
|
||||
_injuryType = _injury select 1;
|
||||
_bandagedInjury = [];
|
||||
{
|
||||
if ((_x select 0) == _injuryId) exitwith {
|
||||
if ((_x select 1) == _injuryType && (_x select 2) == (_injury select 2)) exitwith {
|
||||
_exist = true;
|
||||
_existingInjury = _x;
|
||||
_existingInjury set [3, (_existingInjury select 3) + _impact];
|
||||
@ -73,16 +73,11 @@ _bandagedInjury = [];
|
||||
|
||||
if !(_exist) then {
|
||||
// [ID, classID, bodypart, percentage treated, bloodloss rate]
|
||||
_bandagedInjury = [_injuryId, _injury select 1, _injury select 2, _impact, _injury select 4];
|
||||
_bandagedInjury = [_injury select 0, _injury select 1, _injury select 2, _impact, _injury select 4];
|
||||
_bandagedWounds pushback _bandagedInjury;
|
||||
};
|
||||
|
||||
_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, !USE_WOUND_EVENT_SYNC];
|
||||
|
||||
if (USE_WOUND_EVENT_SYNC) then {
|
||||
// sync _bandagedInjury
|
||||
|
||||
};
|
||||
_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true];
|
||||
|
||||
// Check if we are ever going to reopen this
|
||||
if (random(1) <= _reopeningChance) then {
|
||||
@ -95,22 +90,19 @@ if (random(1) <= _reopeningChance) then {
|
||||
_injuryIndex = _this select 3;
|
||||
_injury = _this select 4;
|
||||
|
||||
if (alive _target) then {
|
||||
//if (alive _target) then {
|
||||
_openWounds = _target getvariable [QGVAR(openWounds), []];
|
||||
if ((count _openWounds)-1 < _injuryIndex) exitwith {};
|
||||
_selectedInjury = _openWounds select _injuryIndex;
|
||||
if (_selectedInjury select 0 == _injury select 0) then { // matching the IDs
|
||||
if (_selectedInjury select 1 == _injury select 1 && (_selectedInjury select 2) == (_injury select 2)) then { // matching the IDs
|
||||
_selectedInjury set [3, (_selectedInjury select 3) + _impact];
|
||||
_openWounds set [_injuryIndex, _selectedInjury];
|
||||
_target setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC];
|
||||
if (USE_WOUND_EVENT_SYNC) then {
|
||||
["medical_propagateWound", [_target, _selectedInjury]] call EFUNC(common,globalEvent);
|
||||
};
|
||||
|
||||
_bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []];
|
||||
_exist = false;
|
||||
_injuryId = _injury select 0;
|
||||
_injuryId = _injury select 1;
|
||||
{
|
||||
if ((_x select 0) == _injuryId) exitwith {
|
||||
if ((_x select 1) == _injuryId && (_x select 2) == (_injury select 2)) exitwith {
|
||||
_exist = true;
|
||||
_existingInjury = _x;
|
||||
_existingInjury set [3, ((_existingInjury select 3) - _impact) max 0];
|
||||
@ -119,10 +111,11 @@ if (random(1) <= _reopeningChance) then {
|
||||
}foreach _bandagedWounds;
|
||||
|
||||
if (_exist) then {
|
||||
_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, !USE_WOUND_EVENT_SYNC];
|
||||
_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true];
|
||||
_target setvariable [QGVAR(openWounds), _openWounds, true];
|
||||
};
|
||||
};
|
||||
// Otherwise something went wrong, we we don't reopen them..
|
||||
};
|
||||
}, [_target, _impact, _part, _injuryIndex, _injury], _delay, 0] call EFUNC(common,waitAndExecute);
|
||||
//};
|
||||
}, [_target, _impact, _part, _injuryIndex, +_injury], _delay, 0] call EFUNC(common,waitAndExecute);
|
||||
};
|
||||
|
@ -80,10 +80,10 @@ if (GVAR(level) < 2) then {
|
||||
} else {
|
||||
_damageReturn = _damageReturn min 0.89;
|
||||
};
|
||||
|
||||
};
|
||||
[_unit] call FUNC(addToInjuredCollection);
|
||||
|
||||
|
||||
if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith {
|
||||
if (vehicle _unit != _unit and {damage (vehicle _unit) >= 1}) then {
|
||||
[_unit] call EFUNC(common,unloadPerson);
|
||||
@ -99,7 +99,7 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW
|
||||
if (_damageReturn >= 0.9 && {_selection in ["", "head", "body"]}) exitWith {
|
||||
if (_unit getvariable ["ACE_isUnconscious", false]) exitwith {
|
||||
[_unit] call FUNC(setDead);
|
||||
0.89
|
||||
0.89;
|
||||
};
|
||||
if (_delayedUnconsicous) then {
|
||||
[{
|
||||
@ -110,9 +110,9 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW
|
||||
[_this select 0, true] call FUNC(setUnconscious);
|
||||
}, [_unit]] call EFUNC(common,execNextFrame);
|
||||
};
|
||||
0.89
|
||||
0.89;
|
||||
};
|
||||
_damageReturn min 0.89;
|
||||
0.89;
|
||||
};
|
||||
|
||||
if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_damageReturn >= 0.9} && {_selection in ["", "head", "body"]}) exitWith {
|
||||
@ -120,8 +120,7 @@ if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_dam
|
||||
[_unit] call EFUNC(common,unloadPerson);
|
||||
};
|
||||
[_unit] call FUNC(setDead);
|
||||
|
||||
0.89
|
||||
0.89;
|
||||
};
|
||||
|
||||
_damageReturn
|
||||
_damageReturn;
|
||||
|
@ -39,8 +39,6 @@ _damageBodyParts = _unit getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]];
|
||||
_damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage];
|
||||
_unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true];
|
||||
|
||||
[_unit] call FUNC(handleDamage_advancedSetDamage);
|
||||
|
||||
_typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage);
|
||||
[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_assignWounds);
|
||||
|
||||
|
@ -81,12 +81,17 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t
|
||||
_args = _this select 0;
|
||||
|
||||
if (diag_frameno > (_args select 1) + 2) then {
|
||||
(_args select 0) setDamage 0;
|
||||
|
||||
_cache_params = (_args select 0) getVariable [QGVAR(cachedHandleDamageParams), []];
|
||||
_cache_damages = (_args select 0) getVariable QGVAR(cachedDamages);
|
||||
{
|
||||
_params = _x + [_cache_damages select _foreachIndex];
|
||||
_params call FUNC(handleDamage_advanced);
|
||||
}foreach _cache_params;
|
||||
|
||||
[(_args select 0)] call FUNC(handleDamage_advancedSetDamage);
|
||||
|
||||
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
}, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler;
|
||||
|
30
addons/medical/functions/fnc_isInStableCondition.sqf
Normal file
30
addons/medical/functions/fnc_isInStableCondition.sqf
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Author: Glowbal
|
||||
* Check if a unit is in a stable condition
|
||||
*
|
||||
* Arguments:
|
||||
* 0: The patient <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Is in stable condition <BOOL>
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_unit"];
|
||||
_unit = _this select 0;
|
||||
|
||||
if (GVAR(level) <= 1) exitwith {
|
||||
([_unit] call FUNC(getBloodloss)) == 0;
|
||||
};
|
||||
|
||||
_totalBloodLoss = 0;
|
||||
_openWounds = _unit getvariable [QGVAR(openWounds), []];
|
||||
{
|
||||
// total bleeding ratio * percentage of injury left
|
||||
_totalBloodLoss = _totalBloodLoss + ((_x select 4) * (_x select 3));
|
||||
}foreach _openWounds;
|
||||
|
||||
(_totalBloodLoss == 0);
|
@ -33,5 +33,7 @@ if !(_activated) exitWith {};
|
||||
[_logic, QGVAR(consumeItem_SurgicalKit), "consumeItem_SurgicalKit"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(useLocation_PAK), "useLocation_PAK"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(useLocation_SurgicalKit), "useLocation_SurgicalKit"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(useCondition_PAK), "useCondition_PAK"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(useCondition_SurgicalKit), "useCondition_SurgicalKit"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(healHitPointAfterAdvBandage), "healHitPointAfterAdvBandage"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(painIsOnlySuppressed), "painIsOnlySuppressed"] call EFUNC(common,readSettingFromModule);
|
||||
|
@ -49,7 +49,7 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal ==
|
||||
_unit = _args select 0;
|
||||
_startTime = _unit getvariable [QGVAR(reviveStartTime), 0];
|
||||
|
||||
if (ACE_time - _startTime > GVAR(maxReviveTime)) exitwith {
|
||||
if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith {
|
||||
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||
_unit setvariable [QGVAR(inReviveState), nil, true];
|
||||
_unit setvariable [QGVAR(reviveStartTime), nil];
|
||||
@ -66,6 +66,11 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal ==
|
||||
_unit setvariable [QGVAR(reviveStartTime), nil];
|
||||
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
if (GVAR(level) >= 2) then {
|
||||
if (_unit getvariable [QGVAR(heartRate), 60] > 0) then {
|
||||
_unit setvariable [QGVAR(heartRate), 0];
|
||||
};
|
||||
};
|
||||
}, 1, [_unit] ] call CBA_fnc_addPerFrameHandler;
|
||||
false;
|
||||
};
|
||||
|
@ -6,10 +6,14 @@
|
||||
* 0: The unit that will be put in an unconscious state <OBJECT>
|
||||
* 1: Set unconsciouns <BOOL> <OPTIONAL>
|
||||
* 2: Minimum unconscious ACE_time <NUMBER> <OPTIONAL>
|
||||
* 3: Force AI Unconscious (skip random death chance) <BOOL> <OPTIONAL>
|
||||
*
|
||||
* ReturnValue:
|
||||
* nil
|
||||
*
|
||||
* Example:
|
||||
* [bob, true] call ace_medical_fnc_setUnconscious;
|
||||
*
|
||||
* Public: yes
|
||||
*/
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig"];
|
||||
private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
_selectionName = _this select 2;
|
||||
@ -53,9 +53,6 @@ if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false};
|
||||
_items = getArray (_config >> "items");
|
||||
if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false};
|
||||
|
||||
// Check allowed locations
|
||||
_locations = getArray (_config >> "treatmentLocations");
|
||||
|
||||
_return = true;
|
||||
if (isText (_config >> "Condition")) then {
|
||||
_condition = getText(_config >> "condition");
|
||||
@ -74,6 +71,16 @@ if (isText (_config >> "Condition")) then {
|
||||
};
|
||||
if (!_return) exitwith {false};
|
||||
|
||||
_patientStateCondition = if (isText(_config >> "patientStateCondition")) then {
|
||||
missionNamespace getvariable [getText(_config >> "patientStateCondition"), 0]
|
||||
} else {
|
||||
getNumber(_config >> "patientStateCondition")
|
||||
};
|
||||
if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false};
|
||||
|
||||
// Check allowed locations
|
||||
_locations = getArray (_config >> "treatmentLocations");
|
||||
|
||||
if ("All" in _locations) then {
|
||||
_return = true;
|
||||
} else {
|
||||
|
@ -23,7 +23,7 @@ _selectionName = _this select 2;
|
||||
_className = _this select 3;
|
||||
_items = _this select 4;
|
||||
|
||||
// TODO replace by event system instead
|
||||
[[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_CPRLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */
|
||||
|
||||
if (alive _target && {(_target getvariable [QGVAR(inCardiacArrest), false] || _target getvariable [QGVAR(inReviveState), false])}) then {
|
||||
[[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_CPRLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */
|
||||
};
|
||||
true;
|
||||
|
@ -14,17 +14,15 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_caller","_target", "_n"];
|
||||
private ["_caller","_target", "_reviveStartTime"];
|
||||
_caller = _this select 0;
|
||||
_target = _this select 1;
|
||||
|
||||
_n = _target getvariable [QEGVAR(common,ENABLE_REVIVE_COUNTER),0];
|
||||
if (_n > 0) then {
|
||||
_n = _n - random(20);
|
||||
if (_n < 0) then {
|
||||
_n = 0;
|
||||
if (_target getvariable [QGVAR(inReviveState), false]) exitwith {
|
||||
_reviveStartTime = _target getvariable [QGVAR(reviveStartTime),0];
|
||||
if (_reviveStartTime > 0) then {
|
||||
_target setvariable [QGVAR(reviveStartTime), (_reviveStartTime + random(20)) min ACE_time];
|
||||
};
|
||||
_target setvariable [QEGVAR(common,ENABLE_REVIVE_COUNTER), _n];
|
||||
};
|
||||
|
||||
if (random(1)>= 0.6) exitwith {
|
||||
|
@ -60,4 +60,4 @@ if (isNil _callback) then {
|
||||
|
||||
_args call _callback;
|
||||
|
||||
_args call FUNC(createLitter);
|
||||
// _args call FUNC(createLitter);
|
||||
|
@ -1592,6 +1592,7 @@
|
||||
<Spanish>Nada</Spanish>
|
||||
<German>Keine</German>
|
||||
<Czech>Žádný</Czech>
|
||||
<Portuguese>Nada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Check_Pulse_Weak">
|
||||
<English>Weak</English>
|
||||
@ -2211,6 +2212,7 @@
|
||||
<Polish>Bandażowanie usuwa ślady krwi</Polish>
|
||||
<Czech>Obvázání odstraňuje skvrny od krve</Czech>
|
||||
<Spanish>El vendaje elimina las manchas de sangre</Spanish>
|
||||
<Portuguese>Bandagem remove manchas de sangue</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_painIsOnlySuppressed">
|
||||
<English>Pain is only temporarily suppressed</English>
|
||||
@ -2218,6 +2220,7 @@
|
||||
<Polish>Ból jest tymczasowo zwalczany</Polish>
|
||||
<Czech>Bolest je potlačena pouze dočasně</Czech>
|
||||
<Spanish>El dolor se suprime solo temporalmente</Spanish>
|
||||
<Portuguese>Dor é suprimida somente temporáriamente</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_painEffectType">
|
||||
<English>Pain Effect Type</English>
|
||||
@ -2730,6 +2733,7 @@
|
||||
<Spanish>Médico ACE</Spanish>
|
||||
<German>ACE-Medicsystem</German>
|
||||
<Czech>ACE Zdravotnické</Czech>
|
||||
<Portuguese>ACE Médico</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_Module_DisplayName">
|
||||
<English>Medical Settings [ACE]</English>
|
||||
@ -2738,6 +2742,7 @@
|
||||
<Spanish>Ajustes médicos [ACE]</Spanish>
|
||||
<German>Medizinische Einstellungen [ACE]</German>
|
||||
<Czech>Lékařské nastavení [ACE]</Czech>
|
||||
<Portuguese>Ajustes médicos [ACE]</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_level_DisplayName">
|
||||
<English>Medical Level</English>
|
||||
@ -2746,6 +2751,7 @@
|
||||
<Spanish>Nivel médico</Spanish>
|
||||
<German>Medizinisches Level</German>
|
||||
<Czech>Úroveň medického</Czech>
|
||||
<Portuguese>Nível médico</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_level_Description">
|
||||
<English>What is the medical simulation level?</English>
|
||||
@ -2754,6 +2760,7 @@
|
||||
<Spanish>¿Cuál es el nivel de simulación médica?</Spanish>
|
||||
<German>Wie hoch soll das medizinische Simulationslevel sein?</German>
|
||||
<Czech>Jaká je úroveň lékařské simulace?</Czech>
|
||||
<Portuguese>Qual o nível de simulação médica?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_basic">
|
||||
<English>Basic</English>
|
||||
@ -2762,6 +2769,7 @@
|
||||
<Spanish>Básico</Spanish>
|
||||
<German>Standard</German>
|
||||
<Czech>Základní</Czech>
|
||||
<Portuguese>Básica</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_advanced">
|
||||
<English>Advanced</English>
|
||||
@ -2770,6 +2778,7 @@
|
||||
<Spanish>Avanzado</Spanish>
|
||||
<German>Erweitert</German>
|
||||
<Czech>Pokročilé</Czech>
|
||||
<Portuguese>Avançada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_DisplayName">
|
||||
<English>Medics setting</English>
|
||||
@ -2778,6 +2787,7 @@
|
||||
<Spanish>Configuración médica</Spanish>
|
||||
<German>Medizinische Einstellungen</German>
|
||||
<Czech>Úroveň zdravotníků</Czech>
|
||||
<Portuguese>Configuração médica</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_Description">
|
||||
<English>What is the level of detail prefered for medics?</English>
|
||||
@ -2785,6 +2795,7 @@
|
||||
<Polish>Jaki jest poziom detali medycznych wyświetlanych dla medyków?</Polish>
|
||||
<Spanish>¿Cuál es el nivel de detalle preferido para los médicos?</Spanish>
|
||||
<Czech>Jaká úroveň detailů je preferována pro zdravotníky?</Czech>
|
||||
<Portuguese>Qual o nível de detalhe preferido para os médicos?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_disable">
|
||||
<English>Disable medics</English>
|
||||
@ -2793,6 +2804,7 @@
|
||||
<Spanish>Desactivar médicos</Spanish>
|
||||
<German>Sanitäter deaktivieren</German>
|
||||
<Czech>Zakázat zdravotníky</Czech>
|
||||
<Portuguese>Desativar médicos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_DisplayName">
|
||||
<English>Enable Litter</English>
|
||||
@ -2801,6 +2813,7 @@
|
||||
<Spanish>Activar restos médicos</Spanish>
|
||||
<German>Abfälle aktivieren</German>
|
||||
<Czech>Povolit odpadky</Czech>
|
||||
<Portuguese>Ativar lixo médico</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_Description">
|
||||
<English>Enable litter being created upon treatment</English>
|
||||
@ -2809,6 +2822,7 @@
|
||||
<Spanish>Activar los restos médicos que se crean en el tratamiento</Spanish>
|
||||
<German>Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde</German>
|
||||
<Czech>Vytváří odpad zdravotnického materiálu pří léčení</Czech>
|
||||
<Portuguese>Ativar lixo ser criado após tratamento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_DisplayName">
|
||||
<English>Life time of litter objects</English>
|
||||
@ -2817,6 +2831,7 @@
|
||||
<Spanish>Tiempo de vida de los restos médicos</Spanish>
|
||||
<German>Dauer des angezeigten Abfalls</German>
|
||||
<Czech>Životnost pro odpadky</Czech>
|
||||
<Portuguese>Tempo de vida dos objetos do lixo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_Description">
|
||||
<English>How long should litter objects stay? In seconds. -1 is forever.</English>
|
||||
@ -2825,6 +2840,7 @@
|
||||
<Spanish>¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre.</Spanish>
|
||||
<German>Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.</German>
|
||||
<Czech>Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy.</Czech>
|
||||
<Portuguese>Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_enableScreams_DisplayName">
|
||||
<English>Enable Screams</English>
|
||||
@ -2833,6 +2849,7 @@
|
||||
<Spanish>Activar gritos</Spanish>
|
||||
<German>Schreie aktivieren</German>
|
||||
<Czech>Povolit křik</Czech>
|
||||
<Portuguese>Ativar gritos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_enableScreams_Description">
|
||||
<English>Enable screaming by injuried units</English>
|
||||
@ -2841,6 +2858,7 @@
|
||||
<Spanish>Activar gritos para unidades heridas</Spanish>
|
||||
<German>Aktiviere Schreie bei verletzten Einheiten</German>
|
||||
<Czech>Povolit křičení zraněných jednotek</Czech>
|
||||
<Portuguese>Ativa gritos para unidades feridas</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_playerDamageThreshold_DisplayName">
|
||||
<English>Player Damage</English>
|
||||
@ -2849,6 +2867,7 @@
|
||||
<Spanish>Daño de jugador</Spanish>
|
||||
<German>Spielerschaden</German>
|
||||
<Czech>Poškození hráče</Czech>
|
||||
<Portuguese>Dano do jogador</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_playerDamageThreshold_Description">
|
||||
<English>What is the damage a player can take before being killed?</English>
|
||||
@ -2857,6 +2876,7 @@
|
||||
<Spanish>¿Cuál es el daño que un jugador puede sufrir antes de morir?</Spanish>
|
||||
<German>Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird?</German>
|
||||
<Czech>Jaké poškození může hráč dostat než bude zabit?</Czech>
|
||||
<Portuguese>Qal é o dano que um jogador pode sofrer antes de morrer?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_AIDamageThreshold_DisplayName">
|
||||
<English>AI Damage</English>
|
||||
@ -2865,6 +2885,7 @@
|
||||
<Spanish>Daño IA</Spanish>
|
||||
<German>KI-Schaden</German>
|
||||
<Czech>Poškození AI</Czech>
|
||||
<Portuguese>Dano da IA</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_AIDamageThreshold_Description">
|
||||
<English>What is the damage an AI can take before being killed?</English>
|
||||
@ -2873,6 +2894,7 @@
|
||||
<Spanish>¿Cuál es el daño que la IA puede sufrir antes de morir?</Spanish>
|
||||
<German>Wie viel Schaden kann eine KI erleiden, bis sie getötet wird?</German>
|
||||
<Czech>Jaké poškození může AI dostat než bude zabito?</Czech>
|
||||
<Portuguese>Qual é o dano que uma IA pode sofrer antes de morrer?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_enableUnconsciousnessAI_DisplayName">
|
||||
<English>AI Unconsciousness</English>
|
||||
@ -2881,6 +2903,7 @@
|
||||
<Spanish>Inconsciencia IA</Spanish>
|
||||
<German>KI-Bewusstlosigkeit</German>
|
||||
<Czech>Bezvědomí AI</Czech>
|
||||
<Portuguese>Inconsciência da IA</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_enableUnconsciousnessAI_Description">
|
||||
<English>Allow AI to go unconscious</English>
|
||||
@ -2889,30 +2912,39 @@
|
||||
<Spanish>Permita a la IA caer inconsciente</Spanish>
|
||||
<German>KI kann bewusstlos werden</German>
|
||||
<Czech>Umožňuje AI upadnout do bezvědomí</Czech>
|
||||
<Portuguese>Permite IA ficar inconsciente</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_remoteControlledAI_DisplayName">
|
||||
<English>Remote Controlled AI</English>
|
||||
<Spanish>IA controlada remotamente</Spanish>
|
||||
<Portuguese>IA controlada remotamente</Portuguese>
|
||||
<Polish>Zdalnie sterowane AI</Polish>
|
||||
<Czech>Vzdáleně ovládané AI</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_remoteControlledAI_Description">
|
||||
<English>Treat remote controlled units as AI not players?</English>
|
||||
<Spanish>¿Tratar unidades remotamente controladas como IA?</Spanish>
|
||||
<Portuguese>Tratar unidades remotamente controladas como IA?</Portuguese>
|
||||
<Polish>Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy?</Polish>
|
||||
<Czech>Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče?</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_disabled">
|
||||
<English>Disabled</English>
|
||||
<Russian>Отключено</Russian>
|
||||
<Polish>Wyłączone</Polish>
|
||||
<Spanish>Activado</Spanish>
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Deaktiviert</German>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_enabled">
|
||||
<English>Enabled</English>
|
||||
<Russian>Включено</Russian>
|
||||
<Polish>Włączone</Polish>
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<Spanish>Activado</Spanish>
|
||||
<German>Aktiviert</German>
|
||||
<Czech>Povoleno</Czech>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_DisplayName">
|
||||
<English>Prevent instant death</English>
|
||||
@ -2921,6 +2953,7 @@
|
||||
<Spanish>Prevenir muerte instantánea</Spanish>
|
||||
<German>Verhindere direkten Tod</German>
|
||||
<Czech>Zabránit okamžité smrti</Czech>
|
||||
<Portuguese>Previnir morte instantânea</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_Description">
|
||||
<English>Have a unit move to unconscious instead of death</English>
|
||||
@ -2929,6 +2962,7 @@
|
||||
<Spanish>Mover una unidad a inconsciente en vez de a muerta</Spanish>
|
||||
<German>Lässt eine Einheit bewusstlos werden anstatt zu sterben</German>
|
||||
<Czech>Jednotka upadne do bezvědomí namísto smrti</Czech>
|
||||
<Portuguese>Fazer a unidade ficar inconsciente invés de morrer</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_bleedingCoefficient_DisplayName">
|
||||
<English>Bleeding coefficient</English>
|
||||
@ -2937,6 +2971,7 @@
|
||||
<Spanish>Coeficiente de sangrado</Spanish>
|
||||
<German>Verblutungsmultiplikator</German>
|
||||
<Czech>Koeficient krvácení</Czech>
|
||||
<Portuguese>Coeficiente de sangramento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_bleedingCoefficient_Description">
|
||||
<English>Coefficient to modify the bleeding speed</English>
|
||||
@ -2945,6 +2980,7 @@
|
||||
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
|
||||
<German>Multiplikator um die Verblutungsgeschwindigkeit zu verändern</German>
|
||||
<Czech>Koeficient rychlosti krvácení</Czech>
|
||||
<Portuguese>Coeficiente para modificar a velocidade do sangramento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_painCoefficient_DisplayName">
|
||||
<English>Pain coefficient</English>
|
||||
@ -2953,6 +2989,7 @@
|
||||
<Spanish>Coeficiente de dolor</Spanish>
|
||||
<German>Schmerzmultiplikator</German>
|
||||
<Czech>Koeficient bolesti</Czech>
|
||||
<Portuguese>Coeficiente de dor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_painCoefficient_Description">
|
||||
<English>Coefficient to modify the pain intensity</English>
|
||||
@ -2961,6 +2998,7 @@
|
||||
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
|
||||
<German>Multiplikator um den Schmerzintensität zu verändern</German>
|
||||
<Czech>Koeficient intenzity bolesti</Czech>
|
||||
<Portuguese>Coeficiente para modificar a instensidade de dor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_keepLocalSettingsSynced_DisplayName">
|
||||
<English>Sync status</English>
|
||||
@ -2969,6 +3007,7 @@
|
||||
<Spanish>Sincronizador estado</Spanish>
|
||||
<German>Status synchronisieren</German>
|
||||
<Czech>Synchronizovat status</Czech>
|
||||
<Portuguese>Sincronizar estado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_keepLocalSettingsSynced_Description">
|
||||
<English>Keep unit status synced. Recommended on.</English>
|
||||
@ -2977,6 +3016,7 @@
|
||||
<Spanish>Mantener el estado de la unidad sincronizado. Recomendado activado</Spanish>
|
||||
<German>Status der Einheit synchron halten. Sollte aktiviert bleiben.</German>
|
||||
<Czech>Udržuje status jednotky synchronizovaný. Doporučeno zapnout.</Czech>
|
||||
<Portuguese>Mater o estado da unidade sincronizado. Recomendado ativado.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_MedicalSettings_Module_Description">
|
||||
<English>Provides a medical system for both players and AI.</English>
|
||||
@ -2985,6 +3025,7 @@
|
||||
<Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
|
||||
<German>Aktiviert ein medizinisches System für Spieler und KI.</German>
|
||||
<Czech>Poskytuje zdravotní systém pro hráče a AI.</Czech>
|
||||
<Portuguese>Proporciona o sistema médico para os jogadores e a IA.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Module_DisplayName">
|
||||
<English>Advanced Medical Settings [ACE]</English>
|
||||
@ -2993,6 +3034,7 @@
|
||||
<Spanish>Ajustes médicos avanzados [ACE]</Spanish>
|
||||
<German>Erweiterte medizinische Einstellungen [ACE]</German>
|
||||
<Czech>Pokročilé zdravotnické nastavení [ACE]</Czech>
|
||||
<Portuguese>Ajustes médicos avançados [ACE]</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableFor_DisplayName">
|
||||
<English>Enabled for</English>
|
||||
@ -3001,6 +3043,7 @@
|
||||
<Spanish>Hablitado para</Spanish>
|
||||
<German>Aktiviert für</German>
|
||||
<Czech>Povoleno pro</Czech>
|
||||
<Portuguese>Habilitado para</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableFor_Description">
|
||||
<English>Select what units the advanced medical system will be enabled for</English>
|
||||
@ -3009,6 +3052,7 @@
|
||||
<Spanish>Seleccione para qué unidades será habilitado el sistema médico avanzado</Spanish>
|
||||
<German>Wähle aus welche Einheiten das erweiterte medizinische System haben</German>
|
||||
<Czech>Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen</Czech>
|
||||
<Portuguese>Selecione quais unidades o sistema médico avançado será habilitado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_playeronly">
|
||||
<English>Players only</English>
|
||||
@ -3017,6 +3061,7 @@
|
||||
<Spanish>Solo jugadores</Spanish>
|
||||
<German>Nur Spieler</German>
|
||||
<Czech>Pouze hráči</Czech>
|
||||
<Portuguese>Somente jogadores</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_playersandai">
|
||||
<English>Players and AI</English>
|
||||
@ -3025,6 +3070,7 @@
|
||||
<Spanish>Jugadors e IA</Spanish>
|
||||
<German>Spieler und KI</German>
|
||||
<Czech>Hráči a AI</Czech>
|
||||
<Portuguese>Jogadores e IA</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName">
|
||||
<English>Enable Advanced wounds</English>
|
||||
@ -3033,6 +3079,7 @@
|
||||
<Spanish>Activa heridas avanzadas</Spanish>
|
||||
<German>Aktiviere erweiterte Wunden</German>
|
||||
<Czech>Povolit pokročilé zranění</Czech>
|
||||
<Portuguese>Ativar ferimentos avançados</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableAdvancedWounds_Description">
|
||||
<English>Allow reopening of bandaged wounds?</English>
|
||||
@ -3041,6 +3088,7 @@
|
||||
<Spanish>Permitir la reapertura de las heridas vendadas?</Spanish>
|
||||
<German>Erlaube das Öffnen von bandagierten Wunden?</German>
|
||||
<Czech>Umožnit znovuotevření zavázané rány?</Czech>
|
||||
<Portuguese>Permitr reabertura de ferimentos enfaixados?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName">
|
||||
<English>Vehicle Crashes</English>
|
||||
@ -3049,6 +3097,7 @@
|
||||
<Spanish>Accidentes de vehículos</Spanish>
|
||||
<German>Fahrzeugunfälle</German>
|
||||
<Czech>Poškození z kolize</Czech>
|
||||
<Portuguese>Batidas de veículos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableVehicleCrashes_Description">
|
||||
<English>Do units take damage from a vehicle crash?</English>
|
||||
@ -3057,6 +3106,7 @@
|
||||
<Spanish>¿Las unidades reciben daño de un accidente de tráfico?</Spanish>
|
||||
<German>Bekommen Einheiten von Fahrzeugunfällen Schaden?</German>
|
||||
<Czech>Dostane jednotka poškození při autonehodě?</Czech>
|
||||
<Portuguese>As unidades recebem dano de uma batida de veículo?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_PAK_DisplayName">
|
||||
<English>Allow PAK</English>
|
||||
@ -3065,6 +3115,7 @@
|
||||
<Spanish>Permitir EPA</Spanish>
|
||||
<German>Erlaube Erstehilfekasten</German>
|
||||
<Czech>Povolit osobní lékárničky</Czech>
|
||||
<Portuguese>Permitir Kit de Primeiros Socorros</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_PAK_Description">
|
||||
<English>Who can use the PAK for full heal?</English>
|
||||
@ -3073,6 +3124,7 @@
|
||||
<Spanish>¿Quién puede utilizar el EPA para una cura completa?</Spanish>
|
||||
<German>Wer kann den Erstehilfekasten für eine Endheilung verwenden?</German>
|
||||
<Czech>Kdo může použít osobní lékárničku pro plné vyléčení?</Czech>
|
||||
<Portuguese>Quem pode usar o KPS para cura completa?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_anyone">
|
||||
<English>Anyone</English>
|
||||
@ -3081,6 +3133,7 @@
|
||||
<Spanish>Nadie</Spanish>
|
||||
<German>Jeder</German>
|
||||
<Czech>Kdokoliv</Czech>
|
||||
<Portuguese>Qualquer um</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Medic">
|
||||
<English>Medics only</English>
|
||||
@ -3089,6 +3142,7 @@
|
||||
<Spanish>Solo médicos</Spanish>
|
||||
<German>Nur Sanitäter</German>
|
||||
<Czech>Pouze zdravotník</Czech>
|
||||
<Portuguese>Somente médicos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Special">
|
||||
<English>Doctors only</English>
|
||||
@ -3097,6 +3151,7 @@
|
||||
<Spanish>Solo doctores</Spanish>
|
||||
<German>Nur Ärzte</German>
|
||||
<Czech>Pouze doktor</Czech>
|
||||
<Portuguese>Somente doutores</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_PAK_DisplayName">
|
||||
<English>Remove PAK on use</English>
|
||||
@ -3105,6 +3160,7 @@
|
||||
<Spanish>Eliminar EPA después del uso</Spanish>
|
||||
<German>Entferne Erstehilfekasten bei Verwendung</German>
|
||||
<Czech>Odebrat osobní lékárničku po použití</Czech>
|
||||
<Portuguese>Remover o KPS depois do uso</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_PAK_Description">
|
||||
<English>Should PAK be removed on usage?</English>
|
||||
@ -3113,6 +3169,7 @@
|
||||
<Spanish>El EPA será eliminado después de usarlo</Spanish>
|
||||
<German>Sollen Erstehilfekästen bei Verwendung entfernt werden?</German>
|
||||
<Czech>Má se osobní lékárnička odstranit po použití?</Czech>
|
||||
<Portuguese>Deve o KPS ser removido depois do uso?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_PAK_DisplayName">
|
||||
<English>Locations PAK</English>
|
||||
@ -3121,14 +3178,26 @@
|
||||
<Spanish>Ubicacions del EPA</Spanish>
|
||||
<German>Orte für Erstehilfekasten</German>
|
||||
<Czech>Lokace osobní lékárničky</Czech>
|
||||
<Portuguese>Localizações do KPS</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_PAK_Description">
|
||||
<English>Where can the personal aid kit be used?</English>
|
||||
<English>Where can the Personal Aid Kit be used?</English>
|
||||
<Russian>Где может использоваться аптечка?</Russian>
|
||||
<Polish>Gdzie można korzystać z apteczek osobistych?</Polish>
|
||||
<Spanish>¿Dónde se puede utilizar el equipo de primeros auxilios?</Spanish>
|
||||
<German>Wo kann der Erstehilfekasten verwendet werden?</German>
|
||||
<Czech>Kde může být osobní lékárnička použita?</Czech>
|
||||
<Czech>Kde může být použita osobní lékárnička?</Czech>
|
||||
<Portuguese>Onde o kit de primeiros socorros pode ser utilizado?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useCondition_PAK_DisplayName">
|
||||
<English>Condition PAK</English>
|
||||
<Czech>Podmínka osobní lékárničky</Czech>
|
||||
<Spanish>Condición EPA</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useCondition_PAK_Description">
|
||||
<English>When can the Personal Aid Kit be used?</English>
|
||||
<Czech>Kde může být použita osobní lékárnička?</Czech>
|
||||
<Spanish>¿Cuando se puede utilizar el Equipo de primeros auxilios?</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_anywhere">
|
||||
<English>Anywhere</English>
|
||||
@ -3137,6 +3206,7 @@
|
||||
<Spanish>Donde sea</Spanish>
|
||||
<German>Überall</German>
|
||||
<Czech>Kdekoliv</Czech>
|
||||
<Portuguese>Qualquer lugar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_vehicle">
|
||||
<English>Medical vehicles</English>
|
||||
@ -3145,6 +3215,7 @@
|
||||
<Spanish>Vehiculos médicos</Spanish>
|
||||
<German>Medizinische Fahrzeuge</German>
|
||||
<Czech>Zdravotnická vozidla</Czech>
|
||||
<Portuguese>Veículos médcos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_facility">
|
||||
<English>Medical facility</English>
|
||||
@ -3153,6 +3224,7 @@
|
||||
<Spanish>Centro médico</Spanish>
|
||||
<German>Medizinische Einrichtungen</German>
|
||||
<Czech>Zdravotnické zařízení</Czech>
|
||||
<Portuguese>Instalação médica</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_vehicleAndFacility">
|
||||
<English>Vehicles & facility</English>
|
||||
@ -3161,6 +3233,7 @@
|
||||
<Spanish>Vehículos y centros</Spanish>
|
||||
<German>Fahrzeuge & Einrichtungen</German>
|
||||
<Czech>Vozidla a zařízení</Czech>
|
||||
<Portuguese>Veículos e instalações</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_disabled">
|
||||
<English>Disabled</English>
|
||||
@ -3169,6 +3242,7 @@
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Deaktiviert</German>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName">
|
||||
<English>Allow Surgical kit (Adv)</English>
|
||||
@ -3177,6 +3251,7 @@
|
||||
<Spanish>Permitir equipo quirúrgico (Avanzado)</Spanish>
|
||||
<German>Erlaube Operationskasten</German>
|
||||
<Czech>Povolit chirurgickou soupravu (Pokr.)</Czech>
|
||||
<Portuguese>Permite kit cirúrgico (avançado)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description">
|
||||
<English>Who can use the surgical kit?</English>
|
||||
@ -3185,6 +3260,7 @@
|
||||
<Spanish>¿Quién puede utilizar el equipo quirúrgico?</Spanish>
|
||||
<German>Wer kann den Operationskasten verwenden?</German>
|
||||
<Czech>Kdo může použít chirurgickou soupravu?</Czech>
|
||||
<Portuguese>Quem pode usar o kit cirúrgico?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName">
|
||||
<English>Remove Surgical kit (Adv)</English>
|
||||
@ -3193,6 +3269,7 @@
|
||||
<Spanish>Eliminar equipo quirúrgico (Avanzado)</Spanish>
|
||||
<German>Enrtferne Operationskasten (erweitert)</German>
|
||||
<Czech>Odebrat chirurgickou soupravu (Pokr.)</Czech>
|
||||
<Portuguese>Remover kit cirúrgico (avançado)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description">
|
||||
<English>Should Surgical kit be removed on usage?</English>
|
||||
@ -3201,6 +3278,7 @@
|
||||
<Spanish>Eliminar el equipo quirúrgico después del uso</Spanish>
|
||||
<German>Entferne Operationskästen bei Verwendung?</German>
|
||||
<Czech>Odebrat chirurgickou soupravu po použití?</Czech>
|
||||
<Portuguese>Deve o kit cirúrgico ser removido após o uso?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName">
|
||||
<English>Locations Surgical kit (Adv)</English>
|
||||
@ -3209,6 +3287,7 @@
|
||||
<Spanish>Ubicaciones del equipo quirúrgico (Avanzado)</Spanish>
|
||||
<German>Orte für Operationskästen (erweitert)</German>
|
||||
<Czech>Lokace chirurgické soupravy (Pokr.)</Czech>
|
||||
<Portuguese>Localizações do kit cirúrgico (avançado)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_SurgicalKit_Description">
|
||||
<English>Where can the Surgical kit be used?</English>
|
||||
@ -3217,6 +3296,17 @@
|
||||
<Spanish>Dónde se puede utilizar el equipo quirúrgico</Spanish>
|
||||
<German>Wo kann der Operationskasten verwendet werden?</German>
|
||||
<Czech>Kde může být použita chirurgická souprava?</Czech>
|
||||
<Portuguese>Onde o kit cirúrgico pode ser utilizado?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useCondition_SurgicalKit_DisplayName">
|
||||
<English>Condition Surgical kit (Adv)</English>
|
||||
<Czech>Podmínka chirurgické soupravy (Pokr.)</Czech>
|
||||
<Spanish>Condición de equipo quirúrgico (Av)</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useCondition_SurgicalKit_Description">
|
||||
<English>When can the Surgical kit be used?</English>
|
||||
<Czech>Kde může být použita chirurgická souprava?</Czech>
|
||||
<Spanish>¿Cuando se puede utilizar el equipo quirúrgico?</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName">
|
||||
<English>Bloodstains</English>
|
||||
@ -3224,6 +3314,7 @@
|
||||
<Polish>Plamy krwi</Polish>
|
||||
<Czech>Skvrny od krve</Czech>
|
||||
<Spanish>Manchas de sangre</Spanish>
|
||||
<Portuguese>Manchas de sangue</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description">
|
||||
<English>Bandaging removes bloodstains</English>
|
||||
@ -3231,6 +3322,7 @@
|
||||
<Polish>Bandażowanie usuwa ślady krwi</Polish>
|
||||
<Czech>Obvázání odstraňuje skvrny od krve</Czech>
|
||||
<Spanish>El vendaje elimina las manchas de sangre</Spanish>
|
||||
<Portuguese>Bandagem remove manchas de sangue</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName">
|
||||
<English>Pain suppression</English>
|
||||
@ -3238,6 +3330,7 @@
|
||||
<Polish>Zwalczanie bólu</Polish>
|
||||
<Czech>Potlačení bolesti</Czech>
|
||||
<Spanish>Supresión del dolor</Spanish>
|
||||
<Portuguese>Supressão de dor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_Description">
|
||||
<English>Pain is only temporarily suppressed, not removed</English>
|
||||
@ -3245,6 +3338,7 @@
|
||||
<Polish>Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale</Polish>
|
||||
<Czech>Bolest je potlačena, ale jen dočastně</Czech>
|
||||
<Spanish>El dolor se suprime solo temporalmente, no se elimina.</Spanish>
|
||||
<Portuguese>Dor é somente temporáriamente suprimida, não removida</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Module_Description">
|
||||
<English>Configure the treatment settings from ACE Medical</English>
|
||||
@ -3253,6 +3347,7 @@
|
||||
<Spanish>Configure las opciones de tratamiento del ACE Médico</Spanish>
|
||||
<German>Behandlungseinstellungen vom ACE-Medical konfigurieren</German>
|
||||
<Czech>Konfigurace nastavení léčby ze zdravotnické systému ACE</Czech>
|
||||
<Portuguese>Configure as opções de tratamento do ACE Médico</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_Module_DisplayName">
|
||||
<English>Revive Settings [ACE]</English>
|
||||
@ -3261,6 +3356,7 @@
|
||||
<Spanish>Sistema de resucitado [ACE]</Spanish>
|
||||
<German>Wiederbelebungseinstellungen [ACE]</German>
|
||||
<Czech>Nastavení oživení [ACE]</Czech>
|
||||
<Portuguese>Sistema de reavivamento [ACE]</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_enableRevive_DisplayName">
|
||||
<English>Enable Revive</English>
|
||||
@ -3269,6 +3365,7 @@
|
||||
<Spanish>Habilitar resucitado</Spanish>
|
||||
<German>Erlaube Wiederbelebung</German>
|
||||
<Czech>Povolit oživení</Czech>
|
||||
<Portuguese>Habilitar reavivamento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_enableRevive_Description">
|
||||
<English>Enable a basic revive system</English>
|
||||
@ -3277,6 +3374,7 @@
|
||||
<Spanish>Habilitar un sistema básico de resucitado</Spanish>
|
||||
<German>Aktiviere Standard-Wiederbelebungssystem</German>
|
||||
<Czech>Povolit základní systém oživení</Czech>
|
||||
<Portuguese>Habilitar um sistema básico de reavivamento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_maxReviveTime_DisplayName">
|
||||
<English>Max Revive time</English>
|
||||
@ -3285,6 +3383,7 @@
|
||||
<Spanish>Tiempo máximo de resucitado</Spanish>
|
||||
<German>Maximale Wiederbelebungszeit</German>
|
||||
<Czech>Maximální čas pro oživení</Czech>
|
||||
<Portuguese>Tempo máximo de reavivamento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_maxReviveTime_Description">
|
||||
<English>Max amount of seconds a unit can spend in revive state</English>
|
||||
@ -3293,6 +3392,7 @@
|
||||
<Spanish>Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación</Spanish>
|
||||
<German>Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann</German>
|
||||
<Czech>Maximální doba v agónii v sekundách</Czech>
|
||||
<Portuguese>Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_amountOfReviveLives_DisplayName">
|
||||
<English>Max Revive lives</English>
|
||||
@ -3301,6 +3401,7 @@
|
||||
<Spanish>Vidas máximas de resucitado</Spanish>
|
||||
<German>Maximale Leben bei Wiederbelebung</German>
|
||||
<Czech>Maximální počet oživení</Czech>
|
||||
<Portuguese>Vidas máximas do reavivado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_amountOfReviveLives_Description">
|
||||
<English>Max amount of lives a unit. 0 or -1 is disabled.</English>
|
||||
@ -3309,6 +3410,7 @@
|
||||
<Spanish>Cantidad máxima de vidas por unidad. 0 o -1 es desactivado.</Spanish>
|
||||
<German>Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert.</German>
|
||||
<Czech>Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno.</Czech>
|
||||
<Portuguese>Quantidade máxima de vidas por unidade. 0 ou -1 é desativado.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_ReviveSettings_Module_Description">
|
||||
<English>Provides a medical system for both players and AI.</English>
|
||||
@ -3317,6 +3419,7 @@
|
||||
<Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
|
||||
<German>Aktiviert das Medicsystem für Spieler und KI.</German>
|
||||
<Czech>Poskytuje zdravotní systém pro hráče a AI.</Czech>
|
||||
<Portuguese>Proporciona um sistema médico para jogadores e IA.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_DisplayName">
|
||||
<English>Set Medic Class [ACE]</English>
|
||||
@ -3325,6 +3428,7 @@
|
||||
<Spanish>Establecer case médica [ACE]</Spanish>
|
||||
<German>Setze Sanitäterklassen [ACE]</German>
|
||||
<Czech>Určit třídu medika [ACE]</Czech>
|
||||
<Portuguese>Definir classe médica [ACE]</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_EnableList_DisplayName">
|
||||
<English>List</English>
|
||||
@ -3333,6 +3437,7 @@
|
||||
<Spanish>Lista</Spanish>
|
||||
<German>Liste</German>
|
||||
<Czech>Seznam</Czech>
|
||||
<Portuguese>Lista</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_EnableList_Description">
|
||||
<English>List of unit names that will be classified as medic, separated by commas.</English>
|
||||
@ -3341,6 +3446,7 @@
|
||||
<Spanish>Lista de los nombres de las unidades que se clasifican como médico, separados por comas.</Spanish>
|
||||
<German>Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt.</German>
|
||||
<Czech>Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami.</Czech>
|
||||
<Portuguese>Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_DisplayName">
|
||||
<English>Is Medic</English>
|
||||
@ -3349,13 +3455,13 @@
|
||||
<Spanish>Es médico</Spanish>
|
||||
<German>Ist Sanitäter</German>
|
||||
<Czech>Je zdravotník</Czech>
|
||||
<Portuguese>É médico</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_Description">
|
||||
<English></English>
|
||||
<Russian></Russian>
|
||||
<Polish></Polish>
|
||||
<Polish>Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom.</Polish>
|
||||
<German>Dieses Modul legt fest welche Einheit ein Sanitäter ist.</German>
|
||||
<Czech>Tento modul určuje, která jednotka je zdravotník.</Czech>
|
||||
<Portuguese>Este módulo determina qual unidade é um paramédico.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_none">
|
||||
<English>None</English>
|
||||
@ -3364,6 +3470,7 @@
|
||||
<Spanish>Nada</Spanish>
|
||||
<German>Keine</German>
|
||||
<Czech>Žádný</Czech>
|
||||
<Portuguese>Nada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_medic">
|
||||
<English>Regular medic</English>
|
||||
@ -3372,6 +3479,7 @@
|
||||
<Spanish>Médico regular</Spanish>
|
||||
<German>Normaler Sanitäter</German>
|
||||
<Czech>Řadový zdravotník</Czech>
|
||||
<Portuguese>Médico regular</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_doctor">
|
||||
<English>Doctor (Only Advanced Medics)</English>
|
||||
@ -3380,6 +3488,7 @@
|
||||
<Spanish>Doctor (Solo medicina avanzada)</Spanish>
|
||||
<German>Arzt (nur erweiterte Sanitäter)</German>
|
||||
<Czech>Doktor (Pouze pokročilý zdravotníci)</Czech>
|
||||
<Portuguese>Doutor (Somente médicos avançados)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_Description">
|
||||
<English>Assigns the ACE medic class to a unit</English>
|
||||
@ -3388,6 +3497,7 @@
|
||||
<Spanish>Asigna la clase médico ACE a una unidad</Spanish>
|
||||
<German>Weise die ACE-Sanitäterklasse einer Einheit zu</German>
|
||||
<Czech>Přiřadí ACE třídu zdravotníka do jednotky</Czech>
|
||||
<Portuguese>Atribui a classe médica do ACE a uma unidade</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicVehicle_Module_DisplayName">
|
||||
<English>Set Medical Vehicle [ACE]</English>
|
||||
@ -3396,6 +3506,7 @@
|
||||
<Spanish>Establecer vehículos médicos [ACE]</Spanish>
|
||||
<German>Setze medizinisches Fahrzeug [ACE]</German>
|
||||
<Czech>Určit zdravotnické vozidlo [ACE]</Czech>
|
||||
<Portuguese>Definir veículo médico [ACE]</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicVehicle_EnableList_DisplayName">
|
||||
<English>List</English>
|
||||
@ -3404,6 +3515,7 @@
|
||||
<Spanish>Lista</Spanish>
|
||||
<German>Liste</German>
|
||||
<Czech>Seznam</Czech>
|
||||
<Portuguese>Lista</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicVehicle_EnableList_Description">
|
||||
<English>List of vehicles that will be classified as medical vehicle, separated by commas.</English>
|
||||
@ -3412,6 +3524,7 @@
|
||||
<Spanish>Lista de los vehículos que se clasifican como vehículo médicos, separados por comas.</Spanish>
|
||||
<German>Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt.</German>
|
||||
<Czech>Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami.</Czech>
|
||||
<Portuguese>Lista de veículos que serão classificados como veículos médicos, separados por vírgulas.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicVehicle_enabled_DisplayName">
|
||||
<English>Is Medical Vehicle</English>
|
||||
@ -3420,6 +3533,7 @@
|
||||
<Spanish>Es vehículo médico</Spanish>
|
||||
<German>Ist medizinisches Fahrzeug</German>
|
||||
<Czech>Je zdravotnické vozidlo</Czech>
|
||||
<Portuguese>É um veículo médico</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicVehicle_enabled_Description">
|
||||
<English>Whatever or not the objects in the list will be a medical vehicle.</English>
|
||||
@ -3428,6 +3542,7 @@
|
||||
<Spanish>Cualquiera de la lista o fuera de ella será un vehículo médico.</Spanish>
|
||||
<German>Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist.</German>
|
||||
<Czech>Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla.</Czech>
|
||||
<Portuguese>Se serão ou não os objetos dessa lista veículos médicos.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicVehicle_Module_Description">
|
||||
<English>Assigns the ACE medic class to a unit</English>
|
||||
@ -3436,6 +3551,7 @@
|
||||
<Spanish>Asigna la clase médico ACE a una unidad</Spanish>
|
||||
<German>Weist die ACE-Sanitäterklasse einer Einheit zu</German>
|
||||
<Czech>Přiřadí ACE třídu zdravotníka do jednotky</Czech>
|
||||
<Portuguese>Atribui a classe médica ACE a uma unidade</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicalFacility_Module_DisplayName">
|
||||
<English>Set Medical Facility [ACE]</English>
|
||||
@ -3444,6 +3560,7 @@
|
||||
<Spanish>Establece el centro médico [ACE]</Spanish>
|
||||
<German>Setze medizinische Einrichtung [ACE]</German>
|
||||
<Czech>Určit zdravotnické zařízení [ACE]</Czech>
|
||||
<Portuguese>Definir instalação médica [ACE]</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicalFacility_enabled_DisplayName">
|
||||
<English>Is Medical Facility</English>
|
||||
@ -3452,6 +3569,7 @@
|
||||
<Spanish>Es centro médico</Spanish>
|
||||
<German>Ist eine medizinische Einrichtung</German>
|
||||
<Czech>Je zdravotnické zařízení</Czech>
|
||||
<Portuguese>É uma instalação médica</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicalFacility_enabled_Description">
|
||||
<English>Registers an object as a medical facility</English>
|
||||
@ -3460,6 +3578,7 @@
|
||||
<Spanish>Registra un objeto como un centro médico</Spanish>
|
||||
<German>Definiert ein Objekt als medizinische Einrichtung</German>
|
||||
<Czech>Registruje objekt jako zdravotnické zařízení</Czech>
|
||||
<Portuguese>Registra um objeto como instalacão médica</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AssignMedicalFacility_Module_Description">
|
||||
<English>Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles.</English>
|
||||
@ -3468,6 +3587,7 @@
|
||||
<Spanish>Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos.</Spanish>
|
||||
<German>Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden.</German>
|
||||
<Czech>Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla.</Czech>
|
||||
<Portuguese>Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_medicalSupplyCrate">
|
||||
<English>[ACE] Medical Supply Crate (Basic)</English>
|
||||
@ -3476,6 +3596,7 @@
|
||||
<Spanish>[ACE] Caja de suministros médicos (Básica)</Spanish>
|
||||
<German>[ACE] Medizinische Kiste (standard)</German>
|
||||
<Czech>[ACE] Zdravotnické zásoby (základní)</Czech>
|
||||
<Portuguese>[ACE] Caixa com suprimentos médicos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_medicalSupplyCrate_advanced">
|
||||
<English>[ACE] Medical Supply Crate (Advanced)</English>
|
||||
@ -3484,6 +3605,7 @@
|
||||
<Spanish>[ACE] Caja de suministros médicos (Avanzada)</Spanish>
|
||||
<German>[ACE] Medizinische Kiste (erweitert)</German>
|
||||
<Czech>[ACE] Zdravotnické zásoby (pokročilé)</Czech>
|
||||
<Portuguese>[ACE] Caixa com suprimentos médicos (Avançados)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Yes">
|
||||
<English>Yes</English>
|
||||
@ -3509,5 +3631,15 @@
|
||||
<Portuguese>Não</Portuguese>
|
||||
<Italian>No</Italian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_AnyTime">
|
||||
<English>Anytime</English>
|
||||
<Czech>Kdykoli</Czech>
|
||||
<Spanish>Siempre</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Stable">
|
||||
<English>Stable</English>
|
||||
<Czech>Stabilní</Czech>
|
||||
<Spanish>Estable</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -306,12 +306,14 @@
|
||||
<Polish>Wypełnienie mapy MicroDAGR</Polish>
|
||||
<Spanish>Relleno del mapa MicroDAGR</Spanish>
|
||||
<Czech>MicroDAGR - Vyplnění mapy</Czech>
|
||||
<Portuguese>Preenchimento de mapa do MicroDAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_MapDataAvailable_DisplayName">
|
||||
<English>MicroDAGR Map Fill</English>
|
||||
<Polish>Wypełnienie mapy MicroDAGR</Polish>
|
||||
<Spanish>Relleno del mapa MicroDAGR</Spanish>
|
||||
<Czech>MicroDAGR - Vyplnění mapy</Czech>
|
||||
<Portuguese>Preenchimento de mapa do MicroDAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_MapDataAvailable_Description">
|
||||
<English>How much map data is filled on MicroDAGR's</English>
|
||||
@ -319,6 +321,7 @@
|
||||
<Spanish>Cuanta información está disponible en el mapa del MicroDAG</Spanish>
|
||||
<German>Wie viel Daten auf einem MicroDAGR zu sehen sind</German>
|
||||
<Czech>Kolik informací je načteno do MicroDAGR?</Czech>
|
||||
<Portuguese>Quanta informação é preenchida no mapa do MicroDAGR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_None">
|
||||
<English>Full Satellite + Buildings</English>
|
||||
@ -326,6 +329,7 @@
|
||||
<Spanish>Satelite completo + Edificios</Spanish>
|
||||
<German>Satellitenbild + Gebäude</German>
|
||||
<Czech>Satelit + Budovy</Czech>
|
||||
<Portuguese>Satélite completo + Edifícios</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_Side">
|
||||
<English>Topographical + Roads</English>
|
||||
@ -333,6 +337,7 @@
|
||||
<Spanish>Topografico + Carreteras</Spanish>
|
||||
<German>Topografisch + Straßen</German>
|
||||
<Czech>Topografické + Cesty</Czech>
|
||||
<Portuguese>Topográfico + Estradas</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_Unique">
|
||||
<English>None (Cannot use map view)</English>
|
||||
@ -340,6 +345,7 @@
|
||||
<Spanish>Nada (No se puede el mapa)</Spanish>
|
||||
<German>Keine (kann keine Kartenansicht verwenden)</German>
|
||||
<Czech>Žádný (Nelze použít zobrazení mapy)</Czech>
|
||||
<Portuguese>Nada (Não pode usar a tela de mapa)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MicroDAGR_Module_Description">
|
||||
<English>Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo</English>
|
||||
@ -347,6 +353,7 @@
|
||||
<Spanish>Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo</Spanish>
|
||||
<German>Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo</German>
|
||||
<Czech>Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo</Czech>
|
||||
<Portuguese>Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -103,6 +103,7 @@
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Aus</German>
|
||||
<Czech>Vypnout</Czech>
|
||||
<Portuguese>Desligado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissileGuidance_PlayerOnly">
|
||||
<English>Player Only</English>
|
||||
@ -110,6 +111,7 @@
|
||||
<Spanish>Solo jugador</Spanish>
|
||||
<German>Nur Spieler</German>
|
||||
<Czech>Pouze hráči</Czech>
|
||||
<Portuguese>Somente jogador</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissileGuidance_PlayerAndAi">
|
||||
<English>Player and AI</English>
|
||||
@ -117,6 +119,7 @@
|
||||
<Spanish>Jugador e IA</Spanish>
|
||||
<German>Spieler und KI</German>
|
||||
<Czech>Hráči a AI</Czech>
|
||||
<Portuguese>Jogador e IA</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -7,6 +7,7 @@
|
||||
<Spanish>Módulo de misiones ACE</Spanish>
|
||||
<German>ACE-Missionsmodule</German>
|
||||
<Czech>ACE Moduly mise</Czech>
|
||||
<Portuguese>Módulo de missões ACE</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_DisplayName">
|
||||
<English>Ambiance Sounds [ACE]</English>
|
||||
@ -14,6 +15,7 @@
|
||||
<Spanish>[ACE] Sonidos ambiente</Spanish>
|
||||
<German>Umgebungsgeräusche [ACE]</German>
|
||||
<Czech>Zvuky prostředí [ACE]</Czech>
|
||||
<Portuguese>[ACE] Sons ambientes</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundFiles_DisplayName">
|
||||
<English>Sounds</English>
|
||||
@ -21,6 +23,7 @@
|
||||
<Spanish>Sonidos</Spanish>
|
||||
<German>Sounds</German>
|
||||
<Czech>Zvuky</Czech>
|
||||
<Portuguese>Sons</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundFiles_Description">
|
||||
<English>Class names of the ambiance sounds to be played. Seperated by ','</English>
|
||||
@ -28,6 +31,7 @@
|
||||
<Spanish>Class names de los sonidos ambiente que se reproducirán. Separados por ','</Spanish>
|
||||
<German>Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch ","</German>
|
||||
<Czech>Class names zvuků prostředí, které budou přehrány. Oddělené ',' </Czech>
|
||||
<Portuguese>Nomes de classe dos sons de ambiente para serem reproduzidos. Separados por ","</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDistance_DisplayName">
|
||||
<English>Minimal Distance</English>
|
||||
@ -35,6 +39,7 @@
|
||||
<Spanish>Distancia mínima</Spanish>
|
||||
<German>Mindestabstand</German>
|
||||
<Czech>Minimální vzdálenost</Czech>
|
||||
<Portuguese>Distância mínima</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDistance_Description">
|
||||
<English>Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)</English>
|
||||
@ -42,6 +47,7 @@
|
||||
<Spanish>Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos</Spanish>
|
||||
<German>Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest</German>
|
||||
<Czech>Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem.</Czech>
|
||||
<Portuguese>Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDistance_DisplayName">
|
||||
<English>Maximum Distance</English>
|
||||
@ -49,6 +55,7 @@
|
||||
<Spanish>Distancia máxima</Spanish>
|
||||
<German>Maximalabstand</German>
|
||||
<Czech>Maximální vzdálenost</Czech>
|
||||
<Portuguese>Distância máxima</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDistance_Description">
|
||||
<English>Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)</English>
|
||||
@ -56,6 +63,7 @@
|
||||
<Spanish>Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos</Spanish>
|
||||
<German>Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest</German>
|
||||
<Czech>Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem.</Czech>
|
||||
<Portuguese>Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDelay_DisplayName">
|
||||
<English>Minimal Delay</English>
|
||||
@ -63,6 +71,7 @@
|
||||
<Spanish>Retraso mínimo</Spanish>
|
||||
<German>Minimale Verzögerung</German>
|
||||
<Czech>Minimální prodleva</Czech>
|
||||
<Portuguese>Atraso mínimo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDelay_Description">
|
||||
<English>Minimal delay between sounds played</English>
|
||||
@ -70,6 +79,7 @@
|
||||
<Spanish>Retraso mínimo entre los sonidos reproducidos</Spanish>
|
||||
<German>Minimale Verzögerung zwischen abzuspielenden Sounds</German>
|
||||
<Czech>Minimální prodleva mezi přehrávanými zvuky</Czech>
|
||||
<Portuguese>Atraso mínimo entre os sons reproduzidos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDelay_DisplayName">
|
||||
<English>Maximum Delay</English>
|
||||
@ -77,6 +87,7 @@
|
||||
<Spanish>Retraso máximo</Spanish>
|
||||
<German>Maximale Verzögerung</German>
|
||||
<Czech>Maximální prodleva</Czech>
|
||||
<Portuguese>Atraso máximo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDelay_Description">
|
||||
<English>Maximum delay between sounds played</English>
|
||||
@ -84,6 +95,7 @@
|
||||
<Spanish>Retraso máximo entre los sonidos reproducidos</Spanish>
|
||||
<German>Maximale Verzögerung zwischen abzuspielenden Sounds</German>
|
||||
<Czech>Maximální prodleva mezi přehrávanými zvuky</Czech>
|
||||
<Portuguese>Atraso máximo entre os sons reproduzidos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_followPlayers_DisplayName">
|
||||
<English>Follow Players</English>
|
||||
@ -91,6 +103,7 @@
|
||||
<Spanish>Seguir jugadores</Spanish>
|
||||
<German>Spielern folgen</German>
|
||||
<Czech>Následovat hráče</Czech>
|
||||
<Portuguese>Seguir jogadores</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_followPlayers_Description">
|
||||
<English>Follow players. If set to false, loop will play sounds only nearby logic position.</English>
|
||||
@ -98,6 +111,7 @@
|
||||
<Spanish>Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica.</Spanish>
|
||||
<German>Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt.</German>
|
||||
<Czech>Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki.</Czech>
|
||||
<Portuguese>Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundVolume_DisplayName">
|
||||
<English>Volume</English>
|
||||
@ -105,6 +119,7 @@
|
||||
<Spanish>Volumen</Spanish>
|
||||
<German>Lautstärke</German>
|
||||
<Czech>Hlasitost</Czech>
|
||||
<Portuguese>Volume</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundVolume_Description">
|
||||
<English>The volume of the sounds played</English>
|
||||
@ -112,6 +127,7 @@
|
||||
<Spanish>Volumen de los sonidos reproducidos</Spanish>
|
||||
<German>Lautstärke der abzuspielenden Sounds</German>
|
||||
<Czech>Hlasitost přehrávaného zvuku</Czech>
|
||||
<Portuguese>O volume em que os sons serão reproduzidos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MissionModules_AmbianceSounds_Description">
|
||||
<English>Ambiance sounds loop (synced across MP)</English>
|
||||
@ -119,6 +135,7 @@
|
||||
<Spanish>Bucle de sonidos ambiente (sincronizados en MP)</Spanish>
|
||||
<German>Umgebungsgeräusch-Schleife (im MP synchronisiert)</German>
|
||||
<Czech>Smyčka okkolního zvuku (synchronizováno v MP)</Czech>
|
||||
<Portuguese>Loop de sons ambientes (sincronizados através do MP)</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -55,6 +55,7 @@
|
||||
<Spanish>Ajustes MK6</Spanish>
|
||||
<German>MK6-Einstellungen</German>
|
||||
<Czech>MK6 - Nastavení</Czech>
|
||||
<Portuguese>Ajustes do MK6</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_airResistanceEnabled_DisplayName">
|
||||
<English>Air Resistance</English>
|
||||
@ -62,6 +63,7 @@
|
||||
<Spanish>Resistencia al aire</Spanish>
|
||||
<German>Luftwiderstand</German>
|
||||
<Czech>Odpor vzduchu</Czech>
|
||||
<Portuguese>Resistência do Ar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_airResistanceEnabled_Description">
|
||||
<English>For Player Shots, Model Air Resistance and Wind Effects</English>
|
||||
@ -69,6 +71,7 @@
|
||||
<Spanish>Para disparos del jugador, modelo de resistencia al aire y efectos de viento</Spanish>
|
||||
<German>Für Spielerschüsse, Luftwiderstand und Windeffekte</German>
|
||||
<Czech>Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek</Czech>
|
||||
<Portuguese>Para disparos do jogador, modelo de resistência de ar e efeitos de vento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_allowComputerRangefinder_DisplayName">
|
||||
<English>Allow MK6 Computer</English>
|
||||
@ -76,6 +79,7 @@
|
||||
<Spanish>Habilitar ordenador del MK6</Spanish>
|
||||
<German>Erlaube MK6-Computer</German>
|
||||
<Czech>MK6 - Povolit počítač</Czech>
|
||||
<Portuguese>Permitir computador do MK6</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_allowComputerRangefinder_Description">
|
||||
<English>Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance)</English>
|
||||
@ -83,6 +87,7 @@
|
||||
<Spanish>Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire)</Spanish>
|
||||
<German>Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist)</German>
|
||||
<Czech>Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu)</Czech>
|
||||
<Portuguese>Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_allowCompass_DisplayName">
|
||||
<English>Allow MK6 Compass</English>
|
||||
@ -90,6 +95,7 @@
|
||||
<Spanish>Habilitar brujula del MK6</Spanish>
|
||||
<German>Erlaube MK6-Kompass</German>
|
||||
<Czech>MK6 - Povolit kompas</Czech>
|
||||
<Portuguese>Permitir bússula do MK6</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_allowCompass_Description">
|
||||
<English>Show the MK6 Digital Compass</English>
|
||||
@ -97,12 +103,14 @@
|
||||
<Spanish>Muestra la brujula digital en el MK6</Spanish>
|
||||
<German>Zeige MK6-Digitaler-Kompass</German>
|
||||
<Czech>MK6 - Zobrazit digitální kompas</Czech>
|
||||
<Portuguese>Mostra a bússula digital do MK6</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Mk6Mortar_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala dostosować ustawienia moździerza MK6.</Polish>
|
||||
<German>Dieses Modul erlaubt das Einstellen des MK6-Mörsers.</German>
|
||||
<Czech>Tento modul umožňuje nastavení minometu MK6.</Czech>
|
||||
<Portuguese>Este módulo permite que você ajuste o morteiro MK6.</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -26,12 +26,8 @@
|
||||
_function = missionNamespace getvariable _function;
|
||||
};
|
||||
|
||||
if (_isGlobal) then {
|
||||
[_logic, [], true] call _function;
|
||||
} else {
|
||||
if (isServer) then {
|
||||
[_logic, [], true] call _function;
|
||||
};
|
||||
if (_isGlobal || isServer) then {
|
||||
[_logic, (synchronizedObjects _logic), true] call _function;
|
||||
};
|
||||
|
||||
if !(_isPersistent) then {
|
||||
|
@ -6,6 +6,7 @@
|
||||
<Polish>MX-2A</Polish>
|
||||
<Spanish>MX-2A</Spanish>
|
||||
<Czech>MX-2A</Czech>
|
||||
<Portuguese>MX-2A</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MX2A_Description">
|
||||
<English>Thermal imaging device</English>
|
||||
@ -13,6 +14,7 @@
|
||||
<Polish>Monokular termowizyjny</Polish>
|
||||
<Spanish>Dispositivo de imagen térmica</Spanish>
|
||||
<Czech>Termální dalekohled</Czech>
|
||||
<Portuguese>Dispositivo de imagem térmica</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -35,7 +35,7 @@ if ((_iconType == ICON_NAME_SPEAK) || (_iconType == ICON_SPEAK)) then {
|
||||
_alpha = _alpha max 0.6;//Boost alpha when speaking
|
||||
} else {
|
||||
if (_iconType == ICON_NAME_RANK) then {
|
||||
_icon = TEXTURES_RANKS select ((["PRIVATE", "CORPORAL", "SERGEANT", "LIEUTENANT", "CAPTAIN", "MAJOR", "COLONEL"] find (rank _target)) + 1);
|
||||
_icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa",(toLower(rank _target))];
|
||||
_size = 1;
|
||||
};
|
||||
};
|
||||
|
@ -16,15 +16,3 @@
|
||||
#define ICON_NAME_RANK 2
|
||||
#define ICON_NAME_SPEAK 3
|
||||
#define ICON_SPEAK 4
|
||||
|
||||
//todo?: custom rank icons??
|
||||
#define TEXTURES_RANKS [ \
|
||||
"", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\private_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\lieutenant_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\captain_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\major_gs.paa", \
|
||||
"\A3\Ui_f\data\GUI\Cfg\Ranks\colonel_gs.paa" \
|
||||
]
|
@ -115,6 +115,7 @@
|
||||
<Spanish>Etiquetas de nombre</Spanish>
|
||||
<German>Namensanzeigen</German>
|
||||
<Czech>Jmenovky</Czech>
|
||||
<Portuguese>Etiquetas de nome</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName">
|
||||
<English>Player Names View Dist.</English>
|
||||
@ -122,6 +123,7 @@
|
||||
<Spanish>Distancia de vision para nombres de jugadores</Spanish>
|
||||
<German>Spielernamen-Distanz</German>
|
||||
<Czech>Vzdálenost zobrazení jména hráčů</Czech>
|
||||
<Portuguese>Distância de visão dos nomes dos jogadores</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_PlayerNamesViewDistance_Description">
|
||||
<English>Distance in meters at which player names are shown. Default: 5</English>
|
||||
@ -129,6 +131,7 @@
|
||||
<Spanish>Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5</Spanish>
|
||||
<German>Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5</German>
|
||||
<Czech>Vzdálenost v metrech pro zobrazení jména. Výchozí: 5</Czech>
|
||||
<Portuguese>Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_showNamesForAI_DisplayName">
|
||||
<English>Show name tags for AI?</English>
|
||||
@ -136,6 +139,7 @@
|
||||
<Spanish>¿Mostrar nombres para la IA?</Spanish>
|
||||
<German>Zeige Namensanzeigen für KI?</German>
|
||||
<Czech>Zobrazit jmenovky pro AI?</Czech>
|
||||
<Portuguese>Mostrar nomes para IA?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_showNamesForAI_Description">
|
||||
<English>Show the name and rank tags for friendly AI units? Default: Do not force</English>
|
||||
@ -143,6 +147,7 @@
|
||||
<Spanish>Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar</Spanish>
|
||||
<German>Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen</German>
|
||||
<Czech>Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat</Czech>
|
||||
<Portuguese>Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_DoNotForce">
|
||||
<English>Do Not Force</English>
|
||||
@ -150,6 +155,7 @@
|
||||
<Spanish>No forzar</Spanish>
|
||||
<German>Nicht erzwingen</German>
|
||||
<Czech>Nevynucovat</Czech>
|
||||
<Portuguese>Não forçar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ForceHide">
|
||||
<English>Force Hide</English>
|
||||
@ -157,6 +163,7 @@
|
||||
<Spanish>Ocultar forzado</Spanish>
|
||||
<German>Verstecken erzwingen</German>
|
||||
<Czech>Vynuceno skrýt</Czech>
|
||||
<Portuguese>Ocultar forçado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ForceShow">
|
||||
<English>Force Show</English>
|
||||
@ -164,6 +171,7 @@
|
||||
<Spanish>Mostrar forzado</Spanish>
|
||||
<German>Anzeigen erzwingen</German>
|
||||
<Czech>Vynuceno zobrazit</Czech>
|
||||
<Portuguese>Mostrar forçado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_showVehicleCrewInfo_DisplayName">
|
||||
<English>Show crew info?</English>
|
||||
@ -171,6 +179,7 @@
|
||||
<Spanish>¿Mostrar información de la tripulación?</Spanish>
|
||||
<German>Zeige Besatzungsinfo?</German>
|
||||
<Czech>Zobrazit informace o posádce?</Czech>
|
||||
<Portuguese>Mostrar informação de tripulação?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_showVehicleCrewInfo_Description">
|
||||
<English>Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force</English>
|
||||
@ -178,6 +187,7 @@
|
||||
<Spanish>Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar</Spanish>
|
||||
<German>Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen.</German>
|
||||
<Czech>Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat </Czech>
|
||||
<Portuguese>Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_showCursorTagForVehicles_DisplayName">
|
||||
<English>Show for Vehicles</English>
|
||||
@ -185,6 +195,7 @@
|
||||
<Spanish>Mostrar para vehiculos</Spanish>
|
||||
<German>Zeige bei Fahrzeugen</German>
|
||||
<Czech>Zobrazit pro vozidla</Czech>
|
||||
<Portuguese>Mostrar para veículos</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_showCursorTagForVehicles_Description">
|
||||
<English>Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No</English>
|
||||
@ -192,6 +203,7 @@
|
||||
<Spanish>Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No</Spanish>
|
||||
<German>Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein</German>
|
||||
<Czech>Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne</Czech>
|
||||
<Portuguese>Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_Module_Description">
|
||||
<English>This module allows you to customize settings and range of Name Tags.</English>
|
||||
@ -199,6 +211,7 @@
|
||||
<German>Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.</German>
|
||||
<Spanish>Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre.</Spanish>
|
||||
<Czech>Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky.</Czech>
|
||||
<Portuguese>Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_Disabled">
|
||||
<English>Disabled</English>
|
||||
@ -206,6 +219,7 @@
|
||||
<Spanish>Desactivado</Spanish>
|
||||
<German>Deaktiviert</German>
|
||||
<Czech>Zakázáno</Czech>
|
||||
<Portuguese>Desativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_Enabled">
|
||||
<English>Enabled</English>
|
||||
@ -213,6 +227,7 @@
|
||||
<Spanish>Activado</Spanish>
|
||||
<German>Aktiviert</German>
|
||||
<Czech>Povoleno</Czech>
|
||||
<Portuguese>Ativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_OnlyCursor">
|
||||
<English>Only on Cursor</English>
|
||||
@ -220,6 +235,7 @@
|
||||
<Spanish>Solo cursor</Spanish>
|
||||
<German>Nur bei Maus</German>
|
||||
<Czech>Pouze na kurzor</Czech>
|
||||
<Portuguese>Somente no cursor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_OnlyKeypress">
|
||||
<English>Only on Keypress</English>
|
||||
@ -227,6 +243,7 @@
|
||||
<Spanish>Solo al pulsar tecla</Spanish>
|
||||
<German>Nur bei Tastendruck</German>
|
||||
<Czech>Pouze na klávesu</Czech>
|
||||
<Portuguese>Somente em tecla ativada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_OnlyCursorAndKeypress">
|
||||
<English>Only on Cursor and Keypress</English>
|
||||
@ -234,24 +251,28 @@
|
||||
<Spanish>En cursor y al pulsar tecla</Spanish>
|
||||
<German>Nur Maus und Tastendruck</German>
|
||||
<Czech>Pouze na kurzor a klávesu</Czech>
|
||||
<Portuguese>Somente em cursor ou tecla ativada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursor">
|
||||
<English>Force Show Only on Cursor</English>
|
||||
<Polish>Wymuś pod kursorem</Polish>
|
||||
<Spanish>Forzar mostrar solo en el cursor</Spanish>
|
||||
<Czech>Vynuceno zobrazit pouze na kurzor</Czech>
|
||||
<Portuguese>Forçar mostrar somente no cursor</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ForceShowOnlyKeypress">
|
||||
<English>Force Show Only on Keypress</English>
|
||||
<Polish>Wymuś po wciśnięciu klawisza</Polish>
|
||||
<Spanish>Forzar mostrar solo al pulsar tecla</Spanish>
|
||||
<Czech>Vynuceno zobrazit pouze na klávesu</Czech>
|
||||
<Portuguese>Forçar somente mostrar em tecla ativada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress">
|
||||
<English>Force Show Only on Cursor and Keypress</English>
|
||||
<Polish>Wymuś pod kursorem i po wciśnięciu klawisza</Polish>
|
||||
<Spanish>Forzar mostrar en el cursor y al pulsar tecla</Spanish>
|
||||
<Czech>Vynuceno zobrazit pouze na kurzor a klávesu</Czech>
|
||||
<Portuguese>Forçar mostrar somente em cursor e tecla ativada</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_NameTagSettings">
|
||||
<English>Use Nametag settings</English>
|
||||
@ -259,6 +280,7 @@
|
||||
<Spanish>Usar ajustes de etiquetas de nombre</Spanish>
|
||||
<German>Verwende Namenanzeigen</German>
|
||||
<Czech>Použít nastavení jmenovky</Czech>
|
||||
<Portuguese>Usar ajustes de etiquetas de nome</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_AlwaysShowAll">
|
||||
<English>Always Show All</English>
|
||||
@ -266,30 +288,35 @@
|
||||
<Spanish>Mostrar siempre todo</Spanish>
|
||||
<German>Immer alle zeigen</German>
|
||||
<Czech>Vždy zobrazit vše</Czech>
|
||||
<Portuguese>Sempre mostrar tudo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ShowPlayerNames_Desc">
|
||||
<English>Show player names and set their activation. Default: Enabled</English>
|
||||
<Polish>Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3.</Polish>
|
||||
<Spanish>Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado</Spanish>
|
||||
<Czech>Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno</Czech>
|
||||
<Portuguese>Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_ShowSoundWaves_Desc">
|
||||
<English>Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2.</English>
|
||||
<Polish>Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2.</Polish>
|
||||
<Spanish>Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2.</Spanish>
|
||||
<Czech>Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2.</Czech>
|
||||
<Portuguese>Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_TagSize_Name">
|
||||
<English>Nametags Size</English>
|
||||
<Polish>Rozmiar imion</Polish>
|
||||
<Spanish>Tamaño de las Etiquetas de nombre</Spanish>
|
||||
<Czech>Velikost jmenovky</Czech>
|
||||
<Portuguese>Tamanho das etiquetas de nome</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_NameTags_TagSize_Description">
|
||||
<English>Text and Icon Size Scaling</English>
|
||||
<Polish>Skalowanie tekstu oraz ikon</Polish>
|
||||
<Spanish>Escala del texto y el icono</Spanish>
|
||||
<Czech>Velikost textu a ikon</Czech>
|
||||
<Portuguese>Escala de tamanho dos ícones e textos</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -247,6 +247,7 @@
|
||||
<Spanish>[ACE] Permitir exportar configuración</Spanish>
|
||||
<German>Erlaube Config-Export [ACE]</German>
|
||||
<Czech>Povolit export natavení [ACE]</Czech>
|
||||
<Portuguese>[ACE] Permitir exportação de configurações</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_AllowConfigExport_allowconfigurationExport_DisplayName">
|
||||
<English>Allow</English>
|
||||
@ -254,6 +255,7 @@
|
||||
<Spanish>Permitir</Spanish>
|
||||
<German>Erlaube</German>
|
||||
<Czech>Povolit</Czech>
|
||||
<Portuguese>Permitir</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_AllowConfigExport_allowconfigurationExport_Description">
|
||||
<English>Allow export of all settings to a server config formatted.</English>
|
||||
@ -261,6 +263,7 @@
|
||||
<Spanish>Permitir la exportación de todos los ajustes de configuración a un servidor con formato.</Spanish>
|
||||
<German>Erlaube alle Einstellungen in einer Server-Config zu exportieren.</German>
|
||||
<Czech>Povolit exportovat všechna nastavení do formátu server configu.</Czech>
|
||||
<Portuguese>Permitir exportação de todas as configurações para uma configuração formatada de servidor.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_AllowConfigExport_Module_Description">
|
||||
<English>When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard.</English>
|
||||
@ -268,6 +271,7 @@
|
||||
<Spanish>Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles.</Spanish>
|
||||
<German>Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert.</German>
|
||||
<Czech>Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky.</Czech>
|
||||
<Portuguese>Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_Hide">
|
||||
<English>Hide</English>
|
||||
@ -275,6 +279,7 @@
|
||||
<Spanish>Ocultar</Spanish>
|
||||
<German>Verstecken</German>
|
||||
<Czech>Skrýt</Czech>
|
||||
<Portuguese>Ocultar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_TopRightDown">
|
||||
<English>Top right, downwards</English>
|
||||
@ -282,6 +287,7 @@
|
||||
<Spanish>Arriba a la derecha, hacia abajo</Spanish>
|
||||
<German>Open rechts, nach unten</German>
|
||||
<Czech>Vpravo nahoře, dolů</Czech>
|
||||
<Portuguese>Superior direito, para baixo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_TopRightLeft">
|
||||
<English>Top right, to the left</English>
|
||||
@ -289,6 +295,7 @@
|
||||
<Spanish>Arriba a la derecha, hacia la izquierda</Spanish>
|
||||
<German>Von rechts nach links</German>
|
||||
<Czech>Vpravo nahoře, do leva</Czech>
|
||||
<Portuguese>Superior direito, à esquerda</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_TopLeftDown">
|
||||
<English>Top left, downwards</English>
|
||||
@ -296,6 +303,7 @@
|
||||
<Spanish>Arriba a la izquierda, hacia abajo</Spanish>
|
||||
<German>Von links, nach unten</German>
|
||||
<Czech>Vlevo nahoře, dolů</Czech>
|
||||
<Portuguese>Superior esquerdo, para baixo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_TopLeftRight">
|
||||
<English>Top left, to the right</English>
|
||||
@ -303,6 +311,7 @@
|
||||
<Spanish>Arriba a la izquierda, hacia la derecha</Spanish>
|
||||
<German>Oben links nach rechts</German>
|
||||
<Czech>Vlevo nahoře, do prava</Czech>
|
||||
<Portuguese>Superior esquerdo, para a direita</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_Top">
|
||||
<English>Top</English>
|
||||
@ -310,6 +319,7 @@
|
||||
<Spanish>Arriba</Spanish>
|
||||
<German>Oben</German>
|
||||
<Czech>Nahoře</Czech>
|
||||
<Portuguese>Acima</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_Bottom">
|
||||
<English>Bottom</English>
|
||||
@ -317,26 +327,35 @@
|
||||
<Spanish>Abajo</Spanish>
|
||||
<German>Unten</German>
|
||||
<Czech>Dole</Czech>
|
||||
<Portuguese>Abaixo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_DumpDebug">
|
||||
<English>Debug To Clipboard</English>
|
||||
<Polish>Debuguj do schowka</Polish>
|
||||
<Spanish>Depurar al portapapeles</Spanish>
|
||||
<Czech>Debug do schránky</Czech>
|
||||
<Portuguese>Depuração para área de transferência</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_DumpDebugTooltip">
|
||||
<English>Sends debug information to RPT and clipboard.</English>
|
||||
<Polish>Wysyła informacje o debugowaniu do RPT oraz schowka.</Polish>
|
||||
<Spanish>Envía información de depuración al RPT y el portapapeles.</Spanish>
|
||||
<Czech>Pošle debug informace do RPT a schránky.</Czech>
|
||||
<Portuguese>Envia informação de depuração para RPT e área de transferência.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_aceNews">
|
||||
<English>ACE News</English>
|
||||
<Spanish>Noticias ACE</Spanish>
|
||||
<Portuguese>Notícias do ACE</Portuguese>
|
||||
<Polish>Wiadomości ACE</Polish>
|
||||
<Czech>ACE Novinky</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_OptionsMenu_showNewsOnMainMenu_name">
|
||||
<English>Show News on Main Menu</English>
|
||||
<Spanish>Mostrar noticias en el menú principal</Spanish>
|
||||
<Portuguese>Mostrar notícias no menu principal</Portuguese>
|
||||
<Polish>Pokazuj wiadomości ACE w menu głównym</Polish>
|
||||
<Czech>Zobrazit novinky v hlavním menu</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -6,42 +6,49 @@
|
||||
<Polish>Tabela balistyczna</Polish>
|
||||
<Spanish>Tarjeta de distancias</Spanish>
|
||||
<Czech>Vzdálenostní tabulka</Czech>
|
||||
<Portuguese>Tabela de distâncias</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RangeCard_Description">
|
||||
<English>50 METER increments -- MRAD/MRAD (reticle/turrets)</English>
|
||||
<Polish>Co 50 metrów - MRAD/MRAD (siatka/pokrętło)</Polish>
|
||||
<Spanish>Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas)</Spanish>
|
||||
<Czech>Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže)</Czech>
|
||||
<Portuguese>Incrementos de 50 METROS - MRAD/MRAD (retícula/torres)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RangeCard_OpenRangeCard">
|
||||
<English>Open Range Card</English>
|
||||
<Polish>Otwórz tabelę balistyczną</Polish>
|
||||
<Spanish>Abrir tarjeta de distancias</Spanish>
|
||||
<Czech>Otevřít vzdálenostní tabulku</Czech>
|
||||
<Portuguese>Abrir tabela de distâncias</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RangeCard_OpenRangeCardCopy">
|
||||
<English>Open Range Card Copy</English>
|
||||
<Polish>Otwórz kopię tabeli balistycznej</Polish>
|
||||
<Spanish>Abrir copia de tarjeta de distancias</Spanish>
|
||||
<Czech>Otevřít kopii vzdálenostní tabulky</Czech>
|
||||
<Portuguese>Abrir cópia da tabela de distâncias</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RangeCard_RangeCardDialogKey">
|
||||
<English>Open Range Card</English>
|
||||
<Polish>Otwórz tabelę balistyczną</Polish>
|
||||
<Spanish>Abrir tarjeta de distancias</Spanish>
|
||||
<Czech>Otevřít vzdálenostní tabulku</Czech>
|
||||
<Portuguese>Abrir tabela de distäncias</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RangeCard_RangeCardCopyDialogKey">
|
||||
<English>Open Range Card Copy</English>
|
||||
<Polish>Otwórz kopię tabeli balistycznej</Polish>
|
||||
<Spanish>Abrir copia de tarjeta de distancias</Spanish>
|
||||
<Czech>Otevřít kopii vzdálenostní tabulky</Czech>
|
||||
<Portuguese>Abrir cópia da tabela de distâncias</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_RangeCard_CopyRangeCard">
|
||||
<English>Copy Range Card</English>
|
||||
<Polish>Skopiuj tabelę balistyczną</Polish>
|
||||
<Spanish>Copiar tarjeta de distancias</Spanish>
|
||||
<Czech>Kopírovat vzdálenostní tabulku</Czech>
|
||||
<Portuguese>Copiar tabela de distäncias</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -38,7 +38,7 @@ _onSuccess = {
|
||||
};
|
||||
|
||||
_onFailure = {
|
||||
[localize LESTRING(common,ActionAborted)] call DEFUNC(common,displayTextStructured);
|
||||
[localize ELSTRING(common,ActionAborted)] call DEFUNC(common,displayTextStructured);
|
||||
};
|
||||
|
||||
_condition = {
|
||||
|
@ -1,5 +1,5 @@
|
||||
class CfgAddons {
|
||||
class GVAR(Rallypoints) {
|
||||
list[] = { "ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_RallypointExit_West", "ACE_RallypointExit_East", "ACE_RallypointExit_Independent" };
|
||||
list[] = {"ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_Rallypoint_West_Base", "ACE_Rallypoint_East_Base", "ACE_Rallypoint_Independent_Base"};
|
||||
};
|
||||
};
|
||||
|
@ -3,7 +3,7 @@
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = { "ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_RallypointExit_West", "ACE_RallypointExit_East", "ACE_RallypointExit_Independent" };
|
||||
weapons[] = {"ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_Rallypoint_West_Base", "ACE_Rallypoint_East_Base", "ACE_Rallypoint_Independent_Base"};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = { "ace_common" };
|
||||
author[] = { "bux578", "commy2" };
|
||||
|
@ -26,10 +26,12 @@ private ["_rallypoint", "_position"];
|
||||
_rallypoint = [
|
||||
objNull,
|
||||
missionNamespace getVariable ["ACE_Rallypoint_West", objNull],
|
||||
missionNamespace getVariable ["ACE_RallypointExit_East", objNull],
|
||||
missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull]
|
||||
missionNamespace getVariable ["ACE_Rallypoint_East", objNull],
|
||||
missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]
|
||||
] select ([west, east, independent] find _side) + 1;
|
||||
|
||||
TRACE_3("moving rally",_unit, _rallypoint, (typeOf _rallypoint));
|
||||
|
||||
if (isNull _rallypoint) exitWith {};
|
||||
|
||||
_position = getPosATL _unit;
|
||||
|
@ -151,6 +151,7 @@
|
||||
<Spanish>Sistema de reaparición</Spanish>
|
||||
<German>Respawn-System</German>
|
||||
<Czech>Systém znovuzrození</Czech>
|
||||
<Portuguese>Sistema de Renascimento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_SavePreDeathGear_DisplayName">
|
||||
<English>Save Gear?</English>
|
||||
@ -158,6 +159,7 @@
|
||||
<Spanish>¿Guardar equipo?</Spanish>
|
||||
<German>Ausrüstung speichern?</German>
|
||||
<Czech>Uložit výbavu?</Czech>
|
||||
<Portuguese>Salvar equipamento?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_SavePreDeathGear_Description">
|
||||
<English>Respawn with the gear a soldier had just before his death?</English>
|
||||
@ -165,6 +167,7 @@
|
||||
<Spanish>Reaparece con el equipo que el soldado tenía justo antes de morir</Spanish>
|
||||
<German>Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen?</German>
|
||||
<Czech>Znovuubjevit s výbavou kterou měl voják před smrtí?</Czech>
|
||||
<Portuguese>Renascer com o equipamento que um soldado tinha antes de sua morte?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_RemoveDeadBodiesDisconnected_DisplayName">
|
||||
<English>Remove bodies?</English>
|
||||
@ -172,6 +175,7 @@
|
||||
<Spanish>¿Eliminar cuerpos?</Spanish>
|
||||
<German>Körper entfernen?</German>
|
||||
<Czech>Odstranit těla?</Czech>
|
||||
<Portuguese>Remover corpos?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_RemoveDeadBodiesDisconnected_Description">
|
||||
<English>Remove player bodies after disconnect?</English>
|
||||
@ -179,12 +183,14 @@
|
||||
<Spanish>Elimina los cuerpos de los jugadores cuando se desconecten</Spanish>
|
||||
<German>Entferne Spielerkörper nach dem Trennen einer Verbindung?</German>
|
||||
<Czech>Odstranit hráčova těla po odpojení?</Czech>
|
||||
<Portuguese>Remover corpos dos jogadores depois de desconectar?</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu).</Polish>
|
||||
<German>Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen.</German>
|
||||
<Czech>Tento modul umožňuje nastavení znovuzrození (spawn).</Czech>
|
||||
<Portuguese>Este módulo permite que você personalize as configurações do renascimento (Spawn).</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_FriendlyFire_Module_DisplayName">
|
||||
<English>Friendly Fire Messages</English>
|
||||
@ -192,11 +198,13 @@
|
||||
<Spanish>Mensajes de fuego amigo</Spanish>
|
||||
<German>Freundbeschuss-Nachrichten</German>
|
||||
<Czech>Upozornění na přátelskou střelbu</Czech>
|
||||
<Portuguese>Mensagens de fogo amigo</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_FriendlyFire_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił.</Polish>
|
||||
<Czech>Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil.</Czech>
|
||||
<Portuguese>Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_Rallypoint_Module_DisplayName">
|
||||
<English>Rallypoint System</English>
|
||||
@ -204,11 +212,13 @@
|
||||
<Spanish>Sistema de punto de reunión</Spanish>
|
||||
<German>Rallypoint-System</German>
|
||||
<Czech>Systém shromáždění</Czech>
|
||||
<Portuguese>Sistema de ponto de encontro</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_Rallypoint_Module_Description">
|
||||
<English></English>
|
||||
<Polish>Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie.</Polish>
|
||||
<Czech>Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení.</Czech>
|
||||
<Portuguese>Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival.</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_Rallypoint_MoveRallypoint">
|
||||
<English>Move Rallypoint</English>
|
||||
@ -216,6 +226,7 @@
|
||||
<Spanish>Mover punto de reunión</Spanish>
|
||||
<German>Bewege Rallypoint</German>
|
||||
<Czech>Přesun na shromaždiště</Czech>
|
||||
<Portuguese>Mover para ponto de encontro</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Respawn_EditorCategory">
|
||||
<English>ACE Respawn</English>
|
||||
@ -223,6 +234,7 @@
|
||||
<Spanish>Reaparición ACE</Spanish>
|
||||
<German>ACE-Respawn</German>
|
||||
<Czech>ACE Znovuzrození</Czech>
|
||||
<Portuguese>ACE Respawn</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
@ -14,7 +14,7 @@ if (!hasInterface) exitWith {};
|
||||
// Conditions: canInteract
|
||||
if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
|
||||
// Conditions: specific
|
||||
if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false};
|
||||
if !([ACE_player] call EFUNC(common,canUseWeapon) && {currentWeapon ACE_player != binocular ACE_player}) exitWith {false};
|
||||
|
||||
// Statement
|
||||
[ACE_player, currentWeapon ACE_player, currentMuzzle ACE_player] call FUNC(lockSafety);
|
||||
|
@ -6,132 +6,144 @@
|
||||
<German>Sandsack</German>
|
||||
<Russian>Мешок с песком</Russian>
|
||||
<Polish>Worek z piaskiem</Polish>
|
||||
<Spanish>Sandbag</Spanish>
|
||||
<Spanish>Saco de arena</Spanish>
|
||||
<French>Sac de sable</French>
|
||||
<Czech>Pytel s pískem</Czech>
|
||||
<Italian>Sacco di Sabbia</Italian>
|
||||
<Hungarian>Homokzsák</Hungarian>
|
||||
<Portuguese>Saco de Areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_sandbagEmpty_displayName">
|
||||
<English>Sandbag (empty)</English>
|
||||
<German>Sandsack (leer)</German>
|
||||
<Russian>Мешок с песком (пустой)</Russian>
|
||||
<Polish>Worek na piasek</Polish>
|
||||
<Spanish>Sandbag (empty)</Spanish>
|
||||
<Spanish>Saco de arena (vacio)</Spanish>
|
||||
<French>Sac de sable (vide)</French>
|
||||
<Czech>Pytel na písek (prázdný)</Czech>
|
||||
<Italian>Sacco di Sabbia (Vuoto)</Italian>
|
||||
<Hungarian>Homokzsák (üres)</Hungarian>
|
||||
<Portuguese>Saco de Areia (vazio)</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_CANNOTSB">
|
||||
<English>Cannot build here</English>
|
||||
<German>Nicht möglich</German>
|
||||
<Russian>Установка на этом месте невозможна</Russian>
|
||||
<Polish>Nie można tu budować</Polish>
|
||||
<Spanish>Cannot build here</Spanish>
|
||||
<Spanish>No se puede construir aqui</Spanish>
|
||||
<French>Impossible de construire ici</French>
|
||||
<Czech>Zde nelze postavit</Czech>
|
||||
<Italian>Impossibile costruire qui</Italian>
|
||||
<Hungarian>Nem teheted ide</Hungarian>
|
||||
<Portuguese>Não pode contruir aqui</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_PICKUPSB">
|
||||
<English>Pick up Sandbag</English>
|
||||
<German>Sandsack abbauen</German>
|
||||
<Russian>Взять мешок с песком</Russian>
|
||||
<Polish>Zabierz worek</Polish>
|
||||
<Spanish>Pick up sandbag</Spanish>
|
||||
<Spanish>Coger saco de arena</Spanish>
|
||||
<French>Prendre sac de sable</French>
|
||||
<Czech>Zvednout pytel</Czech>
|
||||
<Italian>Prendi Sacco di Sabbia</Italian>
|
||||
<Hungarian>Homokzsák felvétele</Hungarian>
|
||||
<Portuguese>Pegar saco de areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_CARRYSB">
|
||||
<English>Carry Sandbag</English>
|
||||
<German>Sandsack tragen</German>
|
||||
<Russian>Нести мешок с песком</Russian>
|
||||
<Polish>Przenieś worek</Polish>
|
||||
<Spanish>Carry sandbag</Spanish>
|
||||
<Spanish>Portar saco de arena</Spanish>
|
||||
<French>Porter sac de sable</French>
|
||||
<Czech>Nést pytel</Czech>
|
||||
<Italian>Trasporta Sacco di Sabbia</Italian>
|
||||
<Hungarian>Homokzsák cipelése</Hungarian>
|
||||
<Portuguese>Carregar saco de areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_ENDCARRYSB">
|
||||
<English>End Carrying</English>
|
||||
<German>Tragen beenden</German>
|
||||
<Russian>Завершить переноску</Russian>
|
||||
<Polish>Zostaw worek</Polish>
|
||||
<Spanish>End carrying</Spanish>
|
||||
<Spanish>Dejar de portar</Spanish>
|
||||
<French>Arreter de porter</French>
|
||||
<Czech>Položit</Czech>
|
||||
<Italian>Fine Trasporto</Italian>
|
||||
<Hungarian>Cipelés abbahagyása</Hungarian>
|
||||
<Portuguese>Parar de carregar</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_DropSandbag">
|
||||
<English>Drop Sandbag</English>
|
||||
<German>Sandsack ablegen</German>
|
||||
<Russian>Положить мешок</Russian>
|
||||
<Polish>Upuść worek</Polish>
|
||||
<Spanish>Drop sandbag</Spanish>
|
||||
<Spanish>Soltar saco de arena</Spanish>
|
||||
<French>Lacher sac de sable</French>
|
||||
<Czech>Odložit pytel</Czech>
|
||||
<Italian>Lascia Sacco di Sabbia</Italian>
|
||||
<Hungarian>Homokzsák eldobása</Hungarian>
|
||||
<Portuguese>Derrubar saco de areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_ConfirmDeployment">
|
||||
<English>Confirm Deployment</English>
|
||||
<German>Aufbauen</German>
|
||||
<Russian>Подтвердить установку</Russian>
|
||||
<Polish>Potwierdź rozłożenie</Polish>
|
||||
<Spanish>Confirm Deployment</Spanish>
|
||||
<Spanish>Confirmar despliegue</Spanish>
|
||||
<French>Confirmer Déploiement</French>
|
||||
<Czech>Potvrdit Položení</Czech>
|
||||
<Italian>Conferma Posizionamento</Italian>
|
||||
<Hungarian>Lerak</Hungarian>
|
||||
<Portuguese>Confirmar implantação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_CancelDeployment">
|
||||
<English>Cancel Deployment</English>
|
||||
<German>Abbrechen</German>
|
||||
<Russian>Отменить установку</Russian>
|
||||
<Polish>Anuluj rozłożenie</Polish>
|
||||
<Spanish>Cancel Deployment</Spanish>
|
||||
<Spanish>Cancelar despliegue</Spanish>
|
||||
<French>Annuler Déploiement</French>
|
||||
<Czech>Zrušit Položení</Czech>
|
||||
<Italian>Cancella Posizionamento</Italian>
|
||||
<Hungarian>Visszavonás</Hungarian>
|
||||
<Portuguese>Cancelar implantação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_DeploySandbag">
|
||||
<English>Deploy Sandbag</English>
|
||||
<German>Sandsack aufbauen</German>
|
||||
<Russian>Установить мешок с песком</Russian>
|
||||
<Polish>Rozłóż worek z piaskiem</Polish>
|
||||
<Spanish>Deploy sandbag</Spanish>
|
||||
<Spanish>Desplegar saco de arena</Spanish>
|
||||
<French>Deployer sac de sable</French>
|
||||
<Czech>Umístit pytel</Czech>
|
||||
<Italian>Posiziona Sacco di Sabbia</Italian>
|
||||
<Hungarian>Homokzsák lerakása</Hungarian>
|
||||
<Portuguese>Implantar saco de areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_SANDBOX">
|
||||
<English>Sandbag Box</English>
|
||||
<German>Sandsack Kiste</German>
|
||||
<Russian>Ящик мешков с песком</Russian>
|
||||
<Polish>Skrzynia worków na piasek</Polish>
|
||||
<Spanish>Sandbag box</Spanish>
|
||||
<Spanish>Caja de sacos de arena</Spanish>
|
||||
<French>Caisse de sacs de sable</French>
|
||||
<Czech>Bedna na pytle s pískem</Czech>
|
||||
<Italian>Contenitore Sacchi di Sabbia</Italian>
|
||||
<Hungarian>Homokzsákos láda</Hungarian>
|
||||
<Portuguese>Caixa de saco de areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_NOSAND">
|
||||
<English>Here is no sand</English>
|
||||
<German>Hier gibt es keinen Sand</German>
|
||||
<Russian>Здесь нет песка</Russian>
|
||||
<Polish>Tu nie ma piasku</Polish>
|
||||
<Spanish>Here is no sand</Spanish>
|
||||
<Spanish>Aqui no hay arena</Spanish>
|
||||
<French>Pas de sable ici</French>
|
||||
<Czech>Tady není písek</Czech>
|
||||
<Italian>Qui non cè Sabbia</Italian>
|
||||
<Hungarian>Itt nincs homok</Hungarian>
|
||||
<Portuguese>Aqui não tem areia</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sandbag_ScrollAction">
|
||||
<English>+ Modifier, rotates</English>
|
||||
|
@ -63,7 +63,7 @@ class CfgVehicles {
|
||||
GVAR(sitRotation) = 10;
|
||||
};
|
||||
// Camping Chair
|
||||
class Land_CampingChair_V2_F: ThingX {
|
||||
class Land_CampingChair_V2_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
@ -71,44 +71,8 @@ class CfgVehicles {
|
||||
GVAR(sitPosition[]) = {0, -0.1, -0.45};
|
||||
GVAR(sitRotation) = 45;
|
||||
};
|
||||
// Chair (Plastic)
|
||||
class Land_ChairPlastic_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 90;
|
||||
GVAR(sitPosition[]) = {0, 0, -0.5};
|
||||
GVAR(sitRotation) = 5;
|
||||
};
|
||||
// Chair (Wooden)
|
||||
class Land_ChairWood_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 180;
|
||||
GVAR(sitPosition[]) = {0, -0.05, 0};
|
||||
GVAR(sitRotation) = 75;
|
||||
};
|
||||
// Office Chair
|
||||
class Land_OfficeChair_01_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 180;
|
||||
GVAR(sitPosition[]) = {0, 0, -0.6};
|
||||
GVAR(sitRotation) = 15;
|
||||
};
|
||||
// Rattan Chair
|
||||
class Land_RattanChair_01_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 180;
|
||||
GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point)
|
||||
GVAR(sitRotation) = 2;
|
||||
};
|
||||
// Field Toilet
|
||||
class Land_FieldToilet_F: ThingX {
|
||||
class Land_FieldToilet_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
@ -117,7 +81,7 @@ class CfgVehicles {
|
||||
GVAR(sitRotation) = 10;
|
||||
};
|
||||
// Toiletbox
|
||||
class Land_ToiletBox_F: ThingX {
|
||||
class Land_ToiletBox_F: ThingX {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
@ -125,4 +89,42 @@ class CfgVehicles {
|
||||
GVAR(sitPosition[]) = {0, 0.75, -1.1};
|
||||
GVAR(sitRotation) = 10;
|
||||
};
|
||||
|
||||
class Furniture_base_F;
|
||||
// Chair (Plastic)
|
||||
class Land_ChairPlastic_F: Furniture_base_F {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 90;
|
||||
GVAR(sitPosition[]) = {0, 0, -0.5};
|
||||
GVAR(sitRotation) = 5;
|
||||
};
|
||||
// Chair (Wooden)
|
||||
class Land_ChairWood_F: Furniture_base_F {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 180;
|
||||
GVAR(sitPosition[]) = {0, -0.05, 0};
|
||||
GVAR(sitRotation) = 75;
|
||||
};
|
||||
// Office Chair
|
||||
class Land_OfficeChair_01_F: Furniture_base_F {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 180;
|
||||
GVAR(sitPosition[]) = {0, 0, -0.6};
|
||||
GVAR(sitRotation) = 15;
|
||||
};
|
||||
// Rattan Chair
|
||||
class Land_RattanChair_01_F: Furniture_base_F {
|
||||
XEH_ENABLED;
|
||||
MACRO_SEAT_ACTION
|
||||
GVAR(canSit) = 1;
|
||||
GVAR(sitDirection) = 180;
|
||||
GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point)
|
||||
GVAR(sitRotation) = 2;
|
||||
};
|
||||
};
|
||||
|
@ -4,19 +4,37 @@
|
||||
<Key ID="STR_ACE_Sitting_Sit">
|
||||
<English>Sit Down</English>
|
||||
<Polish>Usiądź</Polish>
|
||||
<Portuguese>Sentar</Portuguese>
|
||||
<Czech>Sednout si</Czech>
|
||||
<Spanish>Sentarse</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sitting_Stand">
|
||||
<English>Stand Up</English>
|
||||
<Polish>Wstań</Polish>
|
||||
<Portuguese>Levantar</Portuguese>
|
||||
<Czech>Vstát</Czech>
|
||||
<Spanish>Levantarse</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sitting_Enable">
|
||||
<English>Enable Sitting</English>
|
||||
<Portuguese>Habilitar opção para sentar</Portuguese>
|
||||
<Polish>Aktywuj siadanie</Polish>
|
||||
<Czech>Povolit sezení</Czech>
|
||||
<Spanish>Acivar asiento</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sitting_ModuleDisplayName">
|
||||
<English>Sitting</English>
|
||||
<Portuguese>Sentado</Portuguese>
|
||||
<Polish>Siadanie</Polish>
|
||||
<Czech>Sedící</Czech>
|
||||
<Spanish>Sentarse</Spanish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Sitting_ModuleDescription">
|
||||
<English>This module allows you to disable the ability to sit on chairs and toilets.</English>
|
||||
<Portuguese>Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros.</Portuguese>
|
||||
<Polish>Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach.</Polish>
|
||||
<Czech>Tento modul dovoluje zakázat možnost sedět na židlých a toaletách.</Czech>
|
||||
<Spanish>Este módulo te permite desactivar la capacidad de sentarte en sillas y aseos.</Spanish>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
1
addons/spectator/$PBOPREFIX$
Normal file
1
addons/spectator/$PBOPREFIX$
Normal file
@ -0,0 +1 @@
|
||||
z\ace\addons\spectator
|
26
addons/spectator/ACE_Settings.hpp
Normal file
26
addons/spectator/ACE_Settings.hpp
Normal file
@ -0,0 +1,26 @@
|
||||
class ACE_Settings {
|
||||
class GVAR(enabled) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(limitSide) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(AI) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(tracking) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(modulePos) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
class GVAR(endMission) {
|
||||
value = 0;
|
||||
typeName = "BOOL";
|
||||
};
|
||||
};
|
11
addons/spectator/CfgEventHandlers.hpp
Normal file
11
addons/spectator/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
class Extended_PreInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||
};
|
||||
};
|
||||
|
||||
class Extended_PostInit_EventHandlers {
|
||||
class ADDON {
|
||||
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||
};
|
||||
};
|
53
addons/spectator/CfgVehicles.hpp
Normal file
53
addons/spectator/CfgVehicles.hpp
Normal file
@ -0,0 +1,53 @@
|
||||
class CfgVehicles {
|
||||
class ACE_Module;
|
||||
class ACE_ModuleSpectator: ACE_Module {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
category = "ACE";
|
||||
displayName = CSTRING(Module_DisplayName);
|
||||
function = QFUNC(moduleSpectator);
|
||||
scope = 2;
|
||||
isGlobal = 1;
|
||||
icon = PATHTOF(UI\Icon_Module_Spectator_ca.paa);
|
||||
class Arguments {
|
||||
class SpectatorEnabled {
|
||||
displayName = CSTRING(Enabled_DisplayName);
|
||||
description = CSTRING(Enabled_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class SpectatorPlayerSide {
|
||||
displayName = CSTRING(PlayerSide_DisplayName);
|
||||
description = CSTRING(PlayerSide_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class SpectatorAI {
|
||||
displayName = CSTRING(AI_DisplayName);
|
||||
description = CSTRING(AI_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class SpectatorTracking {
|
||||
displayName = CSTRING(Tracking_DisplayName);
|
||||
description = CSTRING(Tracking_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class SpectatorPos {
|
||||
displayName = CSTRING(Pos_DisplayName);
|
||||
description = CSTRING(Pos_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
class SpectatorEnd {
|
||||
displayName = CSTRING(End_DisplayName);
|
||||
description = CSTRING(End_Description);
|
||||
typeName = "BOOL";
|
||||
defaultValue = 0;
|
||||
};
|
||||
};
|
||||
class ModuleDescription {
|
||||
description = CSTRING(Module_Description);
|
||||
};
|
||||
};
|
||||
};
|
10
addons/spectator/README.md
Normal file
10
addons/spectator/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
ace_spectator
|
||||
=======
|
||||
|
||||
Spectator. Includes features from Splendid Cam, and much more.
|
||||
|
||||
## Maintainers
|
||||
|
||||
The people responsible for merging changes to this component or answering potential questions.
|
||||
|
||||
- [voiper](https://github.com/voiperr)
|
640
addons/spectator/UI.hpp
Normal file
640
addons/spectator/UI.hpp
Normal file
@ -0,0 +1,640 @@
|
||||
#define PIXEL_X (safeZoneWAbs / (getResolution select 0))
|
||||
#define PIXEL_Y (safeZoneH / (getResolution select 1))
|
||||
#define XHAIR RESUNITS_X * 4
|
||||
#define COMPASS_W RESUNITS_X * 20
|
||||
#define COMPASS_H COMPASS_W / 15
|
||||
#define COMPASS_X RESCENTRE_X - COMPASS_W / 2
|
||||
#define HELP_W RESUNITS_X * 75
|
||||
#define HELP_H RESUNITS_Y * 75
|
||||
|
||||
class ace_spectator_overlay {
|
||||
|
||||
idd = 12200;
|
||||
enableSimulation = 1;
|
||||
movingEnable = 1;
|
||||
enableDisplay = 1;
|
||||
onLoad = "uiNamespace setVariable ['ace_spectator_overlay', _this select 0]; ['Init', _this] call ace_spectator_fnc_overlay";
|
||||
|
||||
class controls {
|
||||
|
||||
class Unitlist {
|
||||
|
||||
access = 0;
|
||||
idc = 0;
|
||||
type = CT_TREE;
|
||||
style = ST_LEFT;
|
||||
default = 0;
|
||||
blinkingPeriod = 0;
|
||||
|
||||
x = QUOTE(safeZoneX);
|
||||
y = QUOTE(safeZoneY + RESUNITS_X * 4/3);
|
||||
w = QUOTE(RESUNITS_X * 30);
|
||||
h = QUOTE(RESUNITS_Y * 50);
|
||||
|
||||
colorBorder[] = {1,1,1,1};
|
||||
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
colorSelect[] = {1,0.5,0,1};
|
||||
colorMarked[] = {1,0.5,0,0.5};
|
||||
colorMarkedSelected[] = {1,0.5,0,1};
|
||||
|
||||
sizeEx = QUOTE(RESUNITS_Y * 2);
|
||||
font = GUI_FONT_NORMAL;
|
||||
shadow = 1;
|
||||
colorText[] = {1,1,1,1};
|
||||
colorSelectText[] = {1,1,1,1};
|
||||
colorMarkedText[] = {1,1,1,1};
|
||||
|
||||
tooltip = "";
|
||||
tooltipColorShade[] = {0,0,0,1};
|
||||
tooltipColorText[] = {1,1,1,1};
|
||||
tooltipColorBox[] = {1,1,1,1};
|
||||
|
||||
multiselectEnabled = 0;
|
||||
expandOnDoubleclick = 0;
|
||||
hiddenTexture = "A3\ui_f\data\gui\rsccommon\rsctree\hiddenTexture_ca.paa";
|
||||
expandedTexture = "A3\ui_f\data\gui\rsccommon\rsctree\expandedTexture_ca.paa";
|
||||
maxHistoryDelay = 1;
|
||||
|
||||
class ScrollBar {
|
||||
width = 0;
|
||||
height = 0;
|
||||
scrollSpeed = 0.01;
|
||||
|
||||
arrowEmpty = "\A3\ui_f\data\gui\cfg\scrollbar\arrowEmpty_ca.paa";
|
||||
arrowFull = "\A3\ui_f\data\gui\cfg\scrollbar\arrowFull_ca.paa";
|
||||
border = "\A3\ui_f\data\gui\cfg\scrollbar\border_ca.paa";
|
||||
thumb = "\A3\ui_f\data\gui\cfg\scrollbar\thumb_ca.paa";
|
||||
|
||||
color[] = {1,1,1,1};
|
||||
};
|
||||
|
||||
colorDisabled[] = {0,0,0,0};
|
||||
colorArrow[] = {0,0,0,0};
|
||||
|
||||
onDestroy = QUOTE(GVAR(mouseBusy) = false; false);
|
||||
onMouseEnter = QUOTE(GVAR(mouseBusy) = true; false);
|
||||
onMouseExit = QUOTE(GVAR(mouseBusy) = false; false);
|
||||
|
||||
onTreeDblClick = "['Select', _this] call ace_spectator_fnc_overlay; false";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class ace_spectator_vd {
|
||||
idd = 12201;
|
||||
enableSimulation = 1;
|
||||
enableDisplay = 0;
|
||||
movingEnable = 0;
|
||||
|
||||
onLoad = "uiNamespace setVariable ['ace_spectator_vd', _this select 0]; ['Init', _this] call ace_spectator_fnc_viewDistance";
|
||||
|
||||
class Controls {
|
||||
|
||||
class BG: vip_rsc_box {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
|
||||
y = QUOTE(safeZoneY + COMPASS_H);
|
||||
w = QUOTE(RESUNITS_X * 30);
|
||||
h = QUOTE(COMPASS_H);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
onDestroy = QUOTE(GVAR(mouseBusy) = false; false);
|
||||
};
|
||||
|
||||
class TitleFrame: vip_rsc_frame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
|
||||
y = QUOTE(safeZoneY + COMPASS_H);
|
||||
w = QUOTE(RESUNITS_X * 8);
|
||||
h = QUOTE(COMPASS_H);
|
||||
shadow = 2;
|
||||
colorText[]={1,1,1,1};
|
||||
};
|
||||
|
||||
class Title: vip_rsc_text {
|
||||
style = ST_CENTER;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
|
||||
y = QUOTE(safeZoneY + COMPASS_H);
|
||||
w = QUOTE(RESUNITS_X * 8);
|
||||
h = QUOTE(COMPASS_H);
|
||||
sizeEx = QUOTE(RESUNITS_Y * 2);
|
||||
font = GUI_FONT_NORMAL;
|
||||
shadow = 2;
|
||||
colorText[]={1,1,1,1};
|
||||
text = CSTRING(VD_Title);
|
||||
};
|
||||
|
||||
class DistanceFrame: TitleFrame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
|
||||
w = QUOTE(RESUNITS_X * 5);
|
||||
};
|
||||
|
||||
class Distance: Title {
|
||||
idc = 1;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
|
||||
w = QUOTE(RESUNITS_X * 5);
|
||||
text = "";
|
||||
};
|
||||
|
||||
class ButtonExit: vip_rsc_button {
|
||||
idc = 0;
|
||||
style = ST_CENTER;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 5);
|
||||
y = QUOTE(safeZoneY + COMPASS_H);
|
||||
w = QUOTE(RESUNITS_X * 5);
|
||||
h = QUOTE(COMPASS_H);
|
||||
|
||||
colorBackground[] = {1,1,1,1};
|
||||
sizeEx = QUOTE(RESUNITS_Y * 2);
|
||||
font = GUI_FONT_NORMAL;
|
||||
|
||||
text = CSTRING(VD_Button);
|
||||
|
||||
onButtonClick = "closeDialog 0; false";
|
||||
onMouseButtonDown = QUOTE(GVAR(mouseBusy) = true; false);
|
||||
onMouseButtonUp = QUOTE(GVAR(mouseBusy) = false; false);
|
||||
};
|
||||
|
||||
class Slider {
|
||||
idc = 2;
|
||||
|
||||
type = CT_XSLIDER;
|
||||
style = SL_HORZ;
|
||||
shadow = 2;
|
||||
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 21.5);
|
||||
y = QUOTE(safeZoneY + COMPASS_H);
|
||||
w = QUOTE(RESUNITS_X * 9.5);
|
||||
h = QUOTE(COMPASS_H);
|
||||
color[] = {1,1,1,1};
|
||||
colorActive[] = {1,1,1,1};
|
||||
colorDisabled[] = {1,1,1,0.2};
|
||||
arrowEmpty = "\A3\ui_f\data\gui\cfg\slider\arrowEmpty_ca.paa";
|
||||
arrowFull = "\A3\ui_f\data\gui\cfg\slider\arrowFull_ca.paa";
|
||||
border = "\A3\ui_f\data\gui\cfg\slider\border_ca.paa";
|
||||
thumb = "\A3\ui_f\data\gui\cfg\slider\thumb_ca.paa";
|
||||
|
||||
text = "";
|
||||
onSliderPosChanged = "['Slider', _this] call ace_spectator_fnc_viewDistance";
|
||||
onMouseButtonDown = QUOTE(GVAR(mouseBusy) = true; false);
|
||||
onMouseButtonUp = QUOTE(GVAR(mouseBusy) = false; false);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class ace_spectator_map {
|
||||
|
||||
idd = 12202;
|
||||
enableSimulation = 1;
|
||||
enableDisplay = 0;
|
||||
onLoad = "uiNameSpace setVariable ['ace_spectator_map', _this select 0]; ['Init', _this select 0] call ace_spectator_fnc_map";
|
||||
onUnload = "['Close', _this select 0] call ace_spectator_fnc_map";
|
||||
onKeyDown = "['KeyDown', _this] call ace_spectator_fnc_map";
|
||||
|
||||
class controls {
|
||||
//changes stolen from ACE_map
|
||||
class Map {
|
||||
access = 0;
|
||||
idc = 1;
|
||||
type = CT_MAP_MAIN;
|
||||
style = ST_PICTURE;
|
||||
default = 0;
|
||||
blinkingPeriod = 0;
|
||||
|
||||
x = safeZoneXAbs;
|
||||
y = safeZoneY;
|
||||
w = safeZoneWAbs;
|
||||
h = safeZoneH;
|
||||
|
||||
sizeEx = GUI_GRID_CENTER_H;
|
||||
font = GUI_FONT_NORMAL;
|
||||
colorText[] = {0,0,0,1};
|
||||
text = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
|
||||
moveOnEdges = 1;
|
||||
|
||||
ptsPerSquareSea = 5;
|
||||
ptsPerSquareTxt = 20;
|
||||
ptsPerSquareCLn = 10;
|
||||
ptsPerSquareExp = 10;
|
||||
ptsPerSquareCost = 10;
|
||||
|
||||
ptsPerSquareFor = 9;
|
||||
ptsPerSquareForEdge = 9;
|
||||
ptsPerSquareRoad = 6;
|
||||
ptsPerSquareObj = 9;
|
||||
|
||||
scaleMin = 0.001;
|
||||
scaleMax = 1.0;
|
||||
scaleDefault = 0.16;
|
||||
|
||||
alphaFadeStartScale = 2;
|
||||
alphaFadeEndScale = 2;
|
||||
maxSatelliteAlpha = 0.5;
|
||||
|
||||
colorBackground[] = {0.929412, 0.929412, 0.929412, 1.0};
|
||||
colorOutside[] = {0.929412, 0.929412, 0.929412, 1.0};
|
||||
colorSea[] = {0.4,0.6,0.8,0.5};
|
||||
colorForest[] = {0.6, 0.8, 0.2, 0.25};
|
||||
colorForestBorder[] = {0.6,0.8,0.4,1};
|
||||
colorRocks[] = {0.50, 0.50, 0.50, 0.50};
|
||||
colorRocksBorder[] = {0,0,0,1};
|
||||
colorLevels[] = {0.0, 0.0, 0.0, 1.0};
|
||||
colorMainCountlines[] = {0.858824, 0, 0,1};
|
||||
colorCountlines[] = {0.647059, 0.533333, 0.286275, 1};
|
||||
colorMainCountlinesWater[] = {0.5,0.6,0.7,0.6};
|
||||
colorCountlinesWater[] = {0.5,0.6,0.7,0.3};
|
||||
colorPowerLines[] = {0.1,0.1,0.1,1};
|
||||
colorRailWay[] = {0.8,0.2,0,1};
|
||||
colorNames[] = {1.1,0.1,1.1,0.9};
|
||||
colorInactive[] = {1,1,0,0.5};
|
||||
colorTracks[] = {0.2,0.13,0,1};
|
||||
colorTracksFill[] = {1,0.88,0.65,0.3};
|
||||
colorRoads[] = {0.2,0.13,0,1};
|
||||
colorRoadsFill[] = {1,0.88,0.65,1};
|
||||
colorMainRoads[] = {0.0,0.0,0.0,1};
|
||||
colorMainRoadsFill[] = {0.94,0.69,0.2,1};
|
||||
colorGrid[] = {0.05,0.1,0,0.6};
|
||||
colorGridMap[] = {0.05,0.1,0,0.4};
|
||||
|
||||
fontLabel="PuristaMedium";
|
||||
sizeExLabel="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
|
||||
fontGrid="TahomaB";
|
||||
sizeExGrid = 0.032;
|
||||
fontUnits="TahomaB";
|
||||
sizeExUnits="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
|
||||
fontNames="EtelkaNarrowMediumPro";
|
||||
sizeExNames="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8) * 2";
|
||||
fontInfo="PuristaMedium";
|
||||
sizeExInfo="( ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
|
||||
fontLevel="TahomaB";
|
||||
sizeExLevel=0.03;
|
||||
showCountourInterval = 1;
|
||||
|
||||
class Task {
|
||||
icon = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
color[] = {1,1,0,1};
|
||||
|
||||
iconCreated = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
colorCreated[] = {0,0,0,1};
|
||||
|
||||
iconCanceled = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
colorCanceled[] = {0,0,0,0.5};
|
||||
|
||||
iconDone = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
colorDone[] = {0,1,0,1};
|
||||
|
||||
iconFailed = "#(argb,8,8,3)color(1,1,1,1)";
|
||||
colorFailed[] = {1,0,0,1};
|
||||
|
||||
size = 8;
|
||||
importance = 1;
|
||||
coefMin = 1;
|
||||
coefMax = 1;
|
||||
};
|
||||
class ActiveMarker { //includes icons spawned by drawIcon
|
||||
color[] = {0,0,0,1};
|
||||
size = 2;
|
||||
coefMin = 1; //make sure icon doesnt scale
|
||||
};
|
||||
class Waypoint {
|
||||
coefMax = 1;
|
||||
coefMin = 4;
|
||||
color[] = {0,0,0,1};
|
||||
icon = "#(argb,8,8,3)color(0,0,0,1)";
|
||||
importance = 1;
|
||||
size = 2;
|
||||
};
|
||||
class WaypointCompleted: Waypoint{};
|
||||
class CustomMark: Waypoint{};
|
||||
class Command: Waypoint{};
|
||||
class Bush {
|
||||
icon = "";
|
||||
color[] = {0.450000, 0.640000, 0.330000, 0.0};
|
||||
size = 14;
|
||||
importance = "0.2 * 14 * 0.05";
|
||||
coefMin = 0.250000;
|
||||
coefMax = 4;
|
||||
};
|
||||
class Rock: Waypoint{color[]={0.45,0.64,0.33,0.4}; importance="0.5 * 12 * 0.05";};
|
||||
class SmallTree {
|
||||
icon = "";
|
||||
color[] = {0.450000, 0.640000, 0.330000, 0.0};
|
||||
size = 12;
|
||||
importance = "0.6 * 12 * 0.05";
|
||||
coefMin = 0.250000;
|
||||
coefMax = 4;
|
||||
};
|
||||
class Tree {
|
||||
icon = "";
|
||||
color[] = {0.450000, 0.640000, 0.330000, 0.0};
|
||||
size = 12;
|
||||
importance = "0.9 * 16 * 0.05";
|
||||
coefMin = 0.250000;
|
||||
coefMax = 4;
|
||||
};
|
||||
class Legend {
|
||||
x = SafeZoneX+SafeZoneW-.340;
|
||||
y = SafeZoneY+SafeZoneH-.152;
|
||||
font = "PuristaMedium";
|
||||
w = .340;
|
||||
h = .152;
|
||||
sizeEx = 0.039210;
|
||||
colorBackground[] = {0.906000, 0.901000, 0.880000, 0.5};
|
||||
color[] = {0, 0, 0, 0.75};
|
||||
};
|
||||
class BusStop: Waypoint{};
|
||||
class FuelStation: Waypoint{};
|
||||
class Hospital: Waypoint{};
|
||||
class Church: Waypoint{};
|
||||
class Lighthouse: Waypoint{};
|
||||
class Power: Waypoint{};
|
||||
class PowerSolar: Waypoint{};
|
||||
class PowerWave: Waypoint{};
|
||||
class PowerWind: Waypoint{};
|
||||
class Quay: Waypoint{};
|
||||
class Transmitter: Waypoint{};
|
||||
class Watertower: Waypoint{};
|
||||
class Cross: Waypoint{};
|
||||
class Chapel: Waypoint{};
|
||||
class Shipwreck: Waypoint{};
|
||||
class Bunker: Waypoint{};
|
||||
class Fortress: Waypoint{};
|
||||
class Fountain: Waypoint{};
|
||||
class Ruin: Waypoint{};
|
||||
class Stack: Waypoint{};
|
||||
class Tourism: Waypoint{};
|
||||
class ViewTower: Waypoint{};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class RscTitles {
|
||||
class ace_spectator_crosshair {
|
||||
|
||||
onLoad = "uiNamespace setVariable ['ace_spectator_crosshair', _this select 0]";
|
||||
|
||||
idd=-1;
|
||||
movingEnable=0;
|
||||
fadein=0;
|
||||
fadeout=0;
|
||||
duration=1e+011;
|
||||
|
||||
class controls {
|
||||
|
||||
class X: vip_rsc_picture {
|
||||
idc = 0;
|
||||
x = QUOTE(RESCENTRE_X - XHAIR / 2);
|
||||
y = QUOTE(RESCENTRE_Y - XHAIR * 4/3 / 2);
|
||||
w = QUOTE(XHAIR);
|
||||
h = QUOTE(XHAIR * 4/3);
|
||||
text = "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa";
|
||||
colorText[] = {1,1,1,0.8};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class ace_spectator_status {
|
||||
|
||||
onLoad = "uiNamespace setVariable ['ace_spectator_status', _this select 0]; [_this select 0] call ace_spectator_fnc_status";
|
||||
idd = -1;
|
||||
movingEnable=0;
|
||||
fadein=0;
|
||||
fadeout=0;
|
||||
duration=1e+011;
|
||||
|
||||
class controls {
|
||||
|
||||
class BGRight: vip_rsc_box {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(RESUNITS_X * 30);
|
||||
h = QUOTE(COMPASS_H);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
};
|
||||
|
||||
class BGLeft: BGRight {
|
||||
x = QUOTE(safeZoneX);
|
||||
};
|
||||
|
||||
class SpeedFrame: vip_rsc_frame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 5);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(RESUNITS_X * 5);
|
||||
h = QUOTE(COMPASS_H);
|
||||
shadow = 2;
|
||||
colorText[]={1,1,1,1};
|
||||
};
|
||||
|
||||
class Speed: vip_rsc_text {
|
||||
idc = 0;
|
||||
style = ST_CENTER;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 5);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(RESUNITS_X * 5);
|
||||
h = QUOTE(COMPASS_H);
|
||||
colorText[]={1,1,1,1};
|
||||
sizeEx = QUOTE(RESUNITS_Y * 2);
|
||||
font = GUI_FONT_NORMAL;
|
||||
text = "";
|
||||
};
|
||||
|
||||
class FovFrame: SpeedFrame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
|
||||
};
|
||||
|
||||
class Fov: Speed {
|
||||
idc = 4;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 10.5);
|
||||
};
|
||||
|
||||
class TimeAccFrame: SpeedFrame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 21.5);
|
||||
};
|
||||
|
||||
class TimeAcc: Speed {
|
||||
idc = 5;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 21.5);
|
||||
};
|
||||
|
||||
class FocusFrame: SpeedFrame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 16);
|
||||
};
|
||||
|
||||
class Focus: Speed {
|
||||
idc = 6;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 16);
|
||||
};
|
||||
|
||||
class NameFrame: SpeedFrame {
|
||||
x = QUOTE(safeZoneX);
|
||||
w = QUOTE(RESUNITS_X * 24.5);
|
||||
};
|
||||
|
||||
class Name: Speed {
|
||||
idc = 1;
|
||||
x = QUOTE(safeZoneX);
|
||||
w = QUOTE(RESUNITS_X * 24.5);
|
||||
};
|
||||
|
||||
class ModeFrame: SpeedFrame {
|
||||
x = QUOTE(safeZoneX + RESUNITS_X * 25);
|
||||
};
|
||||
|
||||
class Mode: Speed {
|
||||
idc = 2;
|
||||
x = QUOTE(safeZoneX + RESUNITS_X * 25);
|
||||
};
|
||||
|
||||
class TimeFrame: SpeedFrame {
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
|
||||
w = QUOTE(RESUNITS_X * 8);
|
||||
};
|
||||
|
||||
class Time: Speed {
|
||||
idc = 3;
|
||||
x = QUOTE(safeZoneX + safeZoneW - RESUNITS_X * 30);
|
||||
w = QUOTE(RESUNITS_X * 8);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class ace_spectator_compass {
|
||||
|
||||
onLoad = "uiNamespace setVariable ['ace_spectator_compass', _this select 0]";
|
||||
onUnload = "";
|
||||
idd=-1;
|
||||
movingEnable=0;
|
||||
fadein=0;
|
||||
fadeout=0;
|
||||
duration=1e+011;
|
||||
|
||||
class controls {
|
||||
|
||||
class BG: vip_rsc_box {
|
||||
x = QUOTE(COMPASS_X);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(COMPASS_W);
|
||||
h = QUOTE(COMPASS_H);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
};
|
||||
|
||||
class 0_90: vip_rsc_picture {
|
||||
idc = 1;
|
||||
x = QUOTE(RESCENTRE_X);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(COMPASS_W / 2);
|
||||
h = QUOTE(COMPASS_H);
|
||||
text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture180_ca.paa";
|
||||
};
|
||||
|
||||
class 90_180: 0_90 {
|
||||
idc = 2;
|
||||
x = QUOTE(RESCENTRE_X + COMPASS_W / 2);
|
||||
text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture270_ca.paa";
|
||||
};
|
||||
|
||||
class 180_270: 0_90 {
|
||||
idc = 3;
|
||||
x = QUOTE(RESCENTRE_X + COMPASS_W);
|
||||
text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture0_ca.paa";
|
||||
};
|
||||
|
||||
class 270_0: 0_90 {
|
||||
idc = 4;
|
||||
x = QUOTE(RESCENTRE_X + COMPASS_W * 1.5);
|
||||
text = "A3\ui_f_curator\data\cfgIngameUI\compass\texture90_ca.paa";
|
||||
};
|
||||
|
||||
class Post: vip_rsc_box {
|
||||
x = QUOTE(COMPASS_X + COMPASS_W / 2);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(PIXEL_X * 2);
|
||||
h = QUOTE(COMPASS_H);
|
||||
colorBackground[]={1,0,0,1};
|
||||
};
|
||||
|
||||
class LeftBlocker: vip_rsc_box {
|
||||
x = QUOTE(COMPASS_X - COMPASS_W / 2);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(COMPASS_W / 2);
|
||||
h = QUOTE(COMPASS_H);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
};
|
||||
|
||||
class RightBlocker: LeftBlocker {
|
||||
x = QUOTE(COMPASS_X + COMPASS_W);
|
||||
};
|
||||
|
||||
class Frame: vip_rsc_frame {
|
||||
x = QUOTE(COMPASS_X);
|
||||
y = QUOTE(safeZoneY);
|
||||
w = QUOTE(COMPASS_W);
|
||||
h = QUOTE(COMPASS_H);
|
||||
shadow=2;
|
||||
colorText[]={1,1,1,1};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class ace_spectator_help {
|
||||
|
||||
onLoad = "uiNamespace setVariable ['ace_spectator_help', _this select 0]; ['Help', _this select 0] call ace_spectator_fnc_camera";
|
||||
idd = -1;
|
||||
movingEnable=0;
|
||||
fadein=0;
|
||||
fadeout=0;
|
||||
duration=1e+011;
|
||||
|
||||
class controls {
|
||||
|
||||
class BG: vip_rsc_box {
|
||||
idc = -1;
|
||||
x = QUOTE(RESCENTRE_X - HELP_W / 2);
|
||||
y = QUOTE(RESCENTRE_Y - HELP_H / 2);
|
||||
w = QUOTE(HELP_W);
|
||||
h = QUOTE(HELP_H);
|
||||
colorBackground[] = {0.1,0.1,0.1,1};
|
||||
};
|
||||
|
||||
class Title: vip_rsc_text {
|
||||
idc = 0;
|
||||
style = ST_CENTER;
|
||||
x = QUOTE(RESCENTRE_X - RESUNITS_X * 25);
|
||||
y = QUOTE(RESCENTRE_Y - (HELP_H / 2) + RESUNITS_Y * 3);
|
||||
w = QUOTE(RESUNITS_X * 50);
|
||||
h = QUOTE(RESUNITS_Y * 4);
|
||||
colorText[]={1,1,1,1};
|
||||
sizeEx = QUOTE(RESUNITS_Y * 4);
|
||||
font = GUI_FONT_NORMAL;
|
||||
text = "ACE Spectator Controls";
|
||||
};
|
||||
|
||||
class LeftColumn1 {
|
||||
idc = 1;
|
||||
type = CT_STRUCTURED_TEXT;
|
||||
style = ST_LEFT;
|
||||
x = QUOTE(RESCENTRE_X - HELP_W / 2 + RESUNITS_X * 3);
|
||||
y = QUOTE(RESCENTRE_Y - (HELP_H / 2) + RESUNITS_Y * 10);
|
||||
w = QUOTE(RESUNITS_X * 16.75);
|
||||
h = QUOTE(RESUNITS_Y * 63);
|
||||
text = "";
|
||||
size = QUOTE(RESUNITS_Y * 2.5);
|
||||
colorBackground[] = {0,0,0,0};
|
||||
};
|
||||
|
||||
class LeftColumn2: LeftColumn1 {
|
||||
idc = 2;
|
||||
x = QUOTE(RESCENTRE_X - HELP_W / 2 + RESUNITS_X * 19.75);
|
||||
};
|
||||
|
||||
class RightColumn1: LeftColumn1 {
|
||||
idc = 3;
|
||||
x = QUOTE(RESCENTRE_X + HELP_W / 2 - RESUNITS_X * 3 - RESUNITS_X * 29.5);
|
||||
};
|
||||
|
||||
class RightColumn2: LeftColumn1 {
|
||||
idc = 4;
|
||||
x = QUOTE(RESCENTRE_X + HELP_W / 2 - RESUNITS_X * 3 - RESUNITS_X * 11.75);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
BIN
addons/spectator/UI/Icon_Module_Spectator_ca.paa
Normal file
BIN
addons/spectator/UI/Icon_Module_Spectator_ca.paa
Normal file
Binary file not shown.
96
addons/spectator/XEH_postInit.sqf
Normal file
96
addons/spectator/XEH_postInit.sqf
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
Author:
|
||||
voiper
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
["SettingsInitialized", {
|
||||
if !GVAR(enabled) exitWith {};
|
||||
|
||||
//check if respawn is set up properly
|
||||
_fail = if (getNumber (missionConfigFile >> "respawn") != 3 && getText (missionConfigFile >> "respawn") != "Base") then {true} else {false};
|
||||
if (_fail) exitWith {
|
||||
_text = "[ACE_Spectator] ERROR: This mission does not have respawn set up properly. Add 'respawn=3' or 'respawn=""BASE""' to description.ext.";
|
||||
systemChat _text;
|
||||
diag_log text _text;
|
||||
};
|
||||
|
||||
if GVAR(endMission) then {
|
||||
[{
|
||||
if (player distance GVAR(penPos) < 200) then {
|
||||
if ({isPlayer _x && alive _x && (_x distance GVAR(penPos)) > 200} count allUnits == 0) then {
|
||||
[["endDeath", false], "BIS_fnc_endMission"] call BIS_fnc_MP;
|
||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||
};
|
||||
};
|
||||
}, 2] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
||||
if (isDedicated) exitWith {};
|
||||
|
||||
call FUNC(penPos);
|
||||
|
||||
{
|
||||
if (getMarkerPos _x isEqualTo [0,0,0]) then {
|
||||
_marker = createMarkerLocal [_x, [0,0]];
|
||||
_marker setMarkerShapeLocal "ICON";
|
||||
};
|
||||
|
||||
_x setMarkerPosLocal GVAR(penPos);
|
||||
} forEach ["respawn_west", "respawn_east", "respawn_guerrila", "respawn_civilian"];
|
||||
|
||||
GVAR(playerSide) = side (group player);
|
||||
|
||||
if GVAR(tracking) then {
|
||||
[FUNC(checkUnits), 2] call CBA_fnc_addPerFrameHandler;
|
||||
[FUNC(trackUnits), 20] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
||||
player addEventHandler ["Killed", {
|
||||
[player] joinSilent grpNull;
|
||||
if (isClass (configFile >> "CfgPatches" >> "ace_hearing")) then {EGVAR(hearing,disableVolumeUpdate) = true};
|
||||
_delay = getNumber (missionConfigFile >> "respawnDelay");
|
||||
_delay fadeSound 0;
|
||||
999999 cutText ["", "BLACK", _delay];
|
||||
}];
|
||||
|
||||
player addEventHandler ["Respawn", {
|
||||
if (!isNil QGVAR(cam)) then {["Exit"] call FUNC(camera)};
|
||||
if (isClass (configFile >> "CfgPatches" >> "ace_hearing")) then {EGVAR(hearing,disableVolumeUpdate) = true};
|
||||
if (isClass (configFile >> "CfgPatches" >> "acre_sys_radio")) then {[true] call acre_api_fnc_setSpectator};
|
||||
if (isClass (configFile >> "CfgPatches" >> "task_force_radio")) then {[player, true] call TFAR_fnc_forceSpectator};
|
||||
|
||||
if !GVAR(modulePos) then {
|
||||
_corpse = _this select 1;
|
||||
if (!isNil "_corpse") then {
|
||||
if (!isNull _corpse) then {
|
||||
GVAR(startingPos) = getPosATL _corpse;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
player addEventHandler ["HandleDamage", {0}];
|
||||
[player] joinSilent grpNull;
|
||||
removeAllWeapons player;
|
||||
removeAllItems player;
|
||||
removeAllAssignedItems player;
|
||||
removeUniform player;
|
||||
removeVest player;
|
||||
player linkItem "ItemMap";
|
||||
player linkItem "ItemRadio";
|
||||
hideObjectGlobal player;
|
||||
|
||||
if (surfaceisWater GVAR(penPos)) then {
|
||||
player forceAddUniform "U_B_Wetsuit";
|
||||
player addVest "V_RebreatherB";
|
||||
};
|
||||
|
||||
player setPosATL GVAR(penPos);
|
||||
|
||||
0 fadeSound 0;
|
||||
999999 cutText ["", "BLACK FADED", 0];
|
||||
["Init", [true]] call FUNC(camera);
|
||||
}];
|
||||
|
||||
}] call EFUNC(common,addEventHandler);
|
31
addons/spectator/XEH_preInit.sqf
Normal file
31
addons/spectator/XEH_preInit.sqf
Normal file
@ -0,0 +1,31 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(camera);
|
||||
PREP(cameraIntro);
|
||||
PREP(canSpectateUnit);
|
||||
PREP(checkUnits);
|
||||
PREP(compass);
|
||||
PREP(crosshair);
|
||||
PREP(draw3D);
|
||||
PREP(drawMines2D);
|
||||
PREP(drawMines3D);
|
||||
PREP(drawTracks2D);
|
||||
PREP(drawUnits2D);
|
||||
PREP(drawUnits3D);
|
||||
PREP(killed);
|
||||
PREP(map);
|
||||
PREP(moduleSpectator);
|
||||
PREP(overlay);
|
||||
PREP(penPos);
|
||||
PREP(respawn);
|
||||
PREP(sideColour);
|
||||
PREP(status);
|
||||
PREP(trackUnits);
|
||||
PREP(unitInfo);
|
||||
PREP(unitSide);
|
||||
PREP(unitVar);
|
||||
PREP(viewDistance);
|
||||
|
||||
ADDON = true;
|
19
addons/spectator/config.cpp
Normal file
19
addons/spectator/config.cpp
Normal file
@ -0,0 +1,19 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
class CfgPatches {
|
||||
class ADDON {
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
requiredVersion = REQUIRED_VERSION;
|
||||
requiredAddons[] = {"ace_common"};
|
||||
author[] = {"voiper"};
|
||||
authorUrl = "https://github.com/voiperr/";
|
||||
VERSION_CONFIG;
|
||||
};
|
||||
};
|
||||
|
||||
#include "ACE_Settings.hpp"
|
||||
#include "CfgEventHandlers.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "rsc_defines.hpp"
|
||||
#include "UI.hpp"
|
1081
addons/spectator/functions/fnc_camera.sqf
Normal file
1081
addons/spectator/functions/fnc_camera.sqf
Normal file
File diff suppressed because it is too large
Load Diff
28
addons/spectator/functions/fnc_cameraIntro.sqf
Normal file
28
addons/spectator/functions/fnc_cameraIntro.sqf
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
Author:
|
||||
voiper
|
||||
|
||||
Description:
|
||||
Curtain, sound, and text intro when camera starts.
|
||||
|
||||
Arguments:
|
||||
None
|
||||
|
||||
Example:
|
||||
call ace_spectator_fnc_camIntro;
|
||||
|
||||
Return Value:
|
||||
None
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
999999 cutText ["", "BLACK IN", 2];
|
||||
2 fadeSound 1;
|
||||
|
||||
["Press H for spectator controls", 2] call EFUNC(common,displaytextstructured);
|
||||
|
||||
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
30
addons/spectator/functions/fnc_canSpectateUnit.sqf
Normal file
30
addons/spectator/functions/fnc_canSpectateUnit.sqf
Normal file
@ -0,0 +1,30 @@
|
||||
/*
|
||||
Author:
|
||||
voiper
|
||||
|
||||
Description:
|
||||
Check if a unit is suitable to spectate.
|
||||
|
||||
Arguments:
|
||||
0: Unit to check <Object>
|
||||
|
||||
Example:
|
||||
[unit] call ace_spectator_canSpectateUnit;
|
||||
|
||||
Return Value:
|
||||
Whether is suitable to spectate <Bool>
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
_unit = _this select 0;
|
||||
|
||||
if (_unit distance GVAR(penPos) < 200) exitWith {false};
|
||||
if (_unit distance [0,0,0] < 100) exitWith {false};
|
||||
if (!GVAR(AI) && !isPlayer _unit) exitWith {false};
|
||||
if (GVAR(limitSide) && (([_unit] call FUNC(unitSide)) != GVAR(playerSide))) exitWith {false};
|
||||
|
||||
true
|
37
addons/spectator/functions/fnc_checkUnits.sqf
Normal file
37
addons/spectator/functions/fnc_checkUnits.sqf
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
Author:
|
||||
voiper
|
||||
|
||||
Description:
|
||||
Compile array of units to spectate.
|
||||
|
||||
Arguments:
|
||||
None.
|
||||
|
||||
Example:
|
||||
call ace_spectator_fnc_checkUnits;
|
||||
|
||||
Return Value:
|
||||
None
|
||||
|
||||
Public:
|
||||
No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
_units = allUnits;
|
||||
_units append allDead;
|
||||
GVAR(units) = [];
|
||||
|
||||
{
|
||||
_listed = _x getVariable [QGVAR(listed), false];
|
||||
if (!_listed) then {
|
||||
[_x] call FUNC(unitVar);
|
||||
_x addEventHandler ["Killed", {_this call FUNC(killed)}];
|
||||
_x addEventHandler ["Respawn", {_this call FUNC(respawn)}];
|
||||
_x setVariable [QGVAR(listed), true];
|
||||
};
|
||||
|
||||
if ([_x] call FUNC(canSpectateUnit)) then {GVAR(units) pushback _x};
|
||||
} forEach _units;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user