Yardım Boot: offline shop table size error

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

MCB

Üye
Üye
Mesaj
118
Beğeni
10
Puan
54
Channel1 Sysser:
SYSERR: Feb 11 11:34:02 :: pid_init:
Start of pid: 897

SYSERR: Feb 11 11:34:04 :: Boot: offline shop table size error
SYSERR: Feb 11 11:34:04 :: SpawnEventHelper: cannot get map base position 1
SYSERR: Feb 11 11:34:04 :: SpawnEventHelper: cannot get map base position 3
SYSERR: Feb 11 11:34:04 :: SpawnEventHelper: cannot get map base position 21
SYSERR: Feb 11 11:34:04 :: SpawnEventHelper: cannot get map base position 23
SYSERR: Feb 11 11:34:04 :: SpawnEventHelper: cannot get map base position 41
SYSERR: Feb 11 11:34:04 :: SpawnEventHelper: cannot get map base position 43
SYSERR: Feb 11 11:34:04 :: pid_deinit:
End of pid

Kanallar açılmıyor bu sysseri veriyor Dali OfflineShop ekledim..
Tables.h Dosyasını Baştan baştan kontrol ettim sorun orayla alakalıdır diye fakat ben birşey bulamadım..

tables.h:
#ifndef __INC_TABLES_H__
#define __INC_TABLES_H__

#include "length.h"

typedef    DWORD IDENT;

/**
 * @version 05/06/10    Bang2ni - Myshop Pricelist °ü·Ã ÆĞŶ HEADER_XX_MYSHOP_PRICELIST_XXX Ãß°¡
 */
enum
{
    HEADER_GD_LOGIN                = 1,
    HEADER_GD_LOGOUT            = 2,

    HEADER_GD_PLAYER_LOAD        = 3,
    HEADER_GD_PLAYER_SAVE        = 4,
    HEADER_GD_PLAYER_CREATE        = 5,
    HEADER_GD_PLAYER_DELETE        = 6,

    HEADER_GD_LOGIN_KEY            = 7,
    // 8 empty
    HEADER_GD_BOOT                = 9,
    HEADER_GD_PLAYER_COUNT        = 10,
    HEADER_GD_QUEST_SAVE        = 11,
    HEADER_GD_SAFEBOX_LOAD        = 12,
    HEADER_GD_SAFEBOX_SAVE        = 13,
    HEADER_GD_SAFEBOX_CHANGE_SIZE    = 14,
    HEADER_GD_EMPIRE_SELECT        = 15,

    HEADER_GD_SAFEBOX_CHANGE_PASSWORD        = 16,
    HEADER_GD_SAFEBOX_CHANGE_PASSWORD_SECOND    = 17, // Not really a packet, used internal
    HEADER_GD_DIRECT_ENTER        = 18,

    HEADER_GD_GUILD_SKILL_UPDATE    = 19,
    HEADER_GD_GUILD_EXP_UPDATE        = 20,
    HEADER_GD_GUILD_ADD_MEMBER        = 21,
    HEADER_GD_GUILD_REMOVE_MEMBER    = 22,
    HEADER_GD_GUILD_CHANGE_GRADE    = 23,
    HEADER_GD_GUILD_CHANGE_MEMBER_DATA    = 24,
    HEADER_GD_GUILD_DISBAND        = 25,
    HEADER_GD_GUILD_WAR            = 26,
    HEADER_GD_GUILD_WAR_SCORE        = 27,
    HEADER_GD_GUILD_CREATE        = 28,

    HEADER_GD_ITEM_SAVE            = 30,
    HEADER_GD_ITEM_DESTROY        = 31,

    HEADER_GD_ADD_AFFECT        = 32,
    HEADER_GD_REMOVE_AFFECT        = 33,

    HEADER_GD_HIGHSCORE_REGISTER    = 34,
    HEADER_GD_ITEM_FLUSH        = 35,

    HEADER_GD_PARTY_CREATE        = 36,
    HEADER_GD_PARTY_DELETE        = 37,
    HEADER_GD_PARTY_ADD            = 38,
    HEADER_GD_PARTY_REMOVE        = 39,
    HEADER_GD_PARTY_STATE_CHANGE    = 40,
    HEADER_GD_PARTY_HEAL_USE        = 41,

    HEADER_GD_FLUSH_CACHE        = 42,
    HEADER_GD_RELOAD_PROTO        = 43,

    HEADER_GD_CHANGE_NAME        = 44,

    HEADER_GD_GUILD_CHANGE_LADDER_POINT    = 46,
    HEADER_GD_GUILD_USE_SKILL        = 47,

    HEADER_GD_REQUEST_EMPIRE_PRIV    = 48,
    HEADER_GD_REQUEST_GUILD_PRIV    = 49,

    HEADER_GD_MONEY_LOG                = 50,

    HEADER_GD_GUILD_DEPOSIT_MONEY                = 51,
    HEADER_GD_GUILD_WITHDRAW_MONEY                = 52,
    HEADER_GD_GUILD_WITHDRAW_MONEY_GIVE_REPLY    = 53,

    HEADER_GD_REQUEST_CHARACTER_PRIV    = 54,

    HEADER_GD_SET_EVENT_FLAG            = 55,

    HEADER_GD_PARTY_SET_MEMBER_LEVEL    = 56,

    HEADER_GD_GUILD_WAR_BET        = 57,

    HEADER_GD_CREATE_OBJECT        = 60,
    HEADER_GD_DELETE_OBJECT        = 61,
    HEADER_GD_UPDATE_LAND        = 62,

    HEADER_GD_MARRIAGE_ADD        = 70,
    HEADER_GD_MARRIAGE_UPDATE    = 71,
    HEADER_GD_MARRIAGE_REMOVE    = 72,

    HEADER_GD_WEDDING_REQUEST    = 73,
    HEADER_GD_WEDDING_READY        = 74,
    HEADER_GD_WEDDING_END        = 75,

    HEADER_GD_AUTH_LOGIN        = 100,
    HEADER_GD_LOGIN_BY_KEY        = 101,

    HEADER_GD_MALL_LOAD            = 107,

    HEADER_GD_MYSHOP_PRICELIST_UPDATE    = 108,        ///< °¡°İÁ¤º¸ °»½Å ¿äû
    HEADER_GD_MYSHOP_PRICELIST_REQ        = 109,        ///< °¡°İÁ¤º¸ ¸®½ºÆ® ¿äû

    HEADER_GD_BLOCK_CHAT                = 110,

    // PCBANG_IP_LIST_BY_AUTH
    HEADER_GD_PCBANG_REQUEST_IP_LIST    = 111,
    HEADER_GD_PCBANG_CLEAR_IP_LIST        = 112,
    HEADER_GD_PCBANG_INSERT_IP            = 113,
    // END_OF_PCBANG_IP_LIST_BY_AUTH

    HEADER_GD_HAMMER_OF_TOR            = 114,
    HEADER_GD_RELOAD_ADMIN            = 115,            ///<¿î¿µÀÚ Á¤º¸ ¿äû
    HEADER_GD_BREAK_MARRIAGE        = 116,            ///< °áÈ¥ Æıâ

    HEADER_GD_REQ_CHANGE_GUILD_MASTER    = 129,

    HEADER_GD_REQ_SPARE_ITEM_ID_RANGE    = 130,

    HEADER_GD_UPDATE_HORSE_NAME        = 131,
    HEADER_GD_REQ_HORSE_NAME        = 132,

    HEADER_GD_DC                    = 133,        // Login Key¸¦ Áö¿ò

    HEADER_GD_VALID_LOGOUT            = 134,

    HEADER_GD_REQUEST_CHARGE_CASH    = 137,

    HEADER_GD_DELETE_AWARDID    = 138,    // delete gift notify icon

    HEADER_GD_UPDATE_CHANNELSTATUS    = 139,
    HEADER_GD_REQUEST_CHANNELSTATUS    = 140,

#ifdef WJ_OFFLINE_SHOP_SYSTEM
    HEADER_GD_UPDATE_OFFLINE_SHOP    = 141,
    HEADER_GD_REQ_OFFLINE_SHOP_TABLE = 142,
#endif

    HEADER_GD_SETUP            = 0xff,

    ///////////////////////////////////////////////
    HEADER_DG_NOTICE            = 1,

    HEADER_DG_LOGIN_SUCCESS            = 30,
    HEADER_DG_LOGIN_NOT_EXIST        = 31,
    HEADER_DG_LOGIN_WRONG_PASSWD    = 33,
    HEADER_DG_LOGIN_ALREADY            = 34,

    HEADER_DG_PLAYER_LOAD_SUCCESS    = 35,
    HEADER_DG_PLAYER_LOAD_FAILED    = 36,
    HEADER_DG_PLAYER_CREATE_SUCCESS    = 37,
    HEADER_DG_PLAYER_CREATE_ALREADY    = 38,
    HEADER_DG_PLAYER_CREATE_FAILED    = 39,
    HEADER_DG_PLAYER_DELETE_SUCCESS    = 40,
    HEADER_DG_PLAYER_DELETE_FAILED    = 41,

    HEADER_DG_ITEM_LOAD            = 42,

    HEADER_DG_BOOT                = 43,
    HEADER_DG_QUEST_LOAD        = 44,

    HEADER_DG_SAFEBOX_LOAD                    = 45,
    HEADER_DG_SAFEBOX_CHANGE_SIZE            = 46,
    HEADER_DG_SAFEBOX_WRONG_PASSWORD        = 47,
    HEADER_DG_SAFEBOX_CHANGE_PASSWORD_ANSWER = 48,

    HEADER_DG_EMPIRE_SELECT        = 49,

    HEADER_DG_AFFECT_LOAD        = 50,
    HEADER_DG_MALL_LOAD            = 51,

    HEADER_DG_DIRECT_ENTER        = 55,

    HEADER_DG_GUILD_SKILL_UPDATE    = 56,
    HEADER_DG_GUILD_SKILL_RECHARGE    = 57,
    HEADER_DG_GUILD_EXP_UPDATE        = 58,

    HEADER_DG_PARTY_CREATE        = 59,
    HEADER_DG_PARTY_DELETE        = 60,
    HEADER_DG_PARTY_ADD            = 61,
    HEADER_DG_PARTY_REMOVE        = 62,
    HEADER_DG_PARTY_STATE_CHANGE    = 63,
    HEADER_DG_PARTY_HEAL_USE        = 64,
    HEADER_DG_PARTY_SET_MEMBER_LEVEL    = 65,

    HEADER_DG_TIME            = 90,
    HEADER_DG_ITEM_ID_RANGE        = 91,

    HEADER_DG_GUILD_ADD_MEMBER        = 92,
    HEADER_DG_GUILD_REMOVE_MEMBER    = 93,
    HEADER_DG_GUILD_CHANGE_GRADE    = 94,
    HEADER_DG_GUILD_CHANGE_MEMBER_DATA    = 95,
    HEADER_DG_GUILD_DISBAND        = 96,
    HEADER_DG_GUILD_WAR            = 97,
    HEADER_DG_GUILD_WAR_SCORE        = 98,
    HEADER_DG_GUILD_TIME_UPDATE        = 99,
    HEADER_DG_GUILD_LOAD        = 100,
    HEADER_DG_GUILD_LADDER        = 101,
    HEADER_DG_GUILD_SKILL_USABLE_CHANGE    = 102,
    HEADER_DG_GUILD_MONEY_CHANGE    = 103,
    HEADER_DG_GUILD_WITHDRAW_MONEY_GIVE    = 104,

    HEADER_DG_SET_EVENT_FLAG        = 105,

    HEADER_DG_GUILD_WAR_RESERVE_ADD    = 106,
    HEADER_DG_GUILD_WAR_RESERVE_DEL    = 107,
    HEADER_DG_GUILD_WAR_BET        = 108,

    HEADER_DG_RELOAD_PROTO        = 120,
    HEADER_DG_CHANGE_NAME        = 121,

    HEADER_DG_AUTH_LOGIN        = 122,

    HEADER_DG_CHANGE_EMPIRE_PRIV    = 124,
    HEADER_DG_CHANGE_GUILD_PRIV        = 125,

    HEADER_DG_MONEY_LOG            = 126,

    HEADER_DG_CHANGE_CHARACTER_PRIV    = 127,

    HEADER_DG_CREATE_OBJECT        = 140,
    HEADER_DG_DELETE_OBJECT        = 141,
    HEADER_DG_UPDATE_LAND        = 142,

    HEADER_DG_MARRIAGE_ADD        = 150,
    HEADER_DG_MARRIAGE_UPDATE        = 151,
    HEADER_DG_MARRIAGE_REMOVE        = 152,

    HEADER_DG_WEDDING_REQUEST        = 153,
    HEADER_DG_WEDDING_READY        = 154,
    HEADER_DG_WEDDING_START        = 155,
    HEADER_DG_WEDDING_END        = 156,

    HEADER_DG_MYSHOP_PRICELIST_RES    = 157,        ///< °¡°İÁ¤º¸ ¸®½ºÆ® ÀÀ´ä
    HEADER_DG_RELOAD_ADMIN = 158,                 ///< ¿î¿µÀÚ Á¤º¸ ¸®·Îµå
    HEADER_DG_BREAK_MARRIAGE = 159,                ///< °áÈ¥ Æıâ


    HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173,

    HEADER_DG_ACK_SPARE_ITEM_ID_RANGE = 174,

    HEADER_DG_UPDATE_HORSE_NAME     = 175,
    HEADER_DG_ACK_HORSE_NAME        = 176,

    HEADER_DG_NEED_LOGIN_LOG        = 177,
    HEADER_DG_RESULT_CHARGE_CASH    = 179,
    HEADER_DG_ITEMAWARD_INFORMER    = 180,    //gift notify
    HEADER_DG_RESPOND_CHANNELSTATUS        = 181,

#ifdef WJ_OFFLINE_SHOP_SYSTEM
    HEADER_DG_SET_OFFLINE_SHOP_TABLE    = 182,
#endif

    HEADER_DG_MAP_LOCATIONS        = 0xfe,
    HEADER_DG_P2P            = 0xff,

};

/* ----------------------------------------------
 * table
 * ----------------------------------------------
 */

/* game Server -> DB Server */
#pragma pack(1)
enum ERequestChargeType
{
    ERequestCharge_Cash = 0,
    ERequestCharge_Mileage,
};

typedef struct SRequestChargeCash
{
    DWORD        dwAID;        // id(primary key) - Account Table
    DWORD        dwAmount;
    ERequestChargeType    eChargeType;

} TRequestChargeCash;

typedef struct SSimplePlayer
{
    DWORD        dwID;
    char        szName[CHARACTER_NAME_MAX_LEN + 1];
    BYTE        byJob;
    BYTE        byLevel;
    DWORD        dwPlayMinutes;
    BYTE        byST, byHT, byDX, byIQ;
    WORD        wMainPart;
    BYTE        bChangeName;
    WORD        wHairPart;
    BYTE        bDummy[4];
    long        x, y;
    long        lAddr;
    WORD        wPort;
    BYTE        skill_group;
} TSimplePlayer;

typedef struct SAccountTable
{
    DWORD        id;
    char        login[LOGIN_MAX_LEN + 1];
    char        passwd[PASSWD_MAX_LEN + 1];
    char        social_id[SOCIAL_ID_MAX_LEN + 1];
    char        status[ACCOUNT_STATUS_MAX_LEN + 1];
    BYTE        bEmpire;
    TSimplePlayer    players[PLAYER_PER_ACCOUNT];
} TAccountTable;

typedef struct SPacketDGCreateSuccess
{
    BYTE        bAccountCharacterIndex;
    TSimplePlayer    player;
} TPacketDGCreateSuccess;

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

typedef struct SPlayerItem
{
    DWORD    id;
    BYTE    window;
    WORD    pos;
    DWORD    count;

    DWORD    vnum;
    long    alSockets[ITEM_SOCKET_MAX_NUM];    // ¼ÒÄϹøÈ£

    TPlayerItemAttribute    aAttr[ITEM_ATTRIBUTE_MAX_NUM];

    DWORD    owner;
#ifdef WJ_OFFLINE_SHOP_SYSTEM
    int        price;
#ifdef WJ_CHEQUE_SYSTEM
    int        cheque_price;
#endif
#endif
} TPlayerItem;

typedef struct SQuickslot
{
    BYTE    type;
    BYTE    pos;
} TQuickslot;

typedef struct SPlayerSkill
{
    BYTE    bMasterType;
    BYTE    bLevel;
    time_t    tNextRead;
} TPlayerSkill;

struct    THorseInfo
{
    BYTE    bLevel;
    BYTE    bRiding;
    short    sStamina;
    short    sHealth;
    DWORD    dwHorseHealthDropTime;
};

typedef struct SPlayerTable
{
    DWORD    id;

    char    name[CHARACTER_NAME_MAX_LEN + 1];
    char    ip[IP_ADDRESS_LENGTH + 1];

    WORD    job;
    BYTE    voice;

    BYTE    level;
    BYTE    level_step;
    short    st, ht, dx, iq;

    DWORD    exp;
    INT        gold;

    BYTE    dir;
    INT        x, y, z;
    INT        lMapIndex;

    long    lExitX, lExitY;
    long    lExitMapIndex;

    int       hp;
    int       sp;

    short    sRandomHP;
    short    sRandomSP;

    int         playtime;

    short    stat_point;
    short    skill_point;
    short    sub_skill_point;
    short    horse_skill_point;

    TPlayerSkill skills[SKILL_MAX_NUM];

    TQuickslot  quickslot[QUICKSLOT_MAX_NUM];

    BYTE    part_base;
    WORD    parts[PART_MAX_NUM];

    short    stamina;

    BYTE    skill_group;
    long    lAlignment;

    short    stat_reset_count;

    THorseInfo    horse;

    DWORD    logoff_interval;

    int        aiPremiumTimes[PREMIUM_MAX_NUM];
} TPlayerTable;

typedef struct SMobSkillLevel
{
    DWORD    dwVnum;
    BYTE    bLevel;
} TMobSkillLevel;

typedef struct SEntityTable
{
    DWORD dwVnum;
} TEntityTable;

typedef struct SMobTable : public SEntityTable
{
    char    szName[CHARACTER_NAME_MAX_LEN + 1];
    char    szLocaleName[CHARACTER_NAME_MAX_LEN + 1];

    BYTE    bType;            // Monster, NPC
    BYTE    bRank;            // PAWN, KNIGHT, KING
    BYTE    bBattleType;        // MELEE, etc..
    BYTE    bLevel;            // Level
    BYTE    bSize;

    DWORD    dwGoldMin;
    DWORD    dwGoldMax;
    DWORD    dwExp;
    DWORD    dwMaxHP;
    BYTE    bRegenCycle;
    BYTE    bRegenPercent;
    WORD    wDef;

    DWORD    dwAIFlag;
    DWORD    dwRaceFlag;
    DWORD    dwImmuneFlag;

    BYTE    bStr, bDex, bCon, bInt;
    DWORD    dwDamageRange[2];

    short    sAttackSpeed;
    short    sMovingSpeed;
    BYTE    bAggresiveHPPct;
    WORD    wAggressiveSight;
    WORD    wAttackRange;

    char    cEnchants[MOB_ENCHANTS_MAX_NUM];
    char    cResists[MOB_RESISTS_MAX_NUM];

    DWORD    dwResurrectionVnum;
    DWORD    dwDropItemVnum;

    BYTE    bMountCapacity;
    BYTE    bOnClickType;

    BYTE    bEmpire;
    char    szFolder[64 + 1];

    float    fDamMultiply;

    DWORD    dwSummonVnum;
    DWORD    dwDrainSP;
    DWORD    dwMobColor;
    DWORD    dwPolymorphItemVnum;

    TMobSkillLevel Skills[MOB_SKILL_MAX_NUM];

    BYTE    bBerserkPoint;
    BYTE    bStoneSkinPoint;
    BYTE    bGodSpeedPoint;
    BYTE    bDeathBlowPoint;
    BYTE    bRevivePoint;
} TMobTable;

typedef struct SSkillTable
{
    DWORD    dwVnum;
    char    szName[32 + 1];
    BYTE    bType;
    BYTE    bMaxLevel;
    DWORD    dwSplashRange;

    char    szPointOn[64];
    char    szPointPoly[100 + 1];
    char    szSPCostPoly[100 + 1];
    char    szDurationPoly[100 + 1];
    char    szDurationSPCostPoly[100 + 1];
    char    szCooldownPoly[100 + 1];
    char    szMasterBonusPoly[100 + 1];
    //char    szAttackGradePoly[100 + 1];
    char    szGrandMasterAddSPCostPoly[100 + 1];
    DWORD    dwFlag;
    DWORD    dwAffectFlag;

    // Data for secondary skill
    char     szPointOn2[64];
    char     szPointPoly2[100 + 1];
    char     szDurationPoly2[100 + 1];
    DWORD     dwAffectFlag2;

    // Data for grand master point
    char     szPointOn3[64];
    char     szPointPoly3[100 + 1];
    char     szDurationPoly3[100 + 1];

    BYTE    bLevelStep;
    BYTE    bLevelLimit;
    DWORD    preSkillVnum;
    BYTE    preSkillLevel;

    long    lMaxHit;
    char    szSplashAroundDamageAdjustPoly[100 + 1];

    BYTE    bSkillAttrType;

    DWORD    dwTargetRange;
} TSkillTable;

typedef struct SShopItemTable
{
    DWORD        vnum;
    BYTE        count;

    TItemPos    pos;            // PC »óÁ¡¿¡¸¸ ÀÌ¿ë
    DWORD        price;    // PC, shop_table_ex.txt »óÁ¡¿¡¸¸ ÀÌ¿ë
    BYTE        display_pos; // PC, shop_table_ex.txt »óÁ¡¿¡¸¸ ÀÌ¿ë, º¸ÀÏ À§Ä¡.
} TShopItemTable;

typedef struct SShopTable
{
    DWORD        dwVnum;
    DWORD        dwNPCVnum;

    BYTE        byItemCount;
    TShopItemTable    items[SHOP_HOST_ITEM_MAX_NUM];
} TShopTable;

#ifdef WJ_OFFLINE_SHOP_SYSTEM
typedef struct SOfflineShopTable
{
    DWORD    dwOwnerID;
    char    szOwnerName[CHARACTER_NAME_MAX_LEN + 1];
    char    szSign[SHOP_SIGN_MAX_LEN + 1];
    BYTE    byChannel;
    long    lMapIndex;
    long    lPosX;
    long    lPosY;
    int        gold;
#ifdef WJ_CHEQUE_SYSTEM
    int        cheque;
#endif
    bool    bLocked;
    DWORD    dwTimeLeft;

    TPlayerItem items[SHOP_HOST_ITEM_MAX_NUM];
} TOfflineShopTable;
#endif

#define QUEST_NAME_MAX_LEN    32
#define QUEST_STATE_MAX_LEN    64

typedef struct SQuestTable
{
    DWORD        dwPID;
    char        szName[QUEST_NAME_MAX_LEN + 1];
    char        szState[QUEST_STATE_MAX_LEN + 1];
    long        lValue;
} TQuestTable;

typedef struct SItemLimit
{
    BYTE    bType;
    long    lValue;
} TItemLimit;

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

typedef struct SItemTable : public SEntityTable
{
    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       dwGold;
    DWORD       dwShopBuyPrice;

    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;

    short int    sAddonType; // ±âº» ¼Ó¼º

    // ¾Æ·¡ limit flagµéÀº realtime¿¡ üũ ÇÒ ÀÏÀÌ ¸¹°í, ¾ÆÀÌÅÛ VNUM´ç °íÁ¤µÈ °ªÀε¥,
    // ÇöÀç ±¸Á¶´ë·Î ¸Å¹ø ¾ÆÀÌÅÛ¸¶´Ù ÇÊ¿äÇÑ °æ¿ì¿¡ LIMIT_MAX_NUM±îÁö ·çÇÁµ¹¸é¼ üũÇÏ´Â ºÎÇÏ°¡ Ä¿¼ ¹Ì¸® ÀúÀå ÇØ µÒ.
    char        cLimitRealTimeFirstUseIndex;        // ¾ÆÀÌÅÛ limit Çʵ尪 Áß¿¡¼ LIMIT_REAL_TIME_FIRST_USE Ç÷¡±×ÀÇ À§Ä¡ (¾øÀ¸¸é -1)
    char        cLimitTimerBasedOnWearIndex;        // ¾ÆÀÌÅÛ limit Çʵ尪 Áß¿¡¼ LIMIT_TIMER_BASED_ON_WEAR Ç÷¡±×ÀÇ À§Ä¡ (¾øÀ¸¸é -1)

} TItemTable;

struct TItemAttrTable
{
    TItemAttrTable() :
        dwApplyIndex(0),
        dwProb(0)
    {
        szApply[0] = 0;
        memset(&lValues, 0, sizeof(lValues));
        memset(&bMaxLevelBySet, 0, sizeof(bMaxLevelBySet));
    }

    char    szApply[APPLY_NAME_MAX_LEN + 1];
    DWORD   dwApplyIndex;
    DWORD   dwProb;
    long    lValues[5];
    BYTE    bMaxLevelBySet[ATTRIBUTE_SET_MAX_NUM];
};

typedef struct SConnectTable
{
    char    login[LOGIN_MAX_LEN + 1];
    IDENT    ident;
} TConnectTable;

typedef struct SLoginPacket
{
    char    login[LOGIN_MAX_LEN + 1];
    char    passwd[PASSWD_MAX_LEN + 1];
} TLoginPacket;

typedef struct SPlayerLoadPacket
{
    DWORD    account_id;
    DWORD    player_id;
    BYTE    account_index;    /* account ¿¡¼ÀÇ À§Ä¡ */
} TPlayerLoadPacket;

typedef struct SPlayerCreatePacket
{
    char        login[LOGIN_MAX_LEN + 1];
    char        passwd[PASSWD_MAX_LEN + 1];
    DWORD        account_id;
    BYTE        account_index;
    TPlayerTable    player_table;
} TPlayerCreatePacket;

typedef struct SPlayerDeletePacket
{
    char    login[LOGIN_MAX_LEN + 1];
    DWORD    player_id;
    BYTE    account_index;
    //char    name[CHARACTER_NAME_MAX_LEN + 1];
    char    private_code[8];
} TPlayerDeletePacket;

typedef struct SLogoutPacket
{
    char    login[LOGIN_MAX_LEN + 1];
    char    passwd[PASSWD_MAX_LEN + 1];
} TLogoutPacket;

typedef struct SPlayerCountPacket
{
    DWORD    dwCount;
} TPlayerCountPacket;

#define SAFEBOX_MAX_NUM            135
#define SAFEBOX_PASSWORD_MAX_LEN    6

typedef struct SSafeboxTable
{
    DWORD    dwID;
    BYTE    bSize;
    DWORD    dwGold;
    WORD    wItemCount;
} TSafeboxTable;

typedef struct SSafeboxChangeSizePacket
{
    DWORD    dwID;
    BYTE    bSize;
} TSafeboxChangeSizePacket;

typedef struct SSafeboxLoadPacket
{
    DWORD    dwID;
    char    szLogin[LOGIN_MAX_LEN + 1];
    char    szPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
} TSafeboxLoadPacket;

typedef struct SSafeboxChangePasswordPacket
{
    DWORD    dwID;
    char    szOldPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
    char    szNewPassword[SAFEBOX_PASSWORD_MAX_LEN + 1];
} TSafeboxChangePasswordPacket;

typedef struct SSafeboxChangePasswordPacketAnswer
{
    BYTE    flag;
} TSafeboxChangePasswordPacketAnswer;

typedef struct SEmpireSelectPacket
{
    DWORD    dwAccountID;
    BYTE    bEmpire;
} TEmpireSelectPacket;

typedef struct SPacketGDSetup
{
    char    szPublicIP[16];    // Public IP which listen to users
    BYTE    bChannel;    // ä³Î
    WORD    wListenPort;    // Ŭ¶óÀ̾ğÆ®°¡ Á¢¼ÓÇÏ´Â Æ÷Æ® ¹øÈ£
    WORD    wP2PPort;    // ¼¹ö³¢¸® ¿¬°á ½ÃÅ°´Â P2P Æ÷Æ® ¹øÈ£
    long    alMaps[32];
    DWORD    dwLoginCount;
    BYTE    bAuthServer;
} TPacketGDSetup;

typedef struct SPacketDGMapLocations
{
    BYTE    bCount;
} TPacketDGMapLocations;

typedef struct SMapLocation
{
    long    alMaps[32];
    char    szHost[MAX_HOST_LENGTH + 1];
    WORD    wPort;
} TMapLocation;

typedef struct SPacketDGP2P
{
    char    szHost[MAX_HOST_LENGTH + 1];
    WORD    wPort;
    BYTE    bChannel;
} TPacketDGP2P;

typedef struct SPacketGDDirectEnter
{
    char    login[LOGIN_MAX_LEN + 1];
    char    passwd[PASSWD_MAX_LEN + 1];
    BYTE    index;
} TPacketGDDirectEnter;

typedef struct SPacketDGDirectEnter
{
    TAccountTable accountTable;
    TPlayerTable playerTable;
} TPacketDGDirectEnter;

typedef struct SPacketGuildSkillUpdate
{
    DWORD guild_id;
    int amount;
    BYTE skill_levels[12];
    BYTE skill_point;
    BYTE save;
} TPacketGuildSkillUpdate;

typedef struct SPacketGuildExpUpdate
{
    DWORD guild_id;
    int amount;
} TPacketGuildExpUpdate;

typedef struct SPacketGuildChangeMemberData
{
    DWORD guild_id;
    DWORD pid;
    DWORD offer;
    BYTE level;
    BYTE grade;
} TPacketGuildChangeMemberData;


typedef struct SPacketDGLoginAlready
{
    char    szLogin[LOGIN_MAX_LEN + 1];
} TPacketDGLoginAlready;

typedef struct TPacketAffectElement
{
    DWORD    dwType;
    BYTE    bApplyOn;
    long    lApplyValue;
    DWORD    dwFlag;
    long    lDuration;
    long    lSPCost;
} TPacketAffectElement;

typedef struct SPacketGDAddAffect
{
    DWORD            dwPID;
    TPacketAffectElement    elem;
} TPacketGDAddAffect;

typedef struct SPacketGDRemoveAffect
{
    DWORD    dwPID;
    DWORD    dwType;
    BYTE    bApplyOn;
} TPacketGDRemoveAffect;

typedef struct SPacketGDHighscore
{
    DWORD    dwPID;
    long    lValue;
    char    cDir;
    char    szBoard[21];
} TPacketGDHighscore;

typedef struct SPacketPartyCreate
{
    DWORD    dwLeaderPID;
} TPacketPartyCreate;

typedef struct SPacketPartyDelete
{
    DWORD    dwLeaderPID;
} TPacketPartyDelete;

typedef struct SPacketPartyAdd
{
    DWORD    dwLeaderPID;
    DWORD    dwPID;
    BYTE    bState;
} TPacketPartyAdd;

typedef struct SPacketPartyRemove
{
    DWORD    dwLeaderPID;
    DWORD    dwPID;
} TPacketPartyRemove;

typedef struct SPacketPartyStateChange
{
    DWORD    dwLeaderPID;
    DWORD    dwPID;
    BYTE    bRole;
    BYTE    bFlag;
} TPacketPartyStateChange;

typedef struct SPacketPartySetMemberLevel
{
    DWORD    dwLeaderPID;
    DWORD    dwPID;
    BYTE    bLevel;
} TPacketPartySetMemberLevel;

typedef struct SPacketGDBoot
{
    DWORD    dwItemIDRange[2];
    char    szIP[16];
} TPacketGDBoot;

typedef struct SPacketGuild
{
    DWORD    dwGuild;
    DWORD    dwInfo;
} TPacketGuild;

typedef struct SPacketGDGuildAddMember
{
    DWORD    dwPID;
    DWORD    dwGuild;
    BYTE    bGrade;
} TPacketGDGuildAddMember;

typedef struct SPacketDGGuildMember
{
    DWORD    dwPID;
    DWORD    dwGuild;
    BYTE    bGrade;
    BYTE    isGeneral;
    BYTE    bJob;
    BYTE    bLevel;
    DWORD    dwOffer;
    char    szName[CHARACTER_NAME_MAX_LEN + 1];
} TPacketDGGuildMember;

typedef struct SPacketGuildWar
{
    BYTE    bType;
    BYTE    bWar;
    DWORD    dwGuildFrom;
    DWORD    dwGuildTo;
    long    lWarPrice;
    long    lInitialScore;
} TPacketGuildWar;

// Game -> DB : »ó´ëÀû º¯È°ª
// DB -> Game : ÅäÅ»µÈ ÃÖÁ¾°ª
typedef struct SPacketGuildWarScore
{
    DWORD dwGuildGainPoint;
    DWORD dwGuildOpponent;
    long lScore;
    long lBetScore;
} TPacketGuildWarScore;

typedef struct SRefineMaterial
{
    DWORD vnum;
    int count;
} TRefineMaterial;

typedef struct SRefineTable
{
    //DWORD src_vnum;
    //DWORD result_vnum;
    DWORD id;
    BYTE material_count;
    int cost; // ¼Ò¿ä ºñ¿ë
    int prob; // È®·ü
    TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
} TRefineTable;

typedef struct SBanwordTable
{
    char szWord[BANWORD_MAX_LEN + 1];
} TBanwordTable;

typedef struct SPacketGDChangeName
{
    DWORD pid;
    char name[CHARACTER_NAME_MAX_LEN + 1];
} TPacketGDChangeName;

typedef struct SPacketDGChangeName
{
    DWORD pid;
    char name[CHARACTER_NAME_MAX_LEN + 1];
} TPacketDGChangeName;

typedef struct SPacketGuildLadder
{
    DWORD dwGuild;
    long lLadderPoint;
    long lWin;
    long lDraw;
    long lLoss;
} TPacketGuildLadder;

typedef struct SPacketGuildLadderPoint
{
    DWORD dwGuild;
    long lChange;
} TPacketGuildLadderPoint;

typedef struct SPacketGuildUseSkill
{
    DWORD dwGuild;
    DWORD dwSkillVnum;
    DWORD dwCooltime;
} TPacketGuildUseSkill;

typedef struct SPacketGuildSkillUsableChange
{
    DWORD dwGuild;
    DWORD dwSkillVnum;
    BYTE bUsable;
} TPacketGuildSkillUsableChange;

typedef struct SPacketGDLoginKey
{
    DWORD dwAccountID;
    DWORD dwLoginKey;
} TPacketGDLoginKey;

typedef struct SPacketGDAuthLogin
{
    DWORD    dwID;
    DWORD    dwLoginKey;
    char    szLogin[LOGIN_MAX_LEN + 1];
    char    szSocialID[SOCIAL_ID_MAX_LEN + 1];
    DWORD    adwClientKey[4];
    int        iPremiumTimes[PREMIUM_MAX_NUM];
} TPacketGDAuthLogin;

typedef struct SPacketGDLoginByKey
{
    char    szLogin[LOGIN_MAX_LEN + 1];
    DWORD    dwLoginKey;
    DWORD    adwClientKey[4];
    char    szIP[MAX_HOST_LENGTH + 1];
} TPacketGDLoginByKey;

/**
 * @version 05/06/08    Bang2ni - Áö¼Ó½Ã°£ Ãß°¡
 */
typedef struct SPacketGiveGuildPriv
{
    BYTE type;
    int value;
    DWORD guild_id;
    time_t duration_sec;    ///< Áö¼Ó½Ã°£
} TPacketGiveGuildPriv;
typedef struct SPacketGiveEmpirePriv
{
    BYTE type;
    int value;
    BYTE empire;
    time_t duration_sec;
} TPacketGiveEmpirePriv;
typedef struct SPacketGiveCharacterPriv
{
    BYTE type;
    int value;
    DWORD pid;
} TPacketGiveCharacterPriv;
typedef struct SPacketRemoveGuildPriv
{
    BYTE type;
    DWORD guild_id;
} TPacketRemoveGuildPriv;
typedef struct SPacketRemoveEmpirePriv
{
    BYTE type;
    BYTE empire;
} TPacketRemoveEmpirePriv;

typedef struct SPacketDGChangeCharacterPriv
{
    BYTE type;
    int value;
    DWORD pid;
    BYTE bLog;
} TPacketDGChangeCharacterPriv;

/**
 * @version 05/06/08    Bang2ni - Áö¼Ó½Ã°£ Ãß°¡
 */
typedef struct SPacketDGChangeGuildPriv
{
    BYTE type;
    int value;
    DWORD guild_id;
    BYTE bLog;
    time_t end_time_sec;    ///< Áö¼Ó½Ã°£
} TPacketDGChangeGuildPriv;

typedef struct SPacketDGChangeEmpirePriv
{
    BYTE type;
    int value;
    BYTE empire;
    BYTE bLog;
    time_t end_time_sec;
} TPacketDGChangeEmpirePriv;

typedef struct SPacketMoneyLog
{
    BYTE type;
    DWORD vnum;
    INT gold;
} TPacketMoneyLog;

typedef struct SPacketGDGuildMoney
{
    DWORD dwGuild;
    INT iGold;
} TPacketGDGuildMoney;

typedef struct SPacketDGGuildMoneyChange
{
    DWORD dwGuild;
    INT iTotalGold;
} TPacketDGGuildMoneyChange;

typedef struct SPacketDGGuildMoneyWithdraw
{
    DWORD dwGuild;
    INT iChangeGold;
} TPacketDGGuildMoneyWithdraw;

typedef struct SPacketGDGuildMoneyWithdrawGiveReply
{
    DWORD dwGuild;
    INT iChangeGold;
    BYTE bGiveSuccess;
} TPacketGDGuildMoneyWithdrawGiveReply;

typedef struct SPacketSetEventFlag
{
    char    szFlagName[EVENT_FLAG_NAME_MAX_LEN + 1];
    long    lValue;
} TPacketSetEventFlag;

typedef struct SPacketLoginOnSetup
{
    DWORD   dwID;
    char    szLogin[LOGIN_MAX_LEN + 1];
    char    szSocialID[SOCIAL_ID_MAX_LEN + 1];
    char    szHost[MAX_HOST_LENGTH + 1];
    DWORD   dwLoginKey;
    DWORD   adwClientKey[4];
} TPacketLoginOnSetup;

typedef struct SPacketGDCreateObject
{
    DWORD    dwVnum;
    DWORD    dwLandID;
    INT        lMapIndex;
    INT         x, y;
    float    xRot;
    float    yRot;
    float    zRot;
} TPacketGDCreateObject;

typedef struct SPacketGDHammerOfTor
{
    DWORD     key;
    DWORD    delay;
} TPacketGDHammerOfTor;

typedef struct SGuildReserve
{
    DWORD       dwID;
    DWORD       dwGuildFrom;
    DWORD       dwGuildTo;
    DWORD       dwTime;
    BYTE        bType;
    long        lWarPrice;
    long        lInitialScore;
    bool        bStarted;
    DWORD    dwBetFrom;
    DWORD    dwBetTo;
    long    lPowerFrom;
    long    lPowerTo;
    long    lHandicap;
} TGuildWarReserve;

typedef struct
{
    DWORD    dwWarID;
    char    szLogin[LOGIN_MAX_LEN + 1];
    DWORD    dwGold;
    DWORD    dwGuild;
} TPacketGDGuildWarBet;

// Marriage

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
    time_t tMarryTime;
    char szName1[CHARACTER_NAME_MAX_LEN + 1];
    char szName2[CHARACTER_NAME_MAX_LEN + 1];
} TPacketMarriageAdd;

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
    INT  iLovePoint;
    BYTE  byMarried;
} TPacketMarriageUpdate;

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
} TPacketMarriageRemove;

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
} TPacketWeddingRequest;

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
    DWORD dwMapIndex;
} TPacketWeddingReady;

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
} TPacketWeddingStart;

typedef struct
{
    DWORD dwPID1;
    DWORD dwPID2;
} TPacketWeddingEnd;

/// °³ÀλóÁ¡ °¡°İÁ¤º¸ÀÇ Çì´õ. °¡º¯ ÆĞŶÀ¸·Î ÀÌ µÚ¿¡ byCount ¸¸ÅÀÇ TItemPriceInfo °¡ ¿Â´Ù.
typedef struct SPacketMyshopPricelistHeader
{
    DWORD    dwOwnerID;    ///< °¡°İÁ¤º¸¸¦ °¡Áø Ç÷¹À̾î ID
    BYTE    byCount;    ///< °¡°İÁ¤º¸ °¹¼ö
} TPacketMyshopPricelistHeader;

/// °³ÀλóÁ¡ÀÇ ´ÜÀÏ ¾ÆÀÌÅÛ¿¡ ´ëÇÑ °¡°İÁ¤º¸
typedef struct SItemPriceInfo
{
    DWORD    dwVnum;        ///< ¾ÆÀÌÅÛ vnum
    DWORD    dwPrice;    ///< °¡°İ
} TItemPriceInfo;

/// °³ÀλóÁ¡ ¾ÆÀÌÅÛ °¡°İÁ¤º¸ ¸®½ºÆ® Å×À̺í
typedef struct SItemPriceListTable
{
    DWORD    dwOwnerID;    ///< °¡°İÁ¤º¸¸¦ °¡Áø Ç÷¹À̾î ID
    BYTE    byCount;    ///< °¡°İÁ¤º¸ ¸®½ºÆ®ÀÇ °¹¼ö

    TItemPriceInfo    aPriceInfo[SHOP_PRICELIST_MAX_NUM];    ///< °¡°İÁ¤º¸ ¸®½ºÆ®
} TItemPriceListTable;

typedef struct
{
    char szName[CHARACTER_NAME_MAX_LEN + 1];
    long lDuration;
} TPacketBlockChat;

// PCBANG_IP_LIST
typedef struct SPacketPCBangIP
{
    DWORD id;
    DWORD ip;
} TPacketPCBangIP;
// END_OF_PCBANG_IP_LIST


//ADMIN_MANAGER
typedef struct TAdminInfo
{
    int m_ID;                //°íÀ¯ID
    char m_szAccount[32];    //°èÁ¤
    char m_szName[32];        //ij¸¯ÅÍÀ̸§
    char m_szContactIP[16];    //Á¢±Ù¾ÆÀÌÇÇ
    char m_szServerIP[16];  //¼¹ö¾ÆÀÌÇÇ
    int m_Authority;        //񀀥
} tAdminInfo;
//END_ADMIN_MANAGER

//BOOT_LOCALIZATION
struct tLocale
{
    char szValue[32];
    char szKey[32];
};
//BOOT_LOCALIZATION

//RELOAD_ADMIN
typedef struct SPacketReloadAdmin
{
    char szIP[16];
} TPacketReloadAdmin;
//END_RELOAD_ADMIN

typedef struct tChangeGuildMaster
{
    DWORD dwGuildID;
    DWORD idFrom;
    DWORD idTo;
} TPacketChangeGuildMaster;

typedef struct tItemIDRange
{
    DWORD dwMin;
    DWORD dwMax;
    DWORD dwUsableItemIDMin;
} TItemIDRangeTable;

typedef struct tUpdateHorseName
{
    DWORD dwPlayerID;
    char szHorseName[CHARACTER_NAME_MAX_LEN + 1];
} TPacketUpdateHorseName;

typedef struct tDC
{
    char    login[LOGIN_MAX_LEN + 1];
} TPacketDC;

typedef struct tNeedLoginLogInfo
{
    DWORD dwPlayerID;
} TPacketNeedLoginLogInfo;

//µ¶ÀÏ ¼±¹° ¾Ë¸² ±â´É Å×½ºÆ®¿ë ÆĞŶ Á¤º¸
typedef struct tItemAwardInformer
{
    char    login[LOGIN_MAX_LEN + 1];
    char    command[20];        //¸í·É¾î
    unsigned int vnum;            //¾ÆÀÌÅÛ
} TPacketItemAwardInfromer;
// ¼±¹° ¾Ë¸² ±â´É »èÁ¦¿ë ÆĞŶ Á¤º¸
typedef struct tDeleteAwardID
{
    DWORD dwID;
} TPacketDeleteAwardID;

typedef struct SChannelStatus
{
    short nPort;
    BYTE bStatus;
} TChannelStatus;

#pragma pack()
#endif
 
Üst