ScriptName Blablabla
Begin OnActivate
MessageBox "Text"
MessageBox "Text"
MessageBox "Text"
MessageBox "Text"
MessageBox "Text"
MessageBox "Text"
End
Ich würde erstmal eine Weiter-Funktion in die Messageboxes einfügen, sprich, du brauchst eine Variable ( In deinem Fall eher 6 ) und eine If-abfrage. Außerdem musst du in deine Messagebox eine weitere Auswahlmöglichkeit einbinden, nenn sie einfach Weiter. Diese sorgt dafür, dass zuerst die erste abgespielt wird, dann, wenn der Player die If-Bedingung mit Weiter erfüllt hat, die zweite auftaucht und so weiter.Eigentlich weiß ich gar nichts über Scripts, muss aber trotzdem eines schreiben.
Ich würde gerne ein Script auf ein Schwert packen, das zuerst mehrere Message Boxen nacheinander öffnet und danach das Schwert wie beim ganz normalen Nehmen ins Inventar des Players übergeht. Mein momentaner Skript sieht so aus:
scn DeinSchwertscript
short Weiter1
short Weiter2
short Weiter3
short Weiter4
short Weiter5
short Weiter6
ref Schwert
Begin On Activate
set Weiter1 to GetButtonpressed
Messagebox "Text" , "Weiter"
if Weiter1 == 0
set Weiter2 to GetButtonpressed
Messagebox "Text" , "Weiter"
if Weiter2 == 0
set Weiter3 to GetButtonpressed
Messagebox "Text" , "Weiter"
if Weiter3 == 0
set Weiter4 to GetButtonpressed
Messagebox "Text" , "Weiter"
if Weiter4 == 0
set Weiter5 to GetButtonpressed
Messagebox "Text , "Weiter"
if Weiter5 == 0
set Weiter6 to GetButtonpressed
Messagebox "Text" , "Weiter"
if Weiter6 == 0
set Schwert to getself
player.additem SchwertID
Schwert.disable
endif
end
scn Schwertscript
short doonce
Begin OnActivate
if doonce == 0
set doonce to 1
activate
endif
end
Begin GameMode
if doonce == 0 || doonce == 7
return
if doonce == 1
messagebox "test"
elseif doonce == 2
messagebox "test"
elseif doonce == 3
messagebox "test"
elseif doonce == 4
messagebox "test"
elseif doonce == 5
messagebox "test"
elseif doonce == 6
messagebox "test"
endif
set doonce to doonce +1
End
Begin Scripteffectstart
Set StumpfoderScharf? to GetButtonpressed
MessageBox "Stumpf oder Scharf?" , "Stumpf" , "Scharf"
if StumpfoderScharf? == 0
Set WelchesMaterial? to Getbuttonpressed
Messagebox "Welches Material?" , "Glas" , "Deadrisch"
if WelchesMaterial? == 0
Set WelcheArt? to GetButtonpressed
Messagebox "Welche Art?" , "Streitaxt" , "Streitkolben" , "Kriegsaxt"
if WelcheArt? == 0
player.additem Glasstreitaxt ( Hab die ID vergessen )
und folgende Funktionen
Deine zweite Frage verstehe ich zwar nicht ganz, aber ich versuche es mal so zu erklären: Sobald die Variable doonce (eigentlich ein etwas unglücklich gewählter Name für ihre eigentliche Aufgabe, aber das soll egal sein) auf 1 gesetzt wird, wird GameMode Block ausgeführt. Dort wird dann in diesem Frame abgefragt, welchen Wert doonce hat und dementsprechend die Messagebox ausgeführt. Ganz am Ende des GameMode Blocks wird dann immer - ungeachtet welchen Wert doonce hat - die Variable um 1 erhöht. Sie ist ja nicht mehr in der If-anweisung drin. Man könnte also auch die Variable in jede If-Abfrage reinschreiben, es hätte den gleichen Effekt. Es wäre nur mehr Schreibarbeit und Fehler ließen sich schwerer entdecken.Ich frag jetzt mal ganz blöd, obwohl ich weiß, dass deinem Skript zu trauen ist, wieso muss die funktion "set doonce to doonce +1" nicht hinter jede If-Abfrage geklemmt werden? Funktioniert das wie eine Art Klammer, bei der jede If-Abfrage in der Klammer von dieser Funktion betroffen ist?
Ich will mit dem Zauber dem Spieler dauerhaft Waffen hinzufügen. Wenn der Begin-Block nur für die Wirkdauer des Zaubers ausgeführt wird, bleiben die Waffen dann trotzdem erhalten?Und zu deinem Script: Begin ScriptEffectStart wird nur einen Frame ausgeführt. Ersetze den Block einfach durch ein Begin ScriptEffectUpdate. Dieser funktioniert ähnlich wie der GameMode-Block, lediglich mit der Ausnahme, dass er nur für die Wirkdauer des Zaubers ausgeführt wird.
Ich hoffe, ich bin nicht unhöflich, aber wo hast du so gut scripten gelernt? Das bisschen, was ich weiß, hab ich mir durch n bisschen rumfragen und ein paar Tutorials selber beigebracht, aber mir scheint, du hast da irgendwas professionelleres gemacht. Wäre schön, wenn du mir nen Tipp geben könntest, wo man das lernen kann. 🙂:flower: