PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Messagebox



Satsuma
19.07.2008, 20:13
Hi!
Ich hab da ein problem: also ich versuche einen script zu schreiben, in dem es verlinkte messageboxen gibt... aber da es mein erster versuch in dieser hinsicht ist, hat dieser natürlich nicht geklappt. Jetzt würde ich aber gerne wissen was ich falsch mache. Hier der script:



short Button
short AuswahlEins
short AuswahlZwei
short DoOnce

Begin OnActivate

messagebox "Bla bla bla" , " Da ist schon alles richtig, also las ich das mal geheim:D"
Set Button to GetButtonPressed
If Button == 2
set AuswahlEins to 1
set DoOnce to 1
elseif Button == 3
set AuswahlEins to 2
set DoOnce to 1
elseif Button == 4
set AuswahlEins to 3
set DoOnce to 1
elseif Button == 5
set AuswahlEins to 4
set DoOnce to 1
elseif Button == 6
set AuswahlEins to 5
set DoOnce to 1
endif

If DoOnce == 1
messagebox "Bla bla bla" , " Da ist schon alles richtig, also las ich das mal geheim:D"
Set Button to GetButtonPressed
If Button == 2
set AuswahlZwei to 1
elseif Button == 3
set AuswahlZwei to 2
elseif Button == 4
set AuswahlZwei to 3
elseif Button == 5
set AuswahlZwei to 4
elseif Button == 6
set AuswahlZwei to 5
elseif Button == 7
set AuswahlZwei to 6
endif
set DoOnce to 2
endif

... da wird es dann weitergehen (aber keine weiteren messageboxen...)


Das Problem ist nähmlich das wenn ich mein objekt anklicke dann fängt der script immer von der zweiten box an...


If Button == 2
Dem bezüglich bin ich mir auch nicht ganz sichter: der erste button soll sein "Ende", also schätze ich die muss ich auslassen...

Low Post
19.07.2008, 20:56
Also:


Wenn mehrere MessageBoxen im selben Frame (selber Durchlauf) angezeigt werden sollen wird nur die letzte angezeigt.
Bau einen Delay zwischen beiden ein, dann werden auch beide hintereinander angezeigt (ich glaube du hast hier einfach beim ersten if DoOnce == 0 vergessen ;) )
GetButtonPressed funktioniert nur in einem Gamemode-/Menumode-/ScriptEffectUpdate-Block
GetButtonPressed beginnt bei 0 zu "zählen", d.h. wenn z.B. der zweite Button gedrückt wird gibt es 1 aus.



Ohne dein Script jetzt genauer zu kennen:

short Button
short AuswahlEins
short AuswahlZwei
short DoOnce

Begin OnActivate
if ( DoOnce == 0 )
set DoOnce to 1
set Button to GetButtonPressed
messagebox "Bla bla bla" , " ;Da ist schon alles richtig, also las ich das mal geheim:D"
endif
End

Begin Gamemode
if ( DoOnce == 1 )
Set Button to GetButtonPressed
if ( Button == 0 )
set DoOnce to 0
elseif ( Button > 0 )
set AuswahlEins to Button
set DoOnce to 2
endif
elseif ( DoOnce == 2 )
set DoOnce to 3
Set Button to GetButtonPressed
messagebox "Bla bla bla" , " ;Da ist schon alles richtig, also las ich das mal geheim:D"
elseif ( DoOnce == 3 )
set AuswahlZwei to Button
set DoOnce to 4
elseif ( DoOnce == 4 )
;... da wird es dann weitergehen (aber keine weiteren messageboxen...)
set DoOnce to 5 ;Alternativ 0, wenn das ganze durch erneutes aktivieren nochmal ablaufen soll.
endif
End

Satsuma
21.07.2008, 09:37
Danke für die schnelle antwort;) (Konnte gestern nicht antworten; server down oder so)

Aber irgendwie funtzt das noch nicht wirklich:( Jetzt taucht die erste messagebox auf, die zweite aber nimmer:()

Edit: Noch was: irgendwarum wird der script überhaupt nur einmal ausgeführt... also ich kann sogar das spiel laden, aber es hilft nichts... ih muss immer das spiel neu starten, und dann laden. Dies sollte aber nicht sein

Low Post
21.07.2008, 16:06
Danke für die schnelle antwort;) (Konnte gestern nicht antworten; server down oder so)

Aber irgendwie funtzt das noch nicht wirklich:( Jetzt taucht die erste messagebox auf, die zweite aber nimmer:()

Neuer Versuch. Kann sein, dass dein Code da etwas reingespielt hat, da ich vergessen hab den erst nachher ablaufen zu lassen. ;)


short Button
short AuswahlEins
short AuswahlZwei
short DoOnce

Begin OnActivate
if ( DoOnce == 0 )
set DoOnce to 1
set Button to GetButtonPressed
messagebox "Bla bla bla" , " ;Da ist schon alles richtig, also las ich das mal geheim:D"
endif
End

Begin Gamemode
if ( DoOnce == 1 )
Set Button to GetButtonPressed
if ( Button == 0 )
set DoOnce to 0
elseif ( Button > 0 )
set AuswahlEins to Button
set DoOnce to 2
endif
elseif ( DoOnce == 2 )
set DoOnce to 3
Set Button to GetButtonPressed
messagebox "Bla bla bla" , " ;Da ist schon alles richtig, also las ich das mal geheim:D"
elseif ( DoOnce == 3 )
Set Button to GetButtonPressed
if ( Button == 0 )
set DoOnce to 0
elseif ( Button > 0 )
set AuswahlZwei to Button
set DoOnce to 4
endif
elseif ( DoOnce == 4 )
;... da wird es dann weitergehen (aber keine weiteren messageboxen...)
set DoOnce to 0
endif
End


Edit: Noch was: irgendwarum wird der script überhaupt nur einmal ausgeführt... also ich kann sogar das spiel laden, aber es hilft nichts... ih muss immer das spiel neu starten, und dann laden. Dies sollte aber nicht sein

Kann es sein, dass du OBSE-Befehle verwendest, das Spiel aber ohne OBSE startest?
Das würde nämlich genau darin resultieren.


Gleiches kann auch bei nicht sachgerechtem Gebrauch von Vanilla-Funktionen (z.B. GetIsReference mit einer nicht validen Ref-Variablen als Parameter) passieren, normalerweise deutet das aber auf OBSE hin.

Satsuma
21.07.2008, 16:29
Kann es sein, dass du OBSE-Befehle verwendest, das Spiel aber ohne OBSE startest?
Das würde nämlich genau darin resultieren.
ok, fnagen wir am besten dafon an, das ich garn nicht weiß was das ist:(

Edit: Ok, funtzt. Halbert :(
also, ich per script dann mal ausprobiert ob auch alle veriablen zugewiesen werden, und festgestellt, das nur die "AuswahlEins" zugewiesen wird, leider bleibt "AuswahlZwei" auf -1... ich versuch da grad noch etwas zu ändern...

Low Post
21.07.2008, 17:39
Neuer Version, probier mal das hier:


short Button
short AuswahlEins
short AuswahlZwei
short DoOnce

Begin OnActivate
if ( DoOnce == 0 )
set DoOnce to 1
set Button to GetButtonPressed
messagebox "Bla bla bla" , " ;Da ist schon alles richtig, also las ich das mal geheim:D"
endif
End

Begin Gamemode
if ( DoOnce == 1 )
Set Button to GetButtonPressed
if ( Button == 0 )
set DoOnce to 0
elseif ( Button > 0 )
set AuswahlEins to Button
set DoOnce to 2
endif
elseif ( DoOnce == 2 )
set DoOnce to 3
Set Button to GetButtonPressed
messagebox "Bla bla bla" , " ;Da ist schon alles richtig, also las ich das mal geheim:D"
elseif ( DoOnce == 3 )
Set Button to GetButtonPressed
if ( Button == 0 )
set DoOnce to 0
elseif ( Button > 0 )
set AuswahlZwei to Button
set DoOnce to 4
endif
elseif ( DoOnce == 4 )
;... da wird es dann weitergehen (aber keine weiteren messageboxen...)
set DoOnce to 0
endif
End

Satsuma
21.07.2008, 18:20
Low Post, was würde ich nur ohne dich machen? http://www.multimediaxis.de/images/smilies/old/sm_12.gifhttp://www.multimediaxis.de/images/smilies/old/sm_12.gif

Das funktioniert perfekt!!!!:D

Edit: So, das script wurde auf 326 Zeilen ausgeweitet xD
Noch eine Frage: ist es möglich per "message" eine Veriable (am besten eine Globale) auszugeben ? Also so wie z.b. Hehlergold
also nicht "message GlobaleVeriable", sondern mit text davor

Low Post
21.07.2008, 19:30
Meinst du sowas?

Message "MeineVariable hat folgenden Wert: %.0f. Ist zwar ganz nett, danach will ich aber noch mehr schreiben. ;)", MeineVariable

Auf das kursiv fette kommt es an, der Rest ist nur Beiwerk. ;)

Für genauere Informationen kommt wie immer der Link zur Seite im CS-Wiki (http://cs.elderscrolls.com/constwiki/index.php/Message#Formatting_notation). :)

Satsuma
22.07.2008, 10:56
?
Also was genau muss ich ersetzten? Das klappt bei mir irgendwie nicht:


Message "Meine Zahl: " , Zahl

Edit:
Ncoh eine frage: wie kann ich es machen, das sich eine aktion wiederholt? Aber nicht ewig, so wie es mir gelingt, sondern bis der spieler auf einen Knopf drückt? Ich hab das mal so ähnlich probiert:



short Zahl

Begin GameMode
....
elseif DoOnce == 5
set Button to GetButtonPressed
If Zahl == 1
messagebox "Meine Box" , "Ende" , "Nochmal"
elseif Zahl == 2
messagebox "Meine Box" , "Ende" , "Nochmal"
endif
set DoOnce to 6

Elseif DoOnce == 6
If Button == 0
set DoOnce to 0
elseif Button == 1
set DoOnce to 5
endif
endif
end

Low Post
22.07.2008, 13:33
Es kommt auf das %.0f an, das meine Zahl ist dabei vollkommen unerheblich.
Du kannst auch ohne Probleme sowas machen:

Message "Es befinden sich momentan %.0f Leute im Gefängnis", VariableMitAnzahlPersonenImGefängis

Wenn du Kommazahlen anzeigen willst musst du das 0 durch die Anzahl der anzuzeigenden Kommastellen ersetzten.


Edit:
Ncoh eine frage: wie kann ich es machen, das sich eine aktion wiederholt? Aber nicht ewig, so wie es mir gelingt, sondern bis der spieler auf einen Knopf drückt? Ich hab das mal so ähnlich probiert:

blub

Mach vor das if Button == 0 noch ein set Button to GetButtonPressed:

short Zahl
short Button

Begin GameMode
;....
elseif DoOnce == 5
set Button to GetButtonPressed
If Zahl == 1
messagebox "Meine Box" , "Ende" , "Nochmal"
elseif Zahl == 2
messagebox "Meine Box" , "Ende" , "Nochmal"
endif
set DoOnce to 6

Elseif DoOnce == 6
set Button to GetButtonPressed
If Button == 0
set DoOnce to 0
elseif Button == 1
set DoOnce to 5
endif
endif
end

Bei GetButtonPressed muss man davon ausgehen, dass es einige Frames benötigt, bis es den richtigen Wert ausgibt. Ist auch der Grund, warum das Ganze in einen Gamemode-Block muss und nicht direkt im OnActivate-Block abgehandelt werden kann. ;)

Satsuma
22.07.2008, 14:50
Das ding will immer noch nicht:( Hab da jetzt 18 verschiedene versuche in dieser hinnsicht gemacht, das will einfach nicht. Hab aber auch gefunden was genau nicht will:


If Button == 0
set DoOnce to 0
Der andere Teil geht jetzt Perfekt, also das ding wird wiederholt, unzwar so wie ich es möchte, aber dieser Part will einfach nur nicht, in meinem script ist da überigens auch nicht "Set DoOnce to 0" , sondern "Set DoOnce to 7". Glaub aber nicht das dies nun wirklich einen unterschied macht.

Low Post
22.07.2008, 15:21
Zeig mal das ganze Script her, so ist eine Diagnose nämlich äußerst kompliziert.
Und ich denke schon, dass es einen Unterschied macht, ob DoOnce auf 0, oder 7 gesetzt wird. ;)

Satsuma
22.07.2008, 20:44
Ich sende es dir mal per PN, mit einer erklärung. Des soll nähmlich noch geheim bleiben ;)

Satsuma
24.07.2008, 09:40
ok, Low Post hat mir schon mal gut geholfen :) Ich musste zwar das script dann noch ein wenig anpassen, war aber halb so wild. Mir ist aber noch eine frage aufgekommen, hat zwar nichts mit massegeboxen zu tuhen, will aber keinen neuen theard öffnen, unzwar: weiß jemand wo und wie man die Statistiken modifizieren kann, ich bin mir sicher das es irgendwie gehen muss, da es ja mods gibt wo das ein wenig gemacht wurde.

P.S. http://www.multimediaxis.de/images/smilies/old/sm_12.gif Low Post http://www.multimediaxis.de/images/smilies/old/sm_12.gif für die große hilfe

Edit: ach ja, sorry für den Doppel-post, aber an sonsten würde nimand merken das es hier noch eine neue frage gibt.