Code:
bool Vocations::loadFromXml(const std::string& datadir)
{
std::string filename = datadir + "vocations.xml";
xmlDocPtr doc = xmlParseFile(filename.c_str());
if(doc){
xmlNodePtr root, p;
root = xmlDocGetRootElement(doc);
if(xmlStrcmp(root->name,(const xmlChar*)"vocations") != 0){
xmlFreeDoc(doc);
return false;
}
p = root->children;
while(p){
std::string str;
int intVal;
float floatVal;
if(xmlStrcmp(p->name, (const xmlChar*)"vocation") == 0){
Vocation* voc = new Vocation();
uint32_t voc_id;
xmlNodePtr skillNode;
if(readXMLInteger(p, "id", intVal)){
voc_id = intVal;
if(readXMLString(p, "name", str)){
voc->name = str;
}
if(readXMLString(p, "description", str)){
voc->description = str;
}
if(readXMLInteger(p, "gaincap", intVal)){
voc->gainCap = intVal;
}
if(readXMLInteger(p, "gainhp", intVal)){
voc->gainHP = intVal;
}
if(readXMLInteger(p, "gainmana", intVal)){
if((voc_id==0) || (voc_id==1) || (voc_id==2) || (voc_id==3) || (voc_id==4) ){
voc->gainMana = 2;
}else{
voc->gainMana = 4;
}
}
if(readXMLInteger(p, "gainhpticks", intVal)){
voc->gainHealthTicks = intVal;
}
if(readXMLInteger(p, "gainhpamount", intVal)){
voc->gainHealthAmount = intVal;
}
if(readXMLInteger(p, "gainmanaticks", intVal)){
voc->gainManaTicks = intVal;
}
if(readXMLInteger(p, "gainmanaamount", intVal)){
voc->gainManaAmount = intVal;
}
if(readXMLInteger(p, "maxsoul", intVal)){
voc->maxSoul = intVal;
}
if(readXMLInteger(p, "gainsoulticks", intVal)){
voc->gainSoulTicks = intVal;
}
if(readXMLFloat(p, "manamultiplier", floatVal)){
voc->manaMultiplier = floatVal;
}
if(readXMLInteger(p, "attackspeed", intVal)){
voc->attackSpeed = intVal;
}
skillNode = p->children;
while(skillNode){
if(xmlStrcmp(skillNode->name, (const xmlChar*)"skill") == 0){
uint32_t skill_id;
if(readXMLInteger(skillNode, "id", intVal)){
skill_id = intVal;
if(skill_id < SKILL_FIRST || skill_id > SKILL_LAST){
std::cout << "No valid skill id. " << skill_id << std::endl;
}
else{
if(readXMLFloat(skillNode, "multiplier", floatVal)){
voc->skillMultipliers[skill_id] = floatVal;
}
}
}
else{
std::cout << "Missing skill id." << std::endl;
}
}
else if(xmlStrcmp(skillNode->name, (const xmlChar*)"formula") == 0) {
if(readXMLFloat(skillNode, "meleeDamage", floatVal)) {
voc->meleeDamageMultiplier = floatVal;
}
if(readXMLFloat(skillNode, "distDamage", floatVal) || readXMLFloat(skillNode, "distanceDamage", floatVal)) {
voc->distDamageMultiplier = floatVal;
}
if(readXMLFloat(skillNode, "defense", floatVal)) {
voc->defenseMultiplier = floatVal;
}
if(readXMLFloat(skillNode, "armor", floatVal)) {
voc->armorMultiplier = floatVal;
}
}
skillNode = skillNode->next;
}
//std::cout << "Voc id: " << voc_id << std::endl;
//voc->debugVocation();
vocationsMap[voc_id] = voc;
}
else{
std::cout << "Missing vocation id." << std::endl;
}
}
p = p->next;
}
xmlFreeDoc(doc);
}
return true;
}
when u make any change o nvocations.xml it doesnt work, i tryied adding this inside the gainmana if
Code:
if((voc_id==0) || (voc_id==1) || (voc_id==2) || (voc_id==3) || (voc_id==4) ){
voc->gainMana = 2;
}else{
voc->gainMana = 4;
}
now that i see /\ this was wrong uint32_t gainMana; , wtf is uint32_t?
and i compiled, and it didnt work,si this not wrking , but idk why, any help?