Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 29.10.2011, 13:30   #1 (permalink)
Newbie
 
Registriert seit: 29.10.2011
Beiträge: 5
Icon4 KI nachRespawn im Fahrzeug

Hi Leute!

Ich habe mich dumm gegooglet auf der Suche nach einer Antwort für mein Problem.
Ich erstelle gerade eine neue MP-Map und wollte feindliche Einheiten erstellen. Ich habe einen BMP-3 plaziert, inklusive Crew. Wenn der Panzer zerstört wird, soll die Crew respawnen und in den bereits gerespawnten Panzer einsteigen.
Der Panzer und die Crew respawnen einwandfrei, habe schon ein Skript dafür, jedoch funktioniert das mit der Crew nicht, sie will einfach nicht einsteigen.
Ich finde es schade, denn das nervt mich gewaltig !!


Ich bitte euch mir zu helfen, leibe Community!!


mfg jackpot
jackpot ist offline   Mit Zitat antworten
Alt 29.10.2011, 20:07   #2 (permalink)
User gesperrt
5000 Beiträge
 
Registriert seit: 20.10.2009
Ort: Jetzt auch im BIF
Alter: 33
Beiträge: 9.163
Standard

Ich hab's mal ins richtige Forum verschoben.
AHTNTEPPOP ist offline   Mit Zitat antworten
Alt 29.10.2011, 23:38   #3 (permalink)
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

Wo ist dein Skript?
Vienna ist offline   Mit Zitat antworten
Alt 31.10.2011, 14:12   #4 (permalink)
Newbie
 
Registriert seit: 29.10.2011
Beiträge: 5
Icon9

Das Script für den Fahrzeug-Respawn war ein vorgefertigtes, welches ich mir downgeloadet habe. Es heißt "respawn_vehicle.sqs" und ist im Missionsordner drin.
Den Einheiten-Respawn habe ich per "Respawn_East"-Markierung gemacht.
Dann habe ich deine Idee, Vienna, aufgegriffen, und die Einheiten steigen mittlerweile auch in die Fahrzeuge ein. Manchmal gibt es Probleme, sodass sie nicht gleich einsteigen wollen.
(Ich habe einen Auslöser erstellt mit einem moveIn-Befehl bei Deak.: [pl2 (Soldatenname) moveInDriver Fz4 (Fahrzeugname)].
Bei den Einheiten dann z.B. "this moveInDriver Fz4")

Und witzigerweise spawnen statt nur einem manchmal zwei Fahrzeuge. Das ist aber bei den BLUFOR Einheiten anders, da spawnt ganz normal nur ein Fahrzeug.

Am besten wäre es sowieso, wenn man gleich besetzte Fahrzeuge spawnen könnte, ich habe aber auch dafür noch keine Lösung gefunden.


mfg jackpot
jackpot ist offline   Mit Zitat antworten
Alt 01.11.2011, 07:56   #5 (permalink)
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

Kopiere den Inhalt des Skripts hier rein.

Schreibe am Anfang der Zeilen [code] und am Ende [/code...] ohne die 3 Punkte.

Wen beim Respawn zwei Fahrzeug erstellt werden, dann liegt das vermutlich daran, dass in MP das Respawnskript bei zwei Spielern aufgerufen wird.
Vienna ist offline   Mit Zitat antworten
Alt 02.11.2011, 14:39   #6 (permalink)
Newbie
 
Registriert seit: 29.10.2011
Beiträge: 5
Standard

Jo, hier mein Skript:

Code:
? !(local server) : exit


_vehicle = vehicle _this
_startpos = getpos _vehicle
_direction = getdir _vehicle
_typ = typeOf _this


#loop
~10
? (getdammage _vehicle > 0.98) : goto "checkdamage"
? !(canMove _vehicle) : goto "checkmove"
? (fuel _vehicle == 0) : goto "checkfuel"
goto "loop"


#checkdamage
~10
? (getdammage _vehicle > 0.98) : goto "destruct"
goto "loop"


#checkmove
~10
? (getdammage _vehicle == 1) : goto "destruct"
~120
? (canMove _vehicle) : goto "loop"
goto "destruct"


#checkfuel
~10
? (getdammage _vehicle == 1) : goto "destruct"
~120
? (fuel _vehicle > 0) : goto "loop"
goto "destruct"


#destruct
? (getdammage _vehicle < 1) : _vehicle setdammage 1
~30
deletevehicle _vehicle
goto "createnew"


#createnew
~10
_new = _typ createVehicle [_startpos select 0, _startpos select 1,0]
_new setdir _direction
_new exec "respawn_vehicle.sqs"

exit
jackpot ist offline   Mit Zitat antworten
Alt 02.11.2011, 20:40   #7 (permalink)
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

Dein Skript ist veraltet und enthält nicht den Respawn der Besatzung. Nimm das folgende Skript.

Es enthält einen Wegpunkt der das Fahrzeug vom Respawnort zu einem Zielort fahren lässt. Für den den Zielort musst du eine Position angeben. Hier im Beispiel mit einem Marker Namens "ZielOrt". Du kannst für jedes Fahrzeug einen anderen Ort nehmen.

Der Aufruf erfolgt in der Initzeile der Fahrzeuge. Hier im Beispiel:

temp = [this, markerPos "ZielOrt", 15, 3] execVM "FahrzeugRespawnenMitWegpunkt.sqf";

Die 15 steht für die Respawnzeit und die 3 für die Anzahl der Respawns.

Die Zeilen mit // sind Kommentare, welche das Skript erklären.

Im Anhang auch ein Beispiel mit dem Skript.


Skript FahrzeugRespawnenMitWegpunkt.sqf
Code:
//Respawn eines Fahrzeuges mit Besatzung und Einsatzziel. [Vienna 02.11.2011]
//Ausführung erfolgt beim Server.
//Das Skript wird in der Initzeile eines Fahrzeuges mit Besatzung gestartet.
//
//Aufruf: [<Fahrzeug>,<Position des Einsatzortes>,<Respawnzeit>,<Respawnanzahl>] execVM "FahrzeugRespawnenMitWegpunkt.sqf";
//
//Beispiel für Aufruf in der Initzeile des Fahrzeuges (für den Zielort wird ein Marker Namens "ZielOrt" angenommen):
// temp = [this, markerPos "ZielOrt",15,3] execVM "FahrzeugRespawnenMitWegpunkt.sqf";

if (!isServer) exitWith {}; // Programm nicht ausführen, wenn nicht Server/Host.

//Lokale Variable
Private ["_clearAllWP","_Vehikel","_RespZeit","_ZielPos","_Respawns","_StartPos","_Richtung","_Driver","_Gunner","_Comman","_Gruppe","_i","_temp"];

//Parameter:
 _Vehikel = _this select 0; //Fahrzeug
 _ZielPos = _this select 1; //Position des Einsatzortes
 _RespZeit = _this select 2; //Respawnzeit
 _Respawns = _this select 3; //Anzahl der Respawns

//Position des Respawnortes
 _StartPos = position _Vehikel;
//Ausrichtung des Fahrzeuges 
 _Richtung = getDir _Vehikel; 
//Besatzung auslesen
 if (! isNull driver  _Vehikel) then {_Driver = driver _Vehikel; _Gruppe = group _Driver}; 
 if (! isNull gunner  _Vehikel) then {_Gunner = driver _Vehikel; _Gruppe = group _Gunner}; 
 if (! isNull commander _Vehikel) then {_Comman = driver _Vehikel; _Gruppe = group _Comman}; 
//Keine Besatzung vorhanden? Dann exit!
 if (isNil "_Gruppe") exitWith {sleep 1; player GroupChat "Keine Besatzung im Fahrzeug!"};

//Kampfverhalten der Gruppe: 
 //Verhalten: sorglos/deckungslos --> "CARELESS","SAFE","AWARE","COMBAT","STEALTH" <-- vorsichtig/Ausnützung jeder Deckung 	
 _Gruppe setBehaviour "AWARE";
 //SpeedMode: "LIMITED"(half speed),"NORMAL"(full speed, maintain formation),"FULL"(do not wait for any other units in formation)
 _Gruppe setSpeedMode "NORMAL";  
 //CombatMode: "BLUE"(Never fire),"GREEN"(Hold fire-defend only),"WHITE"(Hold fire,engage at will),"YELLOW"(Fire at will),"RED"(Fire at will,engage at will),
 _Gruppe setCombatMode "WHITE";
 //Formation: "COLUMN","STAG COLUMN","WEDGE","ECH LEFT","ECH RIGHT","VEE","LINE","FILE","DIAMOND"
 _Gruppe setFormation "LINE";
 //Fluchtverhalten: 0 = 0%, 1 = 100%
  _Gruppe allowFleeing 0.5;     

//Schleife für die Anzahl der Respawns
for "_i" from 0 to _Respawns do
 {
  //Wegpunkt zum Einsatzort erstellen
  _temp = _Gruppe addWaypoint [_ZielPos,0];
  [_Gruppe, 0] SetWaypointType "MOVE";
  _Gruppe setCurrentWaypoint [_Gruppe, 1];
  if (_i < _Respawns) then
   { 
    //Warten bis Fahrzeug zerstört oder ohne Besatzung 
    waitUntil {count Crew _Vehikel == 0 or damage _Vehikel > 0.8};
    //Wegpunkt löschen
    deleteWaypoint[_Gruppe,1];
    //neues Fahrzeug erstellen
    sleep _RespZeit;
    _Vehikel = createVehicle [typeOf _Vehikel, _StartPos, [], 0, "FORM"];
    _Vehikel setDir _Richtung;
    if (! isNil "_Driver") then
     {
      _Driver = _Gruppe createUnit [typeOf _Driver, [0,0], [], 0, "FORM"];
      _Driver moveInDriver _Vehikel
     }; 
    if (! isNil "_Gunner") then
     {
      _Gunner = _Gruppe createUnit [typeOf _Gunner, [0,0], [], 0, "FORM"];
      _Gunner moveInGunner _Vehikel
     }; 
    if (! isNil "_Comman") then 
     {
      _Comman = _Gruppe createUnit [typeOf _Comman, [0,0], [], 0, "FORM"];
      _Comman moveInCommander _Vehikel
     }
   }
 }
Angehängte Dateien
Dateityp: zip FahrzeugRespawn_mit_KI_WP-utes.zip (2,5 KB, 54x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 03.11.2011, 16:48   #8 (permalink)
Newbie
 
Registriert seit: 29.10.2011
Beiträge: 5
Icon11

Danke schon mal, Vienna, für die Hilfe!
Ich hätte aber noch eine Frage.
Das Script ist jetzt dafür ausgelegt, dass die Fahrzeuge nach dem Respawn zu einem Wegpunkt vorrücken, richtig?
Ich brauche diese Funktion aber eigentlich nicht. Ich will nur, dass das Fahrzeug samt Besatzung an dem Punkt respawnt, wo ich das Fahrzeug im Editor platziert habe. Wenn ich es leer platziere, soll es leer respawnen. Wenn ich es mit Besatzung platziere, soll die Besatzung nach dem Respawn schon im Fahrzeug sitzen. Ist das darin schon eingebaut oder wäre das wieder etwas anderes?
Ist das überhaupt machbar?
Ich kenne mich nicht so gut damit aus, als das ich das dort herauslesen könnte, geschweige denn, so ein Script selbst zu schreiben.

Daher könnte das ein bisschen komplizierter werden.


Aber danke für die Hilfe!

mfg jackpot
jackpot ist offline   Mit Zitat antworten
Alt 03.11.2011, 18:57   #9 (permalink)
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

Obiges Skript ist nur möglich mit Besatzung (die auch respawnt) und Angabe einer Zielortposition, wohin das Fahrzeug dann fährt.


Im neuen Skript ist die Zielortposition jetzt der letzte Parameter und kann entfallen. Dann bleibt das Fahrzeug am Erstellungsort (dort wo es im Editor abgestellt wurde).

Neuer Eintrag in die Initialisierungszeile.
Aufruf mit Fahrt zum Einsatzort (beachte die neue Reihung der Parameter):
temp = [this, 15, 3, markerPos "ZielOrt"] execVM "FahrzeugRespawn_KI_WP.sqf";
Aufruf ohne die Fahrt:
temp = [this, 15, 3] execVM "FahrzeugRespawn_KI_WP.sqf";

Die 15 steht für die Respawnzeit und die 3 für die Anzahl der Respawns.

Wird das Fahrzeug ohne Besatzung aufgestellt, dann respawnt es auch ohne Besatzung.

Beachte, dass du im Skript das Kampf-Verhalten der Besatzung ändern kannst.

Hier das Skript. Es hat einen anderen Namen und eine andere Parameter Reihung:

Skript FahrzeugRespawn_KI_WP.sqf
Code:
//Respawn eines Fahrzeuges. Ausführung erfolgt beim Server. [Vienna 03.11.2011]
//
//  Respawn wahlweise mit vorhanden gewesenere Besatzung und dann mit oder ohne Fahrt zum Einsatzziel. 
//  
//Das Skript wird in der Initzeile eines Fahrzeuges mit Besatzung gestartet.
//
//Aufruf: [<Fahrzeug>,<Respawnzeit>,<Respawnanzahl>,<Position des Einsatzortes>] execVM "FahrzeugRespawn_KI_WP.sqf";
//
//Beispiel für Aufruf in der Initzeile des Fahrzeuges (für den Zielort wird ein Marker Namens "ZielOrt" angenommen):
// temp = [this, 15, 3, markerPos "ZielOrt"] execVM "FahrzeugRespawn_KI_WP.sqf";
//  Ist ein Fahrer im Fahrzeug, dann Fährt das Fahrzeug zum Einsatzziel.
//  Wird der Zielort weggelassen, dann bleibt das Fahrzeug vor Ort stehen.
//  Ist kein Fahrer im Fahrzeug, dann bleibt es natürlich auch stehen und Respawnt ohne Besatzung.


if (!isServer) exitWith {}; // Programm nicht ausführen, wenn nicht Server/Host.

//Lokale Variable
Private ["_clearAllWP","_Vehikel","_RespZeit","_ZielPos","_Respawns","_StartPos","_Richtung","_Driver","_Gunner","_Comman","_Gruppe","_i","_temp"];

//Parameter:
 _Vehikel = _this select 0; //Fahrzeug
 _RespZeit = _this select 1; //Respawnzeit
 _Respawns = _this select 2; //Anzahl der Respawns
 _ZielPos = _this select 3; //Position des Einsatzortes

//Position des Respawnortes
 _StartPos = position _Vehikel;
//Ausrichtung des Fahrzeuges 
 _Richtung = getDir _Vehikel;
  
//Besatzung auslesen
 if (! isNull driver _Vehikel) then {_Driver = driver _Vehikel; _Gruppe = group _Driver}; 
 if (! isNull gunner _Vehikel) then {_Gunner = driver _Vehikel; _Gruppe = group _Gunner}; 
 if (! isNull commander _Vehikel) then {_Comman = driver _Vehikel; _Gruppe = group _Comman}; 

//Wenn Besatzung vorhanden, dann Guppe ein Verhalten zuweisen.
 if (! isNil "_Gruppe") then
  {
   //Kampfverhalten der Gruppe: 
   //Verhalten: sorglos/deckungslos --> "CARELESS","SAFE","AWARE","COMBAT","STEALTH" <-- vorsichtig/Ausnützung jeder Deckung 	
   _Gruppe setBehaviour "AWARE";
   //SpeedMode: "LIMITED"(half speed),"NORMAL"(full speed, maintain formation),"FULL"(do not wait for any other units in formation)
   _Gruppe setSpeedMode "NORMAL"; 
   //CombatMode: "BLUE"(Never fire),"GREEN"(Hold fire-defend only),"WHITE"(Hold fire,engage at will),"YELLOW"(Fire at will),"RED"(Fire at will,engage at will),
   _Gruppe setCombatMode "WHITE";
   //Formation: "COLUMN","STAG COLUMN","WEDGE","ECH LEFT","ECH RIGHT","VEE","LINE","FILE","DIAMOND"
   _Gruppe setFormation "LINE";
   //Fluchtverhalten: 0 = 0%, 1 = 100%
   _Gruppe allowFleeing 0.5   
  };

//Schleife für die Anzahl der Respawns
for "_i" from 0 to _Respawns do
 {
 //Einsatzort bzw. Besatzung vorhanden? Dann Wegpunkt erstellen.
 if (! isNil "_ZielPos" and ! isNil "_Gruppe") then
  {
   //Wegpunkt zum Einsatzort erstellen
   _temp = _Gruppe addWaypoint [_ZielPos,0];
   [_Gruppe, 0] SetWaypointType "MOVE";
   _Gruppe setCurrentWaypoint [_Gruppe, 1]
  };
 if (_i < _Respawns) then
  {
  //Waren mit oder ohne Besatzung
  if (! isNil "_Gruppe") then {waitUntil {count Crew _Vehikel == 0 or damage _Vehikel > 0.8}} //Warten bis Fahrzeug zerstört oder ohne Besatzung. 
  else {waitUntil {damage _Vehikel > 0.8}}; //nur warten bis Fahrzeug zerstört.
  //Wegpunkt löschen falls vorhanden
  if (! isNil "_ZielPos" and ! isNil "_Gruppe") then {deleteWaypoint[_Gruppe,1]};
  //neues Fahrzeug nach Ablauf der Respawnzeit erstellen
  sleep _RespZeit;
  _Vehikel = createVehicle [typeOf _Vehikel, _StartPos, [], 0, "FORM"];
  _Vehikel setDir _Richtung;
  //Besatzung erstellen, falls eine beim Spielstart vorhanden
  if (! isNil "_Driver") then
   {
   _Driver = _Gruppe createUnit [typeOf _Driver, [0,0], [], 0, "FORM"];
   _Driver moveInDriver _Vehikel
   }; 
  if (! isNil "_Gunner") then
   {
   _Gunner = _Gruppe createUnit [typeOf _Gunner, [0,0], [], 0, "FORM"];
   _Gunner moveInGunner _Vehikel
   }; 
  if (! isNil "_Comman") then 
   {
   _Comman = _Gruppe createUnit [typeOf _Comman, [0,0], [], 0, "FORM"];
   _Comman moveInCommander _Vehikel
   }
  }
 }
Auch die Beispielmission hat einen anderen Namen!
Angehängte Dateien
Dateityp: zip Respawn_Fahrzeug_KI_WP-utes.zip (2,8 KB, 57x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 04.11.2011, 15:25   #10 (permalink)
Newbie
 
Registriert seit: 29.10.2011
Beiträge: 5
Icon14

Danke für die Antwort.
Ich werde es mal ausprobieren.

Vielen Dank!
jackpot ist offline   Mit Zitat antworten
Antwort

Stichworte
crew, hilfe, panzer, problem, respawn


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Respawn In Fahrzeug Steirer Editing & Scripting 11 18.10.2011 18:06
Landungboot mit fahrzeug Lotos Editing & Scripting 2 25.09.2011 15:19
Fahrzeug Marker zuweisen Bowi Editing & Scripting 4 17.10.2010 08:15
Fahrzeug in Godmode setzen Baraka Editing & Scripting 11 13.08.2010 20:37
Leiche aus dem Fahrzeug! GER_CJ-187 Editing & Scripting 8 05.08.2010 17:48


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116