PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : nachträglicher respawn kfz


DirtyHarryTPC
15.04.2009, 09:33
tach auch

ich komm direkt zur sache ;)
habe ein script das im laufe einer mission Fahrzeuge an bestimmten stellen erstellt, diese sollen nun auch respawnen wenn sie zerstört wurden.
Wie könnte man das machen ? respawn scripte hab ich genug :D.

erstellen von Fahrzeugen sieht zb. so aus

tank1 = "M1Abrams" createVehicle [0,0]; tank1 setDir 0.000000; tank1 setPos [9665.372070, 9787.235352, 0];


MFG Harry

Buliwyf
15.04.2009, 11:26
Viele Wege führen nach Rom... ein Traum wäre natürlich gewesen, wenn der Befehl respawnVehicle funktionieren würde... aber BIS wäre nicht BIS wenn sie nicht immer wieder diese kleinen Steinchen in den Weg legen würde... :zahn:

Wenn Du sagst, Du hättest schon geügend Respawnscripte, was möchtest Du dann noch hören? Du brauchst Halt eine Schleife, in der der Zustand Deines Fahr-/Flugzeugs abgefragt wird... wenn kaputt, dann neu... oder was auch immer für Kritierien mit aufnehmen möchtest... :confused:

Das Ganze sollte im MP vom Server überwacht werden.

Ansonsten findest Du auch im Editing Guide von Mr-Murray auf Seite 235 ein Script.

DirtyHarryTPC
15.04.2009, 11:45
hmm leider kann ich mit der antwort nix anfangen :D
haste vieleicht ein beispiel ?

Garstiger Hobbit
15.04.2009, 13:51
Also ich würd das so machen.


_tank1 = "M1Abrams" createVehicle [0,0];
_tank1 setDir 0.000000;
_tank1 setPos [9665.372070, 9787.235352, 0];
_tank1 setvehicleinit "handle=[this,240] execVM ""Vehiclerespawn.sqf""";
processInitCommands;
so sollte das funzen mit dem Respawn der später erstellten Fahrzeuge.

Buliwyf
15.04.2009, 16:49
private ["_vcl","_vnm","_type","_pos","_dir"];
if (not isServer) exitWith {};
_vcl = _this select 0;
_vnm = _this select 1;
_type = typeOf _vcl;
_pos = getpos _vcl;
_dir = getdir _vcl;

while {true} do {
sleep 30;
if (not alive _vcl) then {
deleteVehicle _vcl;
sleep 1;
_vcl = objNull;
_vcl = _type createvehicle _pos;
_vcl setPos _pos;
_vcl setDir _dir;
call compile format ["%1 =_vcl;publicVariable '%1';", _vnm];
_vcl setVehicleInit "this execVM 'vehicleRespawn.sqf';";
processInitCommands;
};};


Hier mal eine kleine Grundstruktur! das Script nennt sich vehicleRespawn.sqf und wird bei dem neu erstellten Fahrzeug wieder aufgerufen...

DirtyHarryTPC
15.04.2009, 16:50
das hir is mal der aufruf vom respawn

tmp = [_vehicle,_spawnPosition,_respawnDelay] execVM "vehicleRespawnposition.sqf"

wie bekomm ich den da rein ?

DirtyHarryTPC
15.04.2009, 16:53
@ Buliwyf

wenn du noch einbauen könntest das er mit namen wieder respawnt wäre das gut , denn einige Fahrzeuge dürfen nur von bestimmten leuten benutzt werden.:p

DirtyHarryTPC
15.04.2009, 17:12
hm egal was ich mache , kein respawn :komisch:

naja dann müssen die leute beim nexten arma.de coop abend eben aufpassen ;)

Garstiger Hobbit
15.04.2009, 18:13
Probier es mal damit.

So in der art habe ich das in einer meiner Missionen.
Sollte auch funktionieren.

Fhz erstellen.
_tank1 = "M1Abrams" createVehicle [0,0];
_tank1 setDir 0.000000;
_tank1 setPos [9665.372070, 9787.235352, 0];
_tank1 setvehicleinit "tank1=this;handle=[this,240,10] execVM ""respawn.sqf""";
_tank1 setvehiclevarname "tank1";
processInitCommands;

respawn.sqf

if (!isServer) exitWith{};
_vehicle = _this select 0;
_delay = _this select 1;
_rate = _this select 2;
_empty = true;
_disabled = false;
_startpos = getpos _vehicle;
_startdir = getdir _vehicle;
_type = typeof _vehicle;
_name = vehicleVarName _vehicle;
if (_rate == 0)exitWith{};

while {true} do {
sleep (_delay + random 15);
_empty = true;
_crew = crew _vehicle;
if (({alive _x} count _crew) > 0) then {_empty = false;};

_disabled = false;
if (damage _vehicle > 0.9) then {
_disabled = true;
};

if ((_disabled && _empty) || !(alive _vehicle)) exitWith {
sleep 0.1;
deletevehicle _vehicle;
sleep 0.5;
_newveh = _type createvehicle _startpos;
_newveh setpos _startpos;
_newveh setdir _startdir;
if(_name !="")then{
_init= format ["%1=this",_name];
_newveh setvehiclevarName format["%1",_name];
_newveh setvehicleinit _init;
processInitCommands;
};
hobbit = [_newveh, _delay, _rate -1] execVM "respawn.sqf";
};
};Das script respawn.sqf ist ne Lösung mit Namen des Fhz und noch begrennzetem Respawn.

DirtyHarryTPC
15.04.2009, 18:42
ok wer ich machen danke , aber heut schaff ich das nich mehr :D

DirtyHarryTPC
15.04.2009, 18:52
hat mich fertig gemacht und musste ez doch kuken :D
ich sag nur :danke:

besser könnts nich klappen.


MFG HARRY