Armed-Assault.de Twitter


Editing The world is a Script - write it!

Antwort
 
Themen-Optionen Ansicht
Alt 23.05.2011, 12:54   #1 (permalink)
Newbie
 
Registriert seit: 23.05.2011
Beiträge: 2
Standard Einheiten in Gruppe löschen

Hallo Leute, ich bin neu hier und grüsse euch alle. Es wäre nett wenn ihr mir bei einem Problem helfen könntet.
Vor ein paar Tagen hab ich angefangen in ARMA ein wenig zu scripten. Grund war eigentlich eine Sache die mich schon in OPF sehr gestört hat, nämlich die Sache das man mit dem Editor keinen permanent laufenden Flugplatz bzw. Kampfscenario erstellen kann.
Also hab ich mich in die Materie eingelesen und losgelegt. Ich habe nun ein Scenario erstellt das permanent Flugzeuge, Helis, Fahrzeuge und Truppen von verschiedenen Orten aus ins Schlachtfeld schickt. Sobald sie tot sind werden sie respawned. Soweit so gut. Ich habe jetzt ein Verständnisproblem.
Nach einer gewissen Zeit werden keine Truppen mehr respawned und die Schlacht schläft irgendwie ein. Ok, die Sache mit den 144 Gruppen. Ich hab das ausgetestet. Das Script das die Einheiten erstellt wird über einen Trigger gestartet. Die Einheiten werden alle mit lokalen Variabeln erstellt.
Sobald die Einheiten tot sind beginnt das Script von vorne (Schleife). Bevor neue Einheiten erstellt werden werden alle Einheiten gelöscht. Im Testscript werden beliebig viele "Einheitengruppen" gespawned wenn sie gelöscht werden bzw. nicht mehr wie 144 Leichen rumliegen. Das scheint aber nicht zu reichen. Und da ist der Kern der Sache. Ein Löschen der Gruppe (deleteGroup) ist nicht möglich (Fehlermeldung: Error Objekt, erwartet Gruppe). Da vermute ich jetzt eine Sache auf die in keiner Anleitung (ich habe 3) oder einer Webseite hingewiesen wird, dass es 2 nicht kompatible Gruppentypen gibt. Vielleicht bin ich ja auf dem Holzweg.

Ein Gruppe die so erstellt wurde:

;************************************************* *******************************

"FROMZ_marksmen_w" createUnit [SpawnE, grpdummyE1];
_TrpE9Unit0 = units grpdummyE1 select 0;

"FROMZ_marksmen_w" createUnit [SpawnE, grpdummyE2];
_TrpE9Unit1 = units grpdummyE2 select 0;

"FROMZ_at_w" createUnit [SpawnE, grpdummyE2];
_TrpE9Unit2 = units grpdummyE2 select 1;

"FROMZ_recon_w" createUnit [SpawnE, grpdummyE2];
_TrpE9Unit3 = units grpdummyE2 select 2;


[_TrpE9Unit0] join grpnull;
[_TrpE9Unit1] join grpnull;
[_TrpE9Unit2] join grpnull;
[_TrpE9Unit3] join grpnull;

_GrpOffizier9 = group _TrpE9Unit0;

[_TrpE9Unit1] join _TrpE9Unit0;
[_TrpE9Unit2] join _TrpE9Unit0;
[_TrpE9Unit3] join _TrpE9Unit0;
[_TrpE9Unit4] join _TrpE9Unit0;


;************************************************* *******************************

Ist nicht "kompatibel" mit einer Gruppe die so erstellt wurde:

;************************************************* *******************************

_Grp1 = Creategroup EAST;
_Grp1_Leader="SquadLeaderE" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Sergant"];
_Grp1_Unit2="SoldierEB" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Corporal"];
_Grp1_Unit3="SoldierEB" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Corporal"];
_Grp1_Unit4="SoldierEG" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Corporal"];
_Grp1_Unit5="SoldierEMG" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Corporal"];
_Grp1_Unit6="SoldierEAT" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Corporal"];
_Grp1_Unit7="SoldierESniper" createUnit [getMarkerPos "SpawnE", _Grp1, "", 1, "Corporal"];


;************************************************* ********************************

Die Einheit _TrpE9Unit0 gilt als Objekt nicht als Gruppe. Aus dem Grund kann ich die
Gruppe nicht mit deleteGroup löschen. Der Grund warum ich mich dafür entschieden habe
Gruppen über den Dummy zu erstellen war einfach der das die Einheiten die mit createGroup
erstellt wurden an den Waypoints nicht das gemacht haben was ich wollte.
Die waren total stur und waren selbst mit disableAI nicht zu stoppen.

Eigentlich schade, denn diese Gruppen (createGroup) sind über die Waypoints im Script einfacher
und übersichtlicher zu steuern. Dem anderen Gruppentyp hingegen kann ich gar keine Waypoints zuweisen
,muss das über den move Befehl machen. Leider muss ich dann auf das Verhalten der Gruppen z.B. "GUARD" verzichten.

Jetzt wäre es nett wenn ihr mir ein paar Fragen beantwortet. Ich bekomme das allein nicht hin.

1. Stimmt es das die "Gruppentypen" unvereinbar sind?

z.B. Einheiten der einen Gruppe kann nicht in die andere Gruppe joinen.

2. Wie kann ich die Einheiten in der Gruppe _Grp1 selektieren?
In "_unit0 = _grp1 select 0" steht nur z.B. "EAST 1-1-B". Ich müsste die Elemente des Arrays _Grp1 zählen können
dann hätte ich die Anzahl der Einheiten. Wie zählt man die Elemente eines Arrays?

Ich kann den Status der Einheiten dieser Gruppe nicht abfragen, also dammage, alive. Wie geht das?

Sorry wenn sich das alles ein bischen Noob anhört, aber ich bin es :-).

Wäre nett wenn ihr mir helft.

Gruß Michael
Brubaker ist offline   Mit Zitat antworten
Alt 24.05.2011, 05:34   #2 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 48
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Hello

Versuche mal in die init.sqf eine Array zu erstellen
bsp.
//Array in der init.sqf//
EastArray = [];

//Dann die Einheiten in deinem skript//
_Bravo = createGroupWest;
"US_Soldier_Officer_EP1" createUnit [_pos, _Bravo, "this addWeapon 'NVGoggles']", 1,"FROM"];
"US_Soldier_EP1" createUnit [_pos, _Bravo, "this addWeapon 'NVGoggles']", 1,"FROM"];
"US_Soldier_EP1" createUnit [_pos, _Bravo, "this addWeapon 'NVGoggles']", 1,"FROM"];
"US_Soldier_EP1" createUnit [_pos, _Bravo, "this addWeapon 'NVGoggles']", 1,"FROM"];
"US_Soldier_EP1" createUnit [_pos, _Bravo, "this addWeapon 'NVGoggles']", 1,"FROM"];
_Leader = leader_Bravo;

//Zur Array hinzufügen//
EastArray = EastArray + [_Bravo];

Zur überprüfung, ein Test.sqf erstellen, und mit einem Funk auslöser aufrufen, Bsp. Alpha und die unterre zeile in das skript eintragen!

//Test.sqf//
hintc format ["%1", EastArray];


dann sollte es dir die Grp in der Array anzeigen!
__________________
Ghost_AUT

Geändert von Ghost_Aut (24.05.2011 um 06:07 Uhr).
Ghost_Aut ist offline   Mit Zitat antworten
Alt 24.05.2011, 07:10   #3 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 48
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Um die Units einzel an zusprechen von grp _bravo bsp.

If (true) then {_unit1 = (units _bravo select 1);
If (true) then {_unit2 = (units _bravo select 2);
If (true) then {_unit3 = (units _bravo select 3);
If (true) then {_unit4 = (units _bravo select 4);
If (true) then {_unit5 = (units _bravo select 5);

Könntest du es mal so versuchen!
Ich habe dir eine Test_Array erstellt, vielleicht hilft sie dir ja weiter!
Angehängte Dateien
Dateityp: zip Test_Array.Desert_E.zip (2,9 KB, 50x aufgerufen)
__________________
Ghost_AUT

Geändert von Ghost_Aut (24.05.2011 um 07:29 Uhr).
Ghost_Aut ist offline   Mit Zitat antworten
Alt 25.05.2011, 08:17   #4 (permalink)
Newbie
 
Registriert seit: 23.05.2011
Beiträge: 2
Standard

Hallo Ghost, also erst aml Danke für deine Hilfe und Mühe.
Ich hab das mal in eine .sqs Datei übertragen. Mit .sqf Syntax kenne ich mich noch schlechter aus. Leider kann ich deine angehängte Datei nicht nutzen, da fehlt mir wohl ein Insel-Addon.

Den Inhalt des Arrays konnte ich schon lesen. Was ich machen wollte ist, die Anzahl der Elemente des Arrays _grp zu zählen. Wenn das Array dann leer ist, ist die Gruppe tot und ich kann sie löschen.

If (true) then {_unit3 = (units _bravo select 3);
Das ist gut ^^. Jetzt kommt keine Fehlermeldung mehr wenn z.B. _unit3 schon tot ist.

Ich hab die Einheiten ja mit dem "grpdummy" erstellt und danach mit join gruppiert.

_GrpOffizier9 = group _TrpE9Unit0;

[_TrpE9Unit1] join _TrpE9Unit0;
[_TrpE9Unit2] join _TrpE9Unit0;
[_TrpE9Unit3] join _TrpE9Unit0;
[_TrpE9Unit4] join _TrpE9Unit0;

Gilt _TrpE9Unit0 jetzt als Gruppe? Was ist wenn _TrpE9Unit0 stirbt? Wird dann eine neue Gruppe _TrpE9Unit1 gebildet. Vielleicht ist das die Ursache dafür das keine neuen Einheiten mehr gebildet werden.

Gruß Michael
Brubaker ist offline   Mit Zitat antworten
Alt 26.05.2011, 01:33   #5 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 48
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Hello Brubaker!

Ich habe dir noch mal das Beispiel auf Utes erstellt!
Es wär besser wenn du dich auf sqf Skript konzentrierst, da sie zuverlässiger Laufen im Spiel Ablauf!
Um zu deiner Frage zu kommen, Auch wenn der Kommandant der Gruppe erschossen wird, bleibt der gleiche gruppen Name, wenn du einen Soldaten aus der Gruppe entfernst, bekommt er einen eigenen Gruppen Namen, aber denn musst du dann euch selbst in die Array hinzufügen das dieser auch mitgezählt wird in der Array!
Wenn du einen Soltaten zu einer Gruppe hinzufügst schliesst er sich an und zählt zur den Gruppen Namen wo der Leader ist!
Die Soltaten oder Gruppen werden nicht automatisch zur Array hinzugefügt, die musst du pro. Gruppe oder Soltat bei skript selbst hinzufügen. Auch wenn die Soltaten Tot sind werden sie nicht alein aus der Array entfernt, das muss man auch über skript machen!!
Schau dir mal die Test_Array von Utes an, ist eine möglichkeit von viellen!


Angehängte Dateien
Dateityp: zip Test_Array.utes.zip (3,2 KB, 47x aufgerufen)
__________________
Ghost_AUT

Geändert von Ghost_Aut (26.05.2011 um 01:36 Uhr).
Ghost_Aut ist offline   Mit Zitat antworten
Alt 26.05.2011, 05:05   #6 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 48
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Ich hätte hier noch schnell ein Beispiel erstellt, wo sich ein Soldat von der
Gruppe Entfernt mit Join grpNull, und im ausschließlich in die Array

Aber da du die Gruppe mit grpdummy" erstellt kann ich dir leider nicht wirklich weiter helfen da ich
selbst sie noch nie so erstellt habe bis jetzt, da ich bis jetzt noch nie probleme hatte wie ich sie dir oben vor geschrieben hatte!
hinzugefügt!
Angehängte Dateien
Dateityp: zip Test_Array1.utes.zip (3,7 KB, 51x aufgerufen)
__________________
Ghost_AUT

Geändert von Ghost_Aut (26.05.2011 um 06:27 Uhr).
Ghost_Aut ist offline   Mit Zitat antworten
Alt 26.05.2011, 18:44   #7 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 48
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Um Gruppen in der WestArray als Zahlen zu zählen, könntest du es so versuchen!
und so bald eine gruppe ausgeschaltet wurde wird sie wenn man das Skript aufruft aus der Array entfernt!!

Du Könntest den Code mal beim 2 test_Array1 was ich erstellt habe verwenden und es testen wenn du den code Als Array3.sqf speicherst
und mit einem Funk Ausköser testest!!

if (!isServer) exitWith {};

//Wird wenn die Gruppe Ausgeschaltet wird entfernt von der Array//
{deletegroup_x}forEach WestArray;
sleep 15;
WestArray = WestArray - [grpNull];

//Anzahl der Array in Zahlen pro. Gruppe//
_Array = count WestArray;

sleep 2;
hintcformat ["%1", _Array];

if (true) exitWith {};
__________________
Ghost_AUT

Geändert von Ghost_Aut (26.05.2011 um 19:34 Uhr).
Ghost_Aut 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
Gruppe per Auslöser bewegen Deep Five-9te Editing & Scripting 2 07.01.2011 08:46
Einheiten springen gleichzeitig aus Helikopter bei Bodenberührung ca$hflow Editing & Scripting 24 25.09.2010 19:41
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen Noobfire Editing & Scripting 8 06.08.2010 16:22
Ausrüstung von Gruppe löschen? Big Fan Editing & Scripting 2 04.08.2010 17:26
Script-Problem: Einheiten löschen Kampfmöhre Editing & Scripting 5 31.05.2010 13:37


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