void CGMItemMng::OpenFile(char* FileName)
{
char filename[256];
sprintf_s(filename, ".\\Data\\Local\\%s\\ItemList.xml", g_strSelectedML.c_str());
pugi::xml_document file;
pugi::xml_parse_result res = file.load_file(filename);
if (res.status != pugi::status_ok)
{
return;
}
pugi::xml_node ItemList = file.child("ItemList");
int index = 0;
for (pugi::xml_node Section = ItemList.child("Section"); Section; Section = Section.next_sibling())
{
for (pugi::xml_node Item = Section.child("Item"); Item; Item = Item.next_sibling())
{
Script_Item info ;
std::string text_name = Item.attribute("Name").as_string();
strcpy_s(info.Name, text_name.c_str());
info.Type = Section.attribute("Index").as_int();
info.m_byItemSlot = Item.attribute("Slot").as_int();
info.Index = Item.attribute("Index").as_int();
info.m_wSkillIndex = Item.attribute("SkillIndex").as_int();
info.TwoHand = Item.attribute("TwoHand").as_int();
info.Width = Item.attribute("Width").as_int();
info.Height = Item.attribute("Height").as_int();
info.Drop = Item.attribute("Drop").as_int();
info.PowerATTK = Item.attribute("CombatPower").as_int();
info.RequireLevel = Item.attribute("ReqLevel").as_int();
info.DamageMin = Item.attribute("DamageMin").as_int();
info.DamageMax = Item.attribute("DamageMax").as_int();
info.WeaponSpeed = Item.attribute("AttackSpeed").as_int();
info.Durability = Item.attribute("Durability").as_int();
info.MagicDur = Item.attribute("MagicDurability").as_int();
info.MagicPower = Item.attribute("MagicPower").as_int();
info.RequireStrength = Item.attribute("ReqStrength").as_int();
info.RequireDexterity = Item.attribute("ReqDexterity").as_int();
info.RequireEnergy = Item.attribute("ReqEnergy").as_int();
info.RequireVitality = Item.attribute("ReqVitality").as_int();
info.RequireCharisma = Item.attribute("ReqCommand").as_int();
info.AttType = Item.attribute("SetAttrib").as_int();
info.RequireClass[0] = Item.attribute("DarkWizard").as_int();
info.RequireClass[1] = Item.attribute("DarkKnight").as_int();
info.RequireClass[2] = Item.attribute("FairyElf").as_int();
info.RequireClass[3] = Item.attribute("MagicGladiator").as_int();
info.RequireClass[4] = Item.attribute("DarkLord").as_int();
info.RequireClass[5] = Item.attribute("Summoner").as_int();
info.RequireClass[6] = Item.attribute("RageFighter").as_int();
info.RequireClass[7] = Item.attribute("GrowLancer").as_int();
info.RequireClass[8] = Item.attribute("RuneWizard").as_int();
info.RequireClass[9] = Item.attribute("Slayer").as_int();
info.RequireClass[10] = Item.attribute("GunCrusher").as_int();
info.RequireClass[11] = Item.attribute("LightWizard").as_int();
info.RequireClass[12] = Item.attribute("LemuriaMage").as_int();
info.RequireClass[13] = Item.attribute("IllusionKnight").as_int();
info.RequireClass[14] = Item.attribute("DarkWizard").as_int();
info.Type = Item.attribute("Type").as_int();
info.Drop = Item.attribute("Dump").as_int();
info.Trade = Item.attribute("Transaction").as_int();
info.StorePersonal = Item.attribute("PersonalStore").as_int();
info.WhareHouse = Item.attribute("StoreWarehouse").as_int();
info.SellNpc = Item.attribute("SellToNPC").as_int();
info.Expensive = Item.attribute("ExpensiveItem").as_int();
info.Repair = Item.attribute("Repair").as_int();
info.Kind1 = Item.attribute("KindA").as_int();
info.Kind2 = Item.attribute("KindB").as_int();
info.Overlap = Item.attribute("Overlap").as_int();
info.MasteryGrade = Item.attribute("MasteryGrade").as_int();
std::string ModelPath = Item.attribute("ModelPath").as_string();
strcpy_s(info.ModelPath, ModelPath.c_str());
std::string ModelFile = Item.attribute("ModelFile").as_string();
strcpy_s(info.ModelFile, ModelFile.c_str());
ItemMemory[index] = info;
}
}
return;
}
Modified the item loading method to directly use the latest item files from IGC-Network. Thanks to IGC.ItemList.xml