Mod-Übersicht: NPCs
Beschreibung
Verwendung
Du kannst mit NPCs, die einen Dialog haben, sprechen, indem du sie mit der rechten Maustaste anklickst. NPCs lassen sich außerdem über Textbefehle erstellen und konfigurieren. Einem erstellten NPC kannst du einen Dialog geben, indem du ihn mit einem Holzstock programmierst. Dabei gibt es eine Vielzahl hilfreicher Funktionen, um dynamische Dialoge zu erstellen.
Konfiguration
t ein oder drücke / um direkt mit einem Befehl zu starten. Weitere Hinweise zur Eingabe von Befehlen findest du hier).NPCs platzieren (add_npc)
Benutze den Befehl add_npc <id> <position> [name] [textur] [dialog], um einen NPC zu erstellen. Die Parameter id und position müssen angegeben werden, sonst kann die Spielfigur nicht erstellt werden. Die Parameter name, textur und dialog sind optional. Wenn die optionalen Parameter nicht übergeben werden, erhält der NPC keinen Namen, ein zufälliges Aussehen und einen leeren Dialog. Die Position, der Name, das Aussehen und der Dialog lassen sich nach dem Erstellen mit weiteren Befehlen verändern.
Beispiel
/add_npc 10 -694,16,364
Erstellt einen NPC mit der ID 10 an den Koordinaten -694, 16, 364.
/add_npc 11 -694,16,362 Thea mobs_npc4.png
Erstellt einen NPC mit der ID 11 an den Koordinaten -694, 16, 362, setzt das Aussehen des NPCs auf mobs_npc4.png und den Namen auf Thea.
Parameter
| Parameter | Erläuterung |
|---|---|
| ID | Jeder NPC hat eine ID-Nummer, über die dieser NPC gespeichert und angepasst wird. Du kannst mit /list_npcs die Spielfiguren in der Welt anzeigen. |
| Position | Gib die Position im Format x,y,z ohne Leerzeichen ein. Achte darauf, die y-Koordinaten immer 2-3 Blöcke höher einzustellen, damit der NPC nicht im Boden erscheint. |
| Name | Gib hier den Namen des NPCs ein. Achte darauf, dass der Name keine Leerzeichen enthält. Sonderzeichen sind möglich. |
| Textur | Stelle hier das Aussehen des NPCs ein. Gib dabei den Dateinamen der Textur ein, die der NPC als Aussehen erhalten soll. Eine Übersicht der über BLOCKALOT verfügbaren Skins für NPCs findest du hier |
| Dialog | Stelle hier den Dateinamen des Dialogs ein, der geladen werden soll. |
NPCs verändern
Umbenennen (npc_set_name)
Benutze den Befehl npc_set_name <id> [name], um den Namen eines NPCs nachträglich zu verändern.
Beispiel
/npc_set_name 11 Michael
Gibt dem NPC mit der ID 11 den Namen Michael
Verschieben (npc_set_pos)
Benutze den Befehl ``npc_set_pos <id> <position>``, um einen NPC an eine bestimmte Stelle zu teleportieren.
Beispiel
/npc_set_pos 11 -691,17,357
Verschiebt den NPC mit der ID 11 an die Koordinaten -691,17,357.
Aussehen verändern (npc_set_texture)
Benutze den Befehl
npc_set_texture <id> <textur>, um einem NPC ein anderes Aussehen zu geben.
Beispiel
/npc_set_texture 10 mobs_npc4.png
Ändert das Aussehen des NPC mit der ID 10 auf den Skin mobs_npc4.png.
Löschen (remove_npc)
Benutze den Befehl
remove_npc <id>, um einen bestimmten NPC zu entfernen.
Beispiel
/remove_npc 10
Entfernt den NPC mit der ID 10.
NPCs auflisten
Benutze den Befehl list_npcs, um alle mit mobconf hinzugefügten NPCs mit ihrer ID aufzulisten.
Beispiel
/list_npcs
Listet alle NPCs auf.
Bewegungsmuster von NPCs einstellen
Benutze einen Stock, um das Bewegunsmuster des NPCs einzustellen. Halte den Stock in der Hand und klicke dann mit der rechten Maustaste auf den NPC, damit sich das Menü zur Eingabe des Dialogs öffnet. Im Dropdown-Menü im oberen Teil des Fensters kannst du einstellen, ob der NPCs sich frei bewegen (wander), an einer festen Stelle stehen (stand) oder ob er dir folgen soll (follow). Wir empfehlen stand als Einstellung für NPCs, die für Storytelling-Zwecke genutzt werden.
wander einstellst, dass sich der NPC bewegen kann, bewegt er sich möglicherweise so weit von seinem Startpunkt weg, dass er von anderen Lernenden oder Lernbegleitenden nicht mehr gefunden werden kann. Nutze diese Einstellung mit Vorsicht!Dialoge schreiben
Voraussetzungen
Benutze einen Stock, um NPCs zu programmieren. Halte den Stock in der Hand und klicke dann mit der rechten Maustaste auf den NPC, damit sich das Menü zur Eingabe des Dialogs öffnet.
Beispieldialog
Die Funktionen der NPCs werden anhand des folgenden Beispieldialogs erläutert. Kopiere den Text gerne in den Dialogeditor eines NPCs, um den Dialog zu testen.
=start Willkommen! Hilfst du uns bei unserer Bananenfarm? >info:Bananenfarm? >quest:Klar, wie kann ich euch unterstützen? >end:Nee, ich muss weiter. Bis bald! =info :if (@[infogegeben]@==true) then goto infonochmal :if (isNotSet(infogegeben)) then set infogegeben=true Ja, Petra und ich pflanzen hier Bananen an und machen leckeres Bananenbrot! Wie heisst du eigentlich? Achso, das steht ja über deinem Avatar: @[playername]@, aha. Und, hilfst du uns? >questakzeptiert:Na klar! >questabgelehnt:Eher nicht, sorry. =infonochmal He Moment mal... Das habe ich dir doch schon alles erzählt! >end:Stimmt... Ciao! =quest Wir würden gerne unser Rezept für das Bananenbrot überarbeiten. Kannst du uns da einen Tipp geben? >questakzeptiert:Na klar! >questabgelehnt:Eher nicht, sorry. =questakzeptiert Okay: Würdest du auch Blaubeeren anpflanzen, um diese in unserem Bananenbrot zu verbacken? >questgelöst:Ja, schmeckt doch lecker! >questgelöst:Ne, es heisst ja Bananenbrot... =questabgelehnt Macht nichts! Wenn du unser Bananenbrot probieren willst, gehe einfach dort zum Tauschtisch! >end:Danke, ciao! =questgelöst Danke für deine Einschätzung! Wenn du unser Bananenbrot probieren willst, gehe einfach dort zum Tauschtisch! >end:Danke! Bis bald!
Themen / Kapitel
NPC-Dialoge sind in Themen bzw. Kapitel aufgeteilt. Jedes Thema stellt einen Gesprächsabschnitt dar, über den du dich mit dem NPC unterhalten kannst. Leite ein Thema mit einem = ein und schreibe dann den Themennamen auf.
Im Beispieldialog gibt es die Themen start, info, infonochmal, quest, questakzeptiert, questabgelehnt und questgelöst.
Verzweigungen / Antworten
Je nach deiner Antwort kannst du unterschiedliche Themen oder Kapitel ansteuern. Leite die Antworten mit einen > ein, schreibe den Themennamen auf und platziere hinter einem : die Antwort, die auswählbar sein soll.
Mehrere unterschiedliche Antworten können auch auf das selbe Thema verweisen.
Im Beispieldialog gibt es im ersten Thema (start) drei Verzweigungen: info, quest und end. Während info und quest zu den jeweiligen Kapiteln führen, ist end ein besonderes Kapitel.
besondere Kapitel
Das Thema =start leitet den Dialog ein und wird automatisch die Begrüßung durch den NPC.
Das Thema end beendet den Dialog. Verwende es in Verzweigungen, wenn du dich von einem NPC verabschiedest.
Variablen
NPCs können Variablen speichern, die solange bestehen bleiben, wie du den NPC nicht löschst oder den Dialog neu abspeicherst. Mit Hilfe dieser Variablen kannst du Informationen im NPC speichern.
Im Beispieldialog wird so etwa gespeichert, ob Henry bereits einmal die Information über die Bananenfarm erzählt hat. Wenn das Thema info zum ersten Mal aufgerufen wird, wird mit :if (isNotSet(infogegeben)) then set infogegeben=true überprüft, ob die Variable infogegeben bereits einen Wert hat. Wenn nicht, dann wird die Variable auf true eingestellt. Wenn später das Thema info nochmals aufgerufen wird, überprüft der NPC mit dem Befehl :if (@[infogegeben]@==true) then goto infonochmal, ob die Variable infogegeben den Wert true aufweist. Falls ja, springt der NPC direkt zum Kapitel infonochmal und beschwert sich, dass er sich wiederholen muss.
Avatarspezifische Variablen
Normale Variablen werden im NPC gespeichert und sind für alle, die den NPC besuchen, gleich. Eine komplexere Möglichkeit ist es, Variablen zu erstellen, die den Namen eines oder einer Lernenden bzw. der Lernbegleitung enthalten. So lassen sich beispielsweise Geheimnisse oder Infos pro Person abspeichern und vielfältige Dialogszenarien umsetzen.
Der folgende Beispieldialog zeigt, wie ein simples Geheimnis programmiert werden kann. Auf Knopfdruck kann der NPC das Geheimnis mitteilen oder vergessen, dass er das Geheimnis mitgeteilt hat.
=start (Dieser Teil wird nie gezeigt und dient nur dem Einstellen der Initialwerte, also z.B. chbinder.kenntgeheimnis=false :if (isNotSet([@[playername]@.kenntgeheimnis])) then set @[playername]@.kenntgeheimnis=false :if (@[@[playername]@.kenntgeheimnis]@==true) then goto geheimnisja :if (@[@[playername]@.kenntgeheimnis]@==false) then goto geheimnisnein =geheimnisaktivieren :set @[playername]@.kenntgeheimnis=true :goto start =geheimnisdeaktivieren :set @[playername]@.kenntgeheimnis=false :goto start =geheimnisja Kennt Geheimnis: @[@[playername]@.kenntgeheimnis]@ Oha, du kennst das Geheimnis! >geheimnisdeaktivieren: Ja, aber jetzt vergesse ich das Geheimnis wieder... >end:Ciao! =geheimnisnein Kennt Geheimnis: @[@[playername]@.kenntgeheimnis]@ Oha, du wirst das Geheimnis nie erfahren! >geheimnisaktivieren: Ne, bitte sag mir das Geheimnis! >end:Ciao!
Befehle
Zusammen mit den Variablen stellen die Befehle hilfreiche Werkzeuge dar, um dynamischere Dialoge zu erstellen. Befehle starten mit einem : und werden Zeile für Zeile ausgeführt.
Variablen setzen (:set)
Mit Hilfe von :set können Variablen auf einen bestimmten Wert eingestellt werden. set infogegeben=true speichert das Wort „true“ in der Variable infogegeben.
Zu Thema springen (:goto)
Mit Hilfe von :goto kann der NPC von einem Thema direkt in ein anderes springen. :goto start lässt den NPC zum Beispiel in das Thema start springen. Dieser Befehl erscheint häufig zusammen mit Bedingungen, um je nach Zustand oder Wert eine andere Antwort zu geben.
Bedingungen (:if)
Mit Hilfe von Bedingungen können Zustände oder Werte von Variablen überprüft werden. :if (@[infogegeben]@==true) then goto infonochmal lässt den NPC überprüfen, ob die Variable infogegeben auf den Wert true eingestellt ist. Wenn das der Fall ist, springt der NPC zum Thema infonochmal.
Weitere Befehle und komplette Dokumentation
Klicke im Dialogeditor des NPCs auf die Schaltfläche Dialog Help, um weitere Befehle und Infos zu simple_dialogs auf Englisch zu erhalten.
In der Dokumentation von simple_dialogs auf Github findest du ebenfalls eine Übersicht über die Befehle und Infos. Die dort verlinkten Textdateien, die mit 'sd-' anfangen, beinhalten außerdem Beispieldialoge, um einige der Fähigkeiten von simple_dialogs zu illustrieren.






