Note: I made this when I was tired, I'll fix typos or mistakes tomorrow.
Haven't seen any of these around/been active, so I figured I'd make this for people. This is a highly detailed guide on how to add items, it's not easy to do and isn't 100% user friendly (Even though I tried lol) so make sure you read carefully.
In order to get started and assuming you have a working server, here is what you need:
- data.res
- dataSub2.res
- SQL Database
- Microsoft Visual C++
- Notepad/ConTEXT/Word/etc.
- Flyff Resource Manager
It doesn't matter what emulator your running (I think) it all works the same way or in a similar way.
ADDING BRAND NEW ITEMS
Note: This part of the tutorial is based on adding a Job 1(mercenary/blade) sword.
Imagine you just made a weapon, or found a neat weapon mod online and want to add it into your own server as it's own identical self. This is how you can.
First, open FRM and extract defineItem.h, mdlDyna.inc from data.res, and propItem.txt, and propItem.txt.txt from dataSub2.res. Place them somewhere you wont lose them.
Here is a short explanation of what you must do.
defineItem.h
Open this with any text editor.
mdlDyna.inc
Open this with Visual C++.
propItem.txt
Open this with any text editor.
propItem.txt.txt
Open this with Visual C++.
Create a small Icon for your weapon as a .dds extension. Make sure it's transparent and 32x32 dimensions. Assuming your o3d has it's .dds texture already, keep all three of those files in a folder for now. If you're somewhat of a beginner, let's name it Item_WeaSwoAddon.o3d and the two .dds files Item_WeaSwoAddon.o3d. Remember the name you choose, or if you're following along, just remember that name.
In order to have an item ingame, the emulator reads those four files I told you to extract, as well as the databases item table. Not sure what order it does this, but it scans mdlDyna.inc to read the o3d file, defineItem.h defines the item name, propItem.txt is pretty much a literal copy of the database item table, and propItem.txt.txt I'm unsure of right now. (tired) But you pretty much add the name/ID you put into defineItem.h.
Go to defineItem.h and anywhere in the middle type this:
So the area around it should appear like this:#define II_WEA_SWO_ADDON 50000
Remember 50000, that's the ID number you will use to spawn it ingame.#define II_WEA_SWO_SHADEVING 71
#define II_WEA_SWO_HOTTER 73
#define II_WEA_SWO_POLICE_CLUB 76
#define II_WEA_SWO_ADDON 50000
#define II_WEA_AXE_RODNEY 81
#define II_WEA_AXE_MORROW 83
#define II_WEA_AXE_CURNING 85
#define II_WEA_AXE_SHYADIN 87
#define II_WEA_AXE_BRONZE 89
#define II_WEA_AXE_GRANG 91
#define II_WEA_AXE_DRONE 93
#define II_WEA_AXE_PROEM 95
#define II_WEA_AXE_CORIN 97
#define II_WEA_AXE_CROW 99
Open mdlDyna.inc in Visual C++. Anywhere near weapons, type this:
Open propItem.txt. This step requires patience."WeaSwoAddon" II_WEA_SWO_ADDON MODELTYPE_MESH "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
First off, you need to take a look at your item table. To save a lot of time, copy the record of a sword if you're making a sword and use it as a base. So copy the Bloody Sword record. This is where it gets hard. You need to learn what every column means:
I'll just say, add IDS_PROPITEM_TXT_090000 as the 3rd column in propItem.txt.flyff_version
id
name
number
packMax
type1
type2
type3
job
permanence
useable
gender
price
endurance
abrasion
maxRepair
handed
flag
parts
partsub
partfile
exclusive
basePartsIgnore
itemLVL
itemRare
shopAble
log
charged
linkKindBullet
linkKind
abilityMin
abilityMax
itemType
itemEAtk
parry
blockRating
addSkillMin
addSkillMax
atkStyle
weaponType
itemAtkOrder1
itemAtkOrder2
itemAtkOrder3
itemAtkOrder4
continuousPain
shellQuantity
recoil
loadingTime
AdjHitRate
atkSpeed
dmgShift
atkRange
probability
destParam1
destParam2
destParam3
adjParamValue1
adjParamValue2
adjParamValue3
chgParamValue1
chgParamValue2
chgParamValue3
destData1
destData2
destData3
activeSkill
activeSkillLvl
activeSkillPer
reqMP
reqFP
reqDisLVL
reSkill1
reSkillLVL1
reSkill2
reSkillLVL2
skillReadyType
skillReady
skillRange
sfxElemental
sfxObj
sfxObj2
sfxObj3
sfxObj4
sfxObj5
useMotion
circleTime
skillTime
exeTarget
useChance
spellRegion
spellType
referStat1
referStat2
referTarget1
referTarget2
referValue1
referValue2
skillType
resist_electricity
resist_fire
resist_wind
resist_water
resist_earth
evilDoing
expertLVL
expertMax
subDefine
exp
comboStyle
flightSpeed
flightLRAngle
flightTBAngle
flightLimit
fFuelReMax
aFuelReMax
fuelRe
limitLevel1
reflect
sndAttack1
sndAttack2
iconPath
questID
textFile
comment
Please do this instead of googling or getting lazy, it's very useful to learn and expands your abilities beyond your dreams. Once you learn what the columns mean, you need to literally copy what you wrote in SQL, into propItem.txt. Except the layout is different, instead of (Null) or -1, it shows a =. If you have Additional Damage of Critical Hits, it will say DST_CRITICAL_BONUS. Here are the stats you will need if you want to add bonuses to adjParamValue1-3, which I'm sure a lot of people know or have seen before:
Once you figure that out, move onto propItem.txt.txt, and add:1 STR
2 DEX
3 INT
4 STA
5 YoYo DMG
6 Bow DMG
7 Chr Range
8 Block Range
9 Chr Chancecritical
10 Chr Bleeding
11 Speed
12 Ability min
13 Ability Max
14 Block Meele
15 Master Earth
16 Stop Movement
17 Mastery Fire
18 Mastery Warter
19 Mastery Electricity
20 Mastery Wind
21 Knuckle DMG
22 PVP DMG Rate
24 Attackspeed
25 Sword DMG
26 Adjdef
27 Resist Magic
28 Resist Electriicity
29 Reflect Damage
30 Resist Fire
31 Resist Wind
33 Resist Earth
34 Axe DMG
35 HP Max
36 MP Max
37 FP Max
38 HP
39 MP
40 FP
41 HP Recovery
42 MP Recovery
43 FP Recovery
44 Kill HP
45 Kill MP
46 Kill FP
47 Adj Hitrate
49 Clearbuff
50 Chr StealHP Immunity
51 Attackspeed Rate
52 HP Max Rate
53 MP Max Rate
54 FP Max Rate
55 Chr Weaeatkchange
56 Chr StealHP
57 Chr Chancestun
58 AutoHP
59 Chr ChanceDark
60 CHR ChancePosion
61 Immunity
62 Addmagic
63 Chr DMG
64 Chr State
65 Parry
66 Atkpower Rate
67 Experience
68 Jumping
69 Chr ChancestealHP
70 Chr Chancebleeding
71 Recovery Exp
72 Adjdef Rate
73 MP Dec Rate
74 FP Dec Rate
75 Spell Rate
76 Cast Critical Rate
77 Critical Bonus
78 Skill Level
79 Monster DMG
80 PVP DMG
81 Melee StealHP
82 Heal
83 AtkPower
85 OneHandMastery DMG
86 TwoHandMastery DMG
87 YoYoMastery DMG
88 BowMastery DMG
89 KnuckleMaster DMG
90 HawkeyeRate
91 Resist Magic Rate
92 Giftbox
Make sure your table is finished as well as all four of these files, then recompile them, add the data.res, datasub2.res, o3d into the model folder, textures into the Texture, TetureMid & TextureLow folder, and the icon into the Item folder, and you should be able to log in and spawn them without problems, just realize this isn't an easy process, but it isn't impossible.IDS_PROPITEM_TXT_090000 Addon Weapon
IDS_PROPITEM_TXT_090001 Weapon that was added for testing.
ADDING ITEMS FROM OTHER VERSIONS
This is a lot easier to do than the first step, basically you open all the four files I listed from FRM. Get the data.res and dataSub2.res from the client you want to transfer items from. Extract the same four files.
If you want to add a bloody sword to a v6 server, you will have to copy the following parts from each file:
defineItem.h
mdlDyna.inc#define II_WEA_SWO_BLOODY 22354
propItem.txt"WeaSwoBloody" II_WEA_SWO_BLOODY MODELTYPE_MESH "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
propItem.txt.txt7 II_WEA_SWO_BLOODY IDS_PROPITEM_TXT_007515 1 1 IK1_WEAPON IK2_WEAPON_DIRECT IK3_SWD JOB_MERCENARY TRUE = = 500000 7200000 100 180 HD_ONE = PARTS_RWEAPON = 0 = = 110 200 = 1 = = = 338 340 _NONE 0 0 0 0 0 = WT_MELEE_SWD AS_HORIZONTAL AS_DIAGONAL AS_VERTICAL AS_THRUST = = = = = 0.085 = AR_SHORT = DST_CRITICAL_BONUS DST_CHR_CHANCECRITICAL DST_ATTACKSPEED 40 20 300 = = = = = = = = = = = = = = = = = = = = = = XI_HIT_SWORD01 = = = = = = = = = WEAPON_UNIQUE = II_WEA_SWO_BLOODYUM = 10000 = = 0 0 0 0 0 0 = = = = = = = = = = = = 120 = SND_PC_DMGSWDM SND_PC_DMGSWDC """Itm_WeaSwoBloody.dds""" 0 """""" IDS_PROPITEM_TXT_007516
Copy those lines from the newer data.res and dataSub2.res files to the new ones, then recompile them. And again, you will have to convert the information from propItem.txt into the database, which will take about 10 minutes if you just go along the line carefully and understand how both integrate with one another. Do the same last steps with the first tutorial, and you should be able to have a bloody sword in a v6 server. Same rule applies for v14 weapons in a v6-v13 server.IDS_PROPITEM_TXT_007515 Bloody Sword
IDS_PROPITEM_TXT_007516
Good luck with adding items, and even monsters, cloaks, etc. If I missed a step please politely point it out and I'll fix it, if you have any questions PM me or leave me a visitor message, and have fun!




