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>
This commit is contained in:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,343 @@
#include "stdafx.h"
#include "Item.h"
#include "..\Skill\SkillStructure.h"
static Item::ItemInfo NullProtoType;
Item::CItem::CItem()
: m_ItemInfo(NullProtoType)
{
m_ItemData.m_dwUID = 0;
m_ItemData.m_usProtoTypeID = 0;
m_ItemData.m_ItemPos.m_cPos = 0;
m_ItemData.m_ItemPos.m_cIndex = 0;
m_ItemData.m_cItemSize = sizeof(ItemData);
m_ItemData.m_cNumOrDurability = 0;
m_cMaxNumOrDurability = 0;
m_dwStallPrice = 0;
}
Item::CItem::CItem(unsigned __int64 dwItemUID, const ItemInfo& itemInfo)
: m_ItemInfo(itemInfo)
{
m_ItemData.m_dwUID = dwItemUID;
m_ItemData.m_usProtoTypeID = itemInfo.m_usProtoTypeID;
m_ItemData.m_ItemPos.m_cPos = 0;
m_ItemData.m_ItemPos.m_cIndex = 0;
m_ItemData.m_cItemSize = sizeof(ItemData);
m_ItemData.m_cNumOrDurability = itemInfo.m_DetailData.m_cDefaultDurabilityOrStack;
m_cMaxNumOrDurability = itemInfo.m_DetailData.m_cMaxDurabilityOrStack;
m_dwStallPrice = 0;
}
Item::CItem::~CItem()
{
}
bool Item::CItem::SerializeOut(char* lpSerializeItem_Out, size_t& nBufferLength_InOut)
{
if(nBufferLength_InOut >= sizeof(ItemData))
{
m_ItemData.m_cItemSize = sizeof(ItemData);
nBufferLength_InOut = sizeof(ItemData);
*reinterpret_cast<ItemData*>(lpSerializeItem_Out) = m_ItemData;
return true;
}
nBufferLength_InOut = 0;
return false;
}
bool Item::CItem::SerializeIn(const char* lpSerializeItem_In, size_t& nBufferLength_InOut)
{
if(sizeof(ItemData) <= nBufferLength_InOut)
{
const ItemData& itemData = *reinterpret_cast<const Item::ItemData*>(lpSerializeItem_In);
nBufferLength_InOut = itemData.m_cItemSize;
if(itemData.m_usProtoTypeID == m_ItemInfo.m_usProtoTypeID)
{
m_ItemData = itemData;
return true;
}
}
return false;
}
Item::CEquipment::CEquipment(unsigned __int64 dwItemUID, const ItemInfo& itemInfo)
: CItem(dwItemUID, itemInfo),
m_usRuneSocket(0), m_cMaterialType(itemInfo.m_DetailData.m_cMaterialType),
m_cSocketNum(0), m_cReserved(0), m_cReserved2(0)
{
if(1 == m_ItemInfo.m_DetailData.m_cXSize && 1 == m_ItemInfo.m_DetailData.m_cYSize)
{
m_cMaxSocket = Item::EquipmentInfo::MAX_MINSIZE_SOCKET_NUM;
m_cMaxAttribute = Item::EquipmentInfo::MAX_MINSIZE_ATTRIBUTE_NUM;
}
else
{
m_cMaxSocket = Item::EquipmentInfo::MAX_SOCKET_NUM;
m_cMaxAttribute = Item::EquipmentInfo::MAX_ATTRIBUTE_NUM;
}
m_cMaxSocket = (itemInfo.m_DetailData.m_cMaxSocketNum < m_cMaxSocket) ?
itemInfo.m_DetailData.m_cMaxSocketNum : m_cMaxSocket;
m_ItemData.m_cItemSize += sizeof(EquipmentInfo);
std::fill_n(m_cSocket, unsigned char(Item::EquipmentInfo::MAX_SOCKET_NUM), 0);
InitializeAttribute();
}
Item::CEquipment::~CEquipment()
{
}
void Item::CEquipment::InitializeAttribute()
{
for(unsigned int nIndex = 0; nIndex < Item::Attribute::MAX_ATTRIBUTE_NUM; ++nIndex)
{
m_usAttribute[nIndex] =
m_ItemInfo.m_EquipAttribute.m_usAttributeValue[nIndex];
}
}
bool Item::CEquipment::SerializeOut(char* lpSerializeItem_Out, size_t& nBufferLength_InOut)
{
const size_t nMaxItemSize = sizeof(ItemData) + sizeof(EquipmentInfo) +
Item::EquipmentInfo::MAX_SOCKET_NUM * sizeof(unsigned char) +
Item::EquipmentInfo::MAX_ATTRIBUTE_NUM * sizeof(ItemAttribute);
if(nMaxItemSize <= nBufferLength_InOut)
{
unsigned int nIndex = 0, nSocketIndex = 0, nAttributeIndex = 0;
// <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ItemData& itemData = *reinterpret_cast<ItemData*>(lpSerializeItem_Out);
itemData = m_ItemData;
EquipmentInfo& equipmentInfo = *reinterpret_cast<EquipmentInfo*>(lpSerializeItem_Out + sizeof(ItemData));
char* lpSocketInfo = lpSerializeItem_Out + sizeof(ItemData) + sizeof(EquipmentInfo);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
for(nIndex = 0, nSocketIndex = 0;
nIndex < Item::EquipmentInfo::MAX_SOCKET_NUM && nSocketIndex < m_cMaxSocket; ++nIndex)
{
if(0 != m_cSocket[nIndex])
{
lpSocketInfo[nSocketIndex] = m_cSocket[nIndex];
++nSocketIndex;
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ItemAttribute* lpAttribute = reinterpret_cast<ItemAttribute*>(
lpSocketInfo + (nSocketIndex * sizeof(unsigned char)));
for(nIndex = 0, nAttributeIndex = 0;
nIndex < Item::Attribute::MAX_ATTRIBUTE_NUM && nAttributeIndex < m_cMaxAttribute; ++nIndex)
{
const short usDiffAttribute = m_usAttribute[nIndex] -
m_ItemInfo.m_EquipAttribute.m_usAttributeValue[nIndex];
if(0 != usDiffAttribute)
{
lpAttribute[nAttributeIndex].m_cType = nIndex;
lpAttribute[nAttributeIndex].m_usValue = usDiffAttribute;
++nAttributeIndex;
}
}
// <20><><EFBFBD><EFBFBD> <20><> ũ<><C5A9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m_ItemData.m_cItemSize = itemData.m_cItemSize = sizeof(ItemData) + sizeof(EquipmentInfo) +
nSocketIndex * sizeof(unsigned char) + nAttributeIndex * sizeof(ItemAttribute);
equipmentInfo.m_cRuneSocket = m_usRuneSocket;
equipmentInfo.m_cDiffMaterialType = m_cMaterialType - m_ItemInfo.m_DetailData.m_cMaterialType;
equipmentInfo.m_cDiffMaxSocket = m_cMaxSocket - m_ItemInfo.m_DetailData.m_cMaxSocketNum;
equipmentInfo.m_cSocketNum = nSocketIndex;
equipmentInfo.m_cAttributeNum = nAttributeIndex;
equipmentInfo.m_cReserved = 0;
equipmentInfo.m_cDiffMaxDurability = m_cMaxNumOrDurability - m_ItemInfo.m_DetailData.m_cMaxDurabilityOrStack;
equipmentInfo.m_cReserved2 = m_cReserved2;
nBufferLength_InOut = m_ItemData.m_cItemSize;
return true;
}
nBufferLength_InOut = 0;
return false;
}
bool Item::CEquipment::SerializeIn(const char* lpSerializeItem_In, size_t& nBufferLength_InOut)
{
if(CItem::SerializeIn(lpSerializeItem_In, nBufferLength_InOut))
{
const Item::EquipmentInfo& equipmentInfo =
*reinterpret_cast<const Item::EquipmentInfo*>(lpSerializeItem_In + sizeof(ItemData));
m_usRuneSocket = equipmentInfo.m_cRuneSocket; // <20><> <20><><EFBFBD><EFBFBD>
m_cMaterialType = m_ItemInfo.m_DetailData.m_cMaterialType + equipmentInfo.m_cDiffMaterialType; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_cMaxSocket = m_ItemInfo.m_DetailData.m_cMaxSocketNum + equipmentInfo.m_cDiffMaxSocket; // <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
m_cSocketNum = equipmentInfo.m_cSocketNum;
m_cReserved = equipmentInfo.m_cReserved;
m_cMaxNumOrDurability = m_ItemInfo.m_DetailData.m_cMaxDurabilityOrStack + equipmentInfo.m_cDiffMaxDurability;
m_cReserved2 = equipmentInfo.m_cReserved2;
const unsigned char* lpSocketIndex = reinterpret_cast<const unsigned char*>(&equipmentInfo + 1);
const unsigned char* lpSocketPastEnd = lpSocketIndex + m_cSocketNum;
std::copy(lpSocketIndex, lpSocketPastEnd, m_cSocket);
const Item::ItemAttribute* lpItemAttribute =
reinterpret_cast<const Item::ItemAttribute*>(lpSocketPastEnd);
for(unsigned int nIndex = 0; nIndex < equipmentInfo.m_cAttributeNum; ++nIndex)
{
unsigned char cType = lpItemAttribute[nIndex].m_cType;
if(cType < Item::Attribute::MAX_ATTRIBUTE_NUM)
{
m_usAttribute[cType] = m_ItemInfo.m_EquipAttribute.m_usAttributeValue[cType] + lpItemAttribute[nIndex].m_usValue;
}
}
return true;
}
return false;
}
// InstallSocket
Item::CEquipment::EQUIPMENT_ERROR Item::CEquipment::InstallSocket(CItem& Gem)
{
using namespace Item;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>˻<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20>ڵ<EFBFBD><DAB5><EFBFBD> <20><>.
if (Item::EquipmentInfo::MAX_SOCKET_NUM <= m_cMaxSocket ||
m_cMaxSocket <= m_cSocketNum)
{
return EQUIPMENT_ERROR::E_OVER_MAX_SOCKET;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>´°<C2B4> Ȯ<><C8AE>.
unsigned short usGemTypeID = Gem.GetPrototypeID();
if(usGemTypeID < EtcItemID::GEM_START_ID || EtcItemID::GEM_END_ID < usGemTypeID)
{
return EQUIPMENT_ERROR::E_NOT_GEM;
}
unsigned char cGemType = usGemTypeID - EtcItemID::GEM_START_ID;
// <20><> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD>.
ItemAttribute attribute = CItemType::GetInstallGemAttribute(cGemType,
m_ItemInfo.m_DetailData.m_cItemType);
++m_cSocketNum;
return EQUIPMENT_ERROR::E_SUCCESS;
}
// UpgradeItem
Item::CEquipment::EQUIPMENT_ERROR Item::CEquipment::UpgradeItem(CItem& Mineral)
{
return EQUIPMENT_ERROR::E_SUCCESS;
}
Item::CUseItem::CUseItem(unsigned __int64 dwItemUID, const ItemInfo& itemInfo)
: CItem(dwItemUID, itemInfo)
{
}
Item::CUseItem::~CUseItem()
{
}
Item::CSkillItem::CSkillItem()
: CItem(0, m_ItemInfoInstance)
{
m_cMaxDurability = 0;
}
bool Item::CSkillItem::SetSkillInfo(const Skill::ProtoType *lpSkillInfo)
{
/* char m_szEffectFileName[MAX_FILE_NAME];
char m_szHitFileName[MAX_FILE_NAME];
char m_szCastingFileName[MAX_FILE_NAME];
//-----------------------------------
Type::Type m_eSkillType; // See Namespace Type
Target::Type m_eTargetType; // See Namespace Target
UseLimit::Type m_eUseLimit; // See Namespace UseLimit
unsigned char m_StatusLimitType[MAX_LIMIT_NUM];
char m_StatusLimitValue[MAX_LIMIT_NUM];
//-----------------------------------
unsigned short m_usSkill_ID;
unsigned short m_StartMP;
unsigned short m_LevelMP;
unsigned short m_StartTick;
//-----------------------------------
unsigned short m_LevelTick;
unsigned short m_usCoolDownTime;
//-----------------------------------
float m_EffectDistance;
float m_EffectExtent;
//-----------------------------------
bool m_bProtection;
bool m_bGauge;
bool m_bIsClassSkill;
bool m_bInterrupt;
unsigned char m_cEndScript;
unsigned char m_cEndCoolDown;
unsigned char m_cMinRange;
unsigned char m_cMaxRange;
//-----------------------------------
unsigned char m_cStrikeNum;
unsigned char m_cSpell_LockCount;
unsigned char m_cPadding[6];*/
m_ItemInfoInstance.m_SpriteData = lpSkillInfo->m_SpriteInfo;
return true;
}