Wenn man im Editor in der Initialisierungszeile eines Objekts eine Aktion einfügt, dann ist diese für alle Spieler vorhanden, welche sich dem Objekt nähern.
Für die Heilen Anwendung würde ich aber nicht einen Rucksack nehmen, weil dieser eine Inventar-Aktion hat.
Hier ein Beispiel für ein "Erste-Hilfe Schild" an einem "HMMWV-Fahrzeug":
Skript
heilen_Aktion.sqf wird in der Initialisierungszeile des Schildes aufgerufen.
Code:
//Skript: heilen_Aktion.sqf Hängt das Objekt an ein Fahrzeug an.
// Erstellt im Objekt eine Aktion für den Aufruf des Skripts "Heilen.sqf"
//
//Das Skript ist im Editor in der Initialisierungszeile des Objekts aufzurufen!
// Damit ist es für alle Spieler vorhanden.
//
//Parameter:
// 1. this (Objket das die Aktion hat)
// 2. Name des Fahrzeuges (an welches das Objekt angehängt wird)
// 3. Position des Objekts am Fahrzeug
//
//Beispiel für das Objekt "Erste-Hilfe Schild" an einem "HMMWV-Fahrzeug":
// temp = [this,FahrzeugName,[0,-2.4,-1.5]] execVM "heilen_Aktion.sqf";
private ["_ob1","_ob2","_pos","_aID"];
_ob1 = _this select 0;
_ob2 = _this select 1;
_pos = _this select 2;
//Aktion erstellen
_aID = _ob1 addAction ["Heilen","Heilen.sqf",[],1,true,true];
//Objekt an das Fahrzeug binden
if (local _ob1) then {_ob1 attachTo [_ob2, _pos]};
//Information der Spieler für den Heilvorgang
while {alive _ob1 and alive _ob2} do
{
if (player distance _ob2 < 7) then
{
player sideChat "Heil-Aktion beim roten Kreuz des Fahrzeuges!";
waitUntil {player distance _ob2 > 8}
};
sleep 1
};
//Aktion löschen
if (local _ob1) then {_ob1 removeAction _aID}
Nähert sich ein Spieler unter 7m dem Fahrzeug, dann bekommt er eine Info über die Heilmöglichkeit beim roten Kreuz am Fahrzeug.
Skript
heilen.sqf wird von der Aktion aufgerufen.
Code:
//Skript heilen.sqf wird über Aktion aufgerufen. Heilt den aufrufenden Spieler.
private "_obj";
_obj = _this select 1; //aufrufender Spieler
//Animation ein
_obj switchMove "AinvPknlMstpSnonWrflDnon_medic1";
//Heildauer je nach Verletzung
while {getDammage _obj > 0} do
{
titleText ["Die Verletzungen werden versorgt! Bitte warten...","plain"];
_obj setDammage ((getDammage _obj) - 0.05);
sleep 1
};
//Animation aus
_obj switchMove "AinvPknlMstpSnonWrflDnon_medicEnd";
titleText ["Heilen abgeschlossen!","plain"]
Die Animation ist nicht optimal. Damit kann sich ja wer spielen.
Im Anhang eine Beispielmission.