was passt Arma 2 OA hier nicht?
Hi zusammen,
ich habe zum Testen ein Script geschrieben: Code:
private ["_cnt", "_unit"]; Das Script macht eigentlich was es soll. Array (classnames Zivis) zählen, und dann pro Schleifen-Durchlauf einen Hint mit dem nächsten Array-Element. Trotzdem bekomme ich immer einen Fehlereintrag in der RPT-Datei: Code:
Error in expression <lect _cnt;hint format ["%1\n%2", _cnt, _unit];sleep hintTimeN;};hint "Schle> Wo ist mein Fehler? Grüße Wes |
*deleted*
Xeno |
Hi..
streiche: Code:
for "_cnt" from 1 to _cnt do Code:
for "_i" from 1 to _cnt do Code:
hint format ["%1\n%2", _cnt, _unit]; |
Hi,
ich hab´s nun so abgeändert (ich hoffe so hast Du`s gemeint) Code:
private ["_cnt", "_unit"]; Jetzt wird das Array gezählt (88 Elemente) Ausgabe bei jedem Schleifen-Durchlauf : 88 (immer 1 hochgezählt) <null> In der RPT wird bei jedem Schleifen-Durchlauf ein Fehler erzeugt: Error Undefined variable in expression: _unit EDIT: nun habe ich das Script so abgeändert: Code:
private ["_cnt", "_unit"]; der Effekt - wie in meinem Start-Post: Script macht was es soll, aber beim ersten Schleifen-Durchlauf wird Fehler in´s RPT eingetragen. |
Hm.. dann folgendes:
Code:
for "_i" from 1 to (_cnt - 1) do Hilft beides nicht, dann scheinen mir Deine globalen Variblen nicht zu passen. :komisch: |
nach hin und her testen -bin ich zum selben Ergebnis gekommen und jetzt wird´s auch logisch.
Der RPT-Fehler trat nicht beim ersten sondern beim letzten Schleifen-Durchlauf auf. Der Zähler ist am Ende vom Array angekommen und hat dann noch einen Durchlauf gemacht. Da aber das letzte Array-Element schon aufgerufen wurde, konnte Arma mit dem letzten mal "_unit = wmpArrCivPeople select _cnt;" nichts mehr anfangen. Danke Euch beiden für die Unterstützung. Eine Frage noch: sollte man in einer for-Schleife zwingend die "_i"-Variable nehmen? Ich hab´s jetzt wieder in meiner Ursprungs-Form ohne "_i" und es funzt. Aber beide seid Ihr auf die Variable in der Abfrage gekommen. Thx & Gruß |
Ich denke nicht, das es relevant ist wie die Variablen benannt sind. ob _i,_n oder _k....
Stichwort: Gaußsche Summenformel. |
Ich habe den Skript-Code in "spanw" gepackt. Da kannst du ihn zum Testen in "Bei Akt." in einen Funk-Auslöser reinkopieren und über Funk ausführen.
Code:
temp = [wmpArrCivPeople, hintTimeN] spawn |
danke Onkel, danke Vienna.
@Vienna Mittlerweile funktioniert es auch in meinem Script fehlerfrei. Der casus knaxus war : Code:
for _"cnt" from 1 to (_cnt -1) do Danke Allen nochmal für die Hilfen - ich bin erst mal zufrieden gestellt. Bis zur nächsten doofen Frage a ´la Wes :D Gruß der Selbige |
Fehlerfrei? Du solltes den Code von mir genau beachten!
Es hat ja einen Grund warum _cnt - 1 sein muss ... weil der Index im Array bei 0 beginnt. Darum: for "_i" from 0 to count _cnt - 1 do ... Sonst bleibt der erste Array-Inhalt unberücksichtigt! Da du globale Variable verwendest, würde in deiner Variante das Skript optimal so aussehen: Code:
for "_i" from 0 to count wmpArrCivPeople - 1 do Es ist aber nach Möglichkeit zu vermeiden in Skripten globale Variable zu verwenden. Darum habe ich im vorherigen Posts diese Variablen dem Code als Parameter übergeben. Auch ist so der Code ohne Änderung für andere Daten verwendbar. |
hmm ich dachte schon dass es so wie ich es am Schluß hatte funktionierte.
Mein globales Array besteht aus Civi-Classnames - insgesammt 88 Elemente. Das ertse Element ist "Assistant" und das letzte Element ist "Rita_Ensler_EP1". In der Hint-Ausgabe erwarte ich (Zeilenumbruch \n unbeachtet) 1 Assistant 2 Citizen1 ... 88 Rita_Ensler_EP1 Und so passiert es auch. Und es wird kein Fehler im RPT erzeugt. Hat sich aber mittlerweile "erledigt", weil ich schon wieder ein ganzes Stück weiter mit meinem "Testscript" bin. Bisher macht es was es soll und es werden keine Fehler erzeugt. Trotzdem Danke vienna - mir geht in vielen Sachen noch das Hintergrund-Wissen ab und ich wiesel mich so mit Versuch, Fehlschlag (*x), Versuch, Erfolg, Erkenntnis, etc. durch die Scripterei. Ich werde mit Sicherheit Deinen Post noch ein paar mal "nachschlagen" ;-) Gruß |
array = [1,2,3]
index -> 0 1 2 count array gibt 3 aus! for "_i" from 1 to 3 enthält 2 Fehler! array select _i beginnt mit Index 1 und endet mit Index 3. Index 0 wird ausgelassen und Index 3 gibt es nicht. Daher: for "_i" from 0 to 3 - 1 |
Yup! Kann nur so gehen, wie es Vienna erklärt.
for "_i" from 0 to <anzahl der Felder im Array> - 1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias