Asscalc Variablen
Zeit VARIABLE
Info: Zeit Variablen betreffen die Silben und Linezeiten und geben diese als Ganzzahl zurück. Mit ihnen kann auch gerechnet werden, aber man sollte immer bedenken, dass 1 = 1000 ms ist und man bei time of wtstart-1 mal eben 1000,s früher mit der Line anfängt als geplant.
ntstart
- Gibt den Startwert der nächste Silbe/Zeichen als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
ntend
- Gibt den Endwert der nächste Silbe/Zeichen als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
tstart
- Gibt den Startwert der aktuellen Silbe/Zeichen als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
tend
- Gibt den Endwert der aktuellen Silbe/Zeichen als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
ltstart
- Gibt den Startwert der vorherigen Silbe/Zeichen als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
ltend
- Gibt den Endwert der vorherigen Silbe/Zeichen als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
wtstart
- Gibt den Startwert der aktuellen Line als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
wtend
- Gibt den Endwert der aktuellen Line als Ganzzahl zurück. Ausgangspunkt 0 (0:0:0.0)
TEXTIDENT VARIABLE
bfirstone
- Ist ein boolscher Wert. Gibt TRUE / 1 zurück, wenn die aktuelle Silbe/Zeichen zum ersten {\k} im Script gehört, ansonsten FALSE / 0.
blastone
- Ist ein boolscher Wert. Gibt TRUE / 1 zurück, wenn die aktuelle Silbe/Zeichen zum letzten {\k} im Script gehört, ansonsten FALSE / 0.
bsylf
- Ist ein boolscher Wert. Gibt TRUE / 1 zurück, wenn das aktuelle Zeichen zum letzten {\k} eines Wortes gehört, ansonsten FALSE / 0. Nur interessant für den FLAG Charwise, behindert aber auch nicht im Skipspace.
nafterlastspace
- Zählt wie viele Zeichen oder Silben seit dem letzten Leerzeichen durchlaufen wurden. Zähler beginnt bei 0.
nthword
- Gibt die Anzahl der vorhandenen Wörter, gezählt anhand der Leerzeichen als Ganzzahl zurück. Zähler beginnt bei 0.
nth
- Zählt wie viele {\k} schon durchlaufen wurden. Kann auch als SilbenID betrachtet werden pro Line. Zähler beginnt bei 0.
- Bei einem Lowkill vergleich zwischen nth und nthall muss der Lowkill so aussehn, wenn er noch für die letzte Silbe ausgeführt werden soll: LOWKILL(nth+1 , nthall-0.1)
nthall
- Anzahl der vorhandenen {\k} in der aktuellen Line als Ganzzahl.
nchr
- Zählt wie viele Zeichen schon durchlaufen wurden. Kann auch als ZeichenID betrachtet werden pro Line. Zähler beginnt bei 0.
nchrall
- Anzahl der Zeichen der aktuellen Line als Ganzzahl.
bwordf
- Ist ein boolscher Wert. Gibt TRUE / 1 zurück, wenn die aktuelle Silbe/Zeichen zum ersten {\k} eines Wortes gehört, ansonsten FALSE / 0.
bwordl
- Ist ein boolscher Wert. Gibt TRUE / 1 zurück, wenn die aktuelle Silbe/Zeichen zum letzten {\k} eines Wortes gehört, ansonsten FALSE / 0.
nthword
- Gibt die Anzahl der Wörter der aktuellen Line zurück.
Zufalls VARIABLE
rand
- Bildet eine Zufallsnummer zwischen 0 und 1.
- Beispiel:
- pos of rand*10 => 0 bis 9
- pos of rand*10-5 => -5 bis 4
- pos of rand*10+15 => 15 bis 24
- pos of rand*10-25 => -25 bis -14
SIZING VARIABLE
Info: Sizing Operationen müssen in ASSCalc immer wieder ausgeführt werden. Das bedeutet, je mehr ihr diese einsetzt, umso länger dauert die Berechnung der out.ass. Dies kann aber leicht umgangen werden, indem ihr in der pX.txt die Variablen in Ersatzvariablen umspeichert für den aktuellen P-Layer Durchlauf und sie somit nur einmal pro Zeichen/Silbe berechnet werden müssen. Als Beispiel, in einem Pixelscript in dem nur eine Sizingvariable pro Pixel verwendet wird, dauert die Berechnung statt 2 Minuten plötzlich 30 Minuten.
nsiz
- Gibt die Breite alle Zeichen/Silben bis zum aktuellen Zeichen/Silben in Pixeln zurück.
lnsiz
- Gibt die Breite alle Zeichen/Silben bis zum letzten Zeichen/Silben des aktuellen Durchlaufs in Pixeln zurück.
nsizthisone
- Gibt die Breite des aktuellen Zeichens/Silbe in Pixeln zurück.
nysizthisone
- Gibt die Höhe des aktuellen Zeichens/Silbe in Pixeln zurück.
Info: - Es gibt leider kein nysizall und nysiz in ASSCalc. Sollte man diese benötigen einfach schonmal nysizthisone im PRE Render Layer abspeichern. Das hat keinen Einfluß auf die spätere nsizall Berechnung.
nsizall
- Gibt die Breite der gesamten Line in Pixeln zurück.
- Wichtig: - nsizall benötigt ein PRE Rendering ab dem Moment wo es in einem nachfolgenden Layer benutzt wird. Das bedeutet es muss ein leerer P-Layer mit dem gleichen Stylelock vor dem aktuellen vorhanden sein, welcher nur kurz ausgeführt wird. Dies gilt nur für den Fall, wenn man nsizall in einem weiteren Layer benutzen möchte, sozusagen One for Free ^^ Sollte man dies also benötigen, muss z.B. der p2 Layer als leerer Layer nur mit stylelock, fontmatch und set flag in p2h.txt und stylelock in p2.txt angelegt und dann mit dem gleichen stylelock im p3 Layer gearbeitet werden.
curx
- Ist eine Tentacle Eigenkreation, welche die aktuelle X Position berechnet. Sie exisitiert nicht und muss selber angelegt werden für jeden P Layer. Da sich der Name eingebürgert hat bei allen Calc Usern, steht er nun in der Wiki. Errechnet wird sie wie folgt:
- LINKSBÜNDIG:
- curx = ( Silbenbreite bis zur aktuellen Silbe ) + ( aktuelle Silbenbreite / 2, da jede Silbe in sich mittig positioniert ist )
- curx = nsiz + (nsizthisone*0.5)
- curx = nsiz + (nsizthisone/2)
- MITTIG:
- curx = ( Bildbreite / 2, da dort die Linemitte sein soll ) - ( Linebreite / 2, da wir von der Mitte ausgehen ) + ( Silbenbreite bis zur aktuellen Silbe ) + ( aktuelle Silbenbreite / 2 )
- curx = 640-(nsizall*0.5)+nsiz+(nsizthisone*0.5)
- curx = 640-(nsizall/2)+nsiz+(nsizthisone/2)
- RECHTSBÜNDIG:
- curx = ( Bildbreite ) - ( Linebreite ) + ( Silbenbreite bis zur aktuellen Silbe ) + ( aktuelle Silbenbreite / 2 )
- curx = 1280-nsizall+nsiz+(nsizthisone*0.5)
- curx = 1280-nsizall+nsiz+(nsizthisone/2)
cury
- Ist eine Tentacle Eigenkreation, welche die aktuelle Y Position berechnet. Sie exisitiert nicht und muss selber angelegt werden für jeden P Layer. Da sich der Name eingebürgert hat bei allen Calc Usern, steht er nun in der Wiki. Errechnet wird sie wie folgt:
- cury=20
- UNTEREINANDER:
- cury=(nysizthisone*0.5)+savecury
- savecury=savecury+nysizthisone
- BASICSCRIPT:
- für Anwendung mit Variablen übergabe der Variable poskara aus Original ASS oder gesetzter Variable im Header
- 0 = Mitte ; 1 = Linksbündig ; 2 = Rechtsbündig
- ersatzone=nsizall
- ersatztwo=nsiz
- ersatzthree=nsizthisone
- ersatzfour=nysizthisone
- bildb=1280
- stretchfak=1
- seitenabstand=3
- posfind[0]=((ersatztwo+(ersatzthree*0.5))*stretchfak)+((bildb/100)*seitenabstand)
- posfind[1]=((bildb/2)+((0-(ersatzone*0.5))+ersatztwo+(ersatzthree*0.5)))*stretchfak
- posfind[2]=((bildb-ersatzone+ersatztwo+(ersatzthree*0.5))*stretchfak)-((bildb*stretchfak)-bildb)-((bildb/100)*seitenabstand)
- curx=posfind[poskara]
- cury=40
ÜBERGABE VARIABLE
In ASSCalc können aus dem Original ASS Script Variablen direkt übergeben werden. Dazu setzt man diese mit {%%variablenname=3} in eine Line. Wenn ASSCalc nun diese Line ließt, wird variablenname=3 gesetzt. Diese bleibt bis zum Ende der Berechnung vorhanden, ausser man setzt sie in der pXh.txt zurück auf 0. Das setzen der Variable geschieht erst mit beginn des pX.txt Zyklus. Es ist auch relevant an welcher Stelle dies im Original steht. Die Variable wird erst gelesen, wenn sie an der Reihe ist. Es macht einen Unterschied ob sie VOR oder NACH dem Silbentext gesetzt wird. Jede Variable muss einzelnd mit {} gesetzt werden.
- Beispiel: (Input wurde in der out.ass manuell reingeschrieben)
- {%%input=1}{\k21}Ha{%%input=2}{\k10}{%%input=3}{\k45}te{%%input=4}
- ergibt in der out.ass bei FLAG Skipspace
- Dialogue: 1,0:00:02.10,0:00:09.76,japro,OP,0000,0000,0005,,{input 3}Ha
- Dialogue: 1,0:00:02.10,0:00:09.76,japro,OP,0000,0000,0005,,{input 4}te
- Hier wird der ersten Silbe Input 3 zugewiesen, da {\k21}Ha{%%input=2}{\k10}{%%input=3} als Block zu betrachten ist.
- {\k21}{%%input=1}Ha{\k10}{%%input=2}{\k45}{%%input=3}te{%%input=4}
- ergibt in der out.ass bei FLAG Skipspace
- Dialogue: 1,0:00:02.10,0:00:09.76,japro,OP,0000,0000,0005,,{input 2}Ha
- Dialogue: 1,0:00:02.10,0:00:09.76,japro,OP,0000,0000,0005,,{input 4}te
- Hier wird der ersten Silbe Input 2 zugewiesen, da {\k21}{%%input=1}Ha{\k10}{%%input=2} als Block zu betrachten ist.
- {%%input=1}{\k21}Ha{\k10}{\k45}te{%%input=4}
- ergibt in der out.ass bei FLAG Skipspace
- Dialogue: 1,0:00:02.10,0:00:09.76,japro,OP,0000,0000,0005,,{input 1}Ha
- Dialogue: 1,0:00:02.10,0:00:09.76,japro,OP,0000,0000,0005,,{input 4}te
- Hier wird der ersten Silbe Input 1 zugewiesen, da {%%input=1} so lange gültig bleibt, bis es in einem späteren Block neu gesetzt wird.
- Wenn man nun ein Vergleich zieht, kann man es so zusammenfassen, dass der letzte Wert eines Blocks für die jeweilige Silbe gesetzt wird. Ein Block fängt bei jedem {\k} an, welches Text enthält.
USER VARIABLE
Hier einfach Zeug eintragen, welches in eine "standard_vars.txt" gehören könnte.
Info: Grundsätzlich kann in Calc jeder Variablen setzen wie er lustig ist, man sollte aber möglichst auf Zahlen und Sonderzeichen im Namen verzichten, da diese manchmal mehr Fehler verursachen, als gewollt.