Hi liebe Community.
Mir is grade langweilig und ich wollte eigentlich einen Guide zum Thema Costum Pets machen, leider hab ich selbst noch net rausgefunden wie das geht darum schreib ich jetzt erstmal einen Guide für Costum Quests^^.
Vorwort
In den Offi files werden (normale) Quests in folgenden Datein definiert:
Es ist relativ egal welche dieser Drei Questdatein(+Sprechtext) ihr benutzt.
Ich nehme jetzt als Beispiel propQuest-RequestBox.inc & propQuest-RequestBox.txt.txt.
Schritt für Schritt
1.Öffnet zuerst die .inc Datei mit einem Editor (notepad, wordpad, etc)
2.Nun könnt ihr euren Eintrag machen, hier ein Beispieleintrag:
Rot = Quest Funktionen
Grün = Dialogdefinition
Hellblau = Questname
Orange = Quest ID (die Quest ID muss immer eine andere sein, darf also nur einmal in der Datei vorkommen.)
(Ich komme später zu der Erklärung von Funktionen usw).
3.Nun geht in in die .txt Datei. Hier wird der Sprechtext definiert.
Hier der dazugehörige Text für meine Quest :
Wie man sehen kann arbeitet die .inc zusammen mit der .txt.
Beispiel:
inc:
txt:
.
Das bedeutet wenn man den Quest NPC anspricht ohne die Vorraussetzungen der Quest erfüllt zu haben komtm der text der nach IDS_PROPQUEST_INC_GENESIS7 in der txt kommt.
Erklärung der Funktionen
In den Funktionen einer Quest wird der Hauptbestand der Quest definiert.
Wie z.b Belohnung, erwartetes item, Monster das besiegt werden muss und viele weitere Optionen.
Ich erkläre jetzt alle Funktionen genau^^.
SetRepeat
Diese Funktion ist dafür da um zu definieren ob die Quest wiederholt werden kann oder nicht.
SetRepeat(1); bedeutet die Quest kann wiederholt werden, wenn sie nur einmal gemacht werden soll dann lösche einfach SetRepeat(1); aus der Quest.
SetCharacter
Hier wird definiert welcher NPC die Quest "anbietet".
Um die Quest einem NPC zuzuteilen musst du diese Funktion wie folgt in deine Quest eintragen :
SetCharacter( "NPCNAME" );
z.b SetCharacter( "MaFl_Ryupang_Dead" );
es handelt sich hierbei jedoch nicht um den normalen NPC namen sondern um den vollen NPC namen aus der character.inc.
Um diesen Namen herauszufinden gehst du in die chracter.txt.txt und suchst nach dem normalen Namen des NPCs, ich suche jetzt z.b Juria.
Und siehe da da ist Juria :
Nun gehe in die Character.inc und suche nach der variable die vor dem NPC Namen steht, in diesme Fall also IDS_CHARACTER_INC_000057.
Ein wenig über dem eintrag (IDS_CHARACTER_INC_000057) steht nun der volle namen : MaFl_Juria also müsste in der Quest
SetCharacter( "MaFl_Juria" ); stehen wenn Juria die Quest anbieten soll.
SetBeginCondLevel
Mit dieser Funktione wird definiert in welchem Levelbereich man die Quest annehmen kann.
SetBeginCondLevel( 100, 150 );
Blau = Minimales Level
Grün = Maximales Level (150 bedeutet es gibt kein Max Level)
Also ist die Quest in diesem Fall ab Level 100 annehmbar.
SetBeginCondParty
Diese Funktion habe ich noch nicht getestet, jedoch nehme ich stark an dass hier das Party Level definiert wird und eventuell auch die Party Member Anzahl wie ich der Gilden erstellen Quest.
SetBeginCondJob
Mit dieser Funktion wird definiert welche Jobklassen die Quest annehmen können.
Die vollen Namen der Jobklassen findet man in der propjob.inc.
Wenn mehrere Jobs die Quest annehmen können sollen dann müssen die Jobklassen durch ein Komma voneinander getrennt sein:
[code] SetBeginCondJob( JOB_KNIGHT, JOB_BLADE)
Wenn alle Jobklassen die Quest annehmen können sollen Kopiert einfach meinen Code für diese Funktion :
Code:
SetBeginCondJob( JOB_KNIGHT, JOB_BLADE, JOB_JESTER, JOB_RANGER, JOB_RINGMASTER, JOB_BILLPOSTER, JOB_PSYCHIKEEPER, JOB_ELEMENTOR, JOB_KNIGHT_MASTER, JOB_BLADE_MASTER, JOB_JESTER_MASTER, JOB_RANGER_MASTER, JOB_RINGMASTER_MASTER, JOB_BILLPOSTER_MASTER, JOB_PSYCHIKEEPER_MASTER, JOB_ELEMENTOR_MASTER, JOB_KNIGHT_HERO, JOB_BLADE_HERO, JOB_JESTER_HERO, JOB_RANGER_HERO, JOB_RINGMASTER_HERO, JOB_BILLPOSTER_HERO, JOB_PSYCHIKEEPER_HERO, JOB_ELEMENTOR_HERO);
SetEndCondItem
Hier wird festgelegt welche Items für die Quest gebraucht werden und wieviele davon.
Beispieleintrag:
SetEndRemoveItem
Hier wird definiert welche Items beim abschließen der Quest aus dem Inventar entfernt werden sollen.
Wenn die Quest auf Repeat(1) steht ist es ratsam alle Items die für die Erfüllung der Quest benötigt werden auch löschen zu lassen da man die Quest dann ohne die Items noch einmal zu sammeln abschließen kann.
Beispiel für den Eintrag :
SetEndCondKillNPC
Hier wird festgelegt wie oft welches Monster besiegt werden muss.
SetEndRewardItem
Hier wird die Belohnung der Quest festgelegt.
Sobald die Quest abgeschlossen ist wird die Belohnung ins Inventar gesetzt.
SetEndRewardSkillPoint
Hier wird definiert wie viele Skillpoints der Charackter bekommt nachdem er die Quest abgeschlossen hat.
SetEndRewardSkillPoint(400);
bedeutet der Charackter bekommt 400 Skillpoints nach dem Abschließen der Quest.
SetEndCondGold
Hier wird festgelegt wieviel Penya benötigt werden um den Quest abzuschließen.
SetEndRemoveGold(50000000);
bedeutet man benötigt 50000000 Penya um die Quest zu beenden.
SetEndRemoveGold
Hier wir festgelegt wieviel Penya am Ende der Quest abgezogen werden.
SetEndRemoveGold(50000000);
bedeutet es werden 50000000 Penya vom Geldbetrag des Charackters entfernt.
SetEndRewardGold
Hier wird definiert wieviel Penya man nach dem Abschließen der Quest geschenkt bekommt.
SetEndRewardGold( 500, 500 );
bedeutet man erhält 500 Penya nach dem erfolgreichen Abschließen der Quest.
SetEndRewardExp
Hier wird definiert wieviel EXP der Spieler nach abschluss der Quest erhält.
Es ist nicht in % ausgedrückt, daher kann ich leider nicht sagen wieviel EXP man bei welchen Zahlen bekommt.
Sprechtexte
Wie oben schon erwähnt arbeitet die .inc mit der .txt.txt zusammen.
In der .inc werden die FUnktionen definiert und in der .txt.txt werden die Texte definiert.
In der .inc steht z.b
Orange = Das Ereignis (QSAY_BEGIN1 = Quest beginnt)
Rot = Die Variable nach der der Text steht:
In der .txt.txt steht
Das Rot markierte ist die Varbiable aus der .inc
Das bedeutet also sobald die Quest beginnt kommt dieser Text,
Ereignisse und Titel
Titel:
Der Titel ist direkt unter der Quest ID definiert.
SetTitle
(
IDS_PROPQUEST_INC_GENESIS1
);
Heißt IDS_PROPQUEST_INC_GENESIS1 in der .txt.txt ist der Titel :
IDS_PROPQUEST_INC_GENESIS1 Prüfe deine Macht (----> Titel)
Ereignisse:
Questbucheintrag
Dieser Text steht dan im Questtagebuch unter "Q".
Sooooooo nächstes Thema^^.
[I]Flyff.a und Flyff.b
Ersteinmal; für was sind Flyff.a und Flyff.b?
Die Flyff.a checkt in deinem Clienten ob an den Resourcen (.res Datein) etwas verändert wurde.
Wenn ja stürtz das Spiel noch vor dem Loginfenster ab.
Flyff.b sorgt dafür dass man Flyff.a nicht einfach löchen kann, wenn flyff.a fehlt kommt beim loginfenster die Meldung "eine Datei wurde verändert"
Nun kommen wir zum interessanten Teil^^.
Wie erstelle ich eine flyff.a und eine Flyff.b?!!?
Das ist ganz einfachm, denn Aeonsoft hat extra ein Tool dafür programmiert, welches in den Serverfiles enthalten ist.
Das Tool heißt merge2.exe und befindet sich im Resource ordner der Serverfiles.
Dieses Programm liest den inhalt von resource.txt und erstellt dann aus den Datein im Resource ordner eine Data.res eine DataSub1.res und eine Datasub2.res, zusätzlich wird eine flyff.a und eine Flyff.b erstellt.
So, zuersteinmal macht ihr euch eine richtige resource.txt
Kopiert folgenden Text in eure resource.txt im resource ordner:
So, nun geht ihr in den Neurospace ordner und erstellt einen neuen Ordner den ihr Resclient nennt.
Jetzt führt ihr merge2.exe aus.
Nun findet ihr im Resclient ordner die 3 .res Datein und die flyff.a.
Im Neurospace ordner liegt nun eine flyff.b.
Wie wende ich Flyff.a und Flyff.b an?
Hierzumusst du den Inhalt vom Resclient in deinen Flyff Ordner kopieren die Daten ersetzen lassen.
Die Flyff.b machst du in den Program ordner deiner Serverfiles.
Wenn du nun AccountServer.exe startest liest diese Flyff.b mit.
So wem die Guides gefallen haben kann mir gerne ein Thanks geben^^.
MFG Kyubinoyoko
Flyff.a/.b ist bei den releasten v15 files NICHT! vorhanden!![/I]
Mir is grade langweilig und ich wollte eigentlich einen Guide zum Thema Costum Pets machen, leider hab ich selbst noch net rausgefunden wie das geht darum schreib ich jetzt erstmal einen Guide für Costum Quests^^.
Vorwort
In den Offi files werden (normale) Quests in folgenden Datein definiert:
Es ist relativ egal welche dieser Drei Questdatein(+Sprechtext) ihr benutzt.
Ich nehme jetzt als Beispiel propQuest-RequestBox.inc & propQuest-RequestBox.txt.txt.
Schritt für Schritt
1.Öffnet zuerst die .inc Datei mit einem Editor (notepad, wordpad, etc)
2.Nun könnt ihr euren Eintrag machen, hier ein Beispieleintrag:
Rot = Quest Funktionen
Grün = Dialogdefinition
Hellblau = Questname
Orange = Quest ID (die Quest ID muss immer eine andere sein, darf also nur einmal in der Datei vorkommen.)
(Ich komme später zu der Erklärung von Funktionen usw).
3.Nun geht in in die .txt Datei. Hier wird der Sprechtext definiert.
Hier der dazugehörige Text für meine Quest :
Wie man sehen kann arbeitet die .inc zusammen mit der .txt.
Beispiel:
inc:
txt:
.
Das bedeutet wenn man den Quest NPC anspricht ohne die Vorraussetzungen der Quest erfüllt zu haben komtm der text der nach IDS_PROPQUEST_INC_GENESIS7 in der txt kommt.
Erklärung der Funktionen
In den Funktionen einer Quest wird der Hauptbestand der Quest definiert.
Wie z.b Belohnung, erwartetes item, Monster das besiegt werden muss und viele weitere Optionen.
Ich erkläre jetzt alle Funktionen genau^^.
SetRepeat
Diese Funktion ist dafür da um zu definieren ob die Quest wiederholt werden kann oder nicht.
SetRepeat(1); bedeutet die Quest kann wiederholt werden, wenn sie nur einmal gemacht werden soll dann lösche einfach SetRepeat(1); aus der Quest.
SetCharacter
Hier wird definiert welcher NPC die Quest "anbietet".
Um die Quest einem NPC zuzuteilen musst du diese Funktion wie folgt in deine Quest eintragen :
SetCharacter( "NPCNAME" );
z.b SetCharacter( "MaFl_Ryupang_Dead" );
es handelt sich hierbei jedoch nicht um den normalen NPC namen sondern um den vollen NPC namen aus der character.inc.
Um diesen Namen herauszufinden gehst du in die chracter.txt.txt und suchst nach dem normalen Namen des NPCs, ich suche jetzt z.b Juria.
Und siehe da da ist Juria :
Nun gehe in die Character.inc und suche nach der variable die vor dem NPC Namen steht, in diesme Fall also IDS_CHARACTER_INC_000057.
Ein wenig über dem eintrag (IDS_CHARACTER_INC_000057) steht nun der volle namen : MaFl_Juria also müsste in der Quest
SetCharacter( "MaFl_Juria" ); stehen wenn Juria die Quest anbieten soll.
SetBeginCondLevel
Mit dieser Funktione wird definiert in welchem Levelbereich man die Quest annehmen kann.
SetBeginCondLevel( 100, 150 );
Blau = Minimales Level
Grün = Maximales Level (150 bedeutet es gibt kein Max Level)
Also ist die Quest in diesem Fall ab Level 100 annehmbar.
SetBeginCondParty
Diese Funktion habe ich noch nicht getestet, jedoch nehme ich stark an dass hier das Party Level definiert wird und eventuell auch die Party Member Anzahl wie ich der Gilden erstellen Quest.
SetBeginCondJob
Mit dieser Funktion wird definiert welche Jobklassen die Quest annehmen können.
Die vollen Namen der Jobklassen findet man in der propjob.inc.
Wenn mehrere Jobs die Quest annehmen können sollen dann müssen die Jobklassen durch ein Komma voneinander getrennt sein:
[code] SetBeginCondJob( JOB_KNIGHT, JOB_BLADE)
Wenn alle Jobklassen die Quest annehmen können sollen Kopiert einfach meinen Code für diese Funktion :
Code:
SetBeginCondJob( JOB_KNIGHT, JOB_BLADE, JOB_JESTER, JOB_RANGER, JOB_RINGMASTER, JOB_BILLPOSTER, JOB_PSYCHIKEEPER, JOB_ELEMENTOR, JOB_KNIGHT_MASTER, JOB_BLADE_MASTER, JOB_JESTER_MASTER, JOB_RANGER_MASTER, JOB_RINGMASTER_MASTER, JOB_BILLPOSTER_MASTER, JOB_PSYCHIKEEPER_MASTER, JOB_ELEMENTOR_MASTER, JOB_KNIGHT_HERO, JOB_BLADE_HERO, JOB_JESTER_HERO, JOB_RANGER_HERO, JOB_RINGMASTER_HERO, JOB_BILLPOSTER_HERO, JOB_PSYCHIKEEPER_HERO, JOB_ELEMENTOR_HERO);
SetEndCondItem
Hier wird festgelegt welche Items für die Quest gebraucht werden und wieviele davon.
Beispieleintrag:
SetEndRemoveItem
Hier wird definiert welche Items beim abschließen der Quest aus dem Inventar entfernt werden sollen.
Wenn die Quest auf Repeat(1) steht ist es ratsam alle Items die für die Erfüllung der Quest benötigt werden auch löschen zu lassen da man die Quest dann ohne die Items noch einmal zu sammeln abschließen kann.
Beispiel für den Eintrag :
SetEndCondKillNPC
Hier wird festgelegt wie oft welches Monster besiegt werden muss.
SetEndRewardItem
Hier wird die Belohnung der Quest festgelegt.
Sobald die Quest abgeschlossen ist wird die Belohnung ins Inventar gesetzt.
SetEndRewardSkillPoint
Hier wird definiert wie viele Skillpoints der Charackter bekommt nachdem er die Quest abgeschlossen hat.
SetEndRewardSkillPoint(400);
bedeutet der Charackter bekommt 400 Skillpoints nach dem Abschließen der Quest.
SetEndCondGold
Hier wird festgelegt wieviel Penya benötigt werden um den Quest abzuschließen.
SetEndRemoveGold(50000000);
bedeutet man benötigt 50000000 Penya um die Quest zu beenden.
SetEndRemoveGold
Hier wir festgelegt wieviel Penya am Ende der Quest abgezogen werden.
SetEndRemoveGold(50000000);
bedeutet es werden 50000000 Penya vom Geldbetrag des Charackters entfernt.
SetEndRewardGold
Hier wird definiert wieviel Penya man nach dem Abschließen der Quest geschenkt bekommt.
SetEndRewardGold( 500, 500 );
bedeutet man erhält 500 Penya nach dem erfolgreichen Abschließen der Quest.
SetEndRewardExp
Hier wird definiert wieviel EXP der Spieler nach abschluss der Quest erhält.
Es ist nicht in % ausgedrückt, daher kann ich leider nicht sagen wieviel EXP man bei welchen Zahlen bekommt.
Sprechtexte
Wie oben schon erwähnt arbeitet die .inc mit der .txt.txt zusammen.
In der .inc werden die FUnktionen definiert und in der .txt.txt werden die Texte definiert.
In der .inc steht z.b
Orange = Das Ereignis (QSAY_BEGIN1 = Quest beginnt)
Rot = Die Variable nach der der Text steht:
In der .txt.txt steht
Das Rot markierte ist die Varbiable aus der .inc
Das bedeutet also sobald die Quest beginnt kommt dieser Text,
Ereignisse und Titel
Titel:
Der Titel ist direkt unter der Quest ID definiert.
SetTitle
(
IDS_PROPQUEST_INC_GENESIS1
);
Heißt IDS_PROPQUEST_INC_GENESIS1 in der .txt.txt ist der Titel :
IDS_PROPQUEST_INC_GENESIS1 Prüfe deine Macht (----> Titel)
Ereignisse:
Questbucheintrag
Dieser Text steht dan im Questtagebuch unter "Q".
Sooooooo nächstes Thema^^.
[I]Flyff.a und Flyff.b
Ersteinmal; für was sind Flyff.a und Flyff.b?
Die Flyff.a checkt in deinem Clienten ob an den Resourcen (.res Datein) etwas verändert wurde.
Wenn ja stürtz das Spiel noch vor dem Loginfenster ab.
Flyff.b sorgt dafür dass man Flyff.a nicht einfach löchen kann, wenn flyff.a fehlt kommt beim loginfenster die Meldung "eine Datei wurde verändert"
Nun kommen wir zum interessanten Teil^^.
Wie erstelle ich eine flyff.a und eine Flyff.b?!!?
Das ist ganz einfachm, denn Aeonsoft hat extra ein Tool dafür programmiert, welches in den Serverfiles enthalten ist.
Das Tool heißt merge2.exe und befindet sich im Resource ordner der Serverfiles.
Dieses Programm liest den inhalt von resource.txt und erstellt dann aus den Datein im Resource ordner eine Data.res eine DataSub1.res und eine Datasub2.res, zusätzlich wird eine flyff.a und eine Flyff.b erstellt.
So, zuersteinmal macht ihr euch eine richtige resource.txt
Kopiert folgenden Text in eure resource.txt im resource ordner:
So, nun geht ihr in den Neurospace ordner und erstellt einen neuen Ordner den ihr Resclient nennt.
Jetzt führt ihr merge2.exe aus.
Nun findet ihr im Resclient ordner die 3 .res Datein und die flyff.a.
Im Neurospace ordner liegt nun eine flyff.b.
Wie wende ich Flyff.a und Flyff.b an?
Hierzumusst du den Inhalt vom Resclient in deinen Flyff Ordner kopieren die Daten ersetzen lassen.
Die Flyff.b machst du in den Program ordner deiner Serverfiles.
Wenn du nun AccountServer.exe startest liest diese Flyff.b mit.
So wem die Guides gefallen haben kann mir gerne ein Thanks geben^^.
MFG Kyubinoyoko
Flyff.a/.b ist bei den releasten v15 files NICHT! vorhanden!![/I]