![]() |
#2 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Kopiere den folgenden Code (so wie er da steht) in die Initzeile der Spielfigur.
Die 3 bedeutet, dass der Spieler nach 3 x Sterben auf auf seine letzte Respawnposition festgesetzt wird. Die 60 bedeuten, dass das Festsetzen nach 60 Sekunden erfolgt. Diese beiden Zahlen kannst du nach belieben verändern. Code:
temp = [3,60] spawn { private ["_n","_p"]; _n=0; while {true} do { while {_n < _this select 0} do { waitUntil {not alive player}; _n = _n + 1; waitUntil {alive player} }; if (_n == _this select 0)then { _p = getPos player; _n = 1000; sleep (_this select 1) }; player setPos _p } } |
![]() |
![]() |
#3 (permalink) |
![]() Registriert seit: 13.11.2006
Beiträge: 3
|
![]()
Danke für die schnelle Antwort.
Aber ich suche etwas Anderes, ich gebe mal ein Beispiel: Ich erstelle eine Mission, meine Mitspieler und ich in einem Dorf sind und ein feindlicher Trupp AI Soldaten greift dieses an. Wenn dieser Trupp ausgeschaltet ist spawnt er neu und greift erneut an, nach einer zeit liegen da aber zu viele Leichen. Ich suche nach einem Skript, der diese verschwinden lässt. Das mit dem respawnen und erneut angreifen läuft soweit, habe es auch soweit hingekricht, dass sie einmal despawnen, also nach 30 sek im boden versinken. Aber nur einmal, ich möchte dass sie immer wieder despawnen also die Toten. |
![]() |
![]() |
#4 (permalink) |
![]() ![]() ![]() Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
|
![]() Code:
_unit addEventHandler ["KILLED", {nul=[_this select 0] spawn {sleep 5; deleteVehicle (_this select 0)};}]; ![]() |
![]() |
![]() |
#5 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Da habe ich dich ordentlich missverstanden.
Wie Buliwyf bereits anführt, geht das Entfernen der Leichen am einfachsten mit einem EventHandler. Dazu genügt z.B. für die Spieler beim Spielstart einmalig in einem Skript dieser Aufruf: Code:
player addEventHandler [ "KILLED", { _this select 0 spawn { sleep 30; deleteVehicle _this } } ]; |
![]() |
![]() |
#6 (permalink) |
![]() Registriert seit: 13.11.2006
Beiträge: 3
|
![]()
Danke das klappt alles soweit, nur leider Despawnen die toten nur Einmal.
Danach bleiben die leichen Liegen. ich nutze diesen code In der Init der Einheit: nul = [this, -1, 3, "SpawnEast","East_WP.sqf"] execVM "AI_respawn\AI_respawn_init.sqf"; und im Mission ordner die beiden sqf Datein: Code:
// AI_respawn_init.sqf // © JULY 2009 - norrin (norrin@iinet.net.au) if (!isServer) exitWith {}; _unit = _this select 0; _lives = _this select 1; _delay = _this select 2; _respawn_point = _this select 3; _move_script = _this select 4; _unitsGroup = units (group _unit); _side = side _unit; sleep 2; _AI_unitArray = []; _AI_magArray = []; _AI_wepArray = []; _AI_skillArray = []; {_AI_unitArray = _AI_unitArray + [typeOf _x]; _AI_magArray = _AI_magArray + [(magazines _x)]; _AI_wepArray = _AI_wepArray + [(weapons _x)]; _AI_skillArray = _AI_skillArray + [skill _x]}forEach _unitsGroup; [_unit, _lives, _delay, _respawn_point, _move_script, _group, _side, _AI_unitArray,_AI_magArray, _AI_wepArray,_AI_skillArray] execVM "AI_respawn\AI_respawn.sqf"; this addEventHandler ["KILLED", {nul=[_this select 0] spawn {sleep 5; deleteVehicle (_this select 0)};}]; [_unit] execVM _move_script; if (true)exitWith {}; Code:
// AI_respawn.sqf // © JULY 2009 - norrin if (!isServer) exitWith {}; _unit = _this select 0; _lives = _this select 1; _delay = _this select 2; _respawn_point = _this select 3; _move_script = _this select 4; _group = _this select 5; _side = _this select 6; _AI_unitArray = _this select 7; _AI_magArray = _this select 8; _AI_wepArray = _this select 9; _unitsGroup = units (group _unit); while {(count _unitsGroup) > 0} do { _remainingUnits = []; {if (alive _x) then {_remainingUnits = _remainingUnits + [_x]}} forEach _unitsGroup; _unitsGroup = _remainingUnits; sleep 1; }; deleteGroup _group; if (_lives == 0) exitWith {}; _lives = _lives - 1; _wait = Time + _delay; waitUntil {Time > _wait}; _group = createGroup _side; {_x createUnit [(getMarkerPos _respawn_point), _group];} forEach _AI_unitArray; sleep 2; hint "AI respawn"; _unitsGroup = units _group; {_x disableAI "MOVE"} forEach _unitsGroup; for [{ _loop = 0 },{ _loop < count _unitsGroup},{ _loop = _loop + 1}] do { _guy = _unitsGroup select _loop; removeAllWeapons _guy; {_guy removeMagazine _x} forEach magazines _guy; removeAllItems _guy; {_guy addMagazine _x} forEach (_AI_magArray select _loop); {_guy addWeapon _x} forEach (_AI_wepArray select _loop); _guy selectWeapon (primaryWeapon _guy); _guy setSkill (_AI_skillArray select _loop); sleep 0.1; }; {_x enableAI "MOVE"} forEach _unitsGroup; _leader = leader _group; [_leader, _lives, _delay, _respawn_point, _move_script, _group, _side, _AI_unitArray,_AI_magArray, _AI_wepArray] execVM "AI_respawn \AI_respawn.sqf"; this addEventHandler ["KILLED", {nul=[_this select 0] spawn {sleep 5; deleteVehicle (_this select 0)};}]; [_leader] execVM _move_script; if (true) exitWith {}; Muss auch sagen, ich hab nicht so die Mega Ahnung -.- |
![]() |
![]() |
#7 (permalink) |
![]() ![]() ![]() Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
|
![]()
Das die toten Einheiten überhaupt einmal gelöscht werden grenzt an ein Wunder...
![]() Ich habe nicht umsonst geschrieben, dass Du die Variable _unit korrigieren sollst. Das Du aber gleich anfängst sie mit this zu ersetzen kann ich nicht ahnen. Genauso wenig konnte ich ahnen, dass _unit schon der richtige Variabalenname ist. Also tue er folgendes: Ersetze: this addEventhandler mit: _unit addEventhandler ...in beiden Scripten. ![]() Geändert von Buliwyf (07.08.2011 um 15:02 Uhr). |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|