PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable und Nummer vereinen


HyperStorm
01.10.2014, 22:51
Hi, ich habe ein kleines Problem:

Ich muss in einer Schleife von 1 bis z.B. 100 zählen lassen.
for "_count" from 1 to 100 step 1 do {.....}

Also Code soll dann bei jedem Durchgang eine Variable mit der Nummer die durch _count entsteht vereint werden.

Die Variable ist z.B. _baum.
_count liegt bei 24.
Das Resultat soll nun _baum24 sein.

Mit dieser Variable will ich dann weiter arbeiten.
Z.B. die Position von _baum24 ändern, danach die Position von _baum25 ändern u.s.w.

Nun hab ich schon einiges ausprobiert und komme nicht drauf, wie ich die Variable und die Nummer kombinieren kann.

Wäre super wenn mir da jemand einen Tipp geben könnte ;)

(Hintergrund auf Anfrage)

MfG
HyperStorm

Vienna
02.10.2014, 00:45
Ein Beispiel wie man einen mit Format erstellten Text mit call compile als Code ausführen kann.

Für lokale Variable müssen diese zuvor mit private "angemeldet" werden.
Bei globalen Variablen (den _ Unterstrich weglassen) ist das nicht notwendig.

temp = 20 spawn
{
private ["_baum1","_baum2","_baum3","_wert"];
_wert = _this;
for "_i" from 1 to 3 do
{
_code = format["_baum%1 = %2",_i,_wert];
call compile _code;
_code = format["player groupChat str _baum%1",_i];
call compile _code;
_wert = _wert + 5
}
}

Rufe diesen Code mit einem Funk-Auslöser auf. Als Ergebnis wird dir der Inhalt der Variablen _baum1 bis _baum3 ausgegeben (20, 25 und 30).

Tajin
02.10.2014, 08:35
Du könntes deine Bäume auch stattdessen in einem Array ablegen.

Im Endeffekt geht aber beides.

Vienna
02.10.2014, 13:17
Wenn es tatsächlich ca. 100 Bäume sind, dann ist eine vernünftige Handhabung nur mit einem Array möglich. Den Bäumen muss man dabei keine Namen geben, Objekte haben eine ID oder man spricht sie über ihre Stelle im Array an.

Was man dabei im Array speichert ist von der beabsichtigten Verwendung der Bäume abhängig. Dabei gibt es mehrere Möglichkeiten die gewünschten Daten automatisch ins Array einzutragen zu lassen.

HyperStorm
02.10.2014, 23:52
Ok, danke schon mal an alle.

Wie speichere ich denn z.b. 100 objecte in einem Array ab?

Also gleiche situation wie mit dem For ... do ...
Dass ich dann s.B. sagen kann:
(baum select 37) setDamage 1

oder so...

Entschuldigt meine Unwissenheit.
Manchmal fange ich einfach projekte an, die ich noch nicht ganz stemmen
kann und brauche dann Hilfe. Vieles bekomme ich mit versuchen und der Manuel (wiki) hin, aber einiges will dann einfach nicht klappen ^^

Vienna
03.10.2014, 09:28
Der Befehl https://community.bistudio.com/wiki/nearestObjects erstellt dir das Array automatisch. Benötigt wird dazu der Class-Name der gewünschten Objekte.

Bei Pflanzen wird das vermutlich nur bei solchen möglich sein, die du selber im Editor aufgestellt hast.

hint str typeOf cursorTarget; zeigt dir die Klasse des Objekts an auf die der Spieler z.B. seine Waffe ausgerichtet hat. Teste das mit einem Funk-Auslöser. Du wirst sehen, dass das nicht bei allen Objekten funktioniert.

Nokman
03.10.2014, 14:12
Bei Bäumen kanst du mit der ID Arbeiten die du im Editor siehst um sie Umzuhauen Da sie nicht zugeordnet sind kanst du sie nicht so leicht rausfiltern über nearestobjekts.
Was aber dabei nur geht sind die Einzelnen die Wälder an sich sind wieder ganz anders.

Geht vielleicht auch eine Alternative?
{_x setDamage 1;}foreach (nearestObjects [getMarkerPos baume,[],100])
Dieser befehl würde Alles was im Umkreis von 100 Metern um denn marker "baume" ist vernichten einschlieslich bäume, Wälder, Häuser, Spieler ....

Vienna
03.10.2014, 18:51
Das wäre eine Lösung! Anstelle von Markern Logik-Objekte nehmen. Bei denen ist ein automatisiertes Erzeugen eines Arrays mit nearestObjects möglich.

Für einen Baum als Radius nur ca. 2 Meter nehmen und im Skript von der Zerstörung z.B. Personen und Fahrzeuge ausnehmen (mit https://community.bistudio.com/wiki/isKindOf).