Einzelnen Beitrag anzeigen
Alt 09.01.2013, 15:18   #14 (permalink)
Vienna
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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.
Angehängte Dateien
Dateityp: zip Aktion_an_attachTo_Objekt-utes.zip (2,4 KB, 35x aufgerufen)
Vienna ist offline