diff --git a/addons/misc/CfgVehicles.hpp b/addons/misc/CfgVehicles.hpp index 0e0c992fb..f81c601ea 100644 --- a/addons/misc/CfgVehicles.hpp +++ b/addons/misc/CfgVehicles.hpp @@ -1,6 +1,4 @@ -class CBA_Extended_EventHandlers_base; class CfgVehicles { - #include "vehicle_stretcher.hpp" class Land_IntravenStand_01_base_F; class Land_IntravenStand_01_empty_F: Land_IntravenStand_01_base_F { @@ -46,128 +44,6 @@ class CfgVehicles { ace_dragging_carryDirection = 0; }; - class weapon_bag_base; - class kat_stretcherBag: weapon_bag_base { - class assembleInfo { - displayName = CSTRING(Stretcher_Display); - assembleTo = "kat_stretcher"; - base = ""; - primary = 1; - dissasembleTo[] = {}; - }; - author = "Katalam"; - scope = 2; - editorCategory = "EdCat_Equipment"; - editorSubcategory = "EdSubcat_DismantledWeapons"; - displayName = CSTRING(StretcherPacked_Display); - mass = 60; - }; - - class Tank_F; - class kat_stretcher: Tank_F { - explosionEffect = ""; - fuelExplosionPower = 0; - editorForceEmpty = 1; - editorSubcategory = "edSubcat_Storage"; - crew = "C_man_1"; - icon = "iconObject_1x1"; - hasDriver = 0; - scope = 2; - side = 3; - faction = "CIV_F"; - accuracy = 0.001; - camouflage = 10; - armor = 20; - displayName = CSTRING(Stretcher_Display); - model = QPATHTOF(models\stretcher\vurtual_stretcher.p3d); - simulation = "tankX"; - crewVulnerable = 1; - explosionShielding = 0; - irTarget = 0; - allowTabLock = 0; - memoryPointsGetInCargo = "pos cargo"; - memoryPointsGetInCargoDir = "pos cargo dir"; - cargoAction[] = {"kat_stretcher"}; - tf_isolatedAmount = 0; - numberPhysicalWheels = 0; - hideProxyInCombat = 0; - hideWeaponsCargo = "true"; - ejectDeadCargo = 0; - class Damage { - tex[] = {}; - mat[] = { - QPATHTOF(models\stretcher\seat.rvmat), - QPATHTOF(models\stretcher\seat_destruct.rvmat) - }; - }; - class animationSources { - class seat_hide { - source = "user"; - initPhase = 0; - animPeriod = 0.1; - displayName = "Hide Stretcher"; - forceAnimatePhase = 1; - forceAnimate[] = {"legs_hide", 1}; - }; - }; - maximumLoad = 0; - transportMaxBackpacks = 0; - transportMaxMagazines = 64; - class TransportItems; - class Turrets {}; - transportSoldier = 1; - ace_cargo_canLoad = 0; - ace_Cargo_hasCargo = 0; - ace_dragging_canDrag = 1; - ace_dragging_canCarry = 1; - ace_dragging_dragPosition[] = {0,1.7,0}; - ace_dragging_carryPosition[] = {0, 1.7, 0}; - ace_dragging_dragDirection = 0; - ace_Carry_carryDirection = 0; - ace_cookoff_probability = 0; - slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1", "SlingLoadCargo2", "SlingLoadCargo3", "SlingLoadCargo4"}; - destrType = "destructDefault"; - fuelCapacity = 0; - - //pretend static weapon since some mods don't like unconscious people in static weapons - nameSound = "veh_static_s"; - vehicleClass = "static"; - unitInfoType = "RscUnitInfoStatic"; - crewExplosionProtection = 0; - class DestructionEffects {}; - class VehicleTransport { - class Cargo { - parachuteClass = "B_Parachute_02_F"; - parachuteHeightLimit = 5; - canBeTransported = 1; - dimensions[] = {"VTV_Cargo_Base", "VTV_Cargo_Corner"}; - }; - }; - class EventHandlers { - init = QUOTE(_this call FUNC(stretcher)); - class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {}; - }; - }; - class Land_Stretcher_01_base_F; - class Land_Stretcher_01_olive_F: Land_Stretcher_01_base_F { - ace_cargo_canLoad = 1; - ace_Cargo_hasCargo = 0; - ace_dragging_canDrag = 1; - ace_dragging_canCarry = 1; - ace_dragging_dragPosition[] = {0,1.7,0}; - ace_dragging_carryPosition[] = {0, 1.7, 0}; - ace_dragging_dragDirection = 0; - ace_Carry_carryDirection = 0; - ace_cookoff_probability = 0; - class VehicleTransport { - class Cargo { - parachuteClass = "B_Parachute_02_F"; - parachuteHeightLimit = 5; - canBeTransported = 1; - dimensions[] = {"VTV_Cargo_Base", "VTV_Cargo_Corner"}; - }; - }; - }; class Items_base_F; class kat_Armband_Red_Cross_Object: Items_base_F { scope = 2; @@ -1383,8 +1259,6 @@ class CfgVehicles { class Car_F: Car {}; class Quadbike_01_base_F: Car_F { - stretcherPos[] = {0,0.8,-0.56}; - stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { class KAT_UnloadAndCarryPatient { @@ -1483,4 +1357,4 @@ class CfgVehicles { }; }; }; -}; +}; \ No newline at end of file diff --git a/addons/misc/CfgWeapons.hpp b/addons/misc/CfgWeapons.hpp index f9b9fd610..26f802a6d 100644 --- a/addons/misc/CfgWeapons.hpp +++ b/addons/misc/CfgWeapons.hpp @@ -1,22 +1,8 @@ class CfgWeapons { - class ToolKit; class ACE_ItemCore; class ACE_NVGoggles_WP; class CBA_MiscItem_ItemInfo; - class Attachable_Helistretcher: ToolKit { - author = "Battlekeeper"; - picture = QPATHTOF(ui\stretcher.paa); - displayName = CSTRING(Helistretcher_Display); - descriptionShort = CSTRING(Helistretcher_Desc); - class ItemInfo { - mass = 20; - uniformModel = "\A3\Weapons_F\Items\Toolkit"; - type = 620; - allowedSlots[] = {801,701,901}; - scope = 0; - }; - }; class kat_Armband_Red_Cross_Item: ACE_ItemCore { author = "Miss Heda, vccv9040 (Swedish Forces Pack)"; diff --git a/addons/misc/XEH_PREP.hpp b/addons/misc/XEH_PREP.hpp index e546e01c2..05244afb9 100644 --- a/addons/misc/XEH_PREP.hpp +++ b/addons/misc/XEH_PREP.hpp @@ -1,9 +1,6 @@ -PREP(actionLowerBy10); -PREP(addActionRaise); PREP(addIVbag); PREP(addVehicleCarryLoadActions); PREP(addVehicleUnloadCarryPatientActions); -PREP(attachStretcher); PREP(BubbleWrap); PREP(canCheckDogtag); PREP(canStitchFullBody); @@ -29,8 +26,6 @@ PREP(groupID); PREP(handleRespawn); PREP(handleTourniquetEffects); PREP(handleUnconscious); -PREP(heliAddActionDeploy); -PREP(heliStretcherAttach); PREP(incompatibilityWarning); PREP(init); PREP(removeIVbag); @@ -39,7 +34,6 @@ PREP(setTourniquetTime); PREP(removeTourniquetTime); PREP(slingArmband); PREP(stopCarryingPrompt); -PREP(stretcher); PREP(stringToArray); PREP(surgicalKitProgressFullBody); PREP(switchMagItems); diff --git a/addons/misc/XEH_postInit.sqf b/addons/misc/XEH_postInit.sqf index f3790d0fb..6084ed4a2 100644 --- a/addons/misc/XEH_postInit.sqf +++ b/addons/misc/XEH_postInit.sqf @@ -24,11 +24,6 @@ [QGVAR(addIV_2), LLSTRING(Action_add_IV_Display_250), "", {[_target, _player, 250] call FUNC(addIVbag)}, {[_player, "ACE_salineIV_250"] call FUNC(conditionIVstand)}] call ACEFUNC(interact_menu,createAction) ] call ACEFUNC(interact_menu,addActionToClass); -["Attachable_Helistretcher", ["CONTAINER","CLOTHES"], [LLSTRING(helistretcher_attach)], [], "", [{true},{params ["_unit", "_container", "_item", "_slot", "_params"];_unit == vehicle _unit}], { - params ["_unit", "_container", "_item", "_slot", "_params"]; - [_unit,_item] call kat_misc_fnc_heliStretcherAttach; -},true] call CBA_fnc_addItemContextMenuOption; - if (GVAR(incompatibilityWarning)) then { call FUNC(incompatibilityWarning); }; diff --git a/addons/misc/config.cpp b/addons/misc/config.cpp index 559c35f76..bc5d59b38 100644 --- a/addons/misc/config.cpp +++ b/addons/misc/config.cpp @@ -4,11 +4,8 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; requiredVersion = REQUIRED_VERSION; - units[] = { - "kat_stretcher", - "kat_stretcherBag" - }; - weapons[] = { "Attachable_Helistretcher" }; + units[] = {}; + weapons[] = {}; magazines[] = { }; requiredAddons[] = { "kat_main", @@ -34,7 +31,6 @@ class CfgPatches { }; }; -#include "CfgMoves.hpp" #include "CfgFunctions.hpp" #include "CfgGlasses.hpp" #include "CfgEventHandlers.hpp" diff --git a/addons/misc/functions/fnc_actionLowerBy10.sqf b/addons/misc/functions/fnc_actionLowerBy10.sqf deleted file mode 100644 index 765e3dbba..000000000 --- a/addons/misc/functions/fnc_actionLowerBy10.sqf +++ /dev/null @@ -1,74 +0,0 @@ -#include "..\script_component.hpp" - -/* - * Author: Battlekeeper, modified by YetheSamartaka and Tomcat - * Handles the behaviour of Helistretcher - unwind/rewind the ropes. - * - * - * Example: - * ["_s","_h","_rope1","_rope2","_rope3","_rope4"] call kat_misc_fnc_actionLowerBy10; - * - * Public: No - */ - - params ["_s","_h","_rope1","_rope2","_rope3","_rope4"]; - -_lowerby10 = _h addAction [ - format [" %1", LLSTRING(helistretcher_lower10m)], - { - params ["_target", "_caller", "_actionId", "_arguments"]; - _rope1 = _arguments select 2; - _rope2 = _arguments select 3; - _rope3 = _arguments select 4; - _rope4 = _arguments select 5; - if (ropeLength _rope1 < 50) then { - ropeUnwind [_rope1, 2, 10, true]; - ropeUnwind [_rope2, 2, 10, true]; - ropeUnwind [_rope3, 2, 10, true]; - ropeUnwind [_rope4, 2, 10, true]; - }; - }, - [_s,_h,_rope1,_rope2,_rope3,_rope4], // arguments - 4, // priority - true, // showWindow - true, // hideOnUse - "", // shortcut - "true", // condition - 10, // radius - false, // unconscious - "", // selection - "" // memoryPoint -]; - -_raiseby10 = _h addAction -[ - format [" %1", LLSTRING(helistretcher_raise10m)], - { - params ["_target", "_caller", "_actionId", "_arguments"]; - _rope1 = _arguments select 2; - _rope2 = _arguments select 3; - _rope3 = _arguments select 4; - _rope4 = _arguments select 5; - if (ropeLength _rope1 > 10) then { - ropeUnwind [_rope1, 2, -10, true]; - ropeUnwind [_rope2, 2, -10, true]; - ropeUnwind [_rope3, 2, -10, true]; - ropeUnwind [_rope4, 2, -10, true]; - }; - }, - [_s,_h,_rope1,_rope2,_rope3,_rope4], // arguments - 4, // priority - true, // showWindow - true, // hideOnUse - "", // shortcut - "true", // condition - 10, // radius - false, // unconscious - "", // selection - "" // memoryPoint -]; - -waitUntil {isNull _rope1}; - -_h removeAction _lowerby10; -_h removeAction _raiseby10; diff --git a/addons/misc/functions/fnc_addActionRaise.sqf b/addons/misc/functions/fnc_addActionRaise.sqf deleted file mode 100644 index 60153256c..000000000 --- a/addons/misc/functions/fnc_addActionRaise.sqf +++ /dev/null @@ -1,77 +0,0 @@ -#include "..\script_component.hpp" - -/* - * Author: Battlekeeper, modified by YetheSamartaka and Tomcat - * Handles the behaviour of Helistretcher - unwind/rewind the ropes. - * - * - * Example: - * ["_s","_h","_rope1","_rope2","_rope3","_rope4"] call kat_misc_fnc_addActionRaise; - * - * Public: No - */ - -params ["_s","_h","_rope1","_rope2","_rope3","_rope4"]; - -_h addAction [ - format [" %1", LLSTRING(helistretcher_raise)], - { - params ["_target", "_caller", "_actionId", "_arguments"]; - _caller removeAction _actionId; - _target removeAction _actionId; - _s = _arguments select 0; - _h = _arguments select 1; - _rope1 = _arguments select 2; - _rope2 = _arguments select 3; - _rope3 = _arguments select 4; - _rope4 = _arguments select 5; - - ropeUnwind [_rope1, 10, 3]; - ropeUnwind [_rope2, 10, 3]; - ropeUnwind [_rope3, 10, 3]; - ropeUnwind [_rope4, 10, 3]; - - waitUntil {ropeUnwound _rope1}; - - _u = crew _s; - if (count _u > 0) then { - _patient = _u select 0; - - sleep 8; - deleteVehicle _s; - - [_patient, _h] remoteExec ["moveInCargo", 0]; - - ropeDestroy _rope1; - ropeDestroy _rope2; - ropeDestroy _rope3; - ropeDestroy _rope4; - - _s = createVehicle ["kat_stretcher", (_h modelToWorld [0,0,-5])]; - _s attachTo [_h,[0,0,-.1],"slingload0"]; - [_s,_h] call kat_misc_fnc_heliAddActionDeploy; - } else { - sleep 8; - deleteVehicle _s; - - ropeDestroy _rope1; - ropeDestroy _rope2; - ropeDestroy _rope3; - ropeDestroy _rope4; - - _s = createVehicle ["kat_stretcher", (_h modelToWorld [0,0,-5])]; - _s attachTo [_h,[0,0,-.1],"slingload0"]; - [_s,_h] call kat_misc_fnc_heliAddActionDeploy; - }; - }, - [_s,_h,_rope1,_rope2,_rope3,_rope4], - 4, // priority - true, // showWindow - true, // hideOnUse - "", // shortcut - "!(isNull objectParent player)", // condition - 10, // radius - false, // unconscious - "", // selection - "" // memoryPoint -]; diff --git a/addons/misc/functions/fnc_heliAddActionDeploy.sqf b/addons/misc/functions/fnc_heliAddActionDeploy.sqf deleted file mode 100644 index 9c5313358..000000000 --- a/addons/misc/functions/fnc_heliAddActionDeploy.sqf +++ /dev/null @@ -1,70 +0,0 @@ -#include "..\script_component.hpp" - -/* - * Author: Battlekeeper, modified by YetheSamartaka and Tomcat - * Handles the behaviour of Helistretcher - unwind the ropes. - * - * - * Example: - * [_stretcher,_heli] call kat_misc_fnc_heliAddActionDeploy; - * - * Public: No - */ - - params ["_s","_h"]; //_s == Stretcher (Object) | _h == Heli (Object) - -_h addAction [ - format [" %1", LLSTRING(helistretcher_lower)], - { - params ["_target", "_caller", "_actionId", "_arguments"]; - _caller removeAction _actionId; - _target removeAction _actionId; - _s = _arguments select 0; - _h = _arguments select 1; - deleteVehicle _s; - _s = createVehicle ["kat_stretcher", (_h modelToWorld [0,0,-3])]; - - _s addAction [ - format [" %1", LLSTRING(helistretcher_flip)], - { - params ["_target", "_caller", "_actionId", "_arguments"]; - _target setVectorUp [0,0,1]; - _target setPosATL [(getPosATL _target) select 0, (getPosATL _target) select 1, 0]; - }, - nil, // arguments - 5, // priority - true, // showWindow - true, // hideOnUse - "", // shortcut - "true", // condition - 3, // radius - false, // unconscious - "", // selection - "" // memoryPoint - ]; - - _rope1 = ropeCreate [_h, "slingload0", _s, [.25,1,0], 5]; - _rope2 = ropeCreate [_h, "slingload0", _s, [-.25,1,0], 5]; - _rope3 = ropeCreate [_h, "slingload0", _s, [-.25,-1,0], 5]; - _rope4 = ropeCreate [_h, "slingload0", _s, [.25,-1,0], 5]; - - ropeUnwind [_rope1, 2, 20]; - ropeUnwind [_rope2, 2, 20]; - ropeUnwind [_rope3, 2, 20]; - ropeUnwind [_rope4, 2, 20]; - - waitUntil {ropeUnwound _rope1}; - [_s,_h,_rope1,_rope2,_rope3,_rope4] call kat_misc_fnc_addActionRaise; - [_s,_h,_rope1,_rope2,_rope3,_rope4] call kat_misc_fnc_actionLowerBy10; - }, - [_s,_h], - 1, // priority - true, // showWindow - true, // hideOnUse - "", // shortcut - "!(isNull objectParent player)", // condition - 10, // radius - false, // unconscious - "", // selection - "" // memoryPoint -]; diff --git a/addons/misc/functions/fnc_heliStretcherAttach.sqf b/addons/misc/functions/fnc_heliStretcherAttach.sqf deleted file mode 100644 index 8abadb396..000000000 --- a/addons/misc/functions/fnc_heliStretcherAttach.sqf +++ /dev/null @@ -1,28 +0,0 @@ -#include "..\script_component.hpp" - -/* - * Author: Battlekeeper, modified by YetheSamartaka and Tomcat - * Handles the behaviour of Helistretcher - attaching it and using it. - * - * - * Example: - * [_unit,_item] call kat_misc_fnc_heliStretcherAttach; - * - * Public: No - */ - - if !(_h isKindOf "Helicopter") exitWith { - [LLSTRING(helistretcher_attention1), 2, ace_player, 10] call ACEFUNC(common,displayTextStructured); - player addItem "Attachable_Helistretcher" - }; - - if !(player distance2D _h <= 15) exitWith { - [LLSTRING(helistretcher_attention2), 2, ace_player, 10] call ACEFUNC(common,displayTextStructured); - player addItem "Attachable_Helistretcher" - }; - -_h = cursorObject; -_s = createVehicle ["kat_stretcher", (_h modelToWorld [0,0,-5])]; -_s attachTo [_h,[0,0,-.1],"slingload0"]; - -[_s,_h] call kat_misc_fnc_heliAddActionDeploy; diff --git a/addons/misc/functions/fnc_stretcher.sqf b/addons/misc/functions/fnc_stretcher.sqf deleted file mode 100644 index d3f2db0b8..000000000 --- a/addons/misc/functions/fnc_stretcher.sqf +++ /dev/null @@ -1,40 +0,0 @@ -#include "..\script_component.hpp" -/* - * Author: Katalam - * Init function for stretcher - * - * Arguments: - * 0: Stretcher - * - * Return Value: - * None - * - * Example: - * [cursorTarget] call kat_misc_fnc_stretcher; - * - * Public: No - */ - -params [["_object", objNull, [objNull]]]; - -if !(_object isKindOf "kat_stretcher") exitWith {false}; - -[_object] call ACEFUNC(dragging,initObject); - -[_object, 0, ["ACE_MainActions"], - [QGVAR(disassemble), LLSTRING(disassemble_stretcher_display), "", { - params [["_object", objNull, [objNull]]]; - "kat_stretcherBag" createVehicle (getPos _object); // TODO create at exact position - deleteVehicle _object; - }, { - params [["_object", objNull, [objNull]]]; - if ((count crew _object > 0) || !(isNull attachedTo _object)) exitWith {false}; - true; - }] call ACEFUNC(interact_menu,createAction) -] call ACEFUNC(interact_menu,addActionToObject); - -[_object, 0, ["ACE_MainActions"], - [QGVAR(attach), LLSTRING(disassemble_attach_display), "", {}, {true}, {[_target] call FUNC(attachStretcher)}] call ACEFUNC(interact_menu,createAction) -] call ACEFUNC(interact_menu,addActionToObject); - -true diff --git a/addons/misc/models/stretcher/vurtual_stretcher.p3d b/addons/misc/models/stretcher/vurtual_stretcher.p3d deleted file mode 100644 index f4fa092c0..000000000 Binary files a/addons/misc/models/stretcher/vurtual_stretcher.p3d and /dev/null differ diff --git a/addons/misc/stringtable.xml b/addons/misc/stringtable.xml index b06b8dab0..09e4e8b0b 100644 --- a/addons/misc/stringtable.xml +++ b/addons/misc/stringtable.xml @@ -146,210 +146,6 @@ Suporte: Soro fisiológico IV (250ml) Suolaliuosteline IV: (250ml) - - Disassemble stretcher - Trage einklappen - Złóż nosze - Desarmar camilla - 拆卸式擔架 - 可拆卸式担架 - Rozložit nosítka - 들것 분리 - Désassembler la civière - Sedyeyi sökün - Smonta la barella - Разобрать носилки - 担架を分解する - Desmontar maca - Pura paarit - - - Attach to - Anhängen an - Przyczep do - Adjuntar a - 掛在 - 附加到 - Připevnit k - 에 부착 - Attacher à - Şuna Bağla - Collega a - Приложить к - 取り付ける - Anexar a - Kiinnitä se - - - Attach Stretcher - Przyczep nosze - Trage befestigen - Adjuntar camilla - 附加担架 - 连接担架 - Připevnit nosítka - 들것 부착 - Attacher la civière - Sedyeyi Takın - Attacca la barella - Прикрепить носилки - 担架を取り付ける - Anexar maca - Kiinnitä paarit - - - Lower Stretcher By 10m - Opuść nosze o 10m - Trage um 10m absenken - Bajar la camilla 10m - 下担架 10m - 担架下降 10m - Snížit nosítka o 10m - 들것을 10m 낮추기 - Abaisser la civière de 10 m - Alt Sedye 10m - Barella inferiore di 10 m - Нижние носилки на 10 м - 担架を10m下げる - Abaixar a maca em 10m - Laske paarit 10 m - - - Raise Stretcher By 10m - Wciągnij nosze o 10m - Trage um 10m anheben - Subir la camilla 10m - 将担架抬高 10m - 担架抬高 10m - Vytáhnout nosítka o 10m - 들것을 10m 높이기 - Élever la civière de 10 m - Sedyeyi 10m Yükselt - Alzare la barella di 10 m - Поднимите носилки на 10 м - 担架を10m上げる - Elevar a maca em 10m - Nosta paareja 10 m - - - Raise Stretcher - Wciągnij nosze - Trage anheben - Subir la camilla - AA抬起担架AA - 抬起担架 - Vytáhnout nosítka - 들것 올리기 - Elever la civière - Kaldırma Sedyesi - Alzare la barella - Поднимите носилки - 担架を引き上げる - Elevar a maca - Nosta paarit - - - Lower Stretcher - Opuść nosze - Trage absenken - Bajar la camilla - 下担架 - 放下担架 - Snížit nosítka - 들것 내리기 - Baisser la civière - Alt Sedye - Barella inferiore - Нижние носилки - 担架を降ろす - Abaixar a maca - Laske paarit - - - Flip Stretcher - Obróć nosze - Trage flippen - Voltear camilla - 翻转担架 - 翻转担架 - Otočit nosítka - 들것 뒤집기 - Retourner la civière - Flip Sedye - Flip Barella - Флип носилки - 担架をひっくり返す - Virar a maca - Kääntöpaarit - - - The vehicle you are looking at is not a helicopter! - Pojazd na który patrzysz nie jest śmigłowcem! - Dieses Fahrzeug ist kein Helikopter! - ¡El vehículo al que estás mirando no es un helicóptero! - 您正在查看的车辆不是直升机! - 您正在注视的载具不是直升机! - Vozidlo na které se díváte není helikoptéra! - 당신이 보고 있는 차량은 헬리콥터가 아닙니다! - Le véhicule que vous regardez n'est pas un hélicoptère ! - Baktığınız araç helikopter değil! - Il veicolo che stai guardando non è un elicottero! - Транспортное средство, на которое вы смотрите, не является вертолетом! - 視点を合わせている車両はヘリではありません! - O veículo que você está olhando não é um helicóptero! - Katsomasi ajoneuvo ei ole helikopteri! - - - You must be within 15m of the helicopter and look at it! - Musisz być w zasięgu 15m od śmigłowca i patrzeć w jego kierunku! - Sie müssen sich in einem Umkreis von 15 Metern um den Hubschrauber aufhalten und ihn anschauen! - ¡Debes estar a menos de 15m del helicóptero y viéndolo! - 你必须在直升机 15m 以内并看它! - 你必须在直升机 15m 以内并注视它! - Musíte být v rámci 15m od helikoptéry a dívat se na ni! - 헬리콥터에서 15m 이내에 있어야 하며 헬리콥터를 살펴보세요! - Vous devez être à moins de 15 m de l'hélicoptère et le regarder ! - Helikopterin 15m yakınında olmalı ve ona bakmalısın! - Devi essere a meno di 15 metri dall'elicottero e guardarlo! - Вы должны находиться в пределах 15 м от вертолета и смотреть на него! - ヘリから15m以内で視点を合わせる必要があります! - Você deve estar a 15m do helicóptero e olhando para ele! - Sinun on oltava 15 metrin säteellä helikopterista ja katsottava sitä! - - - Attachable Helistretcher - Nosze śmigłowcowe - Anbringbare Helitrage - Camilla de helicóptero adjuntable - 可连接直升机 - 可连接担架 - Připevnitelná helinosítka - 부착형 헬기용 들것 - Hélicivière amovible - Helitakılabilir sedye - Elibarella agganciabile - Вы должны находиться в пределах 15 м от вертолета и посмотри на это! - ヘリコプター用担架 - Maca de helicóptero acoplável - Kiinnitettävä paarit helikoptereille - - - Allows you to attach a stretcher to a helicopter(Double click) - Pozwala podczepić nosze do śmigłowca(Podwójne kliknięcie) - Ermöglicht das Anbringen einer Trage am Hubschrauber (Doppelklick) - Le permite adjuntar una camilla a un helicóptero (doble clic) - 允许您在直升机上附加担架(双击) - 允许您在直升机上附加担架(双击) - Umožňuje připevnit nosítka na helikoptéru(Dvojtým kliknutím) - 헬기에 들것을 부착할 수 있습니다(더블 클릭) - Vous permet d'attacher une civière sur hélicoptère (double clic) - Helikoptere sedye takmanızı sağlar(Çift tıklama) - Consente di collegare una barella sull'elicottero (doppio clic) - Позволяет прикрепить носилки к вертолету (двойной щелчок) - ヘリコプターに担架を取り付けることができます (ダブルクリック) - Permite anexar uma maca a um helicóptero (clique duplo) - Mahdollistaa paareiden kiinnittämisen helikopteriin (klikkaa kahdesti) - Incompatible addon warning Warnung inkompatibler Mods @@ -443,40 +239,6 @@ Aika ottaa kiristysside pois Никаких переливаний - - Stretcher - 担架 - 擔架 - 担架 - Nosítka - Civière - Krankentrage - Barella - 들것 - Nosze - Носилки - Camilla - Sedye - Maca - Paarit - - - Stretcher (Packed) - 担架 (折り畳み) - 擔架(打包) - 担架(打包) - Nosítka (Zabalená) - Civière (Emballée) - Krankentrage (Gepackt) - Barella (Imballo) - 들것 (포장되다) - Nosze (Zapakowane) - Носилки (упакованные) - Camilla (Plegada) - Sedye (Paketli) - Maca (Embalada) - Paarit (pakattu) - Allow Shared Vehicle Equipment Erlaube geteilte Fahrzeugausrüstung diff --git a/addons/stretcher/$PBOPREFIX$ b/addons/stretcher/$PBOPREFIX$ new file mode 100644 index 000000000..6901033c0 --- /dev/null +++ b/addons/stretcher/$PBOPREFIX$ @@ -0,0 +1 @@ +x\kat\addons\stretcher \ No newline at end of file diff --git a/addons/stretcher/CfgEventHandlers.hpp b/addons/stretcher/CfgEventHandlers.hpp new file mode 100644 index 000000000..cb999fcc9 --- /dev/null +++ b/addons/stretcher/CfgEventHandlers.hpp @@ -0,0 +1,12 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + disableModuload = "true"; + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; \ No newline at end of file diff --git a/addons/misc/CfgMoves.hpp b/addons/stretcher/CfgMoves.hpp similarity index 100% rename from addons/misc/CfgMoves.hpp rename to addons/stretcher/CfgMoves.hpp diff --git a/addons/stretcher/CfgVehicles.hpp b/addons/stretcher/CfgVehicles.hpp new file mode 100644 index 000000000..e655deb79 --- /dev/null +++ b/addons/stretcher/CfgVehicles.hpp @@ -0,0 +1,224 @@ +class CBA_Extended_EventHandlers_base; +class CfgVehicles { + #include "vehicle_stretcher.hpp" + + class weapon_bag_base; + class kat_stretcherBag: weapon_bag_base { + class assembleInfo { + displayName = CSTRING(Stretcher_Display); + assembleTo = "kat_stretcher"; + base = ""; + primary = 1; + dissasembleTo[] = {}; + }; + author = "Katalam"; + scope = 2; + editorCategory = "EdCat_Equipment"; + editorSubcategory = "EdSubcat_DismantledWeapons"; + displayName = CSTRING(StretcherPacked_Display); + mass = 60; + }; + + class Tank: LandVehicle {}; + class Tank_F: Tank { + class ACE_Actions { + class ACE_MainActions; + }; + }; + class kat_stretcher: Tank_F { + explosionEffect = ""; + fuelExplosionPower = 0; + editorForceEmpty = 1; + editorSubcategory = "edSubcat_Storage"; + crew = "C_man_1"; + icon = "iconObject_1x1"; + hasDriver = 0; + scope = 2; + side = 3; + faction = "CIV_F"; + accuracy = 0.001; + camouflage = 10; + armor = 20; + displayName = CSTRING(Stretcher_Display); + model = QPATHTOF(models\stretcher\vurtual_stretcher.p3d); + simulation = "tankX"; + crewVulnerable = 1; + explosionShielding = 0; + irTarget = 0; + allowTabLock = 0; + cargoAction[] = {"kat_stretcher"}; + tf_isolatedAmount = 0; + numberPhysicalWheels = 0; + hideProxyInCombat = 0; + hideWeaponsCargo = "true"; + ejectDeadCargo = 0; + class Damage { + tex[] = {}; + mat[] = { + QPATHTOF(models\stretcher\seat.rvmat), + QPATHTOF(models\stretcher\seat_destruct.rvmat) + }; + }; + class animationSources { + class seat_hide { + source = "user"; + initPhase = 0; + animPeriod = 0.1; + displayName = "Hide Stretcher"; + forceAnimatePhase = 1; + forceAnimate[] = {"legs_hide", 1}; + }; + }; + maximumLoad = 0; + transportMaxBackpacks = 0; + transportMaxMagazines = 64; + class TransportItems; + class Turrets {}; + transportSoldier = 1; + ACEGVAR(cargo,canLoad) = 1; + ACEGVAR(cargo,hasCargo) = 0; + ACEGVAR(dragging,canDrag) = 1; + ACEGVAR(dragging,canCarry) = 1; + ACEGVAR(dragging,dragPosition[]) = {0,1.7,0}; + ACEGVAR(dragging,carryPosition[]) = {0, 1.7, 0}; + ACEGVAR(dragging,dragDirection) = 0; + ACEGVAR(dragging,carryDirection) = 0; + ace_cookoff_probability = 0; + slingLoadCargoMemoryPoints[] = {"SlingLoadCargo1", "SlingLoadCargo2", "SlingLoadCargo3", "SlingLoadCargo4"}; + destrType = "destructDefault"; + fuelCapacity = 0; + + //pretend static weapon since some mods don't like unconscious people in static weapons + nameSound = "veh_static_s"; + vehicleClass = "static"; + unitInfoType = "RscUnitInfoStatic"; + crewExplosionProtection = 0; + class DestructionEffects {}; + class VehicleTransport { + class Cargo { + parachuteClass = "B_Parachute_02_F"; + parachuteHeightLimit = 5; + canBeTransported = 1; + dimensions[] = {"VTV_Cargo_Base", "VTV_Cargo_Corner"}; + }; + }; + + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {}; + }; + + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + class KAT_PackIntoBackpack { + displayName = CSTRING(PackIntoBackpack); + condition = QUOTE(_target call FUNC(canPackIntoBackpack)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(packIntoBackpack)); + icon = QPATHTOF(ui\stretcher.paa); + }; + class KAT_PackIntoBag { + displayName = CSTRING(PackIntoBag); + condition = QUOTE(call FUNC(canPackIntoBag)); + statement = QUOTE(call FUNC(packIntoBag)); + icon = QPATHTOF(ui\stretcher.paa); + }; + class KAT_AttachToVehicle { + displayName = CSTRING(AttachHeliStretcher); + condition = QUOTE(true); + insertChildren = QUOTE(_target call FUNC(attachStretcher)); + icon = QPATHTOF(ui\stretcher.paa); + }; + }; + }; + }; + + class Land_Stretcher_01_base_F; + class Land_Stretcher_01_olive_F: Land_Stretcher_01_base_F { + ACEGVAR(cargo,canLoad) = 1; + ACEGVAR(cargo,hasCargo) = 0; + ACEGVAR(dragging,canDrag) = 1; + ACEGVAR(dragging,canCarry) = 1; + ACEGVAR(dragging,dragPosition[]) = {0,1.7,0}; + ACEGVAR(dragging,carryPosition[]) = {0, 1.7, 0}; + ACEGVAR(dragging,dragDirection) = 0; + ACEGVAR(dragging,carryDirection) = 0; + ace_cookoff_probability = 0; + class VehicleTransport { + class Cargo { + parachuteClass = "B_Parachute_02_F"; + parachuteHeightLimit = 5; + canBeTransported = 1; + dimensions[] = {"VTV_Cargo_Base", "VTV_Cargo_Corner"}; + }; + }; + }; + + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class KAT_Equipment { + class KAT_DeployStretcher { + displayName = CSTRING(UnpackStretcher); + condition = QUOTE(call FUNC(assemble_canDeployStretcher)); + statement = QUOTE(call FUNC(assemble_deployStretcher)); + exceptions[] = {}; + }; + }; + }; + }; + + class Air; + class Helicopter: Air { + class ACE_Actions { + class ACE_MainActions { + class KAT_AttachHeliStretcher { + displayName = CSTRING(AttachHeliStretcher); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canAttachHeliStretcher)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(attachHeliStretcher)); + icon = QPATHTOF(ui\stretcher.paa); + }; + class KAT_DetachHeliStretcher { + displayName = CSTRING(DetachHeliStretcher); + condition = QUOTE(_target call FUNC(canDetachHeliStretcher)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(detachHeliStretcher)); + icon = QPATHTOF(ui\stretcher.paa); + }; + }; + }; + class ACE_SelfActions { + class KAT_HeliStretcher { + + displayName = CSTRING(KAT_HeliStretcher); + icon = QPATHTOF(ui\stretcher.paa); + + class KAT_DeployStretcher { + displayName = CSTRING(DeployHeliStretcher); + condition = QUOTE(_player call FUNC(canDeployHeliStretcher)); + statement = QUOTE(_target call FUNC(deployHeliStretcher)); + icon = QPATHTOF(ui\downarrow.paa); + }; + + class KAT_LowerStretcher { + displayName = CSTRING(LowerHeliStretcher); + condition = QUOTE(_target call FUNC(canAdjustRopes)); + statement = QUOTE(_target call FUNC(lowerHeliStretcher)); + icon = QPATHTOF(ui\downarrow.paa); + }; + + class KAT_RaiseStretcher { + displayName = CSTRING(RaiseHeliStretcher); + condition = QUOTE(_target call FUNC(canAdjustRopes)); + statement = QUOTE(_target call FUNC(raiseHeliStretcher)); + icon = QPATHTOF(ui\uparrow.paa); + }; + + class KAT_RetractStretcher { + displayName = CSTRING(RetractHeliStretcher); + condition = QUOTE(_target call FUNC(canAdjustRopes)); + statement = QUOTE(_target call FUNC(retractHeliStretcher)); + icon = QPATHTOF(ui\uparrow.paa); + }; + }; + + }; + }; +}; diff --git a/addons/stretcher/CfgWeapons.hpp b/addons/stretcher/CfgWeapons.hpp new file mode 100644 index 000000000..3250b9fbc --- /dev/null +++ b/addons/stretcher/CfgWeapons.hpp @@ -0,0 +1,35 @@ +class CfgWeapons +{ + class ACE_ItemCore; + class CBA_MiscItem_ItemInfo; + class kat_helistretcher: ACE_ItemCore { + scope = 2; + author = "Battlekeeper"; + picture = QPATHTOF(ui\stretcher.paa); + displayName = CSTRING(Helistretcher_Display); + descriptionShort = CSTRING(Helistretcher_Desc); + class ItemInfo: CBA_MiscItem_ItemInfo { + mass = 20; + }; + }; + + class Launcher; + class Launcher_Base_F: Launcher { + class WeaponSlotsInfo; + }; + + class kat_CarryStretcherBag: Launcher_Base_F { + class ADDON { + type = "placeable"; + }; + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = 40; + }; + displayName = CSTRING(Stretcher_Display); + author = "MiszczuZPolski"; + scope = 2; + model = QACEPATHTOF(apl,ACE_CSW_Bag.p3d); + modes[] = {}; + picture = QPATHTOF(ui\stretcher.paa); + }; +}; \ No newline at end of file diff --git a/addons/stretcher/XEH_PREP.hpp b/addons/stretcher/XEH_PREP.hpp new file mode 100644 index 000000000..cc3c9bce0 --- /dev/null +++ b/addons/stretcher/XEH_PREP.hpp @@ -0,0 +1,17 @@ +PREP(assemble_deployStretcher); +PREP(assemble_canDeployStretcher); +PREP(attachHeliStretcher); +PREP(attachStretcher); +PREP(canAdjustRopes); +PREP(canAttachHeliStretcher); +PREP(canDeployHeliStretcher); +PREP(canDetachHeliStretcher); +PREP(canPackIntoBackpack); +PREP(canPackIntoBag); +PREP(deployHeliStretcher); +PREP(detachHeliStretcher); +PREP(lowerHeliStretcher); +PREP(packIntoBackpack); +PREP(packIntoBag); +PREP(raiseHeliStretcher); +PREP(retractHeliStretcher); \ No newline at end of file diff --git a/addons/stretcher/XEH_postInit.sqf b/addons/stretcher/XEH_postInit.sqf new file mode 100644 index 000000000..cf7da7d85 --- /dev/null +++ b/addons/stretcher/XEH_postInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +["kat_stretcher", "Init", { + params ["_vehicle"]; + + [_vehicle] call ACEFUNC(dragging,initObject); +}] call CBA_fnc_addClassEventHandler; \ No newline at end of file diff --git a/addons/stretcher/XEH_preInit.sqf b/addons/stretcher/XEH_preInit.sqf new file mode 100644 index 000000000..fe4debe5c --- /dev/null +++ b/addons/stretcher/XEH_preInit.sqf @@ -0,0 +1,11 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP_RECOMPILE_START; +#include "XEH_PREP.hpp" +PREP_RECOMPILE_END; + +#define CBA_SETTINGS_CAT "KAT - ADV Medical: Stretcher" + +ADDON = true; diff --git a/addons/stretcher/config.cpp b/addons/stretcher/config.cpp new file mode 100644 index 000000000..f9e8eb7cc --- /dev/null +++ b/addons/stretcher/config.cpp @@ -0,0 +1,40 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + requiredVersion = REQUIRED_VERSION; + units[] = { + "kat_stretcher", + "kat_stretcherBag" + }; + weapons[] = { "kat_helistretcher", "kat_CarryStretcherBag" }; + magazines[] = { }; + requiredAddons[] = { + "kat_main", + "ace_medical", + "ace_medical_ai", + "ace_medical_blood", + "ace_medical_damage", + "ace_medical_engine", + "ace_medical_feedback", + "ace_medical_gui", + "ace_medical_statemachine", + "ace_medical_status", + "ace_medical_treatment", + "ace_medical_vitals", + "ace_dogtags", + "cba_settings", + "A3_Static_F" + }; + author = "Katalam"; + authors[] = {"Katalam", "MiszczuZPolski"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgMoves.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" diff --git a/addons/stretcher/functions/fnc_assemble_canDeployStretcher.sqf b/addons/stretcher/functions/fnc_assemble_canDeployStretcher.sqf new file mode 100644 index 000000000..f9db6b1e9 --- /dev/null +++ b/addons/stretcher/functions/fnc_assemble_canDeployStretcher.sqf @@ -0,0 +1,22 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Checks if the player can deploy the stretcher. + * + * Arguments: + * 0: Player + * + * Return Value: + * Can deploy + * + * Example: + * [player] call kat_stretcher_fnc_assemble_canDeployStretcher; + * + * Public: No + */ + +params ["_player"]; + +private _secondaryWeapon = secondaryWeapon _player; + +_secondaryWeapon != "" && {getText (configFile >> "CfgWeapons" >> _secondaryWeapon >> QUOTE(ADDON) >> "type") == "placeable"} // return diff --git a/addons/stretcher/functions/fnc_assemble_deployStretcher.sqf b/addons/stretcher/functions/fnc_assemble_deployStretcher.sqf new file mode 100644 index 000000000..b3db60f16 --- /dev/null +++ b/addons/stretcher/functions/fnc_assemble_deployStretcher.sqf @@ -0,0 +1,73 @@ +#include "..\script_component.hpp" +/* + * Author: tcvm + * Deploys the stretcher + * + * Arguments: + * 0: Unit + * + * Return Value: + * None + * + * Example: + * player call kat_stretcher_fnc_assemble_deployStretcher + * + * Public: No + */ + +[{ + params ["_player"]; + TRACE_1("assemble_deployStretcher",_player); + + // Save magazines and attachments (handle loaded launchers which can become csw like CUP Metis) + private _secondaryWeaponInfo = (getUnitLoadout _player) select 1; + private _secondaryWeaponClassname = _secondaryWeaponInfo deleteAt 0; + + + // Remove empty entries + _secondaryWeaponInfo = _secondaryWeaponInfo select {_x isNotEqualTo "" && {_x isNotEqualTo []}}; + + // Remove the tripod from the launcher slot + _player removeWeaponGlobal _secondaryWeaponClassname; + + private _onFinish = { + params ["_args"]; + _args params ["_player", "_secondaryWeaponClassname", "_secondaryWeaponInfo"]; + TRACE_3("deployTripod finish",_player,_secondaryWeaponClassname,_secondaryWeaponInfo); + + private _tripodClassname = "kat_stretcher"; + + // Create a tripod + private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"]; + + private _posATL = _player getRelPos [2, 0]; + _posATL set [2, ((getPosATL _player) select 2) + 0.5]; + + _cswTripod setDir (direction _player); + _cswTripod setPosATL _posATL; + _cswTripod setVectorUp (surfaceNormal _posATL); + + [_player, "PutDown"] call ACEFUNC(common,doGesture); + + // drag after deploying + if ((missionNamespace getVariable [QACEGVAR(csw,dragAfterDeploy), false]) && {["ace_dragging"] call ACEFUNC(common,isModLoaded)}) then { + if ([_player, _cswTripod] call ACEFUNC(dragging,canCarry)) then { + TRACE_1("starting carry",_cswTripod); + [_player, _cswTripod] call ACEFUNC(dragging,startCarry); + } else { + TRACE_1("cannot carry",_cswTripod); + }; + }; + }; + + private _onFailure = { + params ["_args"]; + _args params ["_player", "_secondaryWeaponClassname", "_secondaryWeaponInfo"]; + TRACE_3("deployTripod failure",_player,_secondaryWeaponClassname,_secondaryWeaponInfo); + + // Add stretcher back + [_player, _secondaryWeaponClassname] call CBA_fnc_addWeaponWithoutItems; + }; + + [TIME_PROGRESSBAR(4), [_player, _secondaryWeaponClassname, _secondaryWeaponInfo], _onFinish, _onFailure, LLSTRING(PlaceStretcher_progressBar)] call ACEFUNC(common,progressBar); +}, _this] call CBA_fnc_execNextFrame; diff --git a/addons/stretcher/functions/fnc_attachHeliStretcher.sqf b/addons/stretcher/functions/fnc_attachHeliStretcher.sqf new file mode 100644 index 000000000..7043093aa --- /dev/null +++ b/addons/stretcher/functions/fnc_attachHeliStretcher.sqf @@ -0,0 +1,27 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Attaches helistretcher to helicopter + * + * Arguments: + * 0: Player + * 1: Helicopter + * + * Example: + * [player, cursorObject] call kat_stretcher_fnc_attachHeliStretcher; + * + * Public: No + */ + +params ["_player","_target"]; + +_player removeItem "kat_helistretcher"; +private _stretcher = createVehicle ["kat_stretcher", (_target modelToWorld [0,0,-5])]; +_stretcher attachTo [_target, [0,0,-.1], "slingload0"]; +[_stretcher, false] call ACEFUNC(dragging,setCarryable); +[_stretcher, false] call ACEFUNC(dragging,setDraggable); +_target setVariable [QGVAR(isStretcherAttached), true, true]; +_target setVariable [QGVAR(stretcher), _stretcher, true]; + + diff --git a/addons/misc/functions/fnc_attachStretcher.sqf b/addons/stretcher/functions/fnc_attachStretcher.sqf similarity index 92% rename from addons/misc/functions/fnc_attachStretcher.sqf rename to addons/stretcher/functions/fnc_attachStretcher.sqf index 0fcd99625..3924e372a 100644 --- a/addons/misc/functions/fnc_attachStretcher.sqf +++ b/addons/stretcher/functions/fnc_attachStretcher.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [cursorTarget] call kat_misc_fnc_attachStretcher; + * [cursorTarget] call kat_stretcher_fnc_attachStretcher; * * Public: No */ @@ -24,7 +24,7 @@ private _actions = []; { private _type = typeOf _x; private _name = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); - private _uniqueName = format ["kat_misc_%1", _type]; + private _uniqueName = format ["kat_stretcher_%1", _type]; if (isArray (configFile >> "CfgVehicles" >> _type >> "stretcherPos")) then { _actions pushBack [ [ diff --git a/addons/stretcher/functions/fnc_canAdjustRopes.sqf b/addons/stretcher/functions/fnc_canAdjustRopes.sqf new file mode 100644 index 000000000..bdaa2aee1 --- /dev/null +++ b/addons/stretcher/functions/fnc_canAdjustRopes.sqf @@ -0,0 +1,19 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Checks if ropes can be adjusted + * + * Arguments: + * 0: Helicopter + * + * Example: + * [cursorObject] call kat_stretcher_fnc_canAdjustRopes; + * + * Public: No + */ + +params ["_target"]; + +_target getVariable [QGVAR(isStretcherAttached), false] +&& (_target getVariable [QGVAR(stretcherDeployed), false]) +&& (ropeUnwound (_target getVariable [QGVAR(ropes), []] param [0, objNull])) \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_canAttachHeliStretcher.sqf b/addons/stretcher/functions/fnc_canAttachHeliStretcher.sqf new file mode 100644 index 000000000..b95f701d4 --- /dev/null +++ b/addons/stretcher/functions/fnc_canAttachHeliStretcher.sqf @@ -0,0 +1,20 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Checks if player can attach helistretcher to helicopter + * + * Arguments: + * 0: Player + * 1: Helicopter + * + * Example: + * [player, cursorObject] call kat_stretcher_fnc_canAttachHeliStretcher; + * + * Public: No + */ + +params ["_player","_target"]; + +[_player, "kat_helistretcher"] call ACEFUNC(common,hasItem) +&& !(_target getVariable [QGVAR(isStretcherAttached), false]) \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_canDeployHeliStretcher.sqf b/addons/stretcher/functions/fnc_canDeployHeliStretcher.sqf new file mode 100644 index 000000000..00d1682ee --- /dev/null +++ b/addons/stretcher/functions/fnc_canDeployHeliStretcher.sqf @@ -0,0 +1,18 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Checks if attached helistretcher can be deployed + * + * Arguments: + * 0: Player + * + * Example: + * [player] call kat_stretcher_fnc_canDeployStretcher; + * + * Public: No + */ + +params ["_player"]; + +objectParent _player getVariable [QGVAR(isStretcherAttached), false] && !(objectParent _player getVariable [QGVAR(stretcherDeployed), false]) \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_canDetachHeliStretcher.sqf b/addons/stretcher/functions/fnc_canDetachHeliStretcher.sqf new file mode 100644 index 000000000..04aa1cc34 --- /dev/null +++ b/addons/stretcher/functions/fnc_canDetachHeliStretcher.sqf @@ -0,0 +1,18 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Checks if player can detach helistretcher to helicopter + * + * Arguments: + * 0: Helicopter + * + * Example: + * [player, cursorObject] call kat_stretcher_fnc_canDetachHeliStretcher; + * + * Public: No + */ + +params ["_target"]; + +(_target getVariable [QGVAR(isStretcherAttached), false]) \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_canPackIntoBackpack.sqf b/addons/stretcher/functions/fnc_canPackIntoBackpack.sqf new file mode 100644 index 000000000..f9b303d7e --- /dev/null +++ b/addons/stretcher/functions/fnc_canPackIntoBackpack.sqf @@ -0,0 +1,20 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuPolski + * Checks if stretcher can be packed into backpack + * + * Arguments: + * 0: Stretcher + * + * Return Value: + * + * + * Example: + * [cursorTarget] call kat_stretcher_fnc_canPackIntoBag; + * + * Public: No + */ + +params ["_target"]; + +[true, false] select ((count crew _target > 0) || !(isNull attachedTo _target)) diff --git a/addons/stretcher/functions/fnc_canPackIntoBag.sqf b/addons/stretcher/functions/fnc_canPackIntoBag.sqf new file mode 100644 index 000000000..eb85af6d9 --- /dev/null +++ b/addons/stretcher/functions/fnc_canPackIntoBag.sqf @@ -0,0 +1,20 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Checks if stretcher can be packed into bag + * + * Arguments: + * 0: Stretcher + * + * Return Value: + * + * + * Example: + * [cursorTarget] call kat_stretcher_fnc_canPackIntoBag; + * + * Public: No + */ + +params ["_stretcher"]; + +alive _stretcher && {((crew _stretcher) findIf {alive _x && {!unitIsUAV _x}}) == -1} // return \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_deployHeliStretcher.sqf b/addons/stretcher/functions/fnc_deployHeliStretcher.sqf new file mode 100644 index 000000000..f405a9fde --- /dev/null +++ b/addons/stretcher/functions/fnc_deployHeliStretcher.sqf @@ -0,0 +1,35 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Deploys helistretcher attached below helicopter + * + * Arguments: + * 0: Helicopter + * + * Example: + * [cursorObject] call kat_stretcher_fnc_deployHeliStretcher; + * + * Public: No + */ + +params ["_target"]; + +private _stretcher = _target getVariable [QGVAR(stretcher), objNull]; +detach _stretcher; + +[_stretcher, true] call ACEFUNC(dragging,setCarryable); +[_stretcher, true] call ACEFUNC(dragging,setDraggable); + +private _rope1 = ropeCreate [_target, "slingload0", _stretcher, [.25,1,0], 5]; +private _rope2 = ropeCreate [_target, "slingload0", _stretcher, [-.25,1,0], 5]; +private _rope3 = ropeCreate [_target, "slingload0", _stretcher, [-.25,-1,0], 5]; +private _rope4 = ropeCreate [_target, "slingload0", _stretcher, [.25,-1,0], 5]; + +ropeUnwind [_rope1, 2, 10]; +ropeUnwind [_rope2, 2, 10]; +ropeUnwind [_rope3, 2, 10]; +ropeUnwind [_rope4, 2, 10]; + +_target setVariable [QGVAR(stretcherDeployed), true, true]; +_target setVariable [QGVAR(ropes), [_rope1,_rope2,_rope3,_rope4], true]; diff --git a/addons/stretcher/functions/fnc_detachHeliStretcher.sqf b/addons/stretcher/functions/fnc_detachHeliStretcher.sqf new file mode 100644 index 000000000..17cdbfb3c --- /dev/null +++ b/addons/stretcher/functions/fnc_detachHeliStretcher.sqf @@ -0,0 +1,36 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Detaches helistretcher from helicopter + * + * Arguments: + * 0: Player + * 1: Helicopter + * + * Example: + * [player, cursorObject] call kat_stretcher_fnc_detachHeliStretcher; + * + * Public: No + */ + +params ["_player","_target"]; + +[_player, "kat_helistretcher"] call ACEFUNC(common,addToInventory); + +private _stretcher = _target getVariable [QGVAR(stretcher), objNull]; +deleteVehicle _stretcher; +_target setVariable [QGVAR(stretcher), objNull, true]; + +private _ropes = _target getVariable [QGVAR(ropes), []]; +{ + if (!isNull _x) then { + deleteVehicle _x; + }; +} forEach _ropes; +_target setVariable [QGVAR(ropes), [], true]; + +_target setVariable [QGVAR(isStretcherAttached), false, true]; + + + diff --git a/addons/stretcher/functions/fnc_lowerHeliStretcher.sqf b/addons/stretcher/functions/fnc_lowerHeliStretcher.sqf new file mode 100644 index 000000000..0cce8dcbe --- /dev/null +++ b/addons/stretcher/functions/fnc_lowerHeliStretcher.sqf @@ -0,0 +1,28 @@ +#include "..\script_component.hpp" + +/* + * Author: MiszczuZPolski + * Lowers helistretcher by 10m + * + * Arguments: + * 0: Helicopter + * + * Example: + * [cursorObject] call kat_stretcher_fnc_lowerHeliStretcher; + * + * Public: No + */ + +params ["_target"]; + +#define MAX_LENGTH 50 + +private _stretcher = _target getVariable [QGVAR(stretcher), objNull]; +private _ropes = _target getVariable [QGVAR(ropes), []]; + +{ + private _rope = _x; + if (!isNull _rope && ropeLength _rope <= MAX_LENGTH) then { + ropeUnwind [_rope, 2, 10, true]; + }; +} forEach _ropes; diff --git a/addons/stretcher/functions/fnc_packIntoBackpack.sqf b/addons/stretcher/functions/fnc_packIntoBackpack.sqf new file mode 100644 index 000000000..0ecc32012 --- /dev/null +++ b/addons/stretcher/functions/fnc_packIntoBackpack.sqf @@ -0,0 +1,25 @@ +#include "..\script_component.hpp" +/* + * Author: Katalam + * Children action for attaching stretcher + * + * Arguments: + * 0: Player + * 1: Stretcher + * + * Return Value: + * None + * + * Example: + * [cursorTarget] call kat_stretcher_fnc_packIntoBackpack; + * + * Public: No + */ + +params ["_player", "_target"]; + +private _posATL = _player getRelPos [2, 0]; +_posATL set [2, ((getPosATL _player) select 2) + 0.5]; + +"kat_stretcherBag" createVehicle _posATL; // TODO create at exact position +deleteVehicle _target; \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_packIntoBag.sqf b/addons/stretcher/functions/fnc_packIntoBag.sqf new file mode 100644 index 000000000..b5217e748 --- /dev/null +++ b/addons/stretcher/functions/fnc_packIntoBag.sqf @@ -0,0 +1,74 @@ +#include "..\script_component.hpp" +/* + * Author: tcvm + * Modified by MiszczuZPolski + * Picks up the stretcher and adds it to the player launcher slot. + * + * Arguments: + * 0: Tripod + * 1: Player + * + * Return Value: + * None + * + * Example: + * [cursorObject, player] call kat_stretcher_fnc_packIntoBag; + * + * Public: No + */ + +[{ + params ["_stretcher", "_player"]; + TRACE_2("assemble_pickupTripod",_stretcher,_player); + + private _classname = "kat_CarryStretcherBag"; + + private _onFinish = { + params ["_args"]; + _args params ["_stretcher", "_player", "_classname"]; + TRACE_3("assemble_pickupTripod finish",_stretcher,_player,_classname); + + // Save tripod position before it's deleted + private _stretcherPos = getPosATL _stretcher; + + // Eject dead units (all crew are dead at this point, otherwise condition would have failed), but ignore UAV units + { + if (unitIsUAV _x) then { + _stretcher deleteVehicleCrew _x; + } else { + moveOut _x; + }; + } forEach (crew _stretcher); + + deleteVehicle _stretcher; + + [_player, "PutDown"] call ACEFUNC(common,doGesture); + + // If the player has space, give it to him + if ((alive _player) && {(secondaryWeapon _player) == ""}) exitWith { + [_player, _classname] call CBA_fnc_addWeaponWithoutItems; + }; + + // Try to find existing weapon holders + private _weaponHolder = nearestObject [_stretcherPos, "WeaponHolder"]; + + // If there are none or too far away, make a new one + if (isNull _weaponHolder || {_stretcherPos distance _weaponHolder > 2}) then { + _weaponHolder = createVehicle ["GroundWeaponHolder", [0, 0, 0], [], 0, "CAN_COLLIDE"]; + _weaponHolder setDir random [0, 180, 360]; + _weaponHolder setVehiclePosition [_stretcherPos, [], 0, "CAN_COLLIDE"]; // Places object on surface below + }; + + _weaponHolder addWeaponCargoGlobal [_classname, 1]; + }; + + private _condition = { + params ["_args"]; + _args params ["_stretcher"]; + + _stretcher call FUNC(canPackIntoBag) + }; + + TRACE_3("",4,typeOf _stretcher,_classname); + [TIME_PROGRESSBAR(4), [_stretcher, _player, _classname], _onFinish, {}, LLSTRING(PickupStretcher_progressBar), _condition] call ACEFUNC(common,progressBar); +}, _this] call CBA_fnc_execNextFrame; \ No newline at end of file diff --git a/addons/stretcher/functions/fnc_raiseHeliStretcher.sqf b/addons/stretcher/functions/fnc_raiseHeliStretcher.sqf new file mode 100644 index 000000000..a45b49654 --- /dev/null +++ b/addons/stretcher/functions/fnc_raiseHeliStretcher.sqf @@ -0,0 +1,25 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Raises helistretcher by 10m + * + * Arguments: + * 0: Helicopter + * + * Example: + * [cursorObject] call kat_stretcher_fnc_raiseHeliStretcher; + * + * Public: No + */ + +params ["_target"]; + +private _stretcher = _target getVariable [QGVAR(stretcher), objNull]; +private _ropes = _target getVariable [QGVAR(ropes), []]; + +{ + private _rope = _x; + if (!isNull _rope) then { + ropeUnwind [_rope, 2, -10, true]; + }; +} forEach _ropes; diff --git a/addons/stretcher/functions/fnc_retractHeliStretcher.sqf b/addons/stretcher/functions/fnc_retractHeliStretcher.sqf new file mode 100644 index 000000000..2b4149b3c --- /dev/null +++ b/addons/stretcher/functions/fnc_retractHeliStretcher.sqf @@ -0,0 +1,62 @@ +#include "..\script_component.hpp" +/* + * Author: MiszczuZPolski + * Retracts helistretcher back to heli, and moves crew back to heli + * + * Arguments: + * 0: Helicopter + * + * Example: + * [cursorObject] call kat_stretcher_fnc_retractHeliStretcher; + * + * Public: No + */ +params ["_target"]; + +private _stretcher = _target getVariable [QGVAR(stretcher), objNull]; +private _ropes = _target getVariable [QGVAR(ropes), []]; + +{ + private _rope = _x; + if (!isNull _rope) then { + ropeUnwind [_rope, 2, -(ropeLength _rope), true]; + }; +} forEach _ropes; + +[{ + params ["_target", "_stretcher", "_ropes"]; + + private _rope = _ropes select 0; + ropeUnwound _rope; +}, +{ + params ["_target", "_stretcher", "_ropes"]; + + private _crew = crew _stretcher; + if (count _crew > 0) then { + { + _x leaveVehicle _stretcher; + moveOut _x; + + _x assignAsCargo _target; + _x moveInCargo _target; + } forEach _crew; + }; + + { + if (!isNull _x) then { + ropeDestroy _x; + }; + } forEach _ropes; + + deleteVehicle _stretcher; + + private _stretcher = createVehicle ["kat_stretcher", (_target modelToWorld [0,0,-5])]; + _stretcher attachTo [_target, [0,0,-.1], "slingload0"]; + [_stretcher, false] call ACEFUNC(dragging,setCarryable); + [_stretcher, false] call ACEFUNC(dragging,setDraggable); + _target setVariable [QGVAR(isStretcherAttached), true, true]; + _target setVariable [QGVAR(stretcher), _stretcher, true]; + _target setVariable [QGVAR(stretcherDeployed), false, true]; + +}, [_target, _stretcher, _ropes]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/misc/models/stretcher/Model.cfg b/addons/stretcher/models/stretcher/Model.cfg similarity index 100% rename from addons/misc/models/stretcher/Model.cfg rename to addons/stretcher/models/stretcher/Model.cfg diff --git a/addons/misc/models/stretcher/env_land_co.paa b/addons/stretcher/models/stretcher/env_land_co.paa similarity index 100% rename from addons/misc/models/stretcher/env_land_co.paa rename to addons/stretcher/models/stretcher/env_land_co.paa diff --git a/addons/misc/models/stretcher/seat.rvmat b/addons/stretcher/models/stretcher/seat.rvmat similarity index 80% rename from addons/misc/models/stretcher/seat.rvmat rename to addons/stretcher/models/stretcher/seat.rvmat index 209e7ac18..a541c7bd5 100644 --- a/addons/misc/models/stretcher/seat.rvmat +++ b/addons/stretcher/models/stretcher/seat.rvmat @@ -8,7 +8,7 @@ PixelShaderID = "NormalMapSpecularMap"; VertexShaderID = "NormalMap"; class Stage1 { - texture = "x\kat\addons\misc\models\stretcher\seat_nohq.paa"; + texture = "x\kat\addons\stretcher\models\stretcher\seat_nohq.paa"; uvSource = "tex"; class uvTransform { @@ -20,7 +20,7 @@ class Stage1 { }; class Stage2 { - texture = "x\kat\addons\misc\models\stretcher\seat_smdi.paa"; + texture = "x\kat\addons\stretcher\models\stretcher\seat_smdi.paa"; uvSource = "tex"; class uvTransform { diff --git a/addons/misc/models/stretcher/seat_destruct.rvmat b/addons/stretcher/models/stretcher/seat_destruct.rvmat similarity index 81% rename from addons/misc/models/stretcher/seat_destruct.rvmat rename to addons/stretcher/models/stretcher/seat_destruct.rvmat index e2073da53..5d843e5e8 100644 --- a/addons/misc/models/stretcher/seat_destruct.rvmat +++ b/addons/stretcher/models/stretcher/seat_destruct.rvmat @@ -8,7 +8,7 @@ PixelShaderID = "NormalMapMacroASSpecularDIMap"; VertexShaderID = "NormalMapAS"; class Stage1 { - texture = "x\kat\addons\misc\models\stretcher\seat_nohq.paa"; + texture = "x\kat\addons\stretcher\models\stretcher\seat_nohq.paa"; uvSource = "tex"; class uvTransform { @@ -20,7 +20,7 @@ class Stage1 { }; class Stage2 { - texture = "x\kat\addons\misc\models\stretcher\seat_destruct_mc.paa"; + texture = "x\kat\addons\stretcher\models\stretcher\seat_destruct_mc.paa"; uvSource = "tex"; class uvTransform { @@ -44,7 +44,7 @@ class Stage3 { }; class Stage4 { - texture = "x\kat\addons\misc\models\stretcher\seat_destruct_smdi.paa"; + texture = "x\kat\addons\stretcher\models\stretcher\seat_destruct_smdi.paa"; uvSource = "tex"; class uvTransform { diff --git a/addons/misc/models/stretcher/seat_destruct_mc.paa b/addons/stretcher/models/stretcher/seat_destruct_mc.paa similarity index 100% rename from addons/misc/models/stretcher/seat_destruct_mc.paa rename to addons/stretcher/models/stretcher/seat_destruct_mc.paa diff --git a/addons/misc/models/stretcher/seat_destruct_smdi.paa b/addons/stretcher/models/stretcher/seat_destruct_smdi.paa similarity index 100% rename from addons/misc/models/stretcher/seat_destruct_smdi.paa rename to addons/stretcher/models/stretcher/seat_destruct_smdi.paa diff --git a/addons/misc/models/stretcher/seat_nohq.paa b/addons/stretcher/models/stretcher/seat_nohq.paa similarity index 100% rename from addons/misc/models/stretcher/seat_nohq.paa rename to addons/stretcher/models/stretcher/seat_nohq.paa diff --git a/addons/misc/models/stretcher/seat_smdi.paa b/addons/stretcher/models/stretcher/seat_smdi.paa similarity index 100% rename from addons/misc/models/stretcher/seat_smdi.paa rename to addons/stretcher/models/stretcher/seat_smdi.paa diff --git a/addons/misc/models/stretcher/stretcher.rvmat b/addons/stretcher/models/stretcher/stretcher.rvmat similarity index 94% rename from addons/misc/models/stretcher/stretcher.rvmat rename to addons/stretcher/models/stretcher/stretcher.rvmat index 7e097be4a..a90a682ec 100644 --- a/addons/misc/models/stretcher/stretcher.rvmat +++ b/addons/stretcher/models/stretcher/stretcher.rvmat @@ -8,7 +8,7 @@ PixelShaderID="Super"; VertexShaderID="Super"; class Stage1 { - texture="x\kat\addons\misc\models\stretcher\stretcher_nohq.tga"; + texture="x\kat\addons\stretcher\models\stretcher\stretcher_nohq.tga"; uvSource="tex"; class uvTransform { @@ -80,7 +80,7 @@ class Stage6 }; class Stage7 { - texture="x\kat\addons\misc\models\stretcher\env_land_co.tga"; + texture="x\kat\addons\stretcher\models\stretcher\env_land_co.tga"; uvSource="tex"; class uvTransform { diff --git a/addons/misc/models/stretcher/stretcher_co.paa b/addons/stretcher/models/stretcher/stretcher_co.paa similarity index 100% rename from addons/misc/models/stretcher/stretcher_co.paa rename to addons/stretcher/models/stretcher/stretcher_co.paa diff --git a/addons/misc/models/stretcher/stretcher_nohq.paa b/addons/stretcher/models/stretcher/stretcher_nohq.paa similarity index 100% rename from addons/misc/models/stretcher/stretcher_nohq.paa rename to addons/stretcher/models/stretcher/stretcher_nohq.paa diff --git a/addons/stretcher/models/stretcher/vurtual_stretcher.p3d b/addons/stretcher/models/stretcher/vurtual_stretcher.p3d new file mode 100644 index 000000000..1e1457430 Binary files /dev/null and b/addons/stretcher/models/stretcher/vurtual_stretcher.p3d differ diff --git a/addons/stretcher/script_component.hpp b/addons/stretcher/script_component.hpp new file mode 100644 index 000000000..fb8970be8 --- /dev/null +++ b/addons/stretcher/script_component.hpp @@ -0,0 +1,24 @@ +#define COMPONENT stretcher +#define COMPONENT_BEAUTIFIED KAT - STRETCHER +#include "\x\kat\addons\main\script_mod.hpp" + +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_STRETCHER + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_STRETCHER + #define DEBUG_SETTINGS DEBUG_SETTINGS_MISC +#endif + +#ifdef FAST_PROGRESSBARS + #define TIME_PROGRESSBAR(X) ((X) * 0.075) +#else + #define TIME_PROGRESSBAR(X) ((X) * ACEGVAR(csw,progressBarTimeCoefficent)) +#endif + + +#include "\x\kat\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/stretcher/stringtable.xml b/addons/stretcher/stringtable.xml new file mode 100644 index 000000000..07b14965c --- /dev/null +++ b/addons/stretcher/stringtable.xml @@ -0,0 +1,193 @@ + + + + + Disassemble stretcher + Trage einklappen + Złóż nosze + Desarmar camilla + 拆卸式擔架 + 可拆卸式担架 + Rozložit nosítka + 들것 분리 + Désassembler la civière + Sedyeyi sökün + Smonta la barella + Разобрать носилки + 担架を分解する + Desmontar maca + Pura paarit + + + Attach to + Anhängen an + Przyczep do + Adjuntar a + 掛在 + 附加到 + Připevnit k + 에 부착 + Attacher à + Şuna Bağla + Collega a + Приложить к + 取り付ける + Anexar a + Kiinnitä se + + + Attach Stretcher + Przyczep nosze + Trage befestigen + Adjuntar camilla + 附加担架 + 连接担架 + Připevnit nosítka + 들것 부착 + Attacher la civière + Sedyeyi Takın + Attacca la barella + Прикрепить носилки + 担架を取り付ける + Anexar maca + Kiinnitä paarit + + + Raise Stretcher + Wciągnij nosze + Trage anheben + Subir la camilla + AA抬起担架AA + 抬起担架 + Vytáhnout nosítka + 들것 올리기 + Elever la civière + Kaldırma Sedyesi + Alzare la barella + Поднимите носилки + 担架を引き上げる + Elevar a maca + Nosta paarit + + + Lower Stretcher + Opuść nosze + Trage absenken + Bajar la camilla + 下担架 + 放下担架 + Snížit nosítka + 들것 내리기 + Baisser la civière + Alt Sedye + Barella inferiore + Нижние носилки + 担架を降ろす + Abaixar a maca + Laske paarit + + + Deploy Stretcher + Wypuść nosze + + + Retract Stretcher + Przywołaj nosze + + + Detach Stretcher + Odczep nosze + + + Attachable Helistretcher + Nosze śmigłowcowe + Anbringbare Helitrage + Camilla de helicóptero adjuntable + 可连接直升机 + 可连接担架 + Připevnitelná helinosítka + 부착형 헬기용 들것 + Hélicivière amovible + Helitakılabilir sedye + Elibarella agganciabile + Вы должны находиться в пределах 15 м от вертолета и посмотри на это! + ヘリコプター用担架 + Maca de helicóptero acoplável + Kiinnitettävä paarit helikoptereille + + + Allows you to attach a stretcher to a helicopter(Double click) + Pozwala podczepić nosze do śmigłowca(Podwójne kliknięcie) + Ermöglicht das Anbringen einer Trage am Hubschrauber (Doppelklick) + Le permite adjuntar una camilla a un helicóptero (doble clic) + 允许您在直升机上附加担架(双击) + 允许您在直升机上附加担架(双击) + Umožňuje připevnit nosítka na helikoptéru(Dvojtým kliknutím) + 헬기에 들것을 부착할 수 있습니다(더블 클릭) + Vous permet d'attacher une civière sur hélicoptère (double clic) + Helikoptere sedye takmanızı sağlar(Çift tıklama) + Consente di collegare una barella sull'elicottero (doppio clic) + Позволяет прикрепить носилки к вертолету (двойной щелчок) + ヘリコプターに担架を取り付けることができます (ダブルクリック) + Permite anexar uma maca a um helicóptero (clique duplo) + Mahdollistaa paareiden kiinnittämisen helikopteriin (klikkaa kahdesti) + + + Stretcher + 担架 + 擔架 + 担架 + Nosítka + Civière + Krankentrage + Barella + 들것 + Nosze + Носилки + Camilla + Sedye + Maca + Paarit + + + Stretcher (Packed) + 担架 (折り畳み) + 擔架(打包) + 担架(打包) + Nosítka (Zabalená) + Civière (Emballée) + Krankentrage (Gepackt) + Barella (Imballo) + 들것 (포장되다) + Nosze (Zapakowane) + Носилки (упакованные) + Camilla (Plegada) + Sedye (Paketli) + Maca (Embalada) + Paarit (pakattu) + + + Pack into bag + Spakuj jako torba + + + Pack into backpack + Spakuj jako plecak + + + Deploy stretcher + Rozstaw nosze + + + Placing stretcher... + Rozkładanie noszy... + + + Packing stretcher... + Pakowanie noszy... + + + KAT Helistretcher + + + diff --git a/addons/misc/ui/downarrow.paa b/addons/stretcher/ui/downarrow.paa similarity index 100% rename from addons/misc/ui/downarrow.paa rename to addons/stretcher/ui/downarrow.paa diff --git a/addons/misc/ui/fliparrow.paa b/addons/stretcher/ui/fliparrow.paa similarity index 100% rename from addons/misc/ui/fliparrow.paa rename to addons/stretcher/ui/fliparrow.paa diff --git a/addons/misc/ui/stretcher.paa b/addons/stretcher/ui/stretcher.paa similarity index 100% rename from addons/misc/ui/stretcher.paa rename to addons/stretcher/ui/stretcher.paa diff --git a/addons/misc/ui/uparrow.paa b/addons/stretcher/ui/uparrow.paa similarity index 100% rename from addons/misc/ui/uparrow.paa rename to addons/stretcher/ui/uparrow.paa diff --git a/addons/misc/vehicle_stretcher.hpp b/addons/stretcher/vehicle_stretcher.hpp similarity index 82% rename from addons/misc/vehicle_stretcher.hpp rename to addons/stretcher/vehicle_stretcher.hpp index de8d52b69..2434507ad 100644 --- a/addons/misc/vehicle_stretcher.hpp +++ b/addons/stretcher/vehicle_stretcher.hpp @@ -23,3 +23,11 @@ class B_Heli_Transport_03_F: Heli_Transport_03_base_F { stretcherPos[] = {0,-0.4,-2.08}; stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; }; + +class LandVehicle; +class Car: LandVehicle {}; +class Car_F: Car {}; +class Quadbike_01_base_F: Car_F { + stretcherPos[] = {0,0.8,-0.56}; + stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; +};