Yardım Tılsım ve Kemer takınca gözükmüyorlar

  • Konuyu açan Konuyu açan classone45
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 105
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

classone45

Üye
Üye
Mesaj
103
Çözümler
3
Beğeni
6
Puan
434
Ticaret Puanı
0
Tılsım ve Kemer takınca gözükmüyorlar ama özellikler geliyor bunu nasıl düzenlerim
 
gamelib / ItemData.h
userinterface / GameType.h
length.h

dosyalarını konuya dahil edermisin
birde en son ne işlem yaptın ?
filesi kurdugumdan beri böyle yaptığım işlem dahilinde olmadı

ıtemdata.h:
Genişlet Daralt Kopyala
#pragma once

//        Icon, Model (droped on ground), Game Data

#include "../eterLib/GrpSubImage.h"
#include "../eterGrnLib/Thing.h"
#include "GameLibDefines.h"
#include "../UserInterface/Locale_inc.h"


class CItemData
{
    public:
        enum
        {
            ITEM_NAME_MAX_LEN = 24,
            ITEM_LIMIT_MAX_NUM = 2,
            ITEM_VALUES_MAX_NUM = 6,
            ITEM_SMALL_DESCR_MAX_LEN = 256,
            ITEM_APPLY_MAX_NUM = 3,
            ITEM_SOCKET_MAX_NUM = 3,
#ifdef ENABLE_SHINING_SYSTEM
            ITEM_SHINING_MAX_COUNT = 3,
#endif
#ifdef __UNIMPLEMENTED__
            ITEM_PICK_MAX_LEVEL = 9,
            ITEM_ROD_MAX_LEVEL = 20,
#endif
        };

#ifdef ENABLE_SOULBIND_SYSTEM
        enum ESealBind
        {
            SEAL_BIND_FLAG_DROP,
            SEAL_BIND_FLAG_UPGRADE,
            SEAL_BIND_FLAG_SELL,
            SEAL_BIND_FLAG_ENCHANT,
            SEAL_BIND_FLAG_TRADE,
            SEAL_BIND_FLAG_UNSEAL,
            SEAL_BIND_FLAG_MAX,
        };

        enum ESealDate
        {
            SEAL_DATE_DEFAULT_TIMESTAMP = 0, // 2015/11/12 it's -1
            SEAL_DATE_UNLIMITED_TIMESTAMP = -1, // 2015/11/12 it doesn't exist
        };

        enum ESealItem
        {
            SEAL_ITEM_BINDING_VNUM = 50263,
            SEAL_ITEM_UNBINDING_VNUM = 50264,
        };
#endif

#ifdef __UNIMPLEMENTED__
        enum EPetData
        {
            EGG_USE_SUCCESS = 0,
            EGG_USE_FAILED_TIMEOVER = 2,
            EGG_USE_FAILED_BECAUSE_NAME = 1,
            GROWTH_PET_ITEM_USE_COOL_TIME = 1,
            PET_EGG_USE_TRUE = 0,
            PET_EGG_USE_FAILED_BECAUSE_TRADING = 1,
            PET_EGG_USE_FAILED_BECAUSE_SHOP_OPEN = 2,
            PET_EGG_USE_FAILED_BECAUSE_MALL_OPEN = 3,
            PET_EGG_USE_FAILED_BECAUSE_SAFEBOX_OPEN = 4,
            PET_HATCHING_MONEY = 100000,
            PET_NAME_MAX_SIZE = 20,
            PET_NAME_MIN_SIZE = 4,
        };
#endif

        enum EItemType
        {
            ITEM_TYPE_NONE,                    //0
            ITEM_TYPE_WEAPON,
            ITEM_TYPE_ARMOR,
            ITEM_TYPE_USE,
            ITEM_TYPE_AUTOUSE,                //4
            ITEM_TYPE_MATERIAL,                //5
            ITEM_TYPE_SPECIAL,
            ITEM_TYPE_TOOL,                    //7
            ITEM_TYPE_LOTTERY,
            ITEM_TYPE_ELK,
            ITEM_TYPE_METIN,                //10
            ITEM_TYPE_CONTAINER,            //11
            ITEM_TYPE_FISH,
            ITEM_TYPE_ROD,                    //13
            ITEM_TYPE_RESOURCE,                //14
            ITEM_TYPE_CAMPFIRE,                //15
            ITEM_TYPE_UNIQUE,                //16
            ITEM_TYPE_SKILLBOOK,            //17
            ITEM_TYPE_QUEST,                //18
            ITEM_TYPE_POLYMORPH,            //19
            ITEM_TYPE_TREASURE_BOX,
            ITEM_TYPE_TREASURE_KEY,
            ITEM_TYPE_SKILLFORGET,            //22
            ITEM_TYPE_GIFTBOX,                //23
            ITEM_TYPE_PICK,                    //24
            ITEM_TYPE_HAIR,
            ITEM_TYPE_TOTEM,
            ITEM_TYPE_BLEND,
            ITEM_TYPE_COSTUME,
            ITEM_TYPE_DS,
            ITEM_TYPE_SPECIAL_DS,
            ITEM_TYPE_EXTRACT,
            ITEM_TYPE_SECONDARY_COIN,
            ITEM_TYPE_RING,
            ITEM_TYPE_BELT,
#ifdef EFFECTRENDER_SYSTEM
        ITEM_TYPE_EFFECT,
#endif
#ifdef __UNIMPLEMENTED__
            ITEM_TYPE_PET,                        //35
            ITEM_TYPE_MEDIUM,                    //36
#endif

            ITEM_TYPE_MAX_NUM,
        };


        enum EResourceSubTypes
        {
            RESOURCE_FISHBONE = 0,
            RESOURCE_WATERSTONEPIECE = 1,
            RESOURCE_WATERSTONE = 2,
            RESOURCE_BLOOD_PEARL = 3,
            RESOURCE_BLUE_PEARL = 4,
            RESOURCE_WHITE_PEARL = 5,
            RESOURCE_BUCKET = 6,
            RESOURCE_CRYSTAL = 7,
            RESOURCE_GEM = 8,
            RESOURCE_STONE = 9,
            RESOURCE_METIN = 10,
            RESOURCE_ORE = 11,
#ifdef ENABLE_AURA_SYSTEM
            RESOURCE_AURA,
#endif
        };

#ifdef __UNIMPLEMENTED__
        enum EPetSubTypes
        {
            PET_EGG = 0,
            PET_UPBRINGING = 1,
            PET_BAG = 2,
            PET_FEEDSTUFF = 3,
            PET_SKILL = 4,
            PET_SKILL_DEL_BOOK = 5,
        };

        enum EMediumSubTypes
        {
            MEDIUM_MOVE_COSTUME_ATTR = 0,
        };
#endif

        enum EWeddingItem
        {
            WEDDING_TUXEDO1 = 11901,
            WEDDING_TUXEDO2 = 11902,
            WEDDING_BRIDE_DRESS1 = 11903,
            WEDDING_BRIDE_DRESS2 = 11904,
            WEDDING_TUXEDO3 = 11911,
            WEDDING_TUXEDO4 = 11912,
            WEDDING_BRIDE_DRESS3 = 11913,
            WEDDING_BRIDE_DRESS4 = 11914,
            WEDDING_BOUQUET1 = 50201,
            WEDDING_BOUQUET2 = 50202,
        };

        enum EWeaponSubTypes
        {
            WEAPON_SWORD, //0
            WEAPON_DAGGER,
            WEAPON_BOW, //2
            WEAPON_TWO_HANDED, //3
            WEAPON_BELL, //4
            WEAPON_FAN, //5
            WEAPON_ARROW, //6
            WEAPON_MOUNT_SPEAR, //7
#ifdef ENABLE_WOLFMAN_CHARACTER
            WEAPON_CLAW = 8, //8
#endif
#ifdef ENABLE_QUIVER_SYSTEM
            WEAPON_QUIVER = 9, //9
#endif
#ifdef __UNIMPLEMENTED__
            WEAPON_BOUQUET = 10, //10
#endif
            WEAPON_NUM_TYPES, //11 2015/11/12

            WEAPON_NONE = WEAPON_NUM_TYPES+1,
        };

        enum EMaterialSubTypes
        {
            MATERIAL_LEATHER,
            MATERIAL_BLOOD,
            MATERIAL_ROOT,
            MATERIAL_NEEDLE,
            MATERIAL_JEWEL,
            MATERIAL_DS_REFINE_NORMAL,
            MATERIAL_DS_REFINE_BLESSED,
            MATERIAL_DS_REFINE_HOLLY,
        };

        enum EArmorSubTypes
        {
            ARMOR_BODY,
            ARMOR_HEAD,
            ARMOR_SHIELD,
            ARMOR_WRIST,
            ARMOR_FOOTS,
            ARMOR_NECK,
            ARMOR_EAR,
#ifdef ENABLE_PENDANT_SYSTEM
            ARMOR_PENDANT,
#endif
            ARMOR_NUM_TYPES
        };

        enum ECostumeSubTypes
        {
            COSTUME_BODY,
            COSTUME_HAIR,
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
            COSTUME_MOUNT    = 2,        //2
#endif
#ifdef ENABLE_ACCE_SYSTEM
            COSTUME_ACCE    = 3,        //3
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
            COSTUME_WEAPON    = 4,        //4
#endif
#ifdef ENABLE_AURA_SYSTEM
            COSTUME_AURA    = 5,
#endif
#ifdef ENABLE_EFFECT_SYSTEM
            USE_EFFECT,
#endif
            COSTUME_NUM_TYPES,
        };

        enum EUseSubTypes
        {
            USE_POTION,                    // 0
            USE_TALISMAN,
            USE_TUNING,
            USE_MOVE,
            USE_TREASURE_BOX,
            USE_MONEYBAG,
            USE_BAIT,
            USE_ABILITY_UP,
            USE_AFFECT,
            USE_CREATE_STONE,
            USE_SPECIAL,                // 10
            USE_POTION_NODELAY,
            USE_CLEAR,
            USE_INVISIBILITY,
            USE_DETACHMENT,
            USE_BUCKET,
            USE_POTION_CONTINUE,
            USE_CLEAN_SOCKET,
            USE_CHANGE_ATTRIBUTE,
            USE_ADD_ATTRIBUTE,
            USE_ADD_ACCESSORY_SOCKET,    // 20
            USE_PUT_INTO_ACCESSORY_SOCKET,
            USE_ADD_ATTRIBUTE2,
            USE_RECIPE,
            USE_CHANGE_ATTRIBUTE2,
            USE_BIND,
            USE_UNBIND,
            USE_TIME_CHARGE_PER,
            USE_TIME_CHARGE_FIX,                // 28
            USE_PUT_INTO_BELT_SOCKET,
            USE_PUT_INTO_RING_SOCKET,
#ifdef ENABLE_USE_COSTUME_ATTR
            USE_CHANGE_COSTUME_ATTR,            // 31
            USE_RESET_COSTUME_ATTR,                // 32
#endif
#ifdef ENABLE_AURA_SYSTEM
            USE_PUT_INTO_AURA_SOCKET,            // xx AURA_BOOSTER
#endif
        };

        enum EDragonSoulSubType
        {
            DS_SLOT1,
            DS_SLOT2,
            DS_SLOT3,
            DS_SLOT4,
            DS_SLOT5,
            DS_SLOT6,
            DS_SLOT_NUM_TYPES = 6,
        };

        enum EMetinSubTypes
        {
            METIN_NORMAL,
            METIN_GOLD,
        };

        enum ELimitTypes
        {
            LIMIT_NONE,

            LIMIT_LEVEL,
            LIMIT_STR,
            LIMIT_DEX,
            LIMIT_INT,
            LIMIT_CON,
            LIMIT_PCBANG,

            LIMIT_REAL_TIME,

            LIMIT_REAL_TIME_START_FIRST_USE,

            LIMIT_TIMER_BASED_ON_WEAR,

            LIMIT_MAX_NUM
        };

        enum EItemAntiFlag
        {
            ITEM_ANTIFLAG_FEMALE        = (1 << 0),
            ITEM_ANTIFLAG_MALE          = (1 << 1),
            ITEM_ANTIFLAG_WARRIOR       = (1 << 2),
            ITEM_ANTIFLAG_ASSASSIN      = (1 << 3),
            ITEM_ANTIFLAG_SURA          = (1 << 4),
            ITEM_ANTIFLAG_SHAMAN        = (1 << 5),
            ITEM_ANTIFLAG_GET           = (1 << 6),
            ITEM_ANTIFLAG_DROP          = (1 << 7),
            ITEM_ANTIFLAG_SELL          = (1 << 8),
            ITEM_ANTIFLAG_EMPIRE_A      = (1 << 9),
            ITEM_ANTIFLAG_EMPIRE_B      = (1 << 10),
            ITEM_ANTIFLAG_EMPIRE_R      = (1 << 11),
            ITEM_ANTIFLAG_SAVE          = (1 << 12),
            ITEM_ANTIFLAG_GIVE          = (1 << 13),
            ITEM_ANTIFLAG_PKDROP        = (1 << 14),
            ITEM_ANTIFLAG_STACK         = (1 << 15),
            ITEM_ANTIFLAG_MYSHOP        = (1 << 16),
            ITEM_ANTIFLAG_SAFEBOX        = (1 << 17),
#ifdef ENABLE_WOLFMAN_CHARACTER
            ITEM_ANTIFLAG_WOLFMAN        = (1 << 18),
#endif
        };

        enum EItemFlag
        {
            ITEM_FLAG_REFINEABLE        = (1 << 0),
            ITEM_FLAG_SAVE              = (1 << 1),
            ITEM_FLAG_STACKABLE         = (1 << 2),
            ITEM_FLAG_COUNT_PER_1GOLD   = (1 << 3),
            ITEM_FLAG_SLOW_QUERY        = (1 << 4),
            ITEM_FLAG_RARE              = (1 << 5),
            ITEM_FLAG_UNIQUE            = (1 << 6),
            ITEM_FLAG_MAKECOUNT            = (1 << 7),
            ITEM_FLAG_IRREMOVABLE        = (1 << 8),
            ITEM_FLAG_CONFIRM_WHEN_USE    = (1 << 9),
            ITEM_FLAG_QUEST_USE         = (1 << 10),
            ITEM_FLAG_QUEST_USE_MULTIPLE= (1 << 11),
            ITEM_FLAG_UNUSED03          = (1 << 12),    // UNUSED03
            ITEM_FLAG_LOG               = (1 << 13),
            ITEM_FLAG_APPLICABLE        = (1 << 14),
        };

        enum EWearPositions
        {
            WEAR_BODY,          // 0
            WEAR_HEAD,          // 1
            WEAR_FOOTS,         // 2
            WEAR_WRIST,         // 3
            WEAR_WEAPON,        // 4
            WEAR_NECK,          // 5
            WEAR_EAR,           // 6
            WEAR_UNIQUE1,       // 7
            WEAR_UNIQUE2,       // 8
            WEAR_ARROW,         // 9
            WEAR_SHIELD,        // 10

            WEAR_ABILITY1,  // 11
            WEAR_ABILITY2,  // 12
            WEAR_ABILITY3,  // 13
            WEAR_ABILITY4,  // 14
            WEAR_ABILITY5,  // 15
            WEAR_ABILITY6,  // 16
            WEAR_ABILITY7,  // 17
            WEAR_ABILITY8,  // 18
            WEAR_COSTUME_BODY,    // 19
            WEAR_COSTUME_HAIR,    // 20
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
            WEAR_COSTUME_MOUNT,// 21
#endif
#ifdef ENABLE_ACCE_SYSTEM
            WEAR_COSTUME_ACCE,// 22
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
            WEAR_COSTUME_WEAPON,// 23
#endif
#ifdef ENABLE_AURA_SYSTEM
            WEAR_COSTUME_AURA,// 24
#endif
            WEAR_RING1,// 25
            WEAR_RING2,// 26
            WEAR_BELT,// 27

#ifdef ENABLE_PENDANT_SYSTEM
            WEAR_PENDANT,// 28
#endif
#ifdef ENABLE_EFFECT_SYSTEM
            WEAR_EFFECT_ARMOR,
            WEAR_EFFECT_WEAPON,
#endif

            WEAR_MAX_NUM = 32,
        };

        enum EItemWearableFlag
        {
        WEARABLE_BODY                        = (1 << 0),
        WEARABLE_HEAD                        = (1 << 1),
        WEARABLE_FOOTS                        = (1 << 2),
        WEARABLE_WRIST                        = (1 << 3),
        WEARABLE_WEAPON                        = (1 << 4),
        WEARABLE_NECK                        = (1 << 5),
        WEARABLE_EAR                        = (1 << 6),
        WEARABLE_UNIQUE                        = (1 << 7),
        WEARABLE_SHIELD                        = (1 << 8),
        WEARABLE_ARROW                        = (1 << 9),
        WEARABLE_ABILITY                    = (1 << 10),
        WEARABLE_COSTUME_BODY                = (1 << 11),
        WEARABLE_COSTUME_HAIR                = (1 << 12),
        WEARABLE_COSTUME_MOUNT                = (1 << 13),
        WEARABLE_COSTUME_ACCE                = (1 << 14),
        WEARABLE_COSTUME_WEAPON                = (1 << 15),
#ifdef ENABLE_PENDANT_SYSTEM
        WEARABLE_PENDANT                    = (1 << 16),
#endif
#ifdef ENABLE_EFFECT_SYSTEM
            WEARABLE_EFFECT_ARMOR = (1 << 17),
            WEARABLE_EFFECT_WEAPON = (1 << 18),
#endif
        };

        enum EApplyTypes
        {
            APPLY_NONE,                 // 0
            APPLY_MAX_HP,               // 1
            APPLY_MAX_SP,               // 2
            APPLY_CON,                  // 3
            APPLY_INT,                  // 4
            APPLY_STR,                  // 5
            APPLY_DEX,                  // 6
            APPLY_ATT_SPEED,            // 7
            APPLY_MOV_SPEED,            // 8
            APPLY_CAST_SPEED,           // 9
            APPLY_HP_REGEN,             // 10
            APPLY_SP_REGEN,             // 11
            APPLY_POISON_PCT,           // 12
            APPLY_STUN_PCT,             // 13
            APPLY_SLOW_PCT,             // 14
            APPLY_CRITICAL_PCT,         // 15
            APPLY_PENETRATE_PCT,        // 16
            APPLY_ATTBONUS_HUMAN,       // 17
            APPLY_ATTBONUS_ANIMAL,      // 18
            APPLY_ATTBONUS_ORC,         // 19
            APPLY_ATTBONUS_MILGYO,      // 20
            APPLY_ATTBONUS_UNDEAD,      // 21
            APPLY_ATTBONUS_DEVIL,       // 22
            APPLY_STEAL_HP,             // 23
            APPLY_STEAL_SP,             // 24
            APPLY_MANA_BURN_PCT,        // 25
            APPLY_DAMAGE_SP_RECOVER,    // 26
            APPLY_BLOCK,                // 27
            APPLY_DODGE,                // 28
            APPLY_RESIST_SWORD,         // 29
            APPLY_RESIST_TWOHAND,       // 30
            APPLY_RESIST_DAGGER,        // 31
            APPLY_RESIST_BELL,          // 32
            APPLY_RESIST_FAN,           // 33
            APPLY_RESIST_BOW,           // 34
            APPLY_RESIST_FIRE,          // 35
            APPLY_RESIST_ELEC,          // 36
            APPLY_RESIST_MAGIC,         // 37
            APPLY_RESIST_WIND,          // 38
            APPLY_REFLECT_MELEE,        // 39
            APPLY_REFLECT_CURSE,        // 40
            APPLY_POISON_REDUCE,        // 41
            APPLY_KILL_SP_RECOVER,      // 42
            APPLY_EXP_DOUBLE_BONUS,     // 43
            APPLY_GOLD_DOUBLE_BONUS,    // 44
            APPLY_ITEM_DROP_BONUS,      // 45
            APPLY_POTION_BONUS,         // 46
            APPLY_KILL_HP_RECOVER,      // 47
            APPLY_IMMUNE_STUN,          // 48
            APPLY_IMMUNE_SLOW,          // 49
            APPLY_IMMUNE_FALL,          // 50
            APPLY_SKILL,                // 51
            APPLY_BOW_DISTANCE,         // 52
            APPLY_ATT_GRADE_BONUS,            // 53
            APPLY_DEF_GRADE_BONUS,            // 54
            APPLY_MAGIC_ATT_GRADE,      // 55
            APPLY_MAGIC_DEF_GRADE,      // 56
            APPLY_CURSE_PCT,            // 57
            APPLY_MAX_STAMINA,            // 58
            APPLY_ATT_BONUS_TO_WARRIOR, // 59
            APPLY_ATT_BONUS_TO_ASSASSIN,// 60
            APPLY_ATT_BONUS_TO_SURA,    // 61
            APPLY_ATT_BONUS_TO_SHAMAN,  // 62
            APPLY_ATT_BONUS_TO_MONSTER, // 63
            APPLY_MALL_ATTBONUS,
            APPLY_MALL_DEFBONUS,
            APPLY_MALL_EXPBONUS,
            APPLY_MALL_ITEMBONUS,
            APPLY_MALL_GOLDBONUS,
            APPLY_MAX_HP_PCT,
            APPLY_MAX_SP_PCT,
            APPLY_SKILL_DAMAGE_BONUS,
            APPLY_NORMAL_HIT_DAMAGE_BONUS,
            APPLY_SKILL_DEFEND_BONUS,
            APPLY_NORMAL_HIT_DEFEND_BONUS,
            APPLY_EXTRACT_HP_PCT,        //75
            APPLY_PC_BANG_EXP_BONUS,        //76
            APPLY_PC_BANG_DROP_BONUS,        //77
            APPLY_RESIST_WARRIOR,            //78
            APPLY_RESIST_ASSASSIN ,            //79
            APPLY_RESIST_SURA,                //80
            APPLY_RESIST_SHAMAN,            //81
            APPLY_ENERGY,                    //82
            APPLY_DEF_GRADE,
            APPLY_COSTUME_ATTR_BONUS,
            APPLY_MAGIC_ATTBONUS_PER,
            APPLY_MELEE_MAGIC_ATTBONUS_PER,

            APPLY_RESIST_ICE,
            APPLY_RESIST_EARTH,
            APPLY_RESIST_DARK,

            APPLY_ANTI_CRITICAL_PCT,
            APPLY_ANTI_PENETRATE_PCT,

#ifdef ENABLE_WOLFMAN_CHARACTER
            APPLY_BLEEDING_REDUCE            ,    //92
            APPLY_BLEEDING_PCT                ,    //93
            APPLY_ATT_BONUS_TO_WOLFMAN        ,    //94
            APPLY_RESIST_WOLFMAN            ,    //95
            APPLY_RESIST_CLAW                ,    //96
#endif

#ifdef ENABLE_ACCE_SYSTEM
            APPLY_ACCEDRAIN_RATE            ,    //97
#endif

#ifdef ENABLE_MAGIC_REDUCTION_SYSTEM
            APPLY_RESIST_MAGIC_REDUCTION    ,    //98
#endif
                APPLY_MOUNT,
#ifdef ENABLE_PENDANT_SYSTEM
                APPLY_ENCHANT_FIRE,
                APPLY_ENCHANT_ICE,
                APPLY_ENCHANT_EARTH,
                APPLY_ENCHANT_DARK,
                APPLY_ENCHANT_WIND,
                APPLY_ENCHANT_ELECT,
                APPLY_RESIST_HUMAN,
                APPLY_ATTBONUS_SWORD,
                APPLY_ATTBONUS_TWOHAND,
                APPLY_ATTBONUS_DAGGER,
                APPLY_ATTBONUS_BELL,
                APPLY_ATTBONUS_FAN,
                APPLY_ATTBONUS_BOW,
#ifdef ENABLE_WOLFMAN_CHARACTER
                APPLY_ATTBONUS_CLAW,
#endif // ENABLE_WOLFMAN_CHARACTER
                APPLY_ATTBONUS_CZ,
                APPLY_ATTBONUS_DESERT,
                APPLY_ATTBONUS_INSECT,
#endif
#ifdef ENABLE_EXTRA_APPLY_BONUS
                APPLY_ATTBONUS_STONE,
                APPLY_ATTBONUS_BOSS,
                APPLY_ATTBONUS_ELEMENTS,
                APPLY_ENCHANT_ELEMENTS,
                APPLY_ATTBONUS_CHARACTERS,
                APPLY_ENCHANT_CHARACTERS,
                APPLY_ATTBONUS_RAZADOR,
                APPLY_ATTBONUS_NEMERE,
                APPLY_ATTBONUS_LUCIFER,
                APPLY_ATTBONUS_BLUE_DRAGON,
                APPLY_ATTBONUS_RED_DRAGON,
                APPLY_ATTBONUS_AZRAEL,
#endif

            MAX_APPLY_NUM                    = 130
        };

    enum EPointTypes
    {
        POINT_NONE                            = 0,   
        POINT_LEVEL                            = 1,   
        POINT_VOICE                            = 2,   
        POINT_EXP                            = 3, 
        POINT_NEXT_EXP                        = 4, 
        POINT_HP                            = 5, 
        POINT_MAX_HP                        = 6, 
        POINT_SP                            = 7, 
        POINT_MAX_SP                        = 8, 
        POINT_STAMINA                        = 9, 
        POINT_MAX_STAMINA                    = 10,
        POINT_GOLD                            = 11,
        POINT_ST                            = 12,
        POINT_HT                            = 13,
        POINT_DX                            = 14,
        POINT_IQ                            = 15,
        POINT_DEF_GRADE                        = 16,
        POINT_ATT_SPEED                        = 17,
        POINT_ATT_GRADE                        = 18,
        POINT_MOV_SPEED                        = 19,
        POINT_CLIENT_DEF_GRADE                = 20,
        POINT_CASTING_SPEED                    = 21,
        POINT_MAGIC_ATT_GRADE                = 22,
        POINT_MAGIC_DEF_GRADE                = 23,
        POINT_EMPIRE_POINT                    = 24,
        POINT_LEVEL_STEP                    = 25,
        POINT_STAT                            = 26,
        POINT_SUB_SKILL                        = 27,
        POINT_SKILL                            = 28,   
        POINT_WEAPON_MIN                    = 29,   
        POINT_WEAPON_MAX                    = 30,   
        POINT_PLAYTIME                        = 31,   
        POINT_HP_REGEN                        = 32,   
        POINT_SP_REGEN                        = 33,   
        POINT_BOW_DISTANCE                    = 34,   
        POINT_HP_RECOVERY                    = 35,   
        POINT_SP_RECOVERY                    = 36,   
        POINT_POISON_PCT                    = 37,   
        POINT_STUN_PCT                        = 38,   
        POINT_SLOW_PCT                        = 39,   
        POINT_CRITICAL_PCT                    = 40,   
        POINT_PENETRATE_PCT                    = 41,   
        POINT_CURSE_PCT                        = 42,   
        POINT_ATTBONUS_HUMAN                = 43,   
        POINT_ATTBONUS_ANIMAL                = 44,   
        POINT_ATTBONUS_ORC                    = 45,   
        POINT_ATTBONUS_MILGYO                = 46,   
        POINT_ATTBONUS_UNDEAD                = 47,   
        POINT_ATTBONUS_DEVIL                = 48,   
        POINT_ATTBONUS_INSECT                = 49,   
        POINT_ATTBONUS_FIRE                    = 50,   
        POINT_ATTBONUS_ICE                    = 51,   
        POINT_ATTBONUS_DESERT                = 52,   
        POINT_ATTBONUS_MONSTER                = 53,   
        POINT_ATTBONUS_WARRIOR                = 54,   
        POINT_ATTBONUS_ASSASSIN                = 55,   
        POINT_ATTBONUS_SURA                    = 56,   
        POINT_ATTBONUS_SHAMAN                = 57,   
        POINT_ATTBONUS_TREE                    = 58,   
        POINT_RESIST_WARRIOR                = 59,   
        POINT_RESIST_ASSASSIN                = 60,   
        POINT_RESIST_SURA                    = 61,   
        POINT_RESIST_SHAMAN                    = 62,   
        POINT_STEAL_HP                        = 63,   
        POINT_STEAL_SP                        = 64,   
        POINT_MANA_BURN_PCT                    = 65,   
        POINT_DAMAGE_SP_RECOVER                = 66,   
        POINT_BLOCK                            = 67,   
        POINT_DODGE                            = 68,   
        POINT_RESIST_SWORD                    = 69,   
        POINT_RESIST_TWOHAND                = 70,   
        POINT_RESIST_DAGGER                    = 71,   
        POINT_RESIST_BELL                    = 72,   
        POINT_RESIST_FAN                    = 73,   
        POINT_RESIST_BOW                    = 74,   
        POINT_RESIST_FIRE                    = 75,   
        POINT_RESIST_ELEC                    = 76,   
        POINT_RESIST_MAGIC                    = 77,   
        POINT_RESIST_WIND                    = 78,   
        POINT_REFLECT_MELEE                    = 79,   
        POINT_REFLECT_CURSE                    = 80,   
        POINT_POISON_REDUCE                    = 81,   
        POINT_KILL_SP_RECOVER                = 82,   
        POINT_EXP_DOUBLE_BONUS                = 83,   
        POINT_GOLD_DOUBLE_BONUS                = 84,   
        POINT_ITEM_DROP_BONUS                = 85,   
        POINT_POTION_BONUS                    = 86,   
        POINT_KILL_HP_RECOVERY                = 87,   
        POINT_IMMUNE_STUN                    = 88,   
        POINT_IMMUNE_SLOW                    = 89,   
        POINT_IMMUNE_FALL                    = 90,   
        POINT_PARTY_ATTACKER_BONUS            = 91,   
        POINT_PARTY_TANKER_BONUS            = 92,   
        POINT_ATT_BONUS                        = 93,   
        POINT_DEF_BONUS                        = 94,   
        POINT_ATT_GRADE_BONUS                = 95,   
        POINT_DEF_GRADE_BONUS                = 96,   
        POINT_MAGIC_ATT_GRADE_BONUS            = 97,   
        POINT_MAGIC_DEF_GRADE_BONUS            = 98,   
        POINT_RESIST_NORMAL_DAMAGE            = 99,   
        POINT_HIT_HP_RECOVERY                = 100,   
        POINT_HIT_SP_RECOVERY                = 101,     
        POINT_MANASHIELD                    = 102,   
        POINT_PARTY_BUFFER_BONUS            = 103,   
        POINT_PARTY_SKILL_MASTER_BONUS        = 104,   
        POINT_HP_RECOVER_CONTINUE            = 105,   
        POINT_SP_RECOVER_CONTINUE            = 106,   
        POINT_STEAL_GOLD                    = 107,   
        POINT_POLYMORPH                        = 108,   
        POINT_MOUNT                            = 109,   
        POINT_PARTY_HASTE_BONUS                = 110,   
        POINT_PARTY_DEFENDER_BONUS            = 111,   
        POINT_STAT_RESET_COUNT                = 112,   
        POINT_HORSE_SKILL                    = 113,   
        POINT_MALL_ATTBONUS                    = 114,   
        POINT_MALL_DEFBONUS                    = 115,   
        POINT_MALL_EXPBONUS                    = 116,   
        POINT_MALL_ITEMBONUS                = 117,   
        POINT_MALL_GOLDBONUS                = 118,   
        POINT_MAX_HP_PCT                    = 119,   
        POINT_MAX_SP_PCT                    = 120,   
        POINT_SKILL_DAMAGE_BONUS            = 121,   
        POINT_NORMAL_HIT_DAMAGE_BONUS        = 122,   
        POINT_SKILL_DEFEND_BONUS            = 123,   
        POINT_NORMAL_HIT_DEFEND_BONUS        = 124,   
        POINT_PC_BANG_EXP_BONUS                = 125,       
        POINT_PC_BANG_DROP_BONUS            = 126,       
        POINT_RAMADAN_CANDY_BONUS_EXP        = 127,       
        POINT_ENERGY                        = 128,
        POINT_ENERGY_END_TIME                = 129,
        POINT_COSTUME_ATTR_BONUS            = 130,
        POINT_MAGIC_ATT_BONUS_PER            = 131,
        POINT_MELEE_MAGIC_ATT_BONUS_PER        = 132,
        POINT_RESIST_ICE                    = 133,
        POINT_RESIST_EARTH                    = 134,
        POINT_RESIST_DARK                    = 135,
        POINT_RESIST_CRITICAL                = 136,
        POINT_RESIST_PENETRATE                = 137,
#ifdef ENABLE_ACCE_SYSTEM
        POINT_ACCEDRAIN_RATE                = 138,
#endif
#ifdef ENABLE_MAGIC_REDUCTION_SYSTEM
        POINT_RESIST_MAGIC_REDUCTION        = 139,
#endif
#ifdef ENABLE_PENDANT_SYSTEM
        POINT_APPLY_MOUNT                    = 140,
        POINT_ENCHANT_FIRE                    = 141,
        POINT_ENCHANT_ICE                    = 142,
        POINT_ENCHANT_EARTH                    = 143,
        POINT_ENCHANT_DARK                    = 144,
        POINT_ENCHANT_WIND                    = 145,
        POINT_ENCHANT_ELECT                    = 146,
        POINT_RESIST_HUMAN                    = 147,
        POINT_ATTBONUS_SWORD                = 148,
        POINT_ATTBONUS_TWOHAND                = 149,
        POINT_ATTBONUS_DAGGER                = 150,
        POINT_ATTBONUS_BELL                    = 151,
        POINT_ATTBONUS_FAN                    = 152,
        POINT_ATTBONUS_BOW                    = 153,
        POINT_ATTBONUS_CZ                    = 154,
#endif
#ifdef ENABLE_EXTRA_APPLY_BONUS
        POINT_ATTBONUS_STONE                = 155,
        POINT_ATTBONUS_BOSS                    = 156,
#endif
#ifdef ENABLE_EXTRA_APPLY_BONUS
        POINT_ATTBONUS_ELEMENTS                = 157,
        POINT_ENCHANT_ELEMENTS                = 158,
        POINT_ATTBONUS_CHARACTERS            = 159,
        POINT_ENCHANT_CHARACTERS            = 160,
        POINT_ATTBONUS_RAZADOR                = 161,
        POINT_ATTBONUS_NEMERE                = 162,
        POINT_ATTBONUS_LUCIFER                = 163,
        POINT_ATTBONUS_BLUE_DRAGON            = 164,
        POINT_ATTBONUS_RED_DRAGON            = 165,
        POINT_ATTBONUS_AZRAEL                = 166,
#endif
#ifdef ENABLE_PARTY_RENEWAL
        POINT_PARTY_ATTACKER_MONSTER_BONUS    = 167,
        POINT_PARTY_ATTACKER_STONE_BONUS    = 168,
        POINT_PARTY_ATTACKER_BOSS_BONUS        = 169,
#endif
        POINT_MIN_WEP                        = 200,
        POINT_MAX_WEP                        = 201,
        POINT_MIN_MAGIC_WEP                    = 202,
        POINT_MAX_MAGIC_WEP                    = 203,
        POINT_HIT_RATE                        = 204,

        //POINT_MAX_NUM                        = 255,=>stdafx.h ·Î/
    };

        enum EImmuneFlags
        {
            IMMUNE_PARA         = (1 << 0),
            IMMUNE_CURSE        = (1 << 1),
            IMMUNE_STUN         = (1 << 2),
            IMMUNE_SLEEP        = (1 << 3),
            IMMUNE_SLOW         = (1 << 4),
            IMMUNE_POISON       = (1 << 5),
            IMMUNE_TERROR       = (1 << 6),
        };

#pragma pack(push)
#pragma pack(1)
        typedef struct SItemLimit
        {
            BYTE        bType;
            long        lValue;
        } TItemLimit;

        typedef struct SItemApply
        {
            BYTE        bType;
            long        lValue;
        } TItemApply;

        typedef struct SItemTable_r152
        {
            DWORD       dwVnum;
            char        szName[ITEM_NAME_MAX_LEN + 1];
            char        szLocaleName[ITEM_NAME_MAX_LEN + 1];
            BYTE        bType;
            BYTE        bSubType;

            BYTE        bWeight;
            BYTE        bSize;

            DWORD       dwAntiFlags;
            DWORD       dwFlags;
            DWORD       dwWearFlags;
            DWORD       dwImmuneFlag;

            DWORD       dwIBuyItemPrice;
            DWORD        dwISellItemPrice;

            TItemLimit  aLimits[ITEM_LIMIT_MAX_NUM];
            TItemApply  aApplies[ITEM_APPLY_MAX_NUM];
            long        alValues[ITEM_VALUES_MAX_NUM];
            long        alSockets[ITEM_SOCKET_MAX_NUM];
            DWORD       dwRefinedVnum;
            WORD        wRefineSet;
            BYTE        bAlterToMagicItemPct;
            BYTE        bSpecular;
            BYTE        bGainSocketPct;
        } TItemTable_r152;

        typedef struct SItemTable_r156
        {
            DWORD       dwVnum;
            DWORD       dwVnumRange;
            char        szName[ITEM_NAME_MAX_LEN + 1];
            char        szLocaleName[ITEM_NAME_MAX_LEN + 1];
            BYTE        bType;
            BYTE        bSubType;

            BYTE        bWeight;
            BYTE        bSize;

            DWORD       dwAntiFlags;
            DWORD       dwFlags;
            DWORD       dwWearFlags;
            DWORD       dwImmuneFlag;

            DWORD       dwIBuyItemPrice;
            DWORD        dwISellItemPrice;

            TItemLimit  aLimits[ITEM_LIMIT_MAX_NUM];
            TItemApply  aApplies[ITEM_APPLY_MAX_NUM];
            long        alValues[ITEM_VALUES_MAX_NUM];
            long        alSockets[ITEM_SOCKET_MAX_NUM];
            DWORD       dwRefinedVnum;
            WORD        wRefineSet;
            BYTE        bAlterToMagicItemPct;
            BYTE        bSpecular;
            BYTE        bGainSocketPct;
        } TItemTable_r156;

        typedef struct SItemTable_r158
        {
            DWORD       dwVnum;
            DWORD       dwVnumRange;
            char        szName[ITEM_NAME_MAX_LEN + 1];
            char        szLocaleName[ITEM_NAME_MAX_LEN + 1];
            BYTE        bType;
            BYTE        bSubType;

            BYTE        bWeight;
            BYTE        bSize;

            DWORD       dwAntiFlags;
            DWORD       dwFlags;
            DWORD       dwWearFlags;
            DWORD       dwImmuneFlag;

            DWORD       dwIBuyItemPrice;
            DWORD        dwISellItemPrice;

            TItemLimit  aLimits[ITEM_LIMIT_MAX_NUM];
            TItemApply  aApplies[ITEM_APPLY_MAX_NUM];
            long        alValues[ITEM_VALUES_MAX_NUM];
            long        alSockets[ITEM_SOCKET_MAX_NUM];
            DWORD       dwRefinedVnum;
            WORD        wRefineSet;
            BYTE        bAlterToMagicItemPct;
            BYTE        bSpecular;
            BYTE        bGainSocketPct;
            WORD        wWearableFlag;
        } TItemTable_r158;

        typedef SItemTable_r156 SItemTable, TItemTable;

#ifdef ENABLE_ACCE_SYSTEM
        struct SScaleInfo
        {
            float    fScaleX, fScaleY, fScaleZ;
            float    fPositionX, fPositionY, fPositionZ;
        };

        typedef struct SScaleTable
        {
            SScaleInfo    tInfo[10];
        } TScaleTable;
#endif

#ifdef ENABLE_PROTOSTRUCT_AUTODETECT
        typedef struct SItemTableAll
        {
            static bool IsValidStruct(DWORD structSize)
            {
                switch (structSize)
                {
                    case sizeof(TItemTable_r152):
                    case sizeof(TItemTable_r156):
                    case sizeof(TItemTable_r158):
                        return true;
                        break;
                }
                return false;
            }

            static void Process(void* obj, DWORD structSize, DWORD i, CItemData::TItemTable& t)
            {
                #define ITABLE_COPY_STR(x) strncpy_s(t.##x##, sizeof(t.##x##), r.##x##, _TRUNCATE)
                #define ITABLE_COPY_INT(x) t.##x## = r.##x
                #define ITABLE_ZERO_STR(x) memset(t.##x##, 0, sizeof(t.##x##));
                #define ITABLE_ZERO_INT(x) t.##x## = 0
                #define ITABLE_COUNT(x) _countof(t.##x##)
                #define ITABLE_PROCESS(len)\
                    CItemData::TItemTable_r##len## & r = *((CItemData::TItemTable_r##len## *) obj + i);\
                    ITABLE_COPY_INT(dwVnum);\
                    ITABLE_COPY_STR(szName);\
                    ITABLE_COPY_STR(szLocaleName);\
                    ITABLE_COPY_INT(bType);\
                    ITABLE_COPY_INT(bSubType);\
                    ITABLE_COPY_INT(bWeight);\
                    ITABLE_COPY_INT(bSize);\
                    ITABLE_COPY_INT(dwAntiFlags);\
                    ITABLE_COPY_INT(dwFlags);\
                    ITABLE_COPY_INT(dwWearFlags);\
                    ITABLE_COPY_INT(dwImmuneFlag);\
                    ITABLE_COPY_INT(dwIBuyItemPrice);\
                    ITABLE_COPY_INT(dwISellItemPrice);\
                    for (size_t i=0; i<ITABLE_COUNT(aLimits); ++i)\
                    {\
                        ITABLE_COPY_INT(aLimits[i].bType);\
                        ITABLE_COPY_INT(aLimits[i].lValue);\
                    }\
                    for (size_t i=0; i<CItemData::ITEM_APPLY_MAX_NUM; ++i)\
                    {\
                        ITABLE_COPY_INT(aApplies[i].bType);\
                        ITABLE_COPY_INT(aApplies[i].lValue);\
                    }\
                    for (size_t i=0; i<CItemData::ITEM_VALUES_MAX_NUM; ++i)\
                    {\
                        ITABLE_COPY_INT(alValues[i]);\
                    }\
                    for (size_t i=0; i<CItemData::ITEM_SOCKET_MAX_NUM; ++i)\
                    {\
                        ITABLE_COPY_INT(alSockets[i]);\
                    }\
                    ITABLE_COPY_INT(dwRefinedVnum);\
                    ITABLE_COPY_INT(wRefineSet);\
                    ITABLE_COPY_INT(bAlterToMagicItemPct);\
                    ITABLE_COPY_INT(bSpecular);\
                    ITABLE_COPY_INT(bGainSocketPct);

                switch (structSize)
                {
                    case sizeof(TItemTable_r152):
                        {
                            ITABLE_PROCESS(152);
                            ITABLE_ZERO_INT(dwVnumRange);
                        }
                        break;
                    case sizeof(TItemTable_r156):
                        {
                            ITABLE_PROCESS(156);
                            ITABLE_COPY_INT(dwVnumRange);
                        }
                        break;
                    case sizeof(TItemTable_r158):
                        {
                            ITABLE_PROCESS(158);
                            ITABLE_COPY_INT(dwVnumRange);
                        }
                        break;
                }
            }
        } TItemTableAll;
#endif //ENABLE_PROTOSTRUCT_AUTODETECT

#pragma pack(pop)

    public:
        CItemData();
        virtual ~CItemData();

        void Clear();
        void SetSummary(const std::string& c_rstSumm);
        void SetDescription(const std::string& c_rstDesc);

        CGraphicThing * GetModelThing();
        CGraphicThing * GetSubModelThing();
        CGraphicThing * GetDropModelThing();
        CGraphicSubImage * GetIconImage();

        DWORD GetLODModelThingCount();
        BOOL GetLODModelThingPointer(DWORD dwIndex, CGraphicThing ** ppModelThing);

        DWORD GetAttachingDataCount();
        BOOL GetCollisionDataPointer(DWORD dwIndex, const NRaceData::TAttachingData ** c_ppAttachingData);
        BOOL GetAttachingDataPointer(DWORD dwIndex, const NRaceData::TAttachingData ** c_ppAttachingData);

        /////
        const TItemTable*    GetTable() const;
        DWORD GetIndex() const;
        const char * GetName() const;
        const char * GetDescription() const;
        const char * GetSummary() const;
        BYTE GetType() const;
        BYTE GetSubType() const;
        UINT GetRefine() const;
        const char* GetUseTypeString() const;
        DWORD GetWeaponType() const;
        BYTE GetSize() const;
        BOOL IsAntiFlag(DWORD dwFlag) const;
        BOOL IsFlag(DWORD dwFlag) const;
        BOOL IsWearableFlag(DWORD dwFlag) const;
        BOOL HasNextGrade() const;
        DWORD GetWearFlags() const;
        DWORD GetIBuyItemPrice() const;
        DWORD GetISellItemPrice() const;
        BOOL GetLimit(BYTE byIndex, TItemLimit * pItemLimit) const;
        BOOL GetApply(BYTE byIndex, TItemApply * pItemApply) const;
        long GetValue(BYTE byIndex) const;
        long GetSocket(BYTE byIndex) const;
        long SetSocket(BYTE byIndex,DWORD value);
        int GetSocketCount() const;
        DWORD GetIconNumber() const;

        UINT    GetSpecularPoweru() const;
        float    GetSpecularPowerf() const;

        /////

        BOOL IsEquipment() const;

        /////

        //BOOL LoadItemData(const char * c_szFileName);
        void SetDefaultItemData(const char * c_szIconFileName, const char * c_szModelFileName  = NULL);
        void SetItemTableData(TItemTable * pItemTable);

#ifdef ENABLE_SHINING_SYSTEM
    typedef struct SItemShiningTable {
        char szShinings[ITEM_SHINING_MAX_COUNT][256];
    public:
        //Checking if any shining is set for this item.
        bool Any() const
        {
            for (int i = 0; i < CItemData::ITEM_SHINING_MAX_COUNT; i++)
            {
                if (strcmp(szShinings[i], ""))
                {
                    return true;
                }
            }
            return false;
        }
    } TItemShiningTable;
    void SetItemShiningTableData(BYTE bIndex, const char* szEffectname);
    CItemData::TItemShiningTable GetItemShiningTable() { return m_ItemShiningTable; }
#endif

#ifdef ENABLE_ACCE_SYSTEM
        void SetItemScale(const std::string strJob, const std::string strSex, const std::string strScaleX, const std::string strScaleY, const std::string strScaleZ, const std::string strPositionX, const std::string strPositionY, const std::string strPositionZ);
        bool GetItemScale(DWORD dwPos, float & fScaleX, float & fScaleY, float & fScaleZ, float & fPositionX, float & fPositionY, float & fPositionZ);
#endif

    protected:
        void __LoadFiles();
        void __SetIconImage(const char * c_szFileName);

    protected:
        std::string m_strModelFileName;
        std::string m_strSubModelFileName;
        std::string m_strDropModelFileName;
        std::string m_strIconFileName;
        std::string m_strDescription;
        std::string m_strSummary;
        std::vector<std::string> m_strLODModelFileNameVector;

        CGraphicThing * m_pModelThing;
        CGraphicThing * m_pSubModelThing;
        CGraphicThing * m_pDropModelThing;
        CGraphicSubImage * m_pIconImage;
        std::vector<CGraphicThing *> m_pLODModelThingVector;

        NRaceData::TAttachingDataVector m_AttachingDataVector;
        DWORD        m_dwVnum;
        TItemTable m_ItemTable;
#ifdef ENABLE_SHINING_SYSTEM
        TItemShiningTable m_ItemShiningTable;
#endif
#ifdef ENABLE_ACCE_SYSTEM
        TScaleTable    m_ScaleTable;
#endif

#ifdef ENABLE_AURA_SYSTEM
    public:
        enum EAuraGradeType
        {
            AURA_GRADE_NONE,
            AURA_GRADE_ORDINARY,
            AURA_GRADE_SIMPLE,
            AURA_GRADE_NOBLE,
            AURA_GRADE_SPARKLING,
            AURA_GRADE_MAGNIFICENT,
            AURA_GRADE_RADIANT,
            AURA_GRADE_MAX_NUM,
        };
        enum EAuraItem
        {
            AURA_BOOST_ITEM_VNUM_BASE = 49980
        };
        enum EAuraBoostIndex
        {
            ITEM_AURA_BOOST_ERASER,
            ITEM_AURA_BOOST_WEAK,
            ITEM_AURA_BOOST_NORMAL,
            ITEM_AURA_BOOST_STRONG,
            ITEM_AURA_BOOST_ULTIMATE,
            ITEM_AURA_BOOST_MAX,
        };

    protected:
        typedef struct SAuraScaleTable
        {
            D3DXVECTOR3 v3MeshScale[NRaceData::SEX_MAX_NUM][NRaceData::JOB_MAX_NUM];
            float fParticleScale[NRaceData::SEX_MAX_NUM][NRaceData::JOB_MAX_NUM];
        } TAuraScaleTable;

        TAuraScaleTable m_AuraScaleTable;
        DWORD m_dwAuraEffectID;

    public:
        void SetAuraScaleTableData(BYTE byJob, BYTE bySex, float fMeshScaleX, float fMeshScaleY, float fMeshScaleZ, float fParticleScale);
        D3DXVECTOR3& GetAuraMeshScaleVector(BYTE byJob, BYTE bySex);
        float GetAuraParticleScale(BYTE byJob, BYTE bySex);

        void SetAuraEffectID(const char* szAuraEffectPath);
        DWORD GetAuraEffectID() const { return m_dwAuraEffectID; }
#endif

    public:
        static void DestroySystem();

        static CItemData* New();
        static void Delete(CItemData* pkItemData);

        static CDynamicPool<CItemData>        ms_kPool;
};
 
gamelib / ItemData.h
userinterface / GameType.h
length.h

dosyalarını konuya dahil edermisin
birde en son ne işlem yaptın ?
gametype.h:
Genişlet Daralt Kopyala
#pragma once
#include "../GameLib/ItemData.h"
#include "Locale_inc.h"

struct SAffects
{
    enum
    {
        AFFECT_MAX_NUM = 32,
    };

    SAffects() : dwAffects(0) {}
    SAffects(const DWORD & c_rAffects)
    {
        __SetAffects(c_rAffects);
    }
    int operator = (const DWORD & c_rAffects)
    {
        __SetAffects(c_rAffects);
    }

    BOOL IsAffect(BYTE byIndex)
    {
        return dwAffects & (1 << byIndex);
    }

    void __SetAffects(const DWORD & c_rAffects)
    {
        dwAffects = c_rAffects;
    }

    DWORD dwAffects;
};

extern std::string g_strGuildSymbolPathName;

const DWORD c_Name_Max_Length = 64;
const DWORD c_FileName_Max_Length = 128;
const DWORD c_Short_Name_Max_Length = 32;

const DWORD c_Inventory_Page_Column = 5;
const DWORD c_Inventory_Page_Row = 9;
const DWORD c_Inventory_Page_Size = c_Inventory_Page_Column*c_Inventory_Page_Row; // x*y
#ifdef ENABLE_EXTEND_INVEN_SYSTEM
const DWORD c_Inventory_Page_Count = 4;
#else
const DWORD c_Inventory_Page_Count = 2;
#endif
const DWORD c_ItemSlot_Count = c_Inventory_Page_Size * c_Inventory_Page_Count;
const DWORD c_Equipment_Count = 12;

const DWORD c_Equipment_Start = c_ItemSlot_Count;

const DWORD c_Equipment_Body    = c_Equipment_Start + CItemData::WEAR_BODY;
const DWORD c_Equipment_Head    = c_Equipment_Start + CItemData::WEAR_HEAD;
const DWORD c_Equipment_Shoes    = c_Equipment_Start + CItemData::WEAR_FOOTS;
const DWORD c_Equipment_Wrist    = c_Equipment_Start + CItemData::WEAR_WRIST;
const DWORD c_Equipment_Weapon    = c_Equipment_Start + CItemData::WEAR_WEAPON;
const DWORD c_Equipment_Neck    = c_Equipment_Start + CItemData::WEAR_NECK;
const DWORD c_Equipment_Ear        = c_Equipment_Start + CItemData::WEAR_EAR;
const DWORD c_Equipment_Unique1    = c_Equipment_Start + CItemData::WEAR_UNIQUE1;
const DWORD c_Equipment_Unique2    = c_Equipment_Start + CItemData::WEAR_UNIQUE2;
const DWORD c_Equipment_Arrow    = c_Equipment_Start + CItemData::WEAR_ARROW;
const DWORD c_Equipment_Shield    = c_Equipment_Start + CItemData::WEAR_SHIELD;

#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    const DWORD c_New_Equipment_Start = c_Equipment_Start + CItemData::WEAR_RING1;
    const DWORD c_New_Equipment_Count = 4;
    const DWORD c_Equipment_Ring1 = c_Equipment_Start + CItemData::WEAR_RING1;
    const DWORD c_Equipment_Ring2 = c_Equipment_Start + CItemData::WEAR_RING2;
    const DWORD c_Equipment_Belt  = c_Equipment_Start + CItemData::WEAR_BELT;
#ifdef ENABLE_PENDANT_SYSTEM
    const DWORD c_Equipment_Pendant = c_Equipment_Start + CItemData::WEAR_PENDANT;
#endif   
#endif

#ifdef ENABLE_SKILL_COLOR_SYSTEM
    enum ESkillColorLength
    {
        MAX_SKILL_COUNT = 6,
        MAX_EFFECT_COUNT = 5,
        BUFF_BEGIN = MAX_SKILL_COUNT,
        MAX_BUFF_COUNT = 5,
    };
#endif

enum EDragonSoulDeckType
{
    DS_DECK_1,
    DS_DECK_2,
    DS_DECK_MAX_NUM = 2,
};

enum EDragonSoulGradeTypes
{
    DRAGON_SOUL_GRADE_NORMAL,
    DRAGON_SOUL_GRADE_BRILLIANT,
    DRAGON_SOUL_GRADE_RARE,
    DRAGON_SOUL_GRADE_ANCIENT,
    DRAGON_SOUL_GRADE_LEGENDARY,
#ifdef ENABLE_DS_GRADE_MYTH
    DRAGON_SOUL_GRADE_MYTH,
#endif
    DRAGON_SOUL_GRADE_MAX,
};

enum EDragonSoulStepTypes
{
    DRAGON_SOUL_STEP_LOWEST,
    DRAGON_SOUL_STEP_LOW,
    DRAGON_SOUL_STEP_MID,
    DRAGON_SOUL_STEP_HIGH,
    DRAGON_SOUL_STEP_HIGHEST,
    DRAGON_SOUL_STEP_MAX,
};

#ifdef ENABLE_COSTUME_SYSTEM
    const DWORD c_Costume_Slot_Start    = c_Equipment_Start + CItemData::WEAR_COSTUME_BODY;
    const DWORD    c_Costume_Slot_Body        = c_Costume_Slot_Start + CItemData::COSTUME_BODY;
    const DWORD    c_Costume_Slot_Hair        = c_Costume_Slot_Start + CItemData::COSTUME_HAIR;
    const DWORD c_Costume_Effect_Body     = c_Costume_Slot_Start + CItemData::USE_EFFECT;
    const DWORD c_Costume_Effect_Weapon = c_Costume_Slot_Start + CItemData::USE_EFFECT;
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
    const DWORD    c_Costume_Slot_Mount    = c_Costume_Slot_Start + CItemData::COSTUME_MOUNT;
#endif
#ifdef ENABLE_ACCE_SYSTEM
    const DWORD    c_Costume_Slot_Acce        = c_Costume_Slot_Start + CItemData::COSTUME_ACCE;
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    const DWORD    c_Costume_Slot_Weapon = c_Costume_Slot_Start + CItemData::COSTUME_WEAPON; // c_Costume_Slot_End + 1;
#endif
#ifdef ENABLE_AURA_SYSTEM
    const DWORD c_Costume_Slot_Aura        = c_Costume_Slot_Start + CItemData::COSTUME_AURA;
#endif
#if defined(ENABLE_WEAPON_COSTUME_SYSTEM) || defined(ENABLE_ACCE_SYSTEM)
    const DWORD c_Costume_Slot_Count    = 8;
#elif defined(ENABLE_MOUNT_COSTUME_SYSTEM)
    const DWORD c_Costume_Slot_Count    = 3;
#else
    const DWORD c_Costume_Slot_Count    = 2;
#endif

    const DWORD c_Costume_Slot_End        = c_Costume_Slot_Start + c_Costume_Slot_Count;




#endif


const DWORD c_Wear_Max = 32;
const DWORD c_DragonSoul_Equip_Start = c_ItemSlot_Count + c_Wear_Max;
const DWORD c_DragonSoul_Equip_Slot_Max = 6;
const DWORD c_DragonSoul_Equip_End = c_DragonSoul_Equip_Start + c_DragonSoul_Equip_Slot_Max * DS_DECK_MAX_NUM;

const DWORD c_DragonSoul_Equip_Reserved_Count = c_DragonSoul_Equip_Slot_Max * 3;

#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    const DWORD c_Belt_Inventory_Slot_Start = c_DragonSoul_Equip_End + c_DragonSoul_Equip_Reserved_Count;
    const DWORD c_Belt_Inventory_Width = 4;
    const DWORD c_Belt_Inventory_Height= 4;
    const DWORD c_Belt_Inventory_Slot_Count = c_Belt_Inventory_Width * c_Belt_Inventory_Height;
    const DWORD c_Belt_Inventory_Slot_End = c_Belt_Inventory_Slot_Start + c_Belt_Inventory_Slot_Count;

    const DWORD c_Inventory_Count    = c_Belt_Inventory_Slot_End;
#else
    const DWORD c_Inventory_Count    = c_DragonSoul_Equip_End;
#endif

const DWORD c_DragonSoul_Inventory_Start = 0;
const DWORD c_DragonSoul_Inventory_Box_Size = 32;
const DWORD c_DragonSoul_Inventory_Count = CItemData::DS_SLOT_NUM_TYPES * DRAGON_SOUL_GRADE_MAX * c_DragonSoul_Inventory_Box_Size;
const DWORD c_DragonSoul_Inventory_End = c_DragonSoul_Inventory_Start + c_DragonSoul_Inventory_Count;

#ifdef ENABLE_SPECIAL_STORAGE
const DWORD c_Special_Inventory_Page_Size = 5 * 9;
const DWORD c_Special_Inventory_Page_Count = 4;
const DWORD c_Special_ItemSlot_Count = c_Special_Inventory_Page_Size * c_Special_Inventory_Page_Count;

#endif
enum ESlotType
{
    SLOT_TYPE_NONE,
    SLOT_TYPE_INVENTORY,
    SLOT_TYPE_SKILL,
    SLOT_TYPE_EMOTION,
    SLOT_TYPE_SHOP,
    SLOT_TYPE_EXCHANGE_OWNER,
    SLOT_TYPE_EXCHANGE_TARGET,
    SLOT_TYPE_QUICK_SLOT,
    SLOT_TYPE_SAFEBOX,
    SLOT_TYPE_PRIVATE_SHOP,
    SLOT_TYPE_MALL,
    SLOT_TYPE_DRAGON_SOUL_INVENTORY,
#ifdef ENABLE_SPECIAL_STORAGE
    SLOT_TYPE_UPGRADE_INVENTORY,
    SLOT_TYPE_BOOK_INVENTORY,
    SLOT_TYPE_STONE_INVENTORY,
    SLOT_TYPE_CHEST_INVENTORY,
#endif
#ifdef ENABLE_AURA_SYSTEM
    SLOT_TYPE_AURA,
#endif
    SLOT_TYPE_MAX,
};

#ifdef ENABLE_AURA_SYSTEM
const BYTE c_AuraMaxLevel = 250;

enum EAuraRefineInfoSlot
{
    AURA_REFINE_INFO_SLOT_CURRENT,
    AURA_REFINE_INFO_SLOT_NEXT,
    AURA_REFINE_INFO_SLOT_EVOLVED,
    AURA_REFINE_INFO_SLOT_MAX
};

enum EAuraWindowType
{
    AURA_WINDOW_TYPE_ABSORB,
    AURA_WINDOW_TYPE_GROWTH,
    AURA_WINDOW_TYPE_EVOLVE,
    AURA_WINDOW_TYPE_MAX,
};

enum EAuraSlotType
{
    AURA_SLOT_MAIN,
    AURA_SLOT_SUB,
    AURA_SLOT_RESULT,
    AURA_SLOT_MAX
};

enum EAuraRefineInfoType
{
    AURA_REFINE_INFO_STEP,
    AURA_REFINE_INFO_LEVEL_MIN,
    AURA_REFINE_INFO_LEVEL_MAX,
    AURA_REFINE_INFO_NEED_EXP,
    AURA_REFINE_INFO_MATERIAL_VNUM,
    AURA_REFINE_INFO_MATERIAL_COUNT,
    AURA_REFINE_INFO_NEED_GOLD,
    AURA_REFINE_INFO_EVOLVE_PCT,
    AURA_REFINE_INFO_MAX
};
#endif

enum EWindows
{
    RESERVED_WINDOW,
    INVENTORY,
    EQUIPMENT,
    SAFEBOX,
    MALL,
    DRAGON_SOUL_INVENTORY,
#ifdef ENABLE_SPECIAL_STORAGE
    UPGRADE_INVENTORY,
    BOOK_INVENTORY,
    STONE_INVENTORY,
    CHEST_INVENTORY,
#endif
#ifdef ENABLE_AURA_SYSTEM
    AURA_REFINE,
#endif
    BELT_INVENTORY,
    GROUND,

    WINDOW_TYPE_MAX,
};

enum EDSInventoryMaxNum
{
    DS_INVENTORY_MAX_NUM = c_DragonSoul_Inventory_Count,
    DS_REFINE_WINDOW_MAX_NUM = 15,
};

#pragma pack (push, 1)
#define WORD_MAX 0xffff

typedef struct SItemPos
{
    BYTE window_type;
    WORD cell;
    SItemPos ()
    {
        window_type =     INVENTORY;
        cell = WORD_MAX;
    }
    SItemPos (BYTE _window_type, WORD _cell)
    {
        window_type = _window_type;
        cell = _cell;
    }

  //  int operator=(const int _cell)
  //  {
        //window_type = INVENTORY;
  //      cell = _cell;
  //      return cell;
  //  }
    bool IsValidCell()
    {
        switch (window_type)
        {
        case INVENTORY:
            return cell < c_Inventory_Count;
            break;
        case EQUIPMENT:
            return cell < c_DragonSoul_Equip_End;
            break;
        case DRAGON_SOUL_INVENTORY:
            return cell < (DS_INVENTORY_MAX_NUM);
            break;
#ifdef ENABLE_SPECIAL_STORAGE
        case UPGRADE_INVENTORY:
            return cell < c_Special_ItemSlot_Count;
            break;
        case BOOK_INVENTORY:
            return cell < c_Special_ItemSlot_Count;
            break;
        case STONE_INVENTORY:
            return cell < c_Special_ItemSlot_Count;
            break;
        case CHEST_INVENTORY:
            return cell < c_Special_ItemSlot_Count;
            break;
#endif
        default:
            return false;
        }
    }
    bool IsEquipCell()
    {
        switch (window_type)
        {
        case INVENTORY:
        case EQUIPMENT:
            return (c_Equipment_Start + c_Wear_Max > cell) && (c_Equipment_Start <= cell);
            break;

        case BELT_INVENTORY:
        case DRAGON_SOUL_INVENTORY:
#ifdef ENABLE_SPECIAL_STORAGE
        case UPGRADE_INVENTORY:
        case BOOK_INVENTORY:
        case STONE_INVENTORY:
        case CHEST_INVENTORY:
#endif
            return false;
            break;

        default:
            return false;
        }
    }

#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    bool IsBeltInventoryCell()
    {
        bool bResult = c_Belt_Inventory_Slot_Start <= cell && c_Belt_Inventory_Slot_End > cell;
        return bResult;
    }
#endif

    bool IsNPOS()
    {
        return (window_type == RESERVED_WINDOW && cell == WORD_MAX);
    }
    bool operator==(const struct SItemPos& rhs) const
    {
        return (window_type == rhs.window_type) && (cell == rhs.cell);
    }
    bool operator!=(const struct SItemPos& rhs) const
    {
        return (window_type != rhs.window_type) || (cell != rhs.cell);
    }
    bool operator<(const struct SItemPos& rhs) const
    {
        return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell));
    }
} TItemPos;
const TItemPos NPOS(RESERVED_WINDOW, WORD_MAX);
#pragma pack(pop)

const DWORD c_QuickBar_Line_Count = 3;
const DWORD c_QuickBar_Slot_Count = 12;

const float c_Idle_WaitTime = 5.0f;

const int c_Monster_Race_Start_Number = 6;
const int c_Monster_Model_Start_Number = 20001;

const float c_fAttack_Delay_Time = 0.2f;
const float c_fHit_Delay_Time = 0.1f;
const float c_fCrash_Wave_Time = 0.2f;
const float c_fCrash_Wave_Distance = 3.0f;

const float c_fHeight_Step_Distance = 50.0f;

enum
{
    DISTANCE_TYPE_FOUR_WAY,
    DISTANCE_TYPE_EIGHT_WAY,
    DISTANCE_TYPE_ONE_WAY,
    DISTANCE_TYPE_MAX_NUM,
};

const float c_fMagic_Script_Version = 1.0f;
const float c_fSkill_Script_Version = 1.0f;
const float c_fMagicSoundInformation_Version = 1.0f;
const float c_fBattleCommand_Script_Version = 1.0f;
const float c_fEmotionCommand_Script_Version = 1.0f;
const float c_fActive_Script_Version = 1.0f;
const float c_fPassive_Script_Version = 1.0f;

// Used by PushMove
const float c_fWalkDistance = 175.0f;
const float c_fRunDistance = 310.0f;

#define FILE_MAX_LEN 128

enum
{
    ITEM_SOCKET_SLOT_MAX_NUM = 4,
    // refactored attribute slot begin
    ITEM_ATTRIBUTE_SLOT_NORM_NUM    = 5,
    ITEM_ATTRIBUTE_SLOT_RARE_NUM    = 2,

    ITEM_ATTRIBUTE_SLOT_NORM_START    = 0,
    ITEM_ATTRIBUTE_SLOT_NORM_END    = ITEM_ATTRIBUTE_SLOT_NORM_START + ITEM_ATTRIBUTE_SLOT_NORM_NUM,

    ITEM_ATTRIBUTE_SLOT_RARE_START    = ITEM_ATTRIBUTE_SLOT_NORM_END,
    ITEM_ATTRIBUTE_SLOT_RARE_END    = ITEM_ATTRIBUTE_SLOT_RARE_START + ITEM_ATTRIBUTE_SLOT_RARE_NUM,

    ITEM_ATTRIBUTE_SLOT_MAX_NUM        = ITEM_ATTRIBUTE_SLOT_RARE_END, // 7
    // refactored attribute slot end
};

#pragma pack(push)
#pragma pack(1)

typedef struct SQuickSlot
{
    BYTE Type;
    BYTE Position;
} TQuickSlot;

typedef struct TPlayerItemAttribute
{
    BYTE        bType;
    short       sValue;
} TPlayerItemAttribute;

typedef struct packet_item
{
    DWORD       vnum;
    BYTE        count;
    DWORD        flags;
    DWORD        anti_flags;
    long        alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
    TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TItemData;

typedef struct packet_shop_item
{
    DWORD       vnum;
    DWORD       price;
    BYTE        count;
    BYTE        display_pos;
    long        alSockets[ITEM_SOCKET_SLOT_MAX_NUM];
    TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_SLOT_MAX_NUM];
} TShopItemData;

#pragma pack(pop)

inline float GetSqrtDistance(int ix1, int iy1, int ix2, int iy2) // By sqrt
{
    float dx, dy;

    dx = float(ix1 - ix2);
    dy = float(iy1 - iy2);

    return sqrtf(dx*dx + dy*dy);
}

// DEFAULT_FONT
void DefaultFont_Startup();
void DefaultFont_Cleanup();
void DefaultFont_SetName(const char * c_szFontName);
CResource* DefaultFont_GetResource();
CResource* DefaultItalicFont_GetResource();
// END_OF_DEFAULT_FONT

void SetGuildSymbolPath(const char * c_szPathName);
const char * GetGuildSymbolFileName(DWORD dwGuildID);
BYTE SlotTypeToInvenType(BYTE bSlotType);
#ifdef ENABLE_DETAILS_INTERFACE
BYTE ApplyTypeToPointType(BYTE bApplyType);
#endif
#ifdef ENABLE_AURA_SYSTEM
int* GetAuraRefineInfo(BYTE bLevel);
#endif
 
gamelib / ItemData.h
userinterface / GameType.h
length.h

dosyalarını konuya dahil edermisin
birde en son ne işlem yaptın ?
length.h:
Genişlet Daralt Kopyala
#ifndef __INC_METIN_II_LENGTH_H__
#define __INC_METIN_II_LENGTH_H__

#include "CommonDefines.h"

#define WORD_MAX 0xffff
enum EMisc
{
    MAX_HOST_LENGTH = 15,
    IP_ADDRESS_LENGTH = 15,
    LOGIN_MAX_LEN = 30,
    PASSWD_MAX_LEN = 16,
#ifdef ENABLE_PLAYER_PER_ACCOUNT5
    PLAYER_PER_ACCOUNT = 5,
#else
    PLAYER_PER_ACCOUNT = 4,
#endif
    ACCOUNT_STATUS_MAX_LEN = 8,
    CHARACTER_NAME_MAX_LEN = 24,
    SHOP_SIGN_MAX_LEN = 32,
    INVENTORY_PAGE_COLUMN = 5, // 5 (default)
    INVENTORY_PAGE_ROW = 9, // 9 (default)
    INVENTORY_PAGE_SIZE = INVENTORY_PAGE_COLUMN * INVENTORY_PAGE_ROW,
#ifdef ENABLE_EXTEND_INVEN_SYSTEM
    INVENTORY_PAGE_COUNT = 4, // 2 (default)
#else
    INVENTORY_PAGE_COUNT = 2, // 2 (default)
#endif
    INVENTORY_MAX_NUM = INVENTORY_PAGE_SIZE * INVENTORY_PAGE_COUNT, // 90 (default)
    ABILITY_MAX_NUM = 50,
    EMPIRE_MAX_NUM = 4,
    BANWORD_MAX_LEN = 24,
    SMS_MAX_LEN = 80,
    MOBILE_MAX_LEN = 32,
    SOCIAL_ID_MAX_LEN = 18,

    GUILD_NAME_MAX_LEN = 12,

    SHOP_HOST_ITEM_MAX_NUM = 40,
    SHOP_GUEST_ITEM_MAX_NUM = 18,

    SHOP_PRICELIST_MAX_NUM = 40,

    CHAT_MAX_LEN = 512,

    QUICKSLOT_MAX_NUM = 36,

    JOURNAL_MAX_NUM = 2,

    QUERY_MAX_LEN = 8192,

    FILE_MAX_LEN = 128,

    PLAYER_EXP_TABLE_MAX = 120,
    PLAYER_MAX_LEVEL_CONST = 250,

    GUILD_MAX_LEVEL = 20,
    MOB_MAX_LEVEL = 100,

    ATTRIBUTE_MAX_VALUE = 20,
    CHARACTER_PATH_MAX_NUM = 64,
    SKILL_MAX_NUM = 255,
    SKILLBOOK_DELAY_MIN = 64800,
    SKILLBOOK_DELAY_MAX = 108000,
    SKILL_MAX_LEVEL = 40,

    APPLY_NAME_MAX_LEN = 32,
    EVENT_FLAG_NAME_MAX_LEN = 32,

    MOB_SKILL_MAX_NUM = 5,

    POINT_MAX_NUM = 255,
    DRAGON_SOUL_BOX_SIZE = 32,
    DRAGON_SOUL_BOX_COLUMN_NUM = 8,
    DRAGON_SOUL_BOX_ROW_NUM = DRAGON_SOUL_BOX_SIZE / DRAGON_SOUL_BOX_COLUMN_NUM,
    DRAGON_SOUL_REFINE_GRID_SIZE = 15,
    MAX_AMOUNT_OF_MALL_BONUS = 20,

    WEAR_MAX_NUM = 32,

#ifdef ENABLE_HWID_BAN_SYSTEM
    CPU_ID_MAX_LEN = 128,
    HDD_MODEL_MAX_LEN = 128,
    MACHINE_GUID_MAX_LEN = 128,
    MAC_ADDR_MAX_LEN = 128,
    HDD_SERIAL_MAX_LEN = 128,
#endif

#ifdef __ENABLE_NEW_OFFLINESHOP__
    OFFLINE_SHOP_NAME_MAX_LEN = 40 + CHARACTER_NAME_MAX_LEN + 1,
    OFFLINESHOP_DURATION_MAX_MINUTES = 8 * 24 * 60,
    OFFLINESHOP_MAX_SEARCH_RESULT = 250,
    OFFLINESHOP_SECONDS_PER_SEARCH = 15,
    //*new check about auction offers
    OFFLINESHOP_SECONDS_PER_OFFER = 7,
#ifdef __ENABLE_CHEQUE_SYSTEM__
    YANG_PER_CHEQUE = 100000000,
#endif
#endif

    //LIMIT_GOLD
    GOLD_MAX = 2000000000,

    MAX_PASSPOD = 8,


    //END_LIMIT_GOLD

    OPENID_AUTHKEY_LEN = 32,

    SHOP_TAB_NAME_MAX = 32,
    SHOP_TAB_COUNT_MAX = 3,

    BELT_INVENTORY_SLOT_WIDTH = 4,
    BELT_INVENTORY_SLOT_HEIGHT = 4,

    BELT_INVENTORY_SLOT_COUNT = BELT_INVENTORY_SLOT_WIDTH * BELT_INVENTORY_SLOT_HEIGHT,

#ifdef ENABLE_RENAME_ALIGNMENT_SYSTEM
    TITLE_MAX_NUM = 25,
    TITLE_COLOR_MAX_NUM = 4, // r, g, b, a
#endif

#ifdef ENABLE_SPECIAL_STORAGE
    SPECIAL_INVENTORY_PAGE_COUNT = 4,
    SPECIAL_INVENTORY_PAGE_SIZE = 45,
    SPECIAL_INVENTORY_MAX_NUM = SPECIAL_INVENTORY_PAGE_SIZE * SPECIAL_INVENTORY_PAGE_COUNT,
#endif


};

enum EMatrixCard
{
    MATRIX_CODE_MAX_LEN = 192,
    MATRIX_ANSWER_MAX_LEN = 8,
};

enum EWearPositions
{
    WEAR_BODY,        // 0
    WEAR_HEAD,        // 1
    WEAR_FOOTS,        // 2
    WEAR_WRIST,        // 3
    WEAR_WEAPON,    // 4
    WEAR_NECK,        // 5
    WEAR_EAR,        // 6
    WEAR_UNIQUE1,    // 7
    WEAR_UNIQUE2,    // 8
    WEAR_ARROW,        // 9
    WEAR_SHIELD,    // 10
    WEAR_ABILITY1,  // 11
    WEAR_ABILITY2,  // 12
    WEAR_ABILITY3,  // 13
    WEAR_ABILITY4,  // 14
    WEAR_ABILITY5,  // 15
    WEAR_ABILITY6,  // 16
    WEAR_ABILITY7,  // 17
    WEAR_ABILITY8,  // 18
    WEAR_COSTUME_BODY,    // 19
    WEAR_COSTUME_HAIR,    // 20

#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
    WEAR_COSTUME_MOUNT,//21
#endif
#ifdef ENABLE_ACCE_SYSTEM
    WEAR_COSTUME_ACCE,//22
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    WEAR_COSTUME_WEAPON,//23
#endif
#ifdef __AURA_SYSTEM__
    WEAR_COSTUME_AURA,//24
#endif
#ifdef ENABLE_EFFECT_SYSTEM
    WEAR_EFFECT_ARMOR,
    WEAR_EFFECT_WEAPON,
#endif
    WEAR_RING1,//25
    WEAR_RING2,//26
    WEAR_BELT,//27
#ifdef ENABLE_PENDANT_SYSTEM
    WEAR_PENDANT,//28
#endif

    WEAR_MAX = 32    //
};

enum EDragonSoulDeckType
{
    DRAGON_SOUL_DECK_0,
    DRAGON_SOUL_DECK_1,
    DRAGON_SOUL_DECK_MAX_NUM = 2,

    DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3,
};

enum ESex
{
    SEX_MALE,
    SEX_FEMALE
};

enum EDirection
{
    DIR_NORTH,
    DIR_NORTHEAST,
    DIR_EAST,
    DIR_SOUTHEAST,
    DIR_SOUTH,
    DIR_SOUTHWEST,
    DIR_WEST,
    DIR_NORTHWEST,
    DIR_MAX_NUM
};

#define ABILITY_MAX_LEVEL    10

enum EAbilityDifficulty
{
    DIFFICULTY_EASY,
    DIFFICULTY_NORMAL,
    DIFFICULTY_HARD,
    DIFFICULTY_VERY_HARD,
    DIFFICULTY_NUM_TYPES
};

enum EAbilityCategory
{
    CATEGORY_PHYSICAL,
    CATEGORY_MENTAL,
    CATEGORY_ATTRIBUTE,
    CATEGORY_NUM_TYPES
};

enum EJobs
{
    JOB_WARRIOR,
    JOB_ASSASSIN,
    JOB_SURA,
    JOB_SHAMAN,
#ifdef ENABLE_WOLFMAN_CHARACTER
    JOB_WOLFMAN,
#endif
    JOB_MAX_NUM
};

enum ESkillGroups
{
    SKILL_GROUP_MAX_NUM = 2,
};

enum ERaceFlags
{
    RACE_FLAG_ANIMAL = (1 << 0),
    RACE_FLAG_UNDEAD = (1 << 1),
    RACE_FLAG_DEVIL = (1 << 2),
    RACE_FLAG_HUMAN = (1 << 3),
    RACE_FLAG_ORC = (1 << 4),
    RACE_FLAG_MILGYO = (1 << 5),
    RACE_FLAG_INSECT = (1 << 6),
    RACE_FLAG_FIRE = (1 << 7),
    RACE_FLAG_ICE = (1 << 8),
    RACE_FLAG_DESERT = (1 << 9),
    RACE_FLAG_TREE = (1 << 10),
    RACE_FLAG_ATT_ELEC = (1 << 11),
    RACE_FLAG_ATT_FIRE = (1 << 12),
    RACE_FLAG_ATT_ICE = (1 << 13),
    RACE_FLAG_ATT_WIND = (1 << 14),
    RACE_FLAG_ATT_EARTH = (1 << 15),
    RACE_FLAG_ATT_DARK = (1 << 16),
    RACE_FLAG_ATT_CZ = (1 << 17),
};

enum ELoads
{
    LOAD_NONE,
    LOAD_LIGHT,
    LOAD_NORMAL,
    LOAD_HEAVY,
    LOAD_MASSIVE
};

enum
{
    QUICKSLOT_TYPE_NONE,
    QUICKSLOT_TYPE_ITEM,
    QUICKSLOT_TYPE_SKILL,
    QUICKSLOT_TYPE_COMMAND,
    QUICKSLOT_TYPE_MAX_NUM,
};

enum EParts
{
    PART_MAIN,
    PART_WEAPON,
    PART_HEAD,
    PART_HAIR,
#ifdef ENABLE_ACCE_SYSTEM
    PART_ACCE,
#endif
#ifdef __AURA_SYSTEM__
    PART_AURA,
#endif
#ifdef ENABLE_EFFECT_SYSTEM
    BODY_EFFECT,
    WEAPON_RIGHT_EFFECT,
    WEAPON_LEFT_EFFECT,
#endif
    PART_MAX_NUM,
    PART_WEAPON_SUB,
};

enum EChatType
{
    CHAT_TYPE_TALKING,
    CHAT_TYPE_INFO,
    CHAT_TYPE_NOTICE,
    CHAT_TYPE_PARTY,
    CHAT_TYPE_GUILD,
    CHAT_TYPE_COMMAND,
    CHAT_TYPE_SHOUT,
    CHAT_TYPE_WHISPER,
    CHAT_TYPE_BIG_NOTICE,
    CHAT_TYPE_MONARCH_NOTICE,
#ifdef ENABLE_DICE_SYSTEM
    CHAT_TYPE_DICE_INFO, //11
#endif
    CHAT_TYPE_MAX_NUM
};

enum EWhisperType
{
    WHISPER_TYPE_NORMAL = 0,
    WHISPER_TYPE_NOT_EXIST = 1,
    WHISPER_TYPE_TARGET_BLOCKED = 2,
    WHISPER_TYPE_SENDER_BLOCKED = 3,
    WHISPER_TYPE_ERROR = 4,
    WHISPER_TYPE_GM = 5,
    WHISPER_TYPE_SYSTEM = 0xFF
};

enum ECharacterPosition
{
    POSITION_GENERAL,
    POSITION_BATTLE,
    POSITION_DYING,
    POSITION_SITTING_CHAIR,
    POSITION_SITTING_GROUND,
    POSITION_INTRO,
    POSITION_MAX_NUM
};

enum EGMLevels
{
    GM_PLAYER,
    GM_LOW_WIZARD,
    GM_WIZARD,
    GM_HIGH_WIZARD,
    GM_GOD,
    GM_IMPLEMENTOR,
    GM_DISABLE,
};

enum EMobRank
{
    MOB_RANK_PAWN,
    MOB_RANK_S_PAWN,
    MOB_RANK_KNIGHT,
    MOB_RANK_S_KNIGHT,
    MOB_RANK_BOSS,
    MOB_RANK_KING,
    MOB_RANK_MAX_NUM
};

enum ECharType
{
    CHAR_TYPE_MONSTER,
    CHAR_TYPE_NPC,
    CHAR_TYPE_STONE,
    CHAR_TYPE_WARP,
    CHAR_TYPE_DOOR,
    CHAR_TYPE_BUILDING,
    CHAR_TYPE_PC,
    CHAR_TYPE_POLYMORPH_PC,
    CHAR_TYPE_HORSE,
    CHAR_TYPE_GOTO
};

enum EBattleType
{
    BATTLE_TYPE_MELEE,
    BATTLE_TYPE_RANGE,
    BATTLE_TYPE_MAGIC,
    BATTLE_TYPE_SPECIAL,
    BATTLE_TYPE_POWER,
    BATTLE_TYPE_TANKER,
    BATTLE_TYPE_SUPER_POWER,
    BATTLE_TYPE_SUPER_TANKER,
    BATTLE_TYPE_MAX_NUM
};

enum EApplyTypes
{
    APPLY_NONE,            // 0
    APPLY_MAX_HP,        // 1
    APPLY_MAX_SP,        // 2
    APPLY_CON,            // 3
    APPLY_INT,            // 4
    APPLY_STR,            // 5
    APPLY_DEX,            // 6
    APPLY_ATT_SPEED,    // 7
    APPLY_MOV_SPEED,    // 8
    APPLY_CAST_SPEED,    // 9
    APPLY_HP_REGEN,        // 10
    APPLY_SP_REGEN,        // 11
    APPLY_POISON_PCT,    // 12
    APPLY_STUN_PCT,        // 13
    APPLY_SLOW_PCT,        // 14
    APPLY_CRITICAL_PCT,        // 15
    APPLY_PENETRATE_PCT,    // 16
    APPLY_ATTBONUS_HUMAN,    // 17
    APPLY_ATTBONUS_ANIMAL,    // 18
    APPLY_ATTBONUS_ORC,        // 19
    APPLY_ATTBONUS_MILGYO,    // 20
    APPLY_ATTBONUS_UNDEAD,    // 21
    APPLY_ATTBONUS_DEVIL,    // 22
    APPLY_STEAL_HP,            // 23
    APPLY_STEAL_SP,            // 24
    APPLY_MANA_BURN_PCT,    // 25
    APPLY_DAMAGE_SP_RECOVER,    // 26
    APPLY_BLOCK,            // 27
    APPLY_DODGE,            // 28
    APPLY_RESIST_SWORD,        // 29
    APPLY_RESIST_TWOHAND,    // 30
    APPLY_RESIST_DAGGER,    // 31
    APPLY_RESIST_BELL,        // 32
    APPLY_RESIST_FAN,        // 33
    APPLY_RESIST_BOW,        // 34
    APPLY_RESIST_FIRE,        // 35
    APPLY_RESIST_ELEC,        // 36
    APPLY_RESIST_MAGIC,        // 37
    APPLY_RESIST_WIND,        // 38
    APPLY_REFLECT_MELEE,    // 39
    APPLY_REFLECT_CURSE,    // 40
    APPLY_POISON_REDUCE,    // 41
    APPLY_KILL_SP_RECOVER,    // 42
    APPLY_EXP_DOUBLE_BONUS,    // 43
    APPLY_GOLD_DOUBLE_BONUS,    // 44
    APPLY_ITEM_DROP_BONUS,    // 45
    APPLY_POTION_BONUS,        // 46
    APPLY_KILL_HP_RECOVER,    // 47
    APPLY_IMMUNE_STUN,        // 48
    APPLY_IMMUNE_SLOW,        // 49
    APPLY_IMMUNE_FALL,        // 50
    APPLY_SKILL,            // 51
    APPLY_BOW_DISTANCE,        // 52
    APPLY_ATT_GRADE_BONUS,    // 53
    APPLY_DEF_GRADE_BONUS,    // 54
    APPLY_MAGIC_ATT_GRADE,    // 55
    APPLY_MAGIC_DEF_GRADE,    // 56
    APPLY_CURSE_PCT,        // 57
    APPLY_MAX_STAMINA,        // 58
    APPLY_ATTBONUS_WARRIOR,    // 59
    APPLY_ATTBONUS_ASSASSIN,    // 60
    APPLY_ATTBONUS_SURA,    // 61
    APPLY_ATTBONUS_SHAMAN,    // 62
    APPLY_ATTBONUS_MONSTER,    // 63
    APPLY_MALL_ATTBONUS,
    APPLY_MALL_DEFBONUS,
    APPLY_MALL_EXPBONUS,
    APPLY_MALL_ITEMBONUS,
    APPLY_MALL_GOLDBONUS,
    APPLY_MAX_HP_PCT,
    APPLY_MAX_SP_PCT,
    APPLY_SKILL_DAMAGE_BONUS,
    APPLY_NORMAL_HIT_DAMAGE_BONUS,
    APPLY_SKILL_DEFEND_BONUS,
    APPLY_NORMAL_HIT_DEFEND_BONUS,
    APPLY_PC_BANG_EXP_BONUS,
    APPLY_PC_BANG_DROP_BONUS,

    APPLY_EXTRACT_HP_PCT,

    APPLY_RESIST_WARRIOR,
    APPLY_RESIST_ASSASSIN,
    APPLY_RESIST_SURA,
    APPLY_RESIST_SHAMAN,
    APPLY_ENERGY,
    APPLY_DEF_GRADE,
    APPLY_COSTUME_ATTR_BONUS,
    APPLY_MAGIC_ATTBONUS_PER,
    APPLY_MELEE_MAGIC_ATTBONUS_PER,

    APPLY_RESIST_ICE,
    APPLY_RESIST_EARTH,
    APPLY_RESIST_DARK,

    APPLY_ANTI_CRITICAL_PCT,
    APPLY_ANTI_PENETRATE_PCT,

#ifdef ENABLE_WOLFMAN_CHARACTER
    APPLY_BLEEDING_REDUCE,
    APPLY_BLEEDING_PCT,
    APPLY_ATTBONUS_WOLFMAN,
    APPLY_RESIST_WOLFMAN,
    APPLY_RESIST_CLAW,
#endif

#ifdef ENABLE_ACCE_SYSTEM
    APPLY_ACCEDRAIN_RATE,
#endif

#ifdef ENABLE_MAGIC_REDUCTION_SYSTEM
    APPLY_RESIST_MAGIC_REDUCTION,    //98
#endif
#ifdef ENABLE_PENDANT_SYSTEM
        APPLY_MOUNT,
        APPLY_ENCHANT_FIRE,
        APPLY_ENCHANT_ICE,
        APPLY_ENCHANT_EARTH,
        APPLY_ENCHANT_DARK,
        APPLY_ENCHANT_WIND,
        APPLY_ENCHANT_ELECT,
        APPLY_RESIST_HUMAN,
        APPLY_ATTBONUS_SWORD,
        APPLY_ATTBONUS_TWOHAND,
        APPLY_ATTBONUS_DAGGER,
        APPLY_ATTBONUS_BELL,
        APPLY_ATTBONUS_FAN,
        APPLY_ATTBONUS_BOW,
#ifdef ENABLE_WOLFMAN_CHARACTER
        APPLY_ATTBONUS_CLAW,
#endif
        APPLY_ATTBONUS_CZ,
        APPLY_ATTBONUS_DESERT,
        APPLY_ATTBONUS_INSECT,
#endif
#ifdef ENABLE_EXTRA_APPLY_BONUS
        APPLY_ATTBONUS_STONE,
        APPLY_ATTBONUS_BOSS,
        APPLY_ATTBONUS_ELEMENTS,
        APPLY_ENCHANT_ELEMENTS,
        APPLY_ATTBONUS_CHARACTERS,
        APPLY_ENCHANT_CHARACTERS,
        APPLY_ATTBONUS_RAZADOR,
        APPLY_ATTBONUS_NEMERE,
        APPLY_ATTBONUS_LUCIFER,
        APPLY_ATTBONUS_BLUE_DRAGON,
        APPLY_ATTBONUS_RED_DRAGON,
        APPLY_ATTBONUS_AZRAEL,
#endif
    MAX_APPLY_NUM                    = 130,
};

enum EOnClickEvents
{
    ON_CLICK_NONE,
    ON_CLICK_SHOP,
    ON_CLICK_TALK,
    ON_CLICK_MAX_NUM
};

enum EOnIdleEvents
{
    ON_IDLE_NONE,
    ON_IDLE_GENERAL,
    ON_IDLE_MAX_NUM
};

enum EWindows
{
    RESERVED_WINDOW,
    INVENTORY,
    EQUIPMENT,
    SAFEBOX,
    MALL,
    DRAGON_SOUL_INVENTORY,
#ifdef ENABLE_SPECIAL_STORAGE
    UPGRADE_INVENTORY,
    BOOK_INVENTORY,
    STONE_INVENTORY,
    CHEST_INVENTORY,
#endif
#ifdef __AURA_SYSTEM__
    AURA_REFINE,
#endif
    BELT_INVENTORY,
    GROUND,
#ifdef __ENABLE_NEW_OFFLINESHOP__
    NEW_OFFSHOP,
    SHOP_SAFEBOX,
#endif
};

enum EMobSizes
{
    MOBSIZE_RESERVED,
    MOBSIZE_SMALL,
    MOBSIZE_MEDIUM,
    MOBSIZE_BIG
};

enum EAIFlags
{
    AIFLAG_AGGRESSIVE = (1 << 0),
    AIFLAG_NOMOVE = (1 << 1),
    AIFLAG_COWARD = (1 << 2),
    AIFLAG_NOATTACKSHINSU = (1 << 3),
    AIFLAG_NOATTACKJINNO = (1 << 4),
    AIFLAG_NOATTACKCHUNJO = (1 << 5),
    AIFLAG_ATTACKMOB = (1 << 6),
    AIFLAG_BERSERK = (1 << 7),
    AIFLAG_STONESKIN = (1 << 8),
    AIFLAG_GODSPEED = (1 << 9),
    AIFLAG_DEATHBLOW = (1 << 10),
    AIFLAG_REVIVE = (1 << 11),
};

enum EMobStatType
{
    MOB_STATTYPE_POWER,
    MOB_STATTYPE_TANKER,
    MOB_STATTYPE_SUPER_POWER,
    MOB_STATTYPE_SUPER_TANKER,
    MOB_STATTYPE_RANGE,
    MOB_STATTYPE_MAGIC,
    MOB_STATTYPE_MAX_NUM
};

enum EImmuneFlags
{
    IMMUNE_STUN = (1 << 0),
    IMMUNE_SLOW = (1 << 1),
    IMMUNE_FALL = (1 << 2),
    IMMUNE_CURSE = (1 << 3),
    IMMUNE_POISON = (1 << 4),
    IMMUNE_TERROR = (1 << 5),
    IMMUNE_REFLECT = (1 << 6),
};

enum EMobEnchants
{
    MOB_ENCHANT_CURSE,
    MOB_ENCHANT_SLOW,
    MOB_ENCHANT_POISON,
    MOB_ENCHANT_STUN,
    MOB_ENCHANT_CRITICAL,
    MOB_ENCHANT_PENETRATE,
#if defined(ENABLE_WOLFMAN_CHARACTER) && !defined(USE_MOB_BLEEDING_AS_POISON)
    MOB_ENCHANT_BLEEDING,
#endif
    MOB_ENCHANTS_MAX_NUM
};

enum EMobResists
{
    MOB_RESIST_SWORD,
    MOB_RESIST_TWOHAND,
    MOB_RESIST_DAGGER,
    MOB_RESIST_BELL,
    MOB_RESIST_FAN,
    MOB_RESIST_BOW,
    MOB_RESIST_FIRE,
    MOB_RESIST_ELECT,
    MOB_RESIST_MAGIC,
    MOB_RESIST_WIND,
    MOB_RESIST_POISON,
#if defined(ENABLE_WOLFMAN_CHARACTER) && !defined(USE_MOB_CLAW_AS_DAGGER)
    MOB_RESIST_CLAW,
#endif
#if defined(ENABLE_WOLFMAN_CHARACTER) && !defined(USE_MOB_BLEEDING_AS_POISON)
    MOB_RESIST_BLEEDING,
#endif
    MOB_RESISTS_MAX_NUM
};

enum
{
    SKILL_ATTR_TYPE_NORMAL = 1,
    SKILL_ATTR_TYPE_MELEE,
    SKILL_ATTR_TYPE_RANGE,
    SKILL_ATTR_TYPE_MAGIC
    /*
       SKILL_ATTR_TYPE_FIRE,
       SKILL_ATTR_TYPE_ICE,
       SKILL_ATTR_TYPE_ELEC,
       SKILL_ATTR_TYPE_DARK,
       */
};

enum
{
    SKILL_NORMAL,
    SKILL_MASTER,
    SKILL_GRAND_MASTER,
    SKILL_PERFECT_MASTER,
};

enum EGuildWarType
{
    GUILD_WAR_TYPE_FIELD,
    GUILD_WAR_TYPE_BATTLE,
    GUILD_WAR_TYPE_FLAG,
    GUILD_WAR_TYPE_MAX_NUM
};

enum EGuildWarState
{
    GUILD_WAR_NONE,
    GUILD_WAR_SEND_DECLARE,
    GUILD_WAR_REFUSE,
    GUILD_WAR_RECV_DECLARE,
    GUILD_WAR_WAIT_START,
    GUILD_WAR_CANCEL,
    GUILD_WAR_ON_WAR,
    GUILD_WAR_END,
    GUILD_WAR_OVER,
    GUILD_WAR_RESERVE,

    GUILD_WAR_DURATION = 30 * 60,
    GUILD_WAR_WIN_POINT = 1000,
    GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12 * 60 * 60,
};

enum EAttributeSet
{
    ATTRIBUTE_SET_WEAPON,
    ATTRIBUTE_SET_BODY,
    ATTRIBUTE_SET_WRIST,
    ATTRIBUTE_SET_FOOTS,
    ATTRIBUTE_SET_NECK,
    ATTRIBUTE_SET_HEAD,
    ATTRIBUTE_SET_SHIELD,
    ATTRIBUTE_SET_EAR,
#ifdef ENABLE_ITEM_ATTR_COSTUME
    ATTRIBUTE_SET_COSTUME_BODY,
    ATTRIBUTE_SET_COSTUME_HAIR,
#if defined(ENABLE_ITEM_ATTR_COSTUME) && defined(ENABLE_WEAPON_COSTUME_SYSTEM)
    ATTRIBUTE_SET_COSTUME_WEAPON,
#endif
#endif
#ifdef ENABLE_PENDANT_SYSTEM
    ATTRIBUTE_SET_PENDANT,
#endif
    ATTRIBUTE_SET_MAX_NUM
};

enum EPrivType
{
    PRIV_NONE,
    PRIV_ITEM_DROP,
    PRIV_GOLD_DROP,
    PRIV_GOLD10_DROP,
    PRIV_EXP_PCT,
    MAX_PRIV_NUM,
};

enum EMoneyLogType
{
    MONEY_LOG_RESERVED,
    MONEY_LOG_MONSTER,
    MONEY_LOG_SHOP,
    MONEY_LOG_REFINE,
    MONEY_LOG_QUEST,
    MONEY_LOG_GUILD,
    MONEY_LOG_MISC,
    MONEY_LOG_MONSTER_KILL,
    MONEY_LOG_DROP,
    MONEY_LOG_TYPE_MAX_NUM,
};

enum EPremiumTypes
{
    PREMIUM_EXP,
    PREMIUM_ITEM,
    PREMIUM_SAFEBOX,
    PREMIUM_AUTOLOOT,
    PREMIUM_FISH_MIND,
    PREMIUM_MARRIAGE_FAST,
    PREMIUM_GOLD,
    PREMIUM_MAX_NUM = 9
};

enum SPECIAL_EFFECT
{
    SE_NONE,

    SE_HPUP_RED,
    SE_SPUP_BLUE,
    SE_SPEEDUP_GREEN,
    SE_DXUP_PURPLE,
    SE_CRITICAL,
    SE_PENETRATE,
    SE_BLOCK,
    SE_DODGE,
    SE_CHINA_FIREWORK,
    SE_SPIN_TOP,
    SE_SUCCESS,
    SE_FAIL,
    SE_FR_SUCCESS,
    SE_LEVELUP_ON_14_FOR_GERMANY,
    SE_LEVELUP_UNDER_15_FOR_GERMANY,
    SE_PERCENT_DAMAGE1,
    SE_PERCENT_DAMAGE2,
    SE_PERCENT_DAMAGE3,

    SE_AUTO_HPUP,
    SE_AUTO_SPUP,

    SE_EQUIP_RAMADAN_RING,
    SE_EQUIP_HALLOWEEN_CANDY,
    SE_EQUIP_HAPPINESS_RING,
    SE_EQUIP_LOVE_PENDANT,

#ifdef ENABLE_ACCE_SYSTEM
    SE_EFFECT_ACCE_SUCCEDED,
    SE_EFFECT_ACCE_EQUIP,
#endif
#ifdef ENABLE_AGGREGATE_MONSTER_EFFECT
    SE_AGGREGATE_MONSTER_EFFECT,
#endif
#ifdef ENABLE_UPGRADE_EFFECT
    SE_UPSUCCESS,
    SE_UPFAILED,
#endif
#ifdef ENABLE_DUEL_EFFECT
    SE_PVP_WIN,
    SE_PVP_OPEN1,
    SE_PVP_OPEN2,
    SE_PVP_BEGIN1,
    SE_PVP_BEGIN2,
#endif
};

enum ETeenFlags
{
    TEENFLAG_NONE = 0,
    TEENFLAG_1HOUR,
    TEENFLAG_2HOUR,
    TEENFLAG_3HOUR,
    TEENFLAG_4HOUR,
    TEENFLAG_5HOUR,
};

#include "item_length.h"






enum EDragonSoulRefineWindowSize
{
    DRAGON_SOUL_REFINE_GRID_MAX = 15,
};

enum EMisc2
{
    DRAGON_SOUL_EQUIP_SLOT_START = INVENTORY_MAX_NUM + WEAR_MAX_NUM,
    DRAGON_SOUL_EQUIP_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_START + (DS_SLOT_MAX * DRAGON_SOUL_DECK_MAX_NUM),
    DRAGON_SOUL_EQUIP_RESERVED_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_END + (DS_SLOT_MAX * DRAGON_SOUL_DECK_RESERVED_MAX_NUM),

    BELT_INVENTORY_SLOT_START = DRAGON_SOUL_EQUIP_RESERVED_SLOT_END,
    BELT_INVENTORY_SLOT_END = BELT_INVENTORY_SLOT_START + BELT_INVENTORY_SLOT_COUNT,

    INVENTORY_AND_EQUIP_SLOT_MAX = BELT_INVENTORY_SLOT_END,
};

#pragma pack(push, 1)

typedef struct SItemPos
{
    BYTE window_type;
    WORD cell;
    SItemPos()
    {
        window_type = INVENTORY;
        cell = WORD_MAX;
    }

    SItemPos(BYTE _window_type, WORD _cell)
    {
        window_type = _window_type;
        cell = _cell;
    }

    bool IsValidItemPosition() const
    {
        switch (window_type)
        {
        case RESERVED_WINDOW:
            return false;
        case INVENTORY:
        case EQUIPMENT:
        case BELT_INVENTORY:
            return cell < INVENTORY_AND_EQUIP_SLOT_MAX;
        case DRAGON_SOUL_INVENTORY:
            return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM);
#ifdef ENABLE_SPECIAL_STORAGE
        case UPGRADE_INVENTORY:
        case BOOK_INVENTORY:
        case STONE_INVENTORY:
        case CHEST_INVENTORY:
            return cell < (SPECIAL_INVENTORY_MAX_NUM);
#endif
        case SAFEBOX:
        case MALL:
            return false;
        default:
            return false;
        }
        return false;
    }

    bool IsEquipPosition() const
    {
        return ((INVENTORY == window_type || EQUIPMENT == window_type) && cell >= INVENTORY_MAX_NUM && cell < INVENTORY_MAX_NUM + WEAR_MAX_NUM)
            || IsDragonSoulEquipPosition();
    }

    bool IsDragonSoulEquipPosition() const
    {
        return (window_type == INVENTORY) && (DRAGON_SOUL_EQUIP_SLOT_START <= cell) && (DRAGON_SOUL_EQUIP_SLOT_END > cell);
    }

    bool IsBeltInventoryPosition() const
    {
        return (BELT_INVENTORY_SLOT_START <= cell) && (BELT_INVENTORY_SLOT_END > cell);
    }

    bool IsDefaultInventoryPosition() const
    {
        return INVENTORY == window_type && cell < INVENTORY_MAX_NUM;
    }

    bool operator==(const struct SItemPos& rhs) const
    {
        return (window_type == rhs.window_type) && (cell == rhs.cell);
    }
    bool operator<(const struct SItemPos& rhs) const
    {
        return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell));
    }
    bool operator!=(const struct SItemPos& rhs) const
    {
        return (window_type != rhs.window_type) || (cell != rhs.cell);
    }
} TItemPos;

const TItemPos NPOS(RESERVED_WINDOW, WORD_MAX);

typedef struct SItemPosEx
{
    TItemPos pos;
    int id{ 0 };
} TItemPosEx;

typedef enum
{
    SHOP_COIN_TYPE_GOLD, // DEFAULT VALUE
    SHOP_COIN_TYPE_SECONDARY_COIN,
} EShopCoinType;

#ifdef ENABLE_SKILL_COLOR_SYSTEM
namespace ESkillColorLength
{
    enum ESkillColorLength
    {
        MAX_SKILL_COUNT = 6,
        MAX_EFFECT_COUNT = 5,
        MAX_BUFF_COUNT = 5,
        BUFF_BEGIN = MAX_SKILL_COUNT,
    };
}
#endif

#ifdef __AURA_SYSTEM__
typedef struct SAuraRefineInfo
{
    BYTE bAuraRefineInfoLevel;
    BYTE bAuraRefineInfoExpPercent;
} TAuraRefineInfo;

enum EAuraMisc
{
    AURA_MAX_LEVEL = 250,
    AURA_REFINE_MAX_DISTANCE = 1000,
};

enum EAuraWindowType
{
    AURA_WINDOW_TYPE_ABSORB,
    AURA_WINDOW_TYPE_GROWTH,
    AURA_WINDOW_TYPE_EVOLVE,
    AURA_WINDOW_TYPE_MAX,
};

enum EAuraSlotType
{
    AURA_SLOT_MAIN,
    AURA_SLOT_SUB,
    AURA_SLOT_RESULT,
    AURA_SLOT_MAX
};

enum EAuraGradeType
{
    AURA_GRADE_NONE,
    AURA_GRADE_ORDINARY,
    AURA_GRADE_SIMPLE,
    AURA_GRADE_NOBLE,
    AURA_GRADE_SPARKLING,
    AURA_GRADE_MAGNIFICENT,
    AURA_GRADE_RADIANT,
    AURA_GRADE_MAX_NUM,
};
enum EAuraRefineInfoType
{
    AURA_REFINE_INFO_STEP,
    AURA_REFINE_INFO_LEVEL_MIN,
    AURA_REFINE_INFO_LEVEL_MAX,
    AURA_REFINE_INFO_NEED_EXP,
    AURA_REFINE_INFO_MATERIAL_VNUM,
    AURA_REFINE_INFO_MATERIAL_COUNT,
    AURA_REFINE_INFO_NEED_GOLD,
    AURA_REFINE_INFO_EVOLVE_PCT,
    AURA_REFINE_INFO_MAX
};

enum ERefineInfoType
{
    AURA_REFINE_INFO_SLOT_CURRENT,
    AURA_REFINE_INFO_SLOT_NEXT,
    AURA_REFINE_INFO_SLOT_EVOLVED,
    AURA_REFINE_INFO_SLOT_MAX
};
#endif

#pragma pack(pop)

#endif
 
itemdata.h:
Genişlet Daralt Kopyala
//değiştir

        enum EWearPositions
        {
            WEAR_BODY,          // 0
            WEAR_HEAD,          // 1
            WEAR_FOOTS,         // 2
            WEAR_WRIST,         // 3
            WEAR_WEAPON,        // 4
            WEAR_NECK,          // 5
            WEAR_EAR,           // 6
            WEAR_UNIQUE1,       // 7
            WEAR_UNIQUE2,       // 8
            WEAR_ARROW,         // 9
            WEAR_SHIELD,        // 10

            WEAR_ABILITY1,  // 11
            WEAR_ABILITY2,  // 12
            WEAR_ABILITY3,  // 13
            WEAR_ABILITY4,  // 14
            WEAR_ABILITY5,  // 15
            WEAR_ABILITY6,  // 16
            WEAR_ABILITY7,  // 17
            WEAR_ABILITY8,  // 18
            WEAR_COSTUME_BODY,    // 19
            WEAR_COSTUME_HAIR,    // 20
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
            WEAR_COSTUME_MOUNT,// 21
#endif
#ifdef ENABLE_ACCE_SYSTEM
            WEAR_COSTUME_ACCE,// 22
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
            WEAR_COSTUME_WEAPON,// 23
#endif
#ifdef ENABLE_AURA_SYSTEM
            WEAR_COSTUME_AURA,// 24
#endif
#ifdef ENABLE_EFFECT_SYSTEM
            WEAR_EFFECT_ARMOR,
            WEAR_EFFECT_WEAPON,
#endif
            WEAR_RING1,// 27
            WEAR_RING2,// 28
            WEAR_BELT,// 29

#ifdef ENABLE_PENDANT_SYSTEM
            WEAR_PENDANT,// 30
#endif

            WEAR_MAX_NUM = 32,
        };

GameType.h:
Genişlet Daralt Kopyala
//değiştir

#ifdef ENABLE_COSTUME_SYSTEM
    const DWORD c_Costume_Slot_Start    = c_Equipment_Start + 19;
    const DWORD    c_Costume_Slot_Body        = c_Costume_Slot_Start + 0;
    const DWORD    c_Costume_Slot_Hair        = c_Costume_Slot_Start + 1;
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
    const DWORD    c_Costume_Slot_Mount    = c_Costume_Slot_Start + 2;
#endif
#ifdef ENABLE_ACCE_SYSTEM
    const DWORD    c_Costume_Slot_Acce        = c_Costume_Slot_Start + 3;
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    const DWORD c_Costume_Slot_Weapon = c_Costume_Slot_Start + 4;
#endif
#ifdef ENABLE_AURA_SYSTEM
    const DWORD c_Costume_Slot_Aura        = c_Costume_Slot_Start + 5;
#endif
    const DWORD c_Costume_Effect_Body    = c_Costume_Slot_Start + 6;
    const DWORD c_Costume_Effect_Weapon = c_Costume_Slot_Start + 7;

    const DWORD c_Costume_Slot_Count    = 8;
    const DWORD c_Costume_Slot_End        = c_Costume_Slot_Start + c_Costume_Slot_Count;
#endif

length.h:
Genişlet Daralt Kopyala
//değiştir
enum EWearPositions
{
    WEAR_BODY,        // 0
    WEAR_HEAD,        // 1
    WEAR_FOOTS,        // 2
    WEAR_WRIST,        // 3
    WEAR_WEAPON,    // 4
    WEAR_NECK,        // 5
    WEAR_EAR,        // 6
    WEAR_UNIQUE1,    // 7
    WEAR_UNIQUE2,    // 8
    WEAR_ARROW,        // 9
    WEAR_SHIELD,    // 10
    WEAR_ABILITY1,  // 11
    WEAR_ABILITY2,  // 12
    WEAR_ABILITY3,  // 13
    WEAR_ABILITY4,  // 14
    WEAR_ABILITY5,  // 15
    WEAR_ABILITY6,  // 16
    WEAR_ABILITY7,  // 17
    WEAR_ABILITY8,  // 18
    WEAR_COSTUME_BODY,    // 19
    WEAR_COSTUME_HAIR,    // 20

#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
    WEAR_COSTUME_MOUNT,//21
#endif
#ifdef ENABLE_ACCE_SYSTEM
    WEAR_COSTUME_ACCE,//22
#endif
#ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    WEAR_COSTUME_WEAPON,//23
#endif
#ifdef __AURA_SYSTEM__
    WEAR_COSTUME_AURA,//24
#endif
#ifdef ENABLE_EFFECT_SYSTEM
    WEAR_EFFECT_ARMOR,
    WEAR_EFFECT_WEAPON,
#endif
    WEAR_RING1,//27
    WEAR_RING2,//28
    WEAR_BELT,//29
#ifdef ENABLE_PENDANT_SYSTEM
    WEAR_PENDANT,//30
#endif

    WEAR_MAX = 32    //
};

bunları uygula build al dene bakalım
 
Geri
Üst