In dieser Anleitung geht es um die Behebung des Starbound-Mods „Book of Spirits – NPC & Monster Name Displayer“. Ziel ist es, integrierte Unterstützung für benutzerdefinierte NPCs, Monster und gesprächige Objekte bereitzustellen.
Überblick
Dieser Mod ist von entscheidender Bedeutung und sollte vor allen anderen Mods geladen werden, die seine Funktionen nutzen. Sie müssen es nicht in Ihre Metadatendatei aufnehmen. Zu den wichtigsten Funktionen gehört die Anzeige des Namens der Entität, eines benutzerdefinierten Titels, falls vorhanden, und bei Monstern die Angabe, ob es sich um seltene Rassen (wie Albino Poptop, Fire Gleap) oder Elite handelt.
Es gibt zwei Anzeigefunktionen: eine Namensanzeige und eine Titelanzeige. Sie werden automatisch basierend auf der Konfiguration der Entität angezeigt, was ich in den folgenden Abschnitten erläutern werde.
Selbst wenn ich sage, dass etwas harmlos ist, bedeutet das, dass Ihr Mod auch ohne die Installation von „Book of Spirits – NPC & Monster Name Displayer“ einwandfrei funktioniert. Es wird empfohlen, den Mod zu entpacken, da es Dateien gibt, die Sie möglicherweise in Ihren Mod kopieren müssen, damit Sie besser verstehen, was Sie patchen müssen.
Benennungsregeln für feindliche NPCs: Ich habe einen festen Namen für generische feindliche NPCs (Banditen, Zombies, Lakaien usw.) festgelegt, da in den meisten Videospielen nur wichtige feindliche NPCs Namen haben, um ihre Bedeutung gegenüber normalen Mobs hervorzuheben.
NPC-Parameter
Der Namensanzeiger wählt den Namen des NPCs aus einer dieser Konfigurationen:
- Die Variable „npcname“.
- Die „Name“-Variable, die innerhalb ihrer Identitätstabelle zugewiesen werden kann.
- Der ihnen zugewiesene, zufällig generierte Name.
Es ist eine persönliche Entscheidung, aber vielleicht möchten Sie einen Namen für generische feindliche NPCs (Zombies, Banditen, Lakaien usw.) festlegen, die als Monster fungieren.
Für die Titelanzeige wird die folgende von diesem Mod hinzugefügte Variable ausgewählt, die harmlos ist:
- displayTitle
Außerdem wurde durch diesen Mod ein neues Skript für harmloses Verhalten hinzugefügt. Wenn ein NPC das Basisverhaltensskript überschreibt (wie zum Beispiel Händler), sollten Sie dieses Skript kopieren:
/scripts/bookofspirits/bookofspirits_interact_support.lua
Dieses Skript zeigt den Displayer an, wenn mit einem NPC interagiert (durch Drücken von „E“). Wenn der Displayer während der Interaktion nicht angezeigt wird, müssen Sie dieses Skript zu Ihrem NPC hinzufügen.
NPC-Patching-Unterstützung
Der Patching-Prozess ist wie folgt, Sie können ihn jedoch direkt zu Ihrem Mod hinzufügen, um das Verständnis der variablen Positionen zu erleichtern.
So geben Sie einem NPC einen Titel und wenn dieser das Verhaltensskript überschreibt (z. B. Merchant.npctype):
[ [{ "op" : "add", "path" : "/displayTitle", "value" : "Merchant"}] ,[{ "op": "add", "path": "/scripts/-" , „value“: „/scripts/bookofspirits/bookofspirits_interact_support.lua“ }] ]
Ergebnis:
{ „Typ“: „Händler“, „baseType“: „base“, ... „displayTitle“: „Händler“, „Skripte“: [ "/npcs/bmain.lua" ,"/scripts/bookofspirits/bookofspirits_interact_support.lua" ] }
So legen Sie einen festen Namen für den NPC fest (mutantminer.npctype):
[{ „op“ : „add“, „path“ : „/identity“, „value“: { „name“: „Mutant Miner“ }}]
Ergebnis:
{ „Identität“: { „name“: „Mutant Miner“ } }
Chatty Objects-Parameter
Die folgenden Variablen und Skripte sind harmlose Ergänzungen aus diesem Mod:
Für die Namensanzeige wird die folgende Objektkonfiguration als NPC-Name verwendet:
- npcName
Der Titelanzeiger wählt die folgende harmlose Variable aus, die von diesem Mod hinzugefügt wurde:
- displayTitle
Es gibt auch ein neues Skript, das Sie in Ihren Mod kopieren müssen:
/scripts/bookofspirits/bookofspirits_interact_support.lua
Dieses Skript zeigt den Anzeiger an, wenn mit einem Objekt interagiert wird (durch Drücken von „E“). Wenn der Displayer während der Interaktion nicht angezeigt wird, müssen Sie dieses Skript zu Ihrem Objekt hinzufügen.
Warnung:
- Sie können diese Funktion nicht verwenden, wenn das Objekt über einen „interactAction“-Parameter verfügt.
- Diese Funktion ist nur anwendbar, wenn das Objekt „chatty“ gemacht werden kann und normalerweise über „scripts“- und „chatOptions“-Arrays verfügt.
Chatty Object Patching-Unterstützung
So geben Sie einem Objekt einen Namen und einen Titel (IE: techlabscientist.object):
[ [{ "op" : "add", "path" : "/npcName", "value" : "Elliot"}] ,[{ "op" : "add", "path" : "/displayTitle", " value“ : „Tech Lab Scientist“}] ,[{ „op“: „add“, „path“: „/scripts/-“, „value“: „/scripts/bookofspirits/bookofspirits_interact_support.lua“ }] ]
Ergebnis:
{ „objectName“: „techlabscientist“, „colonyTags“: [„Außenposten“], ... „npcName“: „Elliot“, „displayTitle“: „Tech Lab Scientist“, „scripts“: [“/scripts/chattyObject.lua“, „/scripts/bookofspirits/bookofspirits_interact_support.lua“] }
Monster-Parameter
Für den Namensanzeiger wird die folgende Konfiguration des Monsters als Name ausgewählt:
- kurze Beschreibung
Der Titelanzeiger wählt die folgende harmlose Variable aus, die von diesem Mod hinzugefügt und als statusProperties hinzugefügt wurde:
- displayTitle
Hinweis: Seltene Monstervarianten haben einen benutzerdefinierten Titel im Format (siehe /monsters/flyers/agrobat/iceagrobat.monstertype.patch):
^gelb; Seltene Rasse ^zurücksetzen;
Darüber hinaus wurde durch diesen Mod ein neues, harmloses Skript hinzugefügt. Sie müssen es kopieren, wenn es ein Monster gibt, das als Elite-Monster festgelegt werden kann oder dynamische benutzerdefinierte Titel und dynamische Namen haben kann, z. B. „Generierte Monster“:
/scripts/bookofspirits/bookofspirits_monster_support.lua
Es gibt auch eine neue Datei mit zusätzlichen Konfigurationen für generierte Monster. Wenn Sie neue Arten generierter Monster hinzufügen, sehen Sie sich diese Datei für weitere Details an:
/monsters/bookofspirits_generated.config
Monster Patching-Unterstützung
Um einem Monster einen Namen und einen Titel zu geben und es als Elite anzuzeigen, wenn es als Elite konfiguriert ist (IE: punchy.monstertype):
[ [{ "op" : "add", "path" : "/shortdescription", "value" : "Punchy"}] ,[{ "op" : "add", "path" : "/baseParameters/statusSettings/ statusProperties/displayTitle", "value" : "Test Dummy"}] ,[{ "op" : "add", "path" : "/baseParameters/scripts/-", "value" : "/scripts/bookofspirits/bookofspirits_monster_support .lua"}] ]
Ergebnis:
{ „Typ“: „druckvoll“, "Kategorien" : [], ... „shortdescription“: „Punchy“, "baseParameters" : { "statusSettings" : { "statusProperties" : { „displayTitle“: „Test-Dummy“ } } ,"Skripte" : [ "/monsters/monster.lua", ,"/scripts/bookofspirits/bookofspirits_monster_support.lua" ] } }
Generierte Monsterparameter
Generierte Monster verfügen über eine spezielle Konfigurationsdatei, die Parameter zum Festlegen des Namens und des benutzerdefinierten Titels basierend auf ihren Teilen enthält. Die Konfigurationsdatei befindet sich unter:
/monsters/bookofspirits_generated.config
Zusätzlich gibt es ein neues Skript unter „/scripts/bookofspirits/bookofspirits_monster_support.lua“, das in deinen Mod kopiert werden muss. Stellen Sie sicher, dass Sie dieses Skript zum Skript-Array des generierten Monsters hinzufügen.
SkillPrefixes
Hier ist ein JSON-Array von Objekten, das eine Liste der Fertigkeitstypen der Spezialfähigkeit des Monsters enthält. Diese Liste wird verwendet, um das Präfix des Monsternamens zu bestimmen.
- Name: Dies ist der String-Name, der neben dem Monsternamen angezeigt wird.
- Fertigkeitsname: Dies ist der Typ des Fertigkeitsnamens (z. B. inkSprayAttack), der verwendet wird, um zu vergleichen, ob das Monster über diese Fertigkeit verfügt.
- asSuffix (optional): Wenn auf „true“ gesetzt, wird der Fertigkeitsname nach dem Monsternamen hinzugefügt.
MonsterTypes
Diese Liste enthält die Namen der Monstertypen und ihrer Varianten. Es wird verwendet, um den Namen und Titel des Monsters anhand des Kopfteils des Monsters oder eines bestimmten Teilmusters Ihrer Wahl zu bestimmen.
- Monstertyp (z. B. „großfliegend“): Der Name der Liste sollte mit dem „type“-Parameter in der .monstertype-Datei übereinstimmen.
- Varianten: In diesem JSON-Array von Objekten fügen Sie verschiedene Teilekombinationen ein, die das generierte Monster haben kann.
Variantenparameter
Dieses JSON-Objektarray enthält Variablen, die zum Konfigurieren des generierten Monsternamens und -titels basierend auf den angegebenen Teilen verwendet werden. Es unterstützt Muster mit mehreren Teilen, es wird jedoch empfohlen, Einträge nur mit dem Kopfteil zuerst zu priorisieren.
- Name: Der Monstername, der angezeigt wird.
- Titel (optional): Der Titel, der angezeigt wird.
- Präfix (optional): Ein dem Monsternamen hinzugefügtes Präfix.
- Teile: Ein Array von Zeichenfolgen mit den Namen von Ordnern, die die Teile des Monsters enthalten.
- addSkillPrefix (optional): Wenn auf „false“ gesetzt, wird dem Monsternamen kein Fertigkeitspräfix hinzugefügt.
Hinweis:
- Wenn Sie ein bestimmtes Muster festlegen möchten, muss dieser Eintrag alle vom Monstertyp verwendeten Teiletypen enthalten.
- Wenn beispielsweise „largefish“ 3 Teile verwendet, wie in seinem „parts“-Array konfiguriert, sollte das Muster auch 3 Teile haben.
{„Name“: „SunShark“, „Titel“: „Großes Fischmonster“, „Teile“: [„Hai“, „Sunfish“, „Sunfish“]}
Generierte Monster-Patching-Unterstützung für neue Typen
Für dieses Beispiel verwende ich „sb_hugebiped.monstertype“ von Betabound, einen neuen Typ generierter Monster.
Denken Sie daran, „/scripts/bookofspirits/bookofspirits_monster_support.lua“ in Ihren Mod im selben Ordnerpfad zu kopieren.
Um Unterstützung für einen neu generierten Monstertyp bereitzustellen (fügen Sie ihn direkt zu Ihrem Mod hinzu oder patchen Sie ihn, wenn Sie den Mod eines anderen Benutzers patchen):
[ [{ "op" : "add", "path" : "/baseParameters/scripts/-", "value" : "/scripts/bookofspirits/bookofspirits_monster_support.lua"}] ]
Ergebnis:
{ „type“: „sb_hugebiped“, „Kategorien“: [„sb_hugebiped“], ... ,"baseParameters" : { „Skripte“: [ "/monsters/monster.lua", "/monsters/sb_miniboss.lua" ,"/scripts/bookofspirits/bookofspirits_monster_support.lua" ] } }
Dann müssen Sie die Datei patchen „/monsters/bookofspirits_generated.config„als Datei“/monsters/bookofspirits_generated.config.patch"
[ { „op“: „hinzufügen“, "path": "/monsterTypes/sb_hugebiped", "Wert": { "Varianten": [ { „name“: „Birdzilla“, „title“: „Riesiges zweibeiniges Monster“, „parts“: [„Schnabel“] }, { „name“: „Dragonzilla“, „title“: „Riesiges zweibeiniges Monster“, „parts“: [„Drache“] }, { „name“: „Featherzilla“, „title“: „Riesiges zweibeiniges Monster“, „Teile“: [„Feder“] }, { „name“: „Rhinozilla“, „title“: „Riesiges zweibeiniges Monster“, „parts“: [„Rhino“] } ] } } ]
Ergebnis:
{ ,"monsterTypes" : { "largeflying" : {...} ... ,"sb_hugebiped" : { "Varianten" : [ {"name": "Birdzilla", "title": "^red;Huge Biped Monster", "parts": ["beak"]} ,{"name" : "Dragonzilla", "title" : "^red;Huge Biped Monster","parts" : ["dragon"]} ,{"name" : "Featherzilla",title" : "^red;Huge Biped Monster",parts" : ["feather"]} ,{"name" : "Rhinozilla",title" : "^red;Huge Biped Monster",parts" : ["rhino"]} ] } } }
Generierter Monster-Patching-Support vorhandener Typ
Um eine neue Variante zu einem vorhandenen Monstertyp hinzuzufügen (IE: largequadruped.monstertype), müssen Sie die Datei „patchen“/monsters/bookofspirits_generated.config„als Datei“/monsters/bookofspirits_generated.config.patch"
[ { „op“: „add“, „path“: „/monsterTypes/largequadruped/variants/-“, „value“: {“name“: „New Quadruped 1“, „title“: „Large Quadruped Monster“, „parts“: [“blabla1“]} } ,{ „op“: „add“, „path“: „/monsterTypes/largequadruped/variants/-“, „value“: {“name“: „New Quadruped 2“, „title“: „Large Quadruped Monster“, „parts“: [“blabla2“]} } ]
Ergebnis:
,"monsterTypes" : { "largeflying" : {...} ... ,"largequadruped" : { "Varianten" : [ {"Name": "Anthurix", "Präfix": "Erwachsener", "Titel": "Großes vierbeiniges Monster", "Teile": ["Pfeil"]} ... ,{"name": "Neuer Vierbeiner 1", "title": "Großes Vierbeinermonster", "parts": ["blabla1"]} ,{"name": "New Quadruped 2",title": "Large Quadruped Monster", "parts": ["blabla2"]}
Das ist alles, was wir heute dafür teilen Bound führen. Dieses Handbuch wurde ursprünglich erstellt und geschrieben von Chofranc. Falls wir dieses Handbuch nicht aktualisieren, finden Sie das neueste Update, indem Sie diesen folgen Link.