Merge pull request #550 from acemod/rallypointfix

fix rallypoints being broken, fix #522
This commit is contained in:
commy2 2015-04-15 21:03:13 +02:00
commit f40373bb78
13 changed files with 426 additions and 202 deletions

View File

@ -1,20 +1,75 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_preInit));
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_postInit));
};
};
class Extended_Killed_EventHandlers {
class CAManBase {
class GVAR(HandleGear) {
class ADDON {
killed = QUOTE(_this call FUNC(handleKilled));
};
};
};
class Extended_Respawn_EventHandlers {
class CAManBase {
class GVAR(HandleGear) {
class ADDON {
respawn = QUOTE(_this call FUNC(handleRespawn));
};
};
};
class Extended_Init_EventHandlers {
class ACE_Rallypoint_West {
class ADDON {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; [ARR_3(_this select 0,'',west)] call FUNC(initRallypoint));
};
};
class ACE_Rallypoint_East {
class ADDON {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; [ARR_3(_this select 0,'',east)] call FUNC(initRallypoint));
};
};
class ACE_Rallypoint_Independent {
class ADDON {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; [ARR_3(_this select 0,'',independent)] call FUNC(initRallypoint));
};
};
class ACE_Rallypoint_West_Base {
class ADDON {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; [ARR_3(_this select 0,'respawn_west',west)] call FUNC(initRallypoint));
};
};
class ACE_Rallypoint_East_Base {
class ADDON {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; [ARR_3(_this select 0,'respawn_east',east)] call FUNC(initRallypoint));
};
};
class ACE_Rallypoint_Independent_Base {
class ADDON {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; [ARR_3(_this select 0,'respawn_guerrila',independent)] call FUNC(initRallypoint)); //respawn_civilian
};
};
};
class Extended_InitPost_EventHandlers {
// auto assign rallypoint leader
class CAManBase {
class ADDON {
serverInit = QUOTE(_this call FUNC(handleInitPostServer));
};
};
};

View File

@ -1,6 +1,6 @@
class CfgVehicles {
class Module_F;
class ACE_ModuleRespawn : Module_F {
class ACE_ModuleRespawn: Module_F {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "Respawn System";
@ -8,20 +8,24 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
icon = QUOTE(PATHTOF(UI\Icon_Module_Respawn_ca.paa));
class Arguments {
class SavePreDeathGear {
displayName = "Save Gear?";
description = "Respawn with the gear a soldier had just before his death?";
typeName = "BOOL";
class values {
class Yes { name = "Yes"; value = 1; };
class No { default = 1; name = "No"; value = 0; };
};
};
class RemoveDeadBodiesDisconnected {
displayName = "Remove bodies?";
description = "Remove player bodies after disconnect?";
typeName = "BOOL";
class values {
class Yes { default = 1; name = "Yes"; value = 1; };
class No { name = "No"; value = 0; };
@ -30,7 +34,7 @@ class CfgVehicles {
};
};
class ACE_ModuleFriendlyFire : Module_F {
class ACE_ModuleFriendlyFire: Module_F {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "Friendly Fire Messages";
@ -38,11 +42,11 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa));
class Arguments {
};
class Arguments {};
};
class ACE_ModuleRallypoint : Module_F {
class ACE_ModuleRallypoint: Module_F {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "Rallypoint System";
@ -50,174 +54,8 @@ class CfgVehicles {
scope = 2;
isGlobal = 1;
icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa));
class Arguments {
};
};
// rallypoints
class FlagCarrier;
class Flag_NATO_F : FlagCarrier {
class ACE_Actions;
};
class Flag_CSAT_F : FlagCarrier {
class ACE_Actions;
};
class Flag_AAF_F : FlagCarrier {
class ACE_Actions;
};
// static
class ACE_Rallypoint_West : Flag_NATO_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "Rallypoint West Base";
vehicleClass = QGVAR(Rallypoints);
class EventHandlers {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint));
};
class ACE_Actions : ACE_Actions {
class ACE_MainActions {
distance = 5;
condition = "true";
selection = "";
class ACE_Teleport {
displayName = "Teleport to Rallypoint";
distance = 4;
condition = QUOTE(side group _player == west);
statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint));
showDisabled = 1;
priority = 1;
};
};
};
};
class ACE_Rallypoint_East : Flag_CSAT_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "Rallypoint East Base";
vehicleClass = QGVAR(Rallypoints);
class EventHandlers {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint));
};
class ACE_Actions : ACE_Actions {
class ACE_MainActions {
distance = 5;
condition = "true";
selection = "";
class ACE_Teleport {
displayName = "Teleport to Rallypoint";
distance = 4;
condition = QUOTE(side group _player == east);
statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint));
showDisabled = 1;
priority = 1;
};
};
};
};
class ACE_Rallypoint_Independent : Flag_AAF_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "Rallypoint Independent Base";
vehicleClass = QGVAR(Rallypoints);
class EventHandlers {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint));
};
class ACE_Actions : ACE_Actions {
class ACE_MainActions {
distance = 5;
condition = "true";
selection = "";
class ACE_Teleport {
displayName = "Teleport to Rallypoint";
distance = 4;
condition = QUOTE(side group _player == independent);
statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint));
showDisabled = 1;
priority = 1;
};
};
};
};
// moveable
class ACE_RallypointExit_West : Flag_NATO_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "Rallypoint West";
vehicleClass = QGVAR(Rallypoints);
class EventHandlers {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint));
};
class ACE_Actions : ACE_Actions {
class ACE_MainActions {
distance = 5;
condition = "true";
selection = "";
class ACE_Teleport {
displayName = "Teleport to Base";
distance = 4;
condition = QUOTE(side group _player == west);
statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint));
showDisabled = 1;
priority = 1;
};
};
};
};
class ACE_RallypointExit_East : Flag_CSAT_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "Rallypoint East";
vehicleClass = QGVAR(Rallypoints);
class EventHandlers {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint));
};
class ACE_Actions : ACE_Actions {
class ACE_MainActions {
distance = 5;
condition = "true";
selection = "";
class ACE_Teleport {
displayName = "Teleport to Base";
distance = 4;
condition = QUOTE(side group _player == east);
statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint));
showDisabled = 1;
priority = 1;
};
};
};
};
class ACE_RallypointExit_Independent : Flag_AAF_F {
author = "$STR_ACE_Common_ACETeam";
displayName = "Rallypoint Independent";
vehicleClass = QGVAR(Rallypoints);
class EventHandlers {
init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint));
};
class ACE_Actions : ACE_Actions {
class ACE_MainActions {
distance = 5;
condition = "true";
selection = "";
class ACE_Teleport {
displayName = "Teleport to Base";
distance = 4;
condition = QUOTE(side group _player == independent);
statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint));
showDisabled = 1;
priority = 1;
};
};
};
class Arguments {};
};
// team leader
@ -233,4 +71,140 @@ class CfgVehicles {
};
};
};
// rallypoints
class FlagCarrier;
class Flag_NATO_F: FlagCarrier {
class ACE_Actions;
};
class Flag_CSAT_F: FlagCarrier {
class ACE_Actions;
};
class Flag_AAF_F: FlagCarrier {
class ACE_Actions;
};
// static
class ACE_Rallypoint_West_Base: Flag_NATO_F {
XEH_ENABLED;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Respawn_RallypointWestBase";
vehicleClass = QGVAR(Rallypoints);
class ACE_Actions: ACE_Actions {
class ACE_Teleport {
displayName = "$STR_ACE_Respawn_TeleportedToRallypoint";
distance = 4;
condition = QUOTE(side group _player == west);
statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_West')] call FUNC(teleportToRallypoint));
position = "[0,0,-1]";
showDisabled = 1;
priority = 1;
};
};
};
class ACE_Rallypoint_East_Base: Flag_CSAT_F {
XEH_ENABLED;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Respawn_RallypointEastBase";
vehicleClass = QGVAR(Rallypoints);
class ACE_Actions: ACE_Actions {
class ACE_Teleport {
displayName = "$STR_ACE_Respawn_TeleportedToRallypoint";
distance = 4;
condition = QUOTE(side group _player == east);
statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_East')] call FUNC(teleportToRallypoint));
position = "[0,0,-1]";
showDisabled = 1;
priority = 1;
};
};
};
class ACE_Rallypoint_Independent_Base: Flag_AAF_F {
XEH_ENABLED;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Respawn_RallypointIndependentBase";
vehicleClass = QGVAR(Rallypoints);
class ACE_Actions: ACE_Actions {
class ACE_Teleport {
displayName = "$STR_ACE_Respawn_TeleportedToRallypoint";
distance = 4;
condition = QUOTE(side group _player == independent);
statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_Independent')] call FUNC(teleportToRallypoint));
position = "[0,0,-1]";
showDisabled = 1;
priority = 1;
};
};
};
// moveable
class ACE_Rallypoint_West: Flag_NATO_F {
XEH_ENABLED;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Respawn_RallypointWest";
vehicleClass = QGVAR(Rallypoints);
class ACE_Actions: ACE_Actions {
class ACE_Teleport {
displayName = "$STR_ACE_Respawn_TeleportedToBase";
distance = 4;
condition = QUOTE(side group _player == west);
statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_West_Base')] call FUNC(teleportToRallypoint));
position = "[0,0,-1]";
showDisabled = 1;
priority = 1;
};
};
};
class ACE_Rallypoint_East: Flag_CSAT_F {
XEH_ENABLED;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Respawn_RallypointEast";
vehicleClass = QGVAR(Rallypoints);
class ACE_Actions: ACE_Actions {
class ACE_Teleport {
displayName = "$STR_ACE_Respawn_TeleportedToBase";
distance = 4;
condition = QUOTE(side group _player == east);
statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_East_Base')] call FUNC(teleportToRallypoint));
position = "[0,0,-1]";
showDisabled = 1;
priority = 1;
};
};
};
class ACE_Rallypoint_Independent: Flag_AAF_F {
XEH_ENABLED;
author = "$STR_ACE_Common_ACETeam";
displayName = "$STR_ACE_Respawn_RallypointIndependent";
vehicleClass = QGVAR(Rallypoints);
class ACE_Actions: ACE_Actions {
class ACE_Teleport {
displayName = "$STR_ACE_Respawn_TeleportedToBase";
distance = 4;
condition = QUOTE(side group _player == independent);
statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_Independent_Base')] call FUNC(teleportToRallypoint));
position = "[0,0,-1]";
showDisabled = 1;
priority = 1;
};
};
};
};

View File

@ -0,0 +1,5 @@
// by commy2
#include "script_component.hpp"
["rallypointMoved", {_this call FUNC(updateRallypoint)}] call EFUNC(common,addEventhandler);
["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); // hide enemy rallypoint markers

View File

@ -4,7 +4,9 @@ ADDON = false;
PREP(canMoveRallypoint);
PREP(handleKilled);
PREP(handlePlayerChanged);
PREP(handleRespawn);
PREP(handleInitPostServer);
PREP(initRallypoint);
PREP(module);
PREP(moduleFriendlyFire);
@ -15,5 +17,6 @@ PREP(removeDisconnectedPlayer);
PREP(restoreGear);
PREP(showFriendlyFireMessage);
PREP(teleportToRallypoint);
PREP(updateRallypoint);
ADDON = true;

View File

@ -0,0 +1,54 @@
// by commy2
// execute on server only!
#include "script_component.hpp"
private "_unit";
_unit = _this select 0;
private ["_group0", "_rallypoint"];
_group0 = group _unit; // _group is a reserved veriable and shouldn't be used
_rallypoint = [
objNull,
missionNamespace getVariable ["ACE_Rallypoint_West", objNull],
missionNamespace getVariable ["ACE_Rallypoint_East", objNull],
missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]
] select ([west, east, independent] find side _group0) + 1;
// exit if no moveable rallypoint is placed for that side
if (isNull _rallypoint) exitWith {};
// find leader
private "_leaderVarName";
_leaderVarName = _group0 getVariable [QGVAR(leaderVarName), ""];
// exit if group already has a playable slot assigned as rallypoint leader
if (_leaderVarName != "") exitWith {
// assign JIP unit as rallypoint leader
if (str _unit == _leaderVarName) then {
_unit setVariable ["ACE_canMoveRallypoint", true, true];
};
};
// treat group leader
_unit = leader _group0;
_leaderVarName = vehicleVarName _unit;
if (_leaderVarName == "") then {
private "_leaderID";
_leaderID = GETGVAR(NextLeaderID,0);
_leaderVarName = format [QUOTE(ACE_Rallypoint_Leader_%1), _leaderID];
_unit setVehicleVarName _leaderVarName;
GVAR(NextLeaderID) = _leaderID + 1;
};
// prevent group from getting multiple leaders; use this to assign rallypoint moving ability on JIP
_group0 setVariable [QGVAR(leaderVarName), _leaderVarName];
_unit setVariable ["ACE_canMoveRallypoint", true, true];

View File

@ -0,0 +1,44 @@
// by commy2
#include "script_component.hpp"
private "_newUnit";
_newUnit = _this select 0;
switch (side group _newUnit) do {
case (west): {
((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1;
((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1;
((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
};
case (east): {
((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1;
((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1;
((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
};
case (independent): {
((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1;
((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1;
};
default {
((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0;
};
};

View File

@ -25,3 +25,8 @@ _respawnedUnit = _this select 0;
if (GVAR(SavePreDeathGear)) then {
[_respawnedUnit, GVAR(unitGear)] call FUNC(restoreGear);
};
// fix for setVariable public being lost on respawn for machines that JIP after the command was broadcasted
if (_respawnedUnit getVariable ["ACE_canMoveRallypoint", false]) then {
_respawnedUnit setVariable ["ACE_canMoveRallypoint", true, true];
};

View File

@ -16,17 +16,58 @@
#include "script_component.hpp"
private ["_rallypoint", "_name"];
private ["_rallypoint", "_respawnMarker", "_side"];
_rallypoint = _this select 0;
_respawnMarker = _this select 1;
_side = _this select 2;
if (!local _rallypoint) exitWith {};
private "_name";
_name = typeOf _rallypoint;
// init visible marker
if (hasInterface) then {
// fix init having wrong position, vars etc.
[_rallypoint, _respawnMarker, _side, _name] spawn {
_rallypoint = _this select 0;
_respawnMarker = _this select 1;
_side = _this select 2;
_name = _this select 3;
_marker = format ["ACE_Marker_%1", _name];
// exit if it already exist
if (_marker in allMapMarkers) exitWith {};
_marker = createMarkerLocal [_marker, getPosASL _rallypoint];
_type = ["selector_selectedFriendly", "selector_selectedEnemy"] select (_respawnMarker == "");
_marker setMarkerTypeLocal _type;
_marker setMarkerAlphaLocal ([0,1] select (_side == playerSide)); // playerSide to guarantee init
private "_markerDate";
_markerDate = _rallypoint getVariable [QGVAR(markerDate), ""];
_marker setMarkerTextLocal _markerDate;
_rallypoint setVariable [QGVAR(marker), _marker];
};
};
if (!isServer) exitWith {};
if (isNil _name) then {
missionNamespace setVariable [_name, _rallypoint];
publicVariable _name;
_rallypoint setVariable [QGVAR(side), _side, true];
if (_respawnMarker != "" && {!(_respawnMarker in allMapMarkers)}) then {
createMarker [_respawnMarker, _rallypoint];
};
["rallypointMoved", [_rallypoint, _side]] call EFUNC(common,globalEvent);
} else {
deleteVehicle _rallypoint;
diag_log text "[ACE] Respawn: ERROR Multiple Rallypoints of same type.";

View File

@ -26,8 +26,8 @@ _this spawn {
_rallypoint = [
objNull,
missionNamespace getVariable ["ACE_Rallypoint_West", objNull],
missionNamespace getVariable ["ACE_RallypointExit_East", objNull],
missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull]
missionNamespace getVariable ["ACE_Rallypoint_East", objNull],
missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]
] select ([west, east, independent] find _side) + 1;
if (isNull _rallypoint) exitWith {};
@ -44,11 +44,9 @@ _this spawn {
_rallypoint setPosATL _position;
_unit reveal _rallypoint;
/*
_marker = format ["AGM_RallyPoint_%1", _side];
_marker setMarkerPos _position;
_marker setMarkerTextLocal format ["%1:%2", [date select 3, 2, 0] call CBA_fnc_FORMATNumber, [date select 4, 2, 0] call CBA_fnc_FORMATNumber];
*/
_rallypoint setVariable [QGVAR(markerDate), format ["%1:%2", date select 3, date select 4], true];
[localize "STR_ACE_Respawn_Deploy"] call EFUNC(common,displayTextStructured);
["rallypointMoved", [_rallypoint, _side, _position]] call EFUNC(common,globalEvent);
[localize "STR_ACE_Respawn_Deployed"] call EFUNC(common,displayTextStructured);
};

View File

@ -76,6 +76,8 @@ if (_goggles != "") then {
_unit addItemToVest _x;
}forEach _vestitems;
private "_flagRemoveDummyBag";
_flagRemoveDummyBag = false;
if(format["%1", _backpack] != "") then {
_unit addBackpack _backpack;
@ -87,6 +89,12 @@ if(format["%1", _backpack] != "") then {
{
_unit addItemToBackpack _x;
} forEach _backpackitems;
} else {
// dummy backpack to ensure mags being loaded
_unit addBackpack "B_Kitbag_Base";
_flagRemoveDummyBag = true;
};
@ -138,6 +146,12 @@ if (_handgunweapon != "") then {
};
// remove dummy bagpack
if (_flagRemoveDummyBag) then {
removeBackpack _unit;
};
_assignedItems = _assignedItems - [_binocular];
// items

View File

@ -18,30 +18,19 @@
#include "script_component.hpp"
private ["_unit", "_side", "_toBase", "_rallypoint"];
private ["_unit", "_side", "_rallypoint", "_toBase"];
_unit = _this select 0;
_side = _this select 1;
_toBase = _this select 2;
_rallypoint = _this select 2;
// rallypoint names are defined in CfgVehicles.hpp
_rallypoint = ([
[
objNull,
missionNamespace getVariable ["ACE_RallypointExit_West", objNull],
missionNamespace getVariable ["ACE_RallypointExit_East", objNull],
missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull]
],
[
objNull,
missionNamespace getVariable ["ACE_Rallypoint_West", objNull],
missionNamespace getVariable ["ACE_Rallypoint_East", objNull],
missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]
]
] select _toBase) select ([west, east, independent] find _side) + 1;
_toBase = _rallypoint find "_Base" != -1;
_rallypoint = missionNamespace getVariable [_rallypoint, objNull],
if (isNull _rallypoint) exitWith {};
_unit setPosASL (getPosASL _rallypoint);
_unit setPosASL getPosASL _rallypoint;
[[localize "STR_ACE_Respawn_TeleportedToRallypoint", localize "STR_ACE_Respawn_TeleportedToBase"] select _toBase] call EFUNC(common,displayTextStructured);

View File

@ -0,0 +1,18 @@
// by commy2
#include "script_component.hpp"
private ["_rallypoint", "_side", "_position"];
_rallypoint = _this select 0;
_side = _this select 1;
_position = _this select 2;
if (!hasInterface) exitWith {};
private ["_marker", "_markerDate"];
_marker = _rallypoint getVariable [QGVAR(marker), ""];
_markerDate = _rallypoint getVariable [QGVAR(markerDate), ""];
_marker setMarkerPosLocal _position;
_marker setMarkerTextLocal _markerDate;

View File

@ -41,5 +41,29 @@
<Czech>Odteleportován na rallypoint</Czech>
<Hungarian>Gyülekezőpontra teleportálva</Hungarian>
</Key>
<Key ID="STR_ACE_Respawn_RallypointWestBase">
<English>Rallypoint West (Base)</English>
<German>Sammelpunkt West (Basis)</German>
</Key>
<Key ID="STR_ACE_Respawn_RallypointEastBase">
<English>Rallypoint East (Base)</English>
<German>Sammelpunkt Ost (Basis)</German>
</Key>
<Key ID="STR_ACE_Respawn_RallypointIndependentBase">
<English>Rallypoint Independent (Base)</English>
<German>Sammelpunkt Widerstand (Basis)</German>
</Key>
<Key ID="STR_ACE_Respawn_RallypointWest">
<English>Rallypoint West</English>
<German>Sammelpunkt West</German>
</Key>
<Key ID="STR_ACE_Respawn_RallypointEast">
<English>Rallypoint East</English>
<German>Sammelpunkt Ost</German>
</Key>
<Key ID="STR_ACE_Respawn_RallypointIndependent">
<English>Rallypoint Independent</English>
<German>Sammelpunkt Widerstand</German>
</Key>
</Package>
</Project>