Oblivion:Alternativen mit Messageboxen auswählen: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K
K
 
(17 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 36: Zeile 36:
 
       messagebox "Möchtet ihr einen Apfel?", "Ja", "Nein"
 
       messagebox "Möchtet ihr einen Apfel?", "Ja", "Nein"
 
       Set RealiseSelection to 1       
 
       Set RealiseSelection to 1       
 
 
   endif
 
   endif
  
 
   if RealiseSelection  
 
   if RealiseSelection  
 
       Set Button to GetButtonPressed
 
       Set Button to GetButtonPressed
      Set RealiseSelection to 0
 
 
       if Button == -1  
 
       if Button == -1  
 
         return
 
         return
 
       elseif Button == 0
 
       elseif Button == 0
 +
        Set RealiseSelection to 0
 
         Player.AddItem apple 1
 
         Player.AddItem apple 1
 
       elseif Button == 1
 
       elseif Button == 1
         return
+
         Set RealiseSelection to 0
 
       endif
 
       endif
 
   endif
 
   endif
  
 
End
 
End
</tesscript>  
+
</tesscript>
  
  
 
==== Handhabung ====
 
==== Handhabung ====
Dies Script kann als Object-Script oder als Quest-Script genutzt werden.
+
Dieses Script kann als Object-Script oder als Quest-Script genutzt werden.
  
  
Zeile 86: Zeile 85:
 
   
 
   
 
Begin OnActivate
 
Begin OnActivate
   If ( RealiseSelection== 0 )
+
   If ( RealiseSelection == 0 )
     MessageBox "Was möchtet Ihr zu trinken?" "Bier" "Wein" "nichts"   
+
     MessageBox "Was möchtet Ihr zu trinken?", "Bier", "Wein", "nichts"   
 
     Set RealiseSelection to 1
 
     Set RealiseSelection to 1
   ElseIf ( RealiseSelection> 0 )
+
   ElseIf ( RealiseSelection > 0 )
    Activate
+
    Activate
    EndIf
+
  EndIf
 
End
 
End
  
Zeile 106: Zeile 105:
 
         Player.AddItem DrinkBeer 1
 
         Player.AddItem DrinkBeer 1
 
         Player.EquipItem DrinkBeer
 
         Player.EquipItem DrinkBeer
Set RealiseSelection to 0
+
        Set RealiseSelection to 0
 
     elseif  button ==  1
 
     elseif  button ==  1
 
         message " "
 
         message " "
Zeile 112: Zeile 111:
 
         Player.AddItem DrinkWine1SurilieGood 1
 
         Player.AddItem DrinkWine1SurilieGood 1
 
         Player.EquipItem DrinkWine1SurilieGood
 
         Player.EquipItem DrinkWine1SurilieGood
Set RealiseSelection to 0
+
        Set RealiseSelection to 0
 
     elseif  Button ==  2
 
     elseif  Button ==  2
Set RealiseSelection to 0
+
        Set RealiseSelection to 0
 
         Return
 
         Return
 
     endif
 
     endif
 
   endif
 
   endif
 +
 
End </tesscript>
 
End </tesscript>
 
  
 
==== Handhabung ====
 
==== Handhabung ====
Dies Script liegt auf einem Object vom Typ Aktivator.
+
Dieses Script liegt auf einem Object vom Typ [[ob:Activator|"Activator"]].
Da ja nur getrunken werden soll, ist der Scripttechnische Umweg mit [[ob:AddItem|AddItem]] und [[ob:EquipItem|EquipItem]] irrelevant, deshalb werden die automatischen Meldungen auch unterdrückt.
+
Da ja nur getrunken werden soll (also [[ob:EquipItem|EquipItem]]), ist der scripttechnische Umweg mit [[ob:AddItem|AddItem]] irrelevant, deshalb werden die automatischen Meldungen auch unterdrückt.
  
 
== Auswahl über ein Buch==
 
== Auswahl über ein Buch==
Zeile 133: Zeile 132:
  
 
==== Theorie ====
 
==== Theorie ====
Das Buch befindet sich im Inventar, damit erscheint diese Messagebox erscheint im OnEquip-Block, die Auswahl kann dort aber nicht abgearbeitet werden, da der Block nur bei der Aktivierung durchlaufen wird. Weiter ist während des Lesens des Buches nicht der GameMode-Block aktiv sondern der MenuMode-Block. Dort wird also die Auswahl abgearbeitet.
+
Das Buch befindet sich im Inventar, damit erscheint diese Messagebox im OnEquip-Block. Die Auswahl kann dort aber nicht abgearbeitet werden, da der Block nur bei der Aktivierung durchlaufen wird. Weiter ist während des Lesens des Buches nicht der GameMode-Block aktiv sondern der MenuMode-Block. Dort wird also die Auswahl abgearbeitet.
  
  
Zeile 153: Zeile 152:
 
   
 
   
 
   if Doonce == 0
 
   if Doonce == 0
       MessageBox "Was möchtet Ihr zu trinken?" "Tamikas Westebenen-Wein" "Tamika, Jahrgang 415 "  
+
       MessageBox "Was möchtet Ihr zu trinken?", "Tamikas Westebenen-Wein", "Tamika, Jahrgang 415 "  
 
       Set Doonce to 1
 
       Set Doonce to 1
 
   endif
 
   endif
Zeile 161: Zeile 160:
 
Begin MenuMode
 
Begin MenuMode
 
   
 
   
  Set Button to GetButtonPressed
 
 
   if Doonce == 1
 
   if Doonce == 1
       if Button == 0
+
       Set Button to GetButtonPressed
 +
      If ( button == -1 )
 +
        Return
 +
      Elseif Button == 0
 +
        Set Doonce to 2
 
         message " "
 
         message " "
 
         message " "
 
         message " "
Player.AddItem DrinkWine2TamikaGood 1
+
        Player.AddItem DrinkWine2TamikaGood 1
Player.EquipItem DrinkWine2TamikaGood
+
        Player.EquipItem DrinkWine2TamikaGood
 
       elseif Button ==  1
 
       elseif Button ==  1
 +
        Set Doonce to 2
 
         message " "
 
         message " "
 
         message " "
 
         message " "
Zeile 176: Zeile 179:
 
         Return
 
         Return
 
       endif
 
       endif
      Set Doonce to 2
+
 
 
   endif
 
   endif
 
   
 
   
 
End  
 
End  
</tesscript>  
+
</tesscript>
  
 +
==== Handhabung ====
 +
Dieses Script liegt auf einem Object vom Typ [[ob:Book|"Book"]].
 +
 +
 +
== Auswahl über weitere Auslöser/Blöcke ==
  
==== Handhabung ====
+
Eine Auswahl, genauer der Start der Auswahl, kann natürlich an vielen Stellen in einem Script stattfinden. Es sind unterschiedliche Auslöser, d.h. Blöcke möglich, wie z.B. ein OnTrigger-Block oder ein ScriptEffectStart-Block. Auch hier muss die Auswertung der Messagebox in einem Block stattfinden, der nicht nur einmal läuft (also meist der GameMode-Block oder der MenuMode-Block).
Dies Script liegt auf einem Object vom Typ Buch.
+
Bei Zaubern kann die Messagebox-Auswertung auch in einem ScriptEffectUpdate-Block laufen. Hier muss man aber aufpassen, dass der Zaubereffect lange genug hält, um den Job zu erledigen.  
  
  
Zeile 193: Zeile 201:
 
* [[:Kategorie:Blocktypen|Blocktypen]]
 
* [[:Kategorie:Blocktypen|Blocktypen]]
  
* [[:kategorie:Aktivieren und Aktivatoren]]
+
* [[:Kategorie:Aktivieren und Aktivatoren|Aktivieren und Aktivatoren]]
 
 
 
 
{{ Scriptkategorie |Messages und Messageboxen|Alternativen auswählen}}
 
  
  
[[Kategorie:Messages und Messageboxen|Alternativen mit Messageboxen auswählen]]
+
{{ Scriptkategorie |Messages und Messageboxen|Level_2_Scripts|Alternativen mit Messageboxen auswählen}}
[[Kategorie:Level 2|Alternativen mit Messageboxen auswählen]]
 

Aktuelle Version vom 9. August 2009, 09:57 Uhr

Einleitung

Mit den Messageboxen kann der Nutzer aus vorgegebenen Möglichkeiten etwas auswählen.


Einfache Auswahl

Anwendung

Aufgabenstellung

Dem Spieler wird angeboten, einen Apfel in das Inventar zu bekommen. Der Spieler kann annehmen oder ablehnen.


Theorie

Es gilt zu beachten, dass maximal neun Alternativen angegeben werden können. GetButtonpressed liefert nur das erste Mal nach erfolgter Auswahl einen korrekten Wert. Beim zweiten mal wird -1 zurückgegeben.


Realisierung

Umgebung

keine Anmerkungen


Script

<tesscript> Scn MakeAChoice

Written by keris
9.8.08

short Doonce short Button short RealiseSelection

Begin GameMode

  if Doonce == 0
     set Doonce to 1 ; es soll nur einmal gemacht werden!
     messagebox "Möchtet ihr einen Apfel?", "Ja", "Nein"
     Set RealiseSelection to 1      
  endif
  if RealiseSelection 
     Set Button to GetButtonPressed
     if Button == -1 
        return
     elseif Button == 0
        Set RealiseSelection to 0
        Player.AddItem apple 1
     elseif Button == 1
        Set RealiseSelection to 0
     endif
  endif

End </tesscript>


Handhabung

Dieses Script kann als Object-Script oder als Quest-Script genutzt werden.


Auswahl über einen Aktivator

Anwendung

Aufgabenstellung

Der Player soll nach Drücken eines Schalters nach seinem Wunschgetränk gefragt werden. Entsprechend der Auswahl bekommt er etwas zu trinken.


Theorie

Diese Messagebox erscheint im Onactivate-Block, die Auswahl kann dort aber nicht abgearbeitet werden, da der Block nur bei der Aktivierung durchlaufen wird.


Realisierung

Umgebung

Es gibt einen Schalter in der Welt, auf diesem liegt das Script.


Script

<tesscript> Scn OrderDrink

gives a drink to the player
originated
keris, 20.11.07

short Button short RealiseSelection

Begin OnActivate

 If ( RealiseSelection == 0 )
    MessageBox "Was möchtet Ihr zu trinken?", "Bier", "Wein", "nichts"   
    Set RealiseSelection to 1
 ElseIf ( RealiseSelection > 0 )
    Activate
 EndIf

End


Begin GameMode

 If ( RealiseSelection == 1 )
    Set button to GetButtonPressed
    If ( button == -1 )
       Return
    elseif  Button ==  0
       message " "
       message " "
       Player.AddItem DrinkBeer 1
       Player.EquipItem DrinkBeer
       Set RealiseSelection to 0
    elseif  button ==  1
       message " "
       message " "
       Player.AddItem DrinkWine1SurilieGood 1
       Player.EquipItem DrinkWine1SurilieGood
       Set RealiseSelection to 0
    elseif  Button ==  2
       Set RealiseSelection to 0
       Return
    endif
 endif

End </tesscript>

Handhabung

Dieses Script liegt auf einem Object vom Typ "Activator". Da ja nur getrunken werden soll (also EquipItem), ist der scripttechnische Umweg mit AddItem irrelevant, deshalb werden die automatischen Meldungen auch unterdrückt.

Auswahl über ein Buch

Anwendung

Aufgabenstellung

Der Player soll beim Lesen seines Tamika-Reiseführers ein Getränkt dieser Gegend ausprobieren. Entsprechend der Auswahl bekommt er einmal etwas zu trinken.


Theorie

Das Buch befindet sich im Inventar, damit erscheint diese Messagebox im OnEquip-Block. Die Auswahl kann dort aber nicht abgearbeitet werden, da der Block nur bei der Aktivierung durchlaufen wird. Weiter ist während des Lesens des Buches nicht der GameMode-Block aktiv sondern der MenuMode-Block. Dort wird also die Auswahl abgearbeitet.


Realisierung

Umgebung

Es gibt ein Buch im Inventar des Players, auf diesem liegt das Script.


Script

<tesscript> Scn TestingWine

gives some wine to the player
originated
keris, 23.08.08

short Button short Doonce

Begin OnEquip

  if Doonce == 0
      MessageBox "Was möchtet Ihr zu trinken?", "Tamikas Westebenen-Wein", "Tamika, Jahrgang 415 " 
      Set Doonce to 1
  endif

End

Begin MenuMode

  if Doonce == 1
     Set Button to GetButtonPressed
     If ( button == -1 )
        Return
     Elseif Button == 0
        Set Doonce to 2
        message " "
        message " "
        Player.AddItem DrinkWine2TamikaGood 1
        Player.EquipItem DrinkWine2TamikaGood
     elseif Button ==  1
        Set Doonce to 2
        message " "
        message " "
        Player.AddItem DrinkWine4TamikaBetter 1
        Player.EquipItem DrinkWine4TamikaBetter
     else
        Return
     endif
  endif

End </tesscript>

Handhabung

Dieses Script liegt auf einem Object vom Typ "Book".


Auswahl über weitere Auslöser/Blöcke

Eine Auswahl, genauer der Start der Auswahl, kann natürlich an vielen Stellen in einem Script stattfinden. Es sind unterschiedliche Auslöser, d.h. Blöcke möglich, wie z.B. ein OnTrigger-Block oder ein ScriptEffectStart-Block. Auch hier muss die Auswertung der Messagebox in einem Block stattfinden, der nicht nur einmal läuft (also meist der GameMode-Block oder der MenuMode-Block). Bei Zaubern kann die Messagebox-Auswertung auch in einem ScriptEffectUpdate-Block laufen. Hier muss man aber aufpassen, dass der Zaubereffect lange genug hält, um den Job zu erledigen.


Weitere Information



Weitere Scripts aus dieser Kategorie

Level 1

  

    Level 3

       



    {{#if: Messages und Messageboxen | }} {{#if: Level_2_Scripts | }}