mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
e2ac18a05d
* advanced_ballistics * advanced_fatigue * advanced_throwing * ai * aircraft * arsenal * atragmx * attach * backpacks * ballistics * captives * cargo * chemlights * common * concertina_wire * cookoff * dagr * disarming * disposable * dogtags * dragging * explosives * fastroping * fcs * finger * frag * gestures * gforces * goggles * grenades * gunbag * hearing * hitreactions * huntir * interact_menu * interaction * inventory * kestrel4500 * laser * laserpointer * logistics_uavbattery * logistics_wirecutter * magazinerepack * map * map_gestures * maptools * markers * medical * medical_ai * medical_blood * medical_menu * microdagr * minedetector * missileguidance * missionmodules * mk6mortar * modules * movement * nametags * nightvision * nlaw * optics * optionsmenu * overheating * overpressure * parachute * pylons * quickmount * rangecard * rearm * recoil * refuel * reload * reloadlaunchers * repair * respawn * safemode * sandbag * scopes * slideshow * spectator * spottingscope * switchunits * tacticalladder * tagging * trenches * tripod * ui * vector * vehiclelock * vehicles * viewdistance * weaponselect * weather * winddeflection * yardage450 * zeus * arsenal defines.hpp * optionals * DEBUG_MODE_FULL 1 * DEBUG_MODE_FULL 2 * Manual fixes * Add SQF Validator check for #include after block comment * explosives fnc_openTimerUI * fix uniqueItems
68 lines
2.1 KiB
Plaintext
68 lines
2.1 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: Phyma
|
|
* Find glass door.
|
|
*
|
|
* Arguments:
|
|
* 0: Distance <NUMBER>
|
|
* 1: House <OBJECT>
|
|
* 2: Door name <STRING>
|
|
*
|
|
* Return Value:
|
|
* 0: Door Name <STRING>
|
|
*
|
|
* Example:
|
|
* [player, target] call ace_interaction_fnc_getGlassDoor
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_distance", "_house", "_door"];
|
|
|
|
private _doorParts = [];
|
|
private _doorPos = [];
|
|
private _animate = animationNames _house;
|
|
private _glassDoor = _door splitString "_";
|
|
private _glassPos = (_house selectionPosition [(_glassDoor select 0) + "_" + (_glassDoor select 1) + "_effects", "Memory"]);
|
|
// Calculate all animation names so we know what is there
|
|
{
|
|
private _animName = toLower _x;
|
|
if (((_animName find "door") != -1) && ((_animName find "locked") == -1) && ((_animName find "disabled") == -1) && ((_animName find "handle") == -1)) then {
|
|
private _splitStr = _animName splitString "_";
|
|
_doorParts pushBack ((_splitStr select 0) + "_" + (_splitStr select 1) + "_trigger");
|
|
};
|
|
} forEach _animate;
|
|
|
|
|
|
// Get the pos of all the door components and save the parts
|
|
{
|
|
_doorPos pushBack (_house selectionPosition [_x, "Memory"]);
|
|
} forEach _doorParts;
|
|
|
|
// Calculate what door that is closest to the glass door
|
|
private _lowestDistance = 0;
|
|
{
|
|
private _objDist = _glassPos distance _x;
|
|
//Make sure we dont take another door by mistake
|
|
if (_objDist <= _distance) then {
|
|
//Need to set the value in the beginning
|
|
if (_lowestDistance == 0) then {
|
|
_lowestDistance = _objDist;
|
|
private _splitStr = (_doorParts select _forEachIndex) splitString "_";
|
|
_door = (_splitStr select 0) + "_" + (_splitStr select 1);
|
|
} else {
|
|
if (_objDist < _lowestDistance) then {
|
|
_lowestDistance = _objDist;
|
|
private _splitStr = (_doorParts select _forEachIndex) splitString "_";
|
|
_door = (_splitStr select 0) + "_" + (_splitStr select 1);
|
|
};
|
|
};
|
|
};
|
|
} forEach _doorPos;
|
|
|
|
// Check if we have a door or if it is the glass part
|
|
if ((isNil "_door") || ((_door find "glass") != -1)) exitWith {};
|
|
|
|
_door
|
|
|