Hallo Liebe Mcore Community,
in diesem Threade werde ich euch das Arbeiten mit den Resourcen näher bringen. Ich werde versuchen diesen Guide ständig zu erweitern:
Kapitel 1:
[SPOILER2]
So nun da vermehrt gewünscht wurde, dass ich das ganze hier in den Thread schreibe, schreibe ich das Tutorial ein wenig um und schreibe es hier rein.
Ohne groß um den heißen Brei herum zu reden, werde ich hier eine Liste der wichtigsten Flyff Ressourcen und ihrer Funktion schreiben
1.1. Masquerade.prj
Funktion: Die Masquerade.prj ist eine Art Hilfsdatei für den Client/WorldServer um einige Ressourcen zu laden, in ihr werden einige(nicht alle) Ressourcen aufgelistet, welche später vom Client/WorldServer eingelesen werden. Bsp.:
Diese Datei wird auch vom Beast Worldeditor verwendet, um die wichtigsten Ressourcen einzulesen. Diese Datei wurde schon seit dem Beginn von Flyff genutzt.
1.2 Models
Alle Model-Dateien werden in zwei Dateien definiert:
mdlDyna.inc & mdlObj.inc
Die Datei mdlDyna beinhaltet die Models von: Controls, SFX, Items, NPCs, Regionen und Ships
Die Datei mdlObj hingegen beinhaltet nur die Models von den Worldobjekten. Der Grobe aufbau sieht folgendermaßen aus:
1.3 Items
Nun kommen wir zu den wahrscheinlich meist behandelten Dateien, den Item Dateien. Folgende Dateien werden zum korrekten eintragen von einem Item benötigt:
- defineitem.h (Eintrag für die Itemid)
- propitem.txt (Genaue Definition der Itemparameter)
- propitem.txt.txt (Itembeschreibung [Name und Beschreibung])
- mdldyna.inc (Itemmodel)
Diese Dateien werden benötigt, um ein grundlegend einzutragen. Es gibt noch einige weitere Dateien, die das Item genauer beschreiben, z.B.
- accessory.inc <--Ist ein Item mit den Parametern IK1_GENERAL IK2_JEWELRY in der propitem/defineitem vorhanden, so kann man sie hier eintragen und somit ist das Item für das Accessory Upgrade verfügbar.
- propitemETC.inc/.txt.txt <-- Hier können mehrere Items zu einem Set zusammengefügt werden, also sind die hier definierten Items alle angezogen, so erhält man einen definierten Effekt.
- propGiftbox.inc <-- Ist hier ein Item definiert, so kann man aus einem Item mit den Parametern IK1_SYSTEM IK2_SYSTEM eine Giftbox erstellen, aus der man zufallsbestimmt Items erhalten kann
1.4. Quests
Um einen Quest vollständig verwenden kann muss man folgende Dateien beschrieben haben:
- definequest.h <-- Eintrag der QuestID
- Propquest.inc/.txt <-- Definition des Quests(Auftrag, Texte, Einstellungen )
- (propquest-dungeonandpk.inc/.txt.txt)
- (propQuest-Scenario.inc/.txt.txt)
- (propQuest-RequestBox.inc/.txt.txt)
- (propQuest-RequestBox2.inc/.txt.txt)
Die eingeklammerten Datein sind “optional” und ich werde nicht weiter auf sie eingehen.
1.5. Applikationen
Unter Apps oder Applikationen in Flyff versteht man die Fenster, die im Spiel verwendet werden, z.B. Das Inventar oder das Statusfenster. Es reicht nicht aus, einfach ein Fenster zu entwerfen, sondern es muss in die Source eingebaut werden( Funktionen, etc. ). Folgende Dateien sind wichtig:
- ResData.h <-- Definition des Applets
- Resdata.inc <-- Position der einzelnen Controls und Eigenschaften des Apps
- ResData.txt.txt <-- Titel Strings des Applets
Den meisten Files beigelegt, findet man ein Tool names „Daisy“. Dieses ist dazu da mithilfe eines GUI solche Applets zu erstellen.
1.7. LUA
Definition:
Lua ist eine imperative und erweiterbare Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können.
LUA wird ausschließlich von World- /DatabaseServer genutzt. Folgende Systeme werden durch lua eingebunden:
- Mentoren System --> Campus.lua
- Events --> Event.lua
- 1 on 1 Guildwar --> GuildCombat1TO1.lua
- Upgrade System --> ItemUpgrade.lua
- Monsterskills --> Monsterskill.lua
- Instance Dungeons --> PartyDungeon.lua
- Quiz Event --> QuizEvent.lua
- Rainbowrace --> RainbowRace.lua
- Secret Room --> SecretRoom.lua
- Steuer System --> Tax.lua
Weitere Verwendung:
- CreateMonster.lua --> Diese Datei wird verwendet, um durch ein bestimmtes Item Monster zu spawnen.
- EventMonster.lua --> Monster Spawnen
- ItemScript.lua --> ??
- PCBang.lua --> Ein Event System
Fast jede LUA-Datei in den Flyff Ressourcen wird durch eine Funktionsdatei ergänzt, welche sich im Ordner /LuaFunc/ befindet.
1.8. Events
Es gibt mehrere verschiedene Arten von Events:
- Normale Events --> Definiert in der Datei Event.lua
- DropEvents --> PropDropEvent.inc
Normale Events werden wie schon gesagt in der Datei Event.lua definiert. Folgende Events sind Möglich:
- Exp/Drop/Penyadrop Events
- Attackpower/Defense Events
- Levelup Geschenke
- Cheer Exp Faktor
- Verbindungsdauer Events
- Rain/Snow Events
Bei den Drop Events ist es möglich für ein Item den Level Bereich der Monster einzustellen, in welchem das Item gedropt werden kann.
1.9. Exchange Skript
Der Exchange Skript ermöglicht es Items gegen Items auszutauschen (z.B. Silver Heart Event )
Auf den Exchange Skript werde ich vorerst nicht genau eingehen, da dieser im Bezug auf ein anderes System sehr interessant ist.
1.10. NPC's
Die NPCs werden grundsätzlich in zwei Kategorien aufgeteilt (aktive (Monster) und passive (Stadtnpcs) ). Und beide werden in den Ressourcen verschieden behandelt. Die aktiven und passiven NPC's werden zunächst in die Ressourcen eingetragen, in folgende Datein:
- defineObj.h
- mdlDyna.inc (Model und Animation)
- propmover.txt / .txt.txt
So, sind nun die grundzüge des NPC's eingetragen, kann man verschieden mit ihnen weiter machen.
Passive NPC's können weiter behandelt werden, in dem man ihnen in der character.inc/.txt.txt genau definierte Funktionen gibt(Menüitems, Handelsfenster, uvm. ). Bevor dies jedoch geschehen kann muss das Model einem NPC Namen zugeteilt werden (definiert in der character.inc). Dies geschiet in den Weltdatein.
Um einen NPC genauer zu definieren trägt man den gewünschten Namen in die Character.inc ein und definiert ihn, die Grundstruktur sieht folgendermaßen aus:
Alles anzeigen
Um einem passiven NPC einen Quest zu geben muss man in der Datein propQuest.inc diesen Character als StarNpc angeben.
Um einen aktiven NPC weiter zu definieren, kann man ihn in die Datei
PropMoverEx.inc eintragen. Dort lassen sich Sachen wie Drops oder Verhalten eintragen.
1.11. Der ganze Rest
Nun, was ist noch möglich in den Ressourcen einzustellen:
- NPC Eigenschaften <-- character.inc/.txt.txt
- Raten <-- Constant.inc
- Collector <-- collecting.inc
- Couple Raten/Items <-- couple.inc
- Bodentexturen <-- Terrain.inc
- Honor Titel <-- Honorlist.txt/.txt.txt
- LordSkills <-- lordskill.txt/.txt.txt
- Skills <-- Propskill.txt/.txt.txt ; PropSkillAdd.csv
die Datei PropSkillAdd ist dazu da, um die Parameter der jeweiligen Skillstufe zu bestimmen.
- Accessorie Upgrade/Collector Upgrade/Collectorfeld <-- s.txt
Das arbeiten mit den Ressourcen liegen von meiner Seite aus 3 Regeln zugrunde:
- Einen Code Editor verwenden, der ein paar Extra Funktionen, wie Syntax Highlighting, Zeilenangaben enthält (Notepad++)
- Backups anlegen: Damit auch bei kleinen Fehlern keine großen Probleme entstehen --> immer Backups anlegen( Eine Kopie des Ressourcen Ordner anlegen )
- Wissen, was man machen will: wenn man völlig planlos an die Arbeit geht kommt man schnell aus dem Konzept oder vergisst wichtige Einträge !
Wenn man nun die Grundlagen der Ressourcen beherrscht und die Regeln eingehalten werden, dann kann eigentlich nichts mehr passieren. Wichtig ist: Üben, üben, üben.
3. Möglichkeiten
Die Möglichkeiten, die man mit guten Kenntnissen der Ressourcen hat sind mannigfaltig. Zum einen lassen sich so gut wie alle Inhalte Ingame bearbeiten und teilweise auch viele neue hinzufügen (Quests, Exchange Skripte, Events, etc. etc. ). Die Grundkenntnisse der Ressourcen gehören auch dazu einen Server zu leiten, also werden in dieser Hinsicht auch einige Türen geöffnet.
Dieses Thema ist ein kleines Anhängsel, welches das Thema Ressourcen und Welt Bearbeitung anschneiden soll. Zum einen geht es darum, welche Systeme im Bezug auf die Spielwelten verwendet werden und zum anderen, wie man den Beast effizienter nutzen kann.
Welche Ressourcen werden denn von Beast genutzt. Die Antwort ist sehr einfach und überschaubar. Der Beast nutzt alle Dateien, die in der Masquerade.prj angegeben werden (Naja, nahezu alle Dateien), d.h. folgende Möglichkeiten ergeben sich mit dem Beast:
- Objekte spawnen (PropObj.inc)
- Boden Texturen verändern (Terrain.inc)
- Models (in jeder Form) spawnen (mdlobj.inc/mdldyna.inc)
- Monster spawnen (propmover.txt)
Grundsätzlich gibt es zu diesem Thema nicht viel zu sagen, nur dass die Ressourcen aufgeteilt werden, in Ressourcen nur für den Server und Ressourcen für Server und Client. Folgende Ressourcen werden vom Client und vom Server genutzt:
Spoiler anzeigen
Alles anzeigen
UNd folgende Ressourcen werden ausschließlich vom Server genutzt;
Spoiler anzeigen
Alles anzeigen
Ein paar Datein sind jetzt hier nicht aufgeführt, das kommt daher, dass sie keinen besonderen Nutzen haben.
Das nächste und letzte Thema, was ich hier in diesem Tutorial bearbeiten möchte ist: Wie arbeite ich effizienter, wenn ich den Quellcode verwende.
Dank einem glücklichen Umstand steht uns Flyffern der Quellcode der Serverfiles und der Neuz zur Verfügung. Diesen Umstand sollten Resource Developer nutzen, um Wissenslücken zu schließen. Denn es heißt: "Jeder Fehler der Zustande kommt wird in der Source definiert", d.h. Wenn man nun seinen Fehler nicht findet, ist es ratsam im Quellcode nach dem Fehler zu suchen und seine Ursache zu ergründen. Aber nicht nur um Fehler zu vermeiden ist das Arbeiten mit dem Quellcode ratsam, sondern auch um zukünftige Fehler zu unterbinden. Wenn einem Dev das nötige Wissen fehlt, um z.B. ein Schmuckstück richtig in das Upgrade einzubinden, schaut er sich in der Source die richtige Stelle an und weiß, was an welcher Stelle stehen muss. Nach diesem Prinzip lassen sich somit alle Datein ergründen.
So nun ist meiner erstes Tutorial der Flyff Ressourcen Reihe fertig. Ich hoffe ich konnte einigen Neulingen helfen die Ressourcen ein bisschen besser zu verstehen. Als nächstes kommt ein Tutorial, welches auf die Funktion der einzelnen Datein eingehen wird und mit vielen Einzeltutorials das arbeiten mit den Ressourcen näher bringt.
[/SPOILER2]
Kapitel 2:
[SPOILER2]Wie bereits oben erwähnt findet man in der Datei s.txt, welche nur vom Server geladen wird, die Schmuckupgraderaten(1), Collector Upgrade(2), Items im Collectorfeld(3), Pet-Levelup(4), den Teil Pet_AddLifeProbability lasse ich außen vor.
(1) Es müssen insgesamt 20 Einträge zwischen den geschweiften Klammern von Accessory_Probability sein, die Einträge werden absteigend eingelesen, sprich es fämgt an mit der Wahrscheinlichkeit von 1-2; und hört auf mit 19-20.
Um auf eine "einlesbare" Wahrscheinlichkeit zu kommen müsst ihr folgendes rechnen: (x in %) * 100 ; Beispiel: 80(%) * 100 = 8000
(2)Siehe oben nur: 5 Einträge und Rechnung: (x in %) * 10 ; Bsp: 50(%) * 10 = 500
(3)So nun komme ich zu den Items im Collectorfeld, welche bei Collecting_Item eingestellt werden können, neue Items könnt ihr zwischen den Geschweiften Klammern eintragen( " { } "). Der aufbau sieht folgendermaßen aus:
Itemid Wahrscheinlichkeit
Die Wahrscheinlichkeit sollte folgendermaßen berechnet werden(Umständliche Version):
((x in %) / 100 ) * 1000000000
Beispiel: (14.257(%) / 100) * 1000000000 = 142570000
(4) Aufbau
mmo-core.de/attachment/3684/
So sieht das ganze grob aus.
Die Reihen, also zB.
stehen für die Level die das Pet erreichen kann, sprich:
10000 :: Level 1
0 :: Level 2
0 :: Level 3
etc pp
die einzelnen Zahlen stehen für Wahrscheinlichkeiten, sprich es handelt sich hierbei um eine Art Matrix.
Erklräung
Es gibt insegsamt 5 Reihen, die erste steht für die Petstufe 'D', die zweite für 'C' usw. Wenn ein Pet beim Pet Tamer o.Ä. geupgraded wird, dann wird aus der betroffenen Reihe also bei Stufe B die dritte Reihe per Zufall(Wahrscheinlichkeiten) ein Wert rausgenommen und dieser wird dem Pet zugeordnet. 10000 = 100% ; 0 = 0%
Um euch noch ein bisschen was zu geben:
Der Script für ein perfektes Pet wäre
[/SPOILER2]
[SPOILER2]Im Folgenden werde ich euch den grundsätzlichen Aufbau der mdlObj bzw. der mdlDyna erklären. Im Endeffekt gibt es keinen Unterschied zwischen den beiden Datei, nur dass die mdlObj.inc World Objects beinhaltet und die mdlDyna.inc Ctrl, Sfx, Items, Mover(Mit Animationen), regions, Ship und Path Models entählt. Sprich man könnte entweder beide Datein zusammenfügen oder in weitere Datein untergliedern(Um mehr Übersicht zu schaffen). So wie ihr im Grundlagentutorial sehen könnt gibt es bestimmte Parameter, die das Model nochmal genauer beschreiben:
"MiniDoor01" = Name des Models
MI_NPC_MINIDOOR01 = ID des movers(propMover.txt/defineObj.inc)
MODELTYPE_ANIMATED_MESH = Modeltyp (Es gibt: MODELTYPE_NONE, MODELTYPE_MESH(Nicht Animiert)(verw. bei Items, Region,Ship), MODELTYPE_ANIMATED_MESH(Animiert)(verw. bei Items), MODELTYPE_BILLBOARD(verw. bei rain/snow), MODELTYPE_SFX, MODELTYPE_ASE(Keine Verw. gefunden))
"" = Part, es ist (glaube ich) damit möglich z.B. eine Musikdatei an ein SFX o.Ä. zu binden oder an einen Umhang eine geschlechtsspezifische Texture
0 = Fliegendes Objeckt(0=Nein, 1=Ja)
MD_MID = Model Distant
0=Pick(?)
1.0f = Scale
0=Trans(?)
0=Shadow
ATEX_NONE=TextureEx(ich glaube eine Art Erweiterung für die Texture
1=Render Flag(?)
-------------------------------------------------------------------------------
So weiter geht es zu den Animationen:
Ich gehe jetzt nur auf die Animationen von den Movern ein:
Bsp:
MI_Toadrin01
zwischen den geschweiften Klammern:
Alles anzeigen
z.B. "die1" MTI_DIE1
"die1" beschreibt den Pfad, also nicht falsch verstehen es beschreibt das Suffix der *.ani Datei, sprich in unserem Fall:
"mvr_Toadrin_die1.ani"
MTI_DIE1 weist der ani der richtigen Stelle im Client zu, sprich wenn man anstatt MTI_DIE1 ein MTI_ATK1 einsetzen würde, dann würde beim attackieren die Sterbeanimation kommen.
[/SPOILER2]
Copyrigth © 2013 - Tex0
in diesem Threade werde ich euch das Arbeiten mit den Resourcen näher bringen. Ich werde versuchen diesen Guide ständig zu erweitern:
Kapitel 1:
- Grundlagen:
[SPOILER2]
Inhaltsverzeichnis.
1. Welche Ressourcen gibt es und was machen sie.
1.1. Masquerade.prj
1.2. Models
1.3. Items
1.4. Quests
1.5. Applikationen
1.6. Welten
1.7. LUA
1.8. Events
1.9. Exchange Script
1.10. Monster
1.11. Der ganze Rest
2. Wie gehe ich mit den Ressourcen um, wie arbeite ich mit ihnen
3. Möglichkeiten
4. Der „Beast“ und die Ressourcen
5. Ressourcen Client / Server
6. Arbeiten mit dem Quellcode
7. Schluss
So nun da vermehrt gewünscht wurde, dass ich das ganze hier in den Thread schreibe, schreibe ich das Tutorial ein wenig um und schreibe es hier rein.
1. Welche Ressourcen gibt es und was machen sie.
Ohne groß um den heißen Brei herum zu reden, werde ich hier eine Liste der wichtigsten Flyff Ressourcen und ihrer Funktion schreiben
1.1. Masquerade.prj
Funktion: Die Masquerade.prj ist eine Art Hilfsdatei für den Client/WorldServer um einige Ressourcen zu laden, in ihr werden einige(nicht alle) Ressourcen aufgelistet, welche später vom Client/WorldServer eingelesen werden. Bsp.:
Diese Datei wird auch vom Beast Worldeditor verwendet, um die wichtigsten Ressourcen einzulesen. Diese Datei wurde schon seit dem Beginn von Flyff genutzt.
1.2 Models
Alle Model-Dateien werden in zwei Dateien definiert:
mdlDyna.inc & mdlObj.inc
Die Datei mdlDyna beinhaltet die Models von: Controls, SFX, Items, NPCs, Regionen und Ships
Die Datei mdlObj hingegen beinhaltet nur die Models von den Worldobjekten. Der Grobe aufbau sieht folgendermaßen aus:
1.3 Items
Nun kommen wir zu den wahrscheinlich meist behandelten Dateien, den Item Dateien. Folgende Dateien werden zum korrekten eintragen von einem Item benötigt:
- defineitem.h (Eintrag für die Itemid)
- propitem.txt (Genaue Definition der Itemparameter)
- propitem.txt.txt (Itembeschreibung [Name und Beschreibung])
- mdldyna.inc (Itemmodel)
Diese Dateien werden benötigt, um ein grundlegend einzutragen. Es gibt noch einige weitere Dateien, die das Item genauer beschreiben, z.B.
- accessory.inc <--Ist ein Item mit den Parametern IK1_GENERAL IK2_JEWELRY in der propitem/defineitem vorhanden, so kann man sie hier eintragen und somit ist das Item für das Accessory Upgrade verfügbar.
- propitemETC.inc/.txt.txt <-- Hier können mehrere Items zu einem Set zusammengefügt werden, also sind die hier definierten Items alle angezogen, so erhält man einen definierten Effekt.
- propGiftbox.inc <-- Ist hier ein Item definiert, so kann man aus einem Item mit den Parametern IK1_SYSTEM IK2_SYSTEM eine Giftbox erstellen, aus der man zufallsbestimmt Items erhalten kann
1.4. Quests
Um einen Quest vollständig verwenden kann muss man folgende Dateien beschrieben haben:
- definequest.h <-- Eintrag der QuestID
- Propquest.inc/.txt <-- Definition des Quests(Auftrag, Texte, Einstellungen )
- (propquest-dungeonandpk.inc/.txt.txt)
- (propQuest-Scenario.inc/.txt.txt)
- (propQuest-RequestBox.inc/.txt.txt)
- (propQuest-RequestBox2.inc/.txt.txt)
Die eingeklammerten Datein sind “optional” und ich werde nicht weiter auf sie eingehen.
1.5. Applikationen
Unter Apps oder Applikationen in Flyff versteht man die Fenster, die im Spiel verwendet werden, z.B. Das Inventar oder das Statusfenster. Es reicht nicht aus, einfach ein Fenster zu entwerfen, sondern es muss in die Source eingebaut werden( Funktionen, etc. ). Folgende Dateien sind wichtig:
- ResData.h <-- Definition des Applets
- Resdata.inc <-- Position der einzelnen Controls und Eigenschaften des Apps
- ResData.txt.txt <-- Titel Strings des Applets
Den meisten Files beigelegt, findet man ein Tool names „Daisy“. Dieses ist dazu da mithilfe eines GUI solche Applets zu erstellen.
1.7. LUA
Definition:
Lua ist eine imperative und erweiterbare Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können.
LUA wird ausschließlich von World- /DatabaseServer genutzt. Folgende Systeme werden durch lua eingebunden:
- Mentoren System --> Campus.lua
- Events --> Event.lua
- 1 on 1 Guildwar --> GuildCombat1TO1.lua
- Upgrade System --> ItemUpgrade.lua
- Monsterskills --> Monsterskill.lua
- Instance Dungeons --> PartyDungeon.lua
- Quiz Event --> QuizEvent.lua
- Rainbowrace --> RainbowRace.lua
- Secret Room --> SecretRoom.lua
- Steuer System --> Tax.lua
Weitere Verwendung:
- CreateMonster.lua --> Diese Datei wird verwendet, um durch ein bestimmtes Item Monster zu spawnen.
- EventMonster.lua --> Monster Spawnen
- ItemScript.lua --> ??
- PCBang.lua --> Ein Event System
Fast jede LUA-Datei in den Flyff Ressourcen wird durch eine Funktionsdatei ergänzt, welche sich im Ordner /LuaFunc/ befindet.
1.8. Events
Es gibt mehrere verschiedene Arten von Events:
- Normale Events --> Definiert in der Datei Event.lua
- DropEvents --> PropDropEvent.inc
Normale Events werden wie schon gesagt in der Datei Event.lua definiert. Folgende Events sind Möglich:
- Exp/Drop/Penyadrop Events
- Attackpower/Defense Events
- Levelup Geschenke
- Cheer Exp Faktor
- Verbindungsdauer Events
- Rain/Snow Events
Bei den Drop Events ist es möglich für ein Item den Level Bereich der Monster einzustellen, in welchem das Item gedropt werden kann.
1.9. Exchange Skript
Der Exchange Skript ermöglicht es Items gegen Items auszutauschen (z.B. Silver Heart Event )
Auf den Exchange Skript werde ich vorerst nicht genau eingehen, da dieser im Bezug auf ein anderes System sehr interessant ist.
1.10. NPC's
Die NPCs werden grundsätzlich in zwei Kategorien aufgeteilt (aktive (Monster) und passive (Stadtnpcs) ). Und beide werden in den Ressourcen verschieden behandelt. Die aktiven und passiven NPC's werden zunächst in die Ressourcen eingetragen, in folgende Datein:
- defineObj.h
- mdlDyna.inc (Model und Animation)
- propmover.txt / .txt.txt
So, sind nun die grundzüge des NPC's eingetragen, kann man verschieden mit ihnen weiter machen.
Passive NPC's können weiter behandelt werden, in dem man ihnen in der character.inc/.txt.txt genau definierte Funktionen gibt(Menüitems, Handelsfenster, uvm. ). Bevor dies jedoch geschehen kann muss das Model einem NPC Namen zugeteilt werden (definiert in der character.inc). Dies geschiet in den Weltdatein.
Um einen NPC genauer zu definieren trägt man den gewünschten Namen in die Character.inc ein und definiert ihn, die Grundstruktur sieht folgendermaßen aus:
Quellcode
Um einem passiven NPC einen Quest zu geben muss man in der Datein propQuest.inc diesen Character als StarNpc angeben.
Um einen aktiven NPC weiter zu definieren, kann man ihn in die Datei
PropMoverEx.inc eintragen. Dort lassen sich Sachen wie Drops oder Verhalten eintragen.
1.11. Der ganze Rest
Nun, was ist noch möglich in den Ressourcen einzustellen:
- NPC Eigenschaften <-- character.inc/.txt.txt
- Raten <-- Constant.inc
- Collector <-- collecting.inc
- Couple Raten/Items <-- couple.inc
- Bodentexturen <-- Terrain.inc
- Honor Titel <-- Honorlist.txt/.txt.txt
- LordSkills <-- lordskill.txt/.txt.txt
- Skills <-- Propskill.txt/.txt.txt ; PropSkillAdd.csv
die Datei PropSkillAdd ist dazu da, um die Parameter der jeweiligen Skillstufe zu bestimmen.
- Accessorie Upgrade/Collector Upgrade/Collectorfeld <-- s.txt
2. Wie gehe ich mit den Ressourcen um, wie arbeite ich mit ihnen.
Das arbeiten mit den Ressourcen liegen von meiner Seite aus 3 Regeln zugrunde:
- Einen Code Editor verwenden, der ein paar Extra Funktionen, wie Syntax Highlighting, Zeilenangaben enthält (Notepad++)
- Backups anlegen: Damit auch bei kleinen Fehlern keine großen Probleme entstehen --> immer Backups anlegen( Eine Kopie des Ressourcen Ordner anlegen )
- Wissen, was man machen will: wenn man völlig planlos an die Arbeit geht kommt man schnell aus dem Konzept oder vergisst wichtige Einträge !
Wenn man nun die Grundlagen der Ressourcen beherrscht und die Regeln eingehalten werden, dann kann eigentlich nichts mehr passieren. Wichtig ist: Üben, üben, üben.
3. Möglichkeiten
Die Möglichkeiten, die man mit guten Kenntnissen der Ressourcen hat sind mannigfaltig. Zum einen lassen sich so gut wie alle Inhalte Ingame bearbeiten und teilweise auch viele neue hinzufügen (Quests, Exchange Skripte, Events, etc. etc. ). Die Grundkenntnisse der Ressourcen gehören auch dazu einen Server zu leiten, also werden in dieser Hinsicht auch einige Türen geöffnet.
4. Der „Beast“ und die Ressourcen
Dieses Thema ist ein kleines Anhängsel, welches das Thema Ressourcen und Welt Bearbeitung anschneiden soll. Zum einen geht es darum, welche Systeme im Bezug auf die Spielwelten verwendet werden und zum anderen, wie man den Beast effizienter nutzen kann.
Welche Ressourcen werden denn von Beast genutzt. Die Antwort ist sehr einfach und überschaubar. Der Beast nutzt alle Dateien, die in der Masquerade.prj angegeben werden (Naja, nahezu alle Dateien), d.h. folgende Möglichkeiten ergeben sich mit dem Beast:
- Objekte spawnen (PropObj.inc)
- Boden Texturen verändern (Terrain.inc)
- Models (in jeder Form) spawnen (mdlobj.inc/mdldyna.inc)
- Monster spawnen (propmover.txt)
5. Ressourcen Client / Server
Grundsätzlich gibt es zu diesem Thema nicht viel zu sagen, nur dass die Ressourcen aufgeteilt werden, in Ressourcen nur für den Server und Ressourcen für Server und Client. Folgende Ressourcen werden vom Client und vom Server genutzt:
Quellcode
- "Constant.inc"
- "ContinentDef.h"
- "credit.txt"
- "define.h"
- "defineAttribute.h"
- "defineEvent.h"
- "defineItem.h"
- "defineItemkind.h"
- "defineNeuz.h"
- "defineObj.h"
- "defineSkill.h"
- "defineSound.h"
- "defineText.h"
- "defineWorld.h"
- "defineJob.h"
- "definequest.h"
- "expTable.inc"
- "defineHonor.h"
- "honorList.txt"
- "honorList.txt.txt"
- "jobItem.inc"
- "lang.h"
- "Masquerade.prj"
- "propCtrl.txt"
- "propGuildQuest.inc"
- "propMover.txt"
- "propSkill.txt"
- "propTroupeSkill.txt"
- "propSkillAdd.csv"
- "propMoverEx.inc"
- "propMotion.txt"
- "ResData.h"
- "Terrain.inc"
- "WndStyle.h"
- "wordToolTip.inc"
- "propEnchant.inc"
- "World.inc"
- "mdlObj.inc"
- "mdlDyna.inc"
- "textEmotion.txt"
- "propKarma.txt"
- "propItemEtc.inc"
- "propEvent.inc"
- "propCtrl.txt.txt"
- "propMover.txt.txt"
- "propSkill.txt.txt"
- "propTroupeSkill.txt.txt"
- "textEmotion.txt.txt"
- "propKarma.txt.txt"
- "propItemEtc.txt.txt"
- "world.txt.txt"
- "propLang.txt"
- "PKSetting.inc"
- "Exchange_Script.txt"
- "Ultimate_GemAbility.txt"
- "pet.inc"
- "collecting.inc"
- "accessory.inc"
- "QuestDestination.txt.txt"
- "PatrolDestination.txt.txt"
- "InvalidName.inc"
- "etc.inc"
- "propJob.inc"
- "resdata.inc"
- "textClient.inc"
- "etc.txt.txt"
- "etc.txt.txt"
- "resData.txt.txt"
- "textClient.txt.txt"
- "definelordskill.h"
- "lordskill.txt"
- "lordskill.txt.txt"
- "lordevent.inc"
- "couple.inc"
- "ticket.inc"
- "layer.inc"
- "propQuest.txt.txt"
- "propQuest.inc"
- "character.txt.txt"
- "character.inc"
- "propItem.txt"
- "propItem.txt.txt"
- "except.txt"
UNd folgende Ressourcen werden ausschließlich vom Server genutzt;
Quellcode
- "Constant.inc"
- "DiePenalty.inc"
- "election.inc"
- "propDropEvent.inc"
- "propgiftbox.inc"
- "proppackitem.inc"
- "randommoverevent.inc"
- "randomoption.inc"
- "transformitem.inc"
- "treehelp.inc"
- "Alle Lua Datein"
- "AI_SCript.txt"
- "CreateMonster.txt"
- "EnvironmentEffect.txt"
- "GuildCombat.txt"
- "PiercingSize.txt"
- "s.txt"
- "school.txt"
- "Ultimate_UltimateWeapon.txt"
- "WordDialog.txt"
Ein paar Datein sind jetzt hier nicht aufgeführt, das kommt daher, dass sie keinen besonderen Nutzen haben.
6. Arbeiten mit dem Quellcode
Das nächste und letzte Thema, was ich hier in diesem Tutorial bearbeiten möchte ist: Wie arbeite ich effizienter, wenn ich den Quellcode verwende.
Dank einem glücklichen Umstand steht uns Flyffern der Quellcode der Serverfiles und der Neuz zur Verfügung. Diesen Umstand sollten Resource Developer nutzen, um Wissenslücken zu schließen. Denn es heißt: "Jeder Fehler der Zustande kommt wird in der Source definiert", d.h. Wenn man nun seinen Fehler nicht findet, ist es ratsam im Quellcode nach dem Fehler zu suchen und seine Ursache zu ergründen. Aber nicht nur um Fehler zu vermeiden ist das Arbeiten mit dem Quellcode ratsam, sondern auch um zukünftige Fehler zu unterbinden. Wenn einem Dev das nötige Wissen fehlt, um z.B. ein Schmuckstück richtig in das Upgrade einzubinden, schaut er sich in der Source die richtige Stelle an und weiß, was an welcher Stelle stehen muss. Nach diesem Prinzip lassen sich somit alle Datein ergründen.
7. Schluss
So nun ist meiner erstes Tutorial der Flyff Ressourcen Reihe fertig. Ich hoffe ich konnte einigen Neulingen helfen die Ressourcen ein bisschen besser zu verstehen. Als nächstes kommt ein Tutorial, welches auf die Funktion der einzelnen Datein eingehen wird und mit vielen Einzeltutorials das arbeiten mit den Ressourcen näher bringt.
[/SPOILER2]
Kapitel 2:
- Ins Detail: s.txt:
[SPOILER2]Wie bereits oben erwähnt findet man in der Datei s.txt, welche nur vom Server geladen wird, die Schmuckupgraderaten(1), Collector Upgrade(2), Items im Collectorfeld(3), Pet-Levelup(4), den Teil Pet_AddLifeProbability lasse ich außen vor.
(1) Es müssen insgesamt 20 Einträge zwischen den geschweiften Klammern von Accessory_Probability sein, die Einträge werden absteigend eingelesen, sprich es fämgt an mit der Wahrscheinlichkeit von 1-2; und hört auf mit 19-20.
Um auf eine "einlesbare" Wahrscheinlichkeit zu kommen müsst ihr folgendes rechnen: (x in %) * 100 ; Beispiel: 80(%) * 100 = 8000
(2)Siehe oben nur: 5 Einträge und Rechnung: (x in %) * 10 ; Bsp: 50(%) * 10 = 500
(3)So nun komme ich zu den Items im Collectorfeld, welche bei Collecting_Item eingestellt werden können, neue Items könnt ihr zwischen den Geschweiften Klammern eintragen( " { } "). Der aufbau sieht folgendermaßen aus:
Itemid Wahrscheinlichkeit
Die Wahrscheinlichkeit sollte folgendermaßen berechnet werden(Umständliche Version):
((x in %) / 100 ) * 1000000000
Beispiel: (14.257(%) / 100) * 1000000000 = 142570000
(4) Aufbau
mmo-core.de/attachment/3684/
So sieht das ganze grob aus.
Die Reihen, also zB.
stehen für die Level die das Pet erreichen kann, sprich:
10000 :: Level 1
0 :: Level 2
0 :: Level 3
etc pp
die einzelnen Zahlen stehen für Wahrscheinlichkeiten, sprich es handelt sich hierbei um eine Art Matrix.
Erklräung
Es gibt insegsamt 5 Reihen, die erste steht für die Petstufe 'D', die zweite für 'C' usw. Wenn ein Pet beim Pet Tamer o.Ä. geupgraded wird, dann wird aus der betroffenen Reihe also bei Stufe B die dritte Reihe per Zufall(Wahrscheinlichkeiten) ein Wert rausgenommen und dieser wird dem Pet zugeordnet. 10000 = 100% ; 0 = 0%
Um euch noch ein bisschen was zu geben:
Der Script für ein perfektes Pet wäre
[/SPOILER2]
- Ins Detail: Mdl*.inc:
[SPOILER2]Im Folgenden werde ich euch den grundsätzlichen Aufbau der mdlObj bzw. der mdlDyna erklären. Im Endeffekt gibt es keinen Unterschied zwischen den beiden Datei, nur dass die mdlObj.inc World Objects beinhaltet und die mdlDyna.inc Ctrl, Sfx, Items, Mover(Mit Animationen), regions, Ship und Path Models entählt. Sprich man könnte entweder beide Datein zusammenfügen oder in weitere Datein untergliedern(Um mehr Übersicht zu schaffen). So wie ihr im Grundlagentutorial sehen könnt gibt es bestimmte Parameter, die das Model nochmal genauer beschreiben:
"MiniDoor01" = Name des Models
MI_NPC_MINIDOOR01 = ID des movers(propMover.txt/defineObj.inc)
MODELTYPE_ANIMATED_MESH = Modeltyp (Es gibt: MODELTYPE_NONE, MODELTYPE_MESH(Nicht Animiert)(verw. bei Items, Region,Ship), MODELTYPE_ANIMATED_MESH(Animiert)(verw. bei Items), MODELTYPE_BILLBOARD(verw. bei rain/snow), MODELTYPE_SFX, MODELTYPE_ASE(Keine Verw. gefunden))
"" = Part, es ist (glaube ich) damit möglich z.B. eine Musikdatei an ein SFX o.Ä. zu binden oder an einen Umhang eine geschlechtsspezifische Texture
0 = Fliegendes Objeckt(0=Nein, 1=Ja)
MD_MID = Model Distant
0=Pick(?)
1.0f = Scale
0=Trans(?)
0=Shadow
ATEX_NONE=TextureEx(ich glaube eine Art Erweiterung für die Texture
1=Render Flag(?)
-------------------------------------------------------------------------------
So weiter geht es zu den Animationen:
Ich gehe jetzt nur auf die Animationen von den Movern ein:
Bsp:
MI_Toadrin01
zwischen den geschweiften Klammern:
Quellcode
- "stand" MTI_STAND
- "walk" MTI_WALK
- "idle1" MTI_IDLE1
- "idle1" MTI_IDLE2
- "dmg1" MTI_DMG1
- "dmg2" MTI_DMG2
- "dmgFly" MTI_DMGFLY
- "dmgDie" MTI_DMGDIE
- "dmgLive" MTI_DMGLIVE
- "die1" MTI_DIE1
- "atk1" MTI_ATK1
- "atk2" MTI_ATK2
- "atk2" MTI_ATK3
- "groggy" MTI_GROGGY
- //extra
- "walk" MTI_JUMP1
- "walk" MTI_JUMP2
- "walk" MTI_JUMP3
- "walk" MTI_JUMP4
- "walk" MTI_RUN
z.B. "die1" MTI_DIE1
"die1" beschreibt den Pfad, also nicht falsch verstehen es beschreibt das Suffix der *.ani Datei, sprich in unserem Fall:
"mvr_Toadrin_die1.ani"
MTI_DIE1 weist der ani der richtigen Stelle im Client zu, sprich wenn man anstatt MTI_DIE1 ein MTI_ATK1 einsetzen würde, dann würde beim attackieren die Sterbeanimation kommen.
[/SPOILER2]
Copyrigth © 2013 - Tex0