Hi Motteck.
Man kann beliebig viele
if_s ineinander verschachteln.
Zu deinem Skript muss ich aber noch ein paar Dinge erklären. Zunächst einmal hat in einem Walkmapskript kein
on(enter) zu stehen, das gehört nur ins Raumskript. Dadurch wird ein Ereignis eben dann ausgeführt, wenn der Raum betreten wird. Walkmapskripte hingegen werden von sich aus schon immer automatisch einmal ausgeführt, sobald die Walkmapkachel vom fokusierten Charakter betreten wird. Ok, also
on(enter) weg, wenn das Skript in die Walkmapkachel soll.
Aber angenommen, das stünde im Raumskript, dann müsstest du noch durch geschweifte Klammern anzeigen, welche Skriptzeilen denn nun zum
on(enter) gehören sollen. Die allgemeine Form wäre
Code: Select all
on(enter)
{
Skriptzeile A
Skriptzeile B
Skriptzeile C
usw.
}
Ausnahmefall: Wenn nur eine Zeile unter
on(enter) stehen würde, also bspw. nur Skriptzeile A, dann wären die geschweiften Klammern für diese eine Zeile nicht notwendig.
Entsprechend sind die { und } in folgenden Zeilen überflüssig:
Code: Select all
if_num ( benhp;0 )
{
textout (30 ; !!!VERLOREN !!!;390 ;390;2;255;0;0 )
}
Und jetzt zum Zeitversetzten: Zwar führen
timer() die Zeitverzögerung in jeglichen Skripten aus, aber in der Regel sind Cutscenes (also separat ausgeführte Skripte) notwendig, wenn die Skriptzeilen nicht ununterbrochen abgearbeitet werden sollen. Das gilt besonders für den Befehl
wait(). Würdest du zum Beispiel schreiben
Code: Select all
on(enter)
{
Skriptzeile A
wait(4)
Skriptzeile B
}
dann würde direkt nach Skriptzeile A die Skriptzeile B ausgeführt werden, ohne 4 Sekunden zu warten. Deshalb müsstest du entweder die 3 Zeilen in ein eigenes Skript schreiben und dann per
cutscene(Name der Cutscene) ausführen oder du könntest eine Cutscene simulieren, indem du
minicut() vor Skriptzeile A schreibst.
In deinem konkreten Fall rate ich dir, ein Skript zu erstellen und das was du vor hast nochmal mit
wait() zu versuchen. Ich glaube, dass du das was du vor hast bekommst, wenn du die
timer() durch
wait() ersetzt und die Zahlenangaben aktualisierst. So wie das da jetzt steht, beziehen sich die Angaben im
timer() nämlich alle auf den Startpunkt und werden nicht nacheinander abgearbeitet sondern gleichzeitig.
Wenn du alles in ein neues Skript kopiert hast und die
timer() ersetzt hast, schreibst du ins Walkmapskript nur noch
cutscene(Name der Cutscene).
Falls das noch nicht klar war, hier mein Skriptvorschlag:
In die Cutscene "skript1":
Code: Select all
if_num (hp1;10)
{
wait(2)
setobj(ben;1)
wait(4)
setobj(ben;0)
wait(3)
textout(22;Kokosnuss Hagel -20;390;390;3;255;0;0)
wait(3)
setobj(baummp;0)
wait(3)
setnum(mp1;[mp1]-10)
wait(3)
startparticles()
wait(5)
stopparticles()
wait(4,5)
texthide(22)
wait(4,5)
enablemouse(true)
wait(3)
setnum(benhp;[benhp]-20)
wait(3,5)
setobj(benhp;0)
wait(6)
if_num(benhp;0)
textout(30;!!!VERLOREN !!!;390;390;2;255;0;0)
}
Und ins Walkmapskript:
Die Alternative, um das Skript im Cutscenemodus auszuführen, ist wie gesagt, du lässt die Skriptzeilen im Walkmapskript drin und schreibst als erste Zeile
minicut().