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:
263
GameTools/GLOBALSCRIPT/Item/ItemDataParser.cpp
Normal file
263
GameTools/GLOBALSCRIPT/Item/ItemDataParser.cpp
Normal file
@@ -0,0 +1,263 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <Log/ServerLog.h>
|
||||
#include <Utility/Math/Math.h>
|
||||
|
||||
#include "ItemStructure.h"
|
||||
#include "ItemDataParser.h"
|
||||
|
||||
|
||||
using namespace Item;
|
||||
|
||||
bool ReadString(char* szBuffer_Out, int nBufferLen, const char* szValue_In)
|
||||
{
|
||||
int nLength = _snprintf(szBuffer_Out, nBufferLen - 1, "%s", szValue_In);
|
||||
|
||||
if(0 < nLength)
|
||||
{
|
||||
szBuffer_Out[nLength] = '\0';
|
||||
return true;
|
||||
}
|
||||
|
||||
szBuffer_Out[nBufferLen - 1] = '\0';
|
||||
ERRLOG1(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. Data:%s", szValue_In);
|
||||
return false;
|
||||
}
|
||||
|
||||
inline bool ReadValue(unsigned char& cValue_Out, const char* szValue_In)
|
||||
{
|
||||
cValue_Out = static_cast<unsigned char>(atoi(szValue_In));
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool ReadValue(unsigned short& usValue_Out, const char* szValue_In)
|
||||
{
|
||||
usValue_Out = static_cast<unsigned short>(atoi(szValue_In));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
inline bool ReadValue(unsigned long& dwValue_Out, const char* szValue_In)
|
||||
{
|
||||
dwValue_Out = static_cast<unsigned long>(atol(szValue_In));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool ReadStringToTypeValue(unsigned char& cVaule_Out, const CTypeName* lpTypeArray,
|
||||
const unsigned char nMaxType, const char* szValue_In)
|
||||
{
|
||||
for (unsigned char nCount = 0; nCount < nMaxType; ++nCount)
|
||||
{
|
||||
if(0 == strcmp(szValue_In, lpTypeArray[nCount].GetTypeName()))
|
||||
{
|
||||
cVaule_Out = lpTypeArray[nCount].GetTypeValue();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// <20>⺻ <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>
|
||||
bool ReadID(Item::ItemInfo& itemInfo, const char* szValue)
|
||||
{
|
||||
itemInfo.m_usProtoTypeID = static_cast<unsigned short>(atoi(szValue));
|
||||
if(0 == itemInfo.m_usProtoTypeID || 0xFFFF == itemInfo.m_usProtoTypeID)
|
||||
{
|
||||
ERRLOG1(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID<49><44> <20>̻<EFBFBD><CCBB>մϴ<D5B4>. 0<>̳<EFBFBD> 0xFFFF<46><46> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>. ID:0x%08x",
|
||||
itemInfo.m_usProtoTypeID);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ReadItemName(Item::ItemInfo& itemInfo, const char* szValue) { return ReadString(itemInfo.m_SpriteData.m_szName, SpriteData::MAX_NAME, szValue); }
|
||||
bool ReadFieldModelName(Item::ItemInfo& itemInfo, const char* szValue) { return ReadString(itemInfo.m_StringData.m_szFieldModelName, StringData::MAX_FIELD_MODEL_NAME, szValue); }
|
||||
bool ReadAttachedModelName(Item::ItemInfo& itemInfo, const char* szValue) { return ReadString(itemInfo.m_StringData.m_szEquipModelName, StringData::MAX_EQUIP_MODEL_NAME, szValue); }
|
||||
bool ReadSpriteDDS(Item::ItemInfo& itemInfo, const char* szValue) { return ReadString(itemInfo.m_SpriteData.m_szSpriteName, SpriteData::MAX_SPRITE_NAME, szValue); }
|
||||
bool ReadMinX(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_SpriteData.m_nSpriteMinX, szValue); }
|
||||
bool ReadMinY(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_SpriteData.m_nSpriteMinY, szValue); }
|
||||
bool ReadMaxX(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_SpriteData.m_nSpriteMaxX, szValue); }
|
||||
bool ReadMaxY(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_SpriteData.m_nSpriteMaxY, szValue); }
|
||||
bool ReadSizeX(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cXSize, szValue); }
|
||||
bool ReadSizeY(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cYSize, szValue); }
|
||||
bool ReadEffectSound(Item::ItemInfo& itemInfo, const char* szValue) { return ReadString(itemInfo.m_StringData.m_szEffectSoundName, StringData::MAX_EFFECT_SOUND_NAME, szValue); }
|
||||
|
||||
bool ReadItemLevel(Item::ItemInfo& itemInfo, const char* szValue)
|
||||
{
|
||||
unsigned char cGrade = 0;
|
||||
if(ReadStringToTypeValue(cGrade, Item::Grade::Grades, Item::Grade::MAX_ITEM_GRADE, szValue))
|
||||
{
|
||||
itemInfo.m_DetailData.m_ItemGrade = static_cast<Item::Grade::Type>(cGrade);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ReadItemType(Item::ItemInfo& itemInfo, const char* szValue)
|
||||
{
|
||||
return ReadStringToTypeValue(itemInfo.m_DetailData.m_cItemType,
|
||||
Item::CItemType::GetInstance().GetItemTypeName(), Item::CItemType::MAX_ITEM_TYPE, szValue);
|
||||
}
|
||||
|
||||
bool ReadPrice(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_dwPrice, szValue); }
|
||||
bool ReadBlackPrice(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_dwBlackPrice, szValue); }
|
||||
bool ReadOptionLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cOptionLimit, szValue); }
|
||||
bool ReadDurability(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cDefaultDurabilityOrStack, szValue); }
|
||||
bool ReadMaxDurability(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cMaxDurabilityOrStack, szValue); }
|
||||
bool ReadClassLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_dwClassLimit, szValue); }
|
||||
bool ReadSkillLimitType(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_nSkillType, szValue); }
|
||||
bool ReadSkillLimitLevel(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_cSkillLevel, szValue); }
|
||||
bool ReadLevelLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_cLevelLimit, szValue); }
|
||||
bool ReadSTRLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_nStatusLimit[StatusLimit::STR], szValue); }
|
||||
bool ReadDEXLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_nStatusLimit[StatusLimit::DEX], szValue); }
|
||||
bool ReadCONLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_nStatusLimit[StatusLimit::CON], szValue); }
|
||||
bool ReadINTLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_nStatusLimit[StatusLimit::INT], szValue); }
|
||||
bool ReadWISLimit(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseLimit.m_nStatusLimit[StatusLimit::WIS], szValue); }
|
||||
|
||||
|
||||
|
||||
bool ItemDataParser::SetDefaultData(ParseDataArray& parseDataArray)
|
||||
{
|
||||
parseDataArray.reserve(30);
|
||||
|
||||
parseDataArray.push_back(ParseData("ID", ReadID));
|
||||
parseDataArray.push_back(ParseData("ItemName", ReadItemName));
|
||||
parseDataArray.push_back(ParseData("FieldModelName", ReadFieldModelName));
|
||||
parseDataArray.push_back(ParseData("AttachedModelName", ReadAttachedModelName));
|
||||
parseDataArray.push_back(ParseData("SpriteDDS", ReadSpriteDDS));
|
||||
parseDataArray.push_back(ParseData("MinX", ReadMinX));
|
||||
parseDataArray.push_back(ParseData("MinY", ReadMinY));
|
||||
parseDataArray.push_back(ParseData("MaxX", ReadMaxX));
|
||||
parseDataArray.push_back(ParseData("MaxY", ReadMaxY));
|
||||
parseDataArray.push_back(ParseData("SizeX", ReadSizeX));
|
||||
parseDataArray.push_back(ParseData("SizeY", ReadSizeY));
|
||||
parseDataArray.push_back(ParseData("EffectSound", ReadEffectSound));
|
||||
parseDataArray.push_back(ParseData("ItemLevel", ReadItemLevel));
|
||||
parseDataArray.push_back(ParseData("ItemType", ReadItemType));
|
||||
parseDataArray.push_back(ParseData("Price", ReadPrice));
|
||||
parseDataArray.push_back(ParseData("BlackPrice", ReadBlackPrice));
|
||||
parseDataArray.push_back(ParseData("OptionLimit", ReadOptionLimit));
|
||||
parseDataArray.push_back(ParseData("Durability", ReadDurability));
|
||||
parseDataArray.push_back(ParseData("MaxDurability", ReadMaxDurability));
|
||||
parseDataArray.push_back(ParseData("ClassLimit", ReadClassLimit));
|
||||
parseDataArray.push_back(ParseData("SkillLimitType", ReadSkillLimitType));
|
||||
parseDataArray.push_back(ParseData("SkillLimitLevel", ReadSkillLimitLevel));
|
||||
parseDataArray.push_back(ParseData("LevelLimit", ReadLevelLimit));
|
||||
parseDataArray.push_back(ParseData("STRLimit", ReadSTRLimit));
|
||||
parseDataArray.push_back(ParseData("DEXLimit", ReadDEXLimit));
|
||||
parseDataArray.push_back(ParseData("CONLimit", ReadCONLimit));
|
||||
parseDataArray.push_back(ParseData("INTLimit", ReadINTLimit));
|
||||
parseDataArray.push_back(ParseData("WISLimit", ReadWISLimit));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool ReadCriticalType(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::CRITICAL_TYPE], szValue); }
|
||||
bool ReadCriticalPercentage(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::CRITICAL_PERCENTAGE], szValue); }
|
||||
bool ReadMinDamage(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MIN_DAMAGE], szValue); }
|
||||
bool ReadMaxDamage(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MAX_DAMAGE], szValue); }
|
||||
bool ReadDRC(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::DRC], szValue); }
|
||||
bool ReadOffenceRevision(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::OFFENCE_REVISION], szValue); }
|
||||
bool ReadDefence(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::DEFENCE], szValue); }
|
||||
bool ReadDefenceRevision(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::DEFENCE_REVISION], szValue); }
|
||||
bool ReadResistance(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MAGIC_RESISTANCE], szValue); }
|
||||
bool ReadBlockingPercentage(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::BLOCKING_PERCENTAGE], szValue); }
|
||||
bool ReadAttackSpeed(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ATTACK_SPEED], szValue); }
|
||||
bool ReadMoveSpeed(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MOVE_SPEED], szValue); }
|
||||
bool ReadAttackRange(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ATTACK_RANGE], szValue); }
|
||||
bool ReadRangedAttack(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::RANGE_ATTACK_DISTANCE], szValue); }
|
||||
bool ReadHpMaxPlus(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MAX_HP], szValue); }
|
||||
bool ReadMpMaxPlus(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MAX_MP], szValue); }
|
||||
bool ReadHPRegen(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::HP_REGEN_AMOUNT], szValue); }
|
||||
bool ReadMPRegen(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::MP_REGEN_AMOUNT], szValue); }
|
||||
bool ReadFireAttribute(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::FIRE_ATTACK], szValue); }
|
||||
bool ReadLightingAttribute(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::LIGHTNING_ATTACK], szValue); }
|
||||
bool ReadColdAttribute(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::COLD_ATTACK], szValue); }
|
||||
bool ReadDrainAttribute(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::DRAIN_ATTACK], szValue); }
|
||||
bool ReadPoisonAttribute(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::POISON_ATTACK], szValue); }
|
||||
bool ReadFireResistance(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::FIRE_RESISTANCE], szValue); }
|
||||
bool ReadLightningResistance(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::LIGHTNING_RESISTANCE], szValue); }
|
||||
bool ReadColdResistance(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::COLD_RESISTANCE], szValue); }
|
||||
bool ReadDrainResistance(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::DRAIN_RESISTANCE], szValue); }
|
||||
bool ReadPoisonResistance(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::POISON_RESISTANCE], szValue); }
|
||||
bool ReadSTRAdd(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ADD_STR], szValue); }
|
||||
bool ReadDEXAdd(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ADD_DEX], szValue); }
|
||||
bool ReadCONAdd(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ADD_CON], szValue); }
|
||||
bool ReadINTAdd(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ADD_INT], szValue); }
|
||||
bool ReadWISAdd(Item::ItemInfo& itemInfo, const char* szValue) { ++itemInfo.m_EquipAttribute.m_nAttibuteNum; return ReadValue(itemInfo.m_EquipAttribute.m_usAttributeValue[Item::Attribute::ADD_WIS], szValue); }
|
||||
bool ReadMaterialValue(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cMaterialType, szValue); }
|
||||
bool ReadMaxSocketNum(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_DetailData.m_cMaxSocketNum, szValue); }
|
||||
|
||||
|
||||
bool ItemDataParser::SetEquipData(ParseDataArray& parseDataArray)
|
||||
{
|
||||
parseDataArray.push_back(ParseData("CriticalType", ReadCriticalType));
|
||||
parseDataArray.push_back(ParseData("CriticalPercentage", ReadCriticalPercentage));
|
||||
parseDataArray.push_back(ParseData("MinDamage", ReadMinDamage));
|
||||
parseDataArray.push_back(ParseData("MaxDamage", ReadMaxDamage));
|
||||
parseDataArray.push_back(ParseData("DRC", ReadDRC));
|
||||
parseDataArray.push_back(ParseData("OffenceRevision", ReadOffenceRevision));
|
||||
parseDataArray.push_back(ParseData("Defence", ReadDefence));
|
||||
parseDataArray.push_back(ParseData("DefenceRevision", ReadDefenceRevision));
|
||||
parseDataArray.push_back(ParseData("Resistance", ReadResistance));
|
||||
parseDataArray.push_back(ParseData("BlockingPercentage", ReadBlockingPercentage));
|
||||
parseDataArray.push_back(ParseData("AttackSpeed", ReadAttackSpeed));
|
||||
parseDataArray.push_back(ParseData("MoveSpeed", ReadMoveSpeed));
|
||||
parseDataArray.push_back(ParseData("AttackRange", ReadAttackRange));
|
||||
parseDataArray.push_back(ParseData("LongRangeAttack", ReadRangedAttack));
|
||||
parseDataArray.push_back(ParseData("HpMaxPlus", ReadHpMaxPlus));
|
||||
parseDataArray.push_back(ParseData("MpMaxPlus", ReadMpMaxPlus));
|
||||
parseDataArray.push_back(ParseData("HPRegen", ReadHPRegen));
|
||||
parseDataArray.push_back(ParseData("MPRegen", ReadMPRegen));
|
||||
parseDataArray.push_back(ParseData("FireAttribute", ReadFireAttribute));
|
||||
parseDataArray.push_back(ParseData("LightingAttribute", ReadLightingAttribute));
|
||||
parseDataArray.push_back(ParseData("ColdAttribute", ReadColdAttribute));
|
||||
parseDataArray.push_back(ParseData("DrainAttribute", ReadDrainAttribute));
|
||||
parseDataArray.push_back(ParseData("PoisonAttribute", ReadPoisonAttribute));
|
||||
parseDataArray.push_back(ParseData("FireResistance", ReadFireResistance));
|
||||
parseDataArray.push_back(ParseData("LightningResistance", ReadLightningResistance));
|
||||
parseDataArray.push_back(ParseData("ColdResistance", ReadColdResistance));
|
||||
parseDataArray.push_back(ParseData("DrainResistance", ReadDrainResistance));
|
||||
parseDataArray.push_back(ParseData("PoisonResistance", ReadPoisonResistance));
|
||||
parseDataArray.push_back(ParseData("STRAdd", ReadSTRAdd));
|
||||
parseDataArray.push_back(ParseData("DEXAdd", ReadDEXAdd));
|
||||
parseDataArray.push_back(ParseData("CONAdd", ReadCONAdd));
|
||||
parseDataArray.push_back(ParseData("INTAdd", ReadINTAdd));
|
||||
parseDataArray.push_back(ParseData("WISAdd", ReadWISAdd));
|
||||
|
||||
parseDataArray.push_back(ParseData("MaterialValue", ReadMaterialValue));
|
||||
parseDataArray.push_back(ParseData("MaxSocketNum", ReadMaxSocketNum));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool ReadSkill_ID(Item::ItemInfo& itemInfo, const char* szValue) { itemInfo.m_UseItemInfo.m_usSkill_ID = Math::Convert::StrToHex16(szValue); return true; }
|
||||
bool ReadSkill_Level(Item::ItemInfo& itemInfo, const char* szValue) { return ReadValue(itemInfo.m_UseItemInfo.m_usSkill_LockCount, szValue); }
|
||||
bool ReadItemDescribe(Item::ItemInfo& itemInfo, const char* szValue) { return ReadString(itemInfo.m_StringData.m_szItemDescribe, Item::StringData::MAX_ITEM_DESCRIBE, szValue); }
|
||||
|
||||
bool ItemDataParser::SetUseItemData(ParseDataArray& parseDataArray)
|
||||
{
|
||||
parseDataArray.push_back(ParseData("CriticalType", ReadSkill_ID));
|
||||
parseDataArray.push_back(ParseData("CriticalPercentage", ReadSkill_Level));
|
||||
parseDataArray.push_back(ParseData("MinDamage", ReadItemDescribe));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool ItemDataParser::SetEtcItemData(ParseDataArray& parseDataArray)
|
||||
{
|
||||
parseDataArray.push_back(ParseData("CriticalType", ReadItemDescribe));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user