Merge pull request #1 from acemod/master

update my master fork
This commit is contained in:
Legolasindar 2015-06-08 11:48:26 +02:00
commit fbc64a1935
708 changed files with 12937 additions and 4070 deletions

View File

@ -24,22 +24,30 @@ VKing <kauestad@gmail.com>
Walter Pearce <jaynus@gmail.com>
# CONTRIBUTORS
11RDP-LoupVert <loupvert@11rdp.fr>
[BIG]Bull
11RDP-LoupVert <loupvert@11rdp.fr>
ACCtomeek <tomeek99@gmail.com>
adam3adam <br.ada@seznam.cz>
Adanteh
aeroson
alef <alefor@gmail.com>
Aggr094 <bastards4glory@gmail.com>
alef <alefor@gmail.com>
Aleksey EpMAK Yermakov <epmak777@gmail.com>
Alganthe <alganthe@live.fr>
Anthariel <Contact@storm-simulation.com>
Asgar Serran <piechottaf@web.de>
Bla1337
BlackPixxel
BlackQwar
Brakoviejo
Brisse <brisse@outlook.com>
BullHorn <bullhorn7@gmail.com>
Clon1998 <ps.patti1998@gmail.com>
Codingboy
Coren <coren4@gmail.com>
Crusty
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
Dimaslg <dimaslg@telecable.es>
eRazeri
evromalarkey <evromalarkey@gmail.com>
Falke75
@ -49,53 +57,47 @@ Filip Basara <filip.basara93@googlemail.com>
FreeZbe <freeseb@gmail.com>
geraldbolso1899
Ghost
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
GieNkoV <gienkov.grzegorz@gmail.com>
gpgpgpgp
Grzegorz
Gianmarco Varriale (TeamNuke) <admin@forhost.org>
Hamburger SV
Harakhti <shadowdragonphd@gmail.com>
havena <silveredenis@gmail.com>
Hawkins
jokoho48
jokoho482 <jokoho482@gmail.com>`
Jonpas <jonpas33@gmail.com>
Kavinsky <nmunozfernandez@gmail.com>
Kllrt <kllrtik@gmail.com>
legman <juicemelon@msn.com>
Legolasindar "Viper" <legolasindar@gmail.com>
licht-im-Norden87 <lichtimnorden87@gmail.com>
Macusercom <macusercom@gmail.com>
MarcBook
meat <p.humberdroz@gmail.com>
Michail Nikolaev
nic547 <nic547@outlook.com>
nikolauska <nikolauska1@gmail.com>
nomisum <nomisum@gmail.com>
OnkelDisMaster <onkeldismaster@gmail.com>
oscarmolinadev
pokertour
Professor <lukas.trneny@wo.cz>
rakowozz
ramius86 <pasini86@hotmail.com>
Raspu86
Riccardo Petricca <petriccarcc@gmail.com>
Robert Boklahánics <bokirobi@gmail.com>
ramius86 <pasini86@hotmail.com>
ruPaladin <happyworm24@rambler.ru>
SilentSpike <SilentSpike100@gmail.com>
simon84 <badguy360th@gmail.com>
Sniperwolf572 <tenga6@gmail.com>
SzwedzikPL <szwedzikpl@gmail.com>
Tachi <zaveruha007@gmail.com>
Toaster <jonathan.pereira@gmail.com>
Tonic
Tourorist <tourorist@gmail.com>
Valentin Torikian <valentin.torikian@gmail.com>
zGuba
Aleksey EpMAK Yermakov <epmak777@gmail.com>
ruPaladin <happyworm24@rambler.ru>
BlackPixxel
Asgar Serran <piechottaf@web.de>
Kavinsky <nmunozfernandez@gmail.com>
Coren <coren4@gmail.com>
OnkelDisMaster <onkeldismaster@gmail.com>
Dimaslg <dimaslg@telecable.e>
VyMajoris(W-Cephei)<vycanismajoriscsa@gmail.com>
Bla1337
nikolauska <nikolauska1@gmail.com>
adam3adam <br.ada@seznam.cz>
Professor <lukas.trneny@wo.cz>
Winter <simon@agius-muscat.net>
Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
legman <juicemelon@msn.com>
zGuba

View File

@ -3,26 +3,24 @@
height="112">
</p>
<p align="center">
<!--<a href="https://github.com/acemod/ACE3/releases">
v3.0.1
<img src="http://img.shields.io/badge/Version-3.0.1-blue.svg?style=flat"
<a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/badge/Version-3.0.1-blue.svg"
alt="ACE version">
</a>
<a href="https://github.com/acemod/ACE3/archive/master.zip">
40.9 Mb
<img src="http://img.shields.io/badge/Download-40.9_MB-green.svg?style=flat"
<a href="https://github.com/acemod/ACE3/releases/download/v3.0.1/ace3_3.0.1.zip">
<img src="http://img.shields.io/badge/Download-40.9_MB-green.svg"
alt="ACE download">
</a>
<a href="https://github.com/acemod/ACE3/issues">
<img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat&label=Issues"
<img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Issues"
alt="ACE issues">
</a>-->
</a>
<a href="http://forums.bistudio.com/showthread.php?191716-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2935435&viewfull=1#post2935435">
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat"
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg"
alt="BIF thread">
</a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="http://img.shields.io/badge/License-GPLv2-red.svg?style=flat"
<img src="http://img.shields.io/badge/License-GPLv2-red.svg"
alt="ACE license">
</a>
</p>

Binary file not shown.

BIN
ace_medical.dll Normal file

Binary file not shown.

View File

@ -2,7 +2,7 @@ class CfgVehicles {
class ACE_Module;
class GVAR(ModuleSettings): ACE_Module {
scope = 2;
displayName = "$STR_ACE_AdvancedBallistics_DisplayName";
displayName = CSTRING(DisplayName);
icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa));
category = "ACE";
function = QUOTE(DFUNC(initModuleSettings));
@ -12,32 +12,32 @@ class CfgVehicles {
author = "Ruthberg";
class Arguments {
class enabled {
displayName = "$STR_ACE_AdvancedBallistics_enabled_DisplayName";
description = "$STR_ACE_AdvancedBallistics_enabled_Description";
displayName = CSTRING(enabled_DisplayName);
description = CSTRING(enabled_Description);
typeName = "BOOL";
defaultValue = 0;
};
class simulateForSnipers {
displayName = "$STR_ACE_AdvancedBallistics_simulateForSnipers_DisplayName";
description = "$STR_ACE_AdvancedBallistics_simulateForSnipers_Description";
displayName = CSTRING(simulateForSnipers_DisplayName);
description = CSTRING(simulateForSnipers_Description);
typeName = "BOOL";
defaultValue = 1;
};
class simulateForGroupMembers {
displayName = "$STR_ACE_AdvancedBallistics_simulateForGroupMembers_DisplayName";
description = "$STR_ACE_AdvancedBallistics_simulateForGroupMembers_Description";
displayName = CSTRING(simulateForGroupMembers_DisplayName);
description = CSTRING(simulateForGroupMembers_Description);
typeName = "BOOL";
defaultValue = 0;
};
class simulateForEveryone {
displayName = "$STR_ACE_AdvancedBallistics_simulateForEveryone_DisplayName";
description = "$STR_ACE_AdvancedBallistics_simulateForEveryone_Description";
displayName = CSTRING(simulateForEveryone_DisplayName);
description = CSTRING(simulateForEveryone_Description);
typeName = "BOOL";
defaultValue = 0;
};
class disabledInFullAutoMode {
displayName = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName";
description = "$STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description";
displayName = CSTRING(disabledInFullAutoMod_DisplayName);
description = CSTRING(disabledInFullAutoMod_Description);
typeName = "BOOL";
defaultValue = 0;
};
@ -50,38 +50,38 @@ class CfgVehicles {
};
*/
class ammoTemperatureEnabled {
displayName = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName";
description = "$STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description";
displayName = CSTRING(ammoTemperatureEnabled_DisplayName);
description = CSTRING(ammoTemperatureEnabled_Description);
typeName = "BOOL";
defaultValue = 1;
};
class barrelLengthInfluenceEnabled {
displayName = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName";
description = "$STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description";
displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName);
description = CSTRING(barrelLengthInfluenceEnabled_Description);
typeName = "BOOL";
defaultValue = 1;
};
class bulletTraceEnabled {
displayName = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName";
description = "$STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description";
displayName = CSTRING(bulletTraceEnabled_DisplayName);
description = CSTRING(bulletTraceEnabled_Description);
typeName = "BOOL";
defaultValue = 1;
};
class simulationInterval {
displayName = "$STR_ACE_AdvancedBallistics_simulationInterval_DisplayName";
description = "$STR_ACE_AdvancedBallistics_simulationInterval_Description";
displayName = CSTRING(simulationInterval_DisplayName);
description = CSTRING(simulationInterval_Description);
typeName = "NUMBER";
defaultValue = 0.0;
};
class simulationRadius {
displayName = "$STR_ACE_AdvancedBallistics_simulationRadius_DisplayName";
description = "$STR_ACE_AdvancedBallistics_simulationRadius_Description";
displayName = CSTRING(simulationRadius_DisplayName);
description = CSTRING(simulationRadius_Description);
typeName = "NUMBER";
defaultValue = 3000;
};
};
class ModuleDescription {
description = "$STR_ACE_AdvancedBallistics_Description";
description = CSTRING(Description);
};
};
};

View File

@ -1,17 +1,13 @@
class RscTitles
{
class RscTurretDial
{
class RscTitles {
class RscTurretDial {
idd=-1;
onLoad="with uiNameSpace do { RscTurretDial = _this select 0 };";
movingEnable=0;
duration=5;
fadeIn="false";
fadeOut="false";
class controls
{
class RscTurretDial
{
class controls {
class RscTurretDial {
idc=132949;
type=0;
style=128;
@ -28,18 +24,15 @@ class RscTitles
};
};
class RscProtractor
{
class RscProtractor {
idd=-1;
onLoad="with uiNameSpace do { RscProtractor = _this select 0 };";
movingEnable=0;
duration=60;
fadeIn="false";
fadeOut="false";
class controls
{
class RscProtractorBase
{
class controls {
class RscProtractorBase {
idc=132950;
type=0;
style=48;
@ -54,8 +47,7 @@ class RscTitles
sizeEx=0.027;
text="";
};
class RscProtractorMarker : RscProtractorBase
{
class RscProtractorMarker : RscProtractorBase {
idc=132951;
};
};

View File

@ -5,7 +5,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"};
requiredAddons[] = {"ace_ballistics", "ace_weather"};
author[] = {"Ruthberg"};
authorUrl = "https://github.com/ulteq";
VERSION_CONFIG;

View File

@ -45,12 +45,12 @@ GVAR(Protractor) = true;
1 cutRsc ["RscProtractor", "PLAIN", 1, false];
__ctrl1 ctrlSetScale 0.75;
__ctrl1 ctrlSetScale 1;
__ctrl1 ctrlCommit 0;
__ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa));
__ctrl1 ctrlSetTextColor [1, 1, 1, 1];
__ctrl2 ctrlSetScale 0.75;
__ctrl2 ctrlSetScale 1;
__ctrl2 ctrlSetPosition [(_refPosition select 0), (_refPosition select 1) - 0.0012 * _inclinationAngle, (_refPosition select 2), (_refPosition select 3)];
__ctrl2 ctrlCommit 0;
__ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));

View File

@ -133,8 +133,8 @@ GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
[_this select 1] call cba_fnc_removePerFrameHandler;
};
if (_bulletTraceVisible && _bulletSpeed > 600) then {
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""];
if (_bulletTraceVisible && _bulletSpeed > 500) then {
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
};
call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, floor(ACE_time), ACE_time - floor(ACE_time)]);

View File

@ -1,4 +1,4 @@
["ACE3 Equipment", QGVAR(ProtractorKey), localize "STR_ACE_AdvancedBallistics_ProtractorKey",
["ACE3 Equipment", QGVAR(ProtractorKey), localize LSTRING(ProtractorKey),
{
// Conditions: canInteract
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="AdvancedBallistics">
<Key ID="STR_ACE_AdvancedBallistics_WindInfoKey">
<Package name="Advanced_Ballistics">
<Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
<English>Show Wind Info</English>
<Polish>Pokaż inf. o wietrze</Polish>
<Italian>Mostra indicazioni del vento</Italian>
@ -13,7 +13,7 @@
<Czech>Zobrazit informace o větru</Czech>
<Portuguese>Mostrar Informação do Vento</Portuguese>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_ProtractorKey">
<Key ID="STR_ACE_Advanced_Ballistics_ProtractorKey">
<English>Show Protractor</English>
<Polish>Pokaż kątomierz</Polish>
<Italian>Mostra il rapportatore</Italian>
@ -25,118 +25,147 @@
<Czech>Zobrazit úhloměr</Czech>
<Portuguese>Mostrar Transferidor</Portuguese>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_DisplayName">
<English>Advanced Ballistics</English>
<Polish>Zaawansowana balistyka</Polish>
<Spanish>Balística avanzada</Spanish>
<German>Erweiterte Ballistik</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_enabled_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
<English>Advanced Ballistics</English>
<Polish>Zaawansowana balistyka</Polish>
<Spanish>Balística avanzada</Spanish>
<German>Erweiterte Ballistik</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_enabled_Description">
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
<English>Enables advanced ballistics</English>
<Polish>Aktywuje zaawansowaną balistykę</Polish>
<Spanish>Activa la balística avanzada</Spanish>
<German>Aktiviert die erweiterte Ballistik</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulateForSnipers_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
<English>Enabled For Snipers</English>
<Spanish>Activada para francotiradores</Spanish>
<Polish>Akt. dla snajperów</Polish>
<German>Für Scharfschützen aktiviert</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulateForSnipers_Description">
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
<Spanish>Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)</Polish>
<German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulateForGroupMembers_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
<English>Enabled For Group Members</English>
<Spanish>Activada para miembros de grupo</Spanish>
<Polish>Akt. dla czł. grupy</Polish>
<German>Für Gruppenmitglieder aktiviert</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulateForGroupMembers_Description">
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
<English>Enables advanced ballistics for non local group members</English>
<Spanish>Activada la balística avanzada para miembros de grupo no locales</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy</Polish>
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulateForEveryone_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
<English>Enabled For Everyone</English>
<Spanish>Activada para todos</Spanish>
<Polish>Akt. dla wszystkich</Polish>
<German>Für jeden aktiviert</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulateForEveryone_Description">
<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>
<Spanish>Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)</Polish>
<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>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_alwaysSimulateForGroupMembers_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
<English>Always Enabled For Group Members</English>
<Polish>Zawsze akt. dla czł. grupy</Polish>
<Spanish>Siempre activada para miembros de grupo</Spanish>
<German>Für Gruppenmitglieder immer aktiviert</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_alwaysSimulateForGroupMembers_Description">
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
<English>Always enables advanced ballistics when a group member fires</English>
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich członków grupy</Polish>
<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>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
<English>Disabled In FullAuto Mode</English>
<Polish>Wył. podczas ognia auto.</Polish>
<Spanish>Desactivada en modo automático</Spanish>
<German>Beim vollautomatischen Feuern deaktiviert</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description">
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
<English>Disables the advanced ballistics during full auto fire</English>
<Polish>Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego</Polish>
<Spanish>Desactivada la balística avanzada durante el fuego automático</Spanish>
<German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
<English>Enable Ammo Temperature Simulation</English>
<Polish>Symulacja temp. amunicji</Polish>
<Spanish>Activar simulación de temperatura de munición</Spanish>
<German>Simulation der Munitionstemperatur aktivieren</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description">
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
<English>Muzzle velocity varies with ammo temperature</English>
<Polish>Prędkość wylotowa pocisku jest zależna od temperatury amunicji</Polish>
<Spanish>La velocidad de salida varía con la temperatura de la munición</Spanish>
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
<English>Enable Barrel Length Simulation</English>
<Polish>Symulacja długości lufy</Polish>
<Spanish>Habilitar la simulación de longitud del cañón</Spanish>
<German>Simulation der Lauflänge aktivieren</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description">
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
<English>Muzzle velocity varies with barrel length</English>
<Polish>Prędkość wylotowa pocisku jest zależna od długości lufy</Polish>
<Spanish>La velocidad de salidal varía con la longitud del cañón</Spanish>
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
<English>Enable Bullet Trace Effect</English>
<Polish>Efekt smugi pocisku</Polish>
<Spanish>Activar el efecto trazador de la bala</Spanish>
<German>Geschossspureffekt aktivieren</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description">
<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>
<Polish>Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę)</Polish>
<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>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulationInterval_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
<English>Simulation Interval</English>
<Polish>Interwał symulacji</Polish>
<Spanish>Intervalo de simulación</Spanish>
<German>Simulationsintervall</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulationInterval_Description">
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
<English>Defines the interval between every calculation step</English>
<Polish>Określa interwał pomiędzy każdym krokiem kalkulacji</Polish>
<Spanish>Define el intervalo entre cada cálculo</Spanish>
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulationRadius_DisplayName">
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
<English>Simulation Radius</English>
<Polish>Zasięg symulacji</Polish>
<Spanish>Radio de simulación</Spanish>
<German>Simulationsradius</German>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_simulationRadius_Description">
<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>
<Polish>Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków</Polish>
<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>
</Key>
<Key ID="STR_ACE_AdvancedBallistics_Description">
<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>
</Key>
</Package>
</Project>
</Project>

View File

@ -176,8 +176,8 @@ class CfgVehicles {
};
class CargoRamp_Open: DoorL1_Open {
userActionID = 52;
displayName = "$STR_ACE_Aircraft_OpenCargoRamp";
textToolTip = "$STR_ACE_Aircraft_OpenCargoRamp";
displayName = CSTRING(OpenCargoRamp);
textToolTip = CSTRING(OpenCargoRamp);
position = "action_cargoramp";
radius = 3.0;
condition = "this animationPhase ""cargoramp_open"" < 0.5 AND Alive(this)";
@ -185,8 +185,8 @@ class CfgVehicles {
};
class CargoRamp_Close: DoorL1_Close {
userActionID = 55;
displayName = "$STR_ACE_Aircraft_CloseCargoRamp";
textToolTip = "$STR_ACE_Aircraft_CloseCargoRamp";
displayName = CSTRING(CloseCargoRamp);
textToolTip = CSTRING(CloseCargoRamp);
position = "action_cargoramp";
radius = 3.0;
condition = "this animationPhase ""cargoramp_open"" > 0.5 AND Alive(this)";

View File

@ -29,7 +29,7 @@ class CfgWeapons {
reloadTime = 0.1;
};
class Burst: Mode_Burst {
displayName = "$STR_ACE_Aircraft_CMFlareLauncher_Burst_Name";
displayName = CSTRING(CMFlareLauncher_Burst_Name);
};
};
@ -50,12 +50,12 @@ class CfgWeapons {
};
class ACE_gatling_20mm_Comanche: gatling_20mm {
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name";
displayName = CSTRING(gatling_20mm_Name);
class manual: manual {
reloadTime = 0.04;
dispersion = 0.006;
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name";
displayName = CSTRING(gatling_20mm_Name);
};
class close: close {
reloadTime = 0.04;

BIN
addons/apl/LWTS_optic.p3d Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0,0,0,0};
specularPower=0;
PixelShaderID="Normal";
VertexShaderID="Basic";

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,7 +4,7 @@ class CfgVehicles {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(open) {
displayName = "$STR_ACE_ATragMX_OpenATragMXDialog";
displayName = CSTRING(OpenATragMXDialog);
condition = QUOTE(call FUNC(can_show));
statement = QUOTE(call FUNC(create_dialog));
showDisabled = 0;

View File

@ -6,8 +6,8 @@ class CfgWeapons {
class ACE_ATragMX: ACE_ItemCore {
author = "Ruthberg";
scope = 2;
displayName = "$STR_ACE_ATragMX_Name";
descriptionShort = "$STR_ACE_ATragMX_Description";
displayName = CSTRING(Name);
descriptionShort = CSTRING(Description);
model = PATHTOF(data\tdsrecon.p3d);
picture = PATHTOF(UI\ATRAG_Icon.paa);
icon = "iconObject_circle";

View File

@ -6,41 +6,41 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
} else {
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657, -0.0006469, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
["12.7x99mm AMAX" , 860, 100, 0.0612, -0.0003722, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
["12.7x99mm" , 900, 100, 0.0623, -0.0005942, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
["12.7x54mm" , 300, 100, 0.3395, -0.0001877, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
[".408 Chey Tac" , 910, 100, 0.0571, -0.0003958, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
[".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
["9.3×64mm" , 870, 100, 0.0619, -0.0010921, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
[".338LM 250gr" , 880, 100, 0.0598, -0.0006234, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
[".338LM 300gr" , 800, 100, 0.0677, -0.0005397, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
[".338LM API526" , 895, 100, 0.0601, -0.0007120, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
[".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
[".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
[".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
[".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0007305, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
[".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0006326, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
[".300WM Berger OTM" , 853, 100, 0.0622, -0.0005271, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
[".300WM Mk248 Mod 0", 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
[".300WM Mk248 Mod 1", 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
[".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
["7.62x54mmR" , 800, 100, 0.0692, -0.0010165, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
["7.62x51mm M80" , 810, 100, 0.0679, -0.0010319, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
["7.62x51mm M118LR" , 780, 100, 0.0710, -0.0008497, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
["7.62x51mm Mk319" , 910, 100, 0.0585, -0.0010435, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
["7.62x51mm M993" , 930, 100, 0.0585, -0.0010914, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004145, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
["6.5x39mm" , 800, 100, 0.0683, -0.0007728, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
["6.5x47mm Lapua" , 800, 100, 0.0682, -0.0006977, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
["6.5mm Creedmor" , 840, 100, 0.0637, -0.0006136, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
["5.56x45mm M855" , 870, 100, 0.0626, -0.0013685, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
["5.56x45mm Mk262" , 820, 100, 0.0671, -0.0011287, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
["5.56x45mm Mk318" , 880, 100, 0.0616, -0.0013064, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ],
["5.56x45mm M995" , 869, 100, 0.0616, -0.0012972, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]];
["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ],
["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]];
[] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];

View File

@ -47,7 +47,7 @@ _temperature = GVAR(temperature);
_barometricPressure = GVAR(barometricPressure);
_relativeHumidity = GVAR(relativeHumidity);
if (!GVAR(atmosphereModeTBH)) then {
_barometricPressure = 1013.25 * exp(-(_altitude) / 7990);
_barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
_relativeHumidity = 50;
};

View File

@ -47,7 +47,7 @@ _temperature = GVAR(temperature);
_barometricPressure = GVAR(barometricPressure);
_relativeHumidity = GVAR(relativeHumidity);
if (!GVAR(atmosphereModeTBH)) then {
_barometricPressure = 1013.25 * exp(-(_altitude) / 7990);
_barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
_relativeHumidity = 50;
};

View File

@ -15,7 +15,7 @@
*/
#include "script_component.hpp"
private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput", "_speedOfSound"];
_lastColumnOutput = "";
if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then {
@ -32,6 +32,8 @@ if (GVAR(currentUnit) == 1) then {
lnbClear 5007;
_speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound);
{
_range = _x select 0;
_elevation = _x select 1;
@ -72,7 +74,7 @@ lnbClear 5007;
_windageOutput = Str(Round(_windage1 * 100) / 100);
_rangeOutput = Str(_range);
if (_velocity < 340.29) then {
if (_velocity < _speedOfSound) then {
_rangeOutput = _rangeOutput + "*";
};

View File

@ -1,4 +1,4 @@
["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize "STR_ACE_ATragMX_ATragMXDialogKey",
["ACE3 Equipment", QGVAR(ATragMXDialogKey), localize LSTRING(ATragMXDialogKey),
{
// Conditions: canInteract
if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};

View File

@ -11,4 +11,4 @@
#include "\z\ace\addons\main\script_macros.hpp"
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.6
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.7

View File

@ -3,7 +3,7 @@
class ACE_Actions { \
class ACE_MainActions { \
class GVAR(AttachVehicle) { \
displayName = "$STR_ACE_Attach_AttachDetach"; \
displayName = CSTRING(AttachDetach); \
condition = QUOTE(_this call FUNC(canAttach)); \
insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions)); \
exceptions[] = {}; \
@ -13,7 +13,7 @@
distance = 4.5; \
}; \
class GVAR(DetachVehicle) { \
displayName = "$STR_ACE_Attach_Detach"; \
displayName = CSTRING(Detach); \
condition = QUOTE(_this call FUNC(canDetach)); \
statement = QUOTE(_this call FUNC(detach) ); \
exceptions[] = {}; \
@ -54,7 +54,7 @@ class CfgVehicles {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(Attach) {
displayName = "$STR_ACE_Attach_AttachDetach";
displayName = CSTRING(AttachDetach);
condition = QUOTE(_this call FUNC(canAttach));
insertChildren = QUOTE(_this call FUNC(getChildrenAttachActions));
exceptions[] = {"isNotDragging"};
@ -64,7 +64,7 @@ class CfgVehicles {
// hotkey = "T";
};
class GVAR(Detach) {
displayName = "$STR_ACE_Attach_Detach";
displayName = CSTRING(Detach);
condition = QUOTE(_this call FUNC(canDetach));
statement = QUOTE(_this call FUNC(detach));
exceptions[] = {"isNotDragging"};
@ -87,9 +87,9 @@ class CfgVehicles {
class NVGMarker {
diffuse[] = {0.006, 0.006, 0.006, 1};
ambient[] = {0.005, 0.005, 0.005, 1};
brightness = 0.2;
brightness = 0.1;
name = "pozicni blik";
drawLightSize = 0.2;
drawLightSize = 0.1;
drawLightCenterSize = 0.003;
activeLight = 0;
blinking=1;
@ -112,7 +112,7 @@ class CfgVehicles {
magazines[] = {};
nvTarget = 1;
destrType = "DestructNo";
brightness = 20;
brightness = 10;
};
class NATO_Box_Base;

View File

@ -5,10 +5,10 @@ class CfgWeapons {
class ACE_IR_Strobe_Item: ACE_ItemCore {
ACE_attachable = "ACE_IR_Strobe_Effect";
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 2;
displayName = "$STR_ACE_IrStrobe_Name";
descriptionShort = "$STR_ACE_IrStrobe_Description";
displayName = CSTRING(IrStrobe_Name);
descriptionShort = CSTRING(IrStrobe_Description);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
picture = PATHTOF(UI\irstrobe_item.paa);

View File

@ -37,7 +37,7 @@ if (_itemVehClass == "") then {
if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");};
_onAtachText = format [localize "STR_ACE_Attach_Item_Attached", _onAtachText];
_onAtachText = format [localize LSTRING(Item_Attached), _onAtachText];
if (_unit == _attachToVehicle) then { //Self Attachment
_unit removeItem _itemClassname; // Remove item
@ -55,11 +55,11 @@ if (_unit == _attachToVehicle) then { //Self Attachment
[_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus);
//MenuBack isn't working for now (localize "STR_ACE_Attach_CancelAction")
[{[localize "STR_ACE_Attach_PlaceAction", ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute);
[{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
_unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = 1;}] call EFUNC(common,AddActionEventHandler)];
// _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {true}, {GVAR(placeAction) = 0;}] call EFUNC(common,AddActionEventHandler)];
_actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize "STR_ACE_Attach_CancelAction"], {GVAR(placeAction) = 0}];
_actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize LSTRING(CancelAction)], {GVAR(placeAction) = 0}];
[{
private "_startingPosition";

View File

@ -49,7 +49,7 @@ if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find
// Exit if can't add the item
if !(_unit canAdd _itemName) exitWith {
[localize "STR_ACE_Attach_Inventory_Full"] call EFUNC(common,displayTextStructured);
[localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured);
};
// Add item to inventory
@ -78,4 +78,4 @@ if (_itemDisplayName == "") then {
_itemDisplayName = getText (configFile >> "CfgMagazines" >> _itemName >> "displayName");
};
[format [localize "STR_ACE_Attach_Item_Detached", _itemDisplayName]] call EFUNC(common,displayTextStructured);
[format [localize LSTRING(Item_Detached), _itemDisplayName]] call EFUNC(common,displayTextStructured);

View File

@ -74,7 +74,7 @@ _closeInDistance = (_closeInMax + _closeInMin) / 2;
//Checks (too close to center or can't attach)
if (((_startDistanceFromCenter - _closeInDistance) < 0.1) || {!([_attachToVehicle, _unit, _itemClassname] call FUNC(canAttach))}) exitWith {
TRACE_2("no valid spot found",_closeInDistance,_startDistanceFromCenter);
[localize "STR_ACE_Attach_Failed"] call EFUNC(common,displayTextStructured);
[localize LSTRING(Failed)] call EFUNC(common,displayTextStructured);
};
//Move it out slightly, for visability sake (better to look a little funny than be embedded//sunk in the hull and be useless)

View File

@ -121,7 +121,7 @@
<Hungarian>Nincs több hely</Hungarian>
<Russian>В инвентаре нет места</Russian>
</Key>
<Key ID="STR_ACE_IrStrobe_Name">
<Key ID="STR_ACE_Attach_IrStrobe_Name">
<English>IR Strobe</English>
<German>IR-Stroboskop</German>
<Spanish>Marcador IR</Spanish>
@ -133,7 +133,7 @@
<Hungarian>Infravörös jeladó</Hungarian>
<Russian>ИК-маяк</Russian>
</Key>
<Key ID="STR_ACE_IrStrobe_Description">
<Key ID="STR_ACE_Attach_IrStrobe_Description">
<English>IR Strobe allows you to signal your position through a pulsating beacon only visible with NVGs.</English>
<German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
<Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>

View File

@ -20,7 +20,7 @@ class CfgAmmo {
};
class B_556x45_Ball : BulletBase {
airFriction=-0.0013685;
airFriction=-0.00126466;
hit=8;
typicalSpeed=750;
tracerStartTime=0.073; // M856 tracer burns out to 800m
@ -37,7 +37,7 @@ class CfgAmmo {
ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
};
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
airFriction=-0.0011287;
airFriction=-0.00109563;
caliber=0.8;
deflecting=18;
hit=11;
@ -54,7 +54,7 @@ class CfgAmmo {
ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0};
};
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
airFriction=-0.0013064;
airFriction=-0.00123318;
caliber=0.8;
deflecting=18;
hit=9;
@ -71,7 +71,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 393.7, 508.0};
};
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
airFriction=-0.0012972;
airFriction=-0.00123272;
caliber=1.6;
deflecting=18;
hit=6;
@ -92,7 +92,7 @@ class CfgAmmo {
nvgOnly = 1;
};
class ACE_545x39_Ball_7N6M : B_556x45_Ball {
airFriction=-0.001222;
airFriction=-0.00114744;
caliber=0.6;
deflecting=18;
hit=7;
@ -110,7 +110,7 @@ class CfgAmmo {
};
class B_556x45_Ball_Tracer_Green;
class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green {
airFriction=-0.001222;
airFriction=-0.00114744;
caliber=0.6;
deflecting=18;
hit=7;
@ -129,7 +129,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
class B_65x39_Caseless : BulletBase {
airFriction=-0.0007728;
airFriction=-0.00075308;
typicalSpeed=800;
ACE_caliber=6.706;
ACE_bulletLength=32.893;
@ -151,7 +151,7 @@ class CfgAmmo {
nvgOnly = 1;
};
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
airFriction=-0.0006977;
airFriction=-0.00067037;
typicalSpeed=820 ;
caliber=0.9;
ACE_caliber=6.706;
@ -166,7 +166,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
airFriction=-0.0006136;
airFriction=-0.00060887;
typicalSpeed=860 ;
caliber=1.1;
ACE_caliber=6.706;
@ -181,7 +181,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
class B_762x51_Ball : BulletBase {
airFriction=-0.0010319;
airFriction=-0.00100957;
typicalSpeed=833;
hit=9;
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
@ -202,7 +202,7 @@ class CfgAmmo {
nvgOnly = 1;
};
class ACE_762x51_Ball_M118LR : B_762x51_Ball {
airFriction=-0.0008497;
airFriction=-0.00082828;
caliber=1.8;
hit=16;
typicalSpeed=790;
@ -218,7 +218,7 @@ class CfgAmmo {
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball {
airFriction=-0.0008421;
airFriction=-0.00082029;
caliber=1.8;
hit=16;
typicalSpeed=790;
@ -234,7 +234,7 @@ class CfgAmmo {
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
airFriction=-0.0010435;
airFriction=-0.00102338;
caliber=1.5;
hit=14;
typicalSpeed=900;
@ -250,7 +250,7 @@ class CfgAmmo {
ACE_barrelLengths[]={330.2, 406.4, 508.0};
};
class ACE_762x51_Ball_M993_AP : B_762x51_Ball {
airFriction=-0.0010914;
airFriction=-0.00107148;
caliber=2.2;
hit=11;
typicalSpeed=910;
@ -266,7 +266,7 @@ class CfgAmmo {
ACE_barrelLengths[]={330.2, 406.4, 508.0};
};
class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
airFriction=-0.0004145;
airFriction=-0.00049899;
caliber=1;
hit=6;
typicalSpeed=320;
@ -282,7 +282,7 @@ class CfgAmmo {
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
class ACE_30_06_M1_Ball : B_762x51_Ball {
airFriction=-0.0008290;
airFriction=-0.00080900;
typicalSpeed=800;
caliber=2.0;
hit=10;
@ -298,7 +298,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
class ACE_7_Remington_Magnum_Ball : B_762x51_Ball {
airFriction=-0.0005809;
airFriction=-0.00056738;
typicalSpeed=820;
caliber=2.1;
hit=8;
@ -314,7 +314,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
class ACE_243_Winchester_Ball : B_762x51_Ball {
airFriction=-0.0007010;
airFriction=-0.00067875;
typicalSpeed=915;
caliber=2.3;
hit=6;
@ -330,7 +330,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
airFriction=-0.0007305;
airFriction=-0.00070530;
caliber=1.8;
hit=17;
typicalSpeed=900;
@ -346,7 +346,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 609.6, 660.4};
};
class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
airFriction=-0.0006326;
airFriction=-0.00061188;
caliber=1.9;
hit=18;
typicalSpeed=867;
@ -362,7 +362,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 609.6, 660.4};
};
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
airFriction=-0.0005271;
airFriction=-0.00053733;
caliber=2.0;
hit=19;
typicalSpeed=853;
@ -378,7 +378,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 609.6, 660.4};
};
class B_762x54_Ball: B_762x51_Ball {
airFriction=-0.0010165;
airFriction=-0.00100023;
typicalSpeed=820;
ACE_caliber=7.925;
ACE_bulletLength=28.956;
@ -392,7 +392,7 @@ class CfgAmmo {
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
class ACE_762x54_Ball_7N14 : B_762x51_Ball {
airFriction=-0.0010165;
airFriction=-0.00100023;
caliber=1.5;
hit=15;
typicalSpeed=820;
@ -409,7 +409,7 @@ class CfgAmmo {
};
class B_762x54_Tracer_Green;
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
airFriction=-0.0010369;
airFriction=-0.00103989;
caliber=1.5;
hit=15;
typicalSpeed=800;
@ -427,7 +427,7 @@ class CfgAmmo {
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
class ACE_762x35_Ball : B_762x51_Ball {
airFriction=-0.0012406;
airFriction=-0.00128942;
caliber=1.5;
hit=11;
typicalSpeed=790;
@ -443,7 +443,7 @@ class CfgAmmo {
ACE_barrelLengths[]={228.6, 406.4, 508.0};
};
class ACE_762x39_Ball : B_762x51_Ball {
airFriction=-0.0014519;
airFriction=-0.00151621;
hit=12;
caliber=1.5;
typicalSpeed=716;
@ -459,7 +459,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green {
airFriction=-0.0015168;
airFriction=-0.00151621;
hit=12;
caliber=1.5;
typicalSpeed=716;
@ -477,7 +477,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
class B_9x21_Ball : BulletBase {
airFriction=-0.0021165;
airFriction=-0.00226847;
typicalSpeed=390;
hit=6;
ACE_caliber=9.042;
@ -493,7 +493,7 @@ class CfgAmmo {
};
class ACE_9x18_Ball_57N181S : B_9x21_Ball {
hit=5;
airFriction=-0.0015655;
airFriction=-0.00190333;
typicalSpeed=298;
ACE_caliber=9.271;
ACE_bulletLength=15.494;
@ -507,7 +507,7 @@ class CfgAmmo {
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
class ACE_9x19_Ball : B_9x21_Ball {
airFriction=-0.0015833;
airFriction=-0.0018577;
typicalSpeed=370;
hit=6;
ACE_caliber=9.017;
@ -522,7 +522,7 @@ class CfgAmmo {
ACE_barrelLengths[]={101.6, 127.0, 228.6};
};
class ACE_10x25_Ball : B_9x21_Ball {
airFriction=-0.00168;
airFriction=-0.00181928;
typicalSpeed=425;
hit=7;
ACE_caliber=12.7;
@ -537,7 +537,7 @@ class CfgAmmo {
ACE_barrelLengths[]={101.6, 117.094, 228.6};
};
class ACE_765x17_Ball: B_9x21_Ball {
airFriction=-0.001410;
airFriction=-0.00163356;
typicalSpeed=282;
hit=7;
ACE_caliber=7.938;
@ -552,7 +552,7 @@ class CfgAmmo {
ACE_barrelLengths[]={101.6, 127.0, 228.6};
};
class ACE_303_Ball : ACE_762x51_Ball_M118LR {
airFriction=-0.0008410;
airFriction=-0.0008349;
typicalSpeed=761;
caliber=2.0;
ACE_caliber=7.899;
@ -567,7 +567,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 609.6, 660.4};
};
class B_93x64_Ball : BulletBase {
airFriction=-0.0010921;
airFriction=-0.00108571;
typicalSpeed=880;
ACE_caliber=9.296;
ACE_bulletLength=34.29;
@ -582,7 +582,7 @@ class CfgAmmo {
};
class B_408_Ball : BulletBase {
timeToLive=10;
airFriction=-0.0003958;
airFriction=-0.00038944;
typicalSpeed=910;
ACE_caliber=10.363;
ACE_bulletLength=54.0;
@ -598,6 +598,7 @@ class CfgAmmo {
};
class ACE_106x83mm_Ball : B_408_Ball {
timeToLive=10;
airFriction=-0.00052047;
ACE_caliber=10.566;
ACE_bulletLength=53.061;
ACE_bulletMass=25.7904;
@ -611,7 +612,7 @@ class CfgAmmo {
};
class B_338_Ball : BulletBase {
timeToLive=10;
airFriction=-0.0006234;
airFriction=-0.00059133;
typicalSpeed=915;
ACE_caliber=8.585;
ACE_bulletLength=39.573;
@ -625,7 +626,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 660.4, 711.2};
};
class B_338_NM_Ball : BulletBase {
airFriction=-0.0005434;
airFriction=-0.00052201;
typicalSpeed=820;
ACE_caliber=8.585;
ACE_bulletLength=43.18;
@ -640,7 +641,7 @@ class CfgAmmo {
};
class ACE_338_Ball : B_338_Ball {
timeToLive=10;
airFriction=-0.0005397;
airFriction=-0.00052190;
typicalSpeed=826;
ACE_caliber=8.585;
ACE_bulletLength=43.18;
@ -655,7 +656,7 @@ class CfgAmmo {
};
class ACE_338_Ball_API526 : B_338_Ball {
timeToLive=10;
airFriction=-0.0007120;
airFriction=-0.00069611;
caliber=2.8;
typicalSpeed=895;
ACE_caliber=8.585;
@ -670,7 +671,7 @@ class CfgAmmo {
ACE_barrelLengths[]={508.0, 660.4, 711.2};
};
class B_127x54_Ball : BulletBase {
airFriction=-0.0001877;
airFriction=-0.00019268;
typicalSpeed=300;
ACE_caliber=12.954;
ACE_bulletLength=64.516;
@ -685,7 +686,7 @@ class CfgAmmo {
};
class B_127x99_Ball : BulletBase {
timeToLive=10;
airFriction=-0.0005942;
airFriction=-0.00057503;
typicalSpeed=900;
ACE_caliber=12.954;
ACE_bulletLength=58.674;
@ -700,7 +701,7 @@ class CfgAmmo {
};
class ACE_127x99_API : BulletBase {
timeToLive=10;
airFriction=-0.0005886;
airFriction=-0.00057503;
typicalSpeed=900;
hit=25;
caliber=4.0;
@ -717,7 +718,7 @@ class CfgAmmo {
};
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
timeToLive=10;
airFriction=-0.0003722;
airFriction=-0.00036645;
typicalSpeed=860;
caliber=3.0;
ACE_caliber=12.954;
@ -733,7 +734,7 @@ class CfgAmmo {
};
class B_127x108_Ball : BulletBase {
timeToLive=10;
airFriction=-0.0006469;
airFriction=-0.00063800;
typicalSpeed=820;
ACE_caliber=12.979;
ACE_bulletLength=64.008;
@ -747,7 +748,7 @@ class CfgAmmo {
ACE_barrelLengths[]={728.98};
};
class B_45ACP_Ball : BulletBase {
airFriction=-0.0007312;
airFriction=-0.00081221;
typicalSpeed=250;
ACE_caliber=11.481;
ACE_bulletLength=17.272;

View File

@ -12,75 +12,75 @@ class CfgMagazines {
initSpeed = 760;
};
class ACE_100Rnd_65x39_caseless_mag_Tracer_Dim: 100Rnd_65x39_caseless_mag_Tracer {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_Tracer_Dim";
displayName = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName";
displayNameShort = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription";
displayName = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimName);
displayNameShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimNameShort);
descriptionShort = CSTRING(100Rnd_65x39_caseless_mag_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_100rnd_65x39_yellow_ca.paa";
};
class 200Rnd_65x39_cased_Box: 100Rnd_65x39_caseless_mag {
initSpeed = 760;
};
class ACE_200Rnd_65x39_cased_Box_Tracer_Dim: 200Rnd_65x39_cased_Box {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_Tracer_Dim";
displayName = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName";
displayNameShort = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription";
displayName = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimName);
displayNameShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimNameShort);
descriptionShort = CSTRING(200Rnd_65x39_cased_Box_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_200rnd_65x39_yellow_ca.paa";
};
class 30Rnd_65x39_caseless_mag_Tracer;
class ACE_30Rnd_65x39_caseless_mag_Tracer_Dim: 30Rnd_65x39_caseless_mag_Tracer {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_Tracer_Dim";
displayName = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimName";
displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription";
displayName = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimName);
displayNameShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimNameShort);
descriptionShort = CSTRING(30Rnd_65x39_caseless_mag_Tracer_DimDescription);
};
class 30Rnd_65x39_caseless_green_mag_Tracer;
class ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim: 30Rnd_65x39_caseless_green_mag_Tracer {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x39_Caseless_green_Tracer_Dim";
displayName = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName";
displayNameShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription";
displayName = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimName);
displayNameShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort);
descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription);
};
class 30Rnd_556x45_Stanag: CA_Magazine {
};
class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_556x45_Ball_M995_AP";
displayName = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Name";
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_NameShort";
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_M995_AP_mag_Description";
displayName = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Name);
displayNameShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_NameShort);
descriptionShort = CSTRING(30Rnd_556x45_Stanag_M995_AP_mag_Description);
initSpeed = 865;
};
class ACE_30Rnd_556x45_Stanag_Mk262_mag: 30Rnd_556x45_Stanag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_556x45_Ball_Mk262";
displayName = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name";
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort";
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description";
displayName = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Name);
displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_NameShort);
descriptionShort = CSTRING(30Rnd_556x45_Stanag_Mk262_mag_Description);
initSpeed = 832;
};
class ACE_30Rnd_556x45_Stanag_Mk318_mag: 30Rnd_556x45_Stanag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_556x45_Ball_Mk318";
displayName = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name";
displayNameShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort";
descriptionShort = "$STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description";
displayName = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Name);
displayNameShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_NameShort);
descriptionShort = CSTRING(30Rnd_556x45_Stanag_Mk318_mag_Description);
initSpeed = 922;
};
class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag {
};
class ACE_30Rnd_556x45_Stanag_Tracer_Dim: 30Rnd_556x45_Stanag_Tracer_Red {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_B_556x45_Ball_Tracer_Dim";
displayName = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimName";
displayNameShort = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_30Rnd_556x45_mag_Tracer_DimDescription";
displayName = CSTRING(30Rnd_556x45_mag_Tracer_DimName);
displayNameShort = CSTRING(30Rnd_556x45_mag_Tracer_DimNameShort);
descriptionShort = CSTRING(30Rnd_556x45_mag_Tracer_DimDescription);
picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa";
};
@ -97,180 +97,180 @@ class CfgMagazines {
initSpeed = 833;
};
class ACE_20Rnd_762x51_Mag_Tracer: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "B_762x51_Tracer_Red";
displayName = "$STR_ACE_20Rnd_762x51_mag_TracerName";
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_TracerNameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_mag_TracerDescription";
displayName = CSTRING(20Rnd_762x51_mag_TracerName);
displayNameShort = CSTRING(20Rnd_762x51_mag_TracerNameShort);
descriptionShort = CSTRING(20Rnd_762x51_mag_TracerDescription);
tracersEvery = 1;
};
class ACE_20Rnd_762x51_Mag_Tracer_Dim: ACE_20Rnd_762x51_Mag_Tracer {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_B_762x51_Tracer_Dim";
displayName = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimName";
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_mag_Tracer_DimDescription";
displayName = CSTRING(20Rnd_762x51_mag_Tracer_DimName);
displayNameShort = CSTRING(20Rnd_762x51_mag_Tracer_DimNameShort);
descriptionShort = CSTRING(20Rnd_762x51_mag_Tracer_DimDescription);
};
class ACE_20Rnd_762x51_Mag_SD: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Subsonic";
displayName = "$STR_ACE_20Rnd_762x51_mag_SDName";
displayNameShort = "$STR_ACE_20Rnd_762x51_mag_SDNameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_mag_SDDescription";
displayName = CSTRING(20Rnd_762x51_mag_SDName);
displayNameShort = CSTRING(20Rnd_762x51_mag_SDNameShort);
descriptionShort = CSTRING(20Rnd_762x51_mag_SDDescription);
initSpeed = 325;
};
class ACE_10Rnd_762x51_M118LR_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M118LR";
count = 10;
displayName = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Name";
displayNameShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Description";
displayName = CSTRING(10Rnd_762x51_M118LR_Mag_Name);
displayNameShort = CSTRING(10Rnd_762x51_M118LR_Mag_NameShort);
descriptionShort = CSTRING(10Rnd_762x51_M118LR_Mag_Description);
initSpeed = 780;
};
class ACE_10Rnd_762x51_Mk316_Mod_0_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk316_Mod_0";
count = 10;
displayName = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Name";
displayNameShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_762x51_Mk316_Mod_0_Mag_Description";
displayName = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Name);
displayNameShort = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_NameShort);
descriptionShort = CSTRING(10Rnd_762x51_Mk316_Mod_0_Mag_Description);
initSpeed = 790;
};
class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk319_Mod_0";
count = 10;
displayName = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name";
displayNameShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description";
displayName = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Name);
displayNameShort = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_NameShort);
descriptionShort = CSTRING(10Rnd_762x51_Mk319_Mod_0_Mag_Description);
initSpeed = 900;
};
class ACE_10Rnd_762x51_M993_AP_Mag: 10Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M993_AP";
count = 10;
displayName = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Name";
displayNameShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_762x51_M993_AP_Mag_Description";
displayName = CSTRING(10Rnd_762x51_M993_AP_Mag_Name);
displayNameShort = CSTRING(10Rnd_762x51_M993_AP_Mag_NameShort);
descriptionShort = CSTRING(10Rnd_762x51_M993_AP_Mag_Description);
initSpeed = 920;
};
class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M118LR";
displayName = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Description";
displayName = CSTRING(20Rnd_762x51_M118LR_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x51_M118LR_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x51_M118LR_Mag_Description);
initSpeed = 780;
};
class ACE_20Rnd_762x51_Mk316_Mod_0_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk316_Mod_0";
count = 20;
displayName = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_Mk316_Mod_0_Mag_Description";
displayName = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x51_Mk316_Mod_0_Mag_Description);
initSpeed = 790;
};
class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_Mk319_Mod_0";
displayName = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description";
displayName = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x51_Mk319_Mod_0_Mag_Description);
initSpeed = 900;
};
class ACE_20Rnd_762x51_M993_AP_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x51_Ball_M993_AP";
count = 20;
displayName = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x51_M993_AP_Mag_Description";
displayName = CSTRING(20Rnd_762x51_M993_AP_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x51_M993_AP_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x51_M993_AP_Mag_Description);
initSpeed = 920;
};
class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x67_Ball_Mk248_Mod_0";
displayName = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description";
displayName = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x67_Mk248_Mod_0_Mag_Description);
initSpeed = 900;
};
class ACE_20Rnd_762x67_Mk248_Mod_1_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x67_Ball_Mk248_Mod_1";
displayName = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description";
displayName = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x67_Mk248_Mod_1_Mag_Description);
initSpeed = 880;
};
class ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag: 20Rnd_762x51_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x67_Ball_Berger_Hybrid_OTM";
displayName = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name";
displayNameShort = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort";
descriptionShort = "$STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description";
displayName = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name);
displayNameShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort);
descriptionShort = CSTRING(20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description);
initSpeed = 832;
};
class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x47_Ball_Scenar";
displayName = "$STR_ACE_30Rnd_65x47_Scenar_mag_Name";
displayNameShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_NameShort";
descriptionShort = "$STR_ACE_30Rnd_65x47_Scenar_mag_Description";
displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name);
displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort);
descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description);
};
class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_65_Creedmor_Ball";
displayName = "$STR_ACE_30Rnd_65_Creedmor_mag_Name";
displayNameShort = "$STR_ACE_30Rnd_65_Creedmor_mag_NameShort";
descriptionShort = "$STR_ACE_30Rnd_65_Creedmor_mag_Description";
displayName = CSTRING(30Rnd_65_Creedmor_mag_Name);
displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort);
descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description);
};
class 10Rnd_338_Mag;
class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_338_Ball";
displayName = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name";
displayNameShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description";
displayName = CSTRING(10Rnd_338_300gr_HPBT_Mag_Name);
displayNameShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_NameShort);
descriptionShort = CSTRING(10Rnd_338_300gr_HPBT_Mag_Description);
initSpeed = 800;
};
class ACE_10Rnd_338_API526_Mag: 10Rnd_338_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_338_Ball_API526";
displayName = "$STR_ACE_10Rnd_338_API526_Mag_Name";
displayNameShort = "$STR_ACE_10Rnd_338_API526_Mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_338_API526_Mag_Description";
displayName = CSTRING(10Rnd_338_API526_Mag_Name);
displayNameShort = CSTRING(10Rnd_338_API526_Mag_NameShort);
descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description);
initSpeed = 880;
};
class 5Rnd_127x108_Mag;
class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "B_127x99_Ball";
displayName = "$STR_ACE_5Rnd_127x99_Mag_Name";
displayNameShort = "$STR_ACE_5Rnd_127x99_Mag_NameShort";
descriptionShort = "$STR_ACE_5Rnd_127x99_Mag_Description";
displayName = CSTRING(5Rnd_127x99_Mag_Name);
displayNameShort = CSTRING(5Rnd_127x99_Mag_NameShort);
descriptionShort = CSTRING(5Rnd_127x99_Mag_Description);
initSpeed = 900;
};
class ACE_5Rnd_127x99_API_Mag: 5Rnd_127x108_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_127x99_API";
displayName = "$STR_ACE_5Rnd_127x99_API_Mag_Name";
displayNameShort = "$STR_ACE_5Rnd_127x99_API_Mag_NameShort";
descriptionShort = "$STR_ACE_5Rnd_127x99_API_Mag_Description";
displayName = CSTRING(5Rnd_127x99_API_Mag_Name);
displayNameShort = CSTRING(5Rnd_127x99_API_Mag_NameShort);
descriptionShort = CSTRING(5Rnd_127x99_API_Mag_Description);
initSpeed = 900;
};
class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_127x99_Ball_AMAX";
displayName = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Name";
displayNameShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort";
descriptionShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Description";
displayName = CSTRING(5Rnd_127x99_AMAX_Mag_Name);
displayNameShort = CSTRING(5Rnd_127x99_AMAX_Mag_NameShort);
descriptionShort = CSTRING(5Rnd_127x99_AMAX_Mag_Description);
initSpeed = 860;
};
@ -279,11 +279,11 @@ class CfgMagazines {
initSpeed = 450;
};
class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_9x19_Ball";
displayName = "$STR_ACE_30Rnd_9x19_mag_Name";
displayNameShort = "$STR_ACE_30Rnd_9x19_mag_NameShort";
descriptionShort = "$STR_ACE_30Rnd_9x19_mag_Description";
displayName = CSTRING(30Rnd_9x19_mag_Name);
displayNameShort = CSTRING(30Rnd_9x19_mag_NameShort);
descriptionShort = CSTRING(30Rnd_9x19_mag_Description);
initSpeed = 370;
};
@ -311,11 +311,11 @@ class CfgMagazines {
initSpeed = 450;
};
class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_9x19_Ball";
displayName = "$STR_ACE_16Rnd_9x19_mag_Name";
displayNameShort = "$STR_ACE_16Rnd_9x19_mag_NameShort";
descriptionShort = "$STR_ACE_16Rnd_9x19_mag_Description";
displayName = CSTRING(16Rnd_9x19_mag_Name);
displayNameShort = CSTRING(16Rnd_9x19_mag_NameShort);
descriptionShort = CSTRING(16Rnd_9x19_mag_Description);
initSpeed = 370;
};
@ -323,11 +323,11 @@ class CfgMagazines {
initSpeed = 800;
};
class ACE_10Rnd_762x54_Tracer_mag: 10Rnd_762x54_Mag {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
ammo = "ACE_762x54_Ball_7T2";
displayName = "$STR_ACE_10Rnd_762x54_Tracer_mag_Name";
displayNameShort = "$STR_ACE_10Rnd_762x54_Tracer_mag_NameShort";
descriptionShort = "$STR_ACE_10Rnd_762x54_Tracer_mag_Description";
displayName = CSTRING(10Rnd_762x54_Tracer_mag_Name);
displayNameShort = CSTRING(10Rnd_762x54_Tracer_mag_NameShort);
descriptionShort = CSTRING(10Rnd_762x54_Tracer_mag_Description);
initSpeed = 800;
tracersEvery = 1;
};

View File

@ -2,7 +2,7 @@
class CfgVehicles {
class Sign_F;
class ACE_TargetWall: Sign_F {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 0;
class Eventhandlers {
init = QUOTE(_this call COMPILE_FILE(scripts\initTargetWall));
@ -190,9 +190,9 @@ class CfgVehicles {
class ACE_Box_Ammo: NATO_Box_Base {
scope = 2;
accuracy = 1000;
displayName = "$STR_ACE_AmmoSupplyCrate_DisplayName";
displayName = CSTRING(AmmoSupplyCrate_DisplayName);
model = "\A3\weapons_F\AmmoBoxes\AmmoBox_F";
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
class TransportMagazines {
MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,4);
MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M993_AP_Mag,4);

View File

@ -6,8 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"TaoSensai","commy2","Ruthberg"};
authorUrl = "https://github.com/Taosenai/tmr";
author[] = {"commy2","Ruthberg"};
VERSION_CONFIG;
};
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
class ACE_Settings {
class GVAR(allowHandcuffOwnSide) {
displayName = CSTRING(ModuleSettings_handcuffSide_name);
description = CSTRING(ModuleSettings_handcuffSide_description);
typeName = "BOOL";
value = 1;
};
class GVAR(allowSurrender) {
displayName = CSTRING(ModuleSettings_allowSurrender_name);
description = CSTRING(ModuleSettings_allowSurrender_description);
typeName = "BOOL";
value = 1;
};
};

View File

@ -4,7 +4,7 @@ class CfgVehicles {
class ACE_Actions {
class ACE_ApplyHandcuffs {
displayName = "$STR_ACE_Captives_SetCaptive";
displayName = CSTRING(SetCaptive);
selection = "righthand";
distance = 2;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
@ -13,7 +13,7 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
};
class ACE_RemoveHandcuffs {
displayName = "$STR_ACE_Captives_ReleaseCaptive";
displayName = CSTRING(ReleaseCaptive);
selection = "righthand";
distance = 2;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
@ -24,7 +24,7 @@ class CfgVehicles {
class ACE_MainActions {
class ACE_EscortCaptive {
displayName = "$STR_ACE_Captives_EscortCaptive";
displayName = CSTRING(EscortCaptive);
distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canEscortCaptive));
statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive));
@ -35,7 +35,7 @@ class CfgVehicles {
hotkey = "E";
};
class ACE_StopEscorting {
displayName = "$STR_ACE_Captives_StopEscorting";
displayName = CSTRING(StopEscorting);
distance = 4;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting));
statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive));
@ -46,7 +46,7 @@ class CfgVehicles {
hotkey = "E";
};
class ACE_LoadCaptive {
displayName = "$STR_ACE_Captives_LoadCaptive";
displayName = CSTRING(LoadCaptive);
distance = 4;
condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive));
statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive));
@ -57,7 +57,7 @@ class CfgVehicles {
hotkey = "L";
};
class ACE_FriskPerson {
displayName = "$STR_ACE_Captives_FriskPerson";
displayName = CSTRING(FriskPerson);
distance = 2;
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canFriskPerson));
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doFriskPerson));
@ -71,7 +71,7 @@ class CfgVehicles {
class ACE_SelfActions {
class ACE_StopEscortingSelf {
displayName = "$STR_ACE_Captives_StopEscorting";
displayName = CSTRING(StopEscorting);
condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting));
statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive));
exceptions[] = {"isNotEscorting"};
@ -80,20 +80,22 @@ class CfgVehicles {
hotkey = "C";
};
class ACE_StartSurrenderingSelf {
displayName = "$STR_ACE_Captives_StartSurrendering";
displayName = CSTRING(StartSurrendering);
condition = QUOTE([ARR_2(_player, true)] call FUNC(canSurrender));
statement = QUOTE([ARR_2(_player, true)] call FUNC(setSurrendered));
exceptions[] = {};
showDisabled = 0;
priority = 0;
icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
};
class ACE_StopSurrenderingSelf {
displayName = "$STR_ACE_Captives_StopSurrendering";
displayName = CSTRING(StopSurrendering);
condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender));
statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered));
exceptions[] = {"isNotSurrendering"};
showDisabled = 0;
priority = 0;
icon = QUOTE(PATHTOF(UI\Surrender_ca.paa));
};
};
};
@ -102,7 +104,7 @@ class CfgVehicles {
class ACE_Actions { \
class ACE_MainActions { \
class GVAR(LoadCaptive) { \
displayName = "$STR_ACE_Captives_LoadCaptive"; \
displayName = CSTRING(LoadCaptive); \
distance = 4; \
condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \
statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \
@ -110,7 +112,7 @@ class CfgVehicles {
priority = 1.2; \
}; \
class GVAR(UnloadCaptive) { \
displayName = "$STR_ACE_Captives_UnloadCaptive"; \
displayName = CSTRING(UnloadCaptive); \
distance = 4; \
condition = QUOTE([ARR_2(_player, _target)] call FUNC(canUnloadCaptive)); \
statement = QUOTE([ARR_2(_player, _target)] call FUNC(doUnloadCaptive)); \
@ -159,21 +161,48 @@ class CfgVehicles {
};
class GVAR(ModuleSurrender): Module_F {
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = "$STR_ACE_Captives_ModuleSurrender_DisplayName"; //Make Unit Surrender
function = QUOTE(DFUNC(moduleSurrender));
displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender
function = QFUNC(moduleSurrender);
scope = 2; //show in editor
scopeCurator = 2; //show in zeus
curatorCost = 0; //???
isGlobal = 1; //run global
isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
description = "$STR_ACE_Captives_ModuleSurrender_Description"; //Sync a unit to make them surrender.<br/>Source: ace_captives
description = CSTRING(ModuleSurrender_Description); //Sync a unit to make them surrender.<br/>Source: ace_captives
sync[] = {"AnyAI"};
};
};
};
class ACE_Module: Module_F {};
class GVAR(moduleSettings): ACE_Module {
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = CSTRING(ModuleSettings_DisplayName);
function = QFUNC(moduleSettings);
scope = 2;
icon = QUOTE(PATHTOF(UI\Icon_Module_settings_ca.paa));
isGlobal = 1;
class Arguments {
class allowHandcuffOwnSide {
displayName = CSTRING(ModuleSettings_handcuffSide_name);
description = CSTRING(ModuleSettings_handcuffSide_description);
typeName = "BOOL";
defaultValue = 1;
};
class allowSurrender {
displayName = CSTRING(ModuleSettings_allowSurrender_name);
description = CSTRING(ModuleSettings_allowSurrender_description);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription: ModuleDescription {
description = CSTRING(ModuleSettings_Description);
sync[] = {};
};
};
};

View File

@ -3,8 +3,8 @@ class CfgWeapons {
class InventoryItem_Base_F;
class ACE_CableTie: ACE_ItemCore {
displayName = "$STR_ACE_Captives_CableTie";
descriptionShort = "$STR_ACE_Captives_CableTieDescription";
displayName = CSTRING(CableTie);
descriptionShort = CSTRING(CableTieDescription);
model = QUOTE(PATHTOF(models\ace_cabletie.p3d));
picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa));
scope = 2;

Binary file not shown.

Binary file not shown.

View File

@ -24,6 +24,7 @@ PREP(handlePlayerChanged);
PREP(handleRespawn);
PREP(handleUnitInitPost);
PREP(handleZeusDisplayChanged);
PREP(moduleSettings);
PREP(moduleSurrender);
PREP(setHandcuffed);
PREP(setSurrendered);

View File

@ -2,7 +2,7 @@
class CfgPatches {
class ADDON {
units[] = {QGVAR(ModuleSurrender)};
units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender)};
weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"};
@ -12,6 +12,7 @@ class CfgPatches {
};
};
#include "ACE_Settings.hpp"
#include "CfgEventHandlers.hpp"
#include "CfgMoves.hpp"
#include "CfgVehicles.hpp"

View File

@ -18,8 +18,9 @@
PARAMS_2(_unit,_target);
//Player has cableTie, target is alive and not already handcuffed
//Check sides, Player has cableTie, target is alive and not already handcuffed
(GVAR(allowHandcuffOwnSide) || {(side _unit) != (side _target)}) &&
("ACE_CableTie" in (items _unit)) &&
{alive _target} &&
{!(_target getVariable [QGVAR(isHandcuffed), false])}

View File

@ -22,7 +22,7 @@ private "_returnValue";
_returnValue = if (_newSurrenderState) then {
//no weapon equiped AND not currently surrendering and
(currentWeapon _unit == "") && {!(_unit getVariable [QGVAR(isSurrendering), false])}
GVAR(allowSurrender) && {(currentWeapon _unit) == ""} && {!(_unit getVariable [QGVAR(isSurrendering), false])}
} else {
//is Surrendering
(_unit getVariable [QGVAR(isSurrendering), false])

View File

@ -30,7 +30,7 @@ if (_state) then {
_unit setVariable [QGVAR(escortedUnit), _target, true];
//Add Actionmenu to release captive
_actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize "STR_ACE_Captives_StopEscorting"],
_actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize LSTRING(StopEscorting)],
{[(_this select 0), ((_this select 0) getVariable [QGVAR(escortedUnit), objNull]), false] call FUNC(doEscortCaptive);},
nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))];

View File

@ -27,7 +27,7 @@ if (_weapon == primaryWeapon _player && {_weapon != ""}) then {
_listedItemClasses = [];
_actions = [localize "STR_ACE_Captives_FriskMenuHeader", ""] call ACE_Interaction_fnc_prepareSelectMenu;
_actions = [localize LSTRING(FriskMenuHeader), ""] call ACE_Interaction_fnc_prepareSelectMenu;
_allGear = [];

View File

@ -0,0 +1,19 @@
/*
* Author: PabstMirror
* Module for captivity settings
*
* Arguments:
* 0: The module logic <OBJECT>
*
* Return Value:
* None <NIL>
*
* Public: No
*/
#include "script_component.hpp"
PARAMS_1(_logic);
[_logic, QGVAR(allowHandcuffOwnSide), "allowHandcuffOwnSide"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(allowSurrender), "allowSurrender"] call EFUNC(common,readSettingFromModule);

View File

@ -23,37 +23,13 @@ private ["_bisMouseOver", "_mouseOverObject"];
if (!_activated) exitWith {};
if (local _logic) then {
if ((!isnull curatorcamera) && {((count curatorMouseOver) == 2) && {(curatorMouseOver select 1) == _logic}}) then {//in zeus interface and we placed the module
_bisMouseOver = missionNamespace getVariable ["bis_fnc_curatorObjectPlaced_mouseOver", []];//bis caches the previous curatorMouseOver
if ((count _bisMouseOver) == 2) then {//check what mouse was over before the module was placed
_mouseOverObject = _bisMouseOver select 1;
if ((_mouseOverObject isKindOf "CAManBase") && {(vehicle _mouseOverObject) == _mouseOverObject}) then {
TRACE_2("Debug - module surrendering %1",_mouseOverObject,(name _mouseOverObject));
if (alive _mouseOverObject) then {
if (!(_mouseOverObject getVariable [QGVAR(isSurrendering), false])) then {
["SetSurrendered", [_mouseOverObject], [_mouseOverObject, true]] call EFUNC(common,targetEvent);
} else {
["SetSurrendered", [_mouseOverObject], [_mouseOverObject, false]] call EFUNC(common,targetEvent);
};
} else {
["STR_ACE_Captives_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured);
};
} else {
["STR_ACE_Captives_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured);
};
} else {
["STR_ACE_Captives_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured);
};
} else {
//an editor module
//Modules run before postInit can instal the event handler, so we need to wait a little bit
[{
PARAMS_1(_units);
{
["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
}, [_units], 0.05, 0.05]call EFUNC(common,waitAndExecute);
};
//Modules run before postInit can instal the event handler, so we need to wait a little bit
[{
PARAMS_1(_units);
{
["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
}, [_units], 0.05, 0.05]call EFUNC(common,waitAndExecute);
deleteVehicle _logic;
};

View File

@ -140,7 +140,7 @@
<Spanish>Rendirse</Spanish>
<Portuguese>Render-se</Portuguese>
<Czech>Vzdát se</Czech>
<Polish>Poddaj się</Polish>
<Polish>Kapituluj</Polish>
<Russian>Сдаться</Russian>
<Hungarian>Megadás</Hungarian>
<Italian>Arrenditi</Italian>
@ -157,51 +157,41 @@
<Hungarian>Megadás abbahagyása</Hungarian>
<Italian>Smetti di arrenderti</Italian>
</Key>
<Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
<English>Only use on alive units</English>
<French>Utiliser uniquement sur une unité vivante</French>
<German>Nur bei lebenden Einheiten verwendbar</German>
<Spanish>Utilizar solo en unidades vivas</Spanish>
<Czech>Použitelné jen na živé jednotky</Czech>
<Polish>Używaj tylko na żywych jednostkach</Polish>
<Russian>Применимо только к живым юнитам</Russian>
<Hungarian>Csak élő egységeken használni</Hungarian>
<Italian>Si può fare solo su persone vive</Italian>
<Portuguese>Usar somente em unidades vivas</Portuguese>
</Key>
<Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
<English>Only use on dismounted inf</English>
<French>Utiliser uniquement sur du personnel à pied</French>
<German>Nur bei abgesessener Infanterie verwendbar</German>
<Spanish>Utilizar solo en infanteria desmontada</Spanish>
<Czech>Použitelné jen na pěsích jednotkách</Czech>
<Polish>Używaj tylko na piechocie poza wszelkimi pojazdami</Polish>
<Russian>Применимо только к пехоте вне техники</Russian>
<Hungarian>Csak járműben kívül lévő egységeken használni</Hungarian>
<Italian>Si può usare solo su fanteria a piedi</Italian>
<Portuguese>Usar somente em infantaria desmontada</Portuguese>
</Key>
<Key ID="STR_ACE_Captives_Zeus_NothingSelected">
<English>Nothing under mouse</English>
<French>Rien sous le curseur</French>
<German>Es wurde nichts ausgewählt</German>
<Spanish>Nada bajo el ratón</Spanish>
<Portuguese>Nada debaixo do mouse</Portuguese>
<Czech>Nic není vybráno</Czech>
<Polish>Nie ma nic pod kursorem</Polish>
<Russian>Ничего не выделено</Russian>
<Hungarian>Semmi sincs az egér alatt</Hungarian>
<Italian>Nessuna selezione</Italian>
</Key>
<Key ID="STR_ACE_Captives_ModuleSurrender_DisplayName">
<English>Make Unit Surrender</English>
<Polish>Poddaj się!</Polish>
<Polish>Skapituluj jednostkę</Polish>
<Spanish>Hacer que la unidad se rinda</Spanish>
<German>Einheit kapitulieren lassen</German>
</Key>
<Key ID="STR_ACE_Captives_ModuleSurrender_Description">
<English>Sync a unit to make them surrender.&lt;br /&gt;Source: ace_captives</English>
<Polish>Zsynchronizuj z jednostką aby sprawić by się poddała&lt;br /&gt;Źródło: ace_captives</Polish>
<Polish>Zsynchronizuj z jednostką, aby skapitulowała.&lt;br /&gt;Źródło: ace_captives</Polish>
<Spanish>Sincroniza una unidad para hacer que se rinda.&lt;br /&gt;Fuente: ace_captives</Spanish>
<German>Einheit synchronisieren, um sie kapitulieren zu lassen.&lt;br /&gt;Quelle: ace_captives</German>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
<English>Captives Settings</English>
<Polish>Ustawienia więźniów</Polish>
</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>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name">
<English>Can handcuff own side</English>
<Polish>Skuwanie sojuszników</Polish>
</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>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name">
<English>Allow surrendering</English>
<Polish>Pozwól kapitulować</Polish>
</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>
</Key>
</Package>
</Project>

View File

@ -0,0 +1,75 @@
class ACE_Settings {
/*
* class GVAR(sampleSetting) {
* value = 1; // Value
* typeName = "SCALAR"; // Type (SCALAR, BOOL, STRING, ARRAY, COLOR)
* force = 0; // Force the setting?
* isClientSettable = 1; // Does it appear on the options menu?
*
* // The following settings only apply when isClientSettable == 1
* displayName = "$STR_ACE_Common_SettingName"; // Stringtable entry with the setting name
* description = "$STR_ACE_Common_SettingDescription"; // Stringtable entry with the setting description
*
* // Only applies if typeName == "SCALAR";
* values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; // Stringtable entries that describe the options
* };
*/
class GVAR(forceAllSettings) {
value = 0;
typeName = "BOOL";
};
class GVAR(checkPBOsAction) {
value = 0;
typeName = "SCALAR";
isClientSettable = 0;
values[] = {CSTRING(CheckPBO_Action_WarnOnce), CSTRING(CheckPBO_Action_WarnPerm), CSTRING(CheckPBO_Action_Kick)};
};
class GVAR(checkPBOsCheckAll) {
value = 0;
typeName = "BOOL";
isClientSettable = 0;
};
class GVAR(checkPBOsWhitelist) {
value = "[]";
typeName = "STRING";
isClientSettable = 0;
};
/*class GVAR(enableNumberHotkeys) {
value = 1;
typeName = "BOOL";
isClientSettable = 1;
displayName = CSTRING(EnableNumberHotkeys);
};*/
class GVAR(settingFeedbackIcons) {
value = 1;
typeName = "SCALAR";
force = 0;
isClientSettable = 1;
displayName = CSTRING(SettingFeedbackIconsName);
description = CSTRING(SettingFeedbackIconsDesc);
values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)};
};
class GVAR(SettingProgressBarLocation) {
value = 0;
typeName = "SCALAR";
force = 0;
isClientSettable = 1;
displayName = CSTRING(SettingProgressbarLocationName);
description = CSTRING(SettingProgressbarLocationDesc);
values[] = {ECSTRING(optionsmenu,Top), ECSTRING(optionsmenu,Bottom)};
};
class GVAR(displayTextColor) {
value[] = {0,0,0,0.1};
typeName = "COLOR";
isClientSettable = 1;
displayName = CSTRING(SettingDisplayTextColorName);
description = CSTRING(SettingDisplayTextColorDesc);
};
class GVAR(displayTextFontColor) {
value[] = {1,1,1,1};
typeName = "COLOR";
isClientSettable = 1;
displayName = CSTRING(SettingDisplayTextFontColorName);
description = CSTRING(SettingDisplayTextFontColorDesc);
};
};

View File

@ -2,13 +2,13 @@
class CfgUnitInsignia {
class ACE_insignia_logo {
displayName = "ACE3";
author = "$STR_ACE_Common_ACETeam";
author = CSTRING(ACETeam);
texture = PATHTOF(data\Insignia_ace3logo_ca.paa);
textureVehicle = "";
};
class ACE_insignia_banana {
displayName = "ABE3";
author = "$STR_ACE_Common_ACETeam";
author = CSTRING(ACETeam);
texture = PATHTOF(data\insignia_banana_ca.paa);
textureVehicle = "";
};

View File

@ -1,4 +1,3 @@
class CfgVehicles {
/*class Man;
class CAManBase: Man {
@ -24,48 +23,49 @@ class CfgVehicles {
// += needs a non inherited entry in that class, otherwise it simply overwrites
//#include <DefaultItems.hpp>
class Logic;
class Module_F: Logic {
class ModuleDescription {};
};
class ACE_ModuleCheckPBOs: Module_F {
author = "$STR_ACE_Common_ACETeam";
class Logic;
class Module_F: Logic {
class ModuleDescription;
};
class ACE_Module: Module_F {};
class ACE_ModuleCheckPBOs: ACE_Module {
author = CSTRING(ACETeam);
category = "ACE";
displayName = "$STR_ACE_Common_CheckPBO_DisplayName";
displayName = CSTRING(CheckPBO_DisplayName);
function = QFUNC(moduleCheckPBOs);
scope = 2;
isGlobal = 1;
icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa));
class Arguments {
class Action {
displayName = "$STR_ACE_Common_CheckPBO_Action_DisplayName";
description = "$STR_ACE_Common_CheckPBO_Action_Description";
displayName = CSTRING(CheckPBO_Action_DisplayName);
description = CSTRING(CheckPBO_Action_Description);
typeName = "NUMBER";
class values {
class WarnOnce {
default = 1;
name = "$STR_ACE_Common_CheckPBO_Action_WarnOnce";
name = CSTRING(CheckPBO_Action_WarnOnce);
value = 0;
};
class Warn {
name = "$STR_ACE_Common_CheckPBO_Action_WarnPerm";
name = CSTRING(CheckPBO_Action_WarnPerm);
value = 1;
};
class Kick {
name = "$STR_ACE_Common_CheckPBO_Action_Kick";
name = CSTRING(CheckPBO_Action_Kick);
value = 2;
};
};
};
class CheckAll {
displayName = "$STR_ACE_Common_CheckPBO_CheckAll_DisplayName";
description = "$STR_ACE_Common_CheckPBO_CheckAll_Description";
displayName = CSTRING(CheckPBO_CheckAll_DisplayName);
description = CSTRING(CheckPBO_CheckAll_Description);
typeName = "BOOL";
defaultValue = 0;
};
class Whitelist {
displayName = "$STR_ACE_Common_CheckPBO_Whitelist_DisplayName";
description = "$STR_ACE_Common_CheckPBO_Whitelist_Description";
displayName = CSTRING(CheckPBO_Whitelist_DisplayName);
description = CSTRING(CheckPBO_Whitelist_Description);
typeName = "STRING";
class values {
default = "[]";
@ -73,14 +73,14 @@ class CfgVehicles {
};
};
class ModuleDescription: ModuleDescription {
description = "$STR_ACE_Common_CheckPBO_Description";
description = CSTRING(CheckPBO_Description);
};
};
class ACE_ModuleLSDVehicles: Module_F {
author = "$STR_ACE_Common_ACETeam";
class ACE_ModuleLSDVehicles: ACE_Module {
author = CSTRING(ACETeam);
category = "ACE";
displayName = "$STR_ACE_Common_LSDVehicles_DisplayName";
displayName = CSTRING(LSDVehicles_DisplayName);
function = "ACE_Common_fnc_moduleLSDVehicles";
scope = 2;
icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa));
@ -88,15 +88,15 @@ class CfgVehicles {
class Arguments {
};
class ModuleDescription: ModuleDescription {
description = "$STR_ACE_Common_LSDVehicles_Description";
description = CSTRING(LSDVehicles_Description);
sync[] = {"AnyVehicle"};
};
};
class Box_NATO_Support_F;
class ACE_Box_Misc: Box_NATO_Support_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Common_MiscItems";
author = CSTRING(ACETeam);
displayName = CSTRING(MiscItems);
transportMaxWeapons = 9001;
transportMaxMagazines = 9001;
transportMaxItems = 9001;
@ -112,8 +112,8 @@ class CfgVehicles {
class ACE_bananaItem: Item_Base_F {
scope = 2;
scopeCurator = 2;
displayName = "$STR_ACE_Common_bananaDisplayName";
author = "$STR_ACE_Common_ACETeam";
displayName = CSTRING(bananaDisplayName);
author = CSTRING(ACETeam);
vehicleClass = "Items";
class TransportItems
{

View File

@ -209,7 +209,7 @@ class ACE_RadioProtocolNoRadio: RadioProtocolBase {
class CfgVoice {
class ACE_NoVoice {
author = "$STR_ACE_Common_ACETeam";
author = CSTRING(ACETeam);
protocol = "ACE_RadioProtocolNoRadio";
variants[] = {1};
directories[] = {"",""};
@ -217,13 +217,13 @@ class CfgVoice {
scope = 2;
voiceType = "";
icon = "\a3\Ui_f\data\Map\Markers\Flags\nato_ca.paa";
displayName = "$STR_ACE_Common_NoVoice";
displayName = CSTRING(NoVoice);
};
};
class CfgVoiceTypes {
class ACE_NoVoice {
name = "$STR_ACE_Common_NoVoice";
name = CSTRING(NoVoice);
voices[] = {"ACE_NoVoice","ACE_NoVoice","ACE_NoVoice"};
preview = "ACE_NoVoice";
alternative = "";

View File

@ -30,10 +30,10 @@ class CfgWeapons {
class InventoryItem_Base_F;
class ACE_Banana: ACE_ItemCore {
author = "$STR_ACE_Common_ACETeam";
author = CSTRING(ACETeam);
scope = 2;
displayName = "$STR_ACE_Common_bananaDisplayName";
descriptionShort = "$STR_ACE_Common_bananaDescr";
displayName = CSTRING(bananaDisplayName);
descriptionShort = CSTRING(bananaDescr);
model = PATHTOF(data\banana.p3d);
picture = PATHTOF(data\icon_banana_ca.paa);
icon = "iconObject_circle";

View File

@ -3,12 +3,6 @@
//IGNORE_PRIVATE_WARNING("_handleNetEvent", "_handleRequestAllSyncedEvents", "_handleRequestSyncedEvent", "_handleSyncedEvent");
// Load settings from profile
if (hasInterface) then {
call FUNC(loadSettingsFromProfile);
call FUNC(loadSettingsLocalizedText);
};
// Listens for global "SettingChanged" events, to update the force status locally
["SettingChanged", {
PARAMS_2(_name,_value);
@ -253,3 +247,48 @@ if(isMultiplayer && { ACE_time > 0 || isNull player } ) then {
};
}, 0, []] call cba_fnc_addPerFrameHandler;
};
["SettingsInitialized", {
[
GVAR(checkPBOsAction),
GVAR(checkPBOsCheckAll),
call compile GVAR(checkPBOsWhitelist)
] call FUNC(checkPBOs)
}] call FUNC(addEventHandler);
GVAR(commonPostInited) = true;
// Create a pfh to wait until all postinits are ready and settings are initialized
[{
PARAMS_1(_args);
EXPLODE_1_PVT(_args,_waitingMsgSent);
// If post inits are not ready then wait
if !(SLX_XEH_MACHINE select 8) exitWith {};
// If settings are not initialized then wait
if (isNil QGVAR(settings)) exitWith {
if (!_waitingMsgSent) then {
_args set [0, true];
diag_log text format["[ACE] Waiting on settings from server"];
};
};
[(_this select 1)] call cba_fnc_removePerFrameHandler;
diag_log text format["[ACE] Settings received from server"];
// Event so that ACE_Modules have their settings loaded:
["InitSettingsFromModules", []] call FUNC(localEvent);
// Load user settings from profile
if (hasInterface) then {
call FUNC(loadSettingsFromProfile);
call FUNC(loadSettingsLocalizedText);
};
diag_log text format["[ACE] Settings initialized"];
//Event that settings are safe to use:
["SettingsInitialized", []] call FUNC(localEvent);
}, 0, [false]] call cba_fnc_addPerFrameHandler;

View File

@ -180,6 +180,7 @@ PREP(toHex);
PREP(toNumber);
PREP(uniqueElementsOnly);
PREP(unloadPerson);
PREP(unloadPersonLocal);
PREP(unmuteUnit);
PREP(useItem);
PREP(useMagazine);
@ -293,7 +294,7 @@ GVAR(waitAndExecArray) = [];
//Debug
ACE_COUNTERS = [];
// Load settings
// Load settings on the server and broadcast them
if (isServer) then {
call FUNC(loadSettingsOnServer);
};

View File

@ -5,7 +5,7 @@ class CfgPatches {
units[] = {"ACE_Box_Misc", "ACE_bananaItem"};
weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_main"};
requiredAddons[] = {"ace_main","ace_modules"};
author[] = {"KoffeinFlummi"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
@ -57,77 +57,7 @@ class ACE_Rsc_Control_Base {
h = 0;
};
class ACE_Settings {
/*
*class GVAR(sampleSetting) {
* Value
* value = 1;
*
* Type (SCALAR, BOOL, STRING, ARRAY, COLOR)
* typeName = "SCALAR";
*
* Force the setting?
* force = 0;
*
* Does it appear on the options menu?
* isClientSettable = 1;
*
* The following settings only apply when isClientSettable == 1
* Stringtable entry with the setting name
* displayName = "$STR_ACE_Common_SettingName";
*
* Stringtable entry with the setting description
* description = "$STR_ACE_Common_SettingDescription";
*
* Stringtable entries that describe the options
* Only applies if typeName == "SCALAR";
* values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"};
*};
*/
class GVAR(forceAllSettings) {
value = 0;
typeName = "BOOL";
};
/*class GVAR(enableNumberHotkeys) {
value = 1;
typeName = "BOOL";
isClientSettable = 1;
displayName = "$STR_ACE_Common_EnableNumberHotkeys";
};*/
class GVAR(settingFeedbackIcons) {
value = 1;
typeName = "SCALAR";
force = 0;
isClientSettable = 1;
displayName = "$STR_ACE_Common_SettingFeedbackIconsName";
description = "$STR_ACE_Common_SettingFeedbackIconsDesc";
values[] = {"$STR_ACE_Common_Hide", "$STR_ACE_Common_TopRightDown", "$STR_ACE_Common_TopRightLeft", "$STR_ACE_Common_TopLeftDown", "$STR_ACE_Common_TopLeftRight"};
};
class GVAR(SettingProgressBarLocation) {
value = 0;
typeName = "SCALAR";
force = 0;
isClientSettable = 1;
displayName = "$STR_ACE_Common_SettingProgressbarLocationName";
description = "$STR_ACE_Common_SettingProgressbarLocationDesc";
values[] = {"$STR_ACE_Common_Top", "$STR_ACE_Common_Bottom"};
};
class GVAR(displayTextColor) {
value[] = {0,0,0,0.1};
typeName = "COLOR";
isClientSettable = 1;
displayName = "$STR_ACE_Common_SettingDisplayTextColorName";
description = "$STR_ACE_Common_SettingDisplayTextColorDesc";
};
class GVAR(displayTextFontColor) {
value[] = {1,1,1,1};
typeName = "COLOR";
isClientSettable = 1;
displayName = "$STR_ACE_Common_SettingDisplayTextFontColorName";
description = "$STR_ACE_Common_SettingDisplayTextFontColorDesc";
};
};
#include "ACE_Settings.hpp"
#include "define.hpp"
#include <ProgressScreen.hpp>
#include <HintConfig.hpp>

View File

@ -1,38 +1,95 @@
/*
* Author: commy2
*
* Used to execute the checkPBOs module without placing the module. Don't use this together with the module.
* Checks PBO versions and compares to the one running on server.
*
* Argument:
* 0: Mode (Number)
* Arguments:
* 0: Mode <NUMBER>
* 0: Warn once
* 1: Warn permanently
* 2: Kick
* 1: Check all PBOs? (Boolean, optional default: "[]")
* 2: Whitelist (String, optinal default: false)
* 1: Check all PBOs? <BOOL> (Optional - default: "[]")
* 2: Whitelist <STRING> (Optinal - default: false)
*
* Return value:
* None.
* None
*/
#include "script_component.hpp"
private ["_logic"];
private ["_mode", "_checkAll", "_whitelist"];
_this resize 3;
_mode = _this select 0;
_checkAll = if (count _this > 1) then {_this select 1} else {false};
_whitelist = if (count _this > 2) then {_this select 2} else {"[]"};
PARAMS_3(_mode,_checkAll,_whitelist);
_whitelist = [_whitelist, {toLower _this}] call FUNC(map);
if (isNil "_checkAll") then {
_checkAll = false;
ACE_Version_CheckAll = _checkAll;
ACE_Version_Whitelist = _whitelist;
if (!isServer) then {
[_mode, _checkAll, _whitelist] spawn {
private ["_missingAddon", "_missingAddonServer", "_oldVersionClient", "_oldVersionServer", "_text", "_error", "_rscLayer", "_ctrlHint"];
PARAMS_3(_mode,_checkAll,_whitelist);
waitUntil {
sleep 1;
!isNil "ACE_Version_ClientErrors"
};
_missingAddon = ACE_Version_ClientErrors select 0;
_missingAddonServer = ACE_Version_ClientErrors select 1;
_oldVersionClient = ACE_Version_ClientErrors select 2;
_oldVersionServer = ACE_Version_ClientErrors select 3;
// Display error message.
if (_missingAddon || {_missingAddonServer} || {_oldVersionClient} || {_oldVersionServer}) then {
_text = "[ACE] Version mismatch:<br/><br/>";
_error = format ["ACE version mismatch: %1: ", profileName];
if (_missingAddon) then {
_text = _text + "Detected missing addon on client<br/>";
_error = _error + "Missing file(s); ";
};
if (_missingAddonServer) then {
_text = _text + "Detected missing addon on server<br/>";
_error = _error + "Additional file(s); ";
};
if (_oldVersionClient) then {
_text = _text + "Detected old client version<br/>";
_error = _error + "Older version; ";
};
if (_oldVersionServer) then {
_text = _text + "Detected old server version<br/>";
_error = _error + "Newer version; ";
};
//[_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
diag_log text _error;
_text = composeText [lineBreak, parseText format ["<t align='center'>%1</t>", _text]];
_rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer;
_rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true];
disableSerialization;
_ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint";
_ctrlHint ctrlSetStructuredText _text;
if (_mode == 0) then {
sleep 10;
_rscLayer cutFadeOut 0.2;
};
if (_mode == 2) then {
sleep 10;
waitUntil {alive player};
[player] call FUNC(adminKick);
};
};
};
};
if (isNil "_whitelist") then {
_whitelist = "[]";
if (_checkAll) then {
0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber);
};
_logic = "Logic" createVehicleLocal [0,0,0];
_logic setVariable ["Action", _mode];
_logic setVariable ["CheckAll", _checkAll];
_logic setVariable ["Whitelist", _whitelist];
[_logic, [], true] call FUNC(moduleCheckPBOs);
deleteVehicle _logic;

View File

@ -1,6 +1,5 @@
/*
* Author: KoffeinFlummi
*
* Initializes the check-PBOs module.
*
* Arguments:
@ -11,92 +10,14 @@
*/
#include "script_component.hpp"
PARAMS_3(_logic,_units,_activated);
if !(isServer) exitWith {};
private ["_mode", "_checkAll", "_whitelist"];
PARAMS_3(_logic,_units,_activated);
if !(_activated) exitWith {};
_mode = parseNumber (_logic getVariable "Action");
_checkAll = _logic getVariable ["CheckAll", false];
_whitelist = call compile (_logic getVariable ["Whitelist", "[]"]);
[_logic, QGVAR(checkPBOsAction), "Action" ] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule);
if (isNil "_whitelist") then {
_whitelist = [];
};
_whitelist = [_whitelist, {toLower _this}] call FUNC(map);
ACE_Version_CheckAll = _checkAll;
ACE_Version_Whitelist = _whitelist;
if (!isServer) then {
[_mode, _checkAll, _whitelist] spawn {
private ["_mode", "_checkAll", "_whitelist", "_missingAddon", "_missingAddonServer", "_oldVersionClient", "_oldVersionServer", "_text", "_error", "_rscLayer", "_ctrlHint"];
_mode = _this select 0;
_checkAll = _this select 1;
_whitelist = _this select 2;
waitUntil {
sleep 1;
!isNil "ACE_Version_ClientErrors"
};
_missingAddon = ACE_Version_ClientErrors select 0;
_missingAddonServer = ACE_Version_ClientErrors select 1;
_oldVersionClient = ACE_Version_ClientErrors select 2;
_oldVersionServer = ACE_Version_ClientErrors select 3;
// Display error message.
if (_missingAddon || {_missingAddonServer} || {_oldVersionClient} || {_oldVersionServer}) then {
_text = "[ACE] Version mismatch:<br/><br/>";
_error = format ["ACE version mismatch: %1: ", profileName];
if (_missingAddon) then {
_text = _text + "Detected missing addon on client<br/>";
_error = _error + "Missing file(s); ";
};
if (_missingAddonServer) then {
_text = _text + "Detected missing addon on server<br/>";
_error = _error + "Additional file(s); ";
};
if (_oldVersionClient) then {
_text = _text + "Detected old client version<br/>";
_error = _error + "Older version; ";
};
if (_oldVersionServer) then {
_text = _text + "Detected old server version<br/>";
_error = _error + "Newer version; ";
};
//[_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
diag_log text _error;
_text = composeText [lineBreak, parseText format ["<t align='center'>%1</t>", _text]];
_rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer;
_rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true];
disableSerialization;
_ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint";
_ctrlHint ctrlSetStructuredText _text;
if (_mode == 0) then {
sleep 10;
_rscLayer cutFadeOut 0.2;
};
if (_mode == 2) then {
sleep 10;
waitUntil {alive player};
[player] call FUNC(adminKick);
};
};
};
};
diag_log text format ["[ACE]: Check-PBOs Module Initialized. Mode: %1.", _mode];
if (_checkAll) then {
0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber);
};
diag_log text format ["[ACE]: Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction)];

View File

@ -60,7 +60,7 @@ _perFrameFunction = {
if (isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then {
_errorCode = 1;
} else {
if (ACE_player != _player) then {
if (ACE_player != _player || !alive _player) then {
_errorCode = 2;
} else {
if (!([_args, _elapsedTime, _totalTime, _errorCode] call _condition)) then {

View File

@ -10,12 +10,12 @@
*
* Public: No
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson))
private ["_vehicle", "_loaded", "_emptyPos"];
private ["_vehicle","_emptyPos"];
PARAMS_1(_unit);
_vehicle = vehicle _unit;
@ -25,20 +25,8 @@ if !(speed _vehicle <1 && (((getpos _vehicle) select 2) < 2)) exitwith {false;};
_emptyPos = ((getPos _vehicle) findEmptyPosition [0, 10, typeof _unit]);
if (count _emptyPos == 0) exitwith {false};
_unit setPos _emptyPos;
unassignVehicle _unit;
if (!alive _unit) then {
_unit action ["Eject", vehicle _unit];
};
[_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide);
_loaded = _vehicle getvariable [QGVAR(loaded_persons),[]];
_loaded = _loaded - [_unit];
_vehicle setvariable [QGVAR(loaded_persons),_loaded,true];
if (!([_unit] call FUNC(isAwake))) then {
[_unit,([_unit] call FUNC(getDeathAnim)), 1, true] call FUNC(doAnimation);
if (!isNull _vehicle) then {
[[_unit], QUOTE(FUNC(unloadPersonLocal)), _unit, false] call EFUNC(common,execRemoteFnc);
};
true;

View File

@ -0,0 +1,44 @@
/*
* Author: ViperMaul
* Unload a person from a vehicle, local
*
* Arguments:
* 0: unit <OBJECT>
*
* Return Value:
* Returns true if succesfully unloaded person <BOOL>
*
* Public: No
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson))
private ["_vehicle", "_loaded", "_emptyPos"];
PARAMS_1(_unit);
_vehicle = vehicle _unit;
if (_vehicle == _unit) exitwith {false;};
if !(speed _vehicle <1 && (((getpos _vehicle) select 2) < 2)) exitwith {false;};
_emptyPos = ((getPos _vehicle) findEmptyPosition [0, 10, typeof _unit]);
if (count _emptyPos == 0) exitwith {false};
_unit setPos _emptyPos;
unassignVehicle _unit;
if (!alive _unit) then {
_unit action ["Eject", vehicle _unit];
};
[_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide);
_loaded = _vehicle getvariable [QGVAR(loaded_persons),[]];
_loaded = _loaded - [_unit];
_vehicle setvariable [QGVAR(loaded_persons),_loaded,true];
if (!([_unit] call FUNC(isAwake))) then {
[_unit,([_unit] call FUNC(getDeathAnim)), 1, true] call FUNC(doAnimation);
};
true;

View File

@ -39,7 +39,7 @@
</Key>
<Key ID="STR_ACE_Common_Options">
<English>ACE Options</English>
<German>ACE Optionen</German>
<German>ACE-Optionen</German>
<Spanish>Opciones ACE</Spanish>
<Polish>Ustawienia ACE</Polish>
<Czech>Nastavení ACE</Czech>
@ -474,66 +474,79 @@
<English>Check PBOs</English>
<Polish>Sprawdzaj PBO</Polish>
<Spanish>Comprobar PBOs</Spanish>
<German>Überprüfe PBOs</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Description">
<English></English>
<Polish>Sprawdzaj spójność addonów z serwerem</Polish>
<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>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
<English>Action</English>
<Polish>Akcja</Polish>
<Spanish>Acción</Spanish>
<German>Aktion</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_Description">
<English>What to do with people who do not have the right PBOs?</English>
<Polish>Co zrobić z graczami, którzy nie mają właściwych PBO?</Polish>
<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>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
<English>Warn once</English>
<Polish>Ostrzeż raz</Polish>
<Spanish>Avisar una vez</Spanish>
<German>Einmal verwarnen</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
<English>Warn (permanent)</English>
<Polish>Ostrzeżenie (permanentne)</Polish>
<Spanish>Avisar (permanente)</Spanish>
<German>Immer verwarnen</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
<English>Kick</English>
<Polish>Kick</Polish>
<Spanish>Expulsar</Spanish>
<German>Kicken</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
<English>Check all addons</English>
<Polish>Sprawdź wsz. addony</Polish>
<Spanish>Comprobar todos los addons</Spanish>
<German>Alle Addons überprüfen</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
<English>Check all addons instead of only those of ACE?</English>
<Polish>Sprawdzaj wszystkie addony czy tylko te z ACE?</Polish>
<Spanish>Comprobar todos los addons en vez de solo los del ACE</Spanish>
<German>Alle Addons anstatt nur ACE überprüfen?</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
<English>Whitelist</English>
<Polish>Biała lista</Polish>
<Spanish>Lista blanca</Spanish>
<German>Whitelist</German>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
<English>What addons are allowed regardless?</English>
<Polish>Jakie addony są dozwolone?</Polish>
<Spanish>Qué addons están permitidos igualmente</Spanish>
<German>Welche Addons werden dennoch erlaubt?</German>
</Key>
<Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
<English>LSD Vehicles</English>
<Polish>Pojazdy LSD</Polish>
<Spanish>Vehículos LSD</Spanish>
<German>LSD-Fahrzeuge</German>
</Key>
<Key ID="STR_ACE_Common_LSDVehicles_Description">
<English>Adds LSD effect to synchronized vehicle</English>
<Polish>Dodaje efekt LSD pod zsynchronizowany pojazd</Polish>
<Spanish>Añade el efecto LSD al vehículo sincronizado</Spanish>
<German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -4,7 +4,7 @@ class CfgVehicles {
class ACE_Actions {
class ACE_MainActions {
class ACE_DisarmInventory {
displayName = "$STR_ACE_Disarming_OpenInventory";
displayName = CSTRING(OpenInventory);
distance = 3.5;
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog));

View File

@ -68,7 +68,7 @@ if (isNull _holder) exitWith {
if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
[{
_this call FUNC(disarmDropItems);
}, _this, 0, 0] call EFUNC(common,waitAndExecute);
}, _this] call EFUNC(common,execNextFrame);
};
_holder setVariable [QGVAR(holderInUse), true];

View File

@ -1,10 +1,10 @@
class CfgMagazines {
class NLAW_F;
class ACE_PreloadedMissileDummy: NLAW_F { // The dummy magazine
author = "$STR_ACE_Common_ACETeam";
author = ECSTRING(common,ACETeam);
scope = 1;
scopeArsenal = 1;
displayName = "$STR_ACE_Disposable_PreloadedMissileDummy";
displayName = CSTRING(PreloadedMissileDummy);
picture = PATHTOEF(common,UI\blank_CO.paa);
weaponPoolAvailable = 0;
mass = 0;
@ -13,9 +13,9 @@ class CfgMagazines {
count = 0;
};
class ACE_UsedTube_F: NLAW_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Disposable_UsedTube";
descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription";
author = ECSTRING(common,ACETeam);
displayName = CSTRING(UsedTube);
descriptionShort = CSTRING(UsedTubeDescription);
displayNameShort = "-";
count = 0;
weaponPoolAvailable = 0;

View File

@ -7,9 +7,9 @@ class CfgWeapons {
class ACE_launch_NLAW_Used_F: launch_NLAW_F { // the used tube should be a sub class of the disposable launcher
scope = 1;
ACE_isUsedLauncher = 1;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Disposable_UsedTube";
descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription";
author = ECSTRING(common,ACETeam);
displayName = CSTRING(UsedTube);
descriptionShort = CSTRING(UsedTubeDescription);
magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again.
//picture = ""; @todo
//model = ""; @todo

View File

@ -58,7 +58,7 @@ if (_actionID != -1) then {
};
_actionID = _unit addAction [
format ["<t color='#FF0000'>%1</t>", localize "STR_ACE_Dragging_Drop"],
format ["<t color='#FF0000'>%1</t>", localize LSTRING(Drop)],
QUOTE([ARR_2(_this select 0, (_this select 0) getVariable [ARR_2(QUOTE(QGVAR(carriedObject)),objNull)])] call FUNC(dropObject_carry)),
nil,
20,

View File

@ -49,7 +49,7 @@ if (_actionID != -1) then {
};
_actionID = _unit addAction [
format ["<t color='#FF0000'>%1</t>", localize "STR_ACE_Dragging_Drop"],
format ["<t color='#FF0000'>%1</t>", localize LSTRING(Drop)],
QUOTE([ARR_2(_this select 0, (_this select 0) getVariable [ARR_2(QUOTE(QGVAR(draggedObject)),objNull)])] call FUNC(dropObject)),
nil,
20,

View File

@ -49,8 +49,8 @@ if (_type in _initializedClasses) exitWith {};
_initializedClasses pushBack _type;
GVAR(initializedClasses_carry) = _initializedClasses;
_carryAction = [QGVAR(carry), localize "STR_ACE_Dragging_Carry", "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
_dropAction = [QGVAR(drop_carry), localize "STR_ACE_Dragging_Drop", "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction);
_carryAction = [QGVAR(carry), localize LSTRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction);
_dropAction = [QGVAR(drop_carry), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction);
[_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass);
[_type, 0, [], _dropAction] call EFUNC(interact_menu,addActionToClass);

View File

@ -49,8 +49,8 @@ if (_type in _initializedClasses) exitWith {};
_initializedClasses pushBack _type;
GVAR(initializedClasses) = _initializedClasses;
_dragAction = [QGVAR(drag), localize "STR_ACE_Dragging_Drag", "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
_dropAction = [QGVAR(drop), localize "STR_ACE_Dragging_Drop", "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction);
_dragAction = [QGVAR(drag), localize LSTRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction);
_dropAction = [QGVAR(drop), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction);
[_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass);
[_type, 0, [], _dropAction] call EFUNC(interact_menu,addActionToClass);

View File

@ -22,7 +22,7 @@ private "_weight";
_weight = [_target] call FUNC(getWeight);
if (_weight > GETMVAR(ACE_maxWeightCarry,1E11)) exitWith {
[localize "STR_ACE_Dragging_UnableToDrag"] call EFUNC(common,displayTextStructured);
[localize LSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
};
private "_timer";
@ -41,7 +41,7 @@ if (_target isKindOf "CAManBase") then {
// move a bit closer and adjust direction when trying to pick up a person
_target setDir (getDir _unit + 180);
_target setPos (getPos _unit vectorAdd vectorDir _unit);
_target setPosASL (getPosASL _unit vectorAdd (vectorDir _unit));
[_unit, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon", 2, true] call EFUNC(common,doAnimation);
[_target, "AinjPfalMstpSnonWrflDnon_carried_Up", 2, true] call EFUNC(common,doAnimation);

View File

@ -22,7 +22,7 @@ private "_weight";
_weight = [_target] call FUNC(getWeight);
if (_weight > GETMVAR(ACE_maxWeightDrag,1E11)) exitWith {
[localize "STR_ACE_Dragging_UnableToDrag"] call EFUNC(common,displayTextStructured);
[localize LSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured);
};
// add a primary weapon if the unit has none.
@ -43,7 +43,7 @@ _unit selectWeapon primaryWeapon _unit;
// move a bit closer and adjust direction when trying to pick up a person
if (_target isKindOf "CAManBase") then {
_target setDir (getDir _unit + 180);
_target setPos (getPos _unit vectorAdd (vectorDir _unit vectorMultiply 1.5));
_target setPosASL (getPosASL _unit vectorAdd (vectorDir _unit vectorMultiply 1.5));
[_target, "AinjPpneMrunSnonWnonDb_grab", 2, true] call EFUNC(common,doAnimation);
};

View File

@ -9,45 +9,45 @@ onSetup parameters:
0: STRING - Magazine Classname
*/
class Command {
displayName = $STR_ACE_Explosives_clacker_displayName;
displayName = CSTRING(clacker_displayName);
picture = PATHTOF(Data\UI\Clacker.paa);
onPlace = QUOTE(_this call FUNC(AddClacker);false);
requires[] = {"ACE_Clacker"};
};
class MK16_Transmitter:Command {
displayName = $STR_ACE_Explosives_MK16_displayName;
displayName = CSTRING(MK16_displayName);
picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
requires[] = {"ACE_M26_Clacker"};
};
class DeadManSwitch:Command {
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
displayName = CSTRING(DeadManSwitch_displayName);
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
requires[] = {"ACE_DeadManSwitch"};
};
class Cellphone:Command {
displayName = $STR_ACE_Explosives_cellphone_displayName;
displayName = CSTRING(cellphone_displayName);
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
requires[] = {"ACE_Cellphone"};
};
class PressurePlate {
displayName = $STR_ACE_Explosives_PressurePlate;
displayName = CSTRING(PressurePlate);
picture = PATHTOF(Data\UI\PressurePlate.paa);
onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false";
};
class IRSensor {
displayName = $STR_ACE_Explosives_IRSensor;
displayName = CSTRING(IRSensor);
picture = PATHTOF(Data\UI\PressurePlate.paa);
onPlace = "false";
};
class Timer {
displayName = $STR_ACE_Explosives_timerName;
displayName = CSTRING(timerName);
picture = PATHTOF(data\UI\Timer.paa);
onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
};
class Tripwire {
displayName = $STR_ACE_Explosives_TripWire;
displayName = CSTRING(TripWire);
picture = PATHTOF(Data\UI\Tripwire.paa);
onPlace = "false";
};

View File

@ -9,12 +9,19 @@ class Extended_PostInit_EventHandlers {
};
};
/*
TODO: Move the addEventHandlers out of PostInit into here or separate eventHandlers,
to enable them on all units, so unit switching works for explosives properly.
class Extended_Init_EventHandlers {
class CAManBase {
init = "";
}
}
*/
class Extended_Killed_EventHandlers {
class CAManBase {
GVAR(killedHandler) = QUOTE(_this call FUNC(onKilled));
};
};
class Extended_Take_EventHandlers {
class CAManBase {
GVAR(takeHandler) = QUOTE([ARR_3(_this select 0, _this select 1, _this select 2)] call FUNC(onInventoryChanged));
};
};
class Extended_Put_EventHandlers {
class CAManBase {
GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged));
};
};

View File

@ -78,13 +78,13 @@ class CfgMagazines {
class ACE_Triggers {
SupportedTriggers[] = {"IRSensor","PressurePlate","Timer","Command"};
class PressurePlate{
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
displayName = CSTRING(SLAME_Magnetic);
digDistance = 0;
ammo = "SLAMDirectionalMine_Magnetic_Ammo";
pitch = 90;
};
class IRSensor{
displayName = $STR_ACE_Explosives_SLAME_IRSensor;
displayName = CSTRING(SLAME_IRSensor);
};
class Timer {
ammo = "SLAMDirectionalMine_Timer_Ammo";
@ -106,7 +106,7 @@ class CfgMagazines {
class DeadmanSwitch:Command {};
class Cellphone:Command {};
class PressurePlate {
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
displayName = CSTRING(SLAME_Magnetic);
digDistance = 0;
ammo = "IEDUrbanBig_Remote_Ammo";
pitch = 0;
@ -131,7 +131,7 @@ class CfgMagazines {
class DeadmanSwitch: Command {};
class Cellphone: Command {};
class PressurePlate {
displayName = $STR_ACE_Explosives_SLAME_Magnetic;
displayName = CSTRING(SLAME_Magnetic);
digDistance = 0;
ammo = "IEDUrbanSmall_Remote_Ammo";
pitch = 0;

View File

@ -1,30 +1,27 @@
class Logic;
class Module_F: Logic {
class ModuleDescription {};
};
class ACE_ModuleExplosive: Module_F {
author = "$STR_ACE_Common_ACETeam";
class ACE_Module;
class ACE_ModuleExplosive: ACE_Module {
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = "$STR_ACE_Explosive_Module_DisplayName";
displayName = CSTRING(Module_DisplayName);
function = QUOTE(FUNC(module));
scope = 2;
isGlobal = 1;
icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
class Arguments {
class RequireSpecialist {
displayName = "$STR_ACE_Explosive_RequireSpecialist_DisplayName";
description = "$STR_ACE_Explosive_RequireSpecialist_Description";
displayName = CSTRING(RequireSpecialist_DisplayName);
description = CSTRING(RequireSpecialist_Description);
typeName = "BOOL";
defaultValue = 0;
};
class PunishNonSpecialists {
displayName = "$STR_ACE_Explosive_PunishNonSpecialists_DisplayName";
description = "$STR_ACE_Explosive_PunishNonSpecialists_Description";
displayName = CSTRING(PunishNonSpecialists_DisplayName);
description = CSTRING(PunishNonSpecialists_Description);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription: ModuleDescription {
description = "$STR_ACE_Explosive_Module_Description";
class ModuleDescription {
description = CSTRING(Module_Description);
};
};
};

View File

@ -3,7 +3,7 @@ class CfgVehicles {
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Explosives {
displayName = $STR_ACE_Explosives_Menu;
displayName = CSTRING(Menu);
condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
statement = "";
exceptions[] = {"isNotSwimming", "isNotInside"};
@ -13,7 +13,7 @@ class CfgVehicles {
hotkey = "X";
//Sub-menu items
class ACE_Detonate {
displayName = $STR_ACE_Explosives_Detonate;
displayName = CSTRING(Detonate);
condition = QUOTE([_player] call FUNC(canDetonate));
statement = "";
insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
@ -24,7 +24,7 @@ class CfgVehicles {
hotkey = "T";
};
class ACE_Place {
displayName = $STR_ACE_Explosives_Place;
displayName = CSTRING(Place);
condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
statement = "";
insertChildren = QUOTE([_player] call FUNC(addExplosiveActions););
@ -35,7 +35,7 @@ class CfgVehicles {
hotkey = "P";
};
class ACE_Cellphone {
displayName = $STR_ACE_Explosives_cellphone_displayName;
displayName = CSTRING(cellphone_displayName);
condition = "('ACE_Cellphone' in (items ace_player))";
statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
exceptions[] = {"isNotSwimming", "isNotInside"};
@ -65,7 +65,7 @@ class CfgVehicles {
distance = 5;
condition = "true";
class ACE_Defuse {
displayName = $STR_ACE_Explosives_Defuse;
displayName = CSTRING(Defuse);
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
exceptions[] = {"isNotSwimming"};
@ -97,7 +97,7 @@ class CfgVehicles {
condition = "true";
class ACE_SetTrigger {
selection = "";
displayName = "$STR_ACE_Explosives_TriggerMenu";
displayName = CSTRING(TriggerMenu);
distance = 4;
condition = "true";
statement = "";
@ -109,7 +109,7 @@ class CfgVehicles {
};
class ACE_PickUp {
selection = "";
displayName = "$STR_ACE_Explosives_Pickup";
displayName = CSTRING(Pickup);
distance = 4;
condition = "true";
statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);

View File

@ -9,8 +9,8 @@ class CfgWeapons {
class ACE_Clacker: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_clacker_displayName;
descriptionShort = $STR_ACE_Explosives_clacker_description;
displayName = CSTRING(clacker_displayName);
descriptionShort = CSTRING(clacker_description);
picture = PATHTOF(Data\UI\Clacker.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
ACE_Range = 250;
@ -22,14 +22,14 @@ class CfgWeapons {
};
};
class ACE_M26_Clacker: ACE_Clacker {
displayName = $STR_ACE_Explosives_M26_displayName;
displayName = CSTRING(M26_displayName);
picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
ACE_Range = 5000;
};
class ACE_DefusalKit: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_DefusalKit_displayName;
descriptionShort = $STR_ACE_Explosives_DefusalKit_description;
displayName = CSTRING(DefusalKit_displayName);
descriptionShort = CSTRING(DefusalKit_description);
picture = PATHTOF(Data\UI\Pliers.paa);
model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
@ -40,8 +40,8 @@ class CfgWeapons {
};
class ACE_DeadManSwitch: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
descriptionShort = $STR_ACE_Explosives_DeadManSwitch_description;
displayName = CSTRING(DeadManSwitch_displayName);
descriptionShort = CSTRING(DeadManSwitch_description);
picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
ACE_Range = 100;
@ -54,8 +54,8 @@ class CfgWeapons {
};
class ACE_Cellphone: ACE_ItemCore {
scope = 2;
displayName = $STR_ACE_Explosives_cellphone_displayName;
descriptionShort = $STR_ACE_Explosives_cellphone_description;
displayName = CSTRING(cellphone_displayName);
descriptionShort = CSTRING(cellphone_description);
picture = PATHTOF(Data\UI\Cellphone_UI.paa);
model = "\A3\weapons_F\ammo\mag_univ.p3d";
ACE_Range = 15000;

View File

@ -89,7 +89,7 @@ class RscACE_SelectTimeUI {
h = 0.1;
y = 0.09;
style = ST_CENTER;
text = $STR_ACE_Explosives_Cancel;
text = CSTRING(Cancel);
action = "closeDialog 0;";
};
class approveBtn: RscButton {
@ -99,7 +99,7 @@ class RscACE_SelectTimeUI {
h = 0.1;
w = 0.15;
style = ST_CENTER;
text = $STR_ACE_Explosives_SetTime;
text = CSTRING(SetTime);
action = "closeDialog 0;";
};
};
@ -215,7 +215,7 @@ class Rsc_ACE_PhoneInterface {
y = 0.676 * safezoneH + safezoneY;
w = 0.0309375 * safezoneW;
h = 0.033 * safezoneH;
tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial";
tooltip = CSTRING(Phone_AddToSpeedDial);
action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial););
};
class clear: Rsc_ACE_HiddenButton {
@ -224,7 +224,7 @@ class Rsc_ACE_PhoneInterface {
y = 0.445 * safezoneH + safezoneY;
w = 0.020625 * safezoneW;
h = 0.033 * safezoneH;
tooltip = "$STR_ACE_Explosives_Clear";
tooltip = CSTRING(Clear);
action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];);
};
class dial: Rsc_ACE_HiddenButton {
@ -233,7 +233,7 @@ class Rsc_ACE_PhoneInterface {
y = 0.445 * safezoneH + safezoneY;
w = 0.04125 * safezoneW;
h = 0.033 * safezoneH;
tooltip = "$STR_ACE_Explosives_Phone_Dial";
tooltip = CSTRING(Phone_Dial);
action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone););
};
class up: Rsc_ACE_HiddenButton {
@ -242,7 +242,7 @@ class Rsc_ACE_PhoneInterface {
y = 0.445 * safezoneH + safezoneY;
w = 0.020625 * safezoneW;
h = 0.033 * safezoneH;
tooltip = "$STR_ACE_Explosives_Phone_Up";
tooltip = CSTRING(Phone_Up);
action = QUOTE([true] call FUNC(setSpeedDial));
};
class down: Rsc_ACE_HiddenButton {
@ -251,7 +251,7 @@ class Rsc_ACE_PhoneInterface {
y = 0.485 * safezoneH + safezoneY;
w = 0.020625 * safezoneW;
h = 0.033 * safezoneH;
tooltip = "$STR_ACE_Explosives_Phone_Down";
tooltip = CSTRING(Phone_Down);
action = QUOTE([false] call FUNC(setSpeedDial));
};
class speedDial_Text: RscText {

View File

@ -15,28 +15,10 @@
*/
#include "script_component.hpp"
//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them
//Handles Editor Placed / Zeus / Scripted
if (isServer) then {
[{
private ["_explosive", "_helpers", "_defuseHelper"];
{
_explosive = _x;
_helpers = {
((typeOf _x) == "ACE_DefuseObject") && {(_x getVariable [QGVAR(Explosive), objNull]) == _explosive}
} count (attachedObjects _explosive);
if (_helpers == 0) then {
TRACE_3("Explosive without helper",_explosive,(getPosAsl _explosive),(typeOf _explosive));
_defuseHelper = createVehicle ["ACE_DefuseObject", (getPos _explosive), [], 0, "NONE"];
_defuseHelper attachTo [_explosive, [0,0,0], ""];
_defuseHelper setVariable [QGVAR(Explosive),_explosive,true];
};
} forEach allMines;
}, 5, []] call CBA_fnc_addPerFrameHandler;
};
if !(hasInterface) exitWith {};
["interactMenuOpened", {_this call FUNC(interactEH)}] call EFUNC(common,addEventHandler);
GVAR(PlacedCount) = 0;
GVAR(Setup) = objNull;
GVAR(pfeh_running) = false;
@ -50,47 +32,3 @@ GVAR(CurrentSpeedDial) = 0;
}] call EFUNC(common,addEventHandler);
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler);
player addEventHandler ["Killed", {
private "_deadman";
call FUNC(place_Cancel);
_deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives);
{
[(_this select 0), -1, _x, true] call FUNC(detonateExplosive);
} count _deadman;
}];
player addEventHandler ["Take", {
private ["_item", "_getter", "_giver", "_config", "_detonators"];
_item = _this select 2;
_getter = _this select 0;
_giver = _this select 1;
_config = ConfigFile >> "CfgWeapons" >> _item;
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
private ["_clackerItems"];
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
_detonators = [_giver] call FUNC(getDetonators);
if (count _detonators == 0) then {
_giver setVariable [QGVAR(Clackers), nil, true];
};
};
}];
player addEventHandler ["Put", {
private ["_item", "_getter", "_giver", "_config"];
_item = _this select 2;
_getter = _this select 1;
_giver = _this select 0;
_config = ConfigFile >> "CfgWeapons" >> _item;
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
private ["_clackerItems"];
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
_getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
_detonators = [_giver] call FUNC(getDetonators);
if (count _detonators == 0) then {
_giver setVariable [QGVAR(Clackers), nil, true];
};
};
}];

View File

@ -36,12 +36,16 @@ PREP(handleScrollWheel);
PREP(hasExplosives);
PREP(hasPlacedExplosives);
PREP(interactEH);
PREP(getDetonators);
PREP(getPlacedExplosives);
PREP(getSpeedDialExplosive);
PREP(module);
PREP(onInventoryChanged);
PREP(onKilled);
PREP(onLanded);
PREP(openTimerSetUI);

View File

@ -37,8 +37,8 @@ _config = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> co
_clacker = _unit getVariable [QGVAR(Clackers), []];
GVAR(PlacedCount) = GVAR(PlacedCount) + 1;
_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode",
_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize LSTRING(DetonateCode),
GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))];
_unit setVariable [QGVAR(Clackers), _clacker, true];
_unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)];
_unit sideChat format [localize LSTRING(DetonateCode), GVAR(PlacedCount)];

View File

@ -21,10 +21,4 @@ if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDef
[_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive);
};
{
detach _x;
deleteVehicle _x;
false
} count (attachedObjects (_explosive));
_unit action ["Deactivate", _unit, _explosive];

View File

@ -26,12 +26,6 @@ _result = true;
if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false};
_helpers = attachedObjects (_item select 0);
{
detach _x;
deleteVehicle _x;
} forEach _helpers;
if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then {
private ["_exp", "_previousExp"];
_previousExp = _item select 0;

View File

@ -0,0 +1,56 @@
/*
* Author: PabstMirror
* When interact_menu starts rendering (from "interact_keyDown" event)
* Add defuse helpers to all nearby mines
*
* Arguments:
* Interact Menu Type (0 - world, 1 - self) <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* [0] call ace_explosives_fnc_interactEH
*
* Public: Yes
*/
#include "script_component.hpp"
PARAMS_1(_interactionType);
//Ignore self-interaction menu
if (_interactionType != 0) exitWith {};
//Ignore while mounted:
if ((vehicle ACE_player) != ACE_player) exitWith {};
//Ignore if we don't have defuse kit
if (!("ACE_DefusalKit" in (items ACE_player))) exitWith {};
[{
PARAMS_2(_args,_pfID);
EXPLODE_3_PVT(_args,_setPosition,_addedDefuseHelpers,_minesHelped);
if (!EGVAR(interact_menu,keyDown)) then {
TRACE_1("Cleaning Defuse Helpers",(count _addedDefuseHelpers));
{deleteVehicle _x;} forEach _addedDefuseHelpers;
[_pfID] call CBA_fnc_removePerFrameHandler;
} else {
private ["_defuseHelper"];
// Prevent Rare Error when ending mission with interact key down:
if (isNull ace_player) exitWith {};
//If player moved >5 meters from last pos, then rescan
if (((getPosASL ace_player) distance _setPosition) > 5) then {
{
if (((_x distance ACE_player) < 15) && {!(_x in _minesHelped)}) then {
TRACE_2("Making Defuse Helper",(_x),(typeOf _x));
_defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _x);
_defuseHelper attachTo [_x, [0,0,0]];
_defuseHelper setVariable [QGVAR(Explosive),_x];
_addedDefuseHelpers pushBack _defuseHelper;
_minesHelped pushBack _x;
};
} forEach allMines;
_args set [0, (getPosASL ace_player)];
};
};
}, 0.5, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], []]] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,35 @@
/*
* Author: Garth 'L-H' de Wet
* When a take/put event handler fires and a detonator is changed hands.
* Then take "attached" explosives.
*
* Arguments:
* 0: Receiver <OBJECT>
* 1: Giver <OBJECT>
* 2: Item <STRING>
*
* Return Value:
* None
*
* Example:
* Handled by CBA
*
* Public: No
*/
#include "script_component.hpp"
private ["_config", "_detonators"];
PARAMS_3(_receiver,_giver,_item);
if (_receiver != ace_player) exitWith {};
_config = ConfigFile >> "CfgWeapons" >> _item;
if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
private ["_clackerItems"];
_clackerItems = _giver getVariable [QGVAR(Clackers), []];
_receiver SetVariable [QGVAR(Clackers), (_receiver getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
_detonators = [_giver] call FUNC(getDetonators);
if (count _detonators == 0) then {
_giver setVariable [QGVAR(Clackers), nil, true];
};
};

View File

@ -0,0 +1,26 @@
/*
* Author: Garth 'L-H' de Wet
* Detonates all attached deadman's switched triggered explosives.
*
* Arguments:
* 0: Unit <OBJECT>
*
* Return Value:
* None
*
* Example:
* Handled by CBA
*
* Public: No
*/
#include "script_component.hpp"
private ["_deadman"];
_unit = _this select 0;
if (_unit == ACE_player) then {
call FUNC(place_Cancel);
};
if (!isServer) exitWith{};
_deadman = [_unit, "DeadManSwitch"] call FUNC(getPlacedExplosives);
{
[_unit, -1, _x, true] call FUNC(detonateExplosive);
} foreach _deadman;

View File

@ -38,4 +38,4 @@ DFUNC(SetTimer) = {
buttonSetAction [8860, QUOTE(call DFUNC(SetTimer);)];
buttonSetAction [8855, QUOTE(closeDialog 0;)];
ctrlSetText [8870, format[localize "STR_ACE_Explosives_TimerMenu",0, 30]];
ctrlSetText [8870, format[localize LSTRING(TimerMenu),0, 30]];

View File

@ -51,16 +51,8 @@ if (isText(_magazineTrigger >> "ammo")) then {
_ammo = getText (_magazineTrigger >> "ammo");
};
_triggerSpecificVars pushBack _triggerConfig;
private ["_defuseHelper"];
_defuseHelper = createVehicle ["ACE_DefuseObject", _pos, [], 0, "NONE"];
_defuseHelper setPosATL _pos;
_explosive = createVehicle [_ammo, _pos, [], 0, "NONE"];
_defuseHelper attachTo [_explosive, [0,0,0], ""];
_defuseHelper setVariable [QGVAR(Explosive),_explosive,true];
_expPos = getPosATL _explosive;
_defuseHelper setPosATL (((getPosATL _defuseHelper) vectorAdd (_pos vectorDiff _expPos)));
_explosive setPosATL _pos;
if (!isNull _attachedTo) then {

Some files were not shown because too many files have changed in this diff Show More