Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > 9Dragons
You last visited: Today at 07:45

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Reading item_table.bit

Discussion on [Release] Reading item_table.bit within the 9Dragons forum part of the MMORPGs category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2006
Posts: 102
Received Thanks: 125
[Release] Reading item_table.bit

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;
010 Editor Template attached below.
Attached Files
File Type: zip itemTable_template.zip (3.0 KB, 456 views)
Plastic is offline  
Thanks
3 Users
Old 01/31/2017, 10:29   #2


 
Adek's Avatar
 
elite*gold: 37
Join Date: Jan 2009
Posts: 2,545
Received Thanks: 1,036
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)
Adek is offline  
Old 01/31/2017, 14:07   #3
 
elite*gold: 0
Join Date: Aug 2006
Posts: 102
Received Thanks: 125
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.
Plastic is offline  
Thanks
1 User
Old 01/31/2017, 15:00   #4


 
Adek's Avatar
 
elite*gold: 37
Join Date: Jan 2009
Posts: 2,545
Received Thanks: 1,036
Quote:
Originally Posted by Plastic View Post
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).
Adek is offline  
Thanks
1 User
Old 02/01/2017, 03:15   #5
 
elite*gold: 0
Join Date: Aug 2006
Posts: 102
Received Thanks: 125
Quote:
Originally Posted by adek1994 View Post
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).
What files are you talking about?

They use the objType2 and objType3 with enums:

Code:
enum SecondCategory_Weapon
{
	WEAPON_SHORT = 0,
	WEAPON_LONG,
	WEAPON_SOFT,
	WEAPON_HIDDEN,
	WEAPON_MUSICAL,
	WEAPON_SPECIAL
};

enum ThirdCategory_Weapon_Short
{
	WEAPON_SWORD = 0,
	WEAPON_KNIFE,
	WEAPON_CLUB,
	WEAPON_HIT,
	WEAPON_FIST,
	WEAPON_SECRET,
	WEAPON_AXE,
	WEAPON_RING
};

enum ThirdCategory_Weapon_Long
{
	WEAPON_GLAIVE = 0,
	WEAPON_SPEAR,
	WEAPON_STAFF,
};

enum ThirdCategory_Weapon_Soft
{
	WEAPON_STEELWHIP = 0,
	WEAPON_HAMMER,
	WEAPON_CHAIN
};

enum ThirdCategory_Weapon_Hidden
{
	WEAPON_DART = 0,
	WEAPON_DAGGER,
	WEAPON_JAVELIN,
	WEAPON_NEEDLE,
	WEAPON_ARROWLAUNCHER,
	WEAPON_MINE
};

enum ThirdCategory_Weapon_Musical
{
	WEAPON_RYUNG = 0,
	WEAPON_GO,
	WEAPON_SO,
	WEAPON_KUEM,
	WEAPON_JUCK
};

enum ThirdCategory_Weapon_Special
{
	WEAPON_SERING = 0
};
To then case switch between

Code:
	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.
Plastic is offline  
Old 02/01/2017, 11:08   #6


 
Adek's Avatar
 
elite*gold: 37
Join Date: Jan 2009
Posts: 2,545
Received Thanks: 1,036
Quote:
Originally Posted by Plastic View Post
What files are you talking about?

They use the objType2 and objType3 with enums:

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.
VISUALEFFECT.XES with MR/TR_VISUALEFFECT files. Those are the ones that set the refinement effects afaik.
Adek is offline  
Old 02/06/2017, 02:56   #7
 
elite*gold: 0
Join Date: Aug 2006
Posts: 102
Received Thanks: 125
Quote:
Originally Posted by adek1994 View Post
VISUALEFFECT.XES with MR/TR_VISUALEFFECT files. Those are the ones that set the refinement effects afaik.
What do you plan on doing with them if I were to release the structure for the .XES files?
Plastic is offline  
Thanks
1 User
Old 02/06/2017, 09:46   #8


 
Adek's Avatar
 
elite*gold: 37
Join Date: Jan 2009
Posts: 2,545
Received Thanks: 1,036
Quote:
Originally Posted by Plastic View Post
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.
Adek is offline  
Old 12/12/2022, 12:40   #9
 
elite*gold: 0
Join Date: Dec 2022
Posts: 3
Received Thanks: 0
This template doesnt work with awaken now. Have they changed struct of item_table.bit??
tvhung is offline  
Reply


Similar Threads Similar Threads
[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?
Tool for edit monster_ref.bmo & item_table.bit
12/01/2016 - 9Dragons - 0 Replies
Hello, Can someone have a tool to edit those files? Thanks



All times are GMT +1. The time now is 07:46.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.