Yardım K envanter itemlerin görünmemesi

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

emirhan z

Üye
Üye
Mesaj
53
Çözümler
1
Beğeni
13
Puan
59
Ticaret Puanı
0
Merhaba uzatmadan soruma geçeyim k envanter kullanıyorum fakat itemleri yükseltme yaparken bende olan sayıları k envanterde olanları görmüyor bu sorunu nasıl çözebiliriz?
Linkleri görebilmek için giriş yap veya kayıt ol.
 
Sistem k envanterine uyumlu değil. Envanter taraması yapan kodlar olması lazım. K envanter başlangıç ve bitiş pos değerlerini vermeniz gerekli.
 
Sistem k envanterine uyumlu değil. Envanter taraması yapan kodlar olması lazım. K envanter başlangıç ve bitiş pos değerlerini vermeniz gerekli.

Kod:
if player.GetItemCountByVnum(itemVnum) >= itemCount:
                for i in xrange(player.INVENTORY_SLOT_COUNT):
                    vnum = player.GetItemIndex(i)
                    count= player.GetItemCount(i)


Şunun gibi bir şey mi
 
Aynen. Bakın for i in xrange(payer.INVENTORY_SLOT_COUNT) yazıyor.
Kaynak kodlarınızın lenght.h dosyasını açın ve k envanter için sabitler var. START, END gibi. Visual Studio'da fare ile üstüne gelirseniz başlangıç ve bitiş değerini verecektir. xrange sonunda onu bitiş değerini yazın.

Mesela şu konuyu inceleyebilirsiniz: Çözüldü - Efsun botu k envantere uyarlamak
 
Aynen. Bakın for i in xrange(payer.INVENTORY_SLOT_COUNT) yazıyor.
Kaynak kodlarınızın lenght.h dosyasını açın ve k envanter için sabitler var. START, END gibi. Visual Studio'da fare ile üstüne gelirseniz başlangıç ve bitiş değerini verecektir. xrange sonunda onu bitiş değerini yazın.

Mesela şu konuyu inceleyebilirsiniz: Çözüldü - Efsun botu k envantere uyarlamak
Linkleri görebilmek için giriş yap veya kayıt ol.

bende çıkmamasının sebebi ne olabilir ?
 
O değil. Özel envanterde kaç slot olacağını belirtiyor. Birde global pos değerlerini tutan olması lazım.
lengh.h, enum EMisc2 içinde olması lazım
 
Oraya eklememişler ya
Kod:
{
    DRAGON_SOUL_EQUIP_SLOT_START = INVENTORY_MAX_NUM + WEAR_MAX_NUM,    // 180 + 32 (212)
    DRAGON_SOUL_EQUIP_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_START + (DS_SLOT_MAX * DRAGON_SOUL_DECK_MAX_NUM),    // 212 + 12 ( 224 )
    DRAGON_SOUL_EQUIP_RESERVED_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_END + (DS_SLOT_MAX * DRAGON_SOUL_DECK_RESERVED_MAX_NUM),    // 224 + 18 ( 242 )

    BELT_INVENTORY_SLOT_START = DRAGON_SOUL_EQUIP_RESERVED_SLOT_END,    // 242
    BELT_INVENTORY_SLOT_END = BELT_INVENTORY_SLOT_START + BELT_INVENTORY_SLOT_COUNT,    // 242 + 16 ( 258 )

    INVENTORY_AND_EQUIP_SLOT_MAX = BELT_INVENTORY_SLOT_END,
};
bu şeklilde başka bir yerde de yok sanırım yapamayacağız bu işi :/
 
Eklediğiniz k envanter sistemin linkini verebilir misiniz? Kodları inceleyip nerede olduğunu söylerim
 
lenght.h dosyası içinde yazan her şeyi paylaşır mısınız
 
lenght.h dosyası içinde yazan her şeyi paylaşır mısınız
C++:
#ifndef __INC_METIN_II_LENGTH_H__
#define __INC_METIN_II_LENGTH_H__

#include "service.h"

#define WORD_MAX 0xffff
enum EMisc
{
    MAX_HOST_LENGTH            = 15,
    IP_ADDRESS_LENGTH        = 15,
    LOGIN_MAX_LEN            = 30,
    PASSWD_MAX_LEN            = 16,
    PLAYER_PER_ACCOUNT        = 5,
    ACCOUNT_STATUS_MAX_LEN    = 8,
    CHARACTER_NAME_MAX_LEN    = 24,
    SHOP_SIGN_MAX_LEN        = 32,
    INVENTORY_MAX_NUM        = 180,
    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    = 64,    /* 호스트의 최대 아이템 개수 */
    SHOP_GUEST_ITEM_MAX_NUM = 18,    /* 게스트의 최대 아이템 개수 */
 
    OFFLINE_SHOP_HOST_ITEM_MAX_NUM = 120,

    SHOP_PRICELIST_MAX_NUM    = 64,    ///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수

#ifdef ENABLE_TICKET_SYSTEM
    CHAT_MAX_LEN = 700,
#else
    CHAT_MAX_LEN = 512,
#endif

    QUICKSLOT_MAX_NUM        = 36,

    JOURNAL_MAX_NUM            = 2,

    QUERY_MAX_LEN            = 8192,

    FILE_MAX_LEN            = 128,

    PLAYER_EXP_TABLE_MAX    = 250,
    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 __GAYA__
    GAYA_MAX = 999999,
#endif

#ifdef ENABLE_CHEQUE_SYSTEM
    CHEQUE_MAX = 100,
#endif
    YENIBIRIM_MAX = 5000,
    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_SPECIAL_STORAGE
    SPECIAL_INVENTORY_MAX_NUM = 90,
#endif


/**
     **** 현재까지 할당 된 아이템 영역 정리 (DB상 Item Position) ****
    +------------------------------------------------------+ 0
    | 캐릭터 기본 인벤토리 (45칸 * 2페이지) 90칸           |
    +------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90)
    | 캐릭터 장비 창 (착용중인 아이템) 32칸                |
    +------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32)
    | 용혼석 장비 창 (착용중인 용혼석) 12칸                |
    +------------------------------------------------------+ 134 = 122 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_MAX_NUM(2)
    | 용혼석 장비 창 예약 (아직 미사용) 18칸               |
    +------------------------------------------------------+ 152 = 134 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_RESERVED_MAX_NUM(3)
    | 벨트 인벤토리 (벨트 착용시에만 벨트 레벨에 따라 활성)|
    +------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX
    | 미사용                                               |
    +------------------------------------------------------+ ??
*/
};

#ifdef __CHANGELOOK_SYSTEM__
enum EChangeLookInfo
{
    CL_WINDOW_MAX_MATERIALS = 2,
    CL_CLEAN_ATTR_VALUE0 = 8,
    CL_TRANSMUTATION_PRICE = 50000000,
};
#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 __SASH_SYSTEM__
    WEAR_COSTUME_SASH,
#endif
#ifdef __WEAPON_COSTUME_SYSTEM__
    WEAR_COSTUME_WEAPON,
#endif
    WEAR_COSTUME_MOUNT,

    WEAR_RING1,            // 21    : 신규 반지슬롯1 (왼쪽)
    WEAR_RING2,            // 22    : 신규 반지슬롯2 (오른쪽)

    WEAR_BELT,            // 23    : 신규 벨트슬롯

    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,    // NOTE: 중요! 아직 사용중이진 않지만, 3페이지 분량을 예약 해 둠. DS DECK을 늘릴 경우 반드시 그 수만큼 RESERVED에서 차감해야 함!
};

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,
    JOB_WOLFMAN,
    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_ELEC = (1 << 11),
    RACE_FLAG_WIND = (1 << 12),
    RACE_FLAG_EARTH = (1 << 13),
    RACE_FLAG_DARK = (1 << 14),
    RACE_FLAG_ATT_ELEC = (1 << 15),
    RACE_FLAG_ATT_FIRE = (1 << 16),
    RACE_FLAG_ATT_ICE = (1 << 17),
    RACE_FLAG_ATT_WIND = (1 << 18),
    RACE_FLAG_ATT_EARTH = (1 << 19),
    RACE_FLAG_ATT_DARK = (1 << 20),
};

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 __SASH_SYSTEM__
    PART_SASH,
#endif
#ifdef __NEW_ARROW_SYSTEM__
    PART_ARROW_TYPE,
#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_SHOUT_TRADE,
    CHAT_TYPE_WHISPER,
    CHAT_TYPE_BIG_NOTICE,
    CHAT_TYPE_MONARCH_NOTICE,
    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
};

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,
    APPLY_MAX_HP,
    APPLY_MAX_SP,
    APPLY_CON,
    APPLY_INT,
    APPLY_STR,
    APPLY_DEX,
    APPLY_ATT_SPEED,
    APPLY_MOV_SPEED,
    APPLY_CAST_SPEED,
    APPLY_HP_REGEN,
    APPLY_SP_REGEN,
    APPLY_POISON_PCT,
    APPLY_STUN_PCT,
    APPLY_SLOW_PCT,
    APPLY_CRITICAL_PCT,
    APPLY_PENETRATE_PCT,
    APPLY_ATTBONUS_HUMAN,
    APPLY_ATTBONUS_ANIMAL,
    APPLY_ATTBONUS_ORC,
    APPLY_ATTBONUS_MILGYO,
    APPLY_ATTBONUS_UNDEAD,
    APPLY_ATTBONUS_DEVIL,
    APPLY_STEAL_HP,
    APPLY_STEAL_SP,
    APPLY_MANA_BURN_PCT,
    APPLY_DAMAGE_SP_RECOVER,
    APPLY_BLOCK,
    APPLY_DODGE,
    APPLY_RESIST_SWORD,
    APPLY_RESIST_TWOHAND,
    APPLY_RESIST_DAGGER,
    APPLY_RESIST_BELL,
    APPLY_RESIST_FAN,
    APPLY_RESIST_BOW,
    APPLY_RESIST_FIRE,
    APPLY_RESIST_ELEC,
    APPLY_RESIST_MAGIC,
    APPLY_RESIST_WIND,
    APPLY_REFLECT_MELEE,
    APPLY_REFLECT_CURSE,
    APPLY_POISON_REDUCE,
    APPLY_KILL_SP_RECOVER,
    APPLY_EXP_DOUBLE_BONUS,
    APPLY_GOLD_DOUBLE_BONUS,
    APPLY_ITEM_DROP_BONUS,
    APPLY_POTION_BONUS,
    APPLY_KILL_HP_RECOVER,
    APPLY_IMMUNE_STUN,
    APPLY_IMMUNE_SLOW,
    APPLY_IMMUNE_FALL,
    APPLY_SKILL,
    APPLY_BOW_DISTANCE,
    APPLY_ATT_GRADE_BONUS,
    APPLY_DEF_GRADE_BONUS,
    APPLY_MAGIC_ATT_GRADE,
    APPLY_MAGIC_DEF_GRADE,
    APPLY_CURSE_PCT,
    APPLY_MAX_STAMINA,
    APPLY_ATTBONUS_WARRIOR,
    APPLY_ATTBONUS_ASSASSIN,
    APPLY_ATTBONUS_SURA,
    APPLY_ATTBONUS_SHAMAN,
    APPLY_ATTBONUS_MONSTER,
    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,
    APPLY_BLEEDING_PCT,
    APPLY_BLEEDING_REDUCE,
    APPLY_ATTBONUS_WOLFMAN,
    APPLY_RESIST_WOLFMAN,
    APPLY_RESIST_CLAW,
#ifdef __ANTI_RESIST_MAGIC_BONUS__
    APPLY_ANTI_RESIST_MAGIC,
#endif
#ifdef ELEMENT_NEW_BONUSES
    APPLY_ATTBONUS_ELEC,
    APPLY_ATTBONUS_FIRE,
    APPLY_ATTBONUS_ICE,
    APPLY_ATTBONUS_WIND,
    APPLY_ATTBONUS_EARTH,
    APPLY_ATTBONUS_DARK,
#endif
    APPLY_KARAKTER_SAVUNMASI,
    MAX_APPLY_NUM,
};

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,
    BELT_INVENTORY,
#ifdef ENABLE_SPECIAL_STORAGE
    UPGRADE_INVENTORY,
    BOOK_INVENTORY,
    STONE_INVENTORY,
#endif
#ifdef __AUCTION__
    AUCTION,
#endif
    GROUND
};

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,
    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,
    MOB_RESIST_CLAW,
    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, // 1시간
    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,
    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,        // 경험치가 1.2배
    PREMIUM_ITEM,        // 아이템 드롭율이 2배
    PREMIUM_SAFEBOX,        // 창고가 1칸에서 3칸
    PREMIUM_AUTOLOOT,        // 돈 자동 줍기
    PREMIUM_FISH_MIND,        // 고급 물고기 낚일 확률 상승
    PREMIUM_MARRIAGE_FAST,    // 금실 증가 양을 빠르게합니다.
    PREMIUM_GOLD,        // 돈 드롭율이 1.5배
    PREMIUM_MAX_NUM = 9
};

enum SPECIAL_EFFECT
{
    SE_NONE,

    SE_HPUP_RED,
    SE_SPUP_BLUE,
    SE_SPEEDUP_GREEN,
    SE_DXUP_PURPLE,
    SE_GECTI,
    SE_YANDI,
    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,        // 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
    SE_EQUIP_HALLOWEEN_CANDY,        // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트
    SE_EQUIP_HAPPINESS_RING,        // 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
    SE_EQUIP_LOVE_PENDANT,        // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
#ifdef __SASH_SYSTEM__
    SE_EFFECT_SASH_SUCCEDED,
    SE_EFFECT_SASH_EQUIP,
#endif
#ifdef __VERSION_162__
    SE_EFFECT_HEALER,
#endif
} ;

#ifdef ITEM_BUFF_SYSTEM
enum EItemBuffConfig
{
 
//first item resist buff config 
    MASTER_RESIST_BLESS_ITEM_BUFF_VNUM = 79000,
    MASTER_RESIST_BLESS_AFFECT_VALUE = 24,
    MASTER_RESIST_BLESS_AFFECT_TIME_VALUE = 160, 
    MASTER_RESIST_BLESS_USINGS = 80,
// end of first item resist buff config

//secound item resist buff config 
    GRAND_RESIST_BLESS_ITEM_BUFF_VNUM = 79001,
    GRAND_RESIST_BLESS_AFFECT_VALUE = 29,
    GRAND_RESIST_BLESS_AFFECT_TIME_VALUE = 224, 
    GRAND_RESIST_BLESS_USINGS = 60,
//end of second item resist buff config 

//third item resist buff config 
    PERFECT_RESIST_BLESS_ITEM_BUFF_VNUM = 79002,
    PERFECT_RESIST_BLESS_AFFECT_VALUE = 35,
    PERFECT_RESIST_BLESS_AFFECT_TIME_VALUE = 310, 
    PERFECT_RESIST_BLESS_USINGS = 50,
//end of third item resist buff config 

//first item critical buff config
    MASTER_CRITICAL_BLESS_ITEM_BUFF_VNUM = 79003,
    MASTER_CRITICAL_BLESS_AFFECT_VALUE = 24,
    MASTER_CRITICAL_BLESS_AFFECT_TIME_VALUE = 110, 
    MASTER_CRITICAL_BLESS_USINGS = 80,
//end of first item critical buff config

//secound item critical buff config 
    GRAND_CRITICAL_BLESS_ITEM_BUFF_VNUM = 79004,
    GRAND_CRITICAL_BLESS_AFFECT_VALUE = 29,
    GRAND_CRITICAL_BLESS_AFFECT_TIME_VALUE = 142, 
    GRAND_CRITICAL_BLESS_USINGS = 60,
//end of secound item critical buff config 

//third item critical buff config
    PERFECT_CRITICAL_BLESS_ITEM_BUFF_VNUM = 79005,
    PERFECT_CRITICAL_BLESS_AFFECT_VALUE = 35,
    PERFECT_CRITICAL_BLESS_AFFECT_TIME_VALUE = 185, 
    PERFECT_CRITICAL_BLESS_USINGS = 50, 
//end of third item critical buff config 

//first item reflection buff config
    MASTER_REFLECT_BLESS_ITEM_BUFF_VNUM = 79006,
    MASTER_REFLECT_BLESS_AFFECT_VALUE = 21,
    MASTER_REFLECT_BLESS_AFFECT_TIME_VALUE = 160, 
    MASTER_REFLECT_BLESS_USINGS = 80,
//end of first item reflection buff config

//secound item reflection buff config 
    GRAND_REFLECT_BLESS_ITEM_BUFF_VNUM = 79007,
    GRAND_REFLECT_BLESS_AFFECT_VALUE = 31,
    GRAND_REFLECT_BLESS_AFFECT_TIME_VALUE = 224, 
    GRAND_REFLECT_BLESS_USINGS = 60,
//end of secound item reflection buff config 

//third item reflection buff config
    PERFECT_REFLECT_BLESS_ITEM_BUFF_VNUM = 79008,
    PERFECT_REFLECT_BLESS_AFFECT_VALUE = 45,
    PERFECT_REFLECT_BLESS_AFFECT_TIME_VALUE = 310, 
    PERFECT_REFLECT_BLESS_USINGS = 50, 
//end of third item reflection buff config 

};
#endif

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

#include "item_length.h"

// inventory의 position을 나타내는 구조체
// int와의 암시적 형변환이 있는 이유는,
// 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,)
// 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ‹š문이다.

enum EDragonSoulRefineWindowSize
{
    DRAGON_SOUL_REFINE_GRID_MAX = 15,
};

enum EMisc2
{
    DRAGON_SOUL_EQUIP_SLOT_START = INVENTORY_MAX_NUM + WEAR_MAX_NUM,    // 180 + 32 (212)
    DRAGON_SOUL_EQUIP_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_START + (DS_SLOT_MAX * DRAGON_SOUL_DECK_MAX_NUM),    // 212 + 12 ( 224 )
    DRAGON_SOUL_EQUIP_RESERVED_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_END + (DS_SLOT_MAX * DRAGON_SOUL_DECK_RESERVED_MAX_NUM),    // 224 + 18 ( 242 )

    BELT_INVENTORY_SLOT_START = DRAGON_SOUL_EQUIP_RESERVED_SLOT_END,    // 242
    BELT_INVENTORY_SLOT_END = BELT_INVENTORY_SLOT_START + BELT_INVENTORY_SLOT_COUNT,    // 242 + 16 ( 258 )

    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:
            return cell < (SPECIAL_INVENTORY_MAX_NUM);
#endif
        // 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다.
        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 (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));
    }
} TItemPos;

const TItemPos NPOS (RESERVED_WINDOW, WORD_MAX);

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

#pragma pack(pop)

#endif

  1. #ifndef __INC_METIN_II_LENGTH_H__
  2. #define __INC_METIN_II_LENGTH_H__

  3. #include "service.h"

  4. #define WORD_MAX 0xffff
  5. enum EMisc
  6. {
  7. MAX_HOST_LENGTH = 15,
  8. IP_ADDRESS_LENGTH = 15,
  9. LOGIN_MAX_LEN = 30,
  10. PASSWD_MAX_LEN = 16,
  11. PLAYER_PER_ACCOUNT = 5,
  12. ACCOUNT_STATUS_MAX_LEN = 8,
  13. CHARACTER_NAME_MAX_LEN = 24,
  14. SHOP_SIGN_MAX_LEN = 32,
  15. INVENTORY_MAX_NUM = 180,
  16. ABILITY_MAX_NUM = 50,
  17. EMPIRE_MAX_NUM = 4,
  18. BANWORD_MAX_LEN = 24,
  19. SMS_MAX_LEN = 80,
  20. MOBILE_MAX_LEN = 32,
  21. SOCIAL_ID_MAX_LEN = 18,

  22. GUILD_NAME_MAX_LEN = 12,

  23. SHOP_HOST_ITEM_MAX_NUM = 64, /* 호스트의 최대 아이템 개수 */
  24. SHOP_GUEST_ITEM_MAX_NUM = 18, /* 게스트의 최대 아이템 개수 */

  25. OFFLINE_SHOP_HOST_ITEM_MAX_NUM = 120,

  26. SHOP_PRICELIST_MAX_NUM = 64, ///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수

  27. #ifdef ENABLE_TICKET_SYSTEM
  28. CHAT_MAX_LEN = 700,
  29. #else
  30. CHAT_MAX_LEN = 512,
  31. #endif

  32. QUICKSLOT_MAX_NUM = 36,

  33. JOURNAL_MAX_NUM = 2,

  34. QUERY_MAX_LEN = 8192,

  35. FILE_MAX_LEN = 128,

  36. PLAYER_EXP_TABLE_MAX = 250,
  37. PLAYER_MAX_LEVEL_CONST = 250,

  38. GUILD_MAX_LEVEL = 20,
  39. MOB_MAX_LEVEL = 100,

  40. ATTRIBUTE_MAX_VALUE = 20,
  41. CHARACTER_PATH_MAX_NUM = 64,
  42. SKILL_MAX_NUM = 255,
  43. SKILLBOOK_DELAY_MIN = 64800,
  44. SKILLBOOK_DELAY_MAX = 108000,
  45. SKILL_MAX_LEVEL = 40,

  46. APPLY_NAME_MAX_LEN = 32,
  47. EVENT_FLAG_NAME_MAX_LEN = 32,

  48. MOB_SKILL_MAX_NUM = 5,

  49. POINT_MAX_NUM = 255,
  50. DRAGON_SOUL_BOX_SIZE = 32,
  51. DRAGON_SOUL_BOX_COLUMN_NUM = 8,
  52. DRAGON_SOUL_BOX_ROW_NUM = DRAGON_SOUL_BOX_SIZE / DRAGON_SOUL_BOX_COLUMN_NUM,
  53. DRAGON_SOUL_REFINE_GRID_SIZE = 15,
  54. MAX_AMOUNT_OF_MALL_BONUS = 20,

  55. WEAR_MAX_NUM = 32,

  56. #ifdef __GAYA__
  57. GAYA_MAX = 999999,
  58. #endif

  59. #ifdef ENABLE_CHEQUE_SYSTEM
  60. CHEQUE_MAX = 100,
  61. #endif
  62. YENIBIRIM_MAX = 5000,
  63. MAX_PASSPOD = 8 ,

  64. //END_LIMIT_GOLD

  65. OPENID_AUTHKEY_LEN = 32,

  66. SHOP_TAB_NAME_MAX = 32,
  67. SHOP_TAB_COUNT_MAX = 3,

  68. BELT_INVENTORY_SLOT_WIDTH = 4,
  69. BELT_INVENTORY_SLOT_HEIGHT= 4,

  70. BELT_INVENTORY_SLOT_COUNT = BELT_INVENTORY_SLOT_WIDTH * BELT_INVENTORY_SLOT_HEIGHT,

  71. #ifdef ENABLE_SPECIAL_STORAGE
  72. SPECIAL_INVENTORY_MAX_NUM = 90,
  73. #endif


  74. /**
  75. **** 현재까지 할당 된 아이템 영역 정리 (DB상 Item Position) ****
  76. +------------------------------------------------------+ 0
  77. | 캐릭터 기본 인벤토리 (45칸 * 2페이지) 90칸 |
  78. +------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90)
  79. | 캐릭터 장비 창 (착용중인 아이템) 32칸 |
  80. +------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32)
  81. | 용혼석 장비 창 (착용중인 용혼석) 12칸 |
  82. +------------------------------------------------------+ 134 = 122 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_MAX_NUM(2)
  83. | 용혼석 장비 창 예약 (아직 미사용) 18칸 |
  84. +------------------------------------------------------+ 152 = 134 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_RESERVED_MAX_NUM(3)
  85. | 벨트 인벤토리 (벨트 착용시에만 벨트 레벨에 따라 활성)|
  86. +------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX
  87. | 미사용 |
  88. +------------------------------------------------------+ ??
  89. */
  90. };

  91. #ifdef __CHANGELOOK_SYSTEM__
  92. enum EChangeLookInfo
  93. {
  94. CL_WINDOW_MAX_MATERIALS = 2,
  95. CL_CLEAN_ATTR_VALUE0 = 8,
  96. CL_TRANSMUTATION_PRICE = 50000000,
  97. };
  98. #endif

  99. enum EMatrixCard
  100. {
  101. MATRIX_CODE_MAX_LEN = 192,
  102. MATRIX_ANSWER_MAX_LEN = 8,
  103. };

  104. enum EWearPositions
  105. {
  106. WEAR_BODY, // 0
  107. WEAR_HEAD, // 1
  108. WEAR_FOOTS, // 2
  109. WEAR_WRIST, // 3
  110. WEAR_WEAPON, // 4
  111. WEAR_NECK, // 5
  112. WEAR_EAR, // 6
  113. WEAR_UNIQUE1, // 7
  114. WEAR_UNIQUE2, // 8
  115. WEAR_ARROW, // 9
  116. WEAR_SHIELD, // 10
  117. WEAR_ABILITY1, // 11
  118. WEAR_ABILITY2, // 12
  119. WEAR_ABILITY3, // 13
  120. WEAR_ABILITY4, // 14
  121. WEAR_ABILITY5, // 15
  122. WEAR_ABILITY6, // 16
  123. WEAR_ABILITY7, // 17
  124. WEAR_ABILITY8, // 18
  125. WEAR_COSTUME_BODY, // 19
  126. WEAR_COSTUME_HAIR, // 20
  127. #ifdef __SASH_SYSTEM__
  128. WEAR_COSTUME_SASH,
  129. #endif
  130. #ifdef __WEAPON_COSTUME_SYSTEM__
  131. WEAR_COSTUME_WEAPON,
  132. #endif
  133. WEAR_COSTUME_MOUNT,

  134. WEAR_RING1, // 21 : 신규 반지슬롯1 (왼쪽)
  135. WEAR_RING2, // 22 : 신규 반지슬롯2 (오른쪽)

  136. WEAR_BELT, // 23 : 신규 벨트슬롯

  137. WEAR_MAX = 32 //
  138. };

  139. enum EDragonSoulDeckType
  140. {
  141. DRAGON_SOUL_DECK_0,
  142. DRAGON_SOUL_DECK_1,
  143. DRAGON_SOUL_DECK_MAX_NUM = 2,

  144. DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3, // NOTE: 중요! 아직 사용중이진 않지만, 3페이지 분량을 예약 해 둠. DS DECK을 늘릴 경우 반드시 그 수만큼 RESERVED에서 차감해야 함!
  145. };

  146. enum ESex
  147. {
  148. SEX_MALE,
  149. SEX_FEMALE
  150. };

  151. enum EDirection
  152. {
  153. DIR_NORTH,
  154. DIR_NORTHEAST,
  155. DIR_EAST,
  156. DIR_SOUTHEAST,
  157. DIR_SOUTH,
  158. DIR_SOUTHWEST,
  159. DIR_WEST,
  160. DIR_NORTHWEST,
  161. DIR_MAX_NUM
  162. };

  163. #define ABILITY_MAX_LEVEL 10 /* 기술 최대 레벨 */

  164. enum EAbilityDifficulty
  165. {
  166. DIFFICULTY_EASY,
  167. DIFFICULTY_NORMAL,
  168. DIFFICULTY_HARD,
  169. DIFFICULTY_VERY_HARD,
  170. DIFFICULTY_NUM_TYPES
  171. };

  172. enum EAbilityCategory
  173. {
  174. CATEGORY_PHYSICAL, /* 신체적 어빌리티 */
  175. CATEGORY_MENTAL, /* 정신적 어빌리티 */
  176. CATEGORY_ATTRIBUTE, /* 능력 어빌리티 */
  177. CATEGORY_NUM_TYPES
  178. };

  179. enum EJobs
  180. {
  181. JOB_WARRIOR,
  182. JOB_ASSASSIN,
  183. JOB_SURA,
  184. JOB_SHAMAN,
  185. JOB_WOLFMAN,
  186. JOB_MAX_NUM
  187. };

  188. enum ESkillGroups
  189. {
  190. SKILL_GROUP_MAX_NUM = 2,
  191. };

  192. enum ERaceFlags
  193. {
  194. RACE_FLAG_ANIMAL = (1 << 0),
  195. RACE_FLAG_UNDEAD = (1 << 1),
  196. RACE_FLAG_DEVIL = (1 << 2),
  197. RACE_FLAG_HUMAN = (1 << 3),
  198. RACE_FLAG_ORC = (1 << 4),
  199. RACE_FLAG_MILGYO = (1 << 5),
  200. RACE_FLAG_INSECT = (1 << 6),
  201. RACE_FLAG_FIRE = (1 << 7),
  202. RACE_FLAG_ICE = (1 << 8),
  203. RACE_FLAG_DESERT = (1 << 9),
  204. RACE_FLAG_TREE = (1 << 10),
  205. RACE_FLAG_ELEC = (1 << 11),
  206. RACE_FLAG_WIND = (1 << 12),
  207. RACE_FLAG_EARTH = (1 << 13),
  208. RACE_FLAG_DARK = (1 << 14),
  209. RACE_FLAG_ATT_ELEC = (1 << 15),
  210. RACE_FLAG_ATT_FIRE = (1 << 16),
  211. RACE_FLAG_ATT_ICE = (1 << 17),
  212. RACE_FLAG_ATT_WIND = (1 << 18),
  213. RACE_FLAG_ATT_EARTH = (1 << 19),
  214. RACE_FLAG_ATT_DARK = (1 << 20),
  215. };

  216. enum ELoads
  217. {
  218. LOAD_NONE,
  219. LOAD_LIGHT,
  220. LOAD_NORMAL,
  221. LOAD_HEAVY,
  222. LOAD_MASSIVE
  223. };

  224. enum
  225. {
  226. QUICKSLOT_TYPE_NONE,
  227. QUICKSLOT_TYPE_ITEM,
  228. QUICKSLOT_TYPE_SKILL,
  229. QUICKSLOT_TYPE_COMMAND,
  230. QUICKSLOT_TYPE_MAX_NUM,
  231. };

  232. enum EParts
  233. {
  234. PART_MAIN,
  235. PART_WEAPON,
  236. PART_HEAD,
  237. PART_HAIR,
  238. #ifdef __SASH_SYSTEM__
  239. PART_SASH,
  240. #endif
  241. #ifdef __NEW_ARROW_SYSTEM__
  242. PART_ARROW_TYPE,
  243. #endif
  244. PART_MAX_NUM,
  245. PART_WEAPON_SUB,
  246. };

  247. enum EChatType
  248. {
  249. CHAT_TYPE_TALKING, /* 그냥 채팅 */
  250. CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */
  251. CHAT_TYPE_NOTICE, /* 공지사항 */
  252. CHAT_TYPE_PARTY, /* 파티말 */
  253. CHAT_TYPE_GUILD, /* 길드말 */
  254. CHAT_TYPE_COMMAND, /* 일반 명령 */
  255. CHAT_TYPE_SHOUT, /* 외치기 */
  256. //CHAT_TYPE_SHOUT_TRADE,
  257. CHAT_TYPE_WHISPER,
  258. CHAT_TYPE_BIG_NOTICE,
  259. CHAT_TYPE_MONARCH_NOTICE,
  260. CHAT_TYPE_MAX_NUM
  261. };

  262. enum EWhisperType
  263. {
  264. WHISPER_TYPE_NORMAL = 0,
  265. WHISPER_TYPE_NOT_EXIST = 1,
  266. WHISPER_TYPE_TARGET_BLOCKED = 2,
  267. WHISPER_TYPE_SENDER_BLOCKED = 3,
  268. WHISPER_TYPE_ERROR = 4,
  269. WHISPER_TYPE_GM = 5,
  270. WHISPER_TYPE_SYSTEM = 0xFF
  271. };

  272. enum ECharacterPosition
  273. {
  274. POSITION_GENERAL,
  275. POSITION_BATTLE,
  276. POSITION_DYING,
  277. POSITION_SITTING_CHAIR,
  278. POSITION_SITTING_GROUND,
  279. POSITION_INTRO,
  280. POSITION_MAX_NUM
  281. };

  282. enum EGMLevels
  283. {
  284. GM_PLAYER,
  285. GM_LOW_WIZARD,
  286. GM_WIZARD,
  287. GM_HIGH_WIZARD,
  288. GM_GOD,
  289. GM_IMPLEMENTOR
  290. };

  291. enum EMobRank
  292. {
  293. MOB_RANK_PAWN,
  294. MOB_RANK_S_PAWN,
  295. MOB_RANK_KNIGHT,
  296. MOB_RANK_S_KNIGHT,
  297. MOB_RANK_BOSS,
  298. MOB_RANK_KING,
  299. MOB_RANK_MAX_NUM
  300. };

  301. enum ECharType
  302. {
  303. CHAR_TYPE_MONSTER,
  304. CHAR_TYPE_NPC,
  305. CHAR_TYPE_STONE,
  306. CHAR_TYPE_WARP,
  307. CHAR_TYPE_DOOR,
  308. CHAR_TYPE_BUILDING,
  309. CHAR_TYPE_PC,
  310. CHAR_TYPE_POLYMORPH_PC,
  311. CHAR_TYPE_HORSE,
  312. CHAR_TYPE_GOTO
  313. };

  314. enum EBattleType
  315. {
  316. BATTLE_TYPE_MELEE,
  317. BATTLE_TYPE_RANGE,
  318. BATTLE_TYPE_MAGIC,
  319. BATTLE_TYPE_SPECIAL,
  320. BATTLE_TYPE_POWER,
  321. BATTLE_TYPE_TANKER,
  322. BATTLE_TYPE_SUPER_POWER,
  323. BATTLE_TYPE_SUPER_TANKER,
  324. BATTLE_TYPE_MAX_NUM
  325. };

  326. enum EApplyTypes
  327. {
  328. APPLY_NONE,
  329. APPLY_MAX_HP,
  330. APPLY_MAX_SP,
  331. APPLY_CON,
  332. APPLY_INT,
  333. APPLY_STR,
  334. APPLY_DEX,
  335. APPLY_ATT_SPEED,
  336. APPLY_MOV_SPEED,
  337. APPLY_CAST_SPEED,
  338. APPLY_HP_REGEN,
  339. APPLY_SP_REGEN,
  340. APPLY_POISON_PCT,
  341. APPLY_STUN_PCT,
  342. APPLY_SLOW_PCT,
  343. APPLY_CRITICAL_PCT,
  344. APPLY_PENETRATE_PCT,
  345. APPLY_ATTBONUS_HUMAN,
  346. APPLY_ATTBONUS_ANIMAL,
  347. APPLY_ATTBONUS_ORC,
  348. APPLY_ATTBONUS_MILGYO,
  349. APPLY_ATTBONUS_UNDEAD,
  350. APPLY_ATTBONUS_DEVIL,
  351. APPLY_STEAL_HP,
  352. APPLY_STEAL_SP,
  353. APPLY_MANA_BURN_PCT,
  354. APPLY_DAMAGE_SP_RECOVER,
  355. APPLY_BLOCK,
  356. APPLY_DODGE,
  357. APPLY_RESIST_SWORD,
  358. APPLY_RESIST_TWOHAND,
  359. APPLY_RESIST_DAGGER,
  360. APPLY_RESIST_BELL,
  361. APPLY_RESIST_FAN,
  362. APPLY_RESIST_BOW,
  363. APPLY_RESIST_FIRE,
  364. APPLY_RESIST_ELEC,
  365. APPLY_RESIST_MAGIC,
  366. APPLY_RESIST_WIND,
  367. APPLY_REFLECT_MELEE,
  368. APPLY_REFLECT_CURSE,
  369. APPLY_POISON_REDUCE,
  370. APPLY_KILL_SP_RECOVER,
  371. APPLY_EXP_DOUBLE_BONUS,
  372. APPLY_GOLD_DOUBLE_BONUS,
  373. APPLY_ITEM_DROP_BONUS,
  374. APPLY_POTION_BONUS,
  375. APPLY_KILL_HP_RECOVER,
  376. APPLY_IMMUNE_STUN,
  377. APPLY_IMMUNE_SLOW,
  378. APPLY_IMMUNE_FALL,
  379. APPLY_SKILL,
  380. APPLY_BOW_DISTANCE,
  381. APPLY_ATT_GRADE_BONUS,
  382. APPLY_DEF_GRADE_BONUS,
  383. APPLY_MAGIC_ATT_GRADE,
  384. APPLY_MAGIC_DEF_GRADE,
  385. APPLY_CURSE_PCT,
  386. APPLY_MAX_STAMINA,
  387. APPLY_ATTBONUS_WARRIOR,
  388. APPLY_ATTBONUS_ASSASSIN,
  389. APPLY_ATTBONUS_SURA,
  390. APPLY_ATTBONUS_SHAMAN,
  391. APPLY_ATTBONUS_MONSTER,
  392. APPLY_MALL_ATTBONUS,
  393. APPLY_MALL_DEFBONUS,
  394. APPLY_MALL_EXPBONUS,
  395. APPLY_MALL_ITEMBONUS,
  396. APPLY_MALL_GOLDBONUS,
  397. APPLY_MAX_HP_PCT,
  398. APPLY_MAX_SP_PCT,
  399. APPLY_SKILL_DAMAGE_BONUS,
  400. APPLY_NORMAL_HIT_DAMAGE_BONUS,
  401. APPLY_SKILL_DEFEND_BONUS,
  402. APPLY_NORMAL_HIT_DEFEND_BONUS,
  403. APPLY_PC_BANG_EXP_BONUS,
  404. APPLY_PC_BANG_DROP_BONUS,
  405. APPLY_EXTRACT_HP_PCT,
  406. APPLY_RESIST_WARRIOR,
  407. APPLY_RESIST_ASSASSIN,
  408. APPLY_RESIST_SURA,
  409. APPLY_RESIST_SHAMAN,
  410. APPLY_ENERGY,
  411. APPLY_DEF_GRADE,
  412. APPLY_COSTUME_ATTR_BONUS,
  413. APPLY_MAGIC_ATTBONUS_PER,
  414. APPLY_MELEE_MAGIC_ATTBONUS_PER,
  415. APPLY_RESIST_ICE,
  416. APPLY_RESIST_EARTH,
  417. APPLY_RESIST_DARK,
  418. APPLY_ANTI_CRITICAL_PCT,
  419. APPLY_ANTI_PENETRATE_PCT,
  420. APPLY_BLEEDING_PCT,
  421. APPLY_BLEEDING_REDUCE,
  422. APPLY_ATTBONUS_WOLFMAN,
  423. APPLY_RESIST_WOLFMAN,
  424. APPLY_RESIST_CLAW,
  425. #ifdef __ANTI_RESIST_MAGIC_BONUS__
  426. APPLY_ANTI_RESIST_MAGIC,
  427. #endif
  428. #ifdef ELEMENT_NEW_BONUSES
  429. APPLY_ATTBONUS_ELEC,
  430. APPLY_ATTBONUS_FIRE,
  431. APPLY_ATTBONUS_ICE,
  432. APPLY_ATTBONUS_WIND,
  433. APPLY_ATTBONUS_EARTH,
  434. APPLY_ATTBONUS_DARK,
  435. #endif
  436. APPLY_KARAKTER_SAVUNMASI,
  437. MAX_APPLY_NUM,
  438. };

  439. enum EOnClickEvents
  440. {
  441. ON_CLICK_NONE,
  442. ON_CLICK_SHOP,
  443. ON_CLICK_TALK,
  444. ON_CLICK_MAX_NUM
  445. };

  446. enum EOnIdleEvents
  447. {
  448. ON_IDLE_NONE,
  449. ON_IDLE_GENERAL,
  450. ON_IDLE_MAX_NUM
  451. };

  452. enum EWindows
  453. {
  454. RESERVED_WINDOW,
  455. INVENTORY,
  456. EQUIPMENT,
  457. SAFEBOX,
  458. MALL,
  459. DRAGON_SOUL_INVENTORY,
  460. BELT_INVENTORY,
  461. #ifdef ENABLE_SPECIAL_STORAGE
  462. UPGRADE_INVENTORY,
  463. BOOK_INVENTORY,
  464. STONE_INVENTORY,
  465. #endif
  466. #ifdef __AUCTION__
  467. AUCTION,
  468. #endif
  469. GROUND
  470. };

  471. enum EMobSizes
  472. {
  473. MOBSIZE_RESERVED,
  474. MOBSIZE_SMALL,
  475. MOBSIZE_MEDIUM,
  476. MOBSIZE_BIG
  477. };

  478. enum EAIFlags
  479. {
  480. AIFLAG_AGGRESSIVE = (1 << 0),
  481. AIFLAG_NOMOVE = (1 << 1),
  482. AIFLAG_COWARD = (1 << 2),
  483. AIFLAG_NOATTACKSHINSU = (1 << 3),
  484. AIFLAG_NOATTACKJINNO = (1 << 4),
  485. AIFLAG_NOATTACKCHUNJO = (1 << 5),
  486. AIFLAG_ATTACKMOB = (1 << 6 ),
  487. AIFLAG_BERSERK = (1 << 7),
  488. AIFLAG_STONESKIN = (1 << 8),
  489. AIFLAG_GODSPEED = (1 << 9),
  490. AIFLAG_DEATHBLOW = (1 << 10),
  491. AIFLAG_REVIVE = (1 << 11),
  492. };

  493. enum EMobStatType
  494. {
  495. MOB_STATTYPE_POWER,
  496. MOB_STATTYPE_TANKER,
  497. MOB_STATTYPE_SUPER_POWER,
  498. MOB_STATTYPE_SUPER_TANKER,
  499. MOB_STATTYPE_RANGE,
  500. MOB_STATTYPE_MAGIC,
  501. MOB_STATTYPE_MAX_NUM
  502. };

  503. enum EImmuneFlags
  504. {
  505. IMMUNE_STUN = (1 << 0),
  506. IMMUNE_SLOW = (1 << 1),
  507. IMMUNE_FALL = (1 << 2),
  508. IMMUNE_CURSE = (1 << 3),
  509. IMMUNE_POISON = (1 << 4),
  510. IMMUNE_TERROR = (1 << 5),
  511. IMMUNE_REFLECT = (1 << 6),
  512. };

  513. enum EMobEnchants
  514. {
  515. MOB_ENCHANT_CURSE,
  516. MOB_ENCHANT_SLOW,
  517. MOB_ENCHANT_POISON,
  518. MOB_ENCHANT_STUN,
  519. MOB_ENCHANT_CRITICAL,
  520. MOB_ENCHANT_PENETRATE,
  521. MOB_ENCHANTS_MAX_NUM
  522. };

  523. enum EMobResists
  524. {
  525. MOB_RESIST_SWORD,
  526. MOB_RESIST_TWOHAND,
  527. MOB_RESIST_DAGGER,
  528. MOB_RESIST_BELL,
  529. MOB_RESIST_FAN,
  530. MOB_RESIST_BOW,
  531. MOB_RESIST_FIRE,
  532. MOB_RESIST_ELECT,
  533. MOB_RESIST_MAGIC,
  534. MOB_RESIST_WIND,
  535. MOB_RESIST_POISON,
  536. MOB_RESIST_CLAW,
  537. MOB_RESISTS_MAX_NUM
  538. };

  539. enum
  540. {
  541. SKILL_ATTR_TYPE_NORMAL = 1,
  542. SKILL_ATTR_TYPE_MELEE,
  543. SKILL_ATTR_TYPE_RANGE,
  544. SKILL_ATTR_TYPE_MAGIC
  545. /*
  546. SKILL_ATTR_TYPE_FIRE,
  547. SKILL_ATTR_TYPE_ICE,
  548. SKILL_ATTR_TYPE_ELEC,
  549. SKILL_ATTR_TYPE_DARK,
  550. */
  551. };

  552. enum
  553. {
  554. SKILL_NORMAL,
  555. SKILL_MASTER,
  556. SKILL_GRAND_MASTER,
  557. SKILL_PERFECT_MASTER,
  558. };

  559. enum EGuildWarType
  560. {
  561. GUILD_WAR_TYPE_FIELD,
  562. GUILD_WAR_TYPE_BATTLE,
  563. GUILD_WAR_TYPE_FLAG,
  564. GUILD_WAR_TYPE_MAX_NUM
  565. };

  566. enum EGuildWarState
  567. {
  568. GUILD_WAR_NONE,
  569. GUILD_WAR_SEND_DECLARE,
  570. GUILD_WAR_REFUSE,
  571. GUILD_WAR_RECV_DECLARE,
  572. GUILD_WAR_WAIT_START,
  573. GUILD_WAR_CANCEL,
  574. GUILD_WAR_ON_WAR,
  575. GUILD_WAR_END,
  576. GUILD_WAR_OVER,
  577. GUILD_WAR_RESERVE,

  578. GUILD_WAR_DURATION = 30*60, // 1시간
  579. GUILD_WAR_WIN_POINT = 1000,
  580. GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12*60*60,
  581. };

  582. enum EAttributeSet
  583. {
  584. ATTRIBUTE_SET_WEAPON,
  585. ATTRIBUTE_SET_BODY,
  586. ATTRIBUTE_SET_WRIST,
  587. ATTRIBUTE_SET_FOOTS,
  588. ATTRIBUTE_SET_NECK,
  589. ATTRIBUTE_SET_HEAD,
  590. ATTRIBUTE_SET_SHIELD,
  591. ATTRIBUTE_SET_EAR,
  592. ATTRIBUTE_SET_MAX_NUM
  593. };

  594. enum EPrivType
  595. {
  596. PRIV_NONE,
  597. PRIV_ITEM_DROP,
  598. PRIV_GOLD_DROP,
  599. PRIV_GOLD10_DROP,
  600. PRIV_EXP_PCT,
  601. MAX_PRIV_NUM,
  602. };

  603. enum EMoneyLogType
  604. {
  605. MONEY_LOG_RESERVED,
  606. MONEY_LOG_MONSTER,
  607. MONEY_LOG_SHOP,
  608. MONEY_LOG_REFINE,
  609. MONEY_LOG_QUEST,
  610. MONEY_LOG_GUILD,
  611. MONEY_LOG_MISC,
  612. MONEY_LOG_MONSTER_KILL,
  613. MONEY_LOG_DROP,
  614. MONEY_LOG_TYPE_MAX_NUM,
  615. };

  616. enum EPremiumTypes
  617. {
  618. PREMIUM_EXP, // 경험치가 1.2배
  619. PREMIUM_ITEM, // 아이템 드롭율이 2배
  620. PREMIUM_SAFEBOX, // 창고가 1칸에서 3칸
  621. PREMIUM_AUTOLOOT, // 돈 자동 줍기
  622. PREMIUM_FISH_MIND, // 고급 물고기 낚일 확률 상승
  623. PREMIUM_MARRIAGE_FAST, // 금실 증가 양을 빠르게합니다.
  624. PREMIUM_GOLD, // 돈 드롭율이 1.5배
  625. PREMIUM_MAX_NUM = 9
  626. };

  627. enum SPECIAL_EFFECT
  628. {
  629. SE_NONE,

  630. SE_HPUP_RED,
  631. SE_SPUP_BLUE,
  632. SE_SPEEDUP_GREEN,
  633. SE_DXUP_PURPLE,
  634. SE_GECTI,
  635. SE_YANDI,
  636. SE_CRITICAL,
  637. SE_PENETRATE,
  638. SE_BLOCK,
  639. SE_DODGE,
  640. SE_CHINA_FIREWORK,
  641. SE_SPIN_TOP,
  642. SE_SUCCESS,
  643. SE_FAIL,
  644. SE_FR_SUCCESS,
  645. SE_LEVELUP_ON_14_FOR_GERMANY,
  646. SE_LEVELUP_UNDER_15_FOR_GERMANY,
  647. SE_PERCENT_DAMAGE1,
  648. SE_PERCENT_DAMAGE2,
  649. SE_PERCENT_DAMAGE3,

  650. SE_AUTO_HPUP,
  651. SE_AUTO_SPUP,

  652. SE_EQUIP_RAMADAN_RING, // 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
  653. SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트
  654. SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
  655. SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
  656. #ifdef __SASH_SYSTEM__
  657. SE_EFFECT_SASH_SUCCEDED,
  658. SE_EFFECT_SASH_EQUIP,
  659. #endif
  660. #ifdef __VERSION_162__
  661. SE_EFFECT_HEALER,
  662. #endif
  663. } ;

  664. #ifdef ITEM_BUFF_SYSTEM
  665. enum EItemBuffConfig
  666. {

  667. //first item resist buff config
  668. MASTER_RESIST_BLESS_ITEM_BUFF_VNUM = 79000,
  669. MASTER_RESIST_BLESS_AFFECT_VALUE = 24,
  670. MASTER_RESIST_BLESS_AFFECT_TIME_VALUE = 160,
  671. MASTER_RESIST_BLESS_USINGS = 80,
  672. // end of first item resist buff config

  673. //secound item resist buff config
  674. GRAND_RESIST_BLESS_ITEM_BUFF_VNUM = 79001,
  675. GRAND_RESIST_BLESS_AFFECT_VALUE = 29,
  676. GRAND_RESIST_BLESS_AFFECT_TIME_VALUE = 224,
  677. GRAND_RESIST_BLESS_USINGS = 60,
  678. //end of second item resist buff config

  679. //third item resist buff config
  680. PERFECT_RESIST_BLESS_ITEM_BUFF_VNUM = 79002,
  681. PERFECT_RESIST_BLESS_AFFECT_VALUE = 35,
  682. PERFECT_RESIST_BLESS_AFFECT_TIME_VALUE = 310,
  683. PERFECT_RESIST_BLESS_USINGS = 50,
  684. //end of third item resist buff config

  685. //first item critical buff config
  686. MASTER_CRITICAL_BLESS_ITEM_BUFF_VNUM = 79003,
  687. MASTER_CRITICAL_BLESS_AFFECT_VALUE = 24,
  688. MASTER_CRITICAL_BLESS_AFFECT_TIME_VALUE = 110,
  689. MASTER_CRITICAL_BLESS_USINGS = 80,
  690. //end of first item critical buff config

  691. //secound item critical buff config
  692. GRAND_CRITICAL_BLESS_ITEM_BUFF_VNUM = 79004,
  693. GRAND_CRITICAL_BLESS_AFFECT_VALUE = 29,
  694. GRAND_CRITICAL_BLESS_AFFECT_TIME_VALUE = 142,
  695. GRAND_CRITICAL_BLESS_USINGS = 60,
  696. //end of secound item critical buff config

  697. //third item critical buff config
  698. PERFECT_CRITICAL_BLESS_ITEM_BUFF_VNUM = 79005,
  699. PERFECT_CRITICAL_BLESS_AFFECT_VALUE = 35,
  700. PERFECT_CRITICAL_BLESS_AFFECT_TIME_VALUE = 185,
  701. PERFECT_CRITICAL_BLESS_USINGS = 50,
  702. //end of third item critical buff config

  703. //first item reflection buff config
  704. MASTER_REFLECT_BLESS_ITEM_BUFF_VNUM = 79006,
  705. MASTER_REFLECT_BLESS_AFFECT_VALUE = 21,
  706. MASTER_REFLECT_BLESS_AFFECT_TIME_VALUE = 160,
  707. MASTER_REFLECT_BLESS_USINGS = 80,
  708. //end of first item reflection buff config

  709. //secound item reflection buff config
  710. GRAND_REFLECT_BLESS_ITEM_BUFF_VNUM = 79007,
  711. GRAND_REFLECT_BLESS_AFFECT_VALUE = 31,
  712. GRAND_REFLECT_BLESS_AFFECT_TIME_VALUE = 224,
  713. GRAND_REFLECT_BLESS_USINGS = 60,
  714. //end of secound item reflection buff config

  715. //third item reflection buff config
  716. PERFECT_REFLECT_BLESS_ITEM_BUFF_VNUM = 79008,
  717. PERFECT_REFLECT_BLESS_AFFECT_VALUE = 45,
  718. PERFECT_REFLECT_BLESS_AFFECT_TIME_VALUE = 310,
  719. PERFECT_REFLECT_BLESS_USINGS = 50,
  720. //end of third item reflection buff config

  721. };
  722. #endif

  723. enum ETeenFlags
  724. {
  725. TEENFLAG_NONE = 0,
  726. TEENFLAG_1HOUR,
  727. TEENFLAG_2HOUR,
  728. TEENFLAG_3HOUR,
  729. TEENFLAG_4HOUR,
  730. TEENFLAG_5HOUR,
  731. };

  732. #include "item_length.h"

  733. // inventory의 position을 나타내는 구조체
  734. // int와의 암시적 형변환이 있는 이유는,
  735. // 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,)
  736. // 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ‹š문이다.

  737. enum EDragonSoulRefineWindowSize
  738. {
  739. DRAGON_SOUL_REFINE_GRID_MAX = 15,
  740. };

  741. enum EMisc2
  742. {
  743. DRAGON_SOUL_EQUIP_SLOT_START = INVENTORY_MAX_NUM + WEAR_MAX_NUM, // 180 + 32 (212)
  744. DRAGON_SOUL_EQUIP_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_START + (DS_SLOT_MAX * DRAGON_SOUL_DECK_MAX_NUM), // 212 + 12 ( 224 )
  745. DRAGON_SOUL_EQUIP_RESERVED_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_END + (DS_SLOT_MAX * DRAGON_SOUL_DECK_RESERVED_MAX_NUM), // 224 + 18 ( 242 )

  746. BELT_INVENTORY_SLOT_START = DRAGON_SOUL_EQUIP_RESERVED_SLOT_END, // 242
  747. BELT_INVENTORY_SLOT_END = BELT_INVENTORY_SLOT_START + BELT_INVENTORY_SLOT_COUNT, // 242 + 16 ( 258 )

  748. INVENTORY_AND_EQUIP_SLOT_MAX = BELT_INVENTORY_SLOT_END,
  749. };

  750. #pragma pack(push, 1)

  751. typedef struct SItemPos
  752. {
  753. BYTE window_type;
  754. WORD cell;
  755. SItemPos ()
  756. {
  757. window_type = INVENTORY;
  758. cell = WORD_MAX;
  759. }

  760. SItemPos (BYTE _window_type, WORD _cell)
  761. {
  762. window_type = _window_type;
  763. cell = _cell;
  764. }

  765. bool IsValidItemPosition() const
  766. {
  767. switch (window_type)
  768. {
  769. case RESERVED_WINDOW:
  770. return false;
  771. case INVENTORY:
  772. case EQUIPMENT:
  773. case BELT_INVENTORY:
  774. return cell < INVENTORY_AND_EQUIP_SLOT_MAX;
  775. case DRAGON_SOUL_INVENTORY:
  776. return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM);
  777. #ifdef ENABLE_SPECIAL_STORAGE
  778. case UPGRADE_INVENTORY:
  779. case BOOK_INVENTORY:
  780. case STONE_INVENTORY:
  781. return cell < (SPECIAL_INVENTORY_MAX_NUM);
  782. #endif
  783. // 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다.
  784. case SAFEBOX:
  785. case MALL:
  786. return false;
  787. default:
  788. return false;
  789. }
  790. return false;
  791. }

  792. bool IsEquipPosition() const
  793. {
  794. return ((INVENTORY == window_type || EQUIPMENT == window_type) && cell >= INVENTORY_MAX_NUM && cell < INVENTORY_MAX_NUM + WEAR_MAX_NUM)
  795. || IsDragonSoulEquipPosition();
  796. }

  797. bool IsDragonSoulEquipPosition() const
  798. {
  799. return (DRAGON_SOUL_EQUIP_SLOT_START <= cell) && (DRAGON_SOUL_EQUIP_SLOT_END > cell);
  800. }

  801. bool IsBeltInventoryPosition() const
  802. {
  803. return (BELT_INVENTORY_SLOT_START <= cell) && (BELT_INVENTORY_SLOT_END > cell);
  804. }

  805. bool IsDefaultInventoryPosition() const
  806. {
  807. return INVENTORY == window_type && cell < INVENTORY_MAX_NUM;
  808. }

  809. bool operator==(const struct SItemPos& rhs) const
  810. {
  811. return (window_type == rhs.window_type) && (cell == rhs.cell);
  812. }
  813. bool operator<(const struct SItemPos& rhs) const
  814. {
  815. return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell));
  816. }
  817. } TItemPos;

  818. const TItemPos NPOS (RESERVED_WINDOW, WORD_MAX);

  819. typedef enum
  820. {
  821. SHOP_COIN_TYPE_GOLD, // DEFAULT VALUE
  822. SHOP_COIN_TYPE_SECONDARY_COIN,
  823. } EShopCoinType;

  824. #pragma pack(pop)

  825. #endif
 
Son düzenleme:
@Emirhan lenght.h'de k envanterle ilgili bir şey bulamadım ben. Hangi sistem olduğunu bilsek kurcalayıp bi yolunu buluruz da :D
 
Geri
Üst