Various additions to ace_zeus (#6036)

* Add search to teleport players UI

* Change group side icons to look better

* Improve teleport UI and add stringtable entries

* Add Assign Repair Vehicle module

* Add Assign Repair Facility module

* Add Assign Engineer module

* Add Full Heal module

* Add Suicide Bomber module

* Make heal module work without ace_medical

* Add suicide bomber module translations

* Improve attribute cargo to use displayName

* Improve set engineer ui

* ACE_Curator for repair modules + author array

* Add angle param to getModuleDestination

* Prevent multiple suicide bomber modules on same target

* Heal module: support BI scripted revive system

* Requested changes
This commit is contained in:
mharis001 2018-02-24 12:44:57 -05:00 committed by PabstMirror
parent e813af667f
commit bca8b01860
55 changed files with 1100 additions and 64 deletions

View File

@ -16,9 +16,10 @@
}] call CBA_fnc_addEventHandler;
[QGVAR(unGarrison), FUNC(unGarrison)] call CBA_fnc_addEventHandler;
[QGVAR(doMove), {
params ["_unitsArray"];
{
{
_x params ["_unit", "_pos"];
//_unit doFollow leader _unit;
_unit setDestination [_pos, "LEADER PLANNED", true];
@ -26,14 +27,16 @@
LOG(format [ARR_4("XEH_postInit: %1 doMove %2 | ID %3", _unit, _pos, clientOwner)]);
} foreach _unitsArray
}] call CBA_fnc_addEventHandler;
[QGVAR(setBehaviour), {
params ["_groupsArray", "_behaviour"];
{
{
_x params ["_group"];
_group setBehaviour _behaviour;
LOG(format [ARR_4("XEH_postInit: %1 setBehaviour %2 | ID %3", _group, _behaviour, clientOwner)]);
} foreach _groupsArray
}] call CBA_fnc_addEventHandler;
[QGVAR(enableAttack), {
params ["_unitsArray", "_mode"];
{
@ -43,6 +46,26 @@
} foreach _unitsArray
}] call CBA_fnc_addEventHandler;
[QGVAR(setUnitPos), {
params ["_unit", "_mode"];
_unit setUnitPos _mode;
}] call CBA_fnc_addEventHandler;
[QGVAR(setSpeedMode), {
params ["_unit", "_mode"];
_unit setSpeedMode _mode;
}] call CBA_fnc_addEventHandler;
[QGVAR(setCombatMode), {
params ["_unit", "_mode"];
_unit setCombatMode _mode;
}] call CBA_fnc_addEventHandler;
[QGVAR(allowFleeing), {
params ["_unit", "_cowardice"];
_unit allowFleeing _cowardice;
}] call CBA_fnc_addEventHandler;
#ifdef DEBUG_MODE_FULL
addMissionEventHandler ["Draw3D", {
private _unitMoveList = missionNameSpace getVariable [QGVAR(garrison_unitMoveList), []];
@ -81,4 +104,4 @@
};
} foreach _unitMoveList;
}];
#endif
#endif

View File

@ -107,6 +107,27 @@ class CfgVehicles {
function = QFUNC(moduleAddSpareWheel);
icon = "a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa";
};
class GVAR(moduleSetEngineer): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Repair);
displayName = CSTRING(ModuleSetEngineer_DisplayName);
curatorInfoType = QGVAR(RscSetEngineer);
icon = "a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa";
};
class GVAR(moduleSetRepairFacility): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Repair);
displayName = CSTRING(ModuleSetRepairFacility_DisplayName);
function = QFUNC(moduleSetRepairFacility);
icon = "a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa";
};
class GVAR(moduleSetRepairVehicle): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Repair);
displayName = CSTRING(ModuleSetRepairVehicle_DisplayName);
function = QFUNC(moduleSetRepairVehicle);
icon = "a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa";
};
class GVAR(moduleAddOrRemoveFRIES): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Utility);
@ -150,6 +171,13 @@ class CfgVehicles {
displayName = CSTRING(ModuleGroupSide_DisplayName);
curatorInfoType = QGVAR(RscGroupSide);
};
class GVAR(moduleHeal): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Medical);
displayName = CSTRING(ModuleHeal_DisplayName);
function = QFUNC(moduleHeal);
icon = QPATHTOF(ui\Icon_Module_Zeus_Heal_ca.paa);
};
class GVAR(moduleLoadIntoCargo): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Utility);
@ -208,6 +236,12 @@ class CfgVehicles {
displayName = CSTRING(ModuleSimulation_DisplayName);
function = QFUNC(moduleSimulation);
};
class GVAR(moduleSuicideBomber): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(AI);
displayName = CSTRING(ModuleSuicideBomber_DisplayName);
curatorInfoType = QGVAR(RscSuicideBomber);
};
class GVAR(moduleSurrender): GVAR(moduleBase) {
curatorCanAttach = 1;
category = QGVAR(Captive);

View File

@ -17,14 +17,19 @@ PREP(moduleConfigurePylons);
PREP(moduleGarrison);
PREP(moduleGlobalSetSkill);
PREP(moduleGroupSide);
PREP(moduleHeal);
PREP(moduleLoadIntoCargo);
PREP(moduleRemoveArsenal);
PREP(moduleRemoveAceArsenal);
PREP(moduleSearchNearby);
PREP(moduleSetEngineer);
PREP(moduleSetMedic);
PREP(moduleSetMedicalVehicle);
PREP(moduleSetMedicalFacility);
PREP(moduleSetRepairFacility);
PREP(moduleSetRepairVehicle);
PREP(moduleSimulation);
PREP(moduleSuicideBomber);
PREP(moduleSuppressiveFire);
PREP(moduleSuppressiveFireLocal);
PREP(moduleSurrender);
@ -45,6 +50,8 @@ PREP(ui_globalSetSkill);
PREP(ui_groupSide);
PREP(ui_patrolArea);
PREP(ui_searchArea);
PREP(ui_setEngineer);
PREP(ui_suicideBomber);
PREP(ui_teleportPlayers);
PREP(ui_toggleFlashlight);
PREP(ui_toggleNvg);

View File

@ -22,15 +22,17 @@ class CfgPatches {
QGVAR(moduleSuppressiveFire),
QGVAR(AddFullArsenal),
QGVAR(RemoveFullArsenal),
QGVAR(moduleTeleportPlayers),
QGVAR(moduleHeal),
QGVAR(moduleSuicideBomber),
QGVAR(AddFullAceArsenal),
QGVAR(RemoveFullAceArsenal),
QGVAR(moduleTeleportPlayers)
QGVAR(RemoveFullAceArsenal)
};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common", "ace_ai"};
author = ECSTRING(common,ACETeam);
authors[] = {"SilentSpike"};
authors[] = {"SilentSpike", "mharis001"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
@ -55,6 +57,13 @@ class CfgPatches {
QGVAR(moduleLoadIntoCargo)
};
};
class GVAR(repair): ADDON {
units[] = {
QGVAR(moduleSetEngineer),
QGVAR(moduleSetRepairVehicle),
QGVAR(moduleSetRepairFacility)
};
};
class GVAR(cargoAndRepair): ADDON {
units[] = {
QGVAR(moduleAddSpareTrack),
@ -83,6 +92,7 @@ class ACE_Curator {
GVAR(captives) = "ace_captives";
GVAR(medical) = "ace_medical";
GVAR(cargo) = "ace_cargo";
GVAR(repair) = "ace_repair";
GVAR(cargoAndRepair)[] = {"ace_cargo", "ace_repair"};
GVAR(fastroping) = "ace_fastroping";
GVAR(pylons) = "ace_pylons";

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_object"];

View File

@ -16,7 +16,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "", "_activated"];

View File

@ -17,7 +17,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "_units", "_activated"];

View File

@ -16,7 +16,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "_units", "_activated"];

View File

@ -17,7 +17,6 @@
*
* Public: No
*/
#include "script_component.hpp"
_logic = _this select 0;

View File

@ -16,7 +16,6 @@
*
* Public: No
*/
#include "script_component.hpp"
_logic = _this select 0;

View File

@ -15,6 +15,7 @@
* 2: Text <STRING> (default: "")
* 3: Icon image file <STRING> (default: "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa")
* 4: Icon color <ARRAY> (default: [1,0,0,1])
* 5: Icon Angle <NUMBER> (default: 0)
*
* Return Value:
* None
@ -26,7 +27,7 @@
*/
#include "script_component.hpp"
params ["_object", "_code", ["_text", ""], ["_icon", "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa"], ["_color", [1,0,0,1]]];
params ["_object", "_code", ["_text", ""], ["_icon", "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa"], ["_color", [1,0,0,1]], ["_angle", 0]];
if (missionNamespace getVariable [QGVAR(moduleDestination_running), false]) exitWith {
[false, _object, [0,0,0], false, false, false] call _code;
@ -86,16 +87,16 @@ GVAR(moduleDestination_displayEHKeyboard) = [findDisplay 312, "KeyDown", {
GVAR(moduleDestination_mapDrawEH) = [((findDisplay 312) displayCtrl 50), "draw", {
params ["_mapCtrl"];
//IGNORE_PRIVATE_WARNING ["_thisArgs"]
_thisArgs params ["_object", "_text", "_icon", "_color"];
_thisArgs params ["_object", "_text", "_icon", "_color", "_angle"];
private _pos2d = (((findDisplay 312) displayCtrl 50) ctrlMapScreenToWorld getMousePosition);
_mapCtrl drawIcon [_icon, _color, _pos2d, 24, 24, 45, _text, 1, 0.03, "TahomaB", "right"];
_mapCtrl drawIcon [_icon, _color, _pos2d, 24, 24, _angle, _text, 1, 0.03, "TahomaB", "right"];
_mapCtrl drawLine [getPos _object, _pos2d, _color];
}, [_object, _text, _icon, _color]] call CBA_fnc_addBISEventHandler;
}, [_object, _text, _icon, _color, _angle]] call CBA_fnc_addBISEventHandler;
// Add draw EH for 3D camera view - draws the 3D icon and line
[{
(_this select 0) params ["_object", "_code", "_text", "_icon", "_color"];
(_this select 0) params ["_object", "_code", "_text", "_icon", "_color", "_angle"];
if ((isNull _object) || {isNull findDisplay 312} || {!isNull findDisplay 49}) then {
TRACE_3("null-exit",isNull _object,isNull findDisplay 312,isNull findDisplay 49);
GVAR(moduleDestination_running) = false;
@ -104,7 +105,7 @@ GVAR(moduleDestination_mapDrawEH) = [((findDisplay 312) displayCtrl 50), "draw",
if (GVAR(moduleDestination_running)) then {
// Draw the 3d icon and line
private _mousePosAGL = screenToWorld getMousePosition;
drawIcon3D [_icon, _color, _mousePosAGL, 1.5, 1.5, 45, _text];
drawIcon3D [_icon, _color, _mousePosAGL, 1.5, 1.5, _angle, _text];
drawLine3D [_mousePosAGL, ASLtoAGL (getPosASL _object), _color];;
} else {
TRACE_4("cleaning up",_this select 1,GVAR(moduleDestination_displayEHMouse),GVAR(moduleDestination_displayEHKeyboard),GVAR(moduleDestination_mapDrawEH));
@ -116,4 +117,4 @@ GVAR(moduleDestination_mapDrawEH) = [((findDisplay 312) displayCtrl 50), "draw",
GVAR(moduleDestination_displayEHKeyboard) = nil;
GVAR(moduleDestination_mapDrawEH) = nil;
};
}, 0, [_object, _code, _text, _icon, _color]] call CBA_fnc_addPerFrameHandler;
}, 0, [_object, _code, _text, _icon, _color, _angle]] call CBA_fnc_addPerFrameHandler;

View File

@ -19,7 +19,6 @@
*
* Public: No
*/
#include "script_component.hpp"
if !(isClass (configFile >> "ACE_Curator")) exitWith { ERROR("The ACE_Curator class does not exist") };

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -17,7 +17,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "_pos", "_radius" ,"_mode" , "_topDownMode", "_teleport"];

View File

@ -14,7 +14,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_varName", "_varValue"];

View File

@ -14,7 +14,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", "_newSide"];

View File

@ -0,0 +1,58 @@
/*
* Author: mharis001
* Full heal unit.
*
* Arguments:
* 0: The module logic <OBJECT>
*
* Return Value:
* None
*
* Example:
* [LOGIC] call ace_zeus_fnc_moduleHeal
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];
if !(local _logic) exitWith {};
private _unit = attachedTo _logic;
// Validate module target
scopeName "Main";
private _fnc_errorAndClose = {
params ["_msg"];
deleteVehicle _logic;
[_msg] call FUNC(showMessage);
breakOut "Main";
};
switch (false) do {
case !(isNull _unit): {
[LSTRING(NothingSelected)] call _fnc_errorAndClose;
};
case (_unit isKindOf "CAManBase"): {
[LSTRING(OnlyInfantry)] call _fnc_errorAndClose;
};
case (alive _unit): {
[LSTRING(OnlyAlive)] call _fnc_errorAndClose;
};
};
// Heal validated target
if (["ace_medical"] call EFUNC(common,isModLoaded) && {EGVAR(medical,level) > 0}) then {
[QEGVAR(medical,treatmentAdvanced_fullHealLocal), [_unit, _unit], _unit] call CBA_fnc_targetEvent;
} else {
// BI's scripted revive system
if ((missionNamespace getVariable ["bis_revive_mode", 0]) != 0) then {
["#rev", 1, _unit] call BIS_fnc_reviveOnState;
_unit setVariable ["#rev", 1, true];
} else {
_unit setDamage 0;
};
};
deleteVehicle _logic;

View File

@ -10,7 +10,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -10,7 +10,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -0,0 +1,27 @@
/*
* Author: mharis001
* Zeus module function to set unit engineer skill.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Skill level (1 - Engineer, 2 - Adv. Engineer) <NUMBER> (default: 1)
*
* Return Value:
* None
*
* Example:
* [unit, 2] call ace_zeus_fnc_moduleSetEngineer
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit", ["_engineerN", 1]];
if (isNull _unit) exitWith {
ERROR("Passed unit is null");
};
if !([_unit, _engineerN] call EFUNC(repair,isEngineer)) then {
_unit setVariable ["ACE_IsEngineer", _engineerN, true];
};

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -0,0 +1,50 @@
/*
* Author: mharis001
* Assigns object as repair facility.
*
* Arguments:
* 0: The module logic <OBJECT>
*
* Return Value:
* None
*
* Example:
* [LOGIC] call ace_zeus_fnc_moduleSetRepairFacility
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];
if !(local _logic) exitWith {};
if !(["ace_repair"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
private _mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
private _unit = (_mouseOver select 1);
if (_unit isKindOf "Man" || {!(_unit isKindOf "Building")}) then {
[LSTRING(OnlyStructures)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if (GETVAR(_unit,EGVAR(captives,isHandcuffed),false)) then {
[LSTRING(OnlyNonCaptive)] call FUNC(showMessage);
} else {
if ((_unit getVariable ["ACE_isRepairFacility", 0]) < 1) then {
_unit setVariable ["ACE_isRepairFacility", 1, true];
};
};
};
};
};
};
deleteVehicle _logic;

View File

@ -0,0 +1,46 @@
/*
* Author: mharis001
* Assigns object as repair vehicle.
*
* Arguments:
* 0: The module logic <OBJECT>
*
* Return Value:
* None
*
* Example:
* [LOGIC] call ace_zeus_fnc_moduleSetRepairVehicle
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];
if !(local _logic) exitWith {};
if !(["ace_repair"] call EFUNC(common,isModLoaded)) then {
[LSTRING(RequiresAddon)] call FUNC(showMessage);
} else {
private _mouseOver = GETMVAR(bis_fnc_curatorObjectPlaced_mouseOver,[""]);
if ((_mouseOver select 0) != "OBJECT") then {
[LSTRING(NothingSelected)] call FUNC(showMessage);
} else {
private _unit = _mouseOver select 1;
if (_unit isKindOf "Man" || (_unit isKindOf "Building")) then {
[LSTRING(OnlyVehicles)] call FUNC(showMessage);
} else {
if !(alive _unit) then {
[LSTRING(OnlyAlive)] call FUNC(showMessage);
} else {
if !([_unit] call EFUNC(repair,isRepairVehicle)) then {
_unit setVariable ["ACE_isRepairVehicle", 1, true];
};
};
};
};
};
deleteVehicle _logic;

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -0,0 +1,102 @@
/*
* Author: mharis001
* Zeus module function to make unit a suicide bomber.
*
* Arguments:
* 0: Unit that is suicide bomber <OBJECT>
* 1: Activation side <SIDE> (default: west)
* 2: Activation radius <NUMBER> (default: 10)
* 3: Explosion size (0 - Small, 1 - Medium, 2 - Large) <NUMBER> (default: 0)
* 4: Auto seek <BOOL> (default: false)
*
* Return Value:
* None
*
* Example:
* [unit, west, 10, 0, true] call ace_zeus_fnc_moduleSuicideBomber
*
* Public: No
*/
#include "script_component.hpp"
#define EXPLOSIVES ["R_TBG32V_F", "M_Mo_120mm_AT", "Bo_GBU12_LGB"]
#define DISTANCE_FAR 15
#define DISTANCE_CLOSE 2
#define MOVE_TIME 10
TRACE_1("params",_this);
if (isNull (_this select 0)) exitWith {};
// Prevent another suicide bomber module being attached
_unit setVariable [QGVAR(suicideBomber), true, true];
// One time behaviour changes
if (_autoSeek) then {
[QEGVAR(ai,setUnitPos), [_unit, "UP"], _unit] call CBA_fnc_targetEvent;
[QEGVAR(ai,setSpeedMode), [_unit, "FULL"], _unit] call CBA_fnc_targetEvent;
[QEGVAR(ai,setBehaviour), [[_unit], "CARELESS"], _unit] call CBA_fnc_targetEvent;
[QEGVAR(ai,setCombatMode), [_unit, "BLUE"], _unit] call CBA_fnc_targetEvent;
[QEGVAR(ai,AISection), [[_unit], ["TARGET", "AUTOTARGET"], false], _unit] call CBA_fnc_targetEvent;
[QEGVAR(ai,allowFleeing), [_unit, 0], _unit] call CBA_fnc_targetEvent;
};
// Run PFH to make unit a suicide bomber
[{
params ["_args", "_pfhID"];
_args params [["_unit", objNull], ["_activationSide", west], ["_activationRadius", 10], ["_explosionSize", 0], ["_autoSeek", false]];
// Unit deleted or killed
if (isNull _unit || {!alive _unit}) exitWith {
[_pfhID] call CBA_fnc_removePerFrameHandler;
LOG("Unit deleted or killed, PFH removed");
};
// Detonation
private _nearObjects = (_unit nearObjects _activationRadius) select {side _x == _activationSide && {_x != _unit} && {alive _x}};
if !(_nearObjects isEqualTo []) then {
createVehicle [EXPLOSIVES select _explosionSize, getPos _unit, [], 0, "CAN_COLLIDE"];
[_pfhID] call CBA_fnc_removePerFrameHandler;
LOG("Explosion created, PFH removed");
};
// Auto Seek
if (!_autoSeek) exitWith {};
private _memory = _unit getVariable [QGVAR(suicideBomber_memory), [nil, CBA_missionTime]];
_memory params ["_lastMove", "_lastTime"];
private _range = 100 max (200 * (_unit skill "spotDistance")); // 100-200
private _nearestObjects = (nearestObjects [_unit, [], _range]) select {side _x == _activationSide && {_x != _unit} && {alive _x}};
#ifdef DEBUG_MODE_FULL
if !(isNil "_lastMove") then {
drawLine3D [_unit modelToWorldVisual [0, 0, 1], _lastMove, [1, 0, 0, 1]];
};
for "_i" from 0 to 35 do {
drawLine3D [(_unit getRelPos [_range, _i * 10]) vectorAdd [0, 0, 1], (_unit getRelPos [_range, (_i + 1) * 10]) vectorAdd [0, 0, 1], [0, 1, 0, 1]];
};
for "_i" from 0 to 35 do {
drawLine3D [(_unit getRelPos [_activationRadius, _i * 10]) vectorAdd [0, 0, 1], (_unit getRelPos [_activationRadius, (_i + 1) * 10]) vectorAdd [0, 0, 1], [0, 0, 1, 1]];
};
for "_i" from 0 to 359 do {
if (_i >= linearConversion [_lastTime - MOVE_TIME, _lastTime, CBA_missionTime, 0, 359, true]) then {
drawLine3D [(_unit getRelPos [2, _i]) vectorAdd [0, 0, 1], (_unit getRelPos [2, _i + 1]) vectorAdd [0, 0, 1], [1, 1, 0, 1]];
};
};
#endif
if (_nearestObjects isEqualTo []) exitWith {};
// Get relative position close to target to avoid bug where AI wont path to a certain position
private _moveToPos = (_nearestObjects select 0) getPos [1, random 360];
if (isNil "_lastMove" || // No move given yet
{(_lastMove distance _moveToPos) > DISTANCE_FAR} || // New target is too far from last move
{(_lastMove distance _unit) < DISTANCE_CLOSE} || // Unit has reached last move
{CBA_missionTime >= _lastTime}) then { // Too much time passed between last move (also acts as a fail-safe if unit gets stuck)
[QEGVAR(ai,doMove), [[[_unit, _moveToPos]]], _unit] call CBA_fnc_targetEvent;
_unit setVariable [QGVAR(suicideBomber_memory), [_moveToPos, CBA_missionTime + MOVE_TIME]];
TRACE_2("Moving unit",_moveToPos,CBA_missionTime);
};
}, 0, _this] call CBA_fnc_addPerFrameHandler;

View File

@ -116,4 +116,4 @@ if ([_unit] call EFUNC(common,isPlayer)) exitWith {
};
#endif
}, localize LSTRING(ModuleSuppressiveFire_DisplayName)] call FUNC(getModuleDestination);
}, localize LSTRING(ModuleSuppressiveFire_DisplayName), "\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa", [1, 0, 0, 1], 45] call FUNC(getModuleDestination);

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic","_uid","_group"];

View File

@ -16,7 +16,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "_toggle", "_addGear", "_target"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic", "_toggle", "_target"];

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -15,7 +15,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_logic"];

View File

@ -1,5 +1,5 @@
/*
* Author: PabstMirror
* Author: PabstMirror, mharis001
* Initalises the ace_cargo attribute of the zeus vehicle attributes display
* (the display shown on double click)
*
@ -14,7 +14,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_control"];
@ -28,6 +27,10 @@ TRACE_1("",_loaded);
_control ctrlRemoveAllEventHandlers "setFocus";
private _listbox = _control controlsGroupCtrl 80086;
{
(_control controlsGroupCtrl 80086) lbAdd (str _x);
private _class = if (_x isEqualType "") then {_x} else {typeOf _x};
private _displayName = getText (configFile >> "CfgVehicles" >> _class >> "displayName");
_listbox lbAdd _displayName;
} forEach _loaded;

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
//Generic Init:

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
//Generic Init:

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
//Generic Init:

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_control"];

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
disableSerialization;

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_control"];

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
#define IDCs [31201,31200,31202,31203]

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
//Generic Init:

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
//Generic Init:

View File

@ -0,0 +1,75 @@
/*
* Author: mharis001
* Initalizes the "Set Engineer" Zeus module display.
*
* Arguments:
* 0: setEngineer controls group <CONTROL>
*
* Return Value:
* None
*
* Example:
* [CONTROL] call ace_zeus_fnc_ui_setEngineer
*
* Public: No
*/
#include "script_component.hpp"
params ["_control"];
// Generic init
private _display = ctrlParent _control;
private _ctrlButtonOK = _display displayCtrl 1; // IDC_OK
private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull);
TRACE_1("logicObject",_logic);
_control ctrlRemoveAllEventHandlers "setFocus";
// Validate module target
private _unit = attachedTo _logic;
TRACE_1("unit",_unit);
scopeName "Main";
private _fnc_errorAndClose = {
params ["_msg"];
_display closeDisplay 0;
deleteVehicle _logic;
[_msg] call FUNC(showMessage);
breakOut "Main";
};
switch (false) do {
case !(isNull _unit): {
[LSTRING(NothingSelected)] call _fnc_errorAndClose;
};
case (_unit isKindOf "CAManBase"): {
[LSTRING(OnlyInfantry)] call _fnc_errorAndClose;
};
case (alive _unit): {
[LSTRING(OnlyAlive)] call _fnc_errorAndClose;
};
};
// Specific onLoad stuff
private _fnc_onUnload = {
private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull);
if (isNull _logic) exitWith {};
deleteVehicle _logic;
};
private _fnc_onConfirm = {
params [["_ctrlButtonOK", controlNull, [controlNull]]];
private _display = ctrlParent _ctrlButtonOK;
if (isNull _display) exitWith {};
private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objnull);
if (isNull _logic) exitWith {};
private _value = lbCurSel (_display displayCtrl 86947);
[attachedTo _logic, _value + 1] call FUNC(moduleSetEngineer); // +1 since lbCurSel zero-indexed
};
_display displayAddEventHandler ["Unload", _fnc_onUnload];
_ctrlButtonOK ctrlAddEventHandler ["ButtonClick", _fnc_onConfirm];

View File

@ -0,0 +1,151 @@
/*
* Author: mharis001
* Initalizes the "Suicide Bomber" Zeus module display.
*
* Arguments:
* 0: suicideBomber controls group <CONTROL>
*
* Return Value:
* None
*
* Example:
* [CONTROL] call ace_zeus_fnc_ui_suicideBomber
*
* Public: No
*/
#include "script_component.hpp"
#define SIDE_IDCs [83580, 83581, 83582, 83583]
params ["_control"];
// Generic init
private _display = ctrlParent _control;
private _ctrlButtonOK = _display displayCtrl 1; // IDC_OK
private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull);
TRACE_1("Logic Object",_logic);
_control ctrlRemoveAllEventHandlers "SetFocus";
// Validate module target
private _unit = attachedTo _logic;
TRACE_1("Unit",_unit);
scopeName "Main";
private _fnc_errorAndClose = {
params ["_msg"];
_display closeDisplay 0;
deleteVehicle _logic;
[_msg] call FUNC(showMessage);
breakOut "Main";
};
switch (false) do {
case !(isNull _unit): {
[LSTRING(NothingSelected)] call _fnc_errorAndClose;
};
case (_unit isKindOf "CAManBase"): {
[LSTRING(OnlyInfantry)] call _fnc_errorAndClose;
};
case (alive _unit): {
[LSTRING(OnlyAlive)] call _fnc_errorAndClose;
};
case !([_unit] call EFUNC(common,isPlayer)): {
["str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer"] call _fnc_errorAndClose;
};
case !(_unit getVariable [QGVAR(suicideBomber), false]): {
[LSTRING(ModuleSuicideBomber_AlreadyBomber)] call _fnc_errorAndClose;
};
};
// Specific onLoad stuff
// Activation side
private _fnc_onSelection = {
params [["_activeCtrl", controlNull, [controlNull]]];
private _display = ctrlParent _activeCtrl;
if (isNUll _display) exitWith {};
// Update button colours and scales
{
private _ctrl = _display displayCtrl _x;
private _color = _ctrl getVariable "color";
private _scale = 1;
if (ctrlIDC _activeCtrl == _x) then {
_color set [3, 1];
_scale = 1.2;
} else {
_color set [3, 0.5];
};
_ctrl ctrlSetTextColor _color;
[_ctrl, _scale, 0.1] call BIS_fnc_ctrlSetScale;
} forEach SIDE_IDCs;
// Save selected side
SETVAR(_display,activationSide,(ctrlIDC _activeCtrl) - 83580);
};
// Init side buttons
{
private _ctrl = _display displayCtrl _x;
private _color = [_x - 83580] call BIS_fnc_sideColor;
_ctrl setVariable ["color", _color];
_ctrl ctrlSetActiveColor _color;
_color set [3, 0.5];
_ctrl ctrlSetTextColor _color;
_ctrl ctrlAddEventHandler ["ButtonClick", _fnc_onSelection];
} forEach SIDE_IDCs;
// Activation radius
private _fnc_onSliderMove = {
params ["_slider"];
private _display = ctrlParent _slider;
(_display displayCtrl 83573) ctrlSetText (str round sliderPosition _slider);
};
private _slider = _display displayCtrl 83572;
private _edit = _display displayCtrl 83573;
_slider sliderSetRange [5, 50];
_slider sliderSetSpeed [1, 1];
_slider sliderSetPosition 10;
_edit ctrlSetText "10";
_slider ctrlAddEventHandler ["SliderPosChanged", _fnc_onSliderMove];
// Confirm and Cancel
private _fnc_onUnload = {
private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull);
if (isNull _logic) exitWith {};
deleteVehicle _logic;
};
private _fnc_onConfirm = {
params [["_ctrlButtonOK", controlNull, [controlNull]]];
private _display = ctrlParent _ctrlButtonOK;
if (isNull _display) exitWith {};
private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objNull);
if (isNull _logic) exitWith {};
private _unit = attachedTo _logic;
private _side = [GETVAR(_display,activationSide,1)] call BIS_fnc_sideType;
private _radius = round sliderPosition (_display displayCtrl 83572);
private _expSize = lbCurSel (_display displayCtrl 83574);
private _autoSeek = lbCurSel (_display displayCtrl 83575) > 0;
[_unit, _side, _radius, _expSize, _autoSeek] call FUNC(moduleSuicideBomber);
deleteVehicle _logic;
};
_display displayAddEventHandler ["Unload", _fnc_onUnload];
_ctrlButtonOK ctrlAddEventHandler ["ButtonClick", _fnc_onConfirm];

View File

@ -1,6 +1,6 @@
/*
* Author: SilentSpike
* Initalises the `teleport players` zeus module display
* Author: SilentSpike, mharis001
* Initalizes the "Teleport Players" Zeus module display.
*
* Arguments:
* 0: teleportPlayers controls group <CONTROL>
@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
params ["_control"];
@ -37,6 +36,33 @@ private _listbox = _display displayCtrl 16189;
_listbox lbSetCurSel 0;
(_display displayCtrl 16188) cbSetChecked (_logic getVariable ["tpGroup",false]);
private _fnc_onKeyUp = {
params ["_display"];
private _listbox = _display displayCtrl 16189;
private _edit = _display displayCtrl 16190;
private _text = toLower ctrlText _edit;
lbClear _listbox;
{
if (alive _x) then {
if ([toLower name _x, _text] call CBA_fnc_find > -1) then {
_listbox lbSetData [_listbox lbAdd (name _x), getPlayerUID _x];
};
};
} forEach ([] call CBA_fnc_players);
// Alert user to zero search matches
if (lbSize _listbox == 0) then {
_edit ctrlSetTooltip (localize LSTRING(ModuleTeleportPlayers_noneFound));
_edit ctrlSetTextColor [1, 0, 0, 1];
} else {
_edit ctrlSetTooltip "";
_edit ctrlSetTextColor [1, 1, 1, 1];
};
};
private _fnc_onUnload = {
params ["_display"];
@ -64,5 +90,6 @@ private _fnc_onConfirm = {
[_logic, _uid, _group] call FUNC(moduleTeleportPlayers);
};
_display displayAddEventHandler ["KeyUp", _fnc_onKeyUp];
_display displayAddEventHandler ["unload", _fnc_onUnload];
_ctrlButtonOK ctrlAddEventHandler ["buttonclick", _fnc_onConfirm];

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
disableSerialization;

View File

@ -13,7 +13,6 @@
*
* Public: No
*/
#include "script_component.hpp"
disableSerialization;

View File

@ -16,7 +16,6 @@
*
* Public: No
*/
#include "script_component.hpp"
TRACE_1("params",_this);

View File

@ -1238,6 +1238,262 @@
<Chinesesimp>解除驻军驻守状态</Chinesesimp>
<Korean>주둔해제</Korean>
</Key>
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_noneFound">
<English>No players found</English>
<Chinese>沒有玩家找到</Chinese>
<Chinesesimp>没有玩家找到</Chinesesimp>
<Czech>Nije pronađen nijedan igrač</Czech>
<French>Aucun joueur trouvé</French>
<German>Keine Spieler gefunden</German>
<Hungarian>Nincsenek játékosok</Hungarian>
<Italian>Nessun giocatore trovato</Italian>
<Japanese>プレーヤーが見つかりません</Japanese>
<Korean>플레이어가 없습니다.</Korean>
<Polish>Nie znaleziono graczy</Polish>
<Portuguese>Nenhum jogador encontrado</Portuguese>
<Russian>Игроки не найдены</Russian>
<Spanish>No se encontraron jugadores</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSetRepairVehicle_DisplayName">
<English>Assign Repair Vehicle</English>
<Chinese>分配維修車輛</Chinese>
<Chinesesimp>分配维修车辆</Chinesesimp>
<Czech>Přiřaďte opravárenské vozidlo</Czech>
<French>Affecter un véhicule de réparation</French>
<German>Fahrzeug reparieren zuweisen</German>
<Hungarian>Hozzárendelés javítóműhöz</Hungarian>
<Italian>Assegna veicolo di riparazione</Italian>
<Japanese>修理車両を割り当てる</Japanese>
<Korean>수리 차량 지정</Korean>
<Polish>Przydziel pojazd do naprawy</Polish>
<Portuguese>Atribuir veículo de reparação</Portuguese>
<Russian>Назначить ремонтный автомобиль</Russian>
<Spanish>Asignar vehículo de reparación</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSetRepairFacility_DisplayName">
<English>Assign Repair Facility</English>
<Chinese>分配修理設施</Chinese>
<Chinesesimp>分配修理设施</Chinesesimp>
<Czech>Přiřaďte opravu</Czech>
<French>Affecter une installation de réparation</French>
<German>Zuweisen von Reparatureinrichtung</German>
<Hungarian>Hozzárendelés javításhoz</Hungarian>
<Italian>Assegna struttura di riparazione</Italian>
<Japanese>修理施設を割り当てる</Japanese>
<Korean>수리 시설 지정</Korean>
<Polish>Przydziel naprawę</Polish>
<Portuguese>Atribuir facilidade de reparação</Portuguese>
<Russian>Назначить ремонтный комплекс</Russian>
<Spanish>Asignar instalación de reparación</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSetEngineer_DisplayName">
<English>Assign Engineer</English>
<Chinese>指派工程師</Chinese>
<Chinesesimp>指派工程师</Chinesesimp>
<Czech>Přiřadit inženýra</Czech>
<French>Affecter ingénieur</French>
<German>Engineer zuweisen</German>
<Hungarian>Engedélyezze a mérnököt</Hungarian>
<Italian>Assign Engineer</Italian>
<Japanese>担当エンジニア</Japanese>
<Korean>엔지니어 지정</Korean>
<Polish>Przydziel inżyniera</Polish>
<Portuguese>Encarregar o engenheiro</Portuguese>
<Russian>Назначить инженера</Russian>
<Spanish>Asignar Ingeniero</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSetEngineer_skill">
<English>Engineer Skill</English>
<Chinese>工程師技能</Chinese>
<Chinesesimp>工程师技能</Chinesesimp>
<Czech>Inženýrská dovednost</Czech>
<French>Compétence d'ingénieur</French>
<German>Ingenieur Fähigkeit</German>
<Hungarian>Mérnöki készség</Hungarian>
<Italian>Abilità ingegnere</Italian>
<Japanese>エンジニアのスキル</Japanese>
<Korean>기술자의 기술</Korean>
<Polish>Umiejętność inżyniera</Polish>
<Portuguese>Habilidade do engenheiro</Portuguese>
<Russian>Инженерное мастерство</Russian>
<Spanish>Habilidad de Ingeniero</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleHeal_DisplayName">
<English>Full Heal</English>
<Chinese>完全治愈</Chinese>
<Chinesesimp>完全治愈</Chinesesimp>
<Czech>Plné uzdravení</Czech>
<French>Guérison complète</French>
<German>Vollständige Heilung</German>
<Hungarian>Teljes gyógyítás</Hungarian>
<Italian>Guarigione completa</Italian>
<Japanese>フルヒール</Japanese>
<Korean>완전 치유</Korean>
<Polish>Pełne uleczenie</Polish>
<Portuguese>Cura completa</Portuguese>
<Russian>Полное исцеление</Russian>
<Spanish>Totalmente curado</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_DisplayName">
<English>Suicide Bomber</English>
<Chinese>自殺式炸彈襲擊者</Chinese>
<Chinesesimp>自杀式炸弹袭击者</Chinesesimp>
<Czech>Samovražedný bombardér</Czech>
<French>Kamikaze</French>
<German>Selbstmordattentäter</German>
<Hungarian>Öngyilkos merénylő</Hungarian>
<Italian>Kamikaze</Italian>
<Japanese>自爆テロ犯</Japanese>
<Korean>자살 폭탄</Korean>
<Polish>Samobójca</Polish>
<Portuguese>Bombardeiro suicida</Portuguese>
<Russian>Террорист-смертник</Russian>
<Spanish>Bombardeo suicida</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_ActivationSide">
<English>Activation Side</English>
<Chinese>激活方</Chinese>
<Chinesesimp>激活方</Chinesesimp>
<Czech>Aktivační strana</Czech>
<French>Activation latérale</French>
<German>Aktivierungsseite</German>
<Hungarian>Aktiválási oldal</Hungarian>
<Italian>Lato di attivazione</Italian>
<Japanese>アクティベーションサイド</Japanese>
<Korean>활성화면</Korean>
<Polish>Strona aktywacji</Polish>
<Portuguese>Lado de ativação</Portuguese>
<Russian>Сторона активации</Russian>
<Spanish>Lado de activación</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_ActivationRadius">
<English>Activation Radius</English>
<Chinese>激活半徑</Chinese>
<Chinesesimp>激活半径</Chinesesimp>
<Czech>Aktivační poloměr</Czech>
<French>Rayon d'activation</French>
<German>Aktivierungsradius</German>
<Hungarian>Aktiválási sugár</Hungarian>
<Italian>Raggio di attivazione</Italian>
<Japanese>活性化半径</Japanese>
<Korean>활성화 반경</Korean>
<Polish>Promień aktywacji</Polish>
<Portuguese>Rádio de ativação</Portuguese>
<Russian>Радиус активации</Russian>
<Spanish>Radio de activación</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_ExplosionSize">
<English>Explosion Size</English>
<Chinese>爆炸尺寸</Chinese>
<Chinesesimp>爆炸尺寸</Chinesesimp>
<Czech>Velikost výbuchu</Czech>
<French>Taille d'explosion</French>
<German>Explosionsgröße</German>
<Hungarian>Robbanásméret</Hungarian>
<Italian>Dimensione di esplosione</Italian>
<Japanese>爆発サイズ</Japanese>
<Korean>폭발 크기</Korean>
<Polish>Rozmiar wybuchu</Polish>
<Portuguese>Tamanho da Explosão</Portuguese>
<Russian>Размер взрыва</Russian>
<Spanish>Tamaño de Explosión</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_AutoSeek">
<English>Auto Seek</English>
<Chinese>自動尋求</Chinese>
<Chinesesimp>自动寻求</Chinesesimp>
<Czech>Auto Seek</Czech>
<French>Recherche automatique</French>
<German>Automatische Suche</German>
<Hungarian>Automatikus keresés</Hungarian>
<Italian>Ricerca automatica</Italian>
<Japanese>オートシーク</Japanese>
<Korean>자동 탐색</Korean>
<Polish>Auto Seek</Polish>
<Portuguese>Busca automática</Portuguese>
<Russian>Автоматический поиск</Russian>
<Spanish>Búsqueda automática</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_AutoSeek_tooltip">
<English>Unit will actively try to find and move towards nearby units of the activation side. The range of Auto Seek is based on the unit's spot distance skill with a minimum of 100 meters.</English>
<Chinese>單位將主動嘗試尋找並移動到附近的激活方單位。自動搜索的範圍是基於單位的距離技能最少100米。</Chinese>
<Chinesesimp>单位将主动尝试寻找并移动到附近的激活方单位。自动搜索的范围是基于单位的距离技能最少100米。</Chinesesimp>
<Czech>Jednotka se bude aktivně snažit najít a přejít na blízké jednotky na straně aktivace. Rozsah Auto Seek je založen na dovednosti spotové vzdálenosti jednotky s minimem 100 metrů.</Czech>
<French>L'unité essayera activement de trouver et de se déplacer vers les unités à proximité du côté d'activation. La portée d'Auto Seek est basée sur la compétence de distance de l'unité avec un minimum de 100 mètres.</French>
<German>Die Einheit versucht aktiv, in der Nähe befindliche Einheiten der Aktivierungsseite zu finden und sich dorthin zu bewegen. Der Bereich der automatischen Suche basiert auf der Fähigkeit der Zielentfernung der Einheit mit einer Mindestentfernung von 100 Metern.</German>
<Hungarian>Az egység aktívan megpróbálja megtalálni és elmozdulni az aktivációs oldal közeli egységei felé.Az automatikus keresési tartomány az egység helyszíni szakértelmén alapul, legalább 100 méterrel.</Hungarian>
<Italian>L'unità cercherà attivamente di trovare e spostarsi verso le unità vicine del lato di attivazione. La gamma di Auto Seek si basa sull'abilità a distanza spot dell'unità con un minimo di 100 metri.</Italian>
<Japanese>ユニットはアクティベーション側の近くのユニットを見つけて移動しようと積極的に試みます。オートシークの範囲は、ユニットのスポット距離のスキルに基づいており、最低100メートルです。</Japanese>
<Korean>유닛은 액티브 측의 근접 유닛을 향해 적극적으로 찾아서 이동하려고 시도합니다. 자동 시크의 범위는 유닛의 스팟 거리 스킬을 기준으로 최소 100 미터입니다.</Korean>
<Polish>Jednostka będzie aktywnie próbowała znaleźć i ruszyć w kierunku pobliskich jednostek strony aktywacji. Zasięg Auto Seek opiera się na umiejętności punktowej odległości jednostki z minimum 100 metrów.</Polish>
<Portuguese>A unidade tentará ativamente encontrar e se mover para as unidades próximas do lado da ativação. O alcance da Auto Seek é baseado na habilidade de distância do ponto da unidade com um mínimo de 100 metros.</Portuguese>
<Russian>Устройство будет активно пытаться найти и перейти к соседним единицам активации. Диапазон автоматического поиска основан на умении снимать расстояние на расстоянии не менее 100 метров.</Russian>
<Spanish>La unidad intentará buscar activamente y moverse hacia las unidades cercanas del lado de activación. El rango de Auto Seek se basa en la habilidad de distancia al punto de la unidad con un mínimo de 100 metros.</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_Small">
<English>Small</English>
<Chinese></Chinese>
<Chinesesimp></Chinesesimp>
<Czech>Malý</Czech>
<French>Petit</French>
<German>Klein</German>
<Hungarian>Kicsi</Hungarian>
<Italian>Piccolo</Italian>
<Japanese>小さい</Japanese>
<Korean>작은</Korean>
<Polish>Mały</Polish>
<Portuguese>Pequeno</Portuguese>
<Russian>Маленький</Russian>
<Spanish>Pequeña</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_Medium">
<English>Medium</English>
<Chinese></Chinese>
<Chinesesimp></Chinesesimp>
<Czech>Střední</Czech>
<French>Moyen</French>
<German>Mittel</German>
<Hungarian>Közepes</Hungarian>
<Italian>medio</Italian>
<Japanese></Japanese>
<Korean>매질</Korean>
<Polish>Średni</Polish>
<Portuguese>Médio</Portuguese>
<Russian>средний</Russian>
<Spanish>Medio</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_Large">
<English>Large</English>
<Chinese></Chinese>
<Chinesesimp></Chinesesimp>
<Czech>Velký</Czech>
<French>Grand</French>
<German>Groß</German>
<Hungarian>Nagy</Hungarian>
<Italian>Grande</Italian>
<Japanese></Japanese>
<Korean></Korean>
<Polish>Duży</Polish>
<Portuguese>ampla</Portuguese>
<Russian>большой</Russian>
<Spanish>Grande</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSuicideBomber_AlreadyBomber">
<English>Unit is already a suicide bomber</English>
<Chinese>這個單位已經是自殺炸彈手了</Chinese>
<Chinesesimp>这个单位已经是自杀炸弹手了</Chinesesimp>
<Czech>Jednotka je již samovražedným bombardérem</Czech>
<French>L'unité est déjà un kamikaze</French>
<German>Die Einheit ist bereits ein Selbstmordattentäter</German>
<Hungarian>Az egység már öngyilkos bombázó</Hungarian>
<Italian>L'unità è già un kamikaze</Italian>
<Japanese>ユニットはすでに自爆テロである</Japanese>
<Korean>유닛은 이미 자살 폭탄 테러범이다.</Korean>
<Polish>Jednostka jest już zamachowcem-samobójcą</Polish>
<Portuguese>A unidade já é um suicida</Portuguese>
<Russian>Единица уже является террористом-смертником</Russian>
<Spanish>La unidad ya es un terrorista suicida</Spanish>
</Key>
<Key ID="STR_ACE_Zeus_ModuleAddFullACEArsenal_DisplayName">
<English>Add full ACE Arsenal</English>
</Key>

Binary file not shown.

View File

@ -8,6 +8,8 @@ class RscXSliderH;
class RscCheckBox;
class RscActivePicture;
class RscMapControl;
class RscPicture;
class ctrlToolbox;
class RscDisplayAttributes {
class Controls {
@ -280,7 +282,7 @@ class GVAR(RscGroupSide): RscDisplayAttributes {
};
class BLUFOR: RscActivePicture {
idc = 31200;
text = "\a3\Ui_f\data\Map\Markers\NATO\b_unknown.paa";
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_west_ca.paa";
x = W_PART(12.5);
y = H_PART(0.25);
w = W_PART(2);
@ -289,7 +291,7 @@ class GVAR(RscGroupSide): RscDisplayAttributes {
};
class OPFOR: BLUFOR {
idc = 31201;
text = "\a3\Ui_f\data\Map\Markers\NATO\o_unknown.paa";
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_east_ca.paa";
x = W_PART(15.5);
y = H_PART(0.25);
w = W_PART(2);
@ -298,7 +300,7 @@ class GVAR(RscGroupSide): RscDisplayAttributes {
};
class Independent: BLUFOR {
idc = 31202;
text = "\a3\Ui_f\data\Map\Markers\NATO\n_unknown.paa";
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_guer_ca.paa";
x = W_PART(18.5);
y = H_PART(0.25);
w = W_PART(2);
@ -307,7 +309,7 @@ class GVAR(RscGroupSide): RscDisplayAttributes {
};
class Civilian: BLUFOR {
idc = 31203;
text = "\a3\Ui_f\data\Map\Markers\NATO\n_unknown.paa";
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_civ_ca.paa";
x = W_PART(21.5);
y = H_PART(0.25);
w = W_PART(2);
@ -394,16 +396,41 @@ class GVAR(RscTeleportPlayers): RscDisplayAttributes {
w = W_PART(26);
h = H_PART(5.9);
};
class Label: Title {
class SearchBackground: RscText {
idc = -1;
x = 0;
y = H_PART(7.1);
w = W_PART(1);
h = H_PART(1);
colorBackground[] = {0, 0, 0, 0.5};
};
class SearchPicture: RscPicture {
idc = -1;
text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa";
x = 0;
y = H_PART(7.1);
w = W_PART(1);
h = H_PART(1);
};
class Search: RscEdit {
idc = 16190;
x = W_PART(1.2);
y = H_PART(7.1);
w = W_PART(14.5);
h = H_PART(1);
autocomplete = "";
};
class LabelGroup: Title {
idc = -1;
text = CSTRING(ModuleTeleportPlayers_group);
toolTip = CSTRING(ModuleTeleportPlayers_group_desc);
x = W_PART(15.9);
y = H_PART(7.1);
w = W_PART(10);
w = W_PART(9);
};
class UseGroup: RscCheckBox {
idc = 16188;
x = W_PART(10.1);
x = W_PART(25);
y = H_PART(7.1);
w = W_PART(1);
h = H_PART(1);
@ -668,3 +695,179 @@ class GVAR(RscToggleFlashlight): RscDisplayAttributes {
class ButtonCancel: ButtonCancel {};
};
};
class GVAR(RscSetEngineer): RscDisplayAttributes {
onLoad = QUOTE([ARR_3('onLoad', _this, QUOTE(QGVAR(RscSetEngineer)))] call FUNC(zeusAttributes));
onUnload = QUOTE([ARR_3('onUnload', _this, QUOTE(QGVAR(RscSetEngineer)))] call FUNC(zeusAttributes));
class Controls: Controls {
class Background: Background {};
class Title: Title {};
class Content: Content {
class Controls {
class setEngineer: RscControlsGroupNoScrollbars {
onSetFocus = QUOTE(_this call FUNC(ui_setEngineer));
idc = 86946;
x = 0;
y = 0;
w = W_PART(26);
h = H_PART(1.2);
class controls {
class Label: RscText {
idc = -1;
text = CSTRING(ModuleSetEngineer_skill);
toolTip = ECSTRING(repair,AssignEngineerRole_role_Description);
x = 0;
y = H_PART(0.1);
w = W_PART(10);
h = H_PART(1);
colorBackground[] = {0, 0, 0, 0.5};
};
class Roles: ctrlToolbox {
idc = 86947;
x = W_PART(10.1);
y = H_PART(0.1);
w = W_PART(15.9);
h = H_PART(1);
rows = 1;
columns = 2;
strings[] = {ECSTRING(repair,AssignEngineerRole_role_engineer), ECSTRING(repair,AssignEngineerRole_role_advanced)};
};
};
};
};
};
class ButtonOK: ButtonOK {};
class ButtonCancel: ButtonCancel {};
};
};
class GVAR(RscSuicideBomber): RscDisplayAttributes {
onLoad = QUOTE([ARR_3('onLoad', _this, QUOTE(QGVAR(RscSuicideBomber)))] call FUNC(zeusAttributes));
onUnload = QUOTE([ARR_3('onUnload', _this, QUOTE(QGVAR(RscSuicideBomber)))] call FUNC(zeusAttributes));
class Controls: Controls {
class Background: Background {};
class Title: Title {};
class Content: Content {
class Controls {
class suicideBomber: RscControlsGroupNoScrollbars {
onSetFocus = QUOTE(_this call FUNC(ui_suicideBomber));
idc = 83470;
x = 0;
y = 0;
w = W_PART(26);
h = H_PART(5.8);
class controls {
class ActivationSide: RscControlsGroupNoScrollbars {
idc = 83571;
x = 0;
y = 0;
w = W_PART(26);
h = H_PART(2.5);
class controls {
class Label: RscText {
idc = -1;
text = CSTRING(ModuleSuicideBomber_ActivationSide);
x = 0;
y = 0;
w = W_PART(10);
h = H_PART(2.5);
colorBackground[] = {0, 0, 0, 0.5};
};
class Background: RscText {
idc = -1;
x = W_PART(10);
y = 0;
w = W_PART(16);
h = H_PART(2.5);
colorBackground[] = {1, 1, 1, 0.1};
};
class BLUFOR: RscActivePicture {
idc = 83581;
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_west_ca.paa";
x = W_PART(12.5);
y = H_PART(0.25);
w = W_PART(2);
h = H_PART(2);
tooltip = "$STR_WEST";
};
class OPFOR: BLUFOR {
idc = 83580;
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_east_ca.paa";
x = W_PART(15.5);
tooltip = "$STR_EAST";
};
class Independent: BLUFOR {
idc = 83582;
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_guer_ca.paa";
x = W_PART(18.5);
tooltip = "$STR_guerrila";
};
class Civilian: BLUFOR {
idc = 83583;
text = "\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\side_civ_ca.paa";
x = W_PART(21.5);
tooltip = "$STR_Civilian";
};
};
};
class DistanceLabel: RscText {
idc = -1;
text = CSTRING(ModuleSuicideBomber_ActivationRadius);
x = 0;
y = H_PART(2.6);
w = W_PART(10);
h = H_PART(1);
colorBackground[] = {0, 0, 0, 0.5};
};
class DistanceSlider: RscXSliderH {
idc = 83572;
x = W_PART(10.1);
y = H_PART(2.6);
w = W_PART(13.9);
h = H_PART(1);
};
class DistanceEdit: RscEdit {
idc = 83573;
x = W_PART(24.1);
y = H_PART(2.6);
w = W_PART(1.9);
h = H_PART(1);
autocomplete = "";
maxChars = 3;
canModify = 0;
};
class ExplosionLabel: DistanceLabel {
idc = -1;
text = CSTRING(ModuleSuicideBomber_ExplosionSize);
y = H_PART(3.7);
};
class Explosion: ctrlToolbox {
idc = 83574;
x = W_PART(10.1);
y = H_PART(3.7);
w = W_PART(15.9);
h = H_PART(1);
rows = 1;
columns = 3;
strings[] = {CSTRING(ModuleSuicideBomber_Small), CSTRING(ModuleSuicideBomber_Medium), CSTRING(ModuleSuicideBomber_Large)};
};
class AutoSeekLabel: DistanceLabel {
idc = -1;
text = CSTRING(ModuleSuicideBomber_AutoSeek);
y = H_PART(4.8);
toolTip = CSTRING(ModuleSuicideBomber_AutoSeek_tooltip);
};
class AutoSeek: Explosion {
idc = 83575;
y = H_PART(4.8);
columns = 2;
strings[] = {ECSTRING(common,Disabled), ECSTRING(common,Enabled)};
};
};
};
};
};
class ButtonOK: ButtonOK {};
class ButtonCancel: ButtonCancel {};
};
};