[How to] Quests mit Offi Files/ Flyff.a +.b

  • 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.

    Spoiler anzeigen







    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^^.

    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!!

    [CENTER][CENTER][/CENTER]
    [/CENTER]
    [CENTER][/CENTER]

  • [FONT="Comic Sans MS"][COLOR="White"][SIZE="2"]

    Zitat

    Wo kann man merge2 downloaden? :D


    Die befindet sich im Resourceordner : D
    [/SIZE][/COLOR][/FONT]

  • Nice Guide aber wie ich oben sah schreibt sich Custom so und nicht Costum.

    mfg

  • [FONT="Tahoma"][COLOR="LemonChiffon"][SIZE="2"]fein erklärt kyu :3
    Vorallem so nett ausführlich, das jeder es rafft ^^

    (Ich geb zu: Ich kannte es^^)

    zu:" SetBeginCondParty( 0, 0, 0, 0 );"

    ist es evtl möglich, das dieser "Parameter" beim GildenQuest anders ist?
    (noch nich nachgeschaut^^)

    mfg
    cross[/SIZE][/COLOR][/FONT]

  • Dass mit den Quests hat mir zwar geholfen aber Flyff.a/.b ist ja nicht so schwer finde ich...
    Auf jedenfall kriegste ein Thanks für deine Arbeit.

    [CENTER]

    Zitat

    "Eine IP ist im Internet nötig - ein IQ leider nicht..."
    "Der Döner sei mit dir mein junger Padawan"
    "Hat der König der Tiere , der Löwe Geburtstag. Er wünscht sich von allen Tieren 1 Korb voll Fleisch , ansonsten würde er sie mit seinem dicken Penis schlagen.
    Der Hase kommt mit einem Korb voll Möhren. Der Löwe fragt den Hasen wieso er nur mit einem Korb voll Möhren komme , darauf antwortet der Hase er sei eben nicht so ein guter Jäger und der Löwe solle ihm verzeihen. Daraufhin schlägt der Löwe den Hasen mit seinen dicken Penis. Der Hase lacht und weint [...] und lacht und weint.
    Da fragt ihn der Löwe wieso er weine , woraufhin der Hase antwortet dass er weine weil es weh tue und er lache weil der Igel mit einem Korb voll Pilzen käme."


    [/CENTER]

  • Zitat von pixelz;103950

    Bitte schreib noch dazu das ein Eintrag in der definequest.h erfolgen muss.
    Hatte grad damit probleme.

    Mfg Pixelz

    Muss aber gar keiner gemacht werden xD

    [CENTER][CENTER][/CENTER]
    [/CENTER]
    [CENTER][/CENTER]

  • [FONT="Tahoma"][COLOR="RoyalBlue"]Kanns hin schreiben das Flyff.a und .b nur bei v14[/COLOR][/FONT]

    [CENTER]
    [/CENTER]

  • [FONT="Tahoma"][COLOR="RoyalBlue"]Und anderen accountserver da die server exen korea sind .....

    Und accountserver liest ja flyff.b[/COLOR][/FONT]

    [CENTER]
    [/CENTER]

  • Zitat von Luoo;128512

    [FONT="Tahoma"][COLOR="RoyalBlue"]Und anderen accountserver da die server exen korea sind .....

    Und accountserver liest ja flyff.b[/COLOR][/FONT]

    Kannst aber ohne weiteres v14 benutzen ;) ?
    :heart::grin:

    [CENTER][CENTER][/CENTER]
    [/CENTER]
    [CENTER][/CENTER]

  • hey wie wärs wenn du die funktion Questitem() in den Thread addest

    hier mal der Syntax:

    Code
    QuestItem([COLOR="Red"]MI_WAGSAAC1[/COLOR], [COLOR="Lime"]II_SYS_SYS_QUE_GRPSAINT[/COLOR], [COLOR="Yellow"]750000000[/COLOR], 1);

    [COLOR="Red"]Das Monster siehe oben[/COLOR]
    [COLOR="Lime"]Das item aus der defineItem.h[/COLOR]
    [COLOR="Yellow"]Wahrscheinlichtkeit (% * 10000000)[/COLOR]

    [CENTER]

    [SIZE="3"][COLOR="DarkOrange"]JuuuKy

    [FONT="Impact"]JEEE HAW[/FONT][/COLOR][/SIZE][/CENTER]

  • Fehlt aber noch einiges, dafür, dass du mit deinem Guide so prollst ;3

    [RIGHT][SIZE=1]
    It'll take QQ to a whole new level.[/SIZE]
    [mad][/mad]
    [/RIGHT]

  • Habe mal eine frage, wo finde ich z.b. die jobchange quest? bei mir haben die keine quest id´s-.- habe nämlich vor ein 1-click jobchangesystem zu machen.

    [COLOR=Red]FAIL[/COLOR]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!