Merge branch 'master' into settingsErrorChecking

Conflicts:
	addons/map_gestures/stringtable.xml
This commit is contained in:
PabstMirror 2015-11-03 12:09:36 -06:00
commit cfba7c01e8
64 changed files with 486 additions and 191 deletions

View File

@ -44,6 +44,7 @@ BlackPixxel <blackpixxel96@gmail.com>
BlackQwar BlackQwar
Brakoviejo Brakoviejo
Brisse <brisse@outlook.com> Brisse <brisse@outlook.com>
Brostrom.A | Evul <andreas.brostrom.ce@gmail.com>
BullHorn <bullhorn7@gmail.com> BullHorn <bullhorn7@gmail.com>
Clon1998 <ps.patti1998@gmail.com> Clon1998 <ps.patti1998@gmail.com>
Codingboy Codingboy

View File

@ -14,7 +14,7 @@ Indicate if the issue appears on stable or development version. In case it is th
## Reporting the issue ## Reporting the issue
Head over to the <a href="{{ site.githubUrl }}/issues" target="_blank">ACE3 GitHub issue tracker</a> and press the <a href="{{ site.githubUrl }}/issues/new" target="_blank">"New issue"</a> button in the top right corner. Add a descriptive title and copy the following issue template in to the text area: Head over to the [ACE3 GitHub issue tracker](https://github.com/acemod/ACE3/issues) and press the [New issue](https://github.com/acemod/ACE3/issues/new) button in the top right corner. Add a descriptive title and copy the following issue template in to the text area:
``` ```
ACE3 Version: 3.x.x ACE3 Version: 3.x.x
@ -43,8 +43,8 @@ ACE3 Version: 3.x.x
A video of the issue might be helpful in resolving it faster. A video of the issue might be helpful in resolving it faster.
GitHub uses [Markdown](http://daringfireball.net/projects/markdown/syntax) to style the output. If you want to know more about it (e.g. how to [turn text bold](https://help.github.com/articles/markdown-basics/#styling-text), how to denote [code blocks](https://help.github.com/articles/markdown-basics/#inline-formats) or [inline code](https://help.github.com/articles/markdown-basics/#multiple-lines)) have a look at the [GitHub Markdown Documentation](https://help.github.com/articles/github-flavored-markdown).
Github uses <a href="http://daringfireball.net/projects/markdown/syntax" target="_blank">"Markdown"</a> to style the output. If you want to know more about it (e.g. how to <a href="https://help.github.com/articles/markdown-basics/#styling-text" target="_blank">turn text bold</a>, how to denote <a href="https://help.github.com/articles/markdown-basics/#inline-formats" target="_blank">code blocks</a> or <a href="https://help.github.com/articles/markdown-basics/#multiple-lines" target="_blank">inline code</a>) have a look at the <a href="https://help.github.com/articles/github-flavored-markdown/" target="_blank">GitHub markdown documentation</a>.
# Feature Requests # Feature Requests
@ -54,11 +54,11 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are
Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite. Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite.
## Requesting a feature ## Requesting a feature
In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for <a href="{{ site.githubUrl }}/issues/414/" target="_blank">ACE 3 Feature requests</a>. Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier. In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier.
Following their approval, feature requests may be moved by moderators to a separate issue for further discussion. Following their approval, feature requests may be moved by moderators to a separate issue for further discussion.
# Regarding Pull Requests (PRs) # Regarding Pull Requests (PRs)
- You want to help but don't know where to start ? Check the wiki entry for [setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) - You want to help but don't know where to start? Check the wiki entry for [setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html)
- [Make sure to respect the file structure](http://ace3mod.com/wiki/development/modularity-and-pbo-structure.html) - [Make sure to respect the file structure](http://ace3mod.com/wiki/development/modularity-and-pbo-structure.html)
- [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html) - [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html)

View File

@ -1,30 +1,35 @@
<p align="center"> <p align="center">
<img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg" width="480"> <img src="https://github.com/acemod/ACE3/blob/master/extras/assets/logo/black/ACE3-Logo.jpg" width="480">
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/badge/Version-3.3.2-blue.svg" alt="ACE3 Version"> <img src="https://img.shields.io/badge/Version-3.3.2-blue.svg?style=flat-square" alt="ACE3 Version">
</a> </a>
<a href="https://github.com/acemod/ACE3/releases/download/v3.3.2/ace3_3.3.2.zip"> <a href="https://github.com/acemod/ACE3/releases/download/v3.3.2/ace3_3.3.2.zip">
<img src="https://img.shields.io/badge/Download-65.7_MB-green.svg" alt="ACE3 Download"> <img src="https://img.shields.io/badge/Download-65.7_MB-green.svg?style=flat-square" alt="ACE3 Download">
</a> </a>
<a href="https://github.com/acemod/ACE3/issues"> <a href="https://github.com/acemod/ACE3/issues">
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Issues" alt="ACE3 Issues"> <img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
</a> </a>
<a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670"> <a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg" alt="BIF Thread"> <img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
</a> </a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE"> <a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="https://img.shields.io/badge/License-GPLv2-red.svg" alt="ACE3 License"> <img src="https://img.shields.io/badge/License-GPLv2-red.svg?style=flat-square" alt="ACE3 License">
</a> </a>
<a href="http://slackin.ace3mod.com/"> <a href="http://slackin.ace3mod.com/">
<img src="http://slackin.ace3mod.com/badge.svg" alt="ACE3 Slack"> <img src="http://slackin.ace3mod.com/badge.svg?style=flat-square&label=Slack" alt="ACE3 Slack">
</a> </a>
<a href="https://travis-ci.org/acemod/ACE3"> <a href="https://travis-ci.org/acemod/ACE3">
<img src="https://img.shields.io/travis/acemod/ACE3.svg" alt="ACE3 Build Status"> <img src="https://img.shields.io/travis/acemod/ACE3.svg?style=flat-square&label=Build" alt="ACE3 Build Status">
</a> </a>
</p> </p>
<p align="center"><sup><strong>Requires the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Visit us on <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>
<p align="center">
<sup><strong>Requires the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>.<br/>
Visit us on <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup>
</p>
**ACE3** is a joint effort by the teams behind **ACE2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3. **ACE3** is a joint effort by the teams behind **ACE2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3.
@ -43,6 +48,7 @@ The mod is **built modularly**, so almost any included PBO can be easily removed
- Captivity system - Captivity system
- Explosives system, including different trigger types - Explosives system, including different trigger types
- Map screen improvements marker placement and map tools - Map screen improvements marker placement and map tools
- Logistics
- Advanced missile guidance and laser designation - Advanced missile guidance and laser designation
#### Additional features #### Additional features

View File

@ -153,16 +153,32 @@ class CfgVehicles {
class GVAR(ModuleSurrender): Module_F { class GVAR(ModuleSurrender): Module_F {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
category = "ACE"; category = "ACE";
displayName = CSTRING(ModuleSurrender_DisplayName); //Make Unit Surrender displayName = CSTRING(ModuleSurrender_DisplayName);
function = QFUNC(moduleSurrender); function = QFUNC(moduleSurrender);
scope = 2; //show in editor scope = 2; //show in editor
isGlobal = 1; //run global isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa)); icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
functionPriority = 0; functionPriority = 0;
class Arguments {}; class Arguments {};
class ModuleDescription: ModuleDescription { class ModuleDescription: ModuleDescription {
description = CSTRING(ModuleSurrender_Description); //Sync a unit to make them surrender.<br/>Source: ace_captives description = CSTRING(ModuleSurrender_Description);
sync[] = {"AnyAI"};
};
};
class GVAR(ModuleHandcuffed): Module_F {
author = ECSTRING(common,ACETeam);
category = "ACE";
displayName = CSTRING(ModuleHandcuffed_DisplayName);
function = QFUNC(moduleHandcuffed);
scope = 2; //show in editor
isGlobal = 0; //run on server
isTriggerActivated = 1; //Wait for triggers
icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa));
functionPriority = 0;
class Arguments {};
class ModuleDescription: ModuleDescription {
description = CSTRING(ModuleHandcuffed_Description);
sync[] = {"AnyAI"}; sync[] = {"AnyAI"};
}; };
}; };

View File

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

View File

@ -2,7 +2,7 @@
class CfgPatches { class CfgPatches {
class ADDON { class ADDON {
units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender)}; units[] = {QGVAR(ModuleSettings), QGVAR(ModuleSurrender), QGVAR(ModuleHandcuffed)};
weapons[] = {"ACE_CableTie"}; weapons[] = {"ACE_CableTie"};
requiredVersion = REQUIRED_VERSION; requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ACE_Interaction"}; requiredAddons[] = {"ACE_Interaction"};

View File

@ -20,11 +20,12 @@ params ["_unit", "_target"];
//Check sides, 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)}) && (GVAR(allowHandcuffOwnSide) || {(side _unit) != (side _target)}) &&
("ACE_CableTie" in (items _unit)) && {"ACE_CableTie" in (items _unit)} &&
{alive _target} && {alive _target} &&
{!(_target getVariable [QGVAR(isHandcuffed), false])} && {!(_target getVariable [QGVAR(isHandcuffed), false])} &&
{ {
(_target getVariable ["ACE_isUnconscious", false]) || //isUnconscious (_target getVariable ["ACE_isUnconscious", false]) || //isUnconscious
{!([_target] call EFUNC(common,isPlayer))} || //is an AI (not a player)
{GVAR(requireSurrender) == 0} || //or don't require surrendering {GVAR(requireSurrender) == 0} || //or don't require surrendering
{_target getVariable [QGVAR(isSurrendering), false]} || //or is surrendering {_target getVariable [QGVAR(isSurrendering), false]} || //or is surrendering
{(GVAR(requireSurrender) == 2) && {(currentWeapon _target) == ""}} //or "SurrenderOrNoWeapon" and no weapon {(GVAR(requireSurrender) == 2) && {(currentWeapon _target) == ""}} //or "SurrenderOrNoWeapon" and no weapon

View File

@ -0,0 +1,35 @@
/*
* Author: PabstMirror
* Module Function to make a unit handcuffed (can be called from editor)
*
* Arguments:
* 0: The Module Logic <OBJECT>
* 1: synced objects <ARRAY>
* 2: Activated <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* Called from module
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "_units", "_activated"];
TRACE_3("params",_logic,_units,_activated);
if (!_activated) exitWith {};
if (!isServer) exitWith {};
//Modules run before postInit can instal the event handler, so we need to wait a little bit
[{
params ["_units"];
{
["SetHandcuffed", [_x], [_x, true]] call EFUNC(common,targetEvent);
} forEach _units;
}, [_units], 0.05] call EFUNC(common,waitAndExecute);
deleteVehicle _logic;

View File

@ -1,9 +1,9 @@
/* /*
* Author: PabstMirror * Author: PabstMirror
* Module Function to make a unit surrender (can be called from editor, or placed with zeus) * Module Function to make a unit surrender (can be called from editor)
* *
* Arguments: * Arguments:
* 0: The Module Logic Object <OBJECT> * 0: The Module Logic <OBJECT>
* 1: synced objects <ARRAY> * 1: synced objects <ARRAY>
* 2: Activated <BOOL> * 2: Activated <BOOL>
* *
@ -17,20 +17,19 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_bisMouseOver", "_mouseOverObject"];
params ["_logic", "_units", "_activated"]; params ["_logic", "_units", "_activated"];
TRACE_3("params",_logic,_units,_activated);
if (!_activated) exitWith {}; if (!_activated) exitWith {};
if (!isServer) exitWith {};
if (local _logic) then { //Modules run before postInit can instal the event handler, so we need to wait a little bit
//Modules run before postInit can instal the event handler, so we need to wait a little bit [{
[{ params ["_units"];
params ["_units"]; {
{ ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent); } forEach _units;
} forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute);
}, [_units], 0.05]call EFUNC(common,waitAndExecute);
deleteVehicle _logic; deleteVehicle _logic;
};

View File

@ -56,8 +56,11 @@ if (_state) then {
//Adds an animation changed eh //Adds an animation changed eh
//If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain)
private "_animChangedEHID"; local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
if (_animChangedEHID != -1) then {
TRACE_1("removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
};
_animChangedEHID = _unit addEventHandler ["AnimChanged", { _animChangedEHID = _unit addEventHandler ["AnimChanged", {
params ["_unit", "_newAnimation"]; params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation); TRACE_2("AnimChanged",_unit,_newAnimation);
@ -67,7 +70,6 @@ if (_state) then {
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
}; };
} else { } else {
_turretPath = []; _turretPath = [];
{ {
_x params ["_xUnit", "", "", "_xTurretPath"]; _x params ["_xUnit", "", "", "_xTurretPath"];
@ -90,8 +92,7 @@ if (_state) then {
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
//remove AnimChanged EH //remove AnimChanged EH
private "_animChangedEHID"; local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
_animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
TRACE_1("removing animChanged EH",_animChangedEHID); TRACE_1("removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(handcuffAnimEHID), -1]; _unit setVariable [QGVAR(handcuffAnimEHID), -1];

View File

@ -48,7 +48,11 @@ if (_state) then {
if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then { if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then {
//Adds an animation changed eh //Adds an animation changed eh
//If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain)
private "_animChangedEHID"; local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
if (_animChangedEHID != -1) then {
TRACE_1("removing animChanged EH",_animChangedEHID);
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
};
_animChangedEHID = _unit addEventHandler ["AnimChanged", { _animChangedEHID = _unit addEventHandler ["AnimChanged", {
params ["_unit", "_newAnimation"]; params ["_unit", "_newAnimation"];
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
@ -64,8 +68,7 @@ if (_state) then {
[_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
//remove AnimChanged EH //remove AnimChanged EH
private "_animChangedEHID"; local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
_animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
_unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(surrenderAnimEHID), -1]; _unit setVariable [QGVAR(surrenderAnimEHID), -1];

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Captives"> <Package name="Captives">
<Key ID="STR_ACE_Captives_SetCaptive"> <Key ID="STR_ACE_Captives_SetCaptive">
@ -99,7 +99,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_CableTieDescription"> <Key ID="STR_ACE_Captives_CableTieDescription">
<English>Cable ties that allow you to restrain prisoners.</English> <English>Cable ties that allow you to restrain prisoners.</English>
<German>Kabelbinder ermöglichen es, Gefangene zu fesseln.</German> <German>Mit Kabelbindern können Gefangene gefesselt werden.</German>
<Polish>Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia.</Polish> <Polish>Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia.</Polish>
<Spanish>Los precintos permiten maniatar prisioneros</Spanish> <Spanish>Los precintos permiten maniatar prisioneros</Spanish>
<French>Les Serflex permettent de menotter les prisonniers.</French> <French>Les Serflex permettent de menotter les prisonniers.</French>
@ -179,6 +179,12 @@
<Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian> <Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian>
<Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.&lt;br /&gt;Источник: ace_captives</Russian> <Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.&lt;br /&gt;Источник: ace_captives</Russian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_DisplayName">
<English>Make Unit Handcuffed</English>
</Key>
<Key ID="STR_ACE_Captives_ModuleHandcuffed_Description">
<English>Sync a unit to make them handcuffed.&lt;br /&gt;Source: ace_captives</English>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName"> <Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
<English>Captives Settings</English> <English>Captives Settings</English>
<Polish>Ustawienia więźniów</Polish> <Polish>Ustawienia więźniów</Polish>
@ -206,7 +212,7 @@
<Polish>Skuwanie sojuszników</Polish> <Polish>Skuwanie sojuszników</Polish>
<Spanish>Se puede esposar el bando propio</Spanish> <Spanish>Se puede esposar el bando propio</Spanish>
<Czech>Může spoutat spolubojovníky</Czech> <Czech>Může spoutat spolubojovníky</Czech>
<German>Kann Teamkollegen fesseln</German> <German>Kann Kameraden fesseln</German>
<Portuguese>Pode algemar o próprio lado</Portuguese> <Portuguese>Pode algemar o próprio lado</Portuguese>
<French>Peut libérer sa propre faction</French> <French>Peut libérer sa propre faction</French>
<Hungarian>Saját oldal megbilincselhető</Hungarian> <Hungarian>Saját oldal megbilincselhető</Hungarian>
@ -217,7 +223,7 @@
<Polish>Czy gracze mogą skuwać sojuszników?</Polish> <Polish>Czy gracze mogą skuwać sojuszników?</Polish>
<Spanish>Pueden los jugadores esposar unidades en su propio bando</Spanish> <Spanish>Pueden los jugadores esposar unidades en su propio bando</Spanish>
<Czech>Mohou hráči spoutat jednotky na své straně</Czech> <Czech>Mohou hráči spoutat jednotky na své straně</Czech>
<German>Können Spieler eigene Einheiten fesseln</German> <German>Spieler können eigene Einheiten fesseln. </German>
<Portuguese>Os jogadores podem algemar unidades do seu lado</Portuguese> <Portuguese>Os jogadores podem algemar unidades do seu lado</Portuguese>
<French>Les joueurs peuvent utiliser les Serflex sur leur propre camp</French> <French>Les joueurs peuvent utiliser les Serflex sur leur propre camp</French>
<Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian> <Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian>
@ -239,7 +245,7 @@
<Polish>Gracze mogą skapitulować po schowaniu swojej broni do kabury</Polish> <Polish>Gracze mogą skapitulować po schowaniu swojej broni do kabury</Polish>
<Spanish>Los jugadores pueden rendirse después de enfundar su arma</Spanish> <Spanish>Los jugadores pueden rendirse después de enfundar su arma</Spanish>
<Czech>Hráč se může vzdát poté, co si skryje zbraň</Czech> <Czech>Hráč se může vzdát poté, co si skryje zbraň</Czech>
<German>Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben</German> <German>Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben.</German>
<Portuguese>Jogadores podem se render depois de guardar sua arma</Portuguese> <Portuguese>Jogadores podem se render depois de guardar sua arma</Portuguese>
<French>Les joueurs peuvent se rendre après avoir rangé leur arme</French> <French>Les joueurs peuvent se rendre après avoir rangé leur arme</French>
<Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian> <Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian>
@ -247,6 +253,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name">
<English>Require surrendering</English> <English>Require surrendering</English>
<German>Benötigt Kapitulation</German>
<Polish>Wymagaj kapitulacji</Polish> <Polish>Wymagaj kapitulacji</Polish>
<Portuguese>Requer rendição</Portuguese> <Portuguese>Requer rendição</Portuguese>
<Russian>Требовать пленения</Russian> <Russian>Требовать пленения</Russian>
@ -254,6 +261,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
<English>Require Players to surrender before they can be arrested</English> <English>Require Players to surrender before they can be arrested</English>
<German>Spieler müssen sich erst ergeben, bevor sie gefangen genommen werden können</German>
<Polish>Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować</Polish> <Polish>Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować</Polish>
<Portuguese>Requer que jogadores se rendam antes de poderem ser presos</Portuguese> <Portuguese>Requer que jogadores se rendam antes de poderem ser presos</Portuguese>
<Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian> <Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian>
@ -261,6 +269,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_SurrenderOnly"> <Key ID="STR_ACE_Captives_SurrenderOnly">
<English>Surrendering only</English> <English>Surrendering only</English>
<German>Nur Ergeben</German>
<Polish>Tylko kapitulacja</Polish> <Polish>Tylko kapitulacja</Polish>
<Portuguese>Somente rendição </Portuguese> <Portuguese>Somente rendição </Portuguese>
<Russian>Только сдавшийся в плен</Russian> <Russian>Только сдавшийся в плен</Russian>
@ -268,6 +277,7 @@
</Key> </Key>
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon"> <Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
<English>Surrendering or No weapon</English> <English>Surrendering or No weapon</English>
<German>Ergeben oder keine Waffe</German>
<Polish>Kapitulacja lub brak broni</Polish> <Polish>Kapitulacja lub brak broni</Polish>
<Portuguese>Rendição ou desarmado</Portuguese> <Portuguese>Rendição ou desarmado</Portuguese>
<Russian>Сдавшийся или безоружный</Russian> <Russian>Сдавшийся или безоружный</Russian>

View File

@ -172,6 +172,13 @@ class CfgVehicles {
GVAR(hasCargo) = 0; GVAR(hasCargo) = 0;
}; };
// autonomus
class Helicopter_Base_F;
class UAV_01_base_F: Helicopter_Base_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
};
// boats // boats
class Ship; class Ship;
class Ship_F: Ship { class Ship_F: Ship {

View File

@ -223,6 +223,7 @@ PREP(getTurretCopilot);
PREP(getDoorTurrets); PREP(getDoorTurrets);
PREP(getTurretsFFV); PREP(getTurretsFFV);
PREP(getTurretsOther); PREP(getTurretsOther);
PREP(hasHatch);
// missing inventory commands // missing inventory commands
PREP(binocularMagazine); PREP(binocularMagazine);

View File

@ -0,0 +1,35 @@
/*
* Author: commy2
* Check if unit is in a vehicle position where it can turn in or out.
*
* Arguments:
* 0: Unit <OBJECT>
*
* Return Value:
* Unit has a hatch? <BOOL>
*
* Public: Yes
*/
#include "script_component.hpp"
params ["_unit"];
local _vehicle = vehicle _unit;
if (_unit == _vehicle) exitWith {false};
local _config = configFile >> "CfgVehicles" >> typeOf _vehicle;
if (getNumber (_config >> "hideProxyInCombat") != 1) exitWith {false};
if (_unit == driver _vehicle) exitWith {
getNumber (_config >> "forceHideDriver") == 0; // return
};
local _turret = [_unit] call FUNC(getTurretIndex);
if (_turret isEqualTo []) exitWith {false};
local _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath);
getNumber (_turretConfig >> "forceHideGunner") == 0; // return

View File

@ -11,7 +11,7 @@
* None * None
* *
* Example: * Example:
* [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitAndExecute * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitUntilAndExecute
* *
* Public: No * Public: No
*/ */

View File

@ -6,24 +6,28 @@
<Polish>DAGR</Polish> <Polish>DAGR</Polish>
<Spanish>DAGR</Spanish> <Spanish>DAGR</Spanish>
<Russian>DAGR</Russian> <Russian>DAGR</Russian>
<Portuguese>DAGR</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ConfigureDAGR"> <Key ID="STR_ACE_DAGR_ConfigureDAGR">
<English>Configure DAGR</English> <English>Configure DAGR</English>
<Polish>Konfiguruj DAGR</Polish> <Polish>Konfiguruj DAGR</Polish>
<Spanish>Configurar DAGR</Spanish> <Spanish>Configurar DAGR</Spanish>
<Russian>Настроить DAGR</Russian> <Russian>Настроить DAGR</Russian>
<Portuguese>Configurar DAGR</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_DAGR_ToggleDAGR"> <Key ID="STR_ACE_DAGR_ToggleDAGR">
<English>Toggle DAGR</English> <English>Toggle DAGR</English>
<Polish>Przełącz DAGR</Polish> <Polish>Przełącz DAGR</Polish>
<Spanish>Mostrar DAGR</Spanish> <Spanish>Mostrar DAGR</Spanish>
<Russian>Вкл./выкл. DAGR</Russian> <Russian>Вкл./выкл. DAGR</Russian>
<Portuguese>Mostrar DAGR</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_DAGR_Description"> <Key ID="STR_ACE_DAGR_Description">
<English>Defense Advanced GPS Receiver</English> <English>Defense Advanced GPS Receiver</English>
<Polish>Defense Advanced GPS Receiver</Polish> <Polish>Defense Advanced GPS Receiver</Polish>
<Spanish>Defense Advanced GPS Receiver</Spanish> <Spanish>Defense Advanced GPS Receiver</Spanish>
<Russian>Военный многофункциональный GPS-приёмник</Russian> <Russian>Военный многофункциональный GPS-приёмник</Russian>
<Portuguese>Defense Advanced GPS Receiver</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Dragging"> <Package name="Dragging">
<Key ID="STR_ACE_Dragging_Drag"> <Key ID="STR_ACE_Dragging_Drag">
@ -53,6 +53,7 @@
<English>Raise/Lower</English> <English>Raise/Lower</English>
<German>Heben/Senken</German> <German>Heben/Senken</German>
<Polish>Wyżej/Niżej</Polish> <Polish>Wyżej/Niżej</Polish>
<Portuguese>Levantar/Abaixar</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,7 +1,7 @@
#include "script_component.hpp" #include "script_component.hpp"
GVAR(enabled) = false; GVAR(enabled) = false;
GVAR(ACE_time) = 0; GVAR(time) = 0;
GVAR(position) = [0,0,0]; GVAR(position) = [0,0,0];
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};

View File

@ -22,7 +22,7 @@ _distance = call FUNC(getRange);
if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {}; if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {};
GVAR(Enabled) = true; GVAR(Enabled) = true;
GVAR(Time) = ACE_time; GVAR(time) = ACE_time;
if (_distance == 0) then { if (_distance == 0) then {
_distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision _distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision

View File

@ -60,7 +60,7 @@ private ["_movingAzimuth", "_posTarget", "_velocityTarget"];
// MOVING TARGETS // MOVING TARGETS
_movingAzimuth = 0; _movingAzimuth = 0;
if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3) then { if (ACE_time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then {
// calculate speed of target // calculate speed of target
_posTarget = [ _posTarget = [
(getPos _vehicle select 0) + _distance * (_weaponDirection select 0), (getPos _vehicle select 0) + _distance * (_weaponDirection select 0),
@ -68,9 +68,9 @@ if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3)
(getPos _vehicle select 2) + _distance * (_weaponDirection select 2) (getPos _vehicle select 2) + _distance * (_weaponDirection select 2)
]; ];
_velocityTarget = [ _velocityTarget = [
((_posTarget select 0) - (GVAR(position) select 0)) / (ACE_time - GVAR(ACE_time)), ((_posTarget select 0) - (GVAR(position) select 0)) / (ACE_time - GVAR(time)),
((_posTarget select 1) - (GVAR(position) select 1)) / (ACE_time - GVAR(ACE_time)), ((_posTarget select 1) - (GVAR(position) select 1)) / (ACE_time - GVAR(time)),
((_posTarget select 2) - (GVAR(position) select 2)) / (ACE_time - GVAR(ACE_time)) ((_posTarget select 2) - (GVAR(position) select 2)) / (ACE_time - GVAR(time))
]; ];
private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"]; private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"];
@ -130,7 +130,7 @@ if (ACE_time - GVAR(ACE_time) > 1 and GVAR(ACE_time) != -1 and count _this < 3)
}; };
}; };
GVAR(enabled) = false; GVAR(enabled) = false;
GVAR(ACE_time) = -1; GVAR(time) = -1;
private ["_viewDiff", "_FCSAzimuth", "_FCSMagazines", "_FCSElevation"]; private ["_viewDiff", "_FCSAzimuth", "_FCSMagazines", "_FCSElevation"];

View File

@ -259,10 +259,12 @@
<Key ID="STR_ACE_Map_DefaultChannel_DisplayName"> <Key ID="STR_ACE_Map_DefaultChannel_DisplayName">
<English>Set Channel At Start</English> <English>Set Channel At Start</English>
<Polish>Ust. domyślny kanał</Polish> <Polish>Ust. domyślny kanał</Polish>
<Portuguese>Definir canal no início</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Map_DefaultChannel_Description"> <Key ID="STR_ACE_Map_DefaultChannel_Description">
<English>Change the starting marker channel at mission start</English> <English>Change the starting marker channel at mission start</English>
<Polish>Ustaw domyślny kanał dla markerów przy starcie misji</Polish> <Polish>Ustaw domyślny kanał dla markerów przy starcie misji</Polish>
<Portuguese>Muda o canal do marcador no início da missão</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -3,72 +3,95 @@
<Package name="map_gestures"> <Package name="map_gestures">
<Key ID="STR_ACE_map_gestures_moduleSettings_displayName"> <Key ID="STR_ACE_map_gestures_moduleSettings_displayName">
<English>Map Gestures</English> <English>Map Gestures</English>
<Portuguese>Gestos no mapa</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_enabled_displayName"> <Key ID="STR_ACE_map_gestures_enabled_displayName">
<English>Enabled</English> <English>Enabled</English>
<Portuguese>Ativado</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_maxRange_displayName"> <Key ID="STR_ACE_map_gestures_maxRange_displayName">
<English>Map Gesture Max Range</English> <English>Map Gesture Max Range</English>
<Portuguese>Distância para gestos no mapa</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_maxRange_description"> <Key ID="STR_ACE_map_gestures_maxRange_description">
<English>Max range between players to show the map gesture indicator [default: 7 meters]</English> <English>Max range between players to show the map gesture indicator [default: 7 meters]</English>
<Portuguese>Distância max. entre os jogadores para mostrar o indicador de gesto no mapa [padrão: 7 metros]</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName"> <Key ID="STR_ACE_map_gestures_defaultLeadColor_displayName">
<English>Lead Default Color</English> <English>Lead Default Color</English>
<Portuguese>Cor padrão para o líder</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultLeadColor_description"> <Key ID="STR_ACE_map_gestures_defaultLeadColor_description">
<English>Fallback Color value for group leaders when there is no group setting. [Module: leave blank to not force on clients]</English> <English>Fallback Color value for group leaders when there is no group setting. [Module: leave blank to not force on clients]</English>
<Portuguese>Valor de cor alternativa para líderes de grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultColor_displayName"> <Key ID="STR_ACE_map_gestures_defaultColor_displayName">
<English>Default Color</English> <English>Default Color</English>
<Portuguese>Cor padrão</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_defaultColor_description"> <Key ID="STR_ACE_map_gestures_defaultColor_description">
<English>Fallback Color value when there is no group setting. [Module: leave blank to not force on clients]</English> <English>Fallback Color value when there is no group setting. [Module: leave blank to not force on clients]</English>
<Portuguese>Valor alternativo de cor</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_leadColor_displayName"> <Key ID="STR_ACE_map_gestures_leadColor_displayName">
<English>Lead Color</English> <English>Lead Color</English>
<Portuguese>Cor do líder</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_leadColor_description"> <Key ID="STR_ACE_map_gestures_leadColor_description">
<English>Color value for group leaders of groups synced with this module.</English> <English>Color value for group leaders of groups synced with this module.</English>
<Portuguese>Valor de cor para líderes de grupo sincronizados com este módulo.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_color_displayName"> <Key ID="STR_ACE_map_gestures_color_displayName">
<English>Color</English> <English>Color</English>
<Portuguese>Cor</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_color_description"> <Key ID="STR_ACE_map_gestures_color_description">
<English>Color value for group members of groups synced with this module.</English> <English>Color value for group members of groups synced with this module.</English>
<Portuguese>Valor de cor para membros de grupo sincronizados com este módulo.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_moduleGroupSettings_displayName"> <Key ID="STR_ACE_map_gestures_moduleGroupSettings_displayName">
<English>Map Gestures - Group Settings</English> <English>Map Gestures - Group Settings</English>
<Portuguese>Gestos no mapa - Definições de Grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_interval_displayName"> <Key ID="STR_ACE_map_gestures_interval_displayName">
<English>Update Interval</English> <English>Update Interval</English>
<Portuguese>Intervalo de atualizações</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_interval_description"> <Key ID="STR_ACE_map_gestures_interval_description">
<English>Time between data updates.</English> <English>Time between data updates.</English>
<Portuguese>Tempo entre atualização de dados</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurations_displayName">
<English>Group color configurations</English> <English>Group color configurations</English>
<Portuguese>Configurações de cores de grupo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurations_description">
<English>Group color configuration containing arrays of color pairs ([leadColor, color]).</English> <English>Group color configuration containing arrays of color pairs ([leadColor, color]).</English>
<Portuguese>Configuração de cores de grupo contendo arrays com pares de cores ([leadColor, color]).</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_description"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_description">
<English>Hash of Group ID mapped to the Group color configuration index.</English> <English>Hash of Group ID mapped to the Group color configuration index.</English>
<Portuguese>Hashes de ID de grupos mapeados para o índice de configuração de cor de grupos.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_displayName"> <Key ID="STR_ACE_map_gestures_GroupColorConfigurationMapping_displayName">
<English>GroupID Color configuration mapping</English> <English>GroupID Color configuration mapping</English>
<Portuguese>Mapeamento de configuração para cores de GroupID</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_enabled_description"> <Key ID="STR_ACE_map_gestures_enabled_description">
<English>Enables the Map Gestures.</English> <English>Enables the Map Gestures.</English>
<Portuguese>Ativa os gestos no mapa</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_nameTextColor_displayName"> <Key ID="STR_ACE_map_gestures_nameTextColor_displayName">
<English>Name Text Color</English> <English>Name Text Color</English>
<Portuguese>Cor do texto do nome</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_nameTextColor_description"> <Key ID="STR_ACE_map_gestures_nameTextColor_description">
<English>Color of the name tag text besides the map gestures mark.</English> <English>Color of the name tag text besides the map gestures mark.</English>
<Portuguese>Cor do texto da etiqueta de nome que fica embaixo da marcação de gestos no mapa.</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_map_gestures_mapGestures_category"> <Key ID="STR_ACE_map_gestures_mapGestures_category">
<English>Map Gestures</English> <English>Map Gestures</English>
<Portuguese>Gestos no mapa</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -154,13 +154,13 @@ class ACE_Settings {
category = CSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 3; value = 3;
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
}; };
class GVAR(useLocation_SurgicalKit) { class GVAR(useLocation_SurgicalKit) {
category = CSTRING(Category_Medical); category = CSTRING(Category_Medical);
typeName = "SCALAR"; typeName = "SCALAR";
value = 2; value = 2;
values[] = {"Anywhere", "Medical vehicles", "Medical facility", "vehicle & facility", "Disabled"}; values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)};
}; };
class GVAR(useCondition_PAK) { class GVAR(useCondition_PAK) {
category = CSTRING(Category_Medical); category = CSTRING(Category_Medical);

View File

@ -70,6 +70,7 @@ PREP(setDead);
PREP(setHitPointDamage); PREP(setHitPointDamage);
PREP(setStructuralDamage); PREP(setStructuralDamage);
PREP(setUnconscious); PREP(setUnconscious);
PREP(translateSelections);
PREP(treatment); PREP(treatment);
PREP(treatment_failure); PREP(treatment_failure);
PREP(treatment_success); PREP(treatment_success);

View File

@ -11,6 +11,9 @@
* ReturnValue: * ReturnValue:
* Can Treat <BOOL> * Can Treat <BOOL>
* *
* Example:
* [player, cursorTarget, "Head", "SurgicalKit"] call ace_medical_fnc_canTreat
*
* Public: Yes * Public: Yes
*/ */
@ -85,10 +88,11 @@ _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isI
_val = missionNamespace getvariable _x; _val = missionNamespace getvariable _x;
if (typeName _val == "SCALAR") then { if (typeName _val == "SCALAR") then {
_return = switch (_val) do { _return = switch (_val) do {
case 0: {true}; case 0: {true}; //AdvancedMedicalSettings_anywhere
case 1: _medVeh; case 1: {call _medVeh}; //AdvancedMedicalSettings_vehicle
case 2: _medFacility; case 2: {call _medFacility}; //AdvancedMedicalSettings_facility
case 3: {call _medFacility || call _medVeh}; case 3: {(call _medFacility) || {call _medVeh}}; //AdvancedMedicalSettings_vehicleAndFacility
default {false}; //Disabled
}; };
}; };
}; };

View File

@ -45,12 +45,9 @@ _createLitter = {
if(surfaceIsWater (getPos _unit)) exitWith { false }; if(surfaceIsWater (getPos _unit)) exitWith { false };
_position = getPosATL _unit; _position = getPosATL _unit;
_position params ["_posX", "_posY"]; _position params ["_posX", "_posY", "_posZ"];
_position = if (random(1) >= 0.5) then { _position = [_posX + (random 2) - 1, _posY + (random 2) - 1, _posZ];
[_posX + random 1, _posY + random 1, 0]
} else {
[_posX - random 1, _posY - random 1, 0];
};
_direction = (random 360); _direction = (random 360);
// Create the litter, and timeout the event based on the cleanup delay // Create the litter, and timeout the event based on the cleanup delay

View File

@ -39,6 +39,13 @@ TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage,_unit);
if (_selection == "hands") exitWith {_unit getHit "hands"}; if (_selection == "hands") exitWith {_unit getHit "hands"};
if (_selection == "legs") exitWith {_unit getHit "legs"}; if (_selection == "legs") exitWith {_unit getHit "legs"};
// Deal with the new hitpoint and selection names introduced with Arma v1.50 and later.
// This will convert new selection names into selection names that the medical system understands
// TODO This should be cleaned up when we revisit the medical system at a later stage
// and instead we should deal with the new hitpoints directly
_selection = [_selection] call FUNC(translateSelections);
_this set [1, _selection]; // ensure that the parameters are set correctly
// If the damage is being weird, we just tell it to fuck off. Ignore: "hands", "legs", "?" // If the damage is being weird, we just tell it to fuck off. Ignore: "hands", "legs", "?"
if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3" if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3"

View File

@ -0,0 +1,37 @@
/*
* Author: Glowbal
* Translate selection names into medical usable hit selection names.
* Aims to deal with the new hitpoint system introduced in Arma3 v1.50 and later.
*
* Arguments:
* 0: selection name <STRING>
*
* Return Value:
* translated selection name <STRING>
*
* Example:
* ["pelvis"] call ace_medical_fnc_translateSelections
* Returns "body"
*
* Public: No
*/
#define HEAD_SELECTIONS ["face_hub", "neck", "head"]
#define TORSO_SELECTIONS ["pelvis", "spine1", "spine2", "spine3", "body"]
#define L_ARM_SELECTIONS ["hand_l"]
#define R_ARM_SELECTIONS ["hand_r"]
#define L_LEG_SELECTIONS ["leg_l"]
#define R_LEG_SELECTIONS ["leg_r"]
params ["_selection"];
if (_selection in HEAD_SELECTIONS) exitwith {"head"};
if (_selection in TORSO_SELECTIONS) exitwith {"body"};
// Not necessary unless we get more hitpoints variants in an next arma update
/*if (_selection in L_ARM_SELECTIONS) exitwith {"hand_l"};
if (_selection in R_ARM_SELECTIONS) exitwith {"hand_r"};
if (_selection in L_LEG_SELECTIONS) exitwith {"leg_l"};
if (_selection in R_LEG_SELECTIONS) exitwith {"leg_r"};*/
_selection;

View File

@ -100,10 +100,11 @@ if ("All" in _locations) then {
_val = missionNamespace getvariable _x; _val = missionNamespace getvariable _x;
if (typeName _val == "SCALAR") then { if (typeName _val == "SCALAR") then {
_return = switch (_val) do { _return = switch (_val) do {
case 0: {true}; case 0: {true}; //AdvancedMedicalSettings_anywhere
case 1: _medVeh; case 1: {call _medVeh}; //AdvancedMedicalSettings_vehicle
case 2: _medFacility; case 2: {call _medFacility}; //AdvancedMedicalSettings_facility
case 3: {call _medFacility || call _medVeh}; case 3: {(call _medFacility) || {call _medVeh}}; //AdvancedMedicalSettings_vehicleAndFacility
default {false}; //Disabled
}; };
}; };
}; };

View File

@ -2105,10 +2105,12 @@
<Polish>%1 wykonał cykl RKO</Polish> <Polish>%1 wykonał cykl RKO</Polish>
<Russian>%1 провел сердечно-легочную реанимацию</Russian> <Russian>%1 провел сердечно-легочную реанимацию</Russian>
<Spanish>%1 realicó RCP</Spanish> <Spanish>%1 realicó RCP</Spanish>
<Portuguese>%1 realizou RCP</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_Activity_fullHeal"> <Key ID="STR_ACE_Medical_Activity_fullHeal">
<English>%1 used Personal Aid Kit</English> <English>%1 used Personal Aid Kit</English>
<Polish>%1 użył apteczki</Polish> <Polish>%1 użył apteczki</Polish>
<Portuguese>%1 utilizou KPS</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_HeavilyWounded"> <Key ID="STR_ACE_Medical_HeavilyWounded">
<English>Heavily wounded</English> <English>Heavily wounded</English>
@ -2223,6 +2225,7 @@
<Polish>Lecz w pełni zabandażowane hitpointy</Polish> <Polish>Lecz w pełni zabandażowane hitpointy</Polish>
<Spanish>Curar miembros totalmente vendados</Spanish> <Spanish>Curar miembros totalmente vendados</Spanish>
<Russian>Исцелять полностью перебинтованные части тела</Russian> <Russian>Исцелять полностью перебинтованные части тела</Russian>
<Portuguese>Curar hitpoints totalmente enfaixados</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_painIsOnlySuppressed"> <Key ID="STR_ACE_Medical_painIsOnlySuppressed">
<English>Pain is only temporarily suppressed</English> <English>Pain is only temporarily suppressed</English>
@ -3441,12 +3444,14 @@
<Polish>Lecz hitpointy</Polish> <Polish>Lecz hitpointy</Polish>
<Spanish>Curar puntos de vida</Spanish> <Spanish>Curar puntos de vida</Spanish>
<Russian>Исцелять части тела</Russian> <Russian>Исцелять части тела</Russian>
<Portuguese>Curar hitpoints</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description"> <Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description">
<English>Heal fully bandaged hitpoints</English> <English>Heal fully bandaged hitpoints</English>
<Polish>Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność.</Polish> <Polish>Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność.</Polish>
<Spanish>Curar miembros totalmente vendados</Spanish> <Spanish>Curar miembros totalmente vendados</Spanish>
<Russian>Исцелять полностью перебинтованные части тела</Russian> <Russian>Исцелять полностью перебинтованные части тела</Russian>
<Portuguese>Curar totalmente hitpoints enfaixados</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName"> <Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName">
<English>Pain suppression</English> <English>Pain suppression</English>
@ -3844,12 +3849,14 @@
<Polish>Ta osoba (%1) jest przytomna i nie może zostać załadowana</Polish> <Polish>Ta osoba (%1) jest przytomna i nie może zostać załadowana</Polish>
<Spanish>Esta persona (%1) está despierto y no puede ser cargado</Spanish> <Spanish>Esta persona (%1) está despierto y no puede ser cargado</Spanish>
<Russian>Боец (%1) в сознании и не может быть погружен</Russian> <Russian>Боец (%1) в сознании и не может быть погружен</Russian>
<Portuguese>Esta pessoa (%1) está acordada e não pode ser carregada</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Medical_noTourniquetOnBodyPart"> <Key ID="STR_ACE_Medical_noTourniquetOnBodyPart">
<English>There is no tourniquet on this body part!</English> <English>There is no tourniquet on this body part!</English>
<Polish>Na tej części ciała nie ma stazy!</Polish> <Polish>Na tej części ciała nie ma stazy!</Polish>
<Spanish>No hay torniquete en esta parte del cuerpo!</Spanish> <Spanish>No hay torniquete en esta parte del cuerpo!</Spanish>
<Russian>Нет жгута на этой части тела!</Russian> <Russian>Нет жгута на этой части тела!</Russian>
<Portuguese>Não existe nenhum torniquete nesta parte do corpo!</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -24,4 +24,10 @@ class ACE_Settings {
isClientSettable = 1; isClientSettable = 1;
category = ECSTRING(medical,Category_Medical); category = ECSTRING(medical,Category_Medical);
}; };
class GVAR(maxRange) {
//for ref: 3d interaction (MEDICAL_ACTION_DISTANCE) is 1.75
value = 3;
typeName = "SCALAR";
category = ECSTRING(medical,Category_Medical);
};
}; };

View File

@ -2,6 +2,10 @@
if (!hasInterface) exitwith {}; if (!hasInterface) exitwith {};
GVAR(MenuPFHID) = -1;
GVAR(lastOpenedOn) = -1;
GVAR(pendingReopen) = false;
["medical_treatmentSuccess", { ["medical_treatmentSuccess", {
if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then { if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then {
@ -15,8 +19,9 @@ if (!hasInterface) exitwith {};
["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey), ["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey),
{ {
_target = cursorTarget; local _target = cursorTarget;
if (!(_target isKindOf "CAManBase") || ACE_player distance _target > 10) then {_target = ACE_player}; if (!((_target isKindOf "CAManBase") && {[ACE_player, _target] call FUNC(canOpenMenu)})) then {_target = ACE_player};
// Conditions: canInteract // Conditions: canInteract
if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; if !([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([ACE_player, _target] call FUNC(canOpenMenu)) exitwith {false}; if !([ACE_player, _target] call FUNC(canOpenMenu)) exitwith {false};
@ -27,7 +32,7 @@ if (!hasInterface) exitwith {};
}, },
{ {
if (ACE_time - GVAR(lastOpenedOn) > 0.5) exitWith { if (ACE_time - GVAR(lastOpenedOn) > 0.5) exitWith {
[ObjNull] call FUNC(openMenu); [objNull] call FUNC(openMenu);
}; };
false false
}, },

View File

@ -10,7 +10,7 @@
* Can open <BOOL> * Can open <BOOL>
* *
* Example: * Example:
* [] call ace_medical_menu_canOpenMenu * [player, cursorTarget] call ace_medical_menu_fnc_canOpenMenu
* *
* Public: No * Public: No
*/ */
@ -18,7 +18,8 @@
params ["_caller", "_target"]; params ["_caller", "_target"];
if !(GVAR(allow) == 1 || (GVAR(allow) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false}; (alive _caller)
if !(GVAR(useMenu) == 1 || (GVAR(useMenu) == 2 && {vehicle _caller != _caller || vehicle _target != _target} && {alive ACE_player})) exitwith {false}; && {!isNull _target}
&& {((_caller distance _target) < GVAR(maxRange)) || {(vehicle _caller) == (vehicle _target)}} //for now, ignore range when in same vehicle
true && {(GVAR(allow) == 1) || {(GVAR(allow) == 2) && {(vehicle _caller != _caller) || {vehicle _target != _target}}}}
&& {(GVAR(useMenu) == 1) || {(GVAR(useMenu) == 2) && {(vehicle _caller != _caller) || {vehicle _target != _target}}}}

View File

@ -20,7 +20,7 @@ _configBasic = (configFile >> "ACE_Medical_Actions" >> "Basic");
_configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced"); _configAdvanced = (configFile >> "ACE_Medical_Actions" >> "Advanced");
_fnc_compileActionsLevel = { _fnc_compileActionsLevel = {
private ["_entryCount", "_actions", "_displayName", "_condition", "_category", "_statement"]; private ["_actions", "_displayName", "_condition", "_category", "_statement"];
params ["_config"]; params ["_config"];
_actions = []; _actions = [];
@ -40,3 +40,26 @@ _fnc_compileActionsLevel = {
GVAR(actionsBasic) = [_configBasic] call _fnc_compileActionsLevel; GVAR(actionsBasic) = [_configBasic] call _fnc_compileActionsLevel;
GVAR(actionsAdvanced) = [_configAdvanced] call _fnc_compileActionsLevel; GVAR(actionsAdvanced) = [_configAdvanced] call _fnc_compileActionsLevel;
//Manually add the drag actions, if dragging exists.
if (["ace_dragging"] call EFUNC(common,isModLoaded)) then {
_condition = {
(ACE_player != GVAR(INTERACTION_TARGET)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,canDrag)}
};
_statement = {
GVAR(pendingReopen) = false; //No medical_treatmentSuccess event after drag, so don't want this true
[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,startDrag);
};
GVAR(actionsBasic) pushBack [localize ELSTRING(dragging,Drag), "drag", _condition, _statement];
GVAR(actionsAdvanced) pushBack [localize ELSTRING(dragging,Drag), "drag", _condition, _statement];
_condition = {
(ACE_player != GVAR(INTERACTION_TARGET)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,canCarry)}
};
_statement = {
GVAR(pendingReopen) = false; //No medical_treatmentSuccess event after drag, so don't want this true
[ACE_player, GVAR(INTERACTION_TARGET)] call EFUNC(dragging,startCarry);
};
GVAR(actionsBasic) pushBack [localize ELSTRING(dragging,Carry), "drag", _condition, _statement];
GVAR(actionsAdvanced) pushBack [localize ELSTRING(dragging,Carry), "drag", _condition, _statement];
};

View File

@ -17,9 +17,10 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private "_actions";
params ["_player", "_target", "_name"]; params ["_player", "_target", "_name"];
private ["_actions", "_collectedActions", "_bodyPart"];
if (!([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitwith {[]}; if (!([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitwith {[]};
_actions = if (EGVAR(medical,level) == 2) then { _actions = if (EGVAR(medical,level) == 2) then {

View File

@ -9,7 +9,7 @@
* None * None
* *
* Example: * Example:
* ["some category"] call ace_medical_menu_handleUI_DisplayOptions * ["some category"] call ace_medical_menu_fnc_handleUI_DisplayOptions
* *
* Public: No * Public: No
*/ */
@ -21,7 +21,7 @@
if (!hasInterface) exitwith{}; if (!hasInterface) exitwith{};
private ["_entries", "_display", "_newTarget", "_card", "_ctrl", "_code"]; private ["_entries", "_display", "_newTarget", "_ctrl", "_code"];
params ["_name"]; params ["_name"];
@ -31,9 +31,11 @@ _display = uiNamespace getVariable QGVAR(medicalMenu);
if (isNil "_display") exitwith {}; // no valid dialog present if (isNil "_display") exitwith {}; // no valid dialog present
if (_name isEqualTo "toggle") exitwith { if (_name isEqualTo "toggle") exitwith {
if (GVAR(INTERACTION_TARGET) != ACE_player) then { _newTarget = ACE_player;
_newTarget = ACE_player; //If we are on the player, and only if our old target is still valid, switch to it:
} else { if ((GVAR(INTERACTION_TARGET) == ACE_player) &&
{[ACE_player, GVAR(INTERACTION_TARGET_PREVIOUS), ["isNotInside"]] call EFUNC(common,canInteractWith)} &&
{[ACE_player, GVAR(INTERACTION_TARGET_PREVIOUS)] call FUNC(canOpenMenu)}) then {
_newTarget = GVAR(INTERACTION_TARGET_PREVIOUS); _newTarget = GVAR(INTERACTION_TARGET_PREVIOUS);
}; };

View File

@ -9,7 +9,7 @@
* None * None
* *
* Example: * Example:
* [] call ace_medical_menu_handleUI_dropDownTriageCard * [] call ace_medical_menu_fnc_handleUI_dropDownTriageCard
* *
* Public: No * Public: No
*/ */

View File

@ -15,7 +15,7 @@
#include "script_component.hpp" #include "script_component.hpp"
params ["_logic", "_units", "_activated"]; params ["_logic", "", "_activated"];
if !(_activated) exitWith {}; if !(_activated) exitWith {};

View File

@ -9,7 +9,7 @@
* None * None
* *
* Example: * Example:
* call ace_medical_menu_onMenuClosed * call ace_medical_menu_fnc_onMenuClosed
* *
* Public: No * Public: No
*/ */
@ -19,3 +19,4 @@ if (EGVAR(interact_menu,menuBackground)==1) then {[QGVAR(id), false] call EFUNC(
if (EGVAR(interact_menu,menuBackground)==2) then {(uiNamespace getVariable [QEGVAR(interact_menu,menuBackground), displayNull]) closeDisplay 0;}; if (EGVAR(interact_menu,menuBackground)==2) then {(uiNamespace getVariable [QEGVAR(interact_menu,menuBackground), displayNull]) closeDisplay 0;};
[GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler; [GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler;
GVAR(MenuPFHID) = -1;

View File

@ -9,7 +9,7 @@
* None * None
* *
* Example: * Example:
* [medical_menu] call ace_medical_menu_onMenuOpen * [medical_menu] call ace_medical_menu_fnc_onMenuOpen
* *
* Public: No * Public: No
*/ */
@ -64,6 +64,8 @@ disableSerialization;
(_display displayCtrl 1) ctrlSetText format ["%1", [_target] call EFUNC(common,getName)]; (_display displayCtrl 1) ctrlSetText format ["%1", [_target] call EFUNC(common,getName)];
setMousePosition [0.4, 0.4]; setMousePosition [0.4, 0.4];
if (GVAR(MenuPFHID) != -1) exitWith {ERROR("PFID already running");};
GVAR(MenuPFHID) = [{ GVAR(MenuPFHID) = [{
(_this select 0) params ["_display"]; (_this select 0) params ["_display"];
@ -74,15 +76,15 @@ GVAR(MenuPFHID) = [{
[GVAR(INTERACTION_TARGET)] call FUNC(updateIcons); [GVAR(INTERACTION_TARGET)] call FUNC(updateIcons);
[GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions);
_status = [GVAR(INTERACTION_TARGET)] call EFUNC(medical,getTriageStatus); //Check that it's valid to stay open:
(_display displayCtrl 2000) ctrlSetText (_status select 0); if !(([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) && {[ACE_player, _target] call FUNC(canOpenMenu)}) then {
(_display displayCtrl 2000) ctrlSetBackgroundColor (_status select 2);
if (ACE_player distance _target > MAX_DISTANCE) exitwith {
closeDialog 314412; closeDialog 314412;
["displayTextStructured", [ACE_player], [[ELSTRING(medical,DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent); //If we failed because of distance check, show UI message:
if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then {
["displayTextStructured", [ACE_player], [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent);
};
}; };
}, 0, [_display]] call CBA_fnc_addPerFrameHandler; }, 0, [_display]] call CBA_fnc_addPerFrameHandler;
["Medical_onMenuOpen", [ACE_player, _interactionTarget]] call EFUNC(common,localEvent); ["Medical_onMenuOpen", [ACE_player, _target]] call EFUNC(common,localEvent);

View File

@ -9,7 +9,7 @@
* If action was taken <BOOL> * If action was taken <BOOL>
* *
* Example: * Example:
* [some_player] call ace_medical_menu_openMenu * [some_player] call ace_medical_menu_fnc_openMenu
* *
* Public: No * Public: No
*/ */
@ -17,7 +17,7 @@
params ["_interactionTarget"]; params ["_interactionTarget"];
if (dialog || isNull _interactionTarget) exitwith { if (dialog || {isNull _interactionTarget}) exitwith {
disableSerialization; disableSerialization;
private ["_display", "_handled"]; private ["_display", "_handled"];

View File

@ -10,7 +10,7 @@
* None * None
* *
* Example: * Example:
* [some_display, log] call ace_medical_menu_updateActivityLog * [some_display, log] call ace_medical_menu_fnc_updateActivityLog
* *
* Public: No * Public: No
*/ */
@ -24,7 +24,7 @@ _logCtrl = _display displayCtrl 214;
lbClear _logCtrl; lbClear _logCtrl;
{ {
_x params ["_message", "_moment", "_dummy", "_arguments"]; _x params ["_message", "_moment", "", "_arguments"];
if (isLocalized _message) then { if (isLocalized _message) then {
_message = localize _message; _message = localize _message;

View File

@ -4,22 +4,23 @@
* *
* Arguments: * Arguments:
* 0: selection bloodloss <ARRAY> * 0: selection bloodloss <ARRAY>
* 1: display <DISPLAY> * 1: damaged (array of bools) <ARRAY>
* 2: display <DISPLAY>
* *
* Return Value: * Return Value:
* None * None
* *
* Example: * Example:
* [0.3, some_display] call ace_medical_menu_updateBodyImage * [0.3, some_display] call ace_medical_menu_fnc_updateBodyImage
* *
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
params ["_selectionBloodLoss", "_display"]; params ["_selectionBloodLoss", "_damaged", "_display"];
// Handle the body image coloring // Handle the body image coloring
_availableSelections = [50, 51, 52, 53, 54, 55]; local _availableSelections = [50, 51, 52, 53, 54, 55];
{ {
private ["_red", "_green", "_blue"]; private ["_red", "_green", "_blue"];

View File

@ -9,7 +9,7 @@
* None * None
* *
* Example: * Example:
* [] call ace_medical_menu_updateIcons * [] call ace_medical_menu_fnc_updateIcons
* *
* Public: No * Public: No
*/ */
@ -18,7 +18,7 @@
#define START_IDC 111 #define START_IDC 111
#define END_IDC 118 #define END_IDC 118
private ["_display", "_idc", "_options", "_name", "_amount"]; private ["_display", "_idc", "_options", "_amount"];
disableSerialization; disableSerialization;

View File

@ -14,7 +14,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private "_lbCtrl"; private ["_lbCtrl", "_amountOfGeneric"];
params ["_display", "_genericMessages", "_allInjuryTexts"]; params ["_display", "_genericMessages", "_allInjuryTexts"];
@ -28,7 +28,7 @@ lbClear _lbCtrl;
_amountOfGeneric = count _genericMessages; _amountOfGeneric = count _genericMessages;
{ {
_x params ["_add", "_Color"]; _x params ["_add", "_color"];
_lbCtrl lbAdd _add; _lbCtrl lbAdd _add;
_lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _color]; _lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _color];
} forEach _allInjuryTexts; } forEach _allInjuryTexts;

View File

@ -10,7 +10,7 @@
* None * None
* *
* Example: * Example:
* [some_display, log] call ace_medical_menu_updateQuickViewLog * [some_display, log] call ace_medical_menu_fnc_updateQuickViewLog
* *
* Public: No * Public: No
*/ */
@ -24,7 +24,7 @@ _logCtrl = _display displayCtrl 215;
lbClear _logCtrl; lbClear _logCtrl;
{ {
_x params ["_message", "_moment", "_dummy", "_arguments"]; _x params ["_message", "_moment", "", "_arguments"];
if (isLocalized _message) then { if (isLocalized _message) then {
_message = localize _message; _message = localize _message;

View File

@ -10,18 +10,20 @@
* None * None
* *
* Example: * Example:
* [some_player, some_display] call ace_medical_menu_updateUIInfo * [some_player, some_display] call ace_medical_menu_fnc_updateUIInfo
* *
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_genericMessages", "_totalIvVolume", "_damaged", "_selectionBloodLoss", "_allInjuryTexts"];
params ["_target", "_display"]; params ["_target", "_display"];
private["_allInjuryTexts", "_bandagedwounds", "_damaged", "_genericMessages", "_logs", "_openWounds", "_part", "_partText", "_pointDamage", "_selectionBloodLoss", "_selectionN", "_severity", "_totalIvVolume", "_triageStatus"];
if (isNil "_display" || {isNull _display}) exitWith {ERROR("No display");};
_selectionN = GVAR(selectedBodyPart); _selectionN = GVAR(selectedBodyPart);
if (_selectionN < 0 || _selectionN > 5) exitwith {}; if (_selectionN < 0 || {_selectionN > 5}) exitwith {};
_genericMessages = []; _genericMessages = [];
_partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN; _partText = [ELSTRING(medical,Head), ELSTRING(medical,Torso), ELSTRING(medical,LeftArm) ,ELSTRING(medical,RightArm) ,ELSTRING(medical,LeftLeg), ELSTRING(medical,RightLeg)] select _selectionN;
@ -109,7 +111,7 @@ if (EGVAR(medical,level) >= 2) then {
{ {
_selectionBloodLoss set [_forEachIndex, _x]; _selectionBloodLoss set [_forEachIndex, _x];
if (_x > 0 && _forEachIndex == _selectionN) then { if ((_x > 0) && {_forEachIndex == _selectionN}) then {
_pointDamage = _x; _pointDamage = _x;
_severity = switch (true) do { _severity = switch (true) do {
case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)}; case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)};
@ -129,7 +131,7 @@ if (EGVAR(medical,level) >= 2) then {
} forEach (_target getvariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0]]); } forEach (_target getvariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0]]);
}; };
[_selectionBloodLoss, _display] call FUNC(updateBodyImage); [_selectionBloodLoss, _damaged, _display] call FUNC(updateBodyImage);
[_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists); [_display, _genericMessages, _allInjuryTexts] call FUNC(updateInformationLists);
_logs = _target getVariable [QEGVAR(medical,logFile_activity_view), []]; _logs = _target getVariable [QEGVAR(medical,logFile_activity_view), []];

View File

@ -325,7 +325,7 @@ class GVAR(medicalMenu) {
animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)"; animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.0)";
animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)"; animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.0)";
animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)"; animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.0)";
action = QUOTE(GVAR(selectedBodyPart) = 0; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); action = QUOTE(GVAR(selectedBodyPart) = 0;);
}; };
class selectTorso : selectHead { class selectTorso : selectHead {
idc = 302; idc = 302;
@ -333,7 +333,7 @@ class GVAR(medicalMenu) {
y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; y = "5.4 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)"; w = "2.2 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; h = "4.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
action = QUOTE(GVAR(selectedBodyPart) = 1; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); action = QUOTE(GVAR(selectedBodyPart) = 1;);
}; };
class selectLeftArm: selectHead{ class selectLeftArm: selectHead{
idc = 303; idc = 303;
@ -341,12 +341,12 @@ class GVAR(medicalMenu) {
y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; y = "5.9 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; h = "4.3 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
action = QUOTE(GVAR(selectedBodyPart) = 3; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); action = QUOTE(GVAR(selectedBodyPart) = 3;);
}; };
class selectRightArm: selectLeftArm{ class selectRightArm: selectLeftArm{
idc = 304; idc = 304;
x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; x = "20.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
action = QUOTE(GVAR(selectedBodyPart) = 2; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); action = QUOTE(GVAR(selectedBodyPart) = 2;);
}; };
class selectLeftLeg :selectHead { class selectLeftLeg :selectHead {
idc = 305; idc = 305;
@ -354,12 +354,12 @@ class GVAR(medicalMenu) {
y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; y = "9.5 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)"; w = "1.1 * (((safezoneW / safezoneH) min 1.2) / 40)";
h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; h = "6 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
action = QUOTE(GVAR(selectedBodyPart) = 5; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); action = QUOTE(GVAR(selectedBodyPart) = 5;);
}; };
class selectRightLeg :selectLeftLeg { class selectRightLeg :selectLeftLeg {
idc = 306; idc = 306;
x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; x = "19.6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
action = QUOTE(GVAR(selectedBodyPart) = 4; [GVAR(INTERACTION_TARGET)] call FUNC(updateUIInfo);); action = QUOTE(GVAR(selectedBodyPart) = 4;);
}; };

View File

@ -3,9 +3,6 @@
if (!hasInterface) exitWith {}; if (!hasInterface) exitWith {};
//Functions that are called for each draw of the map:
GVAR(miniMapDrawHandlers) = [];
//Add deviceKey entry: //Add deviceKey entry:
private ["_conditonCode", "_toggleCode", "_closeCode"]; private ["_conditonCode", "_toggleCode", "_closeCode"];
_conditonCode = { _conditonCode = {

View File

@ -23,4 +23,7 @@ PREP(saveCurrentAndSetNewMode);
PREP(showApplicationPage); PREP(showApplicationPage);
PREP(updateDisplay); PREP(updateDisplay);
//Functions that are called for each draw of the map:
GVAR(miniMapDrawHandlers) = [];
ADDON = true; ADDON = true;

View File

@ -15,9 +15,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_unit"]; params ["_unit"];
_unit = _this select 0;
(["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN", 0, true]; (["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN", 0, true];
if (isNull (uiNamespace getVariable ["ACE_Altimeter", displayNull])) exitWith {}; if (isNull (uiNamespace getVariable ["ACE_Altimeter", displayNull])) exitWith {};
@ -27,7 +25,7 @@ GVAR(AltimeterActive) = true;
[{ [{
if (!GVAR(AltimeterActive)) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler)}; if (!GVAR(AltimeterActive)) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler)};
disableSerialization; disableSerialization;
EXPLODE_4_PVT(_this select 0,_display,_unit,_oldHeight,_prevTime); (_this select 0) params ["_display", "_unit", "_oldHeight", "_prevTime"];
if !("ACE_Altimeter" in assignedItems _unit) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler); call FUNC(hideAltimeter)}; if !("ACE_Altimeter" in assignedItems _unit) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler); call FUNC(hideAltimeter)};
private ["_height", "_hour", "_minute", "_descentRate","_HeightText", "_DecendRate", "_TimeText", "_curTime", "_timeDiff"]; private ["_height", "_hour", "_minute", "_descentRate","_HeightText", "_DecendRate", "_TimeText", "_curTime", "_timeDiff"];
@ -38,7 +36,7 @@ GVAR(AltimeterActive) = true;
_hour = floor daytime; _hour = floor daytime;
_minute = floor ((daytime - _hour) * 60); _minute = floor ((daytime - _hour) * 60);
_height = (getPosASL _unit) select 2; _height = ((getPosASL _unit) select 2) + EGVAR(common,mapAltitude);
_curTime = ACE_time; _curTime = ACE_time;
_timeDiff = _curTime - _prevTime; _timeDiff = _curTime - _prevTime;
_descentRate = if(_timeDiff > 0) then {floor((_oldHeight - _height) / _timeDiff)} else {0}; _descentRate = if(_timeDiff > 0) then {floor((_oldHeight - _height) / _timeDiff)} else {0};

View File

@ -1,4 +1,3 @@
#define DEBUG_ENABLED_PARACHUTE
#define COMPONENT parachute #define COMPONENT parachute
#include "\z\ace\addons\main\script_mod.hpp" #include "\z\ace\addons\main\script_mod.hpp"

View File

@ -525,12 +525,14 @@ class CfgWeapons {
class LMG_coax: LMG_RCWS { class LMG_coax: LMG_RCWS {
displayName = "PKT"; displayName = "PKT";
}; };
// class ACE_LMG_coax_PKT_mem2: LMG_coax {};
class ACE_LMG_coax_MBT_01: LMG_coax { class ACE_LMG_coax_MAG58_mem2: LMG_coax {
displayName = "MAG 58"; displayName = "MAG 58";
}; };
class ACE_LMG_coax_MAG58_mem3: LMG_coax {
class ACE_LMG_coax_APC_Tracked_03: LMG_coax { displayName = "MAG 58";
};
class ACE_LMG_coax_L94A1_mem3: LMG_coax {
displayName = "L94A1"; displayName = "L94A1";
}; };

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="repair"> <Package name="repair">
<Key ID="STR_ACE_Repair_SpareTrack"> <Key ID="STR_ACE_Repair_SpareTrack">
@ -388,6 +388,7 @@
<Czech>Ocas</Czech> <Czech>Ocas</Czech>
<Russian>Хвост</Russian> <Russian>Хвост</Russian>
<Spanish>Tail</Spanish> <Spanish>Tail</Spanish>
<Portuguese>Cauda</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Repair_HitPitotTube"> <Key ID="STR_ACE_Repair_HitPitotTube">
<English>Pitot Tube</English> <English>Pitot Tube</English>
@ -1000,12 +1001,14 @@
<Polish>Wym. naprawy kół</Polish> <Polish>Wym. naprawy kół</Polish>
<Spanish>Requisitos de reparación de ruedas</Spanish> <Spanish>Requisitos de reparación de ruedas</Spanish>
<Russian>Для ремонта колес требуется</Russian> <Russian>Для ремонта колес требуется</Russian>
<Portuguese>Requerimentos para reparo de rodas</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Repair_wheelRepairRequiredItems_description"> <Key ID="STR_ACE_Repair_wheelRepairRequiredItems_description">
<English>Items required to remove/replace wheels</English> <English>Items required to remove/replace wheels</English>
<Polish>Przedmioty potrzebne do wymiany kół</Polish> <Polish>Przedmioty potrzebne do wymiany kół</Polish>
<Spanish>Elementos necesarios para quitar/cambiar ruedas</Spanish> <Spanish>Elementos necesarios para quitar/cambiar ruedas</Spanish>
<Russian>Предметы, которые требуются для снятия/замены колес</Russian> <Russian>Предметы, которые требуются для снятия/замены колес</Russian>
<Portuguese>Itens requeridos para remover/trocar rodas</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="tacticalladder"> <Package name="tacticalladder">
<Key ID="STR_ACE_TacticalLadder_DisplayName"> <Key ID="STR_ACE_TacticalLadder_DisplayName">
@ -41,6 +41,7 @@
<English>Extend, +Ctrl tilt</English> <English>Extend, +Ctrl tilt</English>
<German>Ausfahren, +Strg kippen</German> <German>Ausfahren, +Strg kippen</German>
<Polish>Rozłóż, +Ctrl nachyl</Polish> <Polish>Rozłóż, +Ctrl nachyl</Polish>
<Portuguese>Extender, +Ctrl tilt</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_TacticalLadder_Position"> <Key ID="STR_ACE_TacticalLadder_Position">
<English>Position ladder</English> <English>Position ladder</English>

View File

@ -91,7 +91,7 @@ class CfgVehicles {
class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F { class O_APC_Tracked_02_cannon_F: O_APC_Tracked_02_base_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_MBT_01","missiles_titan"}; weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_PKT_mem2","missiles_titan"};
magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Green","60Rnd_30mm_APFSDS_shells_Tracer_Green","2000Rnd_762x51_Belt_Green","2Rnd_GAT_missiles"}; magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Green","60Rnd_30mm_APFSDS_shells_Tracer_Green","2000Rnd_762x51_Belt_Green","2Rnd_GAT_missiles"};
}; };
}; };
@ -101,7 +101,7 @@ class CfgVehicles {
fuelCapacity = 660 * FUEL_FACTOR; fuelCapacity = 660 * FUEL_FACTOR;
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"autocannon_30mm","ACE_LMG_coax_APC_Tracked_03"}; weapons[] = {"autocannon_30mm","ACE_LMG_coax_L94A1_mem3"};
magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","1000Rnd_762x51_Belt_Yellow","1000Rnd_762x51_Belt_Yellow"}; magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","1000Rnd_762x51_Belt_Yellow","1000Rnd_762x51_Belt_Yellow"};
class Turrets: Turrets { class Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
@ -114,7 +114,7 @@ class CfgVehicles {
fuelCapacity = 550 * FUEL_FACTOR; fuelCapacity = 550 * FUEL_FACTOR;
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"cannon_120mm_long","ACE_LMG_coax_MBT_01"}; weapons[] = {"cannon_120mm_long","ACE_LMG_coax_MAG58_mem3"};
magazines[] = {"28Rnd_120mm_APFSDS_shells_Tracer_Yellow","14Rnd_120mm_HE_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2000Rnd_762x51_Belt_Yellow"}; magazines[] = {"28Rnd_120mm_APFSDS_shells_Tracer_Yellow","14Rnd_120mm_HE_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2000Rnd_762x51_Belt_Yellow"};
class Turrets: Turrets { class Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
@ -127,8 +127,8 @@ class CfgVehicles {
fuelCapacity = 500 * FUEL_FACTOR; fuelCapacity = 500 * FUEL_FACTOR;
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"cannon_120mm","ACE_LMG_coax_MBT_01"}; weapons[] = {"cannon_120mm","ACE_LMG_coax_MAG58_mem2"};
magazines[] = {"32Rnd_120mm_APFSDS_shells_Tracer_Red","16Rnd_120mm_HE_shells_Tracer_Red","2000Rnd_762x51_Belt_Green","2000Rnd_762x51_Belt_Green"}; magazines[] = {"32Rnd_120mm_APFSDS_shells_Tracer_Red","16Rnd_120mm_HE_shells_Tracer_Red","2000Rnd_762x51_Belt_Red","2000Rnd_762x51_Belt_Red"};
class Turrets: Turrets { class Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
}; };
@ -281,8 +281,8 @@ class CfgVehicles {
class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"autocannon_40mm_CTWS","ACE_LMG_coax_MBT_01"}; weapons[] = {"autocannon_40mm_CTWS","ACE_LMG_coax_MAG58_mem2"};
magazines[] = {"60Rnd_40mm_GPR_Tracer_Red_shells","40Rnd_40mm_APFSDS_Tracer_Red_shells","2000Rnd_762x51_Belt_Green"}; magazines[] = {"60Rnd_40mm_GPR_Tracer_Red_shells","40Rnd_40mm_APFSDS_Tracer_Red_shells","2000Rnd_762x51_Belt_Red"};
}; };
}; };
}; };
@ -301,8 +301,8 @@ class CfgVehicles {
class B_MBT_01_TUSK_F: B_MBT_01_cannon_F { class B_MBT_01_TUSK_F: B_MBT_01_cannon_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"cannon_105mm","ACE_LMG_coax_MBT_01"}; weapons[] = {"cannon_105mm","ACE_LMG_coax_MAG58_mem2"};
magazines[] = {"40Rnd_105mm_APFSDS_T_Red","20Rnd_105mm_HEAT_MP_T_Red","2000Rnd_762x51_Belt_Green","2000Rnd_762x51_Belt_Green"}; magazines[] = {"40Rnd_105mm_APFSDS_T_Red","20Rnd_105mm_HEAT_MP_T_Red","2000Rnd_762x51_Belt_Red","2000Rnd_762x51_Belt_Red"};
class Turrets: Turrets { class Turrets: Turrets {
class CommanderOptics: CommanderOptics {}; class CommanderOptics: CommanderOptics {};
}; };
@ -326,7 +326,7 @@ class CfgVehicles {
class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F { class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F {
class Turrets: Turrets { class Turrets: Turrets {
class MainTurret: MainTurret { class MainTurret: MainTurret {
weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_MBT_01","missiles_titan"}; weapons[] = {"autocannon_30mm_CTWS","ACE_LMG_coax_MAG58_mem2","missiles_titan"};
magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2Rnd_GAT_missiles"}; magazines[] = {"140Rnd_30mm_MP_shells_Tracer_Yellow","60Rnd_30mm_APFSDS_shells_Tracer_Yellow","2000Rnd_762x51_Belt_Yellow","2Rnd_GAT_missiles"};
}; };
}; };

View File

@ -5,8 +5,26 @@ class CfgWeapons {
class LMG_RCWS: MGun {}; class LMG_RCWS: MGun {};
class LMG_coax; class LMG_coax;
class ACE_LMG_coax_MBT_01: LMG_coax {}; class ACE_LMG_coax_L94A1_mem3: LMG_coax {};
class ACE_LMG_coax_APC_Tracked_03: LMG_coax {}; class ACE_LMG_coax_PKT_mem2: LMG_coax {
class GunParticles {
class effect1 {
positionName = "usti hlavne2";
directionName = "konec hlavne2";
effectName = "MachineGunCloud";
};
};
};
class ACE_LMG_coax_MAG58_mem3: LMG_coax {};
class ACE_LMG_coax_MAG58_mem2: LMG_coax {
class GunParticles {
class effect1 {
positionName = "usti hlavne2";
directionName = "konec hlavne2";
effectName = "MachineGunCloud";
};
};
};
class LMG_Minigun: LMG_RCWS { class LMG_Minigun: LMG_RCWS {
magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt"}; magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt"};

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Zeus"> <Package name="Zeus">
<Key ID="STR_ACE_Zeus_Settings_DisplayName"> <Key ID="STR_ACE_Zeus_Settings_DisplayName">
@ -214,15 +214,19 @@
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName"> <Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName">
<English>Add Spare Wheel</English> <English>Add Spare Wheel</English>
<Portuguese>Adicionar roda sobressalente</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_Description"> <Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_Description">
<English>Adds a Spare Wheel to the vehicle</English> <English>Adds a Spare Wheel to the vehicle</English>
<Portuguese>Adiciona uma roda sobressalente ao veículo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_DisplayName"> <Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_DisplayName">
<English>Add Spare Track</English> <English>Add Spare Track</English>
<Portuguese>Adicionar esteira sobressalente</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_Description"> <Key ID="STR_ACE_Zeus_ModuleAddSpareTrack_Description">
<English>Adds a Spare Track to the vehicle</English> <English>Adds a Spare Track to the vehicle</English>
<Portuguese>Adiciona uma esteira sobressalente ao veículo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyAlive"> <Key ID="STR_ACE_Zeus_OnlyAlive">
<English>Unit must be alive</English> <English>Unit must be alive</English>
@ -264,9 +268,11 @@
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyVehiclesWithCargo"> <Key ID="STR_ACE_Zeus_OnlyVehiclesWithCargo">
<English>Unit must be a vehicle with cargo space</English> <English>Unit must be a vehicle with cargo space</English>
<Portuguese>Unidade deve ser um veículo com espaço em carga</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyEnoughCargoSpace"> <Key ID="STR_ACE_Zeus_OnlyEnoughCargoSpace">
<English>Unit must have cargo space left</English> <English>Unit must have cargo space left</English>
<Portuguese>Unidade deve conter espaço sobressalente</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Zeus_OnlyNonCaptive"> <Key ID="STR_ACE_Zeus_OnlyNonCaptive">
<English>Unit must not be captive</English> <English>Unit must not be captive</English>

View File

@ -3,25 +3,25 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/badge/Version-3.3.2-blue.svg" alt="ACE3 Version"> <img src="https://img.shields.io/badge/Version-3.3.2-blue.svg?style=flat-square" alt="ACE3 Version">
</a> </a>
<a href="https://github.com/acemod/ACE3/releases/download/v3.3.2/ace3_3.3.2.zip"> <a href="https://github.com/acemod/ACE3/releases/download/v3.3.2/ace3_3.3.2.zip">
<img src="https://img.shields.io/badge/Download-65.7_MB-green.svg" alt="ACE3 Download"> <img src="https://img.shields.io/badge/Download-65.7_MB-green.svg?style=flat-square" alt="ACE3 Download">
</a> </a>
<a href="https://github.com/acemod/ACE3/issues"> <a href="https://github.com/acemod/ACE3/issues">
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Issues" alt="ACE3 Issues"> <img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
</a> </a>
<a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670"> <a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">
<img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg" alt="BIF Thread"> <img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat-square" alt="BIF Thread">
</a> </a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE"> <a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="https://img.shields.io/badge/License-GPLv2-red.svg" alt="ACE3 License"> <img src="https://img.shields.io/badge/License-GPLv2-red.svg?style=flat-square" alt="ACE3 License">
</a> </a>
<a href="http://slackin.ace3mod.com/"> <a href="http://slackin.ace3mod.com/">
<img src="http://slackin.ace3mod.com/badge.svg" alt="ACE3 Slack"> <img src="http://slackin.ace3mod.com/badge.svg?style=flat-square&label=Slack" alt="ACE3 Slack">
</a> </a>
<a href="https://travis-ci.org/acemod/ACE3"> <a href="https://travis-ci.org/acemod/ACE3">
<img src="https://img.shields.io/travis/acemod/ACE3.svg" alt="ACE3 Build Status"> <img src="https://img.shields.io/travis/acemod/ACE3.svg?style=flat-square&label=Build" alt="ACE3 Build Status">
</a> </a>
</p> </p>
<p align="center"><sup><strong>Benötigt die aktuellste Version von <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Besucht uns auf <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p> <p align="center"><sup><strong>Benötigt die aktuellste Version von <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Besucht uns auf <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>
@ -30,30 +30,54 @@
Da die MOD vollkommen als **open-source** Projekt gestaltet ist, steht es jedem frei Änderungen vorzuschlagen, oder seine eigene, modifizierte Version zu erstellen, solange diese ebenfalls der Öffentlichkeit zugänglich ist und mit GNU General Public License übereinstimmt. (Weitere Informationen ist der Lizenzdatei in diesem Projekt entnehmbar) Da die MOD vollkommen als **open-source** Projekt gestaltet ist, steht es jedem frei Änderungen vorzuschlagen, oder seine eigene, modifizierte Version zu erstellen, solange diese ebenfalls der Öffentlichkeit zugänglich ist und mit GNU General Public License übereinstimmt. (Weitere Informationen ist der Lizenzdatei in diesem Projekt entnehmbar)
Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, da das Feature nicht gewünscht ist, oder es mit einer anderen MOD in Konflikt gerät etc. .Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am medizinischem System), sodass eine individuelle Erfahrung gewährleistet wird. Die Mod ist **modular aufgebaut**. Beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, wenn gewisse Features nicht gewünscht sind, oder es mit einer anderen Mod in Konflikt gerät. Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am Sanitätssystem), sodass eine individuelle Erfahrung gewährleistet werden kann.
### Features ### Hauptmerkmale
- Verbessertes medizinisches System - Vollkommen neues 3D-Interaktionssystem
- Logistik System: U.a. Transport und Fahrzeugreparatur - Leistungs- und stabilitätsoptimiert
- Sprengstoffsystem mit unterschiedlichen Zündern - Hauptmerkmal auf Modularität und individuelle Anpassungsmöglichkeiten
- Neue, flexible Spieler- und Servereinstellungen
- Verbessertes Sanitätssystem mit unterschiedlichen Stufen (Basis/Erweitert)
- Echte und stetige Wettersynchronisation
- Ballistik basierend auf vielen Faktoren u.a. Wetter und Wind
- Gefangenensystem - Gefangenensystem
- Reale Namen für Arma 3 Fahrzeuge und Waffen - Sprengtoffmechaniken mit unterschiedlichen Zündern
- Realistisches, ballistisches Verhalten (Wind und Luftfeuchtigkeit) - Kartenverbesserungen Setzen von Markierungen / Kartenwerkzeuge
- Simulation der Rückstrahlzone - Erweitertes Raketenlenksystem
- Ein Feuerleitsystem für gepanzerte Fahrzeuge und Hubschrauber
***und noch viel mehr...*** #### Weitere Mechaniken
- Tragen und Ziehen
- Waffen und Fahrzeuge tragen die Namen ihrer Vorbilder aus der echten Welt
- Ein Feuerleitsystem (FLS) für Hubschrauber und Panzer
- Viele Funktionen werden in C/C++ Erweiterungen berechnet
- Rückstrahlzonen- und Überdrucksimulation
- Einwegwaffen
- Realistische G-Kräfte
- Fahrzeuge abschließen
- Realistische Nacht- und Thermalsicht
- Magazine umpacken
- Realistische Waffen Er- bzw. Überhitzung
- Temporäre Taubheit bei zu lauten Geräuschen
- Verbesserte Ragdoll-Physik
- Verbesserte Interaktionen für MG2s und Munitionsschlepper
- Einstellbare Zielfernrohre
- Keine Ruheanimationen bei gesenkter Waffe
- Über Hindernisse springen, über Mauern klettern, Zäune durchtrennen
- Kein "sprechender Charkater"
- Vector IV, MicroDAGR und Kestrel <br>
***und noch viel viel mehr...***
#### Anleitungen #### Anleitungen
Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet? Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet?
- [Erste Schritte](http://ace3mod.com/wiki/user/getting-started.html). - [Erste Schritte](http://ace3mod.com/wiki/user/getting-started.html).
#### Mitwirken #### Mitwirken
Wenn du bei der Entwicklung der MOD mithelfen möchtest, so kannst du dies tun, indem du nach Fehlern Ausschau hältst, oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" einfach dieses Archiv (bzw. repository) und erstelle deine "Pull-Request", welche von anderen Entwicklern und Beiträgern überprüft wird. Bitte trage dich dabei in [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) mit deinem Nutzernamen und einer gütligen Email-Adresse ein. Wenn du bei der Entwicklung von ACE3 mithelfen möchtest, kannst du dies tun, indem du nach Fehlern Ausschau hältst oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" dieses Repository und erstelle deine "Pull-Requests", welche von anderen Entwicklern und Beiträgern überprüft werden. Bitte trage dich dabei in [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) mit deinem Nutzernamen und einer gültigen Email-Adresse ein.
Um einen Fehler oder ein Feature zu melden bzw. ein bereits Bestehendes zu ändern - nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). Besuche auch: Um uns einen Fehler, Anregungen oder neue Funktionalitäten mitzuteilen: Nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). Besuche auch:
- [Wie kann ich ein Problem melden](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) - [Wie kann ich ein Problem melden](http://ace3mod.com/wiki/user/how-to-report-an-issue.html)
- [Wie kann ich ein Feature Request erstellen](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) - [Wie kann ich ein Wunsch zu einer neuen Funktion mitteilen?](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html)
#### Testen & MOD erstellen #### Testen & Mod erstellen
Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir einfach die "Master Branch" herunter. Entweder nutzt du [Git](https://help.github.com/articles/fetching-a-remote/) - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link](https://github.com/acemod/ACE3/archive/master.zip) herunter. Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir die "Master Branch" herunter. Entweder nutzt du [Git](https://help.github.com/articles/fetching-a-remote/) - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link](https://github.com/acemod/ACE3/archive/master.zip) herunter.
Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE3 erstellst folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md). Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE3 erstellst, folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md).

View File

@ -3,25 +3,25 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/badge/Wersja-3.3.2-blue.svg" alt="ACE3 Wersja"> <img src="https://img.shields.io/badge/Wersja-3.3.2-blue.svg?style=flat-square" alt="ACE3 Wersja">
</a> </a>
<a href="https://github.com/acemod/ACE3/releases/download/v3.3.2/ace3_3.3.2.zip"> <a href="https://github.com/acemod/ACE3/releases/download/v3.3.2/ace3_3.3.2.zip">
<img src="https://img.shields.io/badge/Pobierz-65.7_MB-green.svg" alt="ACE3 Pobierz"> <img src="https://img.shields.io/badge/Pobierz-65.7_MB-green.svg?style=flat-square" alt="ACE3 Pobierz">
</a> </a>
<a href="https://github.com/acemod/ACE3/issues"> <a href="https://github.com/acemod/ACE3/issues">
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia" alt="ACE3 Zagadnienia"> <img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia&style=flat-square" alt="ACE3 Zagadnienia">
</a> </a>
<a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670"> <a href="https://forums.bistudio.com/topic/181341-ace3-a-collaborative-merger-between-agm-cse-and-ace/?p=2859670">
<img src="https://img.shields.io/badge/Temat-BIF-lightgrey.svg" alt="Temat BIF"> <img src="https://img.shields.io/badge/Temat-BIF-lightgrey.svg?style=flat-square" alt="Temat BIF">
</a> </a>
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE"> <a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="https://img.shields.io/badge/Licencja-GPLv2-red.svg" alt="ACE3 Licencja"> <img src="https://img.shields.io/badge/Licencja-GPLv2-red.svg?style=flat-square" alt="ACE3 Licencja">
</a> </a>
<a href="http://slackin.ace3mod.com/"> <a href="http://slackin.ace3mod.com/">
<img src="http://slackin.ace3mod.com/badge.svg" alt="ACE3 Slack"> <img src="http://slackin.ace3mod.com/badge.svg?label=Slack&style=flat-square" alt="ACE3 Slack">
</a> </a>
<a href="https://travis-ci.org/acemod/ACE3"> <a href="https://travis-ci.org/acemod/ACE3">
<img src="https://img.shields.io/travis/acemod/ACE3.svg" alt="ACE3 Build Status"> <img src="https://img.shields.io/travis/acemod/ACE3.svg?style=flat-square" alt="ACE3 Build Status">
</a> </a>
</p> </p>
<p align="center"><sup><strong>Wymaga najnowszej wersji <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Odwiedź nas na <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p> <p align="center"><sup><strong>Wymaga najnowszej wersji <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Odwiedź nas na <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1440,4 +1440,4 @@ if __name__ == "__main__":
main(sys.argv) main(sys.argv)
d,h,m,s = Fract_Sec(timeit.default_timer() - start_time) d,h,m,s = Fract_Sec(timeit.default_timer() - start_time)
print("\nTotal Program time elapsed: {0:2}h {1:2}m {2:4.5f}s".format(h,m,s)) print("\nTotal Program time elapsed: {0:2}h {1:2}m {2:4.5f}s".format(h,m,s))
input("Press Enter to continue...") input("Press Enter to continue...")