mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
removing wheels logic, carryable wheels
This commit is contained in:
parent
a92bdfdb58
commit
f231b2b14c
@ -33,6 +33,11 @@ class Extended_Init_EventHandlers {
|
|||||||
init = QUOTE(_this call DFUNC(initObject));
|
init = QUOTE(_this call DFUNC(initObject));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
class ACE_RepairItem_Base {
|
||||||
|
class ADDON {
|
||||||
|
init = QUOTE(_this call DFUNC(initObject));
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Extended_Killed_EventHandlers {
|
class Extended_Killed_EventHandlers {
|
||||||
|
@ -83,4 +83,18 @@ class CfgVehicles {
|
|||||||
GVAR(canCarry) = 0;
|
GVAR(canCarry) = 0;
|
||||||
GVAR(canDrag) = 0;
|
GVAR(canDrag) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ACE_RepairItem_Base: ThingX {};
|
||||||
|
|
||||||
|
class ACE_Track: ACE_RepairItem_Base {
|
||||||
|
GVAR(canCarry) = 1;
|
||||||
|
GVAR(carryPosition[]) = {0,1,1};
|
||||||
|
GVAR(carryDirection) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ACE_Wheel: ACE_RepairItem_Base {
|
||||||
|
GVAR(canCarry) = 1;
|
||||||
|
GVAR(carryPosition[]) = {0,1,1};
|
||||||
|
GVAR(carryDirection) = 0;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -558,4 +558,16 @@ class CfgVehicles {
|
|||||||
class ACE_SelfActions {};
|
class ACE_SelfActions {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ACE_RepairItem_Base: thingX {
|
||||||
|
class ACE_Actions {
|
||||||
|
class ACE_MainActions {
|
||||||
|
displayName = "$STR_ACE_Interaction_MainAction";
|
||||||
|
selection = "";
|
||||||
|
distance = 2;
|
||||||
|
condition = "true";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class ACE_SelfActions {};
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -39,8 +39,9 @@ class CfgVehicles {
|
|||||||
MACRO_REPAIRVEHICLE
|
MACRO_REPAIRVEHICLE
|
||||||
};
|
};
|
||||||
|
|
||||||
class ThingX;
|
class thingX;
|
||||||
class ACE_RepairItem_Base: ThingX {
|
class ACE_RepairItem_Base: thingX {
|
||||||
|
XEH_ENABLED;
|
||||||
icon = "iconObject_circle";
|
icon = "iconObject_circle";
|
||||||
mapSize = 0.7;
|
mapSize = 0.7;
|
||||||
accuracy = 0.2;
|
accuracy = 0.2;
|
||||||
|
@ -2,3 +2,6 @@
|
|||||||
|
|
||||||
["setVehicleDamage", {_this call FUNC(setDamage)}] call EFUNC(common,addEventHandler);
|
["setVehicleDamage", {_this call FUNC(setDamage)}] call EFUNC(common,addEventHandler);
|
||||||
["setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call EFUNC(common,addEventHandler);
|
["setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call EFUNC(common,addEventHandler);
|
||||||
|
|
||||||
|
// wheels
|
||||||
|
["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call EFUNC(common,addEventHandler);
|
||||||
|
@ -6,6 +6,7 @@ PREP(addRepairActions);
|
|||||||
PREP(canRemoveWheel);
|
PREP(canRemoveWheel);
|
||||||
PREP(canRepair);
|
PREP(canRepair);
|
||||||
PREP(canReplaceWheel);
|
PREP(canReplaceWheel);
|
||||||
|
PREP(doRemoveWheel);
|
||||||
PREP(doRepair);
|
PREP(doRepair);
|
||||||
PREP(getWheelHitPointsWithSelections);
|
PREP(getWheelHitPointsWithSelections);
|
||||||
PREP(normalizeHitPoints);
|
PREP(normalizeHitPoints);
|
||||||
@ -14,5 +15,6 @@ PREP(repairVehicle);
|
|||||||
PREP(replaceWheel);
|
PREP(replaceWheel);
|
||||||
PREP(setDamage);
|
PREP(setDamage);
|
||||||
PREP(setHitPointDamage);
|
PREP(setHitPointDamage);
|
||||||
|
PREP(spawnObject);
|
||||||
|
|
||||||
ADDON = true;
|
ADDON = true;
|
||||||
|
44
addons/repair/functions/fnc_doRemoveWheel.sqf
Normal file
44
addons/repair/functions/fnc_doRemoveWheel.sqf
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
*
|
||||||
|
* Called by repair action / progress bar. Raise events to set the new hitpoint damage.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Stuff from progress bar.
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* NONE
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_vehicle", "_hitPoint"];
|
||||||
|
|
||||||
|
_unit = _this select 0 select 0;
|
||||||
|
_vehicle = _this select 0 select 1;
|
||||||
|
_hitPoint = _this select 0 select 2;
|
||||||
|
|
||||||
|
// get current hitpoint damage
|
||||||
|
private "_hitPointDamage";
|
||||||
|
_hitPointDamage = _vehicle getHitPointDamage _hitPoint;
|
||||||
|
|
||||||
|
// can't remove destroyed or already removed wheel
|
||||||
|
if (_hitPointDamage >= 1) exitWith {};
|
||||||
|
|
||||||
|
// don't die by spawning / moving the wheel
|
||||||
|
["fixCollision", _unit] call EFUNC(common,localEvent);
|
||||||
|
|
||||||
|
// spawn wheel
|
||||||
|
private "_wheel";
|
||||||
|
_wheel = ["ACE_Wheel", getPosASL _unit] call FUNC(spawnObject);
|
||||||
|
_wheel setdamage _damage;
|
||||||
|
|
||||||
|
// raise event to set the new hitpoint damage
|
||||||
|
["setWheelHitPointDamage", _vehicle, [_vehicle, _hitPoint, 1]] call EFUNC(common,targetEvent);
|
||||||
|
|
||||||
|
// display text message if enabled
|
||||||
|
if (GVAR(DisplayTextOnRepair)) then {
|
||||||
|
private "_text";
|
||||||
|
_text = "WHEEL REMOVED";
|
||||||
|
|
||||||
|
[_text] call EFUNC(common,displayTextStructured);
|
||||||
|
};
|
@ -1 +1,39 @@
|
|||||||
(_this select 1) setHitPointDamage [_this select 2, 1]; systemChat str _this;
|
/*
|
||||||
|
* Author: commy2
|
||||||
|
*
|
||||||
|
* Start a remove wheel action and open progress bar.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Unit that does the repairing (Object)
|
||||||
|
* 1: vehicle to repair (Object)
|
||||||
|
* 2: Selected hitpoint (String)
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* NONE
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_unit", "_vehicle", "_hitPoint"];
|
||||||
|
|
||||||
|
_unit = _this select 0;
|
||||||
|
_vehicle = _this select 1;
|
||||||
|
_hitPoint = _this select 2;
|
||||||
|
|
||||||
|
// exit if not a valid hitpoint
|
||||||
|
if !(_hitPoint in ([_vehicle] call EFUNC(common,getHitPoints))) exitWith {};
|
||||||
|
|
||||||
|
// calculate time to fully repair the hitpoint
|
||||||
|
private "_time";
|
||||||
|
_time = 10;
|
||||||
|
|
||||||
|
// get string of the hitpoint
|
||||||
|
private "_text";
|
||||||
|
_text = "REMOVE WHEEL";
|
||||||
|
|
||||||
|
// open the loading bar
|
||||||
|
[_time, [_unit, _vehicle, _hitPoint], DFUNC(doRemoveWheel), {hint "abort"}, _text, {true}, []] call EFUNC(common,progressBar);
|
||||||
|
|
||||||
|
// do animation
|
||||||
|
[_unit] call EFUNC(common,goKneeling);
|
||||||
|
|
||||||
|
// @todo play sound
|
||||||
|
21
addons/repair/functions/fnc_spawnObject.sqf
Normal file
21
addons/repair/functions/fnc_spawnObject.sqf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_item", "_position", "_damage"];
|
||||||
|
|
||||||
|
_item = _this select 0;
|
||||||
|
_position = _this select 1;
|
||||||
|
_damage = _this select 2;
|
||||||
|
|
||||||
|
if (isNil "_damage") then {_damage = 0};
|
||||||
|
|
||||||
|
// randomized end position
|
||||||
|
_position = _position vectorAdd [1 - random 2, 1 - random 2, 0];
|
||||||
|
|
||||||
|
_item = createVehicle [_item, _position, [], 0, "NONE"];
|
||||||
|
_item setPosASL _position;
|
||||||
|
|
||||||
|
["fixCollision", _item] call EFUNC(common,localEvent);
|
||||||
|
["fixPosition", _item] call EFUNC(common,localEvent);
|
||||||
|
|
||||||
|
_item setDamage _damage;
|
Loading…
Reference in New Issue
Block a user