[Script] mobiler Operationsbereich (Rucksack)

9 Beiträge / 0 neu
Letzter Beitrag
Bild des Benutzers EinStein
Offline
Last seen: vor 2 Stunden 48 Minuten
UnteroffizierMedien: GoldTrupp: GruenVeteran: Kampagne Justitia Q4 2018
Beigetreten: 17/03/2018 - 15:09
[Script] mobiler Operationsbereich (Rucksack)

Mahlzeit mal wieder,

das kürzlich veröffentlichte Skript für aufbaubare Zelte aus Fahrzeugen heraus (medical Facility on the run) hat mich nicht mehr losgelassen und daher gibt es das jetzt auch für den Rucksack.

Durch das Skript erhält man eine ACE-EigenInteraktionsmöglichkeut unter seiner Ausrüstung, mit der man einen mobilen Operationsbereich errichten kann.
Der kann natürlich variabel aussehen, in meinem Beispiel unten wird eine Plane ausgebreitet und auf der Plane findet man dann eine Campinglaterne und einen offenen Erste-Hilfe-Kasten.

Worauf kommt es an?:

  1. Der tragende Spieler muss natürlich den richtigen Rucksack-Typ mit sich tragen (kein Variablen rumschubsen für Missionsbauer)
  2. Der Rucksack muss zum Aufbauen nicht leer sein
  3. Abbauen kann man das dann an der Plane (Achtung: Action ist nur im Knien zu erreichen)

Implementierung:

  1. unter scripts\stein_medicTent_backpack.sqf einfügen
  2. in der initPlayerLocal.sqf: [] call compile preprocessFileLineNumbers "scripts\stein_medicTent_backpack.sqf"; eintragen
  3. ggf. den Rucksack ändern
  4. ggf. die Plane ändern oder Items wechseln (Items können auch leer sein und weggelassen werden)

/*
	author: [TTT] EinStein (e.g. by joko // Jonas, Spec (joko_tent))
	first usage: OP Silent Search - Teil 2
	description: adds an ACE-AddAction to a backpack, which can be used to build a medical area.
	
	Usage (initPlayerLocal.sqf):
	[] call compile preprocessFileLineNumbers "scripts\stein_medicTent_backpack.sqf";
	
	last Updated: 15.09.2019 by [TTT] EinStein
*/

stein_mop_useAnimation = true;
stein_mop_buildAnimation = "Acts_carFixingWheel";
stein_mop_buildTime = 15;
stein_mop_object = "Land_MedicalTent_01_floor_dark_F";
stein_mop_items = ["Land_Camping_Light_F", "Land_FirstAidKit_01_open_F"];
stein_mop_backpack = "B_Kitbag_cbr";

stein_mop_canBuild = {
	params ["_target","_caller","_arguments"];
	_arguments params [];
	_bool = false;
	private _backpack = backpack _caller;
	if ((backpack _caller == stein_mop_backpack) && (player getVariable ["hasTent", true])) then {
		_bool = true;
	};
	_bool;
}; //return bool

stein_mop_canZip = {
	params ["_target","_caller","_arguments"];
	_arguments params [];
	_bool = false;
	private _used = _target getVariable "inUse";
	if (!(_used) && !(player getVariable ["hasTent", true])) then {_bool = true};
	_bool;
}; //return bool

stein_mop_cancel = {
	(_this select 0) params ["_target","_caller","_arguments"];
	_arguments params [];
	hint "Vorgang abgebrochen";
	_caller switchMove "";
	if (typeOf _target == stein_mop_object) then {
		_target setVariable ["inUse", false, true];
	};
}; //return code

stein_mop_zip = {
	(_this select 0) params ["_target","_caller","_arguments"];
	_arguments params [];
	private _posBP = getPos _target;
	private _arrayItems = nearestObjects [(getPos _target), stein_mop_items, 10];
	{
		deleteVehicle _x;
	} forEach _arrayItems;
	deleteVehicle _target;
	_caller setVariable ["hasTent", true];
}; //return code

stein_mop_zip_progressBar = {
	params ["_target","_caller","_arguments"];
	_arguments params [];
	_target setVariable ["inUse", true, true];
	if (stein_mop_useAnimation) then {_caller playMove stein_mop_buildAnimation;};
	[stein_mop_buildTime, _this, stein_mop_zip, stein_mop_cancel, "Baue mobilen Operationsbereich ab"] call ace_common_fnc_progressBar;
}; //return code

stein_mop_build = {
	(_this select 0) params ["_target","_caller","_arguments"];
	_arguments params [];
	private _position = (_target getPos [8, getDir _target]) findEmptyPosition [1, 2, "Tank"];
	_mop = stein_mop_object createVehicle _position;
	_mop setVariable ["ace_medical_isMedicalFacility", true, true];
	_mop setVariable ["inUse", false, true];
	_caller setVariable ["hasTent", false];
	{
		private _posItem = (getPos _mop) findEmptyPosition [1, 3, "Tank"];
		_x createVehicle _posItem;
	} forEach stein_mop_items;
	_caller switchMove "";
}; //return code

stein_mop_build_progressBar = {
	params ["_target","_caller","_arguments"];
	_arguments params [];
	private _position = (_target getPos [8, getDir _target]) findEmptyPosition [1, 2, "Tank"];
	if (_position isEqualTo []) exitWith {
		hint "Nicht genug Platz zum Aufbau der MOP vorhanden.";
	};
	if (stein_mop_useAnimation) then {_caller playMove stein_mop_buildAnimation;};
	[stein_mop_buildTime, _this, stein_mop_build, stein_mop_cancel, "Richte mobilen Operationsbereich ein"] call ace_common_fnc_progressBar;
}; //return code

_buildMOP = ["stein_mop_build", "Errichte mobilen Operationsbereich", "",
	stein_mop_build_progressBar, stein_mop_canBuild
] call ace_interact_menu_fnc_createAction;

_zipMOP = ["stein_mop_zip", "Baue mobilen Operationsbereich ab", "",
	stein_mop_zip_progressBar, stein_mop_canZip
] call ace_interact_menu_fnc_createAction;

[player, 1, ["ACE_SelfActions", "ACE_Equipment"], _buildMOP] call ace_interact_menu_fnc_AddActionToObject;

[stein_mop_object, 0, ["ACE_MainActions"], _zipMOP] call ace_interact_menu_fnc_AddActionToClass;

Falls man Hilfe bei etwas braucht, einfach Fragen und ansonsten wie immer:

Viel Spaß damit!


Changelog:

16.11.2020 - Träger kann keinen Bereich abbauen, wenn er schon einen trägt

Mit Besten Grüßen
EinStein

Bild des Benutzers LittleBassman
Offline
Last seen: vor 1 Tag 17 Minuten
UnteroffizierMedien: BronzeTrupp: GruenVeteran: Kampagne Solomon Q4 2017Veteran: Kampagne Justitia Q4 2018
Beigetreten: 06/09/2016 - 23:59

sehr geil. Komme gern demnächst auf dich zu, da ich dies gern in meiner Misiion einbauen würde.

Disziplin ist die ganze Seele der Armee

Bild des Benutzers LittleBassman
Offline
Last seen: vor 1 Tag 17 Minuten
UnteroffizierMedien: BronzeTrupp: GruenVeteran: Kampagne Solomon Q4 2017Veteran: Kampagne Justitia Q4 2018
Beigetreten: 06/09/2016 - 23:59

sehr geil. Komme gern demnächst auf dich zu, da ich dies gern in meiner Mission einbauen würde.

Disziplin ist die ganze Seele der Armee

Bild des Benutzers Speutzi
Offline
Last seen: vor 1 Tag 11 Minuten
VeteranMedien: PlatinMedal of Honor für besondere Verdienste um das TTTTrupp: GruenVeteran: Kampagne THEMIS Q1 2015Veteran: Kampagne THEMIS II Q2 2015Veteran: Kampagne Kalter Entzug Q4 2015Veteran: Kampagne Phönix Q2 2016Veteran: Kampagne Solomon Q4 2017Veteran: Kampagne Justitia Q4 2018
Beigetreten: 31/01/2015 - 22:23

EinStein dein Script wirft Fehler. Diese Zeile schimpft er an

if (backpack _caller == stein_mop_backpack) then {

Falle Schnapp für Feldnagetier Grau "

Bild des Benutzers Reddiem
Offline
Last seen: vor 2 Tage 24 Minuten
UnteroffizierTrupp: GruenVeteran: Kampagne Kalter Entzug Q4 2015Veteran: Kampagne Phönix Q2 2016Veteran: Kampagne Solomon Q4 2017Veteran: Kampagne Justitia Q4 2018
Beigetreten: 11/10/2015 - 15:22

..

Dran! Drauf! Drüber!​ und Panzer-Hurra!

http://reddiem.portfoliobox.net/

Bild des Benutzers EinStein
Offline
Last seen: vor 2 Stunden 48 Minuten
UnteroffizierMedien: GoldTrupp: GruenVeteran: Kampagne Justitia Q4 2018
Beigetreten: 17/03/2018 - 15:09

Kommentar im Discord. Zur Vollständigkeit halber hier aber auch:

Möglichkeit 1: ; vergessen in Zeile 24
Möglichkeit 2: "" vergessen beim Rucksack in Zeile 17
Möglichkeit 3: Rucksack-classname falsch geschrieben

Sonst stups mich mal und ich schau mal. Das hab ich 1:1 so eingebaut nur ein anderer Rucksack ist's geworden Ein Codeshare nehm ich natürlich auch.

IMMER HER MIT FEHLERN, WÜNSCHEN ODER ANREGUNGEN!

Mit Besten Grüßen
EinStein

Bild des Benutzers Toddy
Offline
Last seen: vor 2 Stunden 28 Minuten
VeteranTrupp: GruenVeteran: Kampagne Phönix Q2 2016Veteran: Kampagne Solomon Q4 2017Veteran: Kampagne Justitia Q4 2018
Beigetreten: 23/03/2016 - 17:28

EinStein wrote:
Worauf kommt es an?:
  1. Der tragende Spieler muss natürlich den richtigen Rucksack-Typ mit sich tragen (kein Variablen rumschubsen für Missionsbauer)
  2. Der Rucksack muss zum Aufbauen nicht leer sein
  3. Abbauen kann man das dann an der Plane (Achtung: Action ist nur im Knien zu erreichen)

 

Moin EinStein,

zu Punkt 2, was passiert mit dem Inhalt während das Zelt aufgebaut ist? Kann man darauf zugreifen oder erst nach dem das Zelt wieder zum Rucksack wurde? Sprich hat das Zelt ein Inventar?

LG Toddy

Bild des Benutzers EinStein
Offline
Last seen: vor 2 Stunden 48 Minuten
UnteroffizierMedien: GoldTrupp: GruenVeteran: Kampagne Justitia Q4 2018
Beigetreten: 17/03/2018 - 15:09

Hi Toddy, 

der Inhalt des Rucksacks bleibt erhalten.

Die Pläne hat kein eigenes Inventar.

In der ersten Version musste der Rucksack leer sein, da er an sich die Plane sein solle. Diesen Gedanken habe ich aber aufgrund der Nutzbarkeit verworfen.

Ich denke du fragst wegen der OP Kingslayer gleich. Ihr könnt mich nochmal ansprechen, wenn noch Fragen offen sind.

Mit Besten Grüßen
EinStein

Bild des Benutzers Andx
Online
Last seen: vor 14 Minuten 22 Sekunden
UnteroffizierTrupp: Gruen
Beigetreten: 06/04/2019 - 22:41

in der ersten Version war der Rucksack die Plane und ist verschwunden wenn man die Plane ausgebreitet hat. Jetzt ist die Plane quasi "im" Rucksack und der Rucksack samt Inhalt bleibt auf dem Rücken.

"... how we survive, is what makes us who we are..."
Andx