ich möchte Euch heute mal zeigen, wie man einen neuen Tauschhandel NPC einfügt.
Quote:
Was alles beschrieben wird in dem Tutorial:
- Wie man einen NPC aufstellt
- Wie man diesem einen Namen gibt
- Wie man diesem NPC das Tauschhandelsmenü zuordnet
- Wie man den Inhalt der Tausche definiert (ja das Wort Tausche ist der Plural von Tausch XD)
Wir beginnen, indem wir einen neuen X-beliebigen NPC aufstellen.Quote:
Was wir benötigen:
- dyoManager []
- Exchange_Script.txt
- character.inc
- character.txt.txt
- textClient.inc
- propMover.txt
- propMover.txt.txt
- defineObj.h
- propItem.txt
- propitem.txt.txt
Dazu öffnen wir unseren DyoManager und und gehen auf "File" und dann auf "Open". Wir gehen in den Resource Ordner (!! Wichtig !! dass es der Resource Ordner und nicht der Client ist, NPCs sind Serverside!)> World und öffnen den "Wd Ordner" der jeweiligen Welt. Dort wird sich eine Datei namens "WdXYZ.dyo" befinden.
Diese öffnen wir durch einen Doppelklick.
Möglicherweise sind dort (je nach World) schon einige NPCs eingetragen, das macht aber nichts.
Das Ganze könnte so aussehen:
Die "-1" muss ganz zum Schluss unter dem Bindestrichen des letzten definierten NPCs der Map stehen, ohne diese werden die NPCs nicht gespawnt.Quote:
5
180
0
0
0
6947
100
3217
0
1
1
5
984
-1
0
2
MaFl_TestNPC
1
0
----------
5
0
0
0
0
7940,799
159,0761
2405,927
1
1
1
5
220
-1
0
2
MaFl_DrEstern
1
0
----------
-1
Wir nehmen uns zur Definition der Zahlen mal einen NPC, d.h. bis zum "----------" vor.
Die °Zahl, bzw. die Richtung, in die der NPC schaut.Quote:
5
180
0
0
0
6947
100
3217
0
1
1
5
984
-1
0
2
MaFl_TestNPC
1
0
----------
Die Koordinaten des NPCs, bzw. wo er sich auf der Map befinden soll
Die Model ID des NPCs (wo man diese findet, später mehr)
Der Definitionsname des NPCs (nicht der inGame Name)
Zeigt an, dass hier die Definition des NPCs endet, darunter beginnt die eines Anderen.
So, da wir das nun wissen, gehen wir in FlyFF inGame, suchen uns den Standort des NPCs heraus und drücken 1x die Taste "9". Damit ist die jetzige Position in der Datei "Postion.txt" gespeichert, welche sich im Client finden lässt.
Jetzt müssen wir uns überlegen, wie der NPC ausschauen soll.
In meinem Beispiel möchte ich einen NPC, der wie ein Giant Aibatt aussieht. Dazu öffne ich nun die Datei "propMover.txt.txt" und suche nach
und kopiere mir den nebenstehenden Code:Quote:
Giant Aibatt
Danach öffne ich die propMover.txt und suche nach der kopierten ID.Quote:
IDS_PROPMOVER_TXT_000012
Ich finde dann
Dieses "MI_AIBATT4" kopiere ich mir wiederum und gehe in die Datei "defineObj.h" und suche danach.Quote:
MI_AIBATT4
Model IDQuote:
#define MI_AIBATT4 71
Die Model ID des Giant Aibatts ist also 71.
Nun öffnen wir wieder unseren DyoManager und darin die jeweilige "WdMAPNAME".dyo Datei.
und tragen alles ein.
Einen Namen können wir uns aussuchen. Ich nehme "MaFl_Tauschhandel", die ID des Models haben wir bereits gefunden und die Koordinaten finden wir in der Datei "Postion.txt". Bei der °Zahl rate ich Euch auszuprobieren, da man dafür logisch denken muss um von vorne rein die "richtige" °Zahl hinzubekommen. Man kann diese ja immer noch ändern.Quote:
5
180
0
0
0
6947
100
3217
0
1
1
5
71
-1
0
2
MaFl_Tauschhandel
1
0
----------
Wir speichern alles ab. Damit steht der NPC schonmal "dumm und doof" ohne irgendetwas zu können.
Da wir dies ändern wollen, machen wir uns nun an die Datei "Exchange_Script.txt"
Sobald wir diese geöffnet haben, sieht das eventuell so aus
(Ich nehme einfach das erste Tauschevent mit dem ersten Tausch als Beispiel
Eventname (wichtig, um das Event für den jeweiligen NPC einzustellen)Quote:
MMI_EVENT_MAY //5¿ù À̺¥Æ®
{
// À̺¥Æ® ¼³¸í
DESCRIPTION
{
TID_GAME_EVENT_MAY_TEXT01
TID_GAME_EVENT_MAY_TEXT02
TID_GAME_EVENT_MAY_TEXT03
}
// ¸®½ºÆ® ¼³¸í
SET TID_GAME_EVENT_MAY_COND01
{
//¸Þ½ÃÁö ³»¿ë
RESULTMSG
{
TID_GAME_EVENT_MAY_COND01_SUCCESS // ¼º°ø
TID_GAME_EVENT_MAY_COND01_FAIL // ½ÇÆÐ
}
//Á¶°Ç
CONDITION
{
//¾ÆÀÌÅÛ ID °¹¼ö
II_SYS_SYS_EVE_HAPPYMONEY01 30000
}
//»èÁ¦
REMOVE
{
II_SYS_SYS_EVE_HAPPYMONEY01 30000
}
//Áö±Þ Áö±Þ°¹¼ö
PAY 1
{
//¾ÆÀÌÅÛ ID °¹¼ö È®·ü(n/1000000)
II_RID_RID_STI_BIKE2 1 1000000
}
}
Eventbeschreibung, die in einem extra Textfensterabschnitt beim Öffnen des "Tauschhandelsladens" angezeigt wird
Beschreibung für den ersten Tausch; hier beginnen die Tauschoptionen für den 1ten Tausch
Hier wird beschrieben, welcher Text angezeigt werden soll, wenn der 1. der Tausch erfolgreich war / 2. der Tausch fehlschlug.
Hier wird beschrieben, was benötigt wird um den Tausch durchzuführen (Definitionsitemname), die Zahl dahinter ist die Itemanzahl
Hier wird beschrieben, was aus dem Inventar bei dem Tausch entfernt wird, die Zahl dahinter ist die Itemanzahl
Hier wird beschrieben, was von dem Npc ausgezahlt wird, um den Tausch zu begleichen
Die "1" steht für "Das Item wird 1x ausgezahlt"
Die Zahl 1MIO (1000000) steht für "Wird zu 100% ausgezahlt" - Man kann dies auch verstellen, das ist einem selbst überlassen, die jeweiligen Wahrscheinlichkeiten für 20, 50% oder X-Prozent kann man sich ja selbst ausrechnen.
So, wir beginnen:
Zunächst einmal möchten wir den Text für den Tauschhandelsladen definieren. Dazu kopieren wir uns den Textclient Code:
Mit diesem im Gepäck suchen wir in der Datei "textClient.inc" danach.Quote:
TID_GAME_EVENT_MAY_TEXT01
Wir finden:
Farbe des Anzeigetextes in HTMLQuote:
TID_GAME_EVENT_MAY_TEXT01 0xffffffff
{
IDS_TEXTCLIENT_INC_001706
Die Stelle für die textClient.txt.txt
Wir kopieren uns den IDS_TEXTCLIENT Code und suchen in der Datei "Textclient.txt.txt" danach. Wir können den hier beschrieben Text nun beliebig umändern. Beispielsweise so:
Wir speichern ab und sind damit fertig (Die anderen Texte können wir natürlich nach dem gleichen Verfahren auch bearbeiten).Quote:
Hallo und Willkommen in meinem Tauschhandelsladen, viel Spaß beim Einkaufen!
Nun zu dem "Namen" für das erste Handelsangebot. Dieses definieren wir nach dem gleichen Prinzip wie bei der "Willkommensnachricht" des Tauschhandelsladens.
- SET TID_GAME_EVENT_MAY_COND01 kopieren
- in der Datei textClient.inc danach suchen
- IDS_TEXTCLIENT Code kopieren
- in der Datei "textClient.txt.txt" danach suchen
- Beliebig ersetzen
Und dreimal darf man raten, das selbe gilt auch für die Fail / Succes Nachrichten.
Kommen wir nun zum Bearbeiten des eigentlichen Handels.
Vorab: Ich möchte das ganze als Beispeil so einstellen, dass man für 100 Fire B Karten zu einer 100%tigen Wahrscheinlichkeit eine Fire A Karte bekommt. Ihr könnt natürlich in jeglicher Art und Weise kreativ sein mit Euren Tauschangeboten^^
Als erstes bearbeiten wir die CONDITION. D.h., was wir benötigen für den Handel. In meinem Fall 100 Fire B Karten.
Wir öffnen die propitem.txt.txt und suchen nach "Fire Card (B)" und finden hierzu den IDS_PROPITEM Code
Mit diesem nun ab in die "Propitem.txt". Wir suchen danach und finden die Definition des Items "Fire Card (B)":Quote:
IDS_PROPITEM_TXT_009462
Dieser wird an der CONDITION Stelle natürlich eingefügt, dahinter die Mengenzahl, in meinem Fall "100".Quote:
II_GEN_MAT_ELE_CANDLEC
Soweit so gut. Weiter mit dem, was bei dem Handel aus dem Inventar genommen werden soll. In diesem Fall eben auch wieder "100 Fire Card (B)". Das Ganze schaut also so aus:
Zu guter Letzt wird definiert, was der nette NPC auszahlen soll, in diesem Fall eine Fire Card A. Um den "Definitionscode" dieses Items zu erfahren, verwenden wir wieder das selbe Prinzip:Quote:
REMOVE
{
II_GEN_MAT_ELE_CANDLEC 100
}
- Propitem.txt.txt öffnen
- Suche nach "Fire Card (A)"
- IDS_PROPITEM Code kopieren
- In der Datei "Propitem.txt danach suchen"
- Definitionscode kopieren
In diesem Fall sieht dieser so aus:
Wir fügen den Salat in das Exchange_script.txt ein:Quote:
II_GEN_MAT_ELE_CANDLEB
Kleiner Überblick darüber, was wir nun bereits hinter uns haben:Quote:
PAY 1
{
//¾ÆÀÌÅÛ ID °¹¼ö È®·ü(n/1000000)
II_GEN_MAT_ELE_CANDLEB 1 1000000
}
So, wir wollen jetzt aber noch, dass unser vorhin ins Spiel eingefügt NPC die tolle Aufgabe bekommt, diesen Tausch anzubieten.Quote:
- NPC ins Spiel eingefügt
- Exchange Script (in meinem Beispiel nur den ersten Handel) "vorbereitet"
Dazu öffnen wir die Datei "character.inc" und scrollen ganz nach unten, um einen neuen Eintrag zu machen.
Ohne Schnickschnack, wie beispielsweise ein Dialogtext, den der NPC in einem seperaten Menü anzeigen soll, sieht das ganze dann so aus:
NPC Name, den wir in die vorhin in die .dyo Datei eingetragen habenQuote:
MaFl_Tauschhandel
{
setting
{
AddMenu( MMI_EVENT_MAY );
}
SetName
(
IDS_CHARACTER_INC_001011
);
}
Option AddMenu bedeutet, dass der NPC ein Menü bekommt, welches, wird im Anschluss definiert. In unserem Fall soll er das Tauschevent "MMI_EVENT_MAY" ausführen.
Dies ist der Name, den der NPC inGame überm' Kopf stehen hat
Um diesen einzustellen, ganz simpel in die Datei "Character.txt.txt" und ganz nach unten scrollen. Wir machen einen neuen Eintrag, mit einer Zahl, die noch nicht in Verwendung, logischer Weise macht man die "danachkommende" Zahl:
Nun noch ganz Wichtig:Quote:
IDS_CHARACTER_INC_001011 Dickes Aibatt
Wir gehen in unseren Resource Ordner und starten die "Merge2.exe"
Damit werden die Resdateien in den Resclient kopiert. Diese nehmen wir von dort aus und transferieren diese in unseren Client.
Wenn wir nun inGame schauen, sehen wir an der jeweiligen Stelle unseren tollen kleinen Selfmade NPC.
Soo, das wars. Unser NPC steht, hat ein schickes Aussehen und weis, was er zu tun hat.
In meinem Beispiel habe ich nur eine Tauschoption bearbeitet, ihr könnt natürlich X-beliebig viele hinzufügen, oder auch streichen.
Die anderen Events die in der Exchange_script.txt stehen könnt ihr logischerweise auch verwenden, ich habe nur der Übersicht zu Gute das Erste verwendet.
Edit.: Hier ein kleines Beispiel mit Behemoth Waffen, was ich gemacht habe:

Quote:
Credits:
5% Sedrika für die Verlinkung zum dyoManager
95% Ich, für das Verfassen des Textes







