PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aus vordefinierter Gruppe on Objekten nur eines behalten


Wolkenbeisser
12.11.2016, 18:06
Hallo zusammen

Ich suche nach einer einfachen Möglichkeit aus einer Gruppe von Objekten (alle haben einen Namen) eines auszuwählen und alle anderen zu löschen.

Beispiel:

Auf der Karte gibt es die folgenden 6 Objekte:
- Auto1
- Auto2
- Kiste1
- Kiste2
- Zelt1
- Zelt2

Nun soll eines davon ausgewählt werden. Ich habe das so versucht:

Code:
Banane = (selectRandom [Auto1,Auto2,Kiste1,Kiste2,Zelt1,Zelt2])
Sobald ich danach aber die oben geannten Objekte lösche, ist auch die Banane weg (offenbar kennt die immer noch ihren alten Namen).

Wie kriege ich es hin, dass das Objekt, welches mit Banane verknüpft ist bestehen bleibt?

Vielen Dank für eure Hilfe.

Pfandgiraffe
12.11.2016, 19:22
Alle löschen außer das selected Item? Ich verstehe die Frage nicht.

lucullus
12.11.2016, 19:56
_alle = [Auto1,Auto2,Kiste1,Kiste2,Zelt1,Zelt2];
_auswahl = _alle deleteAt (floor random (count _alle));
{deleteVehicle _x} forEach _alle;

Wolkenbeisser
12.11.2016, 20:43
@Pfandgiraffe: genau
@lucullus: Danke, werde das ausprobieren

:daumen:

Wolkenbeisser
13.11.2016, 13:25
Mir fällt da grad noch was ein (hatte noch keine Zeit für einen Test, bin aber am dran rumstudieren):

Wenn ich die 3 Codezeilen in einem Auslöser laufen lassen will, muss ich wohl die Checkbox "Server" ankreuzen, richtig? Sonst wählt vermutlich jeder Client ein anderes Zufallsobjekt aus dem Array.

Daraus folgt aber, dass ich die Variable "_auswahl" aus dem obigen Beispiel irgendwie global machen muss, wenn ich in dem Multiplayerspiel damit weiterarbeiten will.

Ziel ist, das für jeden (Server + Client) nur noch das Eine (für alle gleiche) aus dem Array zufällig gewählte Objekt übrig bleibt, und dieses erst noch eine globale Variable als Namen haben soll.

Klappt das so, wenn ich den Code von lucullus nehme?

lucullus
13.11.2016, 15:22
WB_alle = [Auto1,Auto2,Kiste1,Kiste2,Zelt1,Zelt2];
WB_auswahl = WB_alle deleteAt (floor random (count WB_alle));
{deleteVehicle _x} forEach WB_alle;
publicVariable "WB_auswahl";

und nur auf dem Server ausführen.

lucullus
13.11.2016, 15:22
WB_alle = [Auto1,Auto2,Kiste1,Kiste2,Zelt1,Zelt2];
WB_auswahl = WB_alle deleteAt (floor random (count WB_alle));
{deleteVehicle _x} forEach WB_alle;
publicVariable "WB_auswahl";

und nur auf dem Server ausführen.

Wolkenbeisser
13.11.2016, 21:53
Funktionert perfekt! Vielen Dank für die schnelle Hilfe :daumen: :daumen: :daumen:

Grüsse aus der Schweiz