Dorf-Charaktere steuern

Aus Sternenschweif Wiki
Wechseln zu: Navigation, Suche

Um ein Dorf bzw. eine Stadt zu beleben, sind NPCs unerlässlich. Diese können mit Sternenschweif HD relativ einfach gemodded werden, sie können an bestimmte Orte permanent platziert oder zum Herumwandern gebracht werden, sie haben einen "Tagesablauf" und Zugriffsfunktionen, die es ermöglichen, Ihnen Stichwortdialoge oder spezifische Dialoge zuzuweisen.

Grundlagen

Dorf-NPCs werden über die "Gebäudeereignisse" definiert, ihr Typ muss "Person" sein. Sie müssen eine im Dorf eindeutige Ereignis-ID haben. Die restlichen Parameter:

  • SubID (UT2) ist der Übersetzungsschlüssel für den Namen, zB "kvir_ancoron_name", dieser erscheint beim Tooltip und einem etwaigen SchlüsselwortDialog
  • Schlüsselwortdlg (UT3) ist der Schlüsselwortdialog, der beim Anklicken des Charakters aufgerufen wird. Der Standardname wird automatisch durch einen etwaigen definierten Namen ersetzt
  • Trigger kann für einen einfachen Start eines Standard-Dialogs verwendet werden

Außerdem muss der Datentyp auf "Skript" gestellt werden, damit zumindest die Dauerposition des Charakters definiert wird (Ausnahme: Vordefinierte Charaktere, die nur verändert werden)

function getSchedule() {
    return [{time:0,location:{x:20,y:10,z:30}}];
}
 
function getChardef() {
    return "humanmalebartender";
}
  • time:0 ist wichtig, damit der Eintrag rund um die Uhr gilt
  • location sind Koordinaten im obigen Format, bitte auf korrekte y-Koordinate achten
  • getChardef liefert die Charakterdefinition zurück, diese kann entweder ein Charakter Template oder eine Charakterdefinition direkt aus dem Editor sein

Fortgeschrittenes Modding

Neben den obigen Grundfunktionen bietet das Charaktermodding auch noch eine Reihe weiterer Funktionen für maximale Flexibilität im Modding. Es können folgende Funktionen im Charakter definiert werden:

function getSchedule() {
    // der Ablaufplan für den Charakter
}
 
function getName() {
    // Name des Charakters zurückliefern
}
 
function getChardef() {
    // Charakterdefinition
}
 
function onClick() {
    // Ausgeführt wenn der Charakter angeklickt wird
}

Der Ablaufplan