• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Need help with sources code avesta, fixing vocations.xml stuff

alramo

New Member
Joined
May 25, 2009
Messages
197
Reaction score
0
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?
 
Back
Top