mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge remote-tracking branch 'origin/agmRespawnPort'
This commit is contained in:
commit
c85cc6a15e
@ -1,281 +0,0 @@
|
|||||||
class CfgPatches {
|
|
||||||
class AGM_Respawn {
|
|
||||||
units[] = {};
|
|
||||||
weapons[] = {"AGM_Rallypoint_West", "AGM_Rallypoint_East", "AGM_Rallypoint_Independent", "AGM_RallypointExit_West", "AGM_RallypointExit_East", "AGM_RallypointExit_Independent"};
|
|
||||||
requiredVersion = 0.60;
|
|
||||||
requiredAddons[] = {AGM_Core};
|
|
||||||
version = "0.95";
|
|
||||||
versionStr = "0.95";
|
|
||||||
versionAr[] = {0,95,0};
|
|
||||||
author[] = {"bux578", "commy2"};
|
|
||||||
authorUrl = "https://github.com/bux578/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgFunctions {
|
|
||||||
class AGM_Respawn {
|
|
||||||
class AGM_Respawn {
|
|
||||||
file = "AGM_Respawn\functions";
|
|
||||||
class canMoveRallypoint;
|
|
||||||
class getAllGear;
|
|
||||||
class handleKilled;
|
|
||||||
class handleRespawn;
|
|
||||||
class initRallypoint;
|
|
||||||
class module;
|
|
||||||
class moduleFriendlyFire;
|
|
||||||
class moduleRallypoint;
|
|
||||||
class moveRallypoint;
|
|
||||||
class removeBody;
|
|
||||||
class removeDisconnectedPlayer;
|
|
||||||
class restoreGear;
|
|
||||||
class showFriendlyFireMessage;
|
|
||||||
class teleportToRallypoint;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class Extended_Killed_EventHandlers {
|
|
||||||
class CAManBase {
|
|
||||||
class AGM_Respawn_HandleGear {
|
|
||||||
killed = "_this call AGM_Respawn_fnc_handleKilled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
class Extended_Respawn_EventHandlers {
|
|
||||||
class CAManBase {
|
|
||||||
class AGM_Respawn_HandleGear {
|
|
||||||
respawn = "_this call AGM_Respawn_fnc_handleRespawn";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgAddons {
|
|
||||||
class AGM_Respawn_Rallypoints {
|
|
||||||
list[] = {"AGM_Rallypoint_West", "AGM_Rallypoint_East", "AGM_Rallypoint_Independent", "AGM_RallypointExit_West", "AGM_RallypointExit_East", "AGM_RallypointExit_Independent"};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgVehicleClasses {
|
|
||||||
class AGM_Respawn_Rallypoints {
|
|
||||||
displayName = "AGM Respawn";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class CfgVehicles {
|
|
||||||
class Module_F;
|
|
||||||
class AGM_ModuleRespawn: Module_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
category = "AGM";
|
|
||||||
displayName = "Respawn System";
|
|
||||||
function = "AGM_Respawn_fnc_module";
|
|
||||||
scope = 2;
|
|
||||||
isGlobal = 1;
|
|
||||||
icon = "\AGM_Respawn\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 RemoveDeadBodiesDisonncected {
|
|
||||||
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; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
/*class BodyRemoveTimer {
|
|
||||||
displayName = "Time to remove bodies.";
|
|
||||||
description = "The amount of time (in seconds) after that a unit's body gets removed. Default: 90";
|
|
||||||
typeName = "NUMBER";
|
|
||||||
defaultValue = 90;
|
|
||||||
};*/
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_ModuleFriendlyFire: Module_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
category = "AGM";
|
|
||||||
displayName = "Friendly Fire Messages";
|
|
||||||
function = "AGM_Respawn_fnc_moduleFriendlyFire";
|
|
||||||
scope = 2;
|
|
||||||
isGlobal = 1;
|
|
||||||
icon = "\AGM_Respawn\UI\Icon_Module_FriendlyFire_ca.paa";
|
|
||||||
class Arguments {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_ModuleRallypoint: Module_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
category = "AGM";
|
|
||||||
displayName = "Rallypoint System";
|
|
||||||
function = "AGM_Respawn_fnc_moduleRallypoint";
|
|
||||||
scope = 2;
|
|
||||||
isGlobal = 1;
|
|
||||||
icon = "\AGM_Respawn\UI\Icon_Module_Rallypoint_ca.paa";
|
|
||||||
class Arguments {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// rallypoints
|
|
||||||
class FlagCarrier;
|
|
||||||
class Flag_NATO_F: FlagCarrier {
|
|
||||||
class AGM_Actions;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Flag_CSAT_F: FlagCarrier {
|
|
||||||
class AGM_Actions;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Flag_AAF_F: FlagCarrier {
|
|
||||||
class AGM_Actions;
|
|
||||||
};
|
|
||||||
|
|
||||||
// static
|
|
||||||
class AGM_Rallypoint_West: Flag_NATO_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
displayName = "Rallypoint West Base";
|
|
||||||
vehicleClass = "AGM_Respawn_Rallypoints";
|
|
||||||
|
|
||||||
class EventHandlers {
|
|
||||||
init = "(_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call AGM_Respawn_fnc_initRallypoint";
|
|
||||||
};
|
|
||||||
class AGM_Actions: AGM_Actions {
|
|
||||||
class AGM_Teleport {
|
|
||||||
displayName = "Teleport to Rallypoint";
|
|
||||||
distance = 4;
|
|
||||||
condition = "side group _player == west";
|
|
||||||
statement = "[_player, side group _player, false] call AGM_Respawn_fnc_teleportToRallypoint;";
|
|
||||||
showDisabled = 1;
|
|
||||||
priority = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_Rallypoint_East: Flag_CSAT_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
displayName = "Rallypoint East Base";
|
|
||||||
vehicleClass = "AGM_Respawn_Rallypoints";
|
|
||||||
|
|
||||||
class EventHandlers {
|
|
||||||
init = "(_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call AGM_Respawn_fnc_initRallypoint";
|
|
||||||
};
|
|
||||||
class AGM_Actions: AGM_Actions {
|
|
||||||
class AGM_Teleport {
|
|
||||||
displayName = "Teleport to Rallypoint";
|
|
||||||
distance = 4;
|
|
||||||
condition = "side group _player == east";
|
|
||||||
statement = "[_player, side group _player, false] call AGM_Respawn_fnc_teleportToRallypoint;";
|
|
||||||
showDisabled = 1;
|
|
||||||
priority = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_Rallypoint_Independent: Flag_AAF_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
displayName = "Rallypoint Independent Base";
|
|
||||||
vehicleClass = "AGM_Respawn_Rallypoints";
|
|
||||||
|
|
||||||
class EventHandlers {
|
|
||||||
init = "(_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call AGM_Respawn_fnc_initRallypoint";
|
|
||||||
};
|
|
||||||
class AGM_Actions: AGM_Actions {
|
|
||||||
class AGM_Teleport {
|
|
||||||
displayName = "Teleport to Rallypoint";
|
|
||||||
distance = 4;
|
|
||||||
condition = "side group _player == independent";
|
|
||||||
statement = "[_player, side group _player, false] call AGM_Respawn_fnc_teleportToRallypoint;";
|
|
||||||
showDisabled = 1;
|
|
||||||
priority = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// moveable
|
|
||||||
class AGM_RallypointExit_West: Flag_NATO_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
displayName = "Rallypoint West";
|
|
||||||
vehicleClass = "AGM_Respawn_Rallypoints";
|
|
||||||
|
|
||||||
class EventHandlers {
|
|
||||||
init = "(_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call AGM_Respawn_fnc_initRallypoint";
|
|
||||||
};
|
|
||||||
class AGM_Actions: AGM_Actions {
|
|
||||||
class AGM_Teleport {
|
|
||||||
displayName = "Teleport to Base";
|
|
||||||
distance = 4;
|
|
||||||
condition = "side group _player == west";
|
|
||||||
statement = "[_player, side group _player, true] call AGM_Respawn_fnc_teleportToRallypoint;";
|
|
||||||
showDisabled = 1;
|
|
||||||
priority = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_RallypointExit_East: Flag_CSAT_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
displayName = "Rallypoint East";
|
|
||||||
vehicleClass = "AGM_Respawn_Rallypoints";
|
|
||||||
|
|
||||||
class EventHandlers {
|
|
||||||
init = "(_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call AGM_Respawn_fnc_initRallypoint";
|
|
||||||
};
|
|
||||||
class AGM_Actions: AGM_Actions {
|
|
||||||
class AGM_Teleport {
|
|
||||||
displayName = "Teleport to Base";
|
|
||||||
distance = 4;
|
|
||||||
condition = "side group _player == east";
|
|
||||||
statement = "[_player, side group _player, true] call AGM_Respawn_fnc_teleportToRallypoint;";
|
|
||||||
showDisabled = 1;
|
|
||||||
priority = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_RallypointExit_Independent: Flag_AAF_F {
|
|
||||||
author = "$STR_AGM_Core_AGMTeam";
|
|
||||||
displayName = "Rallypoint Independent";
|
|
||||||
vehicleClass = "AGM_Respawn_Rallypoints";
|
|
||||||
|
|
||||||
class EventHandlers {
|
|
||||||
init = "(_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call AGM_Respawn_fnc_initRallypoint";
|
|
||||||
};
|
|
||||||
class AGM_Actions: AGM_Actions {
|
|
||||||
class AGM_Teleport {
|
|
||||||
displayName = "Teleport to Base";
|
|
||||||
distance = 4;
|
|
||||||
condition = "side group _player == independent";
|
|
||||||
statement = "[_player, side group _player, true] call AGM_Respawn_fnc_teleportToRallypoint;";
|
|
||||||
showDisabled = 1;
|
|
||||||
priority = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// team leader
|
|
||||||
class Man;
|
|
||||||
class CAManBase: Man {
|
|
||||||
class AGM_SelfActions {
|
|
||||||
class AGM_MoveRallypoint {
|
|
||||||
displayName = "Move Rallypoint";
|
|
||||||
condition = "[_player, side group _player] call AGM_Respawn_fnc_canMoveRallypoint";
|
|
||||||
statement = "[_player, side group _player] call AGM_Respawn_fnc_moveRallypoint";
|
|
||||||
showDisabled = 0;
|
|
||||||
priority = -0.5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class AGM_Parameters_Boolean {
|
|
||||||
// Boolean Parameters (0/1)
|
|
||||||
AGM_Respawn_SavePreDeathGear = 0;
|
|
||||||
AGM_Respawn_RemoveDeadBodiesDisonncected = 1;
|
|
||||||
};
|
|
@ -1,14 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private ["_unit", "_side"];
|
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
_side = _this select 1;
|
|
||||||
|
|
||||||
_unit getVariable ["AGM_canMoveRallypoint", false]
|
|
||||||
&& {!isNull ([
|
|
||||||
objNull,
|
|
||||||
missionNamespace getVariable ["AGM_Rallypoint_West", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_Rallypoint_East", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_Rallypoint_Independent", objNull]
|
|
||||||
] select ([west, east, independent] find _side) + 1)}
|
|
@ -1,40 +0,0 @@
|
|||||||
/*
|
|
||||||
Author: bux578
|
|
||||||
|
|
||||||
Description:
|
|
||||||
Returns an array containing all items of a given unit
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
A player object
|
|
||||||
|
|
||||||
Return value:
|
|
||||||
An array containing all inventory items
|
|
||||||
*/
|
|
||||||
|
|
||||||
private ["_unit", "_allGear"];
|
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
|
|
||||||
_allGear = [
|
|
||||||
(headgear _unit),
|
|
||||||
(goggles _unit),
|
|
||||||
(uniform _unit),
|
|
||||||
(uniformItems _unit),
|
|
||||||
(vest _unit),
|
|
||||||
(vestItems _unit),
|
|
||||||
(backpack _unit),
|
|
||||||
(backpackItems _unit),
|
|
||||||
(primaryWeapon _unit),
|
|
||||||
(primaryWeaponItems _unit),
|
|
||||||
(primaryWeaponMagazine _unit),
|
|
||||||
(secondaryWeapon _unit),
|
|
||||||
(secondaryWeaponItems _unit),
|
|
||||||
(secondaryWeaponMagazine _unit),
|
|
||||||
(handgunWeapon _unit),
|
|
||||||
(handgunItems _unit),
|
|
||||||
(handgunMagazine _unit),
|
|
||||||
(assignedItems _unit),
|
|
||||||
(binocular _unit)
|
|
||||||
];
|
|
||||||
|
|
||||||
_allGear
|
|
@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
Name: AGM_Respawn_fnc_handleKilled
|
|
||||||
|
|
||||||
Author(s):
|
|
||||||
bux578
|
|
||||||
|
|
||||||
Description:
|
|
||||||
Handles the XEH Killed event
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
0: OBJECT - Killed unit
|
|
||||||
1: OBJECT - Attacker
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
VOID
|
|
||||||
*/
|
|
||||||
|
|
||||||
private ["_killedUnit"];
|
|
||||||
|
|
||||||
_killedUnit = _this select 0;
|
|
||||||
|
|
||||||
// Saves the gear when the player is killed
|
|
||||||
AGM_Respawn_unitGear = [];
|
|
||||||
|
|
||||||
if (AGM_Respawn_SavePreDeathGear) then {
|
|
||||||
AGM_Respawn_unitGear = [_killedUnit] call AGM_Respawn_fnc_getAllGear;
|
|
||||||
};
|
|
||||||
|
|
||||||
if (missionNamespace getVariable ["AGM_showFriendlyFireMessage", false]) then {
|
|
||||||
[_this, "AGM_Respawn_fnc_showFriendlyFireMessage", 2] call AGM_Core_fnc_execRemoteFnc;
|
|
||||||
};
|
|
@ -1,17 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private ["_rallypoint", "_name"];
|
|
||||||
|
|
||||||
_rallypoint = _this select 0;
|
|
||||||
|
|
||||||
if (!local _rallypoint) exitWith {};
|
|
||||||
|
|
||||||
_name = typeOf _rallypoint;
|
|
||||||
|
|
||||||
if (isNil _name) then {
|
|
||||||
missionNamespace setVariable [_name, _rallypoint];
|
|
||||||
publicVariable _name;
|
|
||||||
} else {
|
|
||||||
deleteVehicle _rallypoint;
|
|
||||||
diag_log text "[AGM] Respawn: ERROR Multiple Rallypoints of same type.";
|
|
||||||
};
|
|
@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: KoffeinFlummi, bux578, CAA-Picard, commy2
|
|
||||||
*
|
|
||||||
* Initializes the respawn module.
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* Whatever the module provides. (I dunno.)
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*/
|
|
||||||
if !(isServer) exitWith {};
|
|
||||||
|
|
||||||
_logic = _this select 0;
|
|
||||||
_activated = _this select 2;
|
|
||||||
|
|
||||||
if !(_activated) exitWith {};
|
|
||||||
|
|
||||||
AGM_Respawn_Module = true;
|
|
||||||
|
|
||||||
[_logic, "AGM_Respawn_SavePreDeathGear", "SavePreDeathGear"] call AGM_Core_fnc_readBooleanParameterFromModule;
|
|
||||||
[_logic, "AGM_Respawn_RemoveDeadBodiesDisonncected", "RemoveDeadBodiesDisonncected"] call AGM_Core_fnc_readBooleanParameterFromModule;
|
|
||||||
|
|
||||||
if (isServer) then {
|
|
||||||
if (AGM_Respawn_RemoveDeadBodiesDisonncected) then {
|
|
||||||
_fnc_deleteDisconnected = {
|
|
||||||
_this spawn {
|
|
||||||
_unit = _this select 0;
|
|
||||||
|
|
||||||
sleep 4;
|
|
||||||
|
|
||||||
if (!alive _unit) then {
|
|
||||||
deleteVehicle _unit;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
false
|
|
||||||
};
|
|
||||||
|
|
||||||
addMissionEventHandler ["HandleDisconnect", _fnc_deleteDisconnected];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
diag_log text "[AGM]: Respawn Module Initialized.";
|
|
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: commy2
|
|
||||||
*
|
|
||||||
* Initializes the Friendly Fire Messages module.
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* Whatever the module provides. (I dunno.)
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*/
|
|
||||||
|
|
||||||
_this spawn {
|
|
||||||
_logic = _this select 0;
|
|
||||||
_units = _this select 1;
|
|
||||||
_activated = _this select 2;
|
|
||||||
|
|
||||||
if !(_activated) exitWith {};
|
|
||||||
|
|
||||||
if (isServer) then {
|
|
||||||
_varName = "AGM_showFriendlyFireMessage";
|
|
||||||
|
|
||||||
missionNamespace setVariable [_varName, true];
|
|
||||||
publicVariable _varName;
|
|
||||||
};
|
|
||||||
|
|
||||||
diag_log text "[AGM]: Friendly Fire Messages Module Initialized.";
|
|
||||||
};
|
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: commy2
|
|
||||||
*
|
|
||||||
* Initializes the Rallypoint module.
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* Whatever the module provides. (I dunno.)
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*/
|
|
||||||
|
|
||||||
_logic = _this select 0;
|
|
||||||
_units = _this select 1;
|
|
||||||
_activated = _this select 2;
|
|
||||||
|
|
||||||
if !(_activated) exitWith {};
|
|
||||||
|
|
||||||
//_mode = parseNumber (_logic getVariable "Action");
|
|
||||||
|
|
||||||
{
|
|
||||||
_x setVariable ["AGM_canMoveRallypoint", true];
|
|
||||||
} forEach _units;
|
|
||||||
|
|
||||||
diag_log text "[AGM]: Rallypoint Module Initialized.";
|
|
@ -1,35 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
_this spawn {
|
|
||||||
_unit = _this select 0;
|
|
||||||
_side = _this select 1;
|
|
||||||
|
|
||||||
_rallypoint = [
|
|
||||||
objNull,
|
|
||||||
missionNamespace getVariable ["AGM_RallypointExit_West", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_RallypointExit_East", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_RallypointExit_Independent", objNull]
|
|
||||||
] select ([west, east, independent] find _side) + 1;
|
|
||||||
|
|
||||||
if (isNull _rallypoint) exitWith {};
|
|
||||||
|
|
||||||
_position = getPosATL _unit;
|
|
||||||
_position = _position findEmptyPosition [0, 2, typeOf _rallypoint];
|
|
||||||
if (count _position == 0) then {_position = getPosATL _unit};
|
|
||||||
|
|
||||||
_position set [2, 0];
|
|
||||||
|
|
||||||
["Deploy in 5 seconds ..."] call AGM_Core_fnc_displayTextStructured;
|
|
||||||
|
|
||||||
sleep 5;
|
|
||||||
_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 deployed"] call AGM_Core_fnc_displayTextStructured;
|
|
||||||
};
|
|
@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Author: bux578
|
|
||||||
*
|
|
||||||
* removes the body
|
|
||||||
*
|
|
||||||
* Arguments:
|
|
||||||
* The body
|
|
||||||
*
|
|
||||||
* Return Value:
|
|
||||||
* None
|
|
||||||
*/
|
|
||||||
|
|
||||||
private ["_body", "_forceRemove", "_bodyRemoveTimer"];
|
|
||||||
|
|
||||||
_body = _this select 0;
|
|
||||||
_forceRemove = _this select 1;
|
|
||||||
|
|
||||||
_bodyRemoveTimer = AGM_Respawn_BodyRemoveTimer max 0;
|
|
||||||
|
|
||||||
// could be used for SpecOps missions.
|
|
||||||
if (_forceRemove) then {
|
|
||||||
_bodyRemoveTimer = 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
[_body, _bodyRemoveTimer] spawn {
|
|
||||||
sleep (_this select 1);
|
|
||||||
// hideBody takes ~20s till body is fully underground
|
|
||||||
// a better hideBody would make this more aesthetic
|
|
||||||
deleteVehicle (_this select 0);
|
|
||||||
};
|
|
@ -1,15 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private ["_forceRemove", "_body"];
|
|
||||||
|
|
||||||
_forceRemove = _this select 0;
|
|
||||||
|
|
||||||
{
|
|
||||||
if (getPlayerUID _x == _uid) exitWith {
|
|
||||||
_body = _x;
|
|
||||||
};
|
|
||||||
} forEach playableUnits;
|
|
||||||
|
|
||||||
if (!isNil "_body" && {!alive _body}) then {
|
|
||||||
[_body, _forceRemove] call AGM_Respawn_fnc_removeBody;
|
|
||||||
};
|
|
@ -1,12 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private ["_unit", "_killer"];
|
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
_killer = _this select 1;
|
|
||||||
|
|
||||||
if (_unit != _killer && side group _unit in [side group AGM_player, civilian] && {side group _killer == side group AGM_player}) then {
|
|
||||||
systemChat format ["%1 was killed by %2", [_unit] call AGM_Core_fnc_getName, [_killer] call AGM_Core_fnc_getName];
|
|
||||||
|
|
||||||
[_unit, "killedByFriendly", [_unit, _killer]] call AGM_Core_fnc_callCustomEventHandlers;
|
|
||||||
};
|
|
@ -1,27 +0,0 @@
|
|||||||
// by commy2
|
|
||||||
|
|
||||||
private ["_unit", "_side", "_toBase", "_rallypoint"];
|
|
||||||
|
|
||||||
_unit = _this select 0;
|
|
||||||
_side = _this select 1;
|
|
||||||
_toBase = _this select 2;
|
|
||||||
|
|
||||||
_rallypoint = ([
|
|
||||||
[
|
|
||||||
objNull,
|
|
||||||
missionNamespace getVariable ["AGM_RallypointExit_West", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_RallypointExit_East", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_RallypointExit_Independent", objNull]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
objNull,
|
|
||||||
missionNamespace getVariable ["AGM_Rallypoint_West", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_Rallypoint_East", objNull],
|
|
||||||
missionNamespace getVariable ["AGM_Rallypoint_Independent", objNull]
|
|
||||||
]
|
|
||||||
] select _toBase) select ([west, east, independent] find _side) + 1;
|
|
||||||
|
|
||||||
if (isNull _rallypoint) exitWith {};
|
|
||||||
|
|
||||||
_unit setPosASL (getPosASL _rallypoint);
|
|
||||||
[["Teleported to Rallypoint", "Teleported to Base"] select _toBase] call AGM_Core_fnc_displayTextStructured;
|
|
5
addons/respawn/CfgAddons.hpp
Normal file
5
addons/respawn/CfgAddons.hpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class CfgAddons {
|
||||||
|
class GVAR(Rallypoints) {
|
||||||
|
list[] = { "ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_RallypointExit_West", "ACE_RallypointExit_East", "ACE_RallypointExit_Independent" };
|
||||||
|
};
|
||||||
|
};
|
20
addons/respawn/CfgEventHandlers.hpp
Normal file
20
addons/respawn/CfgEventHandlers.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
class Extended_PreInit_EventHandlers {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Extended_Killed_EventHandlers {
|
||||||
|
class CAManBase {
|
||||||
|
class GVAR(HandleGear) {
|
||||||
|
killed = QUOTE(_this call FUNC(handleKilled));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class Extended_Respawn_EventHandlers {
|
||||||
|
class CAManBase {
|
||||||
|
class GVAR(HandleGear) {
|
||||||
|
respawn = QUOTE(_this call FUNC(handleRespawn));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
5
addons/respawn/CfgVehicleClasses.hpp
Normal file
5
addons/respawn/CfgVehicleClasses.hpp
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class CfgVehicleClasses {
|
||||||
|
class GVAR(Rallypoints) {
|
||||||
|
displayName = "ACE Respawn";
|
||||||
|
};
|
||||||
|
};
|
206
addons/respawn/CfgVehicles.hpp
Normal file
206
addons/respawn/CfgVehicles.hpp
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
class CfgVehicles {
|
||||||
|
class Module_F;
|
||||||
|
class ACE_ModuleRespawn : Module_F {
|
||||||
|
author = "$STR_ACE_Common_ACETeam";
|
||||||
|
category = "ACE";
|
||||||
|
displayName = "Respawn System";
|
||||||
|
function = QFUNC(module);
|
||||||
|
scope = 2;
|
||||||
|
isGlobal = 1;
|
||||||
|
icon = QUOTE(PATHTOF(UI\IconSwitchUnits_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 RemoveDeadBodiesDisonncected {
|
||||||
|
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; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_ModuleFriendlyFire : Module_F {
|
||||||
|
author = "$STR_ACE_Common_ACETeam";
|
||||||
|
category = "ACE";
|
||||||
|
displayName = "Friendly Fire Messages";
|
||||||
|
function = QFUNC(moduleFriendlyFire);
|
||||||
|
scope = 2;
|
||||||
|
isGlobal = 1;
|
||||||
|
icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa));
|
||||||
|
class Arguments {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_ModuleRallypoint : Module_F {
|
||||||
|
author = "$STR_ACE_Common_ACETeam";
|
||||||
|
category = "ACE";
|
||||||
|
displayName = "Rallypoint System";
|
||||||
|
function = QFUNC(moduleRallypoint);
|
||||||
|
scope = 2;
|
||||||
|
isGlobal = 1;
|
||||||
|
icon = QUOTE(PATHTOF(UI\IconSwitchUnits_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_Teleport {
|
||||||
|
displayName = "Teleport to Rallypoint";
|
||||||
|
distance = 4;
|
||||||
|
condition = QUOTE(side group _player == west);
|
||||||
|
statement = QUOTE([_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_Teleport {
|
||||||
|
displayName = "Teleport to Rallypoint";
|
||||||
|
distance = 4;
|
||||||
|
condition = QUOTE(side group _player == east);
|
||||||
|
statement = QUOTE([_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_Teleport {
|
||||||
|
displayName = "Teleport to Rallypoint";
|
||||||
|
distance = 4;
|
||||||
|
condition = QUOTE(side group _player == independent);
|
||||||
|
statement = QUOTE([_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_Teleport {
|
||||||
|
displayName = "Teleport to Base";
|
||||||
|
distance = 4;
|
||||||
|
condition = QUOTE(side group _player == west);
|
||||||
|
statement = QUOTE([_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_Teleport {
|
||||||
|
displayName = "Teleport to Base";
|
||||||
|
distance = 4;
|
||||||
|
condition = QUOTE(side group _player == east);
|
||||||
|
statement = QUOTE([_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_Teleport {
|
||||||
|
displayName = "Teleport to Base";
|
||||||
|
distance = 4;
|
||||||
|
condition = QUOTE(side group _player == independent);
|
||||||
|
statement = QUOTE([_player, side group _player, true] call FUNC(teleportToRallypoint));
|
||||||
|
showDisabled = 1;
|
||||||
|
priority = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// team leader
|
||||||
|
class Man;
|
||||||
|
class CAManBase : Man {
|
||||||
|
class ACE_SelfActions {
|
||||||
|
class ACE_MoveRallypoint {
|
||||||
|
displayName = "Move Rallypoint";
|
||||||
|
condition = QUOTE([_player, side group _player] call FUNC(canMoveRallypoint));
|
||||||
|
statement = QUOTE([_player, side group _player] call FUNC(moveRallypoint));
|
||||||
|
showDisabled = 0;
|
||||||
|
priority = -0.5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
16
addons/respawn/XEH_preInit.sqf
Normal file
16
addons/respawn/XEH_preInit.sqf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PREP(canMoveRallypoint);
|
||||||
|
PREP(getAllGear);
|
||||||
|
PREP(handleKilled);
|
||||||
|
PREP(handleRespawn);
|
||||||
|
PREP(initRallypoint);
|
||||||
|
PREP(module);
|
||||||
|
PREP(moduleFriendlyFire);
|
||||||
|
PREP(moduleRallypoint);
|
||||||
|
PREP(moveRallypoint);
|
||||||
|
PREP(removeBody);
|
||||||
|
PREP(removeDisconnectedPlayer);
|
||||||
|
PREP(restoreGear);
|
||||||
|
PREP(showFriendlyFireMessage);
|
||||||
|
PREP(teleportToRallypoint);
|
25
addons/respawn/config.cpp
Normal file
25
addons/respawn/config.cpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
class CfgPatches {
|
||||||
|
class ADDON {
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = { "ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_RallypointExit_West", "ACE_RallypointExit_East", "ACE_RallypointExit_Independent" };
|
||||||
|
requiredVersion = 0.60;
|
||||||
|
requiredAddons[] = { "ace_common" };
|
||||||
|
version = QUOTE(VERSION);
|
||||||
|
versionStr = QUOTE(VERSION);
|
||||||
|
versionAr[] = { VERSION_AR };
|
||||||
|
author[] = { "bux578", "commy2" };
|
||||||
|
authorUrl = "https://github.com/bux578/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#include "CfgEventHandlers.hpp"
|
||||||
|
#include "CfgAddons.hpp"
|
||||||
|
#include "CfgVehicleClasses.hpp"
|
||||||
|
#include "CfgVehicles.hpp"
|
||||||
|
|
||||||
|
class ACE_Parameters_Boolean {
|
||||||
|
GVAR(SavePreDeathGear) = 0;
|
||||||
|
GVAR(RemoveDeadBodiesDisconnected) = 1;
|
||||||
|
};
|
33
addons/respawn/functions/fnc_canMoveRallypoint.sqf
Normal file
33
addons/respawn/functions/fnc_canMoveRallypoint.sqf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_canMoveRallypoint
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
checks if a unit can move a rally point
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - unit
|
||||||
|
1: OBJECT - side
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
BOOLEAN
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_side"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
_side = _this select 1;
|
||||||
|
|
||||||
|
// rallypoint names are defined in CfgVehicles.hpp
|
||||||
|
|
||||||
|
_unit getVariable ["ACE_canMoveRallypoint", false]
|
||||||
|
&& {!isNull ([
|
||||||
|
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) + 1)}
|
45
addons/respawn/functions/fnc_getAllGear.sqf
Normal file
45
addons/respawn/functions/fnc_getAllGear.sqf
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_getAllGear
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
bux578
|
||||||
|
|
||||||
|
Description:
|
||||||
|
returns an array containing all items of a given unit
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - unit
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
ARRAY
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_allGear"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
|
||||||
|
_allGear = [
|
||||||
|
(headgear _unit),
|
||||||
|
(goggles _unit),
|
||||||
|
(uniform _unit),
|
||||||
|
(uniformItems _unit),
|
||||||
|
(vest _unit),
|
||||||
|
(vestItems _unit),
|
||||||
|
(backpack _unit),
|
||||||
|
(backpackItems _unit),
|
||||||
|
(primaryWeapon _unit),
|
||||||
|
(primaryWeaponItems _unit),
|
||||||
|
(primaryWeaponMagazine _unit),
|
||||||
|
(secondaryWeapon _unit),
|
||||||
|
(secondaryWeaponItems _unit),
|
||||||
|
(secondaryWeaponMagazine _unit),
|
||||||
|
(handgunWeapon _unit),
|
||||||
|
(handgunItems _unit),
|
||||||
|
(handgunMagazine _unit),
|
||||||
|
(assignedItems _unit),
|
||||||
|
(binocular _unit)
|
||||||
|
];
|
||||||
|
|
||||||
|
_allGear
|
33
addons/respawn/functions/fnc_handleKilled.sqf
Normal file
33
addons/respawn/functions/fnc_handleKilled.sqf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_handleKilled
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
bux578
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Handles the XEH Killed event
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - Killed unit
|
||||||
|
1: OBJECT - Attacker
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_killedUnit"];
|
||||||
|
|
||||||
|
_killedUnit = _this select 0;
|
||||||
|
|
||||||
|
// Saves the gear when the player is killed
|
||||||
|
GVAR(unitGear) = [];
|
||||||
|
|
||||||
|
if (GVAR(SavePreDeathGear)) then {
|
||||||
|
GVAR(unitGear) = [_killedUnit] call FUNC(getAllGear);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (missionNamespace getVariable [QGVAR(showFriendlyFireMessage), false]) then {
|
||||||
|
[_this, FUNC(showFriendlyFireMessage), 2] call EFUNC(common,execRemoteFnc);
|
||||||
|
};
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Name: AGM_Respawn_fnc_handleRespawn
|
Name: ACE_Respawn_fnc_handleRespawn
|
||||||
|
|
||||||
Author(s):
|
Author(s):
|
||||||
bux578
|
bux578
|
||||||
@ -15,11 +15,13 @@
|
|||||||
VOID
|
VOID
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_respawnedUnit"];
|
private ["_respawnedUnit"];
|
||||||
|
|
||||||
_respawnedUnit = _this select 0;
|
_respawnedUnit = _this select 0;
|
||||||
|
|
||||||
// Restores the gear when the player respawns
|
// Restores the gear when the player respawns
|
||||||
if (AGM_Respawn_SavePreDeathGear) then {
|
if (GVAR(SavePreDeathGear)) then {
|
||||||
[_respawnedUnit, AGM_Respawn_unitGear] call AGM_Respawn_fnc_restoreGear;
|
[_respawnedUnit, GVAR(unitGear)] call FUNC(restoreGear);
|
||||||
};
|
};
|
33
addons/respawn/functions/fnc_initRallypoint.sqf
Normal file
33
addons/respawn/functions/fnc_initRallypoint.sqf
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_initRallypoint
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
init code for rally points
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - rally
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_rallypoint", "_name"];
|
||||||
|
|
||||||
|
_rallypoint = _this select 0;
|
||||||
|
|
||||||
|
if (!local _rallypoint) exitWith {};
|
||||||
|
|
||||||
|
_name = typeOf _rallypoint;
|
||||||
|
|
||||||
|
if (isNil _name) then {
|
||||||
|
missionNamespace setVariable [_name, _rallypoint];
|
||||||
|
publicVariable _name;
|
||||||
|
} else {
|
||||||
|
deleteVehicle _rallypoint;
|
||||||
|
diag_log text "[ACE] Respawn: ERROR Multiple Rallypoints of same type.";
|
||||||
|
};
|
52
addons/respawn/functions/fnc_module.sqf
Normal file
52
addons/respawn/functions/fnc_module.sqf
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_module
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
KoffeinFlummi, bux578, CAA-Picard, commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
initializes the respawn module
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - logic
|
||||||
|
1: ARRAY<OBJECT> - synced units
|
||||||
|
2: BOOLEAN - activated
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if !(isServer) exitWith {};
|
||||||
|
|
||||||
|
_logic = _this select 0;
|
||||||
|
_activated = _this select 2;
|
||||||
|
|
||||||
|
if !(_activated) exitWith {};
|
||||||
|
|
||||||
|
GVAR(Module) = true;
|
||||||
|
|
||||||
|
[_logic, QGVAR(SavePreDeathGear), "SavePreDeathGear"] call EFUNC(common,readBooleanParameterFromModule);
|
||||||
|
[_logic, QGVAR(RemoveDeadBodiesDisconnected), "RemoveDeadBodiesDisconnected"] call EFUNC(common,readBooleanParameterFromModule);
|
||||||
|
|
||||||
|
if (isServer) then {
|
||||||
|
if (GVAR(RemoveDeadBodiesDisconnected)) then {
|
||||||
|
_fnc_deleteDisconnected = {
|
||||||
|
_this spawn {
|
||||||
|
_unit = _this select 0;
|
||||||
|
|
||||||
|
sleep 4;
|
||||||
|
|
||||||
|
if (!alive _unit) then {
|
||||||
|
deleteVehicle _unit;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
addMissionEventHandler ["HandleDisconnect", _fnc_deleteDisconnected];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
diag_log text "[ACE]: Respawn Module Initialized.";
|
36
addons/respawn/functions/fnc_moduleFriendlyFire.sqf
Normal file
36
addons/respawn/functions/fnc_moduleFriendlyFire.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_moduleFriendlyFire
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
initializes the Friendly Fire Messages module
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - logic
|
||||||
|
1: ARRAY<OBJECT> - synced units
|
||||||
|
2: BOOLEAN - activated
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
_this spawn {
|
||||||
|
_logic = _this select 0;
|
||||||
|
_units = _this select 1;
|
||||||
|
_activated = _this select 2;
|
||||||
|
|
||||||
|
if !(_activated) exitWith {};
|
||||||
|
|
||||||
|
if (isServer) then {
|
||||||
|
_varName = QGVAR(showFriendlyFireMessage);
|
||||||
|
|
||||||
|
missionNamespace setVariable [_varName, true];
|
||||||
|
publicVariable _varName;
|
||||||
|
};
|
||||||
|
|
||||||
|
diag_log text "[ACE]: Friendly Fire Messages Module Initialized.";
|
||||||
|
};
|
31
addons/respawn/functions/fnc_moduleRallypoint.sqf
Normal file
31
addons/respawn/functions/fnc_moduleRallypoint.sqf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_moduleRallypoint
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
initializes the Rallypoint module
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - logic
|
||||||
|
1: ARRAY<OBJECT> - synced units
|
||||||
|
2: BOOLEAN - activated
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
_logic = _this select 0;
|
||||||
|
_units = _this select 1;
|
||||||
|
_activated = _this select 2;
|
||||||
|
|
||||||
|
if !(_activated) exitWith {};
|
||||||
|
|
||||||
|
{
|
||||||
|
_x setVariable ["ACE_canMoveRallypoint", true];
|
||||||
|
} forEach _units;
|
||||||
|
|
||||||
|
diag_log text "[ACE]: Rallypoint Module Initialized.";
|
54
addons/respawn/functions/fnc_moveRallypoint.sqf
Normal file
54
addons/respawn/functions/fnc_moveRallypoint.sqf
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_moveRallypoint
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Moves a rallypoint to the player's location
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - unit
|
||||||
|
1: OBJECT - side
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
_this spawn {
|
||||||
|
_unit = _this select 0;
|
||||||
|
_side = _this select 1;
|
||||||
|
|
||||||
|
// rallypoint names are defined in CfgVehicles.hpp
|
||||||
|
|
||||||
|
_rallypoint = [
|
||||||
|
objNull,
|
||||||
|
missionNamespace getVariable ["ACE_Rallypoint_West", objNull],
|
||||||
|
missionNamespace getVariable ["ACE_RallypointExit_East", objNull],
|
||||||
|
missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull]
|
||||||
|
] select ([west, east, independent] find _side) + 1;
|
||||||
|
|
||||||
|
if (isNull _rallypoint) exitWith {};
|
||||||
|
|
||||||
|
_position = getPosATL _unit;
|
||||||
|
_position = _position findEmptyPosition [0, 2, typeOf _rallypoint];
|
||||||
|
if (count _position == 0) then {_position = getPosATL _unit};
|
||||||
|
|
||||||
|
_position set [2, 0];
|
||||||
|
|
||||||
|
[localize "STR_ACE_Respawn_Deploy"] call EFUNC(common,displayTextStructured);
|
||||||
|
|
||||||
|
sleep 5;
|
||||||
|
_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];
|
||||||
|
*/
|
||||||
|
|
||||||
|
[localize "STR_ACE_Respawn_Deploy"] call EFUNC(common,displayTextStructured);
|
||||||
|
};
|
37
addons/respawn/functions/fnc_removeBody.sqf
Normal file
37
addons/respawn/functions/fnc_removeBody.sqf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_removeBody
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
bux578
|
||||||
|
|
||||||
|
Description:
|
||||||
|
removes a given body
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - body
|
||||||
|
1: BOOLEAN - forceRemove // not used atm
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_body", "_forceRemove", "_bodyRemoveTimer"];
|
||||||
|
|
||||||
|
_body = _this select 0;
|
||||||
|
_forceRemove = _this select 1;
|
||||||
|
|
||||||
|
_bodyRemoveTimer = GVAR(BodyRemoveTimer) max 0;
|
||||||
|
|
||||||
|
// could be used for SpecOps missions.
|
||||||
|
if (_forceRemove) then {
|
||||||
|
_bodyRemoveTimer = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
[_body, _bodyRemoveTimer] spawn {
|
||||||
|
sleep (_this select 1);
|
||||||
|
// hideBody takes ~20s till body is fully underground
|
||||||
|
// a better hideBody would make this more aesthetic
|
||||||
|
deleteVehicle (_this select 0);
|
||||||
|
};
|
31
addons/respawn/functions/fnc_removeDisconnectedPlayer.sqf
Normal file
31
addons/respawn/functions/fnc_removeDisconnectedPlayer.sqf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_removeDisconnectedPlayer
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
handles the disconnected event
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: BOOLEAN - forceRemove // not used atm
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_forceRemove", "_body"];
|
||||||
|
|
||||||
|
_forceRemove = _this select 0;
|
||||||
|
|
||||||
|
{
|
||||||
|
if (getPlayerUID _x == _uid) exitWith {
|
||||||
|
_body = _x;
|
||||||
|
};
|
||||||
|
} forEach playableUnits;
|
||||||
|
|
||||||
|
if (!isNil "_body" && {!alive _body}) then {
|
||||||
|
[_body, _forceRemove] call FUNC(removeBody);
|
||||||
|
};
|
@ -1,16 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
Author: bux578
|
Name: ACE_Respawn_fnc_removeBody
|
||||||
|
|
||||||
Description:
|
Author(s):
|
||||||
Restores previously saved gear
|
bux578
|
||||||
|
|
||||||
Arguments:
|
Description:
|
||||||
A player object, an array containing all gear
|
Restores previously saved gear
|
||||||
|
|
||||||
Return value:
|
Parameters:
|
||||||
An array containing all inventory items
|
0: OBJECT - unit
|
||||||
|
1: ARRAY<STRING> - Array containing all gear
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_unit", "_allGear", "_headgear", "_goggles", "_uniform", "_uniformitems", "_vest", "_vestitems", "_backpack", "_backpackitems", "_primaryweapon", "_primaryweaponitems", "_primaryweaponmagazine", "_handgunweapon", "_handgunweaponitems", "_handgunweaponmagazine", "_assigneditems", "_binocular"];
|
private ["_unit", "_allGear", "_headgear", "_goggles", "_uniform", "_uniformitems", "_vest", "_vestitems", "_backpack", "_backpackitems", "_primaryweapon", "_primaryweaponitems", "_primaryweaponmagazine", "_handgunweapon", "_handgunweaponitems", "_handgunweaponmagazine", "_assigneditems", "_binocular"];
|
||||||
|
|
||||||
|
|
||||||
@ -50,85 +56,85 @@ _binocular = _allGear select 18;
|
|||||||
|
|
||||||
// start restoring the items
|
// start restoring the items
|
||||||
if (_headgear != "") then {
|
if (_headgear != "") then {
|
||||||
_unit addHeadgear _headgear;
|
_unit addHeadgear _headgear;
|
||||||
};
|
};
|
||||||
if (_uniform != "") then {
|
if (_uniform != "") then {
|
||||||
_unit forceAddUniform _uniform;
|
_unit forceAddUniform _uniform;
|
||||||
};
|
};
|
||||||
if (_vest != "") then {
|
if (_vest != "") then {
|
||||||
_unit addVest _vest;
|
_unit addVest _vest;
|
||||||
};
|
};
|
||||||
if (_goggles != "") then {
|
if (_goggles != "") then {
|
||||||
_unit addGoggles _goggles;
|
_unit addGoggles _goggles;
|
||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
_unit addItemToUniform _x;
|
_unit addItemToUniform _x;
|
||||||
}forEach _uniformitems;
|
}forEach _uniformitems;
|
||||||
|
|
||||||
{
|
{
|
||||||
_unit addItemToVest _x;
|
_unit addItemToVest _x;
|
||||||
}forEach _vestitems;
|
}forEach _vestitems;
|
||||||
|
|
||||||
|
|
||||||
if(format["%1", _backpack] != "") then {
|
if(format["%1", _backpack] != "") then {
|
||||||
_unit addBackpack _backpack;
|
_unit addBackpack _backpack;
|
||||||
|
|
||||||
_backpa = unitBackpack _unit;
|
_backpa = unitBackpack _unit;
|
||||||
clearMagazineCargoGlobal _backpa;
|
clearMagazineCargoGlobal _backpa;
|
||||||
clearWeaponCargoGlobal _backpa;
|
clearWeaponCargoGlobal _backpa;
|
||||||
clearItemCargoGlobal _backpa;
|
clearItemCargoGlobal _backpa;
|
||||||
{
|
{
|
||||||
_unit addItemToBackpack _x;
|
_unit addItemToBackpack _x;
|
||||||
} forEach _backpackitems;
|
} forEach _backpackitems;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// primaryWeapon
|
// primaryWeapon
|
||||||
if (_primaryweapon != "") then {
|
if (_primaryweapon != "") then {
|
||||||
{
|
{
|
||||||
_unit addMagazine _x;
|
_unit addMagazine _x;
|
||||||
} forEach _primaryweaponmagazine;
|
} forEach _primaryweaponmagazine;
|
||||||
|
|
||||||
_unit addWeapon _primaryweapon;
|
_unit addWeapon _primaryweapon;
|
||||||
|
|
||||||
{
|
{
|
||||||
if (_x != "") then {
|
if (_x != "") then {
|
||||||
_unit addPrimaryWeaponItem _x;
|
_unit addPrimaryWeaponItem _x;
|
||||||
};
|
};
|
||||||
} forEach _primaryweaponitems;
|
} forEach _primaryweaponitems;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// secondaryWeapon
|
// secondaryWeapon
|
||||||
if (_secondaryweapon != "") then {
|
if (_secondaryweapon != "") then {
|
||||||
{
|
{
|
||||||
_unit addMagazine _x;
|
_unit addMagazine _x;
|
||||||
} forEach _secondaryweaponmagazine;
|
} forEach _secondaryweaponmagazine;
|
||||||
|
|
||||||
_unit addWeapon _secondaryweapon;
|
_unit addWeapon _secondaryweapon;
|
||||||
|
|
||||||
{
|
{
|
||||||
if (_x != "") then {
|
if (_x != "") then {
|
||||||
_unit addSecondaryWeaponItem _x;
|
_unit addSecondaryWeaponItem _x;
|
||||||
};
|
};
|
||||||
} forEach _secondaryweaponitems;
|
} forEach _secondaryweaponitems;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// handgun
|
// handgun
|
||||||
if (_handgunweapon != "") then {
|
if (_handgunweapon != "") then {
|
||||||
{
|
{
|
||||||
_unit addMagazine _x;
|
_unit addMagazine _x;
|
||||||
} forEach _handgunweaponmagazine;
|
} forEach _handgunweaponmagazine;
|
||||||
|
|
||||||
_unit addWeapon _handgunweapon;
|
_unit addWeapon _handgunweapon;
|
||||||
|
|
||||||
{
|
{
|
||||||
if (_x != "") then {
|
if (_x != "") then {
|
||||||
_unit addHandgunItem _x;
|
_unit addHandgunItem _x;
|
||||||
};
|
};
|
||||||
} forEach _handgunweaponitems;
|
} forEach _handgunweaponitems;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -140,6 +146,6 @@ _assignedItems = _assignedItems - [_binocular];
|
|||||||
_unit addWeapon _binocular;
|
_unit addWeapon _binocular;
|
||||||
|
|
||||||
if ("Laserdesignator" in assignedItems _unit) then {
|
if ("Laserdesignator" in assignedItems _unit) then {
|
||||||
_unit selectWeapon "Laserdesignator";
|
_unit selectWeapon "Laserdesignator";
|
||||||
if (currentMagazine _unit == "") then {_unit addMagazine "Laserbatteries";};
|
if (currentMagazine _unit == "") then {_unit addMagazine "Laserbatteries";};
|
||||||
};
|
};
|
29
addons/respawn/functions/fnc_showFriendlyFireMessage.sqf
Normal file
29
addons/respawn/functions/fnc_showFriendlyFireMessage.sqf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_showFriendlyFireMessages
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
shows a message in system chat of who killed who
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - unit
|
||||||
|
1: OBJECT - killer
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_killer"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
_killer = _this select 1;
|
||||||
|
|
||||||
|
if (_unit != _killer && side group _unit in [side group ACE_player, civilian] && {side group _killer == side group ACE_player}) then {
|
||||||
|
systemChat format ["%1 was killed by %2", [_unit] call EFUNC(common,getName), [_killer] call EFUNC(common,getName)];
|
||||||
|
|
||||||
|
[_unit, "killedByFriendly", [_unit, _killer]] call EFUNC(common,callCustomEventHandlers);
|
||||||
|
};
|
47
addons/respawn/functions/fnc_teleportToRallypoint.sqf
Normal file
47
addons/respawn/functions/fnc_teleportToRallypoint.sqf
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
Name: ACE_Respawn_fnc_teleportToRallypoint
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
commy2
|
||||||
|
|
||||||
|
Description:
|
||||||
|
teleports a unit to a rallypoint
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
0: OBJECT - unit
|
||||||
|
1: OBJECT - side
|
||||||
|
2: BOOLEAN - teleport to base
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
VOID
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_side", "_toBase", "_rallypoint"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
_side = _this select 1;
|
||||||
|
_toBase = _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;
|
||||||
|
|
||||||
|
if (isNull _rallypoint) exitWith {};
|
||||||
|
|
||||||
|
_unit setPosASL (getPosASL _rallypoint);
|
||||||
|
[[localize "STR_ACE_Respawn_TeleportedToRallypoint", localize "STR_ACE_Respawn_TeleportedToBase"] select _toBase] call EFUNC(common,displayTextStructured);
|
1
addons/respawn/functions/script_component.hpp
Normal file
1
addons/respawn/functions/script_component.hpp
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "\z\ace\addons\respawn\script_component.hpp"
|
12
addons/respawn/script_component.hpp
Normal file
12
addons/respawn/script_component.hpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#define COMPONENT respawn
|
||||||
|
#include "\z\ace\addons\main\script_mod.hpp"
|
||||||
|
|
||||||
|
#ifdef DEBUG_ENABLED_RESPAWN
|
||||||
|
#define DEBUG_MODE_FULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_SETTINGS_RESPAWN
|
||||||
|
#define DEBUG_SETTINGS DEBUG_SETTINGS_RESPAWN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "\z\ace\addons\main\script_macros.hpp"
|
21
addons/respawn/stringtable.xml
Normal file
21
addons/respawn/stringtable.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project name="ACE">
|
||||||
|
<Package name="Interaction">
|
||||||
|
<Key ID="STR_ACE_Respawn_Deploy">
|
||||||
|
<English>Deploy in 5 seconds ...</English>
|
||||||
|
<German>Wird in 5 Sekunden errichtet ...</German>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Respawn_Deployed">
|
||||||
|
<English>Rallypoint deployed</English>
|
||||||
|
<German>Rallypoint errichtet</German>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Respawn_TeleportedToBase">
|
||||||
|
<English>Teleported to Base</English>
|
||||||
|
<German>Zur Basis teleportiert</German>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Respawn_TeleportedToRallypoint">
|
||||||
|
<English>Teleported to Rallypoint</English>
|
||||||
|
<German>Zum Rallypoint teleportiert</German>
|
||||||
|
</Key>
|
||||||
|
</Package>
|
||||||
|
</Project>
|
Loading…
Reference in New Issue
Block a user