/* ==================================================================== * ÆÄ ÀÏ : gameSrvDefines.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : °ûöÁß * ÀÛ ¼º ÀÏ : 06/26/07 * ÁÖÀÇ»çÇ× : * =================================================================== */ #ifndef __GAME_SERVER_DEFINES_H__ #define __GAME_SERVER_DEFINES_H__ #include "Item_Common.h" #include "Skill_Common.h" #include "Guild_Common.h" #include "PVP_Common.h" #pragma once #pragma pack(1) // 1Byte Á¤·Ä ¼³Á¤ enum eItemBillApply { ItemBillApplyNone =0, // »ç ¿ë Áß - ±âº»°ª. ItemBillApplyRemoved, // »ç¿ëÁßÁö - Database¸¦ ÅëÇØ ÀÔ·Â. ItemBillApplyReserved, // »èÁ¦¿¹¾à - GameServer¿¡¼­¸¸ »ç¿ë. }; struct TB_ITEM_BILL { long idx; // °íÀ¯¹øÈ£ BYTE type; // Á¾·ù(0 ±â°£, 1 ½Ã°£) long validDate; // À¯È¿±â°£(ÃÊ ´ÜÀ§ »ç¿ë) long validTime; // À¯È¿½Ã°£(ÃÊ ´ÜÀ§ »ç¿ë) long inventoryIdx; // TB_INVENTORY::IDX °íÀ¯¹øÈ£ BYTE apply; // »ç¿ë¿©ºÎ(0 »ç¿ëÁß, 1 »ç¿ëÁßÁö) }; struct TB_ITEM_DEFINE { long idx; // °íÀ¯¹øÈ£ long idxAbility; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - ¼Ó ¼º (°¡»ó Ä÷³) long idxLimit; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - Á¦ ÇÑ (°¡»ó Ä÷³) long idxCard; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - Ä« µå (°¡»ó Ä÷³) long idxCardSlot; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - Ä«µå½½·Ô (°¡»ó Ä÷³) long idxTarot; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - Ÿ ·Î (°¡»ó Ä÷³) long idxEnhanced; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - °­ È­ (°¡»ó Ä÷³) long idxEnhancedRate; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - °­È­È®·ü (°¡»ó Ä÷³) long idxDisjoint; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - ºÐ ÇØ (°¡»ó Ä÷³) long idxChange; // Å×À̺íÀÇ °íÀ¯¹øÈ£ - ±³ ȯ (°¡»ó Ä÷³ ) long index; // ±âȹ:ºÐ·ù¹øÈ£ wchar_t name[51]; // À̸§ BYTE type; // Á¾·ù(±âȹÂüÁ¶) BYTE subType; // Á¾·ù(¼¼ºÎÇ׸ñ) BYTE searchType; // °Ë»öÁ¾·ù(´ëºÐ·ù) short searchSubType; // °Ë»öÁ¾·ù(Áߺзù) short weight; // ¹«°Ô short capacity; // Á¦ÇѼö·® long sellType; // ÆÇ¸Å¹æ¹ý(±âȹÂüÁ¶) long sellPrice; // ÆÇ¸Å°¡°Ý long buyType; // ±¸ÀÔ¹æ¹ý(±âȹÂüÁ¶) long buyPrice; // ±¸ÀÔ°¡°Ý long present; // ÃâÇö¼ö long maxPresent; // ÃÖ´ë ÃâÇö¼ö long maxInventory; // º¸À¯°¡´É°³¼ö BYTE licenseClass; // ±â°£Á¦ ¼³Á¤(0ÀϹÝ/1½ÇÁ¦½Ã°£/2°ÔÀӽð£/3¹«Á¦ÇÑ) long licenseValidThru; // »ç¿ë±âÇÑ BYTE licenseType; // ÀÎÁõ¿©ºÎ(0ÀÎÁõ¿Ï·á/1¹ÌÀÎÁõ) //BYTE sealcount; // ºÀÀμ³Á¤ BYTE exchange; // »ç¿ëÀÚ°Å·¡ ¿©ºÎ(0°Å·¡°¡´É/1°Å·¡ºÒ°¡/2¹ÌÀÎÁõ°Å·¡°¡´É/3¹ÌÀÎÁõ°Å·¡ºÒ°¡) long abilityIndex; // ±âȹ:ºÐ·ù¹øÈ£ long limitIndex; // ±âȹ:ºÐ·ù¹øÈ£ long cardIndex; // ±âȹ:ºÐ·ù¹øÈ£ long cardSlotIndex; // ±âȹ:ºÐ·ù¹øÈ£ long tarotIndex; // ±âȹ:ºÐ·ù¹øÈ£ long spreadIndex; // ±âȹ:ºÐ·ù¹øÈ£ long enhancedIndex; // ±âȹ:ºÐ·ù¹øÈ£ long enhancedRateIndex; // ±âȹ:ºÐ·ù¹øÈ£ long disjointIndex; // ±âȹ:ºÐ·ù¹øÈ£ long changeIndex; // ±âȹ:ºÐ·ù¹øÈ£ long titleIndex; // ±âȹ:ºÐ·ù¹øÈ£ long setIndex; // ±âȹ:ºÐ·ù¹øÈ£ long iconIndex; // ±âȹ:ºÐ·ù¹øÈ£ BYTE rareLevel; // ±âȹ:ºÐ·ù¹øÈ£ BYTE webPage; // ȨÆäÀÌÁö °ø°³¿©ºÎ(0°ø°³/1°ø°³¾ÈÇÔ) // wchar_t desc[1]; // ¼³¸í(»ý·«) BYTE apply; // Àû¿ë¿©ºÎ(0¹Ì»ç¿ë/1»ç¿ëÁß/2»ç¿ë¾ÈÇÔ) }; struct TB_ITEM_ABILITY { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ short def_class; // ¹æ¾î±¸ÀçÁú BYTE range_type; // ¹üÀ§¹æ½Ä BYTE target_type; // È¿°úÀû¿ëŸ°Ù short use_range; // »ç¿ë°Å¸® short p_def; // ¹°¸®:¹æ¾î·Â short m_def; // ¸¶¹ý:¹æ¾î·Â short atk_range; // °ø°Ý °Å¸® short atk_spd; // °ø°Ý ¼Óµµ long cool_time1; // Äð ŸÀÓ long cool_time2; // ±×·ì Äð ŸÀÓ short min_p_atk; // ¹°¸®:ÃÖ¼Ò°ø°Ý·Â short max_p_atk; // ¹°¸®:ÃÖ´ë°ø°Ý·Â short min_m_atk; // ¸¶¹ý:ÃÖ¼Ò°ø°Ý·Â short max_m_atk; // ¸¶¹ý:ÃÖ´ë°ø°Ý·Â short heal; // Èú ȸº¹·® short opt01_index; // ¿É¼Ç01À妽º(±âȹÂüÁ¶) short opt01_value; // ¿É¼Ç01È¿°ú°ª(±âȹÂüÁ¶) short opt02_index; // ¿É¼Ç02À妽º(±âȹÂüÁ¶) short opt02_value; // ¿É¼Ç02È¿°ú°ª(±âȹÂüÁ¶) short opt03_index; // ¿É¼Ç03À妽º(±âȹÂüÁ¶) short opt03_value; // ¿É¼Ç03È¿°ú°ª(±âȹÂüÁ¶) short opt04_index; // ¿É¼Ç04À妽º(±âȹÂüÁ¶) short opt04_value; // ¿É¼Ç04È¿°ú°ª(±âȹÂüÁ¶) short opt05_index; // ¿É¼Ç05À妽º(±âȹÂüÁ¶) short opt05_value; // ¿É¼Ç05È¿°ú°ª(±âȹÂüÁ¶) long influence_idx; // ½ºÅ³È¿°ú long active_index; // ¹ßµ¿È¿°ú }; struct TB_ITEM_COOLTIME1 { TB_ITEM_COOLTIME1* next; // ±×·ì Äð ŸÀÓ long itemDefineIdx; // Å×À̺íÀÇ °íÀ¯¹øÈ£ long itemDefineIndex; // ±âȹ:ºÐ·ù¹øÈ£ long cooltime; // Äð ŸÀÓ }; struct TB_ITEM_COOLTIME2 { long idx; // ±¸·ì¹øÈ£ TB_ITEM_COOLTIME1* cooltime1; // Äð ŸÀÓ }; enum ITEM_LIMIT_SERVER_TYPE { ITEM_LIMIT_COMMON = 0, ITEM_LIMIT_PVP, ITEM_LIMIT_TUTORIAL, ITEM_LIMIT_FIELD, }; struct TB_ITEM_LIMIT { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ BYTE charRace; // ij¸¯ÅÍ:Á¾Á· BYTE charGender; // ij¸¯ÅÍ:¼ºº° long charJob1; // ij¸¯ÅÍ:Á÷¾÷ long charJob2; // ij¸¯ÅÍ:Á÷¾÷ BYTE charLevelMin; // ij¸¯ÅÍ:·¹º§ BYTE charLevelMax; // ij¸¯ÅÍ:·¹º§ BYTE serverType; // ¼­¹öºÐ·ù(0¾øÀ½/1ÀüÀåÀü¿ë/2Æ©Å丮¾óÀü¿ë/3ÇʵåÀü¿ë) BYTE forceType; // ¼¼·Â BYTE makeSkill; // º¸Á¶Á÷¾÷ unsigned long makeSkillExp; // º¸Á¶Á÷¾÷ ¼÷·Ãµµ }; struct TB_ITEM_CARD { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ long episode; // ÆÇ long number; // Ä«µå¹øÈ£ BYTE level; // Èñ±Íµµ BYTE type; // Ä«µåºÐ·ù BYTE subType; // ÀåÂøÀ§Ä¡ }; struct TB_ITEM_CARD_SLOT { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ BYTE slot1; // Ä«µå½½·Ô1(0¾øÀ½/1AÇü/2BÇü/3ABÇü/4OÇü) BYTE slot2; // Ä«µå½½·Ô2(0¾øÀ½/1AÇü/2BÇü/3ABÇü/4OÇü) BYTE slot3; // Ä«µå½½·Ô3(0¾øÀ½/1AÇü/2BÇü/3ABÇü/4OÇü) BYTE slot4; // Ä«µå½½·Ô4(0¾øÀ½/1AÇü/2BÇü/3ABÇü/4OÇü) BYTE slot5; // Ä«µå½½·Ô5(0¾øÀ½/1AÇü/2BÇü/3ABÇü/4OÇü) }; struct TB_ITEM_TAROT { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ long number; // ¹øÈ£ BYTE level; // ·¹º§ long strValue; // Á¤¹æÇâ¼öÄ¡ long invValue; // ¾à¹æÇâ¼öÄ¡ long prop; // ¼Ó¼º long episode; // ¿¡ÇǼҵå(ÆÇ) }; struct TB_ITEM_TAROT_RESULT { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ long min_value; // ÃÖ¼Ò°ª long max_value; // ÃÖ´ë°ª long influence_idx1; // ½ºÅ³È¿°ú long influence_idx2; // ½ºÅ³È¿°ú long influence_idx3; // ½ºÅ³È¿°ú }; struct TB_ITEM_SPREAD { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ BYTE axisArray; // ÁÂÇ¥ À妽º short xPos; // XÁÂÇ¥ short yPos; // YÁÂÇ¥ BYTE dir; // ¹æÇâ char calc[2]; // °è»ê½Ä short value; // °è»ê¼öÄ¡ }; struct TB_ITEM_ENHANCED { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ long row; // Àû¿ëÇà¼ö struct { //BYTE equip; // ¼³Á¤ BYTE type; // ¼Ó¼º1(0¾øÀ½,1¹°¸®°ø°Ý·Â,2¸¶¹ý°ø°Ý·Â,3¹°¸®¹æ¾î·Â,4¸¶¹ý¹æ¾î·Â,5Èúȸº¹·®) short value[MAX_ITEM_ENHANCED]; } value[3]; }; struct TB_ITEM_ENHANCED_RATE { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ struct { BYTE type; // Á¾·ù(1ÀϹÝ/2°í±Þ) long success [MAX_ITEM_ENHANCED]; // ¼º°ø long down [MAX_ITEM_ENHANCED]; // Ç϶ô long destruct[MAX_ITEM_ENHANCED]; // ÆÄ±« } value[2]; }; struct TB_ITEM_DISJOINT { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ long price; // °¡°Ý long itemDefineIndex1; // ¾ÆÀÌÅÛ1(TB_ITEM_DEFINE::INDEX) short inventoryCount1; // Àκ¥Å丮 Áö±Þ ¼ö·®1 long itemDefineIndex2; // ¾ÆÀÌÅÛ2(TB_ITEM_DEFINE::INDEX) short inventoryCount2; // Àκ¥Å丮 Áö±Þ ¼ö·®2 long itemDefineIndex3; // ¾ÆÀÌÅÛ3(TB_ITEM_DEFINE::INDEX) short inventoryCount3; // Àκ¥Å丮 Áö±Þ ¼ö·®3 long itemDefineIndex4; // ¾ÆÀÌÅÛ4(TB_ITEM_DEFINE::INDEX) short inventoryCount4; // Àκ¥Å丮 Áö±Þ ¼ö·®4 long itemDefineIndex5; // ¾ÆÀÌÅÛ5(TB_ITEM_DEFINE::INDEX) short inventoryCount5; // Àκ¥Å丮 Áö±Þ ¼ö·®5 long itemDefineIndex6; // ¾ÆÀÌÅÛ6(TB_ITEM_DEFINE::INDEX) short inventoryCount6; // Àκ¥Å丮 Áö±Þ ¼ö·®6 }; struct TB_ITEM_CHANGE { long idx; // °íÀ¯¹øÈ£ long index; // ±âȹ:ºÐ·ù¹øÈ£ long minMoney; // ÃÖ¼Ò ±Ý¾× long maxMoney; // ÃÖ´ë ±Ý¾× long rate; // º¯È¯°¡´É ¼ö·® long row; // Àû¿ëµÈ Çà¼ö long itemDefineIndex[ MAX_ITEM_CHANGE_DATA ]; // ¾ÆÀÌÅÛ Á¤ÀÇ À妽º short itemCount[ MAX_ITEM_CHANGE_DATA ]; // ¾ÆÀÌÅÛ ¼ö·® short enhanced[ MAX_ITEM_CHANGE_DATA ]; // enhanced long changeRate[ MAX_ITEM_CHANGE_DATA ]; // º¯È¯È®·ü }; struct TB_CHARACTER_LIST { long idx; // ij¸¯ÅÍ À妽º wchar_t name[17]; // ij¸¯ÅÍ À̸§ char level; // ij¸¯ÅÍ ·¹º§ char race; // ij¸¯ÅÍ Á¾Á· char gender; // ij¸¯ÅÍ ¼ºº° long job; // ij¸¯ÅÍ Á÷¾÷ long hair; // ij¸¯ÅÍ Çì¾î long hairColor; // ij¸¯ÅÍ ¸Ó¸®»ö long face; // ij¸¯ÅÍ ¾ó±¼ long equipItem[LEN_INVENTORY_EQUIP]; // Âø¿ëÁß ¾ÆÀÌÅÛ char enhancedItem[LEN_INVENTORY_EQUIP]; // Âø¿ëÁß °­È­ ¾ÆÀÌÅÛ char activeWeapon; // ¾ÆÀÌÅÛ ¹«±â ½º¿Ò short mapNum; // ij¸¯ÅÍ ¸Ê(À§Ä¡) char standIdx; // ij¸¯ÅÍ »ý¼º¼ø¼­ long exp; // ij¸¯ÅÍ °æÇèÄ¡ char skillLevel; // ij¸¯ÅÍ ½ºÅ³ ·¹º§ long skillExp; // ij¸¯ÅÍ ½ºÅ³ °æÇèÄ¡ long skillPointTotal; // ij¸¯ÅÍ ½ºÅ³ Æ÷ÀÎÆ® long guild_index; // ij¸¯ÅÍ ±æµå À妽º long delWaitTime; // ij¸¯ÅÍ »èÁ¦´ë±â ½Ã°£ BYTE apply; }; struct TB_CHARACTER { long idx; // ij¸¯ÅÍ À妽º wchar_t name[17]; // ij¸¯ÅÍ À̸§ char level; // ij¸¯ÅÍ ·¹º§ char race; // ij¸¯ÅÍ Á¾Á· char gender; // ij¸¯ÅÍ ¼ºº° long job; // ij¸¯ÅÍ Á÷¾÷ long hair; // ij¸¯ÅÍ Çì¾î long hairColor; // ij¸¯ÅÍ ¸Ó¸®»ö long face; // ij¸¯ÅÍ ¾ó±¼ long equipItem[LEN_INVENTORY_EQUIP]; // Âø¿ëÁß ¾ÆÀÌÅÛ char enhancedItem[LEN_INVENTORY_EQUIP]; // Âø¿ëÁß °­È­ ¾ÆÀÌÅÛ char activeWeapon; // Ȱ¼º ¹«±âÁ¤º¸ (0 Front, 1 Back) short mapNum; // ij¸¯ÅÍ ¸Ê(À§Ä¡) float xPos; // ij¸¯ÅÍ X ÁÂÇ¥ float yPos; // ij¸¯ÅÍ Y ÁÂÇ¥ long exp; // ij¸¯ÅÍ °æÇèÄ¡ long HP; // ij¸¯ÅÍ HP long MP; // ij¸¯ÅÍ MP char skillLevel; // ½ºÅ³ ·¹º§ long skillPointRemain; // ½ºÅ³ ³²ÀºÆ÷ÀÎÆ® long skillPointTotal; // ½ºÅ³ ÃÑ È¹µæ·® long skillExp; // ½ºÅ³ °æÇèÄ¡ long tarotPoint; // Ÿ·Î Æ÷ÀÎÆ® __int64 money; // ¼ÒÁö±Ý¾× __int64 deposit; // ¿¹Ä¡±Ý¾× long option1; // ¿É¼Ç1 unsigned char mForceType; // ¼±Åà ¼¼·Â unsigned long mPvPPoint; // PVP Æ÷ÀÎÆ® unsigned long mFirePoint; // ºÒ Æ÷ÀÎÆ® unsigned long mFireFriendly; // ºÒ Ä£¹Ðµµ unsigned long mWaterPoint; // ¹° Æ÷ÀÎÆ® unsigned long mWaterFriendly; // ¹° Ä£¹Ðµµ unsigned long mWindPoint; // ¹Ù¶÷ Æ÷ÀÎÆ® unsigned long mWindFriendly; // ¹Ù¶÷ Ä£¹Ðµµ unsigned long mEarthPoint; // ¶¥ Æ÷ÀÎÆ® unsigned long mEarthFriendly; // ¶¥ Ä£¹Ðµµ unsigned long mTitleIndex; // ¼ÂÆÃµÈ ȣĪÀ妽º unsigned long mGuildIndex; // ±æµå À妽º unsigned char mGuildPosition; // ±æµå³» Á÷À§ unsigned char mMakeSkill1; // Àü¹® ±â¼ú unsigned char mMakeSkill2; unsigned char mMakeSkillStep1; // Àü¹® ±â¼ú ´Ü°è unsigned char mMakeSkillStep2; unsigned long mMakeSkillExp1; // Àü¹® ±â¼ú ¼÷·Ãµµ unsigned long mMakeSkillExp2; char standIdx; // ij¸¯ÅÍ »ý¼º¼ø¼­ unsigned short mBagEnd; // Àκ¥Å丮 Å©±â unsigned short mWearEnd; // Ä«µå ½½·Ô unsigned short mWareHouseEnd; // â°í Å©±â unsigned short mMakeSkillEnd; // º¸Á¶Á÷¾÷ °¹¼ö unsigned long tutorialModeIndex; // Æ©Å丮¾ó ¸ðµå À妽º unsigned long mExpRecover; // °æÇèÄ¡ º¹±¸·® TIMESTAMP_STRUCT mExpRecoverendDate; // °æÇèÄ¡ º¹±¸ Á¾·á½Ã°£ }; struct TB_DEFAULT_ITEMS { long characterJob; long itemDefineIndex; short inventoryNumber; short inventoryCount; }; enum eInventoryApply { InventoryApplyNone =0, // Àκ¥Å丮 »ç ¿ë Áß - ±âº»°ª. InventoryApplyRemoved, // Àκ¥Å丮 »ç¿ëÁßÁö - Database¸¦ ÅëÇØ ÀÔ·Â. InventoryApplyExchange, // Àκ¥Å丮 °Å ·¡ Áß - GameServer¿¡¼­¸¸ »ç¿ë. InventoryApplyStallSell, // Àκ¥Å丮 ÆÇ ¸Å Áß - GameServer¿¡¼­¸¸ »ç¿ë. InventoryApplyGetAuto, // Àκ¥Å丮 ÀÚµ¿½Àµæ - GameServer¿¡¼­¸¸ »ç¿ë. }; struct TB_INVENTORY { long idx; // °íÀ¯¹øÈ£ long itemDefineIdx; // ¾ÆÀÌÅÛ Á¤ÀÇ °íÀ¯¹øÈ£ long itemDefineIndex; // ¾ÆÀÌÅÛ Á¤ÀÇ À妽º short number; // ¹øÈ£(½½·ÔÀ妽º) short count; // ¼ö·® BYTE enhanced; // °­È­´Ü°è(0~15 ±îÁö) long cardSlot1; // Ä«µå½½·Ô1 long cardSlot2; // Ä«µå½½·Ô2 long cardSlot3; // Ä«µå½½·Ô3 long cardSlot4; // Ä«µå½½·Ô4 long cardSlot5; // Ä«µå½½·Ô5 BYTE seal; // ºÀÀÎ(0ºÀÀÎÇØÁ¦/1ºÀÀεÊ) BYTE cash; // ij½Ã(0ÀϹÝ/1ij½Ã) BYTE apply; // »ç¿ë¿©ºÎ }; struct TB_INVENTORY_COOLTIME { long itemDefineIndex; // ¾ÆÀÌÅÛ Á¤ÀÇ À妽º long cooltime2; // ÄðŸÀÓ ±×·ì À妽º long cooltime1; // ÄðŸÀÓ(Àû¿ëµÈ ½Ã°£ ms) long cooltime; // ÄðŸÀÓ(³²Àº½Ã°£ ms) }; struct TB_FRIEND { long idx; // °íÀ¯¹øÈ£ long characterIdx; // ij¸¯ÅÍ °íÀ¯¹øÈ£ wchar_t characterName[ 17 ]; // ij¸¯ÅÍ À̸§ char race; // ij¸¯ÅÍ Á¾Á· char gender; // ij¸¯ÅÍ ¼ºº° char level; // ij¸¯ÅÍ ·¹º§ unsigned long job; // ij¸¯ÅÍ Á÷¾÷(ePLAYER_JOB) unsigned short mapNum; // ij¸¯ÅÍ ¸Ê(À§Ä¡) DWORD channelNum; // Á¢¼ÓÇÑ Ã¤³Î ¹øÈ£ //BYTE gameIn; // Á¢¼Ó»óÅÂ(0Á¢¼Ó¾ÈµÊ/1Á¢¼ÓÁß) BYTE status; // µî·Ï»óÅÂ(0µî·Ï¿Ï·á/1µî·Ï½Åû) BYTE block; // Â÷´Ü»óÅÂ(0Â÷´Ü¾ÈÇÔ/1Â÷´ÜÇÔ) }; struct TB_STALL_SELL { long idx; // °íÀ¯¹øÈ£ long characterIdx; // ij¸¯ÅÍ °íÀ¯¹øÈ£ long price; // ÆÇ¸Å °¡°Ý }; struct TB_SHORTCUT { char binary[500]; // ÀÌÁøµ¥ÀÌÅÍ(500BYTE) }; struct TB_CHARACTER_SKILL { unsigned long mSkillIdx; // ½ºÅ³ À妽º unsigned char mSkillStep; // ½ºÅ³ ´Ü°è long mEndCoolTime; // ÄðŸÀÓ Á¾·á ½Ã°£ }; struct TB_RECIPE_COOLTIME { unsigned long mMakeSkill; // Á¶ÇÕ½ºÅ³ unsigned long mRecipeIdx; // ·¹½ÃÇÇ unsigned long mLeftCoolTime; // ÄðŸÀÓ }; struct TB_GUILDMARK { BYTE binary[2360]; // ÀÌÁøµ¥ÀÌÅÍ(2348BYTE) - 24 * 24 * (32/8) + 18 + 26 }; // È¿°ú typedef sInfluence TB_CHARACTER_INFLUENCE; /// Äù½ºÆ® ÁøÇàÁ¤º¸ struct TB_QUEST_PROGRESS { unsigned long idx; // [In] db °íÀ¯À妽º unsigned long questIdx; // [In] Äù½ºÆ® °íÀ¯¹øÈ£ __int64 check; // [In] ÁøÇàÁ¤º¸ unsigned long startTime; // ½Ã°£ °Ë»ç¿ë unsigned long restTime; // [Out] ³²Àº½Ã°£ char status; // [Out] Äù½ºÆ®»óÅ (0:ÁøÇàÁß, 2:ÁøÇà¿Ï·á, 4:ÁøÇà½ÇÆÐ) long retvalue; // [Out] °á°ú }; /// ȣĪ Á¤º¸ struct TB_TITLE { long idx; // [In] db °íÀ¯À妽º unsigned long titleIdx; // [In] ȣĪ À妽º }; /// ±æµå Á¤º¸ struct TB_GUILD { unsigned long idx; // [Out] ±æµå °íÀ¯¹øÈ£(±æµåÀ妽º) wchar_t name[13]; // [Out] ±æµå¸í unsigned long masterIndex; // [Out] ±æµåÀå À妽º wchar_t masterName[17]; // [Out] ±æµå¸í wchar_t notice[41]; // [Out] ±æµå °øÁö TIMESTAMP_STRUCT markDate; // [Out] ¸¶Å© Ãֽеî·ÏÀÏ BYTE mark[2360]; // [Out] ¸¶Å© - 24 * 24 * (32/8) + 18 + 26 (Çì´õÅ©±â + È®Àå) char apply; // [Out] »èÁ¦ Á¤º¸ }; /// ±æµå À¯Àú Á¤º¸ struct TB_GUILD_USER { unsigned long characterIdx; // [Out] ij¸¯ÅÍ À妽º wchar_t name[17]; // [Out] ij¸¯Å͸í unsigned char level; // [Out] ·¹º§ unsigned long job; // [Out] ij¸¯ÅÍ Á÷¾÷ unsigned short mapnum; // [Out] ¸Ê ¹øÈ£ unsigned char position; // [Out] Á÷À§ DWORD channelNum; // Á¢¼ÓÇÑ Ã¤³Î ¹øÈ£ bool sendInfo; // Àü¼Û Ç÷¡±× unsigned long tick; // Á¢¼Ó À¯Áö Á¤º¸ }; /// Á¦Á¶½ºÅ³ struct TB_MAKESKILL { unsigned long mMakeSkill; // [Out] Á¦Á¶½ºÅ³ unsigned long mRecipeIdx; // [Out] ·¹½ÃÇÇidx unsigned long mCoolTime; // [Out] ÄðŸÀÓ }; struct TB_PARTY_USER { long idx; long characterIdx; short ch; }; /// ¾ÆÀÌÅÛ µå¶øÁ¦¾à struct TB_ITEM_DROPLIMIT { unsigned long mItemIdx; /// ¾ÆÀÌÅÛ Á¾·ù unsigned long mDropTerm; /// µå¶ø ÁÖ±â TIMESTAMP_STRUCT mDropEndTime; /// µå¶ø ÇöÀç Áֱ⠳¡³ª´Â ½Ã°£ unsigned char mIsDrop; /// ÀÌ¹Ì µå¶øÇß´ÂÁö À¯¹« }; //-------------------------------------------------------------------- // GAME SYN struct MSG_SYN_POSTFRIEND_CONNECT : MSGROOT { long characterIdx; char level; // ij¸¯ÅÍ ·¹º§ unsigned long job; // ij¸¯ÅÍ Á÷¾÷(ePLAYER_JOB) unsigned short mapNum; // ij¸¯ÅÍ ¸Ê(À§Ä¡) BYTE connect; // (1:Á¢¼Ó,0:¹ÌÁ¢¼Ó) bool sendConnect; // long friendlist[ 50 ]; // Ä£±¸ À妽º }; // ±æµå¿ø Á¢¼Ó ¿©ºÎ struct MSG_SYN_POSTGUILD_CONNECT : MSGROOT { unsigned long idx; unsigned long characterIdx; DWORD channelNum; // Á¢¼ÓÇϴ ä³Î¹øÈ£ BYTE connect; // (1:Á¢¼Ó,0:¹ÌÁ¢¼Ó) bool sendConnect; // }; struct sGuildConnect { unsigned long characterIdx; char level; unsigned short job; DWORD channelNum; }; // ±æµå¿ø ¹× ¼­¹ö LIVE üũ struct MSG_SYN_POSTGUILD_TTL : MSGROOT { unsigned long idx; sGuildConnect data; }; /// ±æµå »ý¼º struct MSG_SYN_POSTGUILD_CREATE : MSGROOT { long idx; // ±æµå À妽º wchar_t name[MAX_GUILDNAME_BUFFER_SIZE]; // ±æµå¸í wchar_t masterName[MAX_NAME_BUFFER_SIZE]; // ±æµåÀå¸í unsigned long masterIndex; // ±æµåÀå À妽º // master Á¤º¸ char level; // ·¹º§ unsigned short job; // ij¸¯ÅÍ Á÷¾÷ short mapnum; // ¸Ê ¹øÈ£ char position; // Á÷À§ }; /// ±æµå »èÁ¦ struct MSG_SYN_POSTGUILD_DELETE : MSGROOT { long idx; /// ±æµå À妽º }; /// ±æµå À¯Àú Ãß°¡ struct MSG_SYN_POSTGUILD_USERADD : MSGROOT { long idx; // ±æµå À妽º unsigned long characterIdx; // À¯Àú À妽º wchar_t name[MAX_NAME_BUFFER_SIZE]; // ±æµåÀå¸í char level; // ·¹º§ unsigned short job; // ij¸¯ÅÍ Á÷¾÷ short mapnum; // ¸Ê ¹øÈ£ char position; // Á÷À§ }; /// ±æµå¿ø Á¦¸í struct MSG_SYN_POSTGUILD_USERCUT : MSGROOT { long idx; // ±æµå À妽º unsigned long characterIdx; // À¯Àú À妽º }; /// ±æµå Å»Åð struct MSG_SYN_POSTGUILD_USEROUT : public MSG_SYN_POSTGUILD_USERCUT { long idx; // ±æµå À妽º unsigned long characterIdx; // À¯Àú À妽º }; /// Á÷À§ ºÎ¿© struct MSG_SYN_POSTGUILD_GIVEPOSITION : MSGROOT { long idx; // ±æµå À妽º unsigned long characterIdx; // À¯Àú À妽º char position; // Á÷À§ }; /// ±æµå ¸¶Å© º¯°æ struct MSG_SYN_POSTGUILD_UPDATEMARK : MSGROOT { long idx; // ±æµå À妽º TIMESTAMP_STRUCT markRegistDate; // ¸¶Å© µî·ÏÀÏ BYTE mark[MARK_SIZE]; /// ±æµå¸¶Å© }; /// ±æµå °øÁö struct MSG_SYN_POSTGUILD_NOTICE : MSGROOT { long idx; // ±æµå À妽º wchar_t notice[MAX_GUILD_NOTICE_BUFFER_SIZE]; // »õ °øÁö unsigned long GetMsgLength( ) { return sizeof(MSG_SYN_POSTGUILD_NOTICE) - sizeof(notice) + ::wcslen(notice)*sizeof(wchar_t); } }; /// ±æµå äÆÃ struct MSG_SYN_POSTGUILD_CHAT : MSGROOT { long idx; // ±æµå À妽º sInventory inventory; // ¾ÆÀÌÅÛ Á¤º¸ unsigned short Job; // º¸³½ Ç÷¹À̾î Á÷¾÷ wchar_t Name[MAX_NAME_BUFFER_SIZE]; // º¸³½ Ç÷¹À̾î À̸§ wchar_t Message[MAX_CHAT_BUFFER_SIZE]; // ¸Þ¼¼Áö // ½ÇÁ¦º¸³»´Â ¸Þ¼¼Áö Å©±â unsigned long GetMsgLength( ) { return sizeof(MSG_SYN_POSTGUILD_CHAT) - sizeof(Message) + ::wcslen(Message)*sizeof(wchar_t); } }; /// pvp Á¢¼Ó/ºñÁ¢¼Ó ¸í´Ü struct MSG_SYN_POSTPVP_PLAYERLIST { unsigned long mCount; unsigned long mAryPos; sPvPPlayerList mList[1]; unsigned long GetMsgLength() { return sizeof(MSG_SYN_POSTPVP_PLAYERLIST) - sizeof(mList) + (mCount * sizeof(sPvPPlayerList)); } }; #pragma pack( ) // 1Byte Á¤·Ä ÇØÁ¦ #endif // __GAME_SERVER_DEFINES_H__