![]() |
#1 (permalink) |
![]() Registriert seit: 29.10.2011
Beiträge: 5
|
![]()
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 |
![]() |
![]() |
#4 (permalink) |
![]() Registriert seit: 29.10.2011
Beiträge: 5
|
![]()
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 |
![]() |
![]() |
#5 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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. |
![]() |
![]() |
#6 (permalink) |
![]() Registriert seit: 29.10.2011
Beiträge: 5
|
![]()
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 |
![]() |
![]() |
#7 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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 } } } |
![]() |
![]() |
#8 (permalink) |
![]() Registriert seit: 29.10.2011
Beiträge: 5
|
![]()
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 |
![]() |
![]() |
#9 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
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 } } } |
![]() |
Stichworte |
crew, hilfe, panzer, problem, respawn |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Respawn In Fahrzeug | Steirer | Editing & Scripting | 11 | 18.10.2011 19:06 |
Landungboot mit fahrzeug | Lotos | Editing & Scripting | 2 | 25.09.2011 16:19 |
Fahrzeug Marker zuweisen | Bowi | Editing & Scripting | 4 | 17.10.2010 09:15 |
Fahrzeug in Godmode setzen | Baraka | Editing & Scripting | 11 | 13.08.2010 21:37 |
Leiche aus dem Fahrzeug! | GER_CJ-187 | Editing & Scripting | 8 | 05.08.2010 18:48 |