Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 06.08.2011, 16:27   #1 (permalink)
Newbie
 
Registriert seit: 13.11.2006
Beiträge: 3
Standard Despawn

Hai ich bin auf der suche nach einem Script, der schonmal respawnte Einheiten die wiedermal getötet wurden verschwinden lässt, nach einer Weile. Wäre nett wenn mir jemand helfen könnte.
Cleric ist offline  
Alt 06.08.2011, 18:01   #2 (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 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
   }
 }
Ich habe das nicht getestet. Sollt was nicht funktionieren, dann melde dich.
Vienna ist offline  
Alt 06.08.2011, 20:35   #3 (permalink)
Newbie
 
Registriert seit: 13.11.2006
Beiträge: 3
Standard

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.
Cleric ist offline  
Alt 06.08.2011, 21:07   #4 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

Code:
_unit addEventHandler ["KILLED", {nul=[_this select 0] spawn {sleep 5; deleteVehicle (_this select 0)};}];
Die Zeile dem Spawn Script der Einheiten zufügen und die Variable _unit korrigeren. Ich weiß ja nicht welche Variable Du verwendest. Mit sleep 5 werden die nach 5 Sek. gelöscht... kannste ja auch anpassen...

__________________
Buliwyf ist offline  
Alt 06.08.2011, 22:21   #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

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
     }
   }
 ];
Der Wert nach sleep sind die Sekunden nach denen die Leichen verschwinden.
Vienna ist offline  
Alt 07.08.2011, 14:34   #6 (permalink)
Newbie
 
Registriert seit: 13.11.2006
Beiträge: 3
Standard

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 {};
und

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 -.-
Cleric ist offline  
Alt 07.08.2011, 15:00   #7 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

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).
Buliwyf ist offline  
 


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


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 117 118 119