Files
Client/Server/ToolProject/GameLogAnalyzer/PrintSimpleLog.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

1551 lines
58 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "stdafx.h"
#include <Item/ItemFactory.h>
#include <Item/ItemStructure.h>
#include <Item/ItemMgr.h>
#include <Utility/Math/Math.h>
#include <Log/LogCommands.h>
#include <Community/Guild/GuildConstants.h>
#include "GlobalFunctions.h"
#include "PrintLog.h"
using namespace GAMELOG;
CTypeName g_HumanEquipmentPosTypeName[Item::EquipmentPos::MAX_EQUPMENT_POS];
CTypeName g_AkhanEquipmentPosTypeName[Item::EquipmentPos::MAX_EQUPMENT_POS];
CTypeName g_PositionName[TakeType::TS_MAXTYPE];
bool g_bInitializePositionData = GAMELOG::SimpleInfo::InitPositionData();
inline const char* GetItemName(unsigned short usProtoTypeID)
{
const Item::ItemInfo* lpItemInfo = Item::CItemMgr::GetInstance().GetItemInfo(usProtoTypeID);
return (0 != lpItemInfo)
? lpItemInfo->m_SpriteData.m_szName : GetMyINIString("STRING_FOR_LOCALIZE", "UNKNOWN_ITEM");
}
bool IsEquip(unsigned short usProtoTypeID)
{
const Item::ItemInfo* lpItemInfo = Item::CItemMgr::GetInstance().GetItemInfo(usProtoTypeID);
return (0 != lpItemInfo) ? 0 != (lpItemInfo->m_DetailData.m_dwFlags & Item::DetailData::EQUIP) : false;
}
const char* GAMELOG::GuildLogType(const char cType)
{
const char* szResult = GetMyINIString("STRING_FOR_LOCALIZE", "UNKNOWN_TYPE");
switch(cType)
{
case GAMELOG::sGuildLog::REQUEST:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "REQUEST");
break;
case GAMELOG::sGuildLog::RESULT:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "RESULT");
break;
}
return szResult;
}
const char* GAMELOG::GuildTitle(unsigned long dwTitle)
{
const char* szResult = GetMyINIString("STRING_FOR_LOCALIZE", "UNKNOWN_MEMBER_LV");
switch(dwTitle)
{
case Guild::MASTER:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "GUILDRIGHTS_GUILD_MASTER");
break;
case Guild::MIDDLE_ADMIN:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "GUILDRIGHTS_MIDDLE_ADMIN");
break;
case Guild::COMMON:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "GUILDRIGHTS_COMMON");
break;
case Guild::LEAVE_WAIT:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "GUILDRIGHTS_LEAVE_WAIT");
break;
case Guild::JOIN_WAIT:
szResult = GetMyINIString("STRING_FOR_LOCALIZE", "GUILDRIGHTS_JOIN_WAIT");
break;
}
return szResult;
}
bool SimpleInfo::InitPositionData()
{
using namespace Item;
// <20>޸<EFBFBD>
g_HumanEquipmentPosTypeName[EquipmentPos::HELM] = CTypeName(EquipmentPos::HELM, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "HELM"));
g_HumanEquipmentPosTypeName[EquipmentPos::SHIRT] = CTypeName(EquipmentPos::SHIRT, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "SHIRT"));
g_HumanEquipmentPosTypeName[EquipmentPos::TUNIC] = CTypeName(EquipmentPos::TUNIC, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TUNIC"));
g_HumanEquipmentPosTypeName[EquipmentPos::ARMOUR] = CTypeName(EquipmentPos::ARMOUR, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "ARMOUR"));
g_HumanEquipmentPosTypeName[EquipmentPos::GLOVE] = CTypeName(EquipmentPos::GLOVE, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "GLOVE"));
g_HumanEquipmentPosTypeName[EquipmentPos::BOOTS] = CTypeName(EquipmentPos::BOOTS, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "BOOTS"));
g_HumanEquipmentPosTypeName[EquipmentPos::NECKLACE] = CTypeName(EquipmentPos::NECKLACE, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "NECKLACE"));
g_HumanEquipmentPosTypeName[EquipmentPos::RINGR] = CTypeName(EquipmentPos::RINGR, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "RINGR"));
g_HumanEquipmentPosTypeName[EquipmentPos::RINGL] = CTypeName(EquipmentPos::RINGL, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "RINGL"));
g_HumanEquipmentPosTypeName[EquipmentPos::SHIELD_HAND1] = CTypeName(EquipmentPos::SHIELD_HAND1, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "SHIELD_HAND1"));
g_HumanEquipmentPosTypeName[EquipmentPos::SHIELD_HAND2] = CTypeName(EquipmentPos::SHIELD_HAND2, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "SHIELD_HAND2"));
g_HumanEquipmentPosTypeName[EquipmentPos::WEAPON_HAND1] = CTypeName(EquipmentPos::WEAPON_HAND1, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "WEAPON_HAND1"));
g_HumanEquipmentPosTypeName[EquipmentPos::WEAPON_HAND2] = CTypeName(EquipmentPos::WEAPON_HAND2, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "WEAPON_HAND2"));
g_HumanEquipmentPosTypeName[EquipmentPos::AVATA] = CTypeName(EquipmentPos::AVATA, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "AVATA"));
// g_HumanEquipmentPosTypeName[EquipmentPos::RIDE] = CTypeName(EquipmentPos::RIDE, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "RIDE"));
// <20><>ĭ
g_AkhanEquipmentPosTypeName[EquipmentPos::HEAD] = CTypeName(EquipmentPos::HEAD, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "HEAD"));
g_AkhanEquipmentPosTypeName[EquipmentPos::BODY] = CTypeName(EquipmentPos::BODY, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "BODY"));
g_AkhanEquipmentPosTypeName[EquipmentPos::PROTECT_ARM] = CTypeName(EquipmentPos::PROTECT_ARM, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "PROTECT_ARM"));
g_AkhanEquipmentPosTypeName[EquipmentPos::PELVIS] = CTypeName(EquipmentPos::PELVIS, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "PELVIS"));
//g_AkhanEquipmentPosTypeName[EquipmentPos::ACCESSORY1] = CTypeName(EquipmentPos::ACCESSORY1, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "ACCESSORY1"));
//g_AkhanEquipmentPosTypeName[EquipmentPos::ACCESSORY2] = CTypeName(EquipmentPos::ACCESSORY2, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "ACCESSORY2"));
//g_AkhanEquipmentPosTypeName[EquipmentPos::ACCESSORY3] = CTypeName(EquipmentPos::ACCESSORY3, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "ACCESSORY3"));
g_AkhanEquipmentPosTypeName[EquipmentPos::SKILL_ARM] = CTypeName(EquipmentPos::SKILL_ARM, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "SKILL_ARM"));
g_PositionName[TakeType::TS_NONE] = CTypeName(TakeType::TS_NONE, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_NONE"));
g_PositionName[TakeType::TS_EQUIP] = CTypeName(TakeType::TS_EQUIP, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_EQUIP"));
g_PositionName[TakeType::TS_INVEN] = CTypeName(TakeType::TS_INVEN, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_INVEN"));
g_PositionName[TakeType::TS_QSLOT] = CTypeName(TakeType::TS_QSLOT, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_QSLOT"));
g_PositionName[TakeType::TS_SSLOT] = CTypeName(TakeType::TS_SSLOT, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_SSLOT"));
g_PositionName[TakeType::TS_TEMP] = CTypeName(TakeType::TS_TEMP, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_TEMP"));
g_PositionName[TakeType::TS_TEMPINVEN] = CTypeName(TakeType::TS_TEMPINVEN, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_TEMPINVEN"));
g_PositionName[TakeType::TS_EXTRA] = CTypeName(TakeType::TS_EXTRA, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_EXTRA"));
g_PositionName[TakeType::TS_EXCHANGE] = CTypeName(TakeType::TS_EXCHANGE, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_EXCHANGE"));
g_PositionName[TakeType::TS_DEPOSIT] = CTypeName(TakeType::TS_DEPOSIT, (char*)GetMyINIString("STRING_FOR_LOCALIZE", "TS_DEPOSIT"));
return true;
}
void SimpleInfo::BaseLog(CString& Result, const sLogBase* lpLogBase, const DWORD dwLogType)
{
if(dwLogType & GAMELOG::UID)
{
Result.AppendFormat("[UID:%10u]", lpLogBase->m_dwUID);
}
if(dwLogType & GAMELOG::CID)
{
Result.AppendFormat("[CID:%10u]", lpLogBase->m_dwCID);
}
if(dwLogType & GAMELOG::TIME)
{
struct tm* pTm = localtime(&lpLogBase->m_time);
Result.AppendFormat("[%4d/%02d/%02d %02d:%02d:%02d]",
pTm->tm_year + 1900, pTm->tm_mon + 1, pTm->tm_mday,
pTm->tm_hour, pTm->tm_min, pTm->tm_sec);
}
if(dwLogType & GAMELOG::POS)
{
Result.AppendFormat("[PosX:%5d PosY:%5d PosZ:%5d]",
lpLogBase->m_usXPos, lpLogBase->m_usYPos, lpLogBase->m_usZPos);
}
Result.AppendFormat("[Err:%u]", lpLogBase->m_cErr);
}
int SimpleInfo::PositionToString(char* lpBuffer_Out,
const int nBufferSize,
const Item::ItemPos itemPos)
{
int nLength = 0;
const char* szString = 0;
bool bArrayContainer = false;
bool bExtraPosition = false;
switch(itemPos.m_cPos)
{
case TakeType::TS_NONE:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_052");
break;
case TakeType::TS_QSLOT:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_053");
break;
case TakeType::TS_SSLOT:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_054");
break;
case TakeType::TS_TEMP:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_055");
break;
case TakeType::TS_TEMPINVEN:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_066");
break;
case TakeType::TS_EXTRA:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_056");
bExtraPosition = true;
break;
case TakeType::TS_INVEN:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_057");
bArrayContainer = true;
break;
case TakeType::TS_EXCHANGE:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_058");
bArrayContainer = true;
break;
case TakeType::TS_DEPOSIT:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_059");
bArrayContainer = true;
break;
case TakeType::TS_STALL:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_060");
bArrayContainer = true;
break;
case TakeType::TS_EQUIP:
if(itemPos.m_cIndex < Item::EquipmentPos::MAX_EQUPMENT_POS)
{
nLength = _snprintf(lpBuffer_Out, nBufferSize - 1, GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_061"),
g_HumanEquipmentPosTypeName[itemPos.m_cIndex].GetTypeName());
}
else
{
nLength = _snprintf(lpBuffer_Out, nBufferSize - 1, GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_062"), itemPos.m_cIndex);
}
break;
default:
szString = GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_051");
break;
};
if(szString)
{
if(bArrayContainer)
{
nLength = _snprintf(lpBuffer_Out, nBufferSize - 1, szString,
itemPos.GetXIndex(), itemPos.GetYIndex(), itemPos.GetZIndex());
}
else if(bExtraPosition)
{
nLength = _snprintf(lpBuffer_Out, nBufferSize - 1, szString,
GetExtraPosString(itemPos.m_cIndex));
}
else
{
nLength = _snprintf(lpBuffer_Out, nBufferSize - 1, szString, itemPos.m_cIndex);
}
};
lpBuffer_Out[nBufferSize - 1] = 0;
return nLength;
}
const char* SimpleInfo::GetPositionName(unsigned char cPos)
{
const char* szPositionString = GetMyINIString("STRING_FOR_LOCALIZE", "UNKNOWN_POS");
if(cPos < TakeType::TS_MAXTYPE)
{
const char* szResult = g_PositionName[cPos].GetTypeName();
if(0 != szResult)
{
szPositionString = szResult;
}
}
return szPositionString;
}
const char* SimpleInfo::GetExtraPosString(unsigned char cIndex)
{
const char* szKey = 0;
switch(cIndex)
{
case Item::ExtraSpacePos::UPGRADE_EQUIPMENT_POS: szKey = "UPGRADE_EQUIPMENT_POS"; break;
case Item::ExtraSpacePos::UPGRADE_MATERIAL_POS: szKey = "UPGRADE_MATERIAL_POS"; break;
case Item::ExtraSpacePos::HOLDITEM_POS: szKey = "HOLDITEM_POS"; break;
case Item::ExtraSpacePos::KIT_MATERIAL_POS: szKey = "KIT_MATERIAL_POS"; break;
case Item::ExtraSpacePos::CAMP_MATERIAL_POS: szKey = "CAMP_MATERIAL_POS"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS1: szKey = "EMBLEM_JEWEL_POS1"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS2: szKey = "EMBLEM_JEWEL_POS2"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS3: szKey = "EMBLEM_JEWEL_POS3"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS4: szKey = "EMBLEM_JEWEL_POS4"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS5: szKey = "EMBLEM_JEWEL_POS5"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS6: szKey = "EMBLEM_JEWEL_POS6"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS7: szKey = "EMBLEM_JEWEL_POS7"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS8: szKey = "EMBLEM_JEWEL_POS8"; break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS9: szKey = "EMBLEM_JEWEL_POS9"; break;
case Item::ExtraSpacePos::GRAFT_ORIGINAL_POS: szKey = "GRAFT_ORIGINAL_POS"; break;
case Item::ExtraSpacePos::GRAFT_SACRIFICE_POS: szKey = "GRAFT_SACRIFICE_POS"; break;
case Item::ExtraSpacePos::GRAFT_RESULT_POS: szKey = "GRAFT_RESULT_POS"; break;
case Item::ExtraSpacePos::COMPENSATION_POS: szKey = "COMPENSATION_POS"; break;
default: szKey = "UNKNOWN_POS"; break;
}
return GetMyINIString("STRING_FOR_LOCALIZE", szKey);
}
// ---------------------------------------------------------------------------------------------
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::CharLogin(CString& Result, const sLogBase* lpLogBase)
{
const GAMELOG::sCharLoginOut* pCharLoginOut =
static_cast<const GAMELOG::sCharLoginOut*>(lpLogBase);
unsigned short usUpdateInfo[DBUpdateData::MAX_UPDATE_DB];
std::copy(&pCharLoginOut->m_usDataSize[0],
&pCharLoginOut->m_usDataSize[DBUpdateData::MAX_UPDATE_DB],
usUpdateInfo);
size_t nSize = std::accumulate(&usUpdateInfo[0], &usUpdateInfo[DBUpdateData::MAX_UPDATE_DB], 0);
char szCharacterInfo[DBUpdateData::MAX_DBUPDATE_SIZE];
memcpy(szCharacterInfo, reinterpret_cast<const char*>(&pCharLoginOut[1]), nSize);
CHAR_INFOST* pCharInfoSt = reinterpret_cast<CHAR_INFOST*>(szCharacterInfo
+ std::accumulate(&usUpdateInfo[0], &usUpdateInfo[DBUpdateData::STATUS_UPDATE], 0));
// pCharInfoSt->Race
SOCKADDR_IN sockAddr;
sockAddr.sin_addr.S_un.S_addr = pCharLoginOut->m_nIP;
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_004"),
pCharInfoSt->Race, inet_ntoa(sockAddr.sin_addr), ntohs(pCharLoginOut->m_usPort));
}
void SimpleInfo::CharLogout(CString& Result, const sLogBase* lpLogBase)
{
const GAMELOG::sCharLoginOut* pCharLoginOut =
static_cast<const GAMELOG::sCharLoginOut*>(lpLogBase);
SOCKADDR_IN sockAddr;
sockAddr.sin_addr.S_un.S_addr = pCharLoginOut->m_nIP;
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_005"),
inet_ntoa(sockAddr.sin_addr), ntohs(pCharLoginOut->m_usPort));
}
void SimpleInfo::CharCreate(CString& Result, const sLogBase* lpLogBase)
{
const GAMELOG::sCharCreateDelete* lpCharCreateDelete =
static_cast<const GAMELOG::sCharCreateDelete*>(lpLogBase);
SOCKADDR_IN sockAddr;
sockAddr.sin_addr.S_un.S_addr = lpCharCreateDelete->m_nIP;
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_006"),
inet_ntoa(sockAddr.sin_addr), ntohs(lpCharCreateDelete->m_usPort));
}
void SimpleInfo::CharDelete(CString& Result, const sLogBase* lpLogBase)
{
const GAMELOG::sCharCreateDelete* lpCharCreateDelete =
static_cast<const GAMELOG::sCharCreateDelete*>(lpLogBase);
SOCKADDR_IN sockAddr;
sockAddr.sin_addr.S_un.S_addr = lpCharCreateDelete->m_nIP;
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_007"),
inet_ntoa(sockAddr.sin_addr), ntohs(lpCharCreateDelete->m_usPort));
}
void SimpleInfo::CharDBUpdate(CString& Result, const sLogBase* lpLogBase)
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_008"));
}
void SimpleInfo::CharLevelUp(CString& Result, const sLogBase* lpLogBase)
{
const sCharLevelUpLog* pCharLevelUpLog = static_cast<const sCharLevelUpLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_009"),
pCharLevelUpLog->m_cLevel, pCharLevelUpLog->m_usIP);
}
void SimpleInfo::CharBindPos(CString& Result, const sLogBase* lpLogBase)
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_010"),
lpLogBase->m_usXPos, lpLogBase->m_usYPos, lpLogBase->m_usZPos);
}
void SimpleInfo::CharDead(CString& Result, const sLogBase* lpLogBase)
{
const sCharDeadLog* pCharDeadLog =
static_cast<const sCharDeadLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_011"),
pCharDeadLog->m_cLevel, pCharDeadLog->m_dwAttackerCID,
pCharDeadLog->m_nPrevExp,
pCharDeadLog->m_nNextExp,
pCharDeadLog->m_nPrevExp - pCharDeadLog->m_nNextExp);
}
void SimpleInfo::CharRespawn(CString& Result, const sLogBase* lpLogBase)
{
const sCharRespawnLog* pCharRespawnLog =
static_cast<const sCharRespawnLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_012"),
lpLogBase->m_usXPos, lpLogBase->m_usYPos, lpLogBase->m_usZPos,
pCharRespawnLog->m_nPrevExp, pCharRespawnLog->m_nNextExp,
pCharRespawnLog->m_nPrevExp - pCharRespawnLog->m_nNextExp);
}
// ---------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::MoveItem(CString& Result, const sLogBase* lpLogBase)
{
const sMoveItemLog* lpMoveItemLog = static_cast<const sMoveItemLog*>(lpLogBase);
const TakeType& takeType = lpMoveItemLog->m_takeType;
char szSrc[MIN_BUFFER];
char szDst[MIN_BUFFER];
PositionToString(szSrc, MIN_BUFFER, takeType.m_srcPos);
PositionToString(szDst, MIN_BUFFER, takeType.m_dstPos);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_013"),
lpMoveItemLog->m_itemInfo.m_dwItemUID,
lpMoveItemLog->m_itemInfo.m_usProtoTypeID,
GetItemName(lpMoveItemLog->m_itemInfo.m_usProtoTypeID),
szSrc, szDst, lpMoveItemLog->m_itemInfo.m_cNowDurability);
}
void SimpleInfo::SwapItem(CString& Result, const sLogBase* lpLogBase)
{
const sSwapItemLog* lpSwapItemLog = static_cast<const sSwapItemLog*>(lpLogBase);
const TakeType& takeSrc = lpSwapItemLog->m_srcTake;
const TakeType& takeDst = lpSwapItemLog->m_dstTake;
char szSrcSrc[MIN_BUFFER], szSrcDst[MIN_BUFFER];
char szDstSrc[MIN_BUFFER], szDstDst[MIN_BUFFER];
PositionToString(szSrcSrc, MIN_BUFFER, takeSrc.m_srcPos);
PositionToString(szSrcDst, MIN_BUFFER, takeSrc.m_dstPos);
PositionToString(szDstSrc, MIN_BUFFER, takeDst.m_srcPos);
PositionToString(szDstDst, MIN_BUFFER, takeDst.m_dstPos);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_014"),
lpSwapItemLog->m_srcItemInfo.m_dwItemUID,
lpSwapItemLog->m_srcItemInfo.m_usProtoTypeID,
GetItemName(lpSwapItemLog->m_srcItemInfo.m_usProtoTypeID),
szSrcSrc, szSrcDst, lpSwapItemLog->m_srcItemInfo.m_cNowDurability,
lpSwapItemLog->m_dstItemInfo.m_dwItemUID,
lpSwapItemLog->m_dstItemInfo.m_usProtoTypeID,
GetItemName(lpSwapItemLog->m_dstItemInfo.m_usProtoTypeID),
szDstSrc, szDstDst, lpSwapItemLog->m_dstItemInfo.m_cNowDurability);
}
void SimpleInfo::UseItem(CString& Result, const sLogBase* lpLogBase)
{
const sUseItemLog* lpUseItemLog = static_cast<const sUseItemLog*>(lpLogBase);
char szUseIndex[MIN_BUFFER];
PositionToString(szUseIndex, MIN_BUFFER, lpUseItemLog->m_usePos);
char szUID[MIN_BUFFER];
Math::Convert::Hex64ToStr(szUID, lpUseItemLog->m_itemInfo.m_dwItemUID);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_015"),
lpUseItemLog->m_itemInfo.m_dwItemUID,
lpUseItemLog->m_itemInfo.m_usProtoTypeID,
GetItemName(lpUseItemLog->m_itemInfo.m_usProtoTypeID),
szUseIndex, lpUseItemLog->m_itemInfo.m_cNowDurability);
}
void SimpleInfo::SplitItem(CString& Result, const sLogBase* lpLogBase)
{
const sSplitItemLog* lpSplitItemLog = static_cast<const sSplitItemLog*>(lpLogBase);
const TakeType& takeType = lpSplitItemLog->m_splitTake;
char szSplitSrc[MIN_BUFFER], szSplitDst[MIN_BUFFER];
PositionToString(szSplitSrc, MIN_BUFFER, takeType.m_srcPos);
PositionToString(szSplitDst, MIN_BUFFER, takeType.m_dstPos);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_016"),
lpSplitItemLog->m_prevItem.m_dwItemUID,
lpSplitItemLog->m_prevItem.m_usProtoTypeID,
GetItemName(lpSplitItemLog->m_prevItem.m_usProtoTypeID),
szSplitSrc, szSplitDst, takeType.m_cNum);
}
void SimpleInfo::PickupItem(CString& Result, const sLogBase* lpLogBase)
{
const sPickupItemLog* lpPickupItemLog = static_cast<const sPickupItemLog*>(lpLogBase);
char szPickupIndex[MIN_BUFFER];
PositionToString(szPickupIndex, MIN_BUFFER, lpPickupItemLog->m_itemPos);
if(0 != lpPickupItemLog->m_dwGold)
{
Result.Append(" ");
std::string szMoney = GetMoneyString(lpPickupItemLog->m_dwGold);
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_017"), szMoney.c_str());
}
else if(0 == lpLogBase->m_cErr)
{
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)lpPickupItemLog + sizeof(sPickupItemLog), nItemSize);
if(0 != lpItem)
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_018"),
lpItem->GetUID(), lpItem->GetPrototypeID(), GetItemName(lpItem->GetPrototypeID()),
szPickupIndex, lpItem->GetNumOrDurability());
DELETE_ITEM(lpItem)
}
}
else
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_019"), szPickupIndex);
}
}
void SimpleInfo::UseLottery(CString& Result, const sLogBase* lpLogBase)
{
const sUseLotteryLog* lpUseLotteryLog = static_cast<const sUseLotteryLog*>(lpLogBase);
char szUID[MIN_BUFFER];
Math::Convert::Hex64ToStr(szUID, lpUseLotteryLog->m_itemInfo.m_dwItemUID);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_095"),
lpUseLotteryLog->m_itemInfo.m_dwItemUID,
lpUseLotteryLog->m_itemInfo.m_usProtoTypeID,
GetItemName(lpUseLotteryLog->m_itemInfo.m_usProtoTypeID),
lpUseLotteryLog->m_itemInfo.m_cNowDurability);
}
void SimpleInfo::DropItem(CString& Result, const sLogBase* lpLogBase)
{
const sDropItemLog* pDropItemLog = static_cast<const sDropItemLog*>(lpLogBase);
char szDropIndex[MIN_BUFFER];
PositionToString(szDropIndex, MIN_BUFFER, pDropItemLog->m_itemPos);
if(0 != pDropItemLog->m_dwGold)
{
Result.Append(" ");
std::string szMoney = GetMoneyString(pDropItemLog->m_dwGold);
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_020"), szMoney.c_str());
}
else if(0 == pDropItemLog->m_cErr)
{
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pDropItemLog + sizeof(sDropItemLog), nItemSize);
if(0 != lpItem)
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_021"),
lpItem->GetUID(), lpItem->GetPrototypeID(), GetItemName(lpItem->GetPrototypeID()),
szDropIndex, lpItem->GetNumOrDurability());
DELETE_ITEM(lpItem)
}
}
else
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_022"), szDropIndex);
}
}
void SimpleInfo::SellItem(CString& Result, const sLogBase* lpLogBase)
{
const sTradeItemLog* pTradeItemLog = static_cast<const sTradeItemLog*>(lpLogBase);
char szTradeIndex[MIN_BUFFER];
PositionToString(szTradeIndex, MIN_BUFFER, pTradeItemLog->m_itemPos);
if(0 == lpLogBase->m_cErr)
{
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pTradeItemLog + sizeof(sTradeItemLog), nItemSize);
if(0 != lpItem)
{
std::string szMoney = GetMoneyString(pTradeItemLog->m_dwGold);
std::string szSellMoney = GetMoneyString(lpItem->GetSellPrice());
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_023"),
lpItem->GetUID(), lpItem->GetPrototypeID(), GetItemName(lpItem->GetPrototypeID()),
szTradeIndex, pTradeItemLog->m_dwTraderCID,
szMoney.c_str(), szSellMoney.c_str());
DELETE_ITEM(lpItem)
}
}
else
{
std::string szMoney = GetMoneyString(pTradeItemLog->m_dwGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_024"),
szTradeIndex, szMoney.c_str());
}
}
void SimpleInfo::BuyItem(CString& Result, const sLogBase* lpLogBase)
{
const sTradeItemLog* pTradeItemLog = static_cast<const sTradeItemLog*>(lpLogBase);
char szTradeIndex[MIN_BUFFER];
PositionToString(szTradeIndex, MIN_BUFFER, pTradeItemLog->m_itemPos);
if(0 == lpLogBase->m_cErr)
{
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pTradeItemLog + sizeof(sTradeItemLog), nItemSize);
if(0 != lpItem)
{
std::string szMoney = GetMoneyString(pTradeItemLog->m_dwGold);
std::string szBuyMoney = GetMoneyString(lpItem->GetBuyPrice());
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_025"),
lpItem->GetUID(), lpItem->GetPrototypeID(), GetItemName(lpItem->GetPrototypeID()),
szTradeIndex, pTradeItemLog->m_dwTraderCID,
szMoney.c_str(), szBuyMoney.c_str());
DELETE_ITEM(lpItem)
}
}
else
{
std::string szMoney = GetMoneyString(pTradeItemLog->m_dwGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_026"),
szTradeIndex, szMoney.c_str());
}
}
void SimpleInfo::MedalItemBuy(CString& Result, const sLogBase* lpLogBase)
{
const sTradeItemLog* pTradeItemLog = static_cast<const sTradeItemLog*>(lpLogBase);
char szTradeIndex[MIN_BUFFER];
PositionToString(szTradeIndex, MIN_BUFFER, pTradeItemLog->m_itemPos);
if(0 == lpLogBase->m_cErr)
{
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pTradeItemLog + sizeof(sTradeItemLog), nItemSize);
if(0 != lpItem)
{
std::string szMoney = GetMoneyString(pTradeItemLog->m_dwGold);
std::string szBuyMoney = GetMoneyString(lpItem->GetBuyPrice());
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_027"),
lpItem->GetUID(), lpItem->GetPrototypeID(), GetItemName(lpItem->GetPrototypeID()),
pTradeItemLog->m_dwTraderCID, szTradeIndex,
szMoney.c_str(), szBuyMoney.c_str());
DELETE_ITEM(lpItem)
}
}
else
{
std::string szMoney = GetMoneyString(pTradeItemLog->m_dwGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_026"),
szTradeIndex, szMoney.c_str());
}
}
void SimpleInfo::BeforeExchange(CString& Result, const sLogBase* lpLogBase)
{
const sExchangeItemLog* pExchangeItemLog = static_cast<const sExchangeItemLog*>(lpLogBase);
std::string szMoney = GetMoneyString(pExchangeItemLog->m_dwGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_028"),
pExchangeItemLog->m_dwDstCID, szMoney.c_str());
}
void SimpleInfo::AfterExchange(CString& Result, const sLogBase* lpLogBase)
{
const sExchangeItemLog* pExchangeItemLog = static_cast<const sExchangeItemLog*>(lpLogBase);
std::string szMoney = GetMoneyString(pExchangeItemLog->m_dwGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_029"),
pExchangeItemLog->m_dwDstCID, szMoney.c_str());
}
void SimpleInfo::InstallSocketItem(CString& Result, const sLogBase* lpLogBase)
{
const sInstallSocketLog* pInstallSocketLog =
static_cast<const sInstallSocketLog*>(lpLogBase);
char szGemIndex[MIN_BUFFER];
char szEquipIndex[MIN_BUFFER];
PositionToString(szGemIndex, MIN_BUFFER, pInstallSocketLog->m_GemAndEquip.m_srcPos);
PositionToString(szEquipIndex, MIN_BUFFER, pInstallSocketLog->m_GemAndEquip.m_dstPos);
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpGem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pInstallSocketLog + sizeof(sInstallSocketLog), nItemSize);
if(0 != lpGem)
{
size_t nGemSize = reinterpret_cast<const Item::ItemData*>(
(const char*)pInstallSocketLog + sizeof(sInstallSocketLog))->m_cItemSize;
nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpEquip = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pInstallSocketLog + sizeof(sInstallSocketLog) + nGemSize, nItemSize);
if(0 != lpEquip)
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_030"),
lpGem->GetUID(), lpGem->GetPrototypeID(), GetItemName(lpGem->GetPrototypeID()), szGemIndex,
lpEquip->GetUID(), lpEquip->GetPrototypeID(), GetItemName(lpEquip->GetPrototypeID()), szEquipIndex);
DELETE_ITEM(lpEquip);
}
DELETE_ITEM(lpGem);
}
}
void SimpleInfo::RepairItem(CString& Result, const sLogBase* lpLogBase)
{
const sRepairItemLog* lpRepairItemLog = static_cast<const sRepairItemLog*>(lpLogBase);
std::string szMoney = GetMoneyString(lpRepairItemLog->m_dwUsed);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_031"),
lpRepairItemLog->m_RepairedItem.m_dwItemUID,
lpRepairItemLog->m_RepairedItem.m_usProtoTypeID,
GetItemName(lpRepairItemLog->m_RepairedItem.m_usProtoTypeID),
lpRepairItemLog->m_cPreRepairDurability,
lpRepairItemLog->m_RepairedItem.m_cNowDurability,
szMoney.c_str());
}
void SimpleInfo::ChangeWeapon(CString& Result, const sLogBase* lpLogBase)
{
const sChangeWeaponLog* lpChangeWeaponLog = static_cast<const sChangeWeaponLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_032"), lpChangeWeaponLog->m_cCurrentHand);
}
void SimpleInfo::ChangeRide(CString& Result, const sLogBase* lpLogBase)
{
const sChangeRideLog* lpChangeRideLog = static_cast<const sChangeRideLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_081"), lpChangeRideLog->m_cCurrentRide);
}
void SimpleInfo::IllegalItem(CString& Result, const sLogBase* lpLogBase)
{
const sIllegalItemLog* lpIllegalItemLog = static_cast<const sIllegalItemLog*>(lpLogBase);
char szUseIndex[MIN_BUFFER];
PositionToString(szUseIndex, MIN_BUFFER, lpIllegalItemLog->m_usePos);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_082"),
lpIllegalItemLog->m_itemInfo.m_dwItemUID,
lpIllegalItemLog->m_itemInfo.m_usProtoTypeID,
GetItemName(lpIllegalItemLog->m_itemInfo.m_usProtoTypeID),
szUseIndex);
}
void SimpleInfo::IllegalWarpPos(CString& Result, const sLogBase* lpLogBase)
{
const sIllegalWarpPosLog* lpIllegalWarpPosLog = static_cast<const sIllegalWarpPosLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_083"),
lpLogBase->m_usXPos, lpLogBase->m_usYPos, lpLogBase->m_usZPos,
lpIllegalWarpPosLog->m_usWarpXPos, lpIllegalWarpPosLog->m_usWarpYPos, lpIllegalWarpPosLog->m_usWarpZPos,
lpIllegalWarpPosLog->m_lDis);
}
void SimpleInfo::HackDoubt(CString& Result, const sLogBase* lpLogBase)
{
const sHockDoubtLog* lpHackDoubtLog = static_cast<const sHockDoubtLog*>(lpLogBase);
Result.Append(" ");
enum {
HACK_BLACK_RANDOM = 0, // <20>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>
HACK_BLACK_NOTEXITSITEM, // <20>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>
HACK_MILEAGE_RANDOM, // <20>޴޻<DEB4><DEBB><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>
HACK_MILEAGE_NOTEXITSITEM, // <20>޴޻<DEB4><DEBB><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>
HACK_SHOP_NOTEXITSITEM, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
HACK_SHOP_NOEQUIP, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20>մϴ<D5B4>
HACK_SHOP_NOTGRADEITEM, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>׷<EFBFBD><D7B7>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>
HACK_SHOP_NOFGRADEITEM, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : F<>׷<EFBFBD><D7B7>̵尡 <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>
HACK_SHOP_SOCKETITEM, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>
HACK_SHOP_OVERDURABILITY, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 180 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
};
switch(lpHackDoubtLog->m_wHackID)
{
case HACK_BLACK_RANDOM: // <20>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_084"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_BLACK_NOTEXITSITEM: // <20>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_085"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_MILEAGE_RANDOM: // <20>޴޻<DEB4><DEBB><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>߽<EFBFBD><DFBD>ϴ<EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_086"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_MILEAGE_NOTEXITSITEM: // <20>޴޻<DEB4><DEBB><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_087"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_SHOP_NOTEXITSITEM: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_088"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_SHOP_NOEQUIP: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20>մϴ<D5B4>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_089"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_SHOP_NOTGRADEITEM: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>׷<EFBFBD><D7B7>̵<EFBFBD><CCB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_090"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_SHOP_NOFGRADEITEM: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : F<>׷<EFBFBD><D7B7>̵尡 <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_091"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_SHOP_SOCKETITEM: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>û<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_092"), lpHackDoubtLog->m_wKindItem);
break;
case HACK_SHOP_OVERDURABILITY: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 180 <20>̻<EFBFBD><CCBB><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>.
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_093"), lpHackDoubtLog->m_wKindItem);
break;
}
}
void SimpleInfo::TakeGold(CString& Result, const sLogBase* lpLogBase)
{
const sTakeGoldLog* lpTakeGoldLog = static_cast<const sTakeGoldLog*>(lpLogBase);
std::string szMoney = GetMoneyString(lpTakeGoldLog->m_SrcGold);
std::string szMoney2 = GetMoneyString(lpTakeGoldLog->m_DstGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_033"),
GetPositionName(lpTakeGoldLog->m_cSrcPos), szMoney.c_str(),
GetPositionName(lpTakeGoldLog->m_cDstPos), szMoney2.c_str());
}
void SimpleInfo::TakeGoldV2(CString& Result, const sLogBase* lpLogBase)
{
const sTakeGoldLogV2* lpTakeGoldLogV2 = static_cast<const sTakeGoldLogV2*>(lpLogBase);
CString strMoveGoldPurpose;
strMoveGoldPurpose.Format("MOVE_GOLD_PURPOSE_%02d", (int)lpTakeGoldLogV2->m_cPurpose);
std::string szMoney1 = GetMoneyString(lpTakeGoldLogV2->m_SrcGold);
std::string szMoney2 = GetMoneyString(lpTakeGoldLogV2->m_DstGold);
std::string szMoney3 = GetMoneyString(lpTakeGoldLogV2->m_MoveGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_050"),
GetPositionName(lpTakeGoldLogV2->m_cSrcPos), szMoney1.c_str(),
GetPositionName(lpTakeGoldLogV2->m_cDstPos), szMoney2.c_str(),
szMoney3.c_str(),
GetMyINIString("STRING_FOR_LOCALIZE", strMoveGoldPurpose));
}
void SimpleInfo::UpgradeItem(CString& Result, const sLogBase* lpLogBase)
{
const sUpgradeItemLog* lpUpgradeItemLog = static_cast<const sUpgradeItemLog*>(lpLogBase);
if(0 == lpUpgradeItemLog->m_cErr)
{
size_t nMineralSize = Item::MAX_ITEM_SIZE;
size_t nEquipSize = Item::MAX_ITEM_SIZE;
if(0 != lpUpgradeItemLog->m_cMineralSize)
{
Item::CItem* lpMineral = Item::CItemFactory::GetInstance().CreateItem(
(const char*)lpUpgradeItemLog + sizeof(sUpgradeItemLog), nMineralSize);
if(0 != lpMineral)
{
// Mineral<61><6C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD>.
DELETE_ITEM(lpMineral);
}
}
if(0 != lpUpgradeItemLog->m_cEquipSize)
{
Item::CItem* lpEquip = Item::CItemFactory::GetInstance().CreateItem(
(const char*)lpUpgradeItemLog + sizeof(sUpgradeItemLog) + lpUpgradeItemLog->m_cMineralSize, nEquipSize);
if(0 != lpEquip)
{
Item::CEquipment* lpEquipment = Item::CEquipment::DowncastToEquipment(lpEquip);
if(0 != lpEquipment)
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_034"),
GetItemName(lpEquipment->GetPrototypeID()), lpEquipment->GetPrototypeID(), lpEquipment->GetUpgradeLevel());
}
else
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_035"));
}
DELETE_ITEM(lpEquip);
}
}
}
else
{
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_036"));
}
}
void SimpleInfo::StallOpenClose(CString& Result, const sLogBase* lpLogBase)
{
const sStallOpenCloseLog* lpStallOpenCloseLog = static_cast<const sStallOpenCloseLog*>(lpLogBase);
char szStallName[sStallOpenCloseLog::MAX_STALL_NAME + 1];
if(0 != lpStallOpenCloseLog->m_szStallName)
{
strncpy(szStallName, lpStallOpenCloseLog->m_szStallName, sStallOpenCloseLog::MAX_STALL_NAME);
}
else
{
strcpy(szStallName, GetMyINIString("STRING_FOR_LOCALIZE", "UNKNOWN_NAME"));
}
switch(lpStallOpenCloseLog->m_cMode)
{
case sStallOpenCloseLog::STALL_OPEN:
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_037"), szStallName);
break;
case sStallOpenCloseLog::STALL_CLOSE:
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_038"), szStallName);
break;
}
}
void SimpleInfo::StallEnterLeave(CString& Result, const sLogBase* lpLogBase)
{
const sStallEnterLeaveLog* lpStallEnterLeaveLog = static_cast<const sStallEnterLeaveLog*>(lpLogBase);
const char* szType = "????";
switch(lpStallEnterLeaveLog->m_cMode)
{
case sStallEnterLeaveLog::STALL_ENTER:
szType = GetMyINIString("STRING_FOR_LOCALIZE", "ENTER");
break;
case sStallEnterLeaveLog::STALL_LEAVE:
szType = GetMyINIString("STRING_FOR_LOCALIZE", "LEAVE");
break;
}
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_039"), szType,
lpStallEnterLeaveLog->m_dwCustomerCID, szType);
}
void SimpleInfo::StallRegisterRemoveItem(CString& Result, const sLogBase* lpLogBase)
{
const sStallRegisterRemoveItemLog* lpStallRegisterRemoveItemLog =
static_cast<const sStallRegisterRemoveItemLog*>(lpLogBase);
const char* szCmd = "????";
switch(lpStallRegisterRemoveItemLog->m_cMode)
{
case sStallRegisterRemoveItemLog::STALL_REGISTERITEM:
szCmd = GetMyINIString("STRING_FOR_LOCALIZE", "REGISTER"); break;
case sStallRegisterRemoveItemLog::STALL_REMOVEITEM:
szCmd = GetMyINIString("STRING_FOR_LOCALIZE", "REMOVE"); break;
case sStallRegisterRemoveItemLog::STALL_CHANGEPRICE:
szCmd = GetMyINIString("STRING_FOR_LOCALIZE", "CHANGE_PRICE"); break;
}
const TakeType takeType = lpStallRegisterRemoveItemLog->m_takeType;
char szSrc[MIN_BUFFER], szDst[MIN_BUFFER];
PositionToString(szSrc, MIN_BUFFER, takeType.m_srcPos);
PositionToString(szDst, MIN_BUFFER, takeType.m_dstPos);
char szUID[MIN_BUFFER];
Math::Convert::Hex64ToStr(szUID, lpStallRegisterRemoveItemLog->m_itemInfo.m_dwItemUID);
const char* szIsEquip = IsEquip(lpStallRegisterRemoveItemLog->m_itemInfo.m_usProtoTypeID)
? GetMyINIString("STRING_FOR_LOCALIZE", "DURABILITY") : GetMyINIString("STRING_FOR_LOCALIZE", "NUMS");
std::string szMoney = GetMoneyString(lpStallRegisterRemoveItemLog->m_dwStallPrice);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_040"),
szCmd,
GetItemName(lpStallRegisterRemoveItemLog->m_itemInfo.m_usProtoTypeID),
lpStallRegisterRemoveItemLog->m_itemInfo.m_usProtoTypeID,
szUID, szSrc, szDst,
szMoney.c_str(), szCmd, szIsEquip,
lpStallRegisterRemoveItemLog->m_itemInfo.m_cNowDurability);
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::GuildCreate(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
unsigned long dwGuildGold = 0;
if(sizeof(unsigned long) == lpGuildLog->m_usExtraDataSize)
{
dwGuildGold = *reinterpret_cast<const unsigned long*>(lpGuildLog + 1);
}
std::string szMoney = GetMoneyString(dwGuildGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_041"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID, lpGuildLog->m_dwSrcCID, szMoney.c_str());
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::GuildJoin(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
unsigned long dwFirstTitle = 0;
if(sizeof(unsigned long) == lpGuildLog->m_usExtraDataSize)
{
dwFirstTitle = *reinterpret_cast<const unsigned long*>(lpGuildLog + 1);
}
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_042"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID, lpGuildLog->m_dwSrcCID, GuildTitle(dwFirstTitle));
}
// <20><><EFBFBD><EFBFBD> Ż<><C5BB>
void SimpleInfo::GuildLeave(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_043"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID, lpGuildLog->m_dwSrcCID, lpGuildLog->m_dwDstCID);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::GuildMemberLevelAdjust(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
unsigned long dwTitle = 0;
if(sizeof(unsigned long) == lpGuildLog->m_usExtraDataSize)
{
dwTitle = *reinterpret_cast<const unsigned long*>(lpGuildLog + 1);
}
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_044"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID,
lpGuildLog->m_dwSrcCID, lpGuildLog->m_dwDstCID, GuildTitle(dwTitle));
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::GuildRightsLevelChange(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_045"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID, lpGuildLog->m_dwSrcCID);
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::GuildLevelChange(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
unsigned long dwLevel = 0;
unsigned long dwPreGuildGold = 0;
unsigned long dwPostGuildGold = 0;
if(sizeof(unsigned long) * 3 == lpGuildLog->m_usExtraDataSize)
{
dwLevel = *reinterpret_cast<const unsigned long*>(lpGuildLog + 1);
dwPreGuildGold = *(reinterpret_cast<const unsigned long*>(lpGuildLog + 1) + 1);
dwPostGuildGold = *(reinterpret_cast<const unsigned long*>(lpGuildLog + 1) + 2);
}
std::string szMoney = GetMoneyString(dwPreGuildGold);
std::string szMoney2 = GetMoneyString(dwPostGuildGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_046"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID,
lpGuildLog->m_dwSrcCID, dwLevel, szMoney.c_str(), szMoney2.c_str());
}
// <20><><EFBFBD>帶ũ <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>
void SimpleInfo::GuildMarkChange(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
unsigned long dwPreGuildGold = 0;
unsigned long dwPostGuildGold = 0;
if(sizeof(unsigned long) * 2 <= lpGuildLog->m_usExtraDataSize)
{
dwPreGuildGold = *(reinterpret_cast<const unsigned long*>(lpGuildLog + 1));
dwPostGuildGold = *(reinterpret_cast<const unsigned long*>(lpGuildLog + 1) + 1);
}
std::string szMoney = GetMoneyString(dwPreGuildGold);
std::string szMoney2 = GetMoneyString(dwPostGuildGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_047"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID,
lpGuildLog->m_dwSrcCID, szMoney.c_str(), szMoney2.c_str());
}
// <20><><EFBFBD><EFBFBD> <20>ݰ<EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::GuildStoreGoldChange(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
unsigned long dwPreGuildGold = 0;
unsigned long dwPostGuildGold = 0;
if(sizeof(unsigned long) * 2 <= lpGuildLog->m_usExtraDataSize)
{
dwPreGuildGold = *(reinterpret_cast<const unsigned long*>(lpGuildLog + 1));
dwPostGuildGold = *(reinterpret_cast<const unsigned long*>(lpGuildLog + 1) + 1);
}
__int64 nDifference = dwPostGuildGold - dwPreGuildGold;
std::string szDifference = GetMoneyString(dwPostGuildGold - dwPreGuildGold);
std::string szPreGuildGold = GetMoneyString(dwPreGuildGold);
std::string szPostGuildGold = GetMoneyString(dwPostGuildGold);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_048"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID,
lpGuildLog->m_dwSrcCID, lpGuildLog->m_cCmd, szDifference.c_str(), szPreGuildGold.c_str(), szPostGuildGold.c_str());
}
// <20><><EFBFBD><EFBFBD> <20>Ҹ<EFBFBD><D2B8><EFBFBD>
void SimpleInfo::GuildDispose(CString& Result, const sLogBase* lpLogBase)
{
const sGuildLog* lpGuildLog = static_cast<const sGuildLog*>(lpLogBase);
int nLine = *reinterpret_cast<const int*>(lpGuildLog + 1);
const char* szFileName = reinterpret_cast<const char*>(lpGuildLog + 1) + sizeof(int);
if(lpGuildLog->m_usExtraDataSize <= sizeof(int))
{
szFileName = "Unknown";
}
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_049"),
GuildLogType(lpGuildLog->m_cType), lpGuildLog->m_dwGID, szFileName, nLine);
}
void SimpleInfo::ZoneMoveLog(CString& Result, const sLogBase* lpLogBase)
{
const sMoveZoneLog* lpMoveZoneLog = static_cast<const sMoveZoneLog*>(lpLogBase);
Result.Append(" ");
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_065"),
lpMoveZoneLog->m_cDstZone, lpMoveZoneLog->m_cDstChannel);
}
void SimpleInfo::ItemAttachOption(CString& Result, const sLogBase* lpLogBase)
{
const sItemAttachOption* lpItemAttach = static_cast<const sItemAttachOption*>(lpLogBase);
Result.Append(" ");
if (0 == lpItemAttach->m_cErr &&
0 != lpItemAttach->m_cOldItemLen &&
0 != lpItemAttach->m_cUseItemLen &&
0 != lpItemAttach->m_cNewItemLen)
{
const char* szOldItem = reinterpret_cast<const char*>(lpItemAttach + 1);
const char* szUseItem = szOldItem + lpItemAttach->m_cOldItemLen;
const char* szNewItem = szUseItem + lpItemAttach->m_cUseItemLen;
size_t nItemLen = lpItemAttach->m_cOldItemLen;
Item::CItem* lpOldItem = Item::CItemFactory::GetInstance().CreateItem(szOldItem, nItemLen);
nItemLen = lpItemAttach->m_cNewItemLen;
Item::CItem* lpNewItem = Item::CItemFactory::GetInstance().CreateItem(szNewItem, nItemLen);
Item::CEquipment* lpOldEquipment = Item::CEquipment::DowncastToEquipment(lpOldItem);
Item::CEquipment* lpNewEquipment = Item::CEquipment::DowncastToEquipment(lpNewItem);
if(0 != lpOldEquipment && 0 != lpNewEquipment)
{
const char* szAttributeName =
Item::Attribute::Attributes[lpItemAttach->m_cSelectedOptionIndex].GetTypeName();
Item::Attribute::Type eAttrType =
static_cast<Item::Attribute::Type>(lpItemAttach->m_cSelectedOptionIndex);
std::string szMoney = GetMoneyString(lpItemAttach->m_dwOldInvenGold - lpItemAttach->m_dwNewInvenGold);
// 67 : <20>ɼ<EFBFBD><C9BC>̽Ŀ<CCBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD> - <20><><EFBFBD><EFBFBD> <20><> <20>ɼ<EFBFBD> (%s:%4u) -> <20><><EFBFBD><EFBFBD> <20><> <20>ɼ<EFBFBD> (%s:%4u) / <20>Ҹ<EFBFBD> <20>ݾ<EFBFBD> (%10u)
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_067"),
szAttributeName, lpOldEquipment->GetAttribute(eAttrType),
szAttributeName, lpNewEquipment->GetAttribute(eAttrType),
szMoney.c_str());
}
DELETE_ITEM(lpOldItem);
DELETE_ITEM(lpNewItem);
}
else
{
// 68 : <20>ɼ<EFBFBD><C9BC>̽Ŀ<CCBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_068"));
}
}
void SimpleInfo::ItemCompensation(CString& Result, const sLogBase* lpLogBase)
{
const sItemCompensation* lpItemCompensation = static_cast<const sItemCompensation*>(lpLogBase);
Result.Append(" ");
if (0 == lpItemCompensation->m_cErr &&
0 != lpItemCompensation->m_cOldItemLen &&
0 != lpItemCompensation->m_cNewItemLen)
{
const char* szOldItem = reinterpret_cast<const char*>(lpItemCompensation + 1);
const char* szNewItem = szOldItem + lpItemCompensation->m_cOldItemLen;
size_t nItemLen = lpItemCompensation->m_cOldItemLen;
Item::CItem* lpOldItem = Item::CItemFactory::GetInstance().CreateItem(szOldItem, nItemLen);
nItemLen = lpItemCompensation->m_cNewItemLen;
Item::CItem* lpNewItem = Item::CItemFactory::GetInstance().CreateItem(szNewItem, nItemLen);
Item::CEquipment* lpOldEquipment = Item::CEquipment::DowncastToEquipment(lpOldItem);
Item::CEquipment* lpNewEquipment = Item::CEquipment::DowncastToEquipment(lpNewItem);
if(0 != lpOldEquipment && 0 != lpNewEquipment)
{
long nGold = lpItemCompensation->m_dwOldInvenGold - lpItemCompensation->m_dwNewInvenGold;
std::string szMoney = GetMoneyString(nGold < 0 ? -nGold : 0);
std::string szMoney2 = GetMoneyString(0 < nGold ? nGold : 0);
// 69 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD> <20><> (%s) -> <20><><EFBFBD><EFBFBD> <20><>(%s) / <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:%10u / <20>Ҹ<EFBFBD> <20><><EFBFBD><EFBFBD>:%10u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_069"),
GetItemName(lpOldEquipment->GetPrototypeID()),
GetItemName(lpNewEquipment->GetPrototypeID()),
szMoney.c_str(), szMoney2.c_str());
}
DELETE_ITEM(lpOldItem);
DELETE_ITEM(lpNewItem);
}
else
{
// 70 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_070"));
}
}
void SimpleInfo::TicketBuySkillBook(CString& Result, const sLogBase* lpLogBase)
{
const sTradeItemLog* pTradeItemLog = static_cast<const sTradeItemLog*>(lpLogBase);
char szTradeIndex[MIN_BUFFER];
PositionToString(szTradeIndex, MIN_BUFFER, pTradeItemLog->m_itemPos);
Result.Append(" ");
if(0 == lpLogBase->m_cErr)
{
size_t nItemSize = Item::MAX_ITEM_SIZE;
Item::CItem* lpItem = Item::CItemFactory::GetInstance().CreateItem(
(const char*)pTradeItemLog + sizeof(sTradeItemLog), nItemSize);
if(0 != lpItem)
{
// 71 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><>ų<EFBFBD><C5B3> Ƽ<><C6BC>) - UID:0x%016I64X, <20><><EFBFBD><EFBFBD>ID:%5u, <20≯<EFBFBD>: %s, <20><>ġ:%s, <20>Ǹ<EFBFBD><C7B8><EFBFBD>CID:%10u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_071"),
lpItem->GetUID(), lpItem->GetPrototypeID(), GetItemName(lpItem->GetPrototypeID()),
szTradeIndex, pTradeItemLog->m_dwTraderCID);
DELETE_ITEM(lpItem)
}
}
else
{
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_072"));
}
}
void SimpleInfo::UpgradeItemV2(CString& Result, const sLogBase* lpLogBase)
{
const sUpgradeItemLogV2* lpUpgradeItemLogV2 = static_cast<const sUpgradeItemLogV2*>(lpLogBase);
Result.Append(" ");
if(0 == lpUpgradeItemLogV2->m_cErr)
{
size_t nMineralSize = Item::MAX_ITEM_SIZE;
size_t nEquipSize = Item::MAX_ITEM_SIZE;
int iMineralID = 0;
if(0 != lpUpgradeItemLogV2->m_cMineralSize)
{
Item::CItem* lpMineral = Item::CItemFactory::GetInstance().CreateItem(
(const char*)lpUpgradeItemLogV2 + sizeof(sUpgradeItemLogV2), nMineralSize);
if(0 != lpMineral)
{
// Mineral<61><6C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD>.
iMineralID = lpMineral->GetPrototypeID();
DELETE_ITEM(lpMineral);
}
}
if(0 != lpUpgradeItemLogV2->m_cEquipSize)
{
Item::CItem* lpEquip = Item::CItemFactory::GetInstance().CreateItem(
(const char*)lpUpgradeItemLogV2 + sizeof(sUpgradeItemLogV2) + lpUpgradeItemLogV2->m_cMineralSize, nEquipSize);
if(0 != lpEquip)
{
Item::CEquipment* lpEquipment = Item::CEquipment::DowncastToEquipment(lpEquip);
if(0 != lpEquipment)
{
if(iMineralID == Item::EtcItemID::AWAKENCORE)
{
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_094"),
GetItemName(lpEquipment->GetPrototypeID()), lpEquipment->GetPrototypeID(),
lpUpgradeItemLogV2->m_cLastUpgradeLevel, lpEquipment->GetCoreLevel());
}
else
{
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_073"),
GetItemName(lpEquipment->GetPrototypeID()), lpEquipment->GetPrototypeID(),
lpUpgradeItemLogV2->m_cLastUpgradeLevel, lpEquipment->GetUpgradeLevel());
}
}
else
{
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_035"));
}
DELETE_ITEM(lpEquip);
}
}
}
else
{
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_036"));
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>α<EFBFBD>
void SimpleInfo::MonsterDead(CString& Result, const sLogBase* lpLogBase)
{
const sMonsterDeadLog* lpMonsterDeadLog =
static_cast<const sMonsterDeadLog*>(lpLogBase);
Result.Append(" ");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : CID:0x%08X(Lv:%3u) %2d<32><64> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_074"),
lpMonsterDeadLog->m_dwMonsterCID, lpMonsterDeadLog->m_cMonsterLevel,
lpMonsterDeadLog->m_cDropItemNum);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::FameGetBattle(CString& Result, const sLogBase* lpLogBase)
{
const sFameGetBattleLog* lpFameGetBattleLog =
static_cast<const sFameGetBattleLog*>(lpLogBase);
Result.Append(" ");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : EnemyCID:%010u, PID:%010u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u,
// <09><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD>:%8u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_075"),
lpFameGetBattleLog->m_dwEnemyCID, lpFameGetBattleLog->m_dwOurPartyUID,
lpFameGetBattleLog->m_dwPrevFame, lpFameGetBattleLog->m_dwNextFame, (lpFameGetBattleLog->m_dwNextFame - lpFameGetBattleLog->m_dwPrevFame),
lpFameGetBattleLog->m_dwPrevMileage, lpFameGetBattleLog->m_dwNextMileage, (lpFameGetBattleLog->m_dwNextMileage - lpFameGetBattleLog->m_dwPrevMileage));
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::FameLoseBattle(CString& Result, const sLogBase* lpLogBase)
{
const sFameLoseBattleLog* lpFameLoseBattleLog =
static_cast<const sFameLoseBattleLog*>(lpLogBase);
Result.Append(" ");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : EnemyCID:%010u, PID:%010u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_076"),
lpFameLoseBattleLog->m_dwEnemyCID, lpFameLoseBattleLog->m_dwOurPartyUID,
lpFameLoseBattleLog->m_dwPrevFame, lpFameLoseBattleLog->m_dwNextFame, (lpFameLoseBattleLog->m_dwPrevFame - lpFameLoseBattleLog->m_dwNextFame));
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::FameGetCamp(CString& Result, const sLogBase* lpLogBase)
{
const sFameGetCampLog* lpFameGetCampLog =
static_cast<const sFameGetCampLog*>(lpLogBase);
Result.Append(" ");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : EnemyGID:%010u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_077"),
lpFameGetCampLog->m_dwEnemyGID, lpFameGetCampLog->m_dwPrevFame, lpFameGetCampLog->m_dwNextFame, (lpFameGetCampLog->m_dwNextFame - lpFameGetCampLog->m_dwPrevFame));
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::FameLoseCamp(CString& Result, const sLogBase* lpLogBase)
{
const sFameLoseCampLog* lpFameLoseCampLog =
static_cast<const sFameLoseCampLog*>(lpLogBase);
Result.Append(" ");
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : EnemyGID:%010u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ:%8u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_078"),
lpFameLoseCampLog->m_dwEnemyGID, lpFameLoseCampLog->m_dwPrevFame, lpFameLoseCampLog->m_dwNextFame, (lpFameLoseCampLog->m_dwPrevFame - lpFameLoseCampLog->m_dwNextFame));
}
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SimpleInfo::QuestGetReward(CString& Result, const sLogBase* lpLogBase)
{
const sQuestGetRewardLog* lpQuestGetRewardLog =
static_cast<const sQuestGetRewardLog*>(lpLogBase);
Result.Append(" ");
std::string szMoney = GetMoneyString(lpQuestGetRewardLog->m_dwGold);
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> : QuestID:%10u, ItemUID:%016I64X, <20><><EFBFBD><EFBFBD>ġ:%8u, <20><><EFBFBD><EFBFBD>:%8u, <20><><EFBFBD><EFBFBD>:%8u, <20><><EFBFBD><EFBFBD><EFBFBD>޴<EFBFBD>:%8u
Result.AppendFormat(GetMyINIString("STRING_FOR_LOCALIZE", "FORMAT_079"),
lpQuestGetRewardLog->m_wQuestID, lpQuestGetRewardLog->m_dwItemUID,
lpQuestGetRewardLog->m_dwExp, szMoney.c_str(),
lpQuestGetRewardLog->m_dwFame, lpQuestGetRewardLog->m_dwMileage);
}