Allgemein
News
News-Archiv
Partner
Netzwerk
Banner
Header
Media
Downloads
Impressum

The Elder Scrolls
Arena
Daggerfall
Spin-offs
Romane
Jubiläum
Reviews
Welt von TES
Lore-Bibliothek
Namens-
generator

FRPGs

Elder Scrolls Online
Allgemein
Fraktionen
Charakter
Kargstein
Technik
Tamriel-
Manuskript

Media

Skyrim
Allgemein
Lösungen
Tipps & Tricks
Steam-Kniffe
Review
Media
Plugins & Mods

Oblivion
Allgemein
Lösungen
Tipps & Tricks
Technik
Charakter
Media
Plugins & Mods
Kompendium

Morrowind
Allgemein
Lösungen
Tipps & Tricks
Media
Plugins & Mods

Foren
The Elder Scrolls Online
Hilfe & Diskussion

Skyrim
Hilfe & Diskussion
Plugins & Mods

Ältere TES-Spiele
TES-Diskussion
Oblivion-Plugins
Morrowind-Plugins

Community
Taverne zum Shalk
Adventures of Vvardenfell
Tales of Tamriel
Ergebnis 1 bis 14 von 14

Thema: Messagebox

  1. #1

    Messagebox

    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:

    Code:
    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...
    Zitat Zitat
    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...

  2. #2
    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:
    Code:
    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
    Geändert von Low Post (21.07.2008 um 15:03 Uhr)

  3. #3
    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
    Geändert von Satsuma (21.07.2008 um 08:45 Uhr)

  4. #4
    Zitat Zitat von Gammel Beitrag anzeigen
    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.

    Code:
    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
    Zitat Zitat
    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.
    Geändert von Low Post (21.07.2008 um 16:38 Uhr)

  5. #5
    Zitat Zitat
    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...
    Geändert von Satsuma (21.07.2008 um 16:21 Uhr)

  6. #6
    Neuer Version, probier mal das hier:

    Code:
    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

  7. #7
    Low Post, was würde ich nur ohne dich machen?

    Das funktioniert perfekt!!!!

    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
    Geändert von Satsuma (21.07.2008 um 17:55 Uhr)

  8. #8
    Meinst du sowas?
    Code:
    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.

  9. #9
    ?
    Also was genau muss ich ersetzten? Das klappt bei mir irgendwie nicht:
    Code:
    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:
    Code:
    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
    Geändert von Satsuma (22.07.2008 um 11:26 Uhr)

  10. #10
    Es kommt auf das %.0f an, das meine Zahl ist dabei vollkommen unerheblich.
    Du kannst auch ohne Probleme sowas machen:
    Code:
    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.

    Zitat Zitat
    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:
    Code:
    blub
    Mach vor das if Button == 0 noch ein set Button to GetButtonPressed:
    Code:
    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.

  11. #11
    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:
    Code:
       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.

  12. #12
    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.

  13. #13
    Ich sende es dir mal per PN, mit einer erklärung. Des soll nähmlich noch geheim bleiben

  14. #14
    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. Low Post 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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •