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.