mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Various Changes
This commit is contained in:
parent
f8e758e136
commit
38745f4871
@ -6,9 +6,9 @@ class CfgVehicles {
|
|||||||
class ACE_DisarmInventory {
|
class ACE_DisarmInventory {
|
||||||
displayName = "$STR_ACE_Disarming_OpenInventory";
|
displayName = "$STR_ACE_Disarming_OpenInventory";
|
||||||
distance = 4;
|
distance = 4;
|
||||||
condition = QUOTE([_target] call FUNC(canDisarm));
|
condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit));
|
||||||
statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog));
|
statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog));
|
||||||
icon = "\a3\Modules_F_Curator\Data\portraitRespawnInventory_ca.paa"; //todo
|
icon = "\a3\Modules_F_Curator\Data\portraitRespawnInventory_ca.paa";
|
||||||
selection = "spine3";
|
selection = "spine3";
|
||||||
exceptions[] = {};
|
exceptions[] = {};
|
||||||
};
|
};
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
ADDON = false;
|
ADDON = false;
|
||||||
|
|
||||||
PREP(canDisarm);
|
PREP(canBeDisarmed);
|
||||||
|
PREP(canPlayerDisarmUnit);
|
||||||
PREP(disarmDropItems);
|
PREP(disarmDropItems);
|
||||||
PREP(eventCallerFinish);
|
PREP(eventCallerFinish);
|
||||||
PREP(eventTargetFinish);
|
PREP(eventTargetFinish);
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
* 0: Target <OBJECT>
|
* 0: Target <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* The return value <BOOL>
|
* Can Be Disarmed <BOOL>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [cursorTarget] call ace_disarming_fnc_canDisarm
|
* [cursorTarget] call ace_disarming_fnc_canBeDisarmed
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -17,7 +17,9 @@
|
|||||||
|
|
||||||
PARAMS_1(_target);
|
PARAMS_1(_target);
|
||||||
|
|
||||||
//Check animationState for putDown anim:
|
//Check animationState for putDown anim
|
||||||
|
//This ensures the unit doesn't have to actualy do any animation to drop something
|
||||||
|
//This should always be true for the 3 possible status effects that allow disarming
|
||||||
_animationStateCfgMoves = getText (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _target) >> "actions");
|
_animationStateCfgMoves = getText (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState _target) >> "actions");
|
||||||
if (_animationStateCfgMoves == "") exitWith {false};
|
if (_animationStateCfgMoves == "") exitWith {false};
|
||||||
_putDownAnim = getText (configFile >> "CfgMovesBasic" >> "Actions" >> _animationStateCfgMoves >> "PutDown");
|
_putDownAnim = getText (configFile >> "CfgMovesBasic" >> "Actions" >> _animationStateCfgMoves >> "PutDown");
|
22
addons/disarming/functions/fnc_canPlayerDisarmUnit.sqf
Normal file
22
addons/disarming/functions/fnc_canPlayerDisarmUnit.sqf
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Author: PabstMirror
|
||||||
|
* Checks the conditions for being able to disarm a unit
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Player <OBJECT>
|
||||||
|
* 1: Target <OBJECT>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Can Be Disarm Target <BOOL>
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [player, cursorTarget] call ace_disarming_fnc_canPlayerDisarmUnit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
PARAMS_2(_player,_target);
|
||||||
|
|
||||||
|
([_target] call FUNC(canBeDisarmed)) &&
|
||||||
|
{([_player, _target, []] call EFUNC(common,canInteractWith))}
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Makes a unit drop items:
|
* Makes a unit drop items
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: caller (player) <OBJECT>
|
* 0: caller (player) <OBJECT>
|
||||||
@ -30,7 +30,7 @@ _fncSumArray = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Sanity Checks
|
//Sanity Checks
|
||||||
if (!([_target] call FUNC(canDisarm))) exitWith {
|
if (!([_target] call FUNC(canBeDisarmed))) exitWith {
|
||||||
[_caller, _target, "Debug: Cannot disarm target"] call FUNC(eventTargetFinish);
|
[_caller, _target, "Debug: Cannot disarm target"] call FUNC(eventTargetFinish);
|
||||||
};
|
};
|
||||||
if (_doNotDropAmmo && {({_x in _listOfItemsToRemove} count (magazines _target)) > 0}) exitWith {
|
if (_doNotDropAmmo && {({_x in _listOfItemsToRemove} count (magazines _target)) > 0}) exitWith {
|
||||||
@ -38,20 +38,23 @@ if (_doNotDropAmmo && {({_x in _listOfItemsToRemove} count (magazines _target))
|
|||||||
};
|
};
|
||||||
|
|
||||||
_holder = objNull;
|
_holder = objNull;
|
||||||
|
|
||||||
|
//If not dropping ammo, don't use an existing container
|
||||||
if (!_doNotDropAmmo) then {
|
if (!_doNotDropAmmo) then {
|
||||||
//Try to use the same container, if one exists
|
|
||||||
{
|
{
|
||||||
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
|
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
|
||||||
_holder = _x;
|
_holder = _x;
|
||||||
};
|
};
|
||||||
} forEach ((getpos _target) nearObjects ["GroundWeaponHolder", 3]);
|
} forEach ((getpos _target) nearObjects [DISARM_CONTAINER, 3]);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isNull _holder) then {
|
if (isNull _holder) then {
|
||||||
_dropPos = _target modelToWorld [-0.75, 0.75, 0];
|
_dropPos = _target modelToWorld [0, 0.75, 0];
|
||||||
_dropPos set [2, 0];
|
_dropPos set [2, ((getPosASL _target) select 2)];
|
||||||
// _holder = createVehicle ["WeaponHolderSimulated", _dropPos, [], 0, "CAN_COLLIDE"];
|
// _holder = createVehicle ["WeaponHolderSimulated", _dropPos, [], 0, "CAN_COLLIDE"];
|
||||||
_holder = createVehicle ["GroundWeaponHolder", _dropPos, [], 0, "CAN_COLLIDE"];
|
_holder = createVehicle [DISARM_CONTAINER, _dropPos, [], 0, "CAN_COLLIDE"];
|
||||||
|
_holder setPosASL _dropPos;
|
||||||
|
_holder setVariable [QGVAR(holderInUse), false];
|
||||||
_holder setVariable [QGVAR(disarmUnit), _target, true];
|
_holder setVariable [QGVAR(disarmUnit), _target, true];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -59,12 +62,12 @@ if (isNull _holder) then {
|
|||||||
if (isNull _holder) exitWith {
|
if (isNull _holder) exitWith {
|
||||||
[_caller, _target, "Debug: Null Holder"] call FUNC(eventTargetFinish);
|
[_caller, _target, "Debug: Null Holder"] call FUNC(eventTargetFinish);
|
||||||
};
|
};
|
||||||
//Make sure only one drop operation at a time...
|
//Make sure only one drop operation at a time (using PFEH system as a queue)
|
||||||
if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
|
if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
|
||||||
systemChat format ["Debug: %1 - Ground Container In Use, waiting until free", time];
|
systemChat format ["Debug: %1 - Ground Container In Use, waiting until free", time];
|
||||||
[{
|
[{
|
||||||
_this call FUNC(disarmDropItems);
|
_this call FUNC(disarmDropItems);
|
||||||
}, _this, 0.05, 0.05] call EFUNC(common,waitAndExecute);
|
}, _this, 0, 0] call EFUNC(common,waitAndExecute);
|
||||||
};
|
};
|
||||||
_holder setVariable [QGVAR(holderInUse), true];
|
_holder setVariable [QGVAR(holderInUse), true];
|
||||||
|
|
||||||
@ -164,7 +167,7 @@ systemChat format ["PFEh start %1", time];
|
|||||||
_needToRemoveVest = ((vest _target) != "") && {(vest _target) in _listOfItemsToRemove};
|
_needToRemoveVest = ((vest _target) != "") && {(vest _target) in _listOfItemsToRemove};
|
||||||
_needToRemoveUniform = ((uniform _target) != "") && {(uniform _target) in _listOfItemsToRemove};
|
_needToRemoveUniform = ((uniform _target) != "") && {(uniform _target) in _listOfItemsToRemove};
|
||||||
|
|
||||||
if ((time < _maxWaitTime) && {[_target] call FUNC(canDisarm)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then {
|
if ((time < _maxWaitTime) && {[_target] call FUNC(canBeDisarmed)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then {
|
||||||
//action drop weapons (keeps loaded magazine and attachements)
|
//action drop weapons (keeps loaded magazine and attachements)
|
||||||
{
|
{
|
||||||
if (_x in _listOfItemsToRemove) then {
|
if (_x in _listOfItemsToRemove) then {
|
||||||
@ -222,18 +225,16 @@ systemChat format ["PFEh start %1", time];
|
|||||||
systemChat "Debug: Deleting Dummy";
|
systemChat "Debug: Deleting Dummy";
|
||||||
clearItemCargoGlobal _holder;
|
clearItemCargoGlobal _holder;
|
||||||
};
|
};
|
||||||
|
|
||||||
//Verify we didn't timeout waiting on drop action
|
//Verify we didn't timeout waiting on drop action
|
||||||
if (time >= _maxWaitTime) exitWith {
|
if (time >= _maxWaitTime) exitWith {
|
||||||
_holder setVariable [QGVAR(holderInUse), false];
|
_holder setVariable [QGVAR(holderInUse), false];
|
||||||
[_caller, _target, "Debug: Drop Actions Timeout"] call FUNC(eventTargetFinish);
|
[_caller, _target, "Debug: Drop Actions Timeout"] call FUNC(eventTargetFinish);
|
||||||
};
|
};
|
||||||
//If target lost disarm status:
|
//If target lost disarm status:
|
||||||
if (!([_target] call FUNC(canDisarm))) exitWith {
|
if (!([_target] call FUNC(canBeDisarmed))) exitWith {
|
||||||
_holder setVariable [QGVAR(holderInUse), false];
|
_holder setVariable [QGVAR(holderInUse), false];
|
||||||
[_caller, _target, "Debug: Target cannot be disarmed"] call FUNC(eventTargetFinish);
|
[_caller, _target, "Debug: Target cannot be disarmed"] call FUNC(eventTargetFinish);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_needToRemoveVest && {!((vestItems _target) isEqualTo [])}) exitWith {
|
if (_needToRemoveVest && {!((vestItems _target) isEqualTo [])}) exitWith {
|
||||||
_holder setVariable [QGVAR(holderInUse), false];
|
_holder setVariable [QGVAR(holderInUse), false];
|
||||||
[_caller, _target, "Debug: Vest Not Empty"] call FUNC(eventTargetFinish);
|
[_caller, _target, "Debug: Vest Not Empty"] call FUNC(eventTargetFinish);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* Starts the disarming process from the caller
|
* Recieves a possible error code from FUNC(eventTargetFinish)
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: caller (player) <OBJECT>
|
* 0: caller (player) <OBJECT>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* TODO
|
* [player1, player2, "Someting fucked up"] call ace_disarming_fnc_eventCallerFinish
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -22,4 +22,4 @@ PARAMS_3(_caller,_target,_errorMsg);
|
|||||||
if (_caller != ACE_player) exitWith {};
|
if (_caller != ACE_player) exitWith {};
|
||||||
|
|
||||||
systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg];
|
systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg];
|
||||||
[format ["Problem Removing Item<br/>%1", _errorMsg]] call EFUNC(common,displayTextStructured);
|
diag_log text format ["[ACE_Disarming] %1 - eventCallerFinish: %2", time, _this];
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* TODO
|
* After FUNC(disarmDropItems) has completed, passing a possible error code.
|
||||||
|
* Passes that error back to orginal caller.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: caller <OBJECT>
|
* 0: caller <OBJECT>
|
||||||
@ -11,7 +12,7 @@
|
|||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* eventTargetFinish
|
* [player1, player2, "Someting fucked up"] call ace_disarming_fnc_eventTargetFinish
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -21,6 +22,6 @@ PARAMS_3(_caller,_target,_errorMsg);
|
|||||||
|
|
||||||
|
|
||||||
if (_errorMsg != "") then {
|
if (_errorMsg != "") then {
|
||||||
systemChat _errorMsg;
|
diag_log text format ["[ACE_Disarming] %1 - eventTargetFinish: %2", time, _this];
|
||||||
["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent);
|
["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent);
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Author: PabstMirror
|
* Author: PabstMirror
|
||||||
* TODO
|
* Disarm Event Handler, Starting func, called on the target.
|
||||||
|
* If target has to remove uniform/vest, this will add all uniform/vest items to the drop list.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: caller (player) <OBJECT>
|
* 0: caller (player) <OBJECT>
|
||||||
|
@ -16,18 +16,28 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
#define TEXTURES_RANKS [ \
|
||||||
|
"", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\private_gs.paa", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\lieutenant_gs.paa", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\captain_gs.paa", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\major_gs.paa", \
|
||||||
|
"\A3\Ui_f\data\GUI\Cfg\Ranks\colonel_gs.paa" \
|
||||||
|
]
|
||||||
|
|
||||||
PARAMS_2(_caller,_target);
|
PARAMS_2(_caller,_target);
|
||||||
|
|
||||||
//Sanity Checks
|
//Sanity Checks
|
||||||
if (_caller != ACE_player) exitwith {ERROR("Player isn't caller?");};
|
if (_caller != ACE_player) exitwith {ERROR("Player isn't caller?");};
|
||||||
if (!([_target] call FUNC(canDisarm))) exitWith {ERROR("Unit Cannot Be Disarmed");};
|
if (!([_player, _target] call FUNC(canPlayerDisarmUnit))) exitWith {ERROR("Can't Disarm Unit");};
|
||||||
if (!([] call EGVAR(common,canInteract))) exitWith {ERROR("Player cannot Interact");};
|
if (dialog) then {ERROR("Dialog open when trying to open disarm dialog"); closeDialog 0;};
|
||||||
|
|
||||||
if (dialog) then {closeDialog 0;};
|
|
||||||
createDialog QGVAR(remoteInventory);
|
|
||||||
|
|
||||||
disableSerialization;
|
disableSerialization;
|
||||||
|
|
||||||
|
createDialog QGVAR(remoteInventory);
|
||||||
|
|
||||||
_display = uiNamespace getVariable ["ACE_remoteInventory", displayNull];
|
_display = uiNamespace getVariable ["ACE_remoteInventory", displayNull];
|
||||||
if (isNull _display) exitWith {ERROR("Display is Null");};
|
if (isNull _display) exitWith {ERROR("Display is Null");};
|
||||||
|
|
||||||
@ -53,11 +63,12 @@ GVAR(disarmTarget) = _target;
|
|||||||
EXPLODE_2_PVT(_this,_args,_pfID);
|
EXPLODE_2_PVT(_this,_args,_pfID);
|
||||||
EXPLODE_3_PVT(_args,_player,_target,_display);
|
EXPLODE_3_PVT(_args,_player,_target,_display);
|
||||||
|
|
||||||
if ((!([_target] call FUNC(canDisarm))) ||
|
if ((!([_player, _target] call FUNC(canPlayerDisarmUnit))) ||
|
||||||
{isNull _display} ||
|
{isNull _display} ||
|
||||||
{_player != ACE_player} ||
|
{_player != ACE_player}) then {
|
||||||
{!([_player, _target, []] call EFUNC(common,canInteractWith))}) then {
|
|
||||||
systemChat "Debug: closeing dialog";
|
systemChat "Debug: closeing dialog";
|
||||||
|
|
||||||
[_pfID] call CBA_fnc_removePerFrameHandler;
|
[_pfID] call CBA_fnc_removePerFrameHandler;
|
||||||
GVAR(disarmTarget) = objNull;
|
GVAR(disarmTarget) = objNull;
|
||||||
if (!isNull _display) then {closeDialog 0;}; //close dialog if still open
|
if (!isNull _display) then {closeDialog 0;}; //close dialog if still open
|
||||||
@ -67,9 +78,12 @@ GVAR(disarmTarget) = _target;
|
|||||||
_playerName = _display displayCtrl 111;
|
_playerName = _display displayCtrl 111;
|
||||||
_rankPicture = _display displayCtrl 1203;
|
_rankPicture = _display displayCtrl 1203;
|
||||||
|
|
||||||
_rankPicture ctrlSetText "\A3\Ui_f\data\GUI\Cfg\Ranks\corporal_gs.paa";
|
//Show rank and name (just like BIS's inventory)
|
||||||
|
_rankIndex = ["PRIVATE", "CORPORAL", "SERGEANT", "LIEUTENANT", "CAPTAIN", "MAJOR", "COLONEL"] find (rank _target);
|
||||||
|
_rankPicture ctrlSetText (TEXTURES_RANKS select _rankIndex);
|
||||||
_playerName ctrlSetText ([GVAR(disarmTarget)] call EFUNC(common,getName));
|
_playerName ctrlSetText ([GVAR(disarmTarget)] call EFUNC(common,getName));
|
||||||
|
|
||||||
|
//Clear both inventory lists:
|
||||||
lbClear _groundContainer;
|
lbClear _groundContainer;
|
||||||
lbClear _targetContainer;
|
lbClear _targetContainer;
|
||||||
|
|
||||||
@ -77,17 +91,18 @@ GVAR(disarmTarget) = _target;
|
|||||||
_targetUniqueItems = [GVAR(disarmTarget)] call FUNC(getAllGearUnit);
|
_targetUniqueItems = [GVAR(disarmTarget)] call FUNC(getAllGearUnit);
|
||||||
[_targetContainer, _targetUniqueItems] call FUNC(showItemsInListbox);
|
[_targetContainer, _targetUniqueItems] call FUNC(showItemsInListbox);
|
||||||
|
|
||||||
|
//Try to find a holder that the target is using to drop items into:
|
||||||
_holder = objNull;
|
_holder = objNull;
|
||||||
{
|
{
|
||||||
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
|
if ((_x getVariable [QGVAR(disarmUnit), objNull]) == _target) exitWith {
|
||||||
_holder = _x;
|
_holder = _x;
|
||||||
};
|
};
|
||||||
} forEach ((getpos _target) nearObjects ["GroundWeaponHolder", 3]);
|
} forEach ((getpos _target) nearObjects [DISARM_CONTAINER, 3]);
|
||||||
|
|
||||||
|
//If a holder exists, show it's inventory
|
||||||
if (!isNull _holder) then {
|
if (!isNull _holder) then {
|
||||||
_holderUniqueItems = [_holder] call FUNC(getAllGearContainer);
|
_holderUniqueItems = [_holder] call FUNC(getAllGearContainer);
|
||||||
[_groundContainer, _holderUniqueItems] call FUNC(showItemsInListbox);
|
[_groundContainer, _holderUniqueItems] call FUNC(showItemsInListbox);
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}, 0.05, [_caller, _target, _display]] call CBA_fnc_addPerFrameHandler;
|
}, 0, [_caller, _target, _display]] call CBA_fnc_addPerFrameHandler;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: RscListBox <CONTROL>
|
* 0: RscListBox <CONTROL>
|
||||||
* 1: ItemArray [["items"],[counts]] <ARRAY>
|
* 1: ItemArray [["itemClassnames"],[counts]] <ARRAY>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
@ -19,32 +19,39 @@
|
|||||||
disableSerialization;
|
disableSerialization;
|
||||||
PARAMS_2(_listBoxCtrl,_itemsCountArray);
|
PARAMS_2(_listBoxCtrl,_itemsCountArray);
|
||||||
|
|
||||||
|
private "_classname";
|
||||||
|
|
||||||
{
|
{
|
||||||
_displayName = "";
|
_displayName = "";
|
||||||
_picture = "";
|
_picture = "";
|
||||||
|
|
||||||
|
_classname = _x;
|
||||||
_count = (_itemsCountArray select 1) select _forEachIndex;
|
_count = (_itemsCountArray select 1) select _forEachIndex;
|
||||||
|
|
||||||
switch (true) do {
|
if (_classname != DUMMY_ITEM) then { //Don't show the dummy potato
|
||||||
case (isClass (configFile >> "CfgWeapons" >> _x)): {
|
|
||||||
_displayName = getText (configFile >> "CfgWeapons" >> _x >> "displayName");
|
|
||||||
_picture = getText (configFile >> "CfgWeapons" >> _x >> "picture");
|
|
||||||
};
|
|
||||||
case (isClass (configFile >> "CfgMagazines" >> _x)): {
|
|
||||||
_displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName");
|
|
||||||
_picture = getText (configFile >> "CfgMagazines" >> _x >> "picture");
|
|
||||||
};
|
|
||||||
case (isClass (configFile >> "CfgVehicles" >> _x)): {
|
|
||||||
_displayName = getText (configFile >> "CfgVehicles" >> _x >> "displayName");
|
|
||||||
_picture = getText (configFile >> "CfgVehicles" >> _x >> "picture");
|
|
||||||
};
|
|
||||||
case (isClass (configFile >> "CfgGlasses" >> _x)): {
|
|
||||||
_displayName = getText (configFile >> "CfgGlasses" >> _x >> "displayName");
|
|
||||||
_picture = getText (configFile >> "CfgGlasses" >> _x >> "picture");
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
_listBoxCtrl lbAdd format ["%1", _displayName];
|
switch (true) do {
|
||||||
_listBoxCtrl lbSetData [_forEachIndex, _x];
|
case (isClass (configFile >> "CfgWeapons" >> _classname)): {
|
||||||
_listBoxCtrl lbSetPicture [_forEachIndex, _picture];
|
_displayName = getText (configFile >> "CfgWeapons" >> _classname >> "displayName");
|
||||||
_listBoxCtrl lbSetTextRight [_forEachIndex, str _count];
|
_picture = getText (configFile >> "CfgWeapons" >> _classname >> "picture");
|
||||||
|
};
|
||||||
|
case (isClass (configFile >> "CfgMagazines" >> _classname)): {
|
||||||
|
_displayName = getText (configFile >> "CfgMagazines" >> _classname >> "displayName");
|
||||||
|
_picture = getText (configFile >> "CfgMagazines" >> _classname >> "picture");
|
||||||
|
};
|
||||||
|
case (isClass (configFile >> "CfgVehicles" >> _classname)): {
|
||||||
|
_displayName = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
|
||||||
|
_picture = getText (configFile >> "CfgVehicles" >> _classname >> "picture");
|
||||||
|
};
|
||||||
|
case (isClass (configFile >> "CfgGlasses" >> _classname)): {
|
||||||
|
_displayName = getText (configFile >> "CfgGlasses" >> _classname >> "displayName");
|
||||||
|
_picture = getText (configFile >> "CfgGlasses" >> _classname >> "picture");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
_listBoxCtrl lbAdd format ["%1", _displayName];
|
||||||
|
_listBoxCtrl lbSetData [_forEachIndex, _classname];
|
||||||
|
_listBoxCtrl lbSetPicture [_forEachIndex, _picture];
|
||||||
|
_listBoxCtrl lbSetTextRight [_forEachIndex, str _count];
|
||||||
|
};
|
||||||
} forEach (_itemsCountArray select 0);
|
} forEach (_itemsCountArray select 0);
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* Verified Good <BOOL>
|
* Verified Good <BOOL>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [] call ace_disarming_fnc_verifyMagazinesMoved
|
* [stuff] call ace_disarming_fnc_verifyMagazinesMoved
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -26,7 +26,6 @@ PARAMS_4(_startA,_endA,_startB,_endB);
|
|||||||
|
|
||||||
//Quick Lazy Count Check
|
//Quick Lazy Count Check
|
||||||
if (((count _startA) + (count _startB)) != ((count _endA) + (count _endB))) exitWith {
|
if (((count _startA) + (count _startB)) != ((count _endA) + (count _endB))) exitWith {
|
||||||
systemChat format ["%1 - %2", ((count _startA) + (count _startB)), ((count _endA) + (count _endB))];
|
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -39,6 +38,4 @@ _problem = false;
|
|||||||
_beginingArray deleteAt _index;
|
_beginingArray deleteAt _index;
|
||||||
} forEach (_endA + _endB);
|
} forEach (_endA + _endB);
|
||||||
|
|
||||||
systemChat format ["%1 - %2", _problem, _beginingArray];
|
|
||||||
|
|
||||||
(!_problem) && {_beginingArray isEqualTo []}
|
(!_problem) && {_beginingArray isEqualTo []}
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
//The disarming dialog
|
||||||
|
//Meant to mimic the real BIS inventory (so people understand how to use it)
|
||||||
|
|
||||||
class RscText;
|
class RscText;
|
||||||
class RscPicture;
|
class RscPicture;
|
||||||
class RscActiveText;
|
class RscActiveText;
|
||||||
@ -13,8 +16,7 @@ class GVAR(remoteInventory) {
|
|||||||
fadein = 0;
|
fadein = 0;
|
||||||
fadeout = 0;
|
fadeout = 0;
|
||||||
|
|
||||||
class Colors
|
class Colors {
|
||||||
{
|
|
||||||
dragValidBgr[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])",0.5};
|
dragValidBgr[] = {"(profilenamespace getvariable ['IGUI_TEXT_RGB_R',0])","(profilenamespace getvariable ['IGUI_TEXT_RGB_G',1])","(profilenamespace getvariable ['IGUI_TEXT_RGB_B',1])",0.5};
|
||||||
dragInvalidBgr[] = {"(profilenamespace getvariable ['IGUI_ERROR_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_ERROR_RGB_G',0.0])","(profilenamespace getvariable ['IGUI_ERROR_RGB_B',0.0])",0.5};
|
dragInvalidBgr[] = {"(profilenamespace getvariable ['IGUI_ERROR_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_ERROR_RGB_G',0.0])","(profilenamespace getvariable ['IGUI_ERROR_RGB_B',0.0])",0.5};
|
||||||
dragValidBar[] = {"(profilenamespace getvariable ['IGUI_WARNING_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_WARNING_RGB_G',0.5])","(profilenamespace getvariable ['IGUI_WARNING_RGB_B',0.0])",0.5};
|
dragValidBar[] = {"(profilenamespace getvariable ['IGUI_WARNING_RGB_R',0.8])","(profilenamespace getvariable ['IGUI_WARNING_RGB_G',0.5])","(profilenamespace getvariable ['IGUI_WARNING_RGB_B',0.0])",0.5};
|
||||||
@ -86,7 +88,7 @@ class GVAR(remoteInventory) {
|
|||||||
h = "1 * ((safeZoneH / 1.2) / 25)";
|
h = "1 * ((safeZoneH / 1.2) / 25)";
|
||||||
colorText[] = {1,1,1,0.7};
|
colorText[] = {1,1,1,0.7};
|
||||||
colorActive[] = {1,1,1,1};
|
colorActive[] = {1,1,1,1};
|
||||||
tooltip = "Close";
|
tooltip = "$str_disp_close";
|
||||||
};
|
};
|
||||||
class ExternalContainerBackground: RscPicture {
|
class ExternalContainerBackground: RscPicture {
|
||||||
colorText[] = {1,1,1,0.1};
|
colorText[] = {1,1,1,0.1};
|
||||||
@ -121,16 +123,16 @@ class GVAR(remoteInventory) {
|
|||||||
};
|
};
|
||||||
class GroundContainer: RscListBox {
|
class GroundContainer: RscListBox {
|
||||||
idc = 632;
|
idc = 632;
|
||||||
sizeEx = "0.8 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
sizeEx = "0.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
sizeEx2 = "0.8 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
sizeEx2 = "0.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
rowHeight = "1.75 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
rowHeight = "1.75 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
canDrag = 0;
|
canDrag = 0;
|
||||||
colorText[] = {1,1,1,1};
|
colorText[] = {1,1,1,1};
|
||||||
colorBackground[] = {0,0,0,0};
|
colorBackground[] = {0,0,0,0};
|
||||||
itemBackground[] = {1,1,1,0.2};
|
itemBackground[] = {1,1,1,0.2};
|
||||||
itemSpacing = 0.001;
|
itemSpacing = 0.001;
|
||||||
x = "1.5 * (safeZoneH / 40) + (safezoneX + (safezoneW - safeZoneH)/2)";
|
x = "1.5 * (safeZoneH / 40) + (safezoneX + (safezoneW - safeZoneH)/2)";
|
||||||
y = "2.5 * ((safeZoneH / 1.2) / 25) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2)";
|
y = "2.5 * ((safeZoneH / 1.2) / 25) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2)";
|
||||||
w = "11 * (safeZoneH / 40)";
|
w = "11 * (safeZoneH / 40)";
|
||||||
h = "21.5 * ((safeZoneH / 1.2) / 25)";
|
h = "21.5 * ((safeZoneH / 1.2) / 25)";
|
||||||
};
|
};
|
||||||
|
@ -11,5 +11,6 @@
|
|||||||
|
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
|
#define DISARM_CONTAINER "GroundWeaponHolder"
|
||||||
#define DUMMY_ITEM "ACE_DebugPotato"
|
#define DUMMY_ITEM "ACE_DebugPotato"
|
||||||
#define UNIQUE_MAGAZINES ["ACE_key_customKeyMagazine"]
|
#define UNIQUE_MAGAZINES ["ACE_key_customKeyMagazine"]
|
Loading…
Reference in New Issue
Block a user