This is the structure for the item_table.bit file. You can change basically any item data you want with this. There is some data that is still checked server side, such as costs/value/etc. and can't be changed locally without error. This will work great for managing items in private servers.
Code:
typedef enum
{
ITEMTYPE_WEAPON = 0,
ITEMTYPE_CLOTHES,
ITEMTYPE_BOOK,
ITEMTYPE_POTION,
ITEMTYPE_CONSUMING,
ITEMTYPE_ELIXIR,
ITEMTYPE_COUNTERACT,
ITEMTYPE_RESOURCE,
ITEMTYPE_QUEST,
ITEMTYPE_ACCESSORY,
ITEMTYPE_LIFE,
ITEMTYPE_MUSIC,
ITEMTYPE_PASS,
ITEMTYPE_MONEY,
ITEMTYPE_SOCKET,
ITEMTYPE_WEAPON2,
ITEMTYPE_CLOTHES2,
ITEMTYPE_BOX,
ITEMTYPE_BOXKEY,
ITEMTYPE_WEAPON3,
ITEMTYPE_CLOTHES3, // 20
ITEMTYPE_UNUSED1,
ITEMTYPE_UNUSED2,
ITEMTYPE_UNUSED3, // 23
ITEMTYPE_MAXCOUNT, // 24
} ITEMTYPE;
typedef struct
{
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME; // msdn systemtime
typedef struct
{
wchar_t toolName[ 24 ];
short version1;
short version2;
SYSTEMTIME systemTime;
wchar_t user_name[ 8 ];
wchar_t com_name[ 10 ];
} ITEMTABLE_HEADER;
typedef struct
{
char objType;
unsigned int size;
short count;
short maxIndex;
} TABLEOBJECT_HEADER;
typedef struct
{
float x;
float y;
float z;
} ITEMPOSITION;
typedef struct
{
float x;
float y;
float z;
} CENTER;
// some variables used in various item properties
typedef struct
{
unsigned short addSEID; // ?
unsigned short addValue; // ?
unsigned char addProb; // ?
unsigned char apType; // ?
unsigned short apPer; // ?
} IDKWTFTHISIS;
// some variables used in various item properties
typedef struct
{
unsigned short specialID; // ?
unsigned short specialTime1; // ?
unsigned char specialTime2; // ?
unsigned char applyType; // ?
unsigned short specialProb; // ?
} SPECIALSTUFF;
typedef struct
{
unsigned char caseData; // might be ID
short caseProb;
} BOXDATA;
typedef struct
{
char objType;
char objType2;
short objID;
short prefixID; // StringDB ( .XSD ) ID Reference
short addTo;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 0 )
char objType3;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 0 )
short minPower;
short maxPower;
unsigned short durability;
char balance;
char attackRate;
short criticalRate;
char speed;
char strength;
char range;
char nature;
short reqLevel;
short reqSim;
short reqJung;
short sUnk1;
short sUnk2;
short sUnk3;
char applyClan;
int iUnk1; // clan contrib 1?
int iUnk2; // clan contrib 2?
unsigned int price;
short sUnk4;
short sUnk5;
char cUnk1;
char rank;
short hiddenID;
char hiddenValue;
unsigned char maxSocket;
char repairProb;
short modelIndex;
short iconNo;
unsigned short itemRank;
short gGroup;
short gCase;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
ITEMPOSITION itemPosition[ 4 ];
IDKWTFTHISIS wtfisthis[ 5 ];
SPECIALSTUFF specialthings[ 4 ];
short group;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk2;
short sUnk6;
short sUnk7;
char cUnk3;
short sUnk8;
short sUnk9;
short sUnk10;
char cUnk4;
short sUnk11;
short sUnk12;
char cUnk5;
char cUnk6;
} WEAPONPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
short modelIndex;
short iconNo;
unsigned short itemRank;
short gGroup;
short gCase;
char grade;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 10000 )
char applyClan;
int iUnk1; // clan contrib 1?
int iUnk2; // clan contrib 2?
unsigned int price;
short sUnk1;
short sUnk2;
unsigned short prefixID; // StringDB ( .XSD ) ID Reference ( Subtract 0 )
unsigned short addTo;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 10000 )
char precedence;
char clanID;
unsigned char characGrade;
char sexType;
short group;
char classID;
char repairProb;
unsigned char quality;
unsigned char quality2;
char rank;
CENTER center;
short hiddenID;
char hiddenValue;
short defense;
short stamina;
char warm;
char coolResistance;
char hotResistance;
char spiritResistance;
char bodyResistance;
unsigned short durability;
char strength;
IDKWTFTHISIS wtfisthis[ 5 ];
short reqLevel;
short reqSim;
short reqJung;
char pocket;
SPECIALSTUFF specialthings[ 4 ];
unsigned char maxSocket;
char attackRate;
char evasionRate;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk3;
short sUnk4;
char cUnk2;
short sUnk5;
short sUnk6;
short sUnk7;
char cUnk3;
short sUnk8;
char cUnk4;
} CLOTHPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 20000 )
char objType3;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 20000 )
unsigned short skillID;
unsigned char value;
unsigned char skillGroup;
unsigned char skillClass;
char skillStep;
unsigned char skillLevel;
unsigned short abilityID;
unsigned short questID;
unsigned char clanID;
unsigned char characGrade;
unsigned char classID;
unsigned short reqSkill1;
char reqSkill1Step;
unsigned short reqSkill2;
char reqSkill2Step;
unsigned short reqSkill3;
char reqSkill3Step;
unsigned short reqAbility;
char reqAbilityStep;
unsigned short hiddenID;
char prob;
unsigned short delay;
unsigned char del;
unsigned int applyTime;
unsigned short coolDown;
unsigned char applyClan;
int iUnk1; // clan contrib 1?
int iUnk2; // clan contrib 2?
unsigned int price;
short sUnk1;
short sUnk2;
char cUnk1;
unsigned short itemRank;
unsigned char quality;
unsigned char quality2;
unsigned short levelRequirement;
unsigned short strengthRequirement;
unsigned short forceRequirement;
unsigned short intellRequirement;
unsigned short constRequirement;
unsigned short dexterityRequirement;
unsigned short life;
unsigned short force;
unsigned short concept;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk2;
short sUnk3;
short sUnk4;
char cUnk3;
short sUnk5;
short sUnk6;
short sUnk7;
} BOOKPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 25000 )
char applyClan;
int iUnk1; // ? clan contrib 1?
int iUnk2; // ? clan contrib 2?
unsigned int price;
short sUnk1;
int iUnk4;
short sUnk2;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 25000 )
char clanID;
short applyValue;
char applyType;
short effectID;
short incEffectID;
short visualEffID;
unsigned char quality;
unsigned char quality2;
short cooldown;
short reqLevel;
short simGi;
short jungGi;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
byte cUnk1;
short sUnk3;
short sUnk4;
byte cUnk2;
short sUnk5;
short sUnk6;
short sUnk7;
} POTIONPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned short prefixID; // StringDB ( .XSD ) ID Reference
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 30000 )
char objType3;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned int descriptionID; // // StringDB ( .XSD ) ID Reference ( Subtract 30000 )
char clanID;
char sexType;
char classID;
short seid;
short time;
unsigned char quality;
unsigned char quality2;
char speed;
char strength;
char range;
IDKWTFTHISIS wtfisthis[ 5 ];
short reqLevel;
short reqSimki;
short reqJungki;
char applyClan;
int iUnk1; // clan contrib 1?
int iUnk2; // clan contrib 2?
unsigned int price;
char dump;
char userTrade;
char npcTrade;
char fame;
char cashCheck;
char cUnk1;
short sUnk1;
short sUnk2;
char cUnk2;
short sUnk3;
short sUnk4;
short sUnk5;
} CONSUMINGPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 35000 )
char objType3;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 35000 )
unsigned char step;
unsigned char reqLevel;
unsigned short minValue;
unsigned short maxValue;
unsigned short cooldown;
unsigned short successRate;
short body_type[ 8 ];
unsigned char addiction;
unsigned char visualEffect;
short temp[ 4 ];
char applyClan;
int iUnk1;
int iUnk2;
unsigned int price;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk1;
short sUnk2;
char cUnk2;
short sUnk3;
short sUnk4;
short sUnk5;
} ELIXIRPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 75000 )
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 75000 )
char applyClan;
int iUnk1;
int iUnk2;
unsigned int price; // price?
char dump; // dump?
char userTrade; // userTrade?
char npcTrade; // npcTrade?
unsigned char fame; // fame?
char cashCheck; // cashCheck?
char cUnk1;
short sUnk1;
short sUnk2;
char cUnk2;
short sUnk3;
short sUnk4;
short sUnk5;
} COUNTERACTPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 50000 )
unsigned char quality;
unsigned char quality2;
char applyClan;
int iUnk1; // clanpoint ?
int iUnk2; // clanpoint2 ?
unsigned int price;
short sUnk1;
int iUnk3;
short sUnk2;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 50000 )
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk3;
short sUnk4;
char cUnk2;
short sUnk5;
short sUnk6;
short sUnk7;
short sUnk8;
short sUnk9;
} RESOURCEPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 40000 )
char applyClan;
int iUnk1;
int iUnk2;
unsigned int price;
short questID;
unsigned short seid;
unsigned short value;
unsigned short delay;
short effectID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 40000 )
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk1;
short sUnk2;
char cUnk2;
short sUnk3;
short sUnk4;
short sUnk5;
} QUESTPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
short modelIndex;
short iconNo;
unsigned short itemRank;
short gGroup;
short gCase;
unsigned char grade;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 45000 )
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 45000 )
char pack;
char clanID;
char rank;
unsigned short durability;
unsigned char quality;
unsigned char quality2;
IDKWTFTHISIS wtfisthis[ 5 ];
short reqLevel;
short reqDex;
short reqStr;
short reqHealth; // constitution?
short reqJingi; // essence?
short reqInt;
char applyClan;
int iUnk1; // clanpoint 1?
int iUnk2; // clanpoint2 ?
unsigned int price;
short sUnk1;
int iUnk3;
short sUnk2;
SPECIALSTUFF specialthings[ 4 ];
unsigned char maxSocket;
short group;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk3;
short sUnk4;
char cUnk2;
short sUnk5;
short sUnk6;
short sUnk7;
} ACCESSORYPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 55000 )
char objType3;
char clanID;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 55000 )
unsigned short durability;
unsigned char count;
char balance;
char prob;
char luck;
char strength;
char applyClan;
int iUnk1; // clanpoint1 ?
int iUnk2; // clanpoint2 ?
unsigned int price;
char rank;
unsigned short abilityID;
unsigned char maxMerge;
char repairProb;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk1;
short sUnk2;
char cUnk2;
short sUnk3;
short sUnk4;
short sUnk5;
char cUnk3;
} LIFEPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
} MUSICPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
} PASSPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 60000 )
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 60000 )
unsigned char objType3;
short skillEffectID1;
unsigned short skillDescID1; // StringDB ( .XSD ) ID Reference ( Subtract 60000 )
char type1;
short value1;
char prob1;
char apType1;
short apPer1;
short apCount1;
short skillEffectID2;
unsigned short skillDescID2; // StringDB ( .XSD ) ID Reference ( Subtract 60000 )
char type2;
short value2;
char prob2;
char apType2;
short apPer2;
short apCount2;
short skillEffectID3;
unsigned short skillDescID3; // StringDB ( .XSD ) ID Reference ( Subtract 60000 )
char type3;
short value3;
char prob3;
char apType3;
short apPer3;
short apCount3;
short skillEffectID4;
unsigned short skillDescID4; // StringDB ( .XSD ) ID Reference ( Subtract 60000 )
char type4;
short value4;
char prob4;
char apType4;
short apPer4;
short apCount4;
unsigned char quality;
unsigned char quality2;
char applyClan;
int iUnk1; // clan point 1 ?
int iUnk2; // clan point 2 ?
unsigned int price;
short sUnk1;
int iUnk3;
short sUnk2;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk3;
short sUnk4;
char cUnk2;
short sUnk5;
short sUnk6;
short sUnk7;
} SOCKETPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 65000 )
char objType3;
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 65000 )
unsigned short sUnk1;
BOXDATA boxData[ 10 ];
unsigned char visualEffectID;
unsigned short sUnk2;
unsigned short sUnk3;
unsigned short sUnk4;
unsigned short sUnk5;
char applyClan;
int iUnk1; // clan contrib 1?
int iUnk2; // clan contrib 2?
unsigned int price;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk6;
short sUnk7;
char cUnk2;
short sUnk8;
short sUnk9;
short sUnk10;
} BOXPROPERTY;
typedef struct
{
char objType;
char objType2;
short objID;
unsigned int nameID; // StringDB ( .XSD ) ID Reference ( Subtract 70000 )
short modelIndex;
short iconNo;
unsigned short itemRank;
unsigned char grade;
unsigned char quality;
unsigned char quality2;
unsigned int descriptionID; // StringDB ( .XSD ) ID Reference ( Subtract 70000 )
unsigned char probWeapon;
unsigned char probClothes;
unsigned char probEtc;
unsigned short sUnk1;
unsigned short sUnk2;
unsigned short sUnk3;
unsigned short sUnk4;
char applyClan;
int iUnk1; // clan contrib 1?
int iUnk2; // clan contrib 2?
unsigned int price;
char dump;
char userTrade;
char npcTrade;
unsigned char fame;
char cashCheck;
char cUnk1;
short sUnk5;
short sUnk6;
char cUnk2;
short sUnk7;
short sUnk8;
short sUnk9;
} BOXKEYPROPERTY;
struct ITEMTABLE
{
ITEMTABLE_HEADER table;
TABLEOBJECT_HEADER wpnHdr;
WEAPONPROPERTY pWeaponProperty[ wpnHdr.count ];
TABLEOBJECT_HEADER clthHdr;
CLOTHPROPERTY pClothProperty[ clthHdr.count ];
TABLEOBJECT_HEADER bookHdr;
BOOKPROPERTY pBookProperty[ bookHdr.count ];
TABLEOBJECT_HEADER potHdr;
POTIONPROPERTY pPotionProperty[ potHdr.count ];
TABLEOBJECT_HEADER conHdr;
CONSUMINGPROPERTY pConsumingProperty[ conHdr.count ];
TABLEOBJECT_HEADER elixHdr;
ELIXIRPROPERTY pElixirProperty[ elixHdr.count ];
TABLEOBJECT_HEADER cntrHdr;
COUNTERACTPROPERTY pCounteractProperty[ cntrHdr.count ];
TABLEOBJECT_HEADER resHdr;
RESOURCEPROPERTY pResourceProperty[ resHdr.count ];
TABLEOBJECT_HEADER qstHdr;
QUESTPROPERTY pQuestProperty[ qstHdr.count ];
TABLEOBJECT_HEADER accHdr;
ACCESSORYPROPERTY pAccessoryProperty[ accHdr.count ];
TABLEOBJECT_HEADER lifeHdr;
LIFEPROPERTY pLifeProperty[ lifeHdr.count ];
TABLEOBJECT_HEADER mscHdr;
MUSICPROPERTY pMusicProperty[ mscHdr.count ];
TABLEOBJECT_HEADER passHdr;
PASSPROPERTY pPassProperty[ passHdr.count ];
TABLEOBJECT_HEADER sktHdr;
SOCKETPROPERTY pSocketProperty[ sktHdr.count ];
TABLEOBJECT_HEADER wpn2Hdr;
WEAPONPROPERTY pWeapon2Property[ wpn2Hdr.count ];
TABLEOBJECT_HEADER clth2Hdr;
CLOTHPROPERTY pCloth2Property[ clth2Hdr.count ];
TABLEOBJECT_HEADER boxHdr;
BOXPROPERTY pBoxProperty[ boxHdr.count ];
TABLEOBJECT_HEADER boxkeyHdr;
BOXKEYPROPERTY pBoxKeyProperty[ boxkeyHdr.count ];
TABLEOBJECT_HEADER wpn3Hdr;
WEAPONPROPERTY pWeapon3Property[ wpn3Hdr.count ];
TABLEOBJECT_HEADER clth3Hdr;
CLOTHPROPERTY pCloth3Property[ clth3Hdr.count ];
TABLEOBJECT_HEADER unused1Hdr;
TABLEOBJECT_HEADER unused2Hdr;
TABLEOBJECT_HEADER unused3Hdr;
} itemTable;
That "IDKWTFTHISIS" structure is probably for effects, as far as I remember. I literally called it "Effect" and worked just fine while editing item's effects. As to prove that, the max amount of effects (not those via weapon trade) you can keep on the item is 5.
Unfortunately, your template is missing quite a lot of things out of there, but still nice job doing so. Some of your unknowns are:
- time
- can storage
iUnkn1/2 are clan contributions. First was for clan that item "belongs" to (like you could get more contrib by donating sword to WT contrib guy than you'd get from HD - at least it worked with old items, not sure about now)
Just went and looked into it a bit more and it does seem that the data there refers to some sort of item effect. A little weird how they made item bonuses 'effects', rather than some sort of visual effect.
Just went and looked into it a bit more and it does seem that the data there refers to some sort of item effect. A little weird how they made item bonuses 'effects', rather than some sort of visual effect.
Feel free to post a revised version for everyone.
Item effects are the same as those used by skills/buffs, that's how it works. You'd get more infos after analyzing skill table (unfortunately, I lost the source). There are two types of effects: Eff and Add. Not sure which ones are which.
There are no visual effects info in item table, afaik. The only effect visible on weapon is refinement, stored in another file (would be nice to manipulate it as well; managed to get 2/3 of table, but couldn't get hands on last part).
There are no visual effects info in item table, afaik. The only effect visible on weapon is refinement, stored in another file (would be nice to manipulate it as well; managed to get 2/3 of table, but couldn't get hands on last part).
switch ( objType2 )
{
case WEAPON_SHORT:
switch ( objType3 )
{
case WEAPON_SWORD:
case WEAPON_CLUB:
case WEAPON_SECRET:
case WEAPON_AXE:
switch ( refinementLevel )
{
case 3:
return 400;
case 4:
return 401;
case 5:
return 402;
case 6:
return 403;
case 7:
return 404;
case 8:
return 405;
case 9:
return 406;
case 10:
return 436;
case 11:
return 437;
case 12:
return 438;
case 13:
return 451;
case 14:
return 452;
case 15:
return 453;
case 16:
return 466;
case 17:
return 467;
default:
return 0;
}
case WEAPON_KNIFE:
switch ( refinementLevel )
{
case 3:
return 422;
case 4:
return 423;
case 5:
return 424;
case 6:
return 425;
case 7:
return 426;
case 8:
return 427;
case 9:
return 428;
case 10:
return 445;
case 11:
return 446;
case 12:
return 447;
case 13:
return 460;
case 14:
return 461;
case 15:
return 462;
case 16:
return 472;
case 17:
return 473;
default:
return 0;
}
case WEAPON_FIST:
switch ( refinementLevel )
{
case 3:
return 407;
case 4:
return 408;
case 5:
return 409;
case 6:
return 410;
case 7:
return 411;
case 8:
return 412;
case 9:
return 413;
case 10:
return 439;
case 11:
return 440;
case 12:
return 441;
case 13:
return 454;
case 14:
return 455;
case 15:
return 456;
case 16:
return 468;
case 17:
return 469;
default:
return 0;
}
case WEAPON_RING:
switch ( refinementLevel )
{
case 3:
return 414;
case 4:
return 415;
case 5:
return 416;
case 6:
return 417;
case 7:
return 418;
case 8:
return 419;
case 9:
return 420;
case 10:
return 442;
case 11:
return 443;
case 12:
return 444;
case 13:
return 457;
case 14:
return 458;
case 15:
return 459;
case 16:
return 470;
case 17:
return 471;
default:
return 0;
}
}
case WEAPON_LONG:
switch ( objType3 )
{
case WEAPON_GLAIVE:
case WEAPON_SPEAR:
case WEAPON_STAFF:
switch ( refinementLevel )
{
case 3:
return 429;
case 4:
return 430;
case 5:
return 431;
case 6:
return 432;
case 7:
return 433;
case 8:
return 434;
case 9:
return 435;
case 10:
return 448;
case 11:
return 449;
case 12:
return 450;
case 13:
return 463;
case 14:
return 464;
case 15:
return 465;
case 16:
return 474;
case 17:
return 475;
default:
return 0;
}
}
case WEAPON_SPECIAL:
switch ( objType3 )
{
case WEAPON_SERING:
switch ( refinementLevel )
{
case 0: // this is probably bracers
case 1: // because they glow at
case 2: // 0 ~ 2 refinement lvls
return 421;
case 3:
return 407;
case 4:
return 408;
case 5:
return 409;
case 6:
return 410;
case 7:
return 411;
case 8:
return 412;
case 9:
return 413;
case 10:
return 439;
case 11:
return 440;
case 12:
return 441;
case 13:
return 454;
case 14:
return 455;
case 15:
return 456;
case 16:
return 468;
case 17:
return 469;
default:
return 0;
}
}
default:
return 0;
}
The item_table doesn't exactly have the info in it, however they use some info in it to obtain the correct ( hard coded ) effect ID values.
What do you plan on doing with them if I were to release the structure for the .XES files?
Probably nothing. I'm not involved in any 9D project for now. Though, would be nice to see if anyone would be able to create completely fresh and unique effects.
[Release] Reading map_XXXX.xns 10/07/2017 - 9Dragons - 2 Replies This is the file structure for the .xns map files. With this information you should be able to change which NPC is spawned at which location. I haven't tested it, but I'm sure someone will be able to find a use for this. Please feel free to let anyone know what you've successfully changed with this information.
typedef struct
{
int objectIndex;
struct
{
float m; // float m
} D3DMATRIX; // no multidimensional array support in 010 editor :(
[Release] Reading monster_ref.bmo 02/03/2017 - 9Dragons - 1 Replies This is the structure for the monster_ref.bmo file. Everything marked with the comment "// not a monster attribute" means that it is ignored on the client. I believe it's only used on the server. You cannot change the text of "toolName" on the server monster_ref.bmo unless you modify the server executable, since it looks for "EOD Monster Ref" or it fails to load.
typedef struct
{
char toolName;
short version1;
short version2;
SYSTEMTIME systemTime; // SYSTEMTIME is...
[Release] Reading map_XXXX.xzi 01/26/2017 - 9Dragons - 0 Replies This is the file structure for reading the map .xzi files. With this information you should be able to change what areas gates will lead to for each map.
typedef struct
{
float x;
float z;
} XAREA_POINTSTRUCT;
typedef struct
{
Item_table.bit 12/18/2016 - 9Dragons - 4 Replies anyone has any idea how to open this kind of file?