Armed-Assault.de Twitter


Editing The world is a Script - write it!

Antwort
 
Themen-Optionen Ansicht
Alt 20.02.2009, 16:57   #1 (permalink)
Newbie
 
Registriert seit: 01.11.2008
Beiträge: 32
Standard Gruppenmitglieder neu erstellen

hi,

habe eine frage die sehr allgemein ist und ich konnte im Forum hier nicht passendes finden...

Und zwar:

ich habe eine Gruppe: 1 Spieler (groupleader) und 4 KI-Soldaten(nicht spielbar)
ich habe den Standart Respawn, also wenn ich sterbe kan ich respawnen aber wenn einer der KI stirbt wird kein Respawn ausgeführt, aber ich möchte gerne einen respawn für meine leute haben...

Wie kann ich das machen das die KI aus meiner guppe am marker respawnt und wieder in meiner gruppe ist ?
aXXIs262 ist offline   Mit Zitat antworten
Alt 20.02.2009, 19:55   #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

Mit diesem Skript ist das möglich. Im Anhang auch die Beispielmission:

Gruppe.sqf
Code:
//Erstellen einer Gruppe für den Spieler.
//
//Stirbt ein Soldat der Gruppe, so wird er ersetzt


Private ["_soldaten","_i","_gruppe","_s","_n"];


//Soldtenbezeichnungen (es können weitere -auch gleiche- hinzugefügt werden)
  _soldaten = ["SoldierWB","SoldierWAT","SoldierWMG","SoldierWSniper"];


//Soldaten erstellen
  _gruppe = [];
  for [{_i=0}, {_i<count _soldaten}, {_i=_i+1}] do
    {
       _s = group player createUnit [_soldaten select _i, Position player, [], 0, "FORM"];
       _gruppe = _gruppe + [_s]
    };


//Ersetzen von getöteten Soldaten
  while {true} do
   {
     _n = 0;
     _i = -1;
     {if(!alive _x)then{_i=_n};_n=_n+1}forEach _gruppe;
     if(_i > -1)then
       {
         _s = group player createUnit [_soldaten select _i, Position player, [], 0, "FORM"];
         _gruppe set [_i, _s];
       };
     sleep 5
   };
Damit die getöten Soldaten am Marker erstellt werden, musst du noch ändern (anstelle von "Position player" in der unteren Schleife).
Angehängte Dateien
Dateityp: zip Gruppe_immer_neu.Intro.zip (1,4 KB, 28x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 20.02.2009, 20:03   #3 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von S4mmy
 
Registriert seit: 11.01.2008
Ort: NRW
Alter: 26
Beiträge: 140
Standard

Hachja da war wieder jemand schneller.

Na dann hat sich das erledigt^^..
__________________
IF (IT MAKES "KLICK") Then {YOU BE IN THE SHIT}


Geändert von S4mmy (20.02.2009 um 20:07 Uhr).
S4mmy ist offline   Mit Zitat antworten
Alt 21.02.2009, 00:24   #4 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

Spaßeshalber noch zwei Lösungen...

Code:
//Erstellen einer Gruppe für den Spieler.
//
//Stirbt ein Soldat der Gruppe, so wird er ersetzt
private ["_soldaten","_gruppe"];

//Soldtenbezeichnungen (es können weitere -auch gleiche- hinzugefügt werden)
_soldaten = ["SoldierWB","SoldierWAT","SoldierWMG","SoldierWSniper"];

//Soldaten erstellen
_gruppe = [];
{   
    _gruppe = _gruppe + [(group player createUnit [_x, Position player, [], 0, "FORM"])];
    sleep 0.01;
} forEach _soldaten;

//Ersetzen von getöteten Soldaten
while {true} do {
    for "_i" from 0 to (count _gruppe - 1) do {
        _unit = _gruppe select _i;
        if (!alive _unit) then {
            _gruppe set [_i, (group player createUnit [_soldaten select _i, position player, [], 0, "FORM"])];
        };
        sleep 0.01;
    };
    sleep 5
};
Code:
//Erstellen einer Gruppe für den Spieler.
//
//Stirbt ein Soldat der Gruppe, so wird er ersetzt
private ["_soldaten"];

NewKilledSoldier = {
    private ["_type","_newunit"];
    _type = typeOf _this;
    _newunit = group player createUnit [_type, Position player, [], 0, "FORM"];
    _newunit addEventHandler ["killed", {_this select 0 spawn NewKilledSoldier}];
};

//Soldtenbezeichnungen (es können weitere -auch gleiche- hinzugefügt werden)
_soldaten = ["SoldierWB","SoldierWAT","SoldierWMG","SoldierWSniper"];

//Soldaten erstellen
{   
    _unit = group player createUnit [_x, Position player, [], 0, "FORM"];
    _unit addEventHandler ["killed", {_this select 0 spawn NewKilledSoldier}];
    sleep 0.01;
} forEach _soldaten;
Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (21.02.2009 um 00:27 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 21.02.2009, 11:46   #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

Wenn man es optimal verkürzt, dann reichen die beiden Array-Variablen. Das ist aber für Anfänger nur noch schwer verständlich.
Code:
//Erstellen einer Gruppe für den Spieler.
//
//Stirbt ein Soldat der Gruppe, so wird er ersetzt

Private ["_soldaten","_gruppe"];

//Soldtenbezeichnungen (es können weitere -auch gleiche- hinzugefügt werden)
 _soldaten = ["SoldierWB","SoldierWAT","SoldierWMG","SoldierWSniper"];

//Soldaten erstellen
 _gruppe = [];
 {_gruppe = _gruppe+[group player createUnit[_x,Position player,[],0,"FORM"]]}forEach _soldaten;

//Ersetzen von getöteten Soldaten
 while {true} do
  {
   {if(!alive _x)then{_gruppe set[_soldaten find typeOf _x, group player createUnit[typeOf _x,Position player,[],0,"FORM"]]}}forEach _gruppe;
   sleep 5
  };
Vienna ist offline   Mit Zitat antworten
Alt 21.02.2009, 14:15   #6 (permalink)
Newbie
 
Registriert seit: 01.11.2008
Beiträge: 32
Standard

ja geil, danke schonmal, kommte aber noch nicht so damit klar die gruppe am marker zu erstellen, bin noch was beschäftigt

ich möchte das die soldaten an einem marker respawnen und auf befehle warten

@vienna
anstelle von "Position player", "mein marker" oder was?

Geändert von aXXIs262 (21.02.2009 um 14:33 Uhr).
aXXIs262 ist offline   Mit Zitat antworten
Alt 21.02.2009, 14:48   #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

getMarkerPos "MarkerName"

Der Markername muss in Anführungszeichen stehen!



Zu meiner letzten (der optimierten) Variante habe ich vergessen anzuführen, dass in _soldaten keine gleichen Typen enthalten sein dürfen, weil sonst beim Tod einer gleichen Type der vorher definierte Soldat ersetzt wird, was dazu führt, dass ständig ein neuer Soldat dieser Type zusätzlich erstellt wird.

Geändert von Vienna (21.02.2009 um 15:59 Uhr). Grund: Hinweis zum letzten Skript!
Vienna ist offline   Mit Zitat antworten
Alt 21.02.2009, 16:20   #8 (permalink)
Newbie
 
Registriert seit: 01.11.2008
Beiträge: 32
Standard

getmarkerpos... jo das ist das was ich suchte... danke
aXXIs262 ist offline   Mit Zitat antworten
Alt 21.02.2009, 19:48   #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

Im Editing-Guide von Mr-Murray findest du auch vieles, sowie hier: Category:Scripting Commands ArmA - Bohemia Interactive Community
Vienna ist offline   Mit Zitat antworten
Alt 22.02.2009, 14:04   #10 (permalink)
Newbie
 
Registriert seit: 01.11.2008
Beiträge: 32
Standard

"FORM"

was ist denn damit gemeint ?

und eine 2. frage: wie kann ich es machen das die soldaten die gerade erstellt wurden den befehl halt bzw stop erhalten, damit die nicht über die map rennen..
aXXIs262 ist offline   Mit Zitat antworten
Alt 22.02.2009, 14:16   #11 (permalink)
50 Beiträge
 
Registriert seit: 13.01.2009
Beiträge: 60
Garstiger Hobbit eine Nachricht über Skype™ schicken
Standard

Nun "Form" damit ist gemeint das die Einheit die erstellt wird in Formation geht die,die Gruppe gerade hat.

Möglich wäre auch "NONE" die Einheit macht nichts und es gibt noch "FLY" damit erstellt man normalerweise Einheiten die in Der Luft starten.

Um die Einheit die erstellt wird stehen zu lassen kann du (commandStop)
benutzen.
__________________
Gruß

Garstiger Hobbit

www.New-Germany-fun.net

Garstiger Hobbit ist offline   Mit Zitat antworten
Alt 22.02.2009, 16:59   #12 (permalink)
Newbie
 
Registriert seit: 01.11.2008
Beiträge: 32
Standard

wie kann ich einen trigger der auf der map besteht mit hilfe der .sqf datei prüfen ob er true ist oder nicht ? der hintergedanke ist, dass der spieler erst neue Leute bekommt wenn er den trigger löst...

ich habs damit versucht, aber leider syntax wrong

Code:
_trigger = ["newmember"];
if(_trigger=true) then {
	while {true} do
		{
			_n = 0;
			_i = -1;
			{if(!alive _x)then{_i=_n};_n=_n+1}forEach _gruppe;
			if(_i > -1)then
				{
					_s = group player createUnit [_soldaten select _i, Position player, [], 0, "FORM"];
					_gruppe set [_i, _s];
				};
			sleep 5
		};
};
hmm... also der trigger auf der Map hat den namen newmember, weiss einer wie ich den prüfen kann in dem script ob er gelöst wurde oder nicht ?

Geändert von aXXIs262 (22.02.2009 um 17:27 Uhr).
aXXIs262 ist offline   Mit Zitat antworten
Alt 22.02.2009, 19:53   #13 (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

Initialisiere eine globale Variable im Skript z.B.

NeueSoldatenWest = false;

Dann im Mehrfach-Trigger bei

Bedingung: deine Bedingung
Bei Akt: NeueSoldatenWest = true
Bei Deakt: NeueSoldatenWest = false

(Ich habe dir ein Beispiel in den Anhang gestellt.)

Dann im Skript
Gruppe_West.sqf
Code:
//Erstellen einer Gruppe Soldaten für den Spieler.  [Vienna 22.02.2009]
//
//Stirbt ein Soldat der Gruppe, so wird er ersetzt wenn die Variable NeueSoldatenWest true ist.

//Variable welche gesetzt sein muss, dass die Gruppensoldaten wiederhergestellt werden sollen
  NeueSoldatenWest = false;

Private ["_soldaten","_gruppe","_i"];

//Typen der zu erstellenden Soldaten (eine Type kann auch öfter angeführt sein)]
 _soldaten = ["SoldierWB","SoldierWAT","SoldierWMG","SoldierWB"];
 
//Gruppe erstellen
 _gruppe   = [];
 {_gruppe  = _gruppe+[group player createUnit[_x,Position player,[],0,"FORM"]]}forEach _soldaten;

//Ersetzen von getöteten Soldaten
while {true} do
  {
     if (NeueSoldatenWest) then
       {
         _i=0;   	
         {
           if (!alive _x) then
              {
                _gruppe set[_i,group player createUnit[typeOf _x,Position player,[],0,"FORM"]]
              };
           _i=_i+1
         }forEach _gruppe
       };
     sleep 5
   }
(Eine logische Variable musst du nicht Variable==true abfragen, da reich der Variabename. Das brauchst du nur, wenn zu false abfragen willst.)
Angehängte Dateien
Dateityp: zip Gruppe_neu_West.Intro.zip (1,7 KB, 20x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 25.02.2009, 07:18   #14 (permalink)
Newbie
 
Registriert seit: 01.11.2008
Beiträge: 32
Standard

danke, funktioniert ganz gut... genau das was ich haben wollte
und das übergeben der variablen hab ich nun auch verstanden...
aXXIs262 ist offline   Mit Zitat antworten
Antwort


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
Neu im MP? Was gibs da, was es im SP nicht gibt?! ArmA Typ Multiplayer Community 12 28.03.2008 21:39
Auslöser im spiel neu platzieren zynon Editing 4 20.01.2008 21:46
OPF startet Rechner neu desty Hilfe 4 15.10.2004 13:04


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