#ifndef _LOG_STRUCT_H_ #define _LOG_STRUCT_H_ #include #include #include #include #include #include #include #include #pragma pack(1) // ¾ÆÀÌÅÛ ±¸Á¶°¡ ¹Ù²ñ¿¡ µû¶ó¼­, ·Î±×µµ ´Ù¸¥ ¹æ½ÄÀ¸·Î ³²±â°Ô µÊ. namespace GAMELOG { typedef unsigned char CMDType; typedef unsigned char ERRType; // ±âº» ·Î±× Structure struct sLogBase { unsigned long m_dwUID; // UserID unsigned long m_dwCID; // Character ID time_t m_time; // ·Î±× ½Ã°£ unsigned short m_usXPos; // ij¸¯ÅÍ ÁÂÇ¥X unsigned short m_usYPos; // ij¸¯ÅÍ ÁÂÇ¥Y unsigned short m_usZPos; // ij¸¯ÅÍ ÁÂÇ¥Z CMDType m_cCmd; // Ä¿¸Çµå ERRType m_cErr; // ¿¡·¯ ÄÚµå inline void InitLogBase(const unsigned long dwUID, const unsigned long dwCID, const Position& Pos, const time_t time, const CMDType cCmd, const ERRType cErr); int GetSize(); }; inline void sLogBase::InitLogBase(const unsigned long dwUID, const unsigned long dwCID, const Position& Pos, const time_t time, const CMDType cCmd, const ERRType cErr) { m_dwUID = dwUID; m_dwCID = dwCID; m_usXPos = static_cast(Pos.m_fPointX); m_usYPos = static_cast(Pos.m_fPointY); m_usZPos = static_cast(Pos.m_fPointZ); m_time = time; m_cCmd = cCmd; m_cErr = cErr; } // -------------------------------------------------------------------------------------------- // ij¸¯ÅÍ ·Î±× Structure : ·Î±×ÀÎ, ·Î±×¾Æ¿ô // ¹Ù·Î µÚ¿¡ ij¸¯ÅÍ ´ýÇÁ¸¦ ±â·ÏÇÔ. struct sCharLoginOut : public sLogBase { enum LOGINOUT_ERROR { CANNOT_UPDATE_LOGOUT = 1 }; unsigned long m_nIP; // Á¢¼Ó ¾ÆÀÌÇÇ unsigned short m_usPort; // Æ÷Æ® unsigned char m_cAdmin; // ¾îµå¹Î unsigned short m_usDataSize[DBUpdateData::MAX_UPDATE_DB]; unsigned short m_usDepositData; unsigned long m_dwDepositMoney; inline void InitCharLog(const SOCKADDR_IN* lpSockAddr_In, const unsigned char cAdmin, const unsigned short usDataSize[DBUpdateData::MAX_UPDATE_DB], const unsigned short usDepositData, const unsigned long dwDepositMoney); inline int GetCharacterInfoSize() { return std::accumulate(&m_usDataSize[0], &m_usDataSize[DBUpdateData::MAX_UPDATE_DB], 0); } }; inline void sCharLoginOut::InitCharLog(const SOCKADDR_IN* lpSockAddr_In, const unsigned char cAdmin, const unsigned short usDataSize[DBUpdateData::MAX_UPDATE_DB], const unsigned short usDepositData, const unsigned long dwDepositMoney) { if(NULL == lpSockAddr_In) { m_nIP = 0; m_usPort = 0; } else { m_nIP = lpSockAddr_In->sin_addr.s_addr; m_usPort = lpSockAddr_In->sin_port; } m_cAdmin = cAdmin; memcpy(m_usDataSize, usDataSize, sizeof(unsigned short) * DBUpdateData::MAX_UPDATE_DB); m_usDepositData = usDepositData; m_dwDepositMoney = dwDepositMoney; } // ij¸¯ÅÍ ·Î±× Structure : ij¸¯ÅÍ»ý¼º, ¼Ò¸ê struct sCharCreateDelete : public sLogBase { unsigned long m_nIP; // Á¢¼Ó ¾ÆÀÌÇÇ unsigned short m_usPort; // Æ÷Æ® inline void InitCharLog(const SOCKADDR_IN* lpSockAddr_In); }; inline void sCharCreateDelete::InitCharLog(const SOCKADDR_IN* lpSockAddr_In) { if(NULL == lpSockAddr_In) { m_nIP = 0; m_usPort = 0; } else { m_nIP = lpSockAddr_In->sin_addr.s_addr; m_usPort = lpSockAddr_In->sin_port; } } // -------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------- // ¾ÆÀÌÅÛ ´ýÇÁ. µÚ¿¡ Equip, Inven, Extra, ExchangeÀÇ ´ýÇÁ°¡ ºÙ´Â´Ù. struct sItemDump { enum { EQUIP_DUMP = 0, INVEN_DUMP = 1, EXTRA_DUMP = 2, EXCHANGE_DUMP = 3, MAX_DUMP = 4 }; unsigned short m_usDataSize[MAX_DUMP]; inline int sItemDump::GetItemDumpSize() { return std::accumulate(&m_usDataSize[0], &m_usDataSize[MAX_DUMP], 0); } }; const unsigned short MAX_ITEM_DUMP_SIZE = sizeof(sItemDump) + sizeof(EQUIP) + sizeof(INVEN) + sizeof(EXTRA) + sizeof(EXCHANGE); struct sMinItemInfo { DWORD64 m_dwItemUID; unsigned short m_usProtoTypeID; unsigned char m_cNowDurability; sMinItemInfo() : m_dwItemUID(0), m_usProtoTypeID(0), m_cNowDurability(0) { } sMinItemInfo(const Item::CItem* lpItem_In) { InitMinItemInfo(lpItem_In); } inline void InitMinItemInfo(const Item::CItem* lpItem_In); }; inline void sMinItemInfo::InitMinItemInfo(const Item::CItem* lpItem_In) { if(NULL == lpItem_In) { m_dwItemUID = 0; m_usProtoTypeID = 0; m_cNowDurability = 0; } else { m_dwItemUID = lpItem_In->GetUID(); m_usProtoTypeID = lpItem_In->GetPrototypeID(); m_cNowDurability = lpItem_In->GetNumOrDurability(); } } // MoveItem·Î±× - ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sMoveItemLog : public sLogBase { TakeType m_takeType; sMinItemInfo m_itemInfo; inline void InitMoveItemLog(const TakeType takeType, const sMinItemInfo minItemInfo); }; inline void sMoveItemLog::InitMoveItemLog(const TakeType takeType, const sMinItemInfo minItemInfo) { m_takeType = takeType; m_itemInfo = minItemInfo; } // SwapItem·Î±× - ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sSwapItemLog : public sLogBase { TakeType m_srcTake; TakeType m_dstTake; sMinItemInfo m_srcItemInfo; sMinItemInfo m_dstItemInfo; inline void InitSwapItemLog(const TakeType srcTake, const TakeType dstTake, const Item::CItem* lpSrcItem, const Item::CItem* lpDstItem); }; inline void sSwapItemLog::InitSwapItemLog(const TakeType srcTake, const TakeType dstTake, const Item::CItem* lpSrcItem, const Item::CItem* lpDstItem) { m_srcTake = srcTake; m_dstTake = dstTake; m_srcItemInfo.InitMinItemInfo(lpSrcItem); m_dstItemInfo.InitMinItemInfo(lpDstItem); } // UseItem·Î±× - ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sUseItemLog : public sLogBase { Item::ItemPos m_usePos; sMinItemInfo m_itemInfo; inline void InitUseItemLog(const Item::ItemPos usePos, const Item::CItem* lpUseItem); }; inline void sUseItemLog::InitUseItemLog(const Item::ItemPos usePos, const Item::CItem* lpUseItem) { m_usePos = usePos; m_itemInfo.InitMinItemInfo(lpUseItem); } // SplitItem·Î±× - ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sSplitItemLog : public sLogBase { TakeType m_splitTake; sMinItemInfo m_prevItem; sMinItemInfo m_splitItem; inline void InitSplitItemLog(const TakeType splitTake, const Item::CItem* lpPrevItem, const Item::CItem* lpSplitItem); }; inline void sSplitItemLog::InitSplitItemLog(const TakeType splitTake, const Item::CItem* lpPrevItem, const Item::CItem* lpSplitItem) { m_splitTake = splitTake; m_prevItem.InitMinItemInfo(lpPrevItem); m_splitItem.InitMinItemInfo(lpSplitItem); } // -------------------------------------------------------------------------------------------- // UseItem·Î±× - ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sUseLotteryLog : public sLogBase { sMinItemInfo m_itemInfo; inline void InitUseLotteryLog(const Item::CItem* lpGetItem); }; inline void sUseLotteryLog::InitUseLotteryLog(const Item::CItem* lpGetItem) { m_itemInfo.InitMinItemInfo(lpGetItem); } // -------------------------------------------------------------------------------------------- // PickupItem ·Î±× - µÚ¿¡ ÁýÀº ItemÀÌ Çϳª ºÙÀ½, ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sPickupItemLog : public sLogBase { unsigned long m_dwGold; Item::ItemPos m_itemPos; inline void InitPickupItemLog(const unsigned long dwGold, const Item::ItemPos itemPos); }; inline void sPickupItemLog::InitPickupItemLog(const unsigned long dwGold, const Item::ItemPos itemPos) { m_dwGold = dwGold; m_itemPos = itemPos; } // DropItem·Î±× - µÚ¿¡ ¹ö¸° ItemÀÌ Çϳª ºÙÀ½, ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sDropItemLog : public sLogBase { unsigned long m_dwGold; Item::ItemPos m_itemPos; // cNumÀº µÚ¿¡ ºÙ´ÂItemÀÇ Å©±â. inline void InitDropItemLog(const unsigned long dwGold, const Item::ItemPos itemPos); }; inline void sDropItemLog::InitDropItemLog(const unsigned long dwGold, const Item::ItemPos itemPos) { m_dwGold = dwGold; m_itemPos = itemPos; } // TradeItem·Î±× - »ç°Å³ª ÆÈ ¶§ ¾ÆÀÌÅÛ Á¤º¸°¡ µÚ¿¡ ºÙÀ½. ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sTradeItemLog : public sLogBase { unsigned long m_dwTraderCID; unsigned long m_dwGold; Item::ItemPos m_itemPos; inline void InitTradeItemLog(const unsigned long dwTraderCID, const unsigned long dwGold, const Item::ItemPos itemPos); }; inline void sTradeItemLog::InitTradeItemLog(const unsigned long dwTraderCID, const unsigned long dwGold, const Item::ItemPos itemPos) { m_dwTraderCID = dwTraderCID; m_dwGold = dwGold; m_itemPos = itemPos; } // InstanllSocketLog : µÚ¿¡ Gem°ú ¾÷±×·¹ÀÌµå µÈ ItemÀÌ Çϳª¾¿ ºÙÀ½. (¿¡·¯½Ã ºÙÁö ¾ÊÀ½) struct sInstallSocketLog : public sLogBase { TakeType m_GemAndEquip; // Src - Gem, Dst - Equip unsigned char m_cGemSize; unsigned char m_cEquipSize; inline void InitInstallSocketLog(const TakeType GemAndEquip, const unsigned char cGemSize, const unsigned char cEquipSize); }; inline void sInstallSocketLog::InitInstallSocketLog(const TakeType GemAndEquip, const unsigned char cGemSize, const unsigned char cEquipSize) { m_GemAndEquip = GemAndEquip; m_cGemSize = cGemSize; m_cEquipSize = cEquipSize; } // UpgradeItemLog : ¾ÆÀÌÅÛ ¾÷±×·¹ÀÌµå ·Î±× : µÚ¿¡ ±¤¹°°ú ¾÷±×·¹ÀÌµå µÈ ItemÀÌ Çϳª¾¿ ºÙÀ½. (¿¡·¯½Ã ºÙÁö ¾ÊÀ½) struct sUpgradeItemLog : public sLogBase { unsigned long m_dwCurrentGold; unsigned long m_dwUsedGold; unsigned char m_cMineralSize; unsigned char m_cEquipSize; inline void InitUpgradeItemLog(const unsigned long dwCurrentGold, const unsigned long dwUsedGold, const unsigned char cMineralSize, const unsigned char cEquipSize); }; inline void sUpgradeItemLog::InitUpgradeItemLog(const unsigned long dwCurrentGold, const unsigned long dwUsedGold, const unsigned char cMineralSize, const unsigned char cEquipSize) { m_dwCurrentGold = dwCurrentGold; m_dwUsedGold = dwUsedGold; m_cMineralSize = cMineralSize; m_cEquipSize = cEquipSize; } struct sUpgradeItemLogV2 : public sLogBase { unsigned long m_dwCurrentGold; unsigned long m_dwUsedGold; unsigned char m_cLastUpgradeLevel; // ÀÌÀü ¾÷±×·¹ÀÌµå ´Ü°è. ÇöÀç ¾÷±×·¹ÀÌµå ´Ü°è¿Í ºñ±³Çؼ­ ¶³¾îÁ³À¸¸é ½ÇÆÐ. unsigned char m_cMineralSize; unsigned char m_cEquipSize; inline void InitUpgradeItemLog(const unsigned long dwCurrentGold, const unsigned long dwUsedGold, const unsigned char cLastUpgradeLevel, const unsigned char cMineralSize, const unsigned char cEquipSize); }; inline void sUpgradeItemLogV2::InitUpgradeItemLog(const unsigned long dwCurrentGold, const unsigned long dwUsedGold, const unsigned char cLastUpgradeLevel, const unsigned char cMineralSize, const unsigned char cEquipSize) { m_dwCurrentGold = dwCurrentGold; m_dwUsedGold = dwUsedGold; m_cLastUpgradeLevel = cLastUpgradeLevel; m_cMineralSize = cMineralSize; m_cEquipSize = cEquipSize; } // ExchangeLog : ¾ÆÀÌÅÛ ±³È¯ ·Î±×. µÚ¿¡ ±³È¯ÇÏ´Â ¾ÆÀÌÅÛµéÀÌ µû¶ó¿È. struct sExchangeItemLog : public sLogBase { unsigned long m_dwGold; // ±³È¯ÇÏ´Â µ·ÀÇ ¾ç. unsigned long m_dwDstCID; // ±³È¯ »ó´ëÀÇ CID. unsigned short m_usItemSize; // ¾ÆÀÌÅÛ ´ýÇÁ Å©±â. inline void InitExchangeItemLog(const unsigned long dwGold, const unsigned long dwDstCID, const unsigned short usItemSize); }; inline void sExchangeItemLog::InitExchangeItemLog(const unsigned long dwGold, const unsigned long dwDstCID, const unsigned short usItemSize) { m_dwGold = dwGold; m_dwDstCID = dwDstCID; m_usItemSize = usItemSize; } // sRepairItemLog : ¾ÆÀÌÅÛ ¼ö¸® ·Î±×. struct sRepairItemLog : public sLogBase { unsigned long m_dwUsed; sMinItemInfo m_RepairedItem; unsigned char m_cPreRepairDurability; inline void InitRepairItemLog(const unsigned long dwUsed, const Item::CItem* lpItem, const unsigned char cPreRepairDurability); }; inline void sRepairItemLog::InitRepairItemLog(const unsigned long dwUsed, const Item::CItem* lpItem, const unsigned char cPreRepairDurability) { m_dwUsed = dwUsed; m_RepairedItem.InitMinItemInfo(lpItem); m_cPreRepairDurability = cPreRepairDurability; } // sChangeWeaponLog : ¼Õ ¹Ù²Ù±â ·Î±× struct sChangeWeaponLog : public sLogBase { unsigned char m_cCurrentHand; inline void InitCurrentHand(const unsigned char cCurrentHand); }; inline void sChangeWeaponLog::InitCurrentHand(const unsigned char cCurrentHand) { m_cCurrentHand = cCurrentHand; } // sChangeRideLog : ¸» Ÿ±â ·Î±× struct sChangeRideLog : public sLogBase { unsigned char m_cCurrentRide; inline void InitCurrentRide(const unsigned char cCurrentRide); }; inline void sChangeRideLog::InitCurrentRide(const unsigned char cCurrentRide) { m_cCurrentRide = cCurrentRide; } // ILLEGAL_ITEM·Î±× - ¿¡·¯½Ã sItemDump°¡ ºÙÀ½. struct sIllegalItemLog : public sLogBase { Item::ItemPos m_usePos; sMinItemInfo m_itemInfo; inline void InitIllegalItemLog(const Item::ItemPos usePos, const Item::CItem* lpItem); }; inline void sIllegalItemLog::InitIllegalItemLog(const Item::ItemPos usePos, const Item::CItem* lpItem) { m_usePos = usePos; m_itemInfo.InitMinItemInfo(lpItem); } // ILLEGAL_WARPPOS·Î±× struct sIllegalWarpPosLog : public sLogBase { unsigned short m_usWarpXPos; // ij¸¯ÅÍ WarpÁÂÇ¥X unsigned short m_usWarpYPos; // ij¸¯ÅÍ WarpÁÂÇ¥Y unsigned short m_usWarpZPos; // ij¸¯ÅÍ WarpÁÂÇ¥Z unsigned long m_lDis; inline void InitCharWarpPosLog(const Position& Pos, unsigned long dis); }; inline void sIllegalWarpPosLog::InitCharWarpPosLog(const Position& Pos, unsigned long dis) { m_usWarpXPos = static_cast(Pos.m_fPointX); m_usWarpYPos = static_cast(Pos.m_fPointY); m_usWarpZPos = static_cast(Pos.m_fPointZ); m_lDis = dis; } // ÇÙÀǽɸ޽ÃÁö struct sHockDoubtLog : public sLogBase { unsigned short m_wHackID; unsigned short m_wKindItem; unsigned short m_wItemSize; inline void InitHackDoubt(unsigned short wHackID, unsigned short wKindItem, unsigned short wItemSize); }; inline void sHockDoubtLog::InitHackDoubt(unsigned short wHackID, unsigned short wKindItem, unsigned short wItemSize) { m_wKindItem = wKindItem; m_wHackID = wHackID; m_wItemSize = wItemSize; } // µ· À̵¿ ·Î±× struct sTakeGoldLog : public sLogBase { unsigned long m_SrcGold; unsigned long m_DstGold; unsigned char m_cSrcPos; unsigned char m_cDstPos; inline void InitTakeGold(unsigned long SrcGold, unsigned long DstGold, unsigned char cSrcPos, unsigned char cDstPos); }; inline void sTakeGoldLog::InitTakeGold(unsigned long SrcGold, unsigned long DstGold, unsigned char cSrcPos, unsigned char cDstPos) { m_SrcGold = SrcGold; m_DstGold = DstGold; m_cSrcPos = cSrcPos; m_cDstPos = cDstPos; } // µ· À̵¿ ·Î±× v2 : made by sparrowhawk (2004-03-24) // ÀÌÀü µ· À̵¿ ·Î±×¿¡, ¾ó¸¶°¡ À̵¿µÇ¾ú´ÂÁö ³»¿ëÀÌ ¾ø¾î¼­ Ãß°¡ÇÔ. struct sTakeGoldLogV2 : public sLogBase { enum Purpose { MOVE_GOLD = 0, // µ· À̵¿ (â°í, Àκ¥, µîµî»çÀÌÀÇ À̵¿) STORE_USE = 1, // â°í ÀÌ¿ë·á BUY_STORE_TAB = 2, // â°í ÅÇ ±¸¸Å USE_CASHBAG = 3, // ij½¬¹é ¾ÆÀÌÅÛ »ç¿ë QUEST_AWARD = 4, // Äù½ºÆ® º¸»ó QUEST_DEDUCT = 5, // Äù½ºÆ®¿¡¼­ µ· Á¦°Å. ADMIN_GIVEGOLD = 6, // ¿î¿µÀÚ°¡ ÀÓÀÇ·Î Áö¿ø. BATTLE_DEPOSIT = 7, // ¹èƲ±×¶ó¿îµå¿¡¼­ â°í·Î ÀÔ±Ý STATE_REDISTRIBUTE = 8, // ´É·ÂÄ¡ ÀçºÐ¹è. STARTERKIT_AWARD = 9 // ±æµå ¿ä»õ ½ºÅ¸ÅÍŶ´ë½Å µ·À¸·Î º¸»ó }; unsigned long m_SrcGold; unsigned long m_DstGold; unsigned long m_MoveGold; unsigned char m_cSrcPos; unsigned char m_cDstPos; unsigned char m_cPurpose; }; // ³ëÁ¡»ó ¿­°í ´Ý±â ·Î±× struct sStallOpenCloseLog : public sLogBase { enum { MAX_STALL_NAME = 32 }; enum StallMode { STALL_OPEN = 0, STALL_CLOSE = 1 }; unsigned char m_cMode; char m_szStallName[MAX_STALL_NAME]; inline void InitStallOpenCloseLog(StallMode eStallMode, const char* szStallName); }; inline void sStallOpenCloseLog::InitStallOpenCloseLog(sStallOpenCloseLog::StallMode eStallMode, const char* szStallName) { m_cMode = eStallMode; if(NULL == szStallName) { memset(m_szStallName, 0, MAX_STALL_NAME); } else { strncpy(m_szStallName, szStallName, MAX_STALL_NAME); } } // ³ëÁ¡»ó ÀÔÀå ÅðÀå ·Î±× struct sStallEnterLeaveLog : public sLogBase { enum StallMode { STALL_ENTER = 0, STALL_LEAVE = 1 }; unsigned long m_dwCustomerCID; unsigned char m_cMode; inline void InitStallEnterLeaveLog(unsigned long dwCustomerCID, StallMode eStallMode) { m_dwCustomerCID = dwCustomerCID; m_cMode = eStallMode; } }; // ¾ÆÀÌÅÛ ¿Ã¸®°í ³»¸®±â ·Î±× struct sStallRegisterRemoveItemLog : public sLogBase { enum StallMode { STALL_UNKNOWN = 0, STALL_REGISTERITEM = 1, STALL_REMOVEITEM = 2, STALL_CHANGEPRICE = 3, STALL_CAMP_REGISTER = 4, STALL_CAMP_REMOVE = 5 }; TakeType m_takeType; sMinItemInfo m_itemInfo; unsigned long m_dwStallPrice; unsigned char m_cMode; inline void InitStallRegisterRemoveItemLog(StallMode eStallMode, const Item::CItem* lpItem, const TakeType takeType); }; inline void sStallRegisterRemoveItemLog::InitStallRegisterRemoveItemLog( sStallRegisterRemoveItemLog::StallMode eStallMode, const Item::CItem* lpItem, const TakeType takeType) { m_itemInfo.InitMinItemInfo(lpItem); m_takeType = takeType; m_dwStallPrice = NULL != lpItem ? lpItem->GetStallPrice() : 0; m_cMode = eStallMode; } struct sItemAttachOption : public sLogBase { // ±¸Á¶Ã¼ µÚ¿¡ ÀÌÀü ¾ÆÀÌÅÛ / Á¦¹° ¾ÆÀÌÅÛ / »õ ¾ÆÀÌÅÛÀÌ ºÙ¾î ¿Â´Ù unsigned long m_dwOldInvenGold; unsigned long m_dwNewInvenGold; unsigned char m_cSelectedOptionIndex; unsigned char m_cOldItemLen; unsigned char m_cUseItemLen; unsigned char m_cNewItemLen; }; struct sItemCompensation : public sLogBase { // ±¸Á¶Ã¼ µÚ¿¡ ÀÌÀü ¾ÆÀÌÅÛ / º¸»ó ¹ÞÀº ¾ÆÀÌÅÛÀÌ ºÙ¾î ¿Â´Ù. unsigned long m_dwOldInvenGold; unsigned long m_dwNewInvenGold; unsigned char m_cOldItemLen; unsigned char m_cNewItemLen; }; // -------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------- // ij¸¯ÅÍ ·¹º§¾÷ ·Î±× struct sCharLevelUpLog : public sLogBase { unsigned char m_cLevel; // ·¹º§ unsigned short m_usIP; // ÇöÀç IP inline void InitCharLevelUpLog(const unsigned short usIP, const unsigned char cLevel); }; inline void sCharLevelUpLog::InitCharLevelUpLog(const unsigned short usIP, const unsigned char cLevel) { m_usIP = usIP; m_cLevel = cLevel; } // ij¸¯ÅÍ À§Ä¡ ¹ÙÀÎµå ·Î±× - ÇöÀç À§Ä¡°¡ ±×´ë·Î ¹ÙÀÎµå µÊ. struct sCharBindPosLog : public sLogBase { unsigned long m_dwNPCID; inline void InitCharBindPosLog(const unsigned long dwNPCID) { m_dwNPCID = dwNPCID; } }; // ij¸¯ÅÍ »ç¸Á ·Î±× struct sCharDeadLog : public sLogBase { DWORD64 m_nPrevExp; // »ç¸Á Àü Exp DWORD64 m_nNextExp; // »ç¸Á ÈÄ Exp unsigned long m_dwAttackerCID; // ¶§¸° ³ð CID unsigned char m_cLevel; // ÇöÀç ·¹º§ inline void InitCharDeadLog(const DWORD64 nPrevExp, const DWORD64 nNextExp, const unsigned long dwAttackerCID, const unsigned char cLevel); }; inline void sCharDeadLog::InitCharDeadLog(const DWORD64 nPrevExp, const DWORD64 nNextExp, const unsigned long dwAttackerCID, const unsigned char cLevel) { m_nPrevExp = nPrevExp; m_nNextExp = nNextExp; m_dwAttackerCID = dwAttackerCID; m_cLevel = cLevel; } // ij¸¯ÅÍ ¸®½ºÆù ·Î±× struct sCharRespawnLog : public sLogBase { DWORD64 m_nPrevExp; // ¸®½ºÆù Àü Exp DWORD64 m_nNextExp; // ¸®½ºÆù ÈÄ Exp inline void InitCharRespawnLog(const DWORD64 nPrevExp, const DWORD64 nNextExp); }; inline void sCharRespawnLog::InitCharRespawnLog(const DWORD64 nPrevExp, const DWORD64 nNextExp) { m_nPrevExp = nPrevExp; m_nNextExp = nNextExp; } // ÀüÅõ¸í¼ºÄ¡ ȹµæ ·Î±× struct sFameGetBattleLog : public sLogBase { unsigned long m_dwPrevFame; // ȹµæ Àü ¸í¼º unsigned long m_dwNextFame; // ȹµæ ÈÄ ¸í¼º unsigned long m_dwPrevMileage; // ȹµæ Àü °øÇå¸Å´Þ unsigned long m_dwNextMileage; // ȹµæ ÈÄ °øÇå¸Å´Þ unsigned long m_dwEnemyCID; // Àû´ë ij¸¯ÅÍ CID unsigned long m_dwOurPartyUID; // ¾Æ±º ÆÄƼ UID inline void InitFameGetBattleLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwPrevMileage, const unsigned long dwNextMileage, const unsigned long dwEnemyCID, const unsigned long dwOurPartyUID); }; inline void sFameGetBattleLog::InitFameGetBattleLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwPrevMileage, const unsigned long dwNextMileage, const unsigned long dwEnemyCID, const unsigned long dwOurPartyUID) { m_dwPrevFame = dwPrevFame; m_dwNextFame = dwNextFame; m_dwPrevMileage = dwPrevMileage; m_dwNextMileage = dwNextMileage; m_dwEnemyCID = dwEnemyCID; m_dwOurPartyUID = dwOurPartyUID; } // ÀüÅõ¸í¼ºÄ¡ ÀÒÀº ·Î±× struct sFameLoseBattleLog : public sLogBase { unsigned long m_dwPrevFame; // ÀÒ±â Àü ¸í¼º unsigned long m_dwNextFame; // ÀÒÀº ÈÄ ¸í¼º unsigned long m_dwEnemyCID; // Àû´ë ij¸¯ÅÍ CID unsigned long m_dwOurPartyUID; // ¾Æ±º ÆÄƼ UID unsigned char m_cLevel; // ÇöÀç ·¹º§ inline void InitFameLoseBattleLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwEnemyCID, const unsigned long dwOurPartyUID); }; inline void sFameLoseBattleLog::InitFameLoseBattleLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwEnemyCID, const unsigned long dwOurPartyUID) { m_dwPrevFame = dwPrevFame; m_dwNextFame = dwNextFame; m_dwEnemyCID = dwEnemyCID; m_dwOurPartyUID = dwOurPartyUID; } // ¿ä»õ¸í¼ºÄ¡ ȹµæ ·Î±× struct sFameGetCampLog : public sLogBase { unsigned long m_dwPrevFame; // ȹµæ Àü ¸í¼º unsigned long m_dwNextFame; // ȹµæ ÈÄ ¸í¼º unsigned long m_dwEnemyGID; // Àû´ë ±æµå GID inline void InitFameGetCampLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwEnemyGID); }; inline void sFameGetCampLog::InitFameGetCampLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwEnemyGID) { m_dwPrevFame = dwPrevFame; m_dwNextFame = dwNextFame; m_dwEnemyGID = dwEnemyGID; } // ¿ä»õ¸í¼ºÄ¡ ÀÒÀº ·Î±× struct sFameLoseCampLog : public sLogBase { unsigned long m_dwPrevFame; // ÀÒ±â Àü ¸í¼º unsigned long m_dwNextFame; // ÀÒÀº ÈÄ ¸í¼º unsigned long m_dwEnemyGID; // Àû´ë ±æµå GID inline void InitFameLoseCampLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwEnemyGID); }; inline void sFameLoseCampLog::InitFameLoseCampLog(const unsigned long dwPrevFame, const unsigned long dwNextFame, const unsigned long dwEnemyGID) { m_dwPrevFame = dwPrevFame; m_dwNextFame = dwNextFame; m_dwEnemyGID = dwEnemyGID; } // Äù½ºÆ® ¼öÇàÈÄ º¸»óȹµæ ·Î±× struct sQuestGetRewardLog : public sLogBase { DWORD64 m_dwItemUID; // º¸»ó¹ÞÀº ¾ÆÀÌÅÛUID unsigned long m_dwExp; // º¸»ó¹ÞÀº °æÇèÄ¡ unsigned long m_dwGold; // º¸»ó¹ÞÀº °ñµå unsigned long m_dwFame; // º¸»ó¹ÞÀº ¸í¼º unsigned long m_dwMileage; // º¸»ó¹ÞÀº °øÇå¸Þ´Þ unsigned short m_wQuestID; // º¸»ó¹ÞÀº Äù½ºÆ®ID inline void InitQuestGetRewardLog(const unsigned short wQuestID, const DWORD64 dwItemUID, const unsigned long dwExp, const unsigned long dwGold, const unsigned long dwFame, const unsigned long dwMileage); }; inline void sQuestGetRewardLog::InitQuestGetRewardLog(const unsigned short wQuestID, const DWORD64 dwItemUID, const unsigned long dwExp, const unsigned long dwGold, const unsigned long dwFame, const unsigned long dwMileage) { m_dwItemUID = dwItemUID; m_dwExp = dwExp; m_dwGold = dwGold; m_dwFame = dwFame; m_dwMileage = dwMileage; m_wQuestID = wQuestID; } // -------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------- // ¾ÆÁ÷ ³ÖÁö ¾ÊÀº °Íµé. ÆÄƼ °¡ÀÔ, Å»Åð, ¸ó½ºÅÍ Á×À½, °æÇèÄ¡ ȹµæ, °ø°Ý. // ¸ó½ºÅÍ Á×À½ ·Î±× / µÚ¿¡ itemÁ¤º¸°¡ DWORD·Î m_cItemNum°³ ¸¸Å­ µû¶ó¿Â´Ù. struct sMonsterDeadLog : public sLogBase { unsigned long m_dwMonsterCID; // Á×´Â ¸ó½ºÅÍ CID unsigned char m_cMonsterLevel; // ¸ó½ºÅÍ ·¹º§ unsigned char m_cDropItemNum; // ¾ÆÀÌÅÛ °³¼ö }; // -------------------------------------------------------------------------------------------- // ±æµå °ü·Ã ·Î±×µé. struct sGuildLog : public sLogBase { enum { MAX_GUILD_NAME_LEN = 11, MAX_NAME_LEN = 16 }; enum { REQUEST = 0, RESULT = 1 }; unsigned long m_dwGID; // ±æµå ID unsigned long m_dwSrcCID; // ÇàÀ§ÀÚ ID unsigned long m_dwDstCID; // ´ë»óÀÚ ID unsigned char m_cType; // ·Î±× ŸÀÔ : ¿äû/°á°ú(¼º°ø/½ÇÆÐ) unsigned char m_cCmd; // ±æµå ·Î±× Ä¿¸Çµå(±æµå ÀÔÃâ±Ý½Ã »ç¿ë.) unsigned char m_cData; // Ãß°¡ µ¥ÀÌÅÍ unsigned short m_usExtraDataSize; // Ãß°¡ µ¥ÀÌÅÍ ±æÀÌ }; // Á¸ À̵¿ °ü·Ã ·Î±× struct sMoveZoneLog : public sLogBase { unsigned char m_cDstZone; unsigned char m_cDstChannel; }; }; #pragma pack() #endif