Ich zitiere Mal den guten F.H. :
Alles anzeigenIn diesem Tutorial will ich versuchen, die grundlegende Vorgangsweise beim Erstellen einer neuen Maßnahme für das Spiel Gilde 2 zu erklären. Die resultierende Mini-Mod beinhaltet ein Icon und eine "Hello World" Maßnahme.
Obwohl das Tutorial sehr einfach zu schaffen sein sollte, benötigt ihr ein wenig Scripting-Erfahrung, zumindest die grundlegende Syntax von Lua sollte kein Problem für euch sein.
Außerdem benötigt ihr einen brauchbaren Editor wie Notepad++, UltraEdit oder etwas vergleichbares. Was definitiv kein brauchbarer Editor ist, sind alle Varianten von Word.
1. Das Sourcefile der Maßnahme
Erstellt ein neues File mit dem Namen "ms_helloworld.lua" im Ordner "scripts/measures/".
Kopiert den folgenden Sourcecode in dieses File:
function Run()
end
function CleanUp()
end
Ihr habt nun eine leere Maßnahme erstellt. Die Funktion Run() wird aufgerufen, sobald die Maßnahme gestartet wird, die Funktion CleanUp(), sobald die Maßnahme gestoppt oder beendet wird.
Der nächste Schritt ist, das Spiel die Maßnahme erkennen zu lassen.
2. Hinzufügen der Maßnahme zur Maßnahmen-Datenbank
Öffnet hierzu das File "DB/Measures.dbt"
In diesem File sind alle Maßnahmen für das Spiel gespeichert.
Fügt den folgenden Code am Ende des Files hinzu:
12096 "ms_helloworld.lua" "" "HelloWorld" 55 "hud/buttons/btn_046_StartDialog.tga" 0 1 0 "" "" 20 0 0 "none" 0 0 |
Die wichtigsten Parameter dieser Zeile sind:
- Der erste Parameter "12096" ist die ID der Maßnahme. Stellt stets sicher, dass das die höchste ID im File ist und dass sie einzigartig ist!
- Der zweite Parameter "ms_helloworld.lua" ist der Pfad zum Script, das den Sourcecode der Maßnahme enthält, beginnend bei "scripts/measures/".
- Der dritte Parameter wird hier nicht gebraucht
- Der vierte Parameter ist der Name der Maßnahme
- Der fünfte Parameter ist die Priorität der Maßnahme. Maßnahmen können nur von anderen Maßnahmen mit höherer Priorität unterbrochen werden.
- Der sechste Parameter ist der Pfad zum Bild des Buttons der Maßnahme beginnend bei "textures/". Da wir in diesem Beispiel unseren Charakter dazu bringen wollen, eine Nachricht auszulösen, passt der Button "hud/buttons/btn_046_StartDialog.tga" ganz gut.
Das Spiel kennt nun alles wichtige über die Maßnahme, aber es weiß nicht, wer die Maßnahme starten darf.
3. Festlegen, wer die Maßnahme verwenden darf
Das Spiel benötigt drei Datenbank-Files, um Maßnahmen komplett beschreiben zu können:
- DB/Measures.dbt (definiert die grundlegenden Eigenschaften der Maßnahme)
- DB/Filter.dbt (beinhaltet alle vom Spiel verwendeten Filter, die auf Objekte und Sims angewandt werden können)
- DB/MeasureToObjects.dbt (beinhaltet alle Verknüpfungen von Maßnahmen und Filtern)
Wir werden in diesem Beispiel keinen neuen Filter definieren, da es bereits genügend brauchbare Filter gibt.
Daher öffnen wir nur die Datei "DB/MeasureToObjects.dbt" und fügen die folgende Zeile hinzu:
2395 12096 1 0 10 6 "" () "" 0 0 |
Die wichtigsten Parameter:
- Der erste Parameter ist die ID. Wie immer muss diese ID einmalig im DBT-File sein.
- Der zweite Parameter ist die ID der Maßnahme, für die diese Verknüpfung gelten soll. Wir tragen hier die ID der HelloWorld-Maßnahme ein.
- Der vierte Parameter ist die ID des Filters, der für die Targets der Maßnahme gelten muss (in diesem Beispiel wollen wir keine Maßnahme, die ein Target hat, daher tragen wir hier "0" ein).
- Der fünfte Parameter ist die ID des Filters, der definiert, wer die Maßnahme starten darf.
- Der sechste Parameter ist der Objekttyp, der die Maßnahme starten kann. "6" steht für DynastySim (öffnet das File "DB/MeasureObjects.dbt" für eine komplette Liste)
Da wir die Maßnahme für alle unsere Familienmitglieder ausführbar machen wollen, setzen wir den 5. Parameter auf "10". Wenn ihr im File "DB/Filter.dbt" nachseht, werdet ihr sehen, dass dieser Filter für alle kontrollierbaren Objekte gilt.
Wir sollten nun im Spiel die neue Maßnahme sehen und sie starten können, aber sie tut noch nichts. Wir müssen daher etwas Code zur Maßnahme hinzufügen.
4. Das Script etwas ausführen lassen.
Öffnet die Datei "ms_helloworld.lua" und fügt den folgenen Code zur Funktion Run hinzu:
MsgNewsNoWait("","","","default",-1,"Hello World!","This script actually does something! Yay!")
Das Script sollte nun folgenden inhalt haben:
function Run()
MsgNewsNoWait("","","","default",-1,"Hello World!","This script actually does something! Yay!")
end
function CleanUp()
end
Der Befehl "MsgNewsNoWair" zeig sofort eine neue Nachricht an und seine Parameter sind:
- 1. Der Empfänger der Nachricht. Der leere String "" zeigt immer auf das Objekt, das den Code ausgeführt hat, in unserem Fall wird die Nachricht daher dem Familienmitglied geschickt, das die Maßnahme startet.
- 2. Wenn ihr hier einen Parameter einfügt, wird ein kleines Portrait des Objekts in der Nachricht angezeigt. Wir wollen hier ebenfalls unser Dynastiemitglied stehen haben.
- 3. Lasst diesen Parameter fürs erste leer
- 4. Das ist die Nachrichtenklasse. "default" zeigt eine Standard-Nachricht.
- 5. Wenn ihr hier eine Nummer größer 0 eingebt, wird die Nachricht nur für diese Zeit angezeigt und verschwindet danach. Wir wollen die Nachricht aber anzeigen, bis der Spieler sie wegklickt, daher setzen wir hier -1 ein.
- 6. Die Überschrift der Nachricht
- 7. Der Text der Nachricht
Da dieses Script nur Grundlagen umfasst, haben wir den Text der Nachricht direkt in den Sourcecode geschrieben. Normalerweise sollte man soetwas nie tun, aber ich hoffe, ich kann bald ein Tutorial über sauberes Einbinden von Text nachreichen.
Außerdem fehlen diesem Mod ein paar Textlabels, wodurch die Maßnahme keinen Tooltipp und keine Beschreibung hat.
Sollten Probleme oder Fragen auftreten, zögert nicht, diese zu stellen