![]() |
#1 (permalink) |
![]() Registriert seit: 03.06.2009
Beiträge: 46
|
![]()
Ich will ein Zielobjekt an eine Position verschieben lassen, welche durch einen RANDOM-WERT und IF/THEN/ELSE ermittelt wird.
Der RANDOM-Wert wird ordentlich erzeugt. Doch springt er immer ins erste IF. Selbst wenn der Random-Wert größer als "1" ist. Auch wenn ich zb. statt "<" ein "==" nutze, geht er ins ins erste IF. WARUM? ![]() ![]() |
![]() |
![]() |
#2 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 13.04.2003
Ort: Monerica
Alter: 42
Beiträge: 32.988
|
![]()
Hatten wir erst kürzlich, Random erzeugt Gleitkommazahlen, die Chance das 1,2 oder 3 rauskommt folglich eher gering. Da darfst du dann mit floor oder ceil rumtricksen: http://community.bistudio.com/wiki/Math_Commands
edit: Ah, das stand ja sogar in deinem Bild das da keine grade Zahl rauskam ![]() |
![]() |
![]() |
#3 (permalink) |
![]() Registriert seit: 03.06.2009
Beiträge: 46
|
![]()
Wie jetzt? Die scrip-sprache kann keine "ganze Zahl" mit einer "reellen Zahlen vergleichen"? Wie gesagt geht es mir ja nicht darum einen "==" Vergleich machen. Sondern lediglich zu ermitteln das zb. "2.45218" nicht kleiner "1" ist. oO
Ergo müsste es helfen "_start = floor _start;" drunter zu klatschen, und dann mit "==" prüfe? EDIT: Ich ging davon aus, das es eh nur "number" als Zahlentyp gibt. Wird wirklich wie in C zwischen int, float, double und co. differenziert? Geändert von Tarsius (09.03.2013 um 14:57 Uhr). |
![]() |
![]() |
#4 (permalink) |
![]() ![]() ![]() |
![]()
Die random- Geschichten mach ich immer so...
start= 999; if (isServer) then { start = round random 3; publicVariable "start"; } else { waitUntil {start != 999}; }; //start= 0; switch (start) do { case 0: { Marken_1 setpos getpos SP1; }; case 1: { Marken_1 setpos getpos SP2; }; case 2: { Marken_1 setpos getpos SP3; }; case 3: { Marken_1 setpos getpos SP1; }; }; start= 999; Mit der "start=... " Zeile kannst du die einzelnen cases testen. |
![]() |
![]() |
#6 (permalink) |
![]() Registriert seit: 03.06.2009
Beiträge: 46
|
![]()
Also mit switch schaltet er komplett auf stur.
Code:
_start = round random 3; switch (_start) do { case 0: { Obj_Mis_Target setpos getpos Obj_Mis_01; }; case 1: { Obj_Mis_Target setpos getpos Obj_Mis_02; }; case 2: { Obj_Mis_Target setpos getpos Obj_Mis_03; }; case 3: { Obj_Mis_Target setpos getpos Obj_Mis_01; }; }; Und auch im Hauptfall bleibt das Problem erhalten. Ich mein. Warum in drei Teufels Namen, geht er mit ner "2" überhaupt ins erste IF rein, wenn dessen "Zugang" nur für 1 gestattet ist? ![]() Geändert von Tarsius (10.03.2013 um 02:02 Uhr). |
![]() |
![]() |
#7 (permalink) |
![]() ![]() Registriert seit: 01.06.2009
Beiträge: 103
|
![]()
Du wärst wohl besser früher ins Bett gegangen.
![]() Du hast zum einen vergessen die If- Abfragen mit ";" zu beenden, was auch entsprechend in der ArmA3.rpt vermerkt wird (bitte doch immer zuerst mal da nachgucken, bevor man in einem Forum um Hilfe ersucht). Zum anderen verwendest Du "exit" in einem sqf- Script. Das wird dort ignoriert. Das kann man bloss in einem sqs- Script verwenden. Daher funktioniert Dein Vorhaben so auch dann nicht befriedigend, wenn Du die Strichpunkte korrekt setzt. Steht _start auf 2 oder 3 klappts ordentlich. Steht _start auf 1 wird die erste If- Abfrage korrekt ausgeführt und danach der else- Teil der zweiten If- Abfrage. Steht _start auf 0 dann wird natürlich auch wieder der Else- Teil der zweiten if- Abfrage ausgeführt. switch- do - case bietet sich - wie von Rettich schon angemerkt - als Lösung an. Edit: Die von Dir gepostete switch - do - case -Abfrage schaltet nicht auf stur. Es wird dabei korrekt auf den case- Abschnitt gesprungen welcher dem Wert von _start entspricht. Das Problem muss also beim Code innerhalb des case -Blocks liegen Code:
Obj_Mis_Target setpos getpos Obj_Mis_01; Geändert von Asso-Loki (10.03.2013 um 09:26 Uhr). |
![]() |
![]() |
#8 (permalink) |
![]() Registriert seit: 03.06.2009
Beiträge: 46
|
![]()
Jipp, Bett wäre ne gute Idee gewesen. Vorallem weil ich wieder auf dem Weg zur Arbeit bin. xD
Ich hab gestern auch schon mal hinter "}" ein ";" gesetzt. Es ändert leider nichts. Es werden in beiden Fällen auch keine Beschwerden gemeldet. (Ich starte über diese Kommandozeilen-Erweiterung die einem Scripfehler ingame meldet.) Auch wenn ich _start explizit eine "2" oder "3" zuweise geht er ins erste IF. Demnach fällt ein Fehler mit "round" oder "random" auch aus. Zumal es eben (für mich persönlich) nicht erklärt, warum er mit ner 2 oder 3 ins erste IF geht. Er könnte gleich ans ende wackeln, oder nen Fehler melden wenn es an den ";" liegt. Aber rein zu gehen, ist für mich das Unlogischste. Beim CASE habe ich mir zum debugen auch einfach nur mal nen Text ausgeben lassen. Jedoch kam keiner. Er ist in keine CASE-Ebene gesprungen. Demnach konnte es nicht an der Zeile mit der "Zuweisung" liegen. Zumal diese Zuweisung korrekt funktioniert, wenn ich sie einfach nur in die Datei ballere. Für den Hinweis mit dem Exit danke ich dir. Ist gut zu wissen. Ich werde es mir heut abend noch mal zu Gemüte führen. Kann es ja mal über ne Verschachtelung versuchen, in der ich die beiden anderen Optionen ins ELSE des ersten IF`s packe. Code:
IF {1} THEN {Pos01} ELSE { IF {2} THEN {Pos02} ELSE { Pos03 };}; Wünsche allen einen schönen Sonntag. |
![]() |
![]() |
#9 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]() Code:
_objekte = [Obj_Mis_01,Obj_Mis_02,Obj_Mis_03,Obj_Mis_04]; Obj_Mis_Target setpos (getpos(_objekte select(floor(random(count _objekte))))); ALICE und SILVIE |
![]() |
![]() |
#10 (permalink) |
![]() ![]() Registriert seit: 01.06.2009
Beiträge: 103
|
![]()
Ich habe - gewissenhaft wie ich bin
![]() Aaaaabeeeer, nimm einfach Viennas Variante. Sauber, effizient, übersichtlich...schlicht die optimale Wahl. |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
GUI Fehler | Jack4576 | Technische Fragen & Probleme | 0 | 02.02.2013 21:07 |
Fehler in meiner Mission. Script Fehler? | Feldmarschall | Editing & Scripting | 4 | 08.10.2012 18:52 |
Arma 2 CRC Fehler | nochance4u | Technische Fragen & Probleme | 7 | 07.09.2012 15:28 |
Fehler beim Laden einer gespeicherten Mission | TeTeT | Editing & Scripting | 0 | 12.12.2011 13:39 |
Söldner Secret Wars | Termi | Action & Shooter | 27 | 10.08.2011 08:46 |