[Tiptoi] längere Tiptoi-Skripte

Michael Thon m7.thon at gmail.com
Sa Jan 13 15:04:07 CET 2018


Hallo Frank,

ich versuch mal zu Antworten, weil ich ein bisschen Erfahrung mit Spielereien mit dem J()-Befehl habe (aber manches verstehe ich nicht, und ich hab alles auf den "alten" Stiften ohne Medienplayer ausprobiert).

> Wenn wir nun eine Folge Aktion1 bis AktionK haben mit K>8, würde folgendes funktionieren, d.h. die Befehle Aktion1 bis AktionK abarbeiten?
> 
> eintrag:
> 	- $iterator==1? Aktion1 ... Aktion6   $iterator+=1 J(eintrag)
> 	- $iterator==2? Aktion7 ... Aktion12  $iterator+=1 J(eintrag)
> 	...
> 	- $iterator==(K div 6) Aktion... AktionK $iterator=1

Am besten, einfach ausprobieren, aber ich denke, das sollte funktionieren.

> Dazu hätte ich noch drei Fragen:
> * Gibt es einen Befehl um die aktive OID (also oben die von eintrag) in einem Register zu speichern?

Jein. Einen eigenen Befehl dafür gibt es nicht. Aber man kann natürlich den Befehl

    script_id:
        - $aktiv:=script_id

nutzen. 


> * Kann der Jumpbefehl J auch ein Register als Argument nehmen
> (https://github.com/entropia/tip-toi-reveng/wiki/GME-Script-line sagt, soweit ich sehe, nichts dagegen)?

Dort steht aber, dass die Befehle  P, G , J und C ihre Register ignorieren (also J($aktiv) wird wohl nicht funktionieren).

Man kann aber tricksen, z.B. mit einem "dispatch" script:

1. Jedes script speichert die script_id im Register $aktiv (wie oben)
2. Statt `J($aktiv)` schreibt man `J(dispatch)` mit folgendem script:

    dispatch:
        - $aktiv==9001? J(9001)
        - $aktiv==9002? J(9002)
        - ....

Ggf. macht dies mit den "neuen" Stiften Probleme, siehe nächsten Punkt. 

> * In der Referenz oben steht, man solle P und J nicht "mischen".

Wo steht das denn? Allerdings verhalten sich J und P in Kombination unerwartet. `... J(script) P(audio)` spielt audio ab und springt *danach* zu script. Während audio abgespielt wird, kann der Stift noch andere Skripte ausführen (wenn man auf eine entsprechende OID tippt), aber wenn darin ein P oder J-Befehl vorkommt, dann verstehe ich nicht mehr, was dann geschieht. Es sieht so aus, als sollte man grundsätzlich `J(...) P(...)` schreiben, weil die neuen Stifte einen J-Befehl ohne folgenden P-Befehl offenbar nur extrem langsam ausführen.

Übrigens werden glaube ich alle "einfachen" Aktionen (nicht P oder J) in einer Skript-Zeile *vor* den P und J Befehlen ausgeführt. 

> Verbietet dies auch folgendes Verhalten?
> 
> spiele_lied:
> 	- P(lied)
> tue_ganz_viel:
> 	- $x<=1000? C(tue_was_anderes)
> 	- $x>1000? .... C(spiele_lied)

Ich verstehe weder genau, was hier erreicht werden soll (statt J(spiele_lied) könnte man auch einfach P(lied) schreiben, oder?), noch verstehe ich, warum das nicht gehen sollte. Aber wie gesagt, J-Befehl ohne direkt folgenden P-Befehl könnte bei den neuen Stiften ggf. Probleme machen.

Grundsätzlich ist das Verhalten von J, insbesondere in Kombination mit P, nicht völlig verstanden. Wenn man kompliziertere Programmabläufe schreiben will, dann muss man es einfach ausprobieren.

Ich hoffe, dies hilft.

Gruß,
Michael

> 
> Viele Grüße und sorry für die komplizierten Fragen
> Frank
> 
> -- 
> tiptoi mailing list
> tiptoi at lists.nomeata.de
> https://lists.nomeata.de/mailman/listinfo/tiptoi





Mehr Informationen über die Mailingliste tiptoi