Ir para conteúdo

Adaptação de Código para PugiXML


Rajude

Posts Recomendados

Eu estou tentando adaptar este código para a nova versão do TFS, que usa PUGI XML, em vez de LIBXML. O problema é que eu ainda não aprendi a manipular a nova biblioteca, então não sei como fazer a conversão..

 

Segue o CODE:

int32_t LuaScriptInterface::luaDoCreateCustomMonster(lua_State* L)
{
    //doCreateCustomMonster(name, pos, outfit, health, spells, corpse, distance, experience )

    // created By MeNi for otland.net //

    uint64_t health, corpse, distance, experience;
    Outfit_t outfit;
    PositionEx pos;
    MonsterType* pobranyTyp = NULL;
    pobranyTyp = new MonsterType();

    experience = popNumber(L);
    distance = popNumber(L);
    corpse = popNumber(L);
    std::string spells = popString(L);
    health = popNumber(L);
    outfit = popOutfit(L);
    popPosition(L, pos);
    std::string name = popString(L);

    Monster* monster;

    pobranyTyp->spellAttackList.clear();

    pobranyTyp->health = health;
    pobranyTyp->healthMax = health;
    pobranyTyp->outfit = outfit;
    pobranyTyp->name = name;
    pobranyTyp->nameDescription = name;
    pobranyTyp->lookCorpse = corpse;
    pobranyTyp->targetDistance = distance;
    pobranyTyp->experience = experience;

    pobranyTyp->isSummonable =
    pobranyTyp->isIllusionable =
    pobranyTyp->isConvinceable =
    pobranyTyp->isWalkable =
    pobranyTyp->pushable = false;

    pobranyTyp->isAttackable =
    pobranyTyp->isHostile =
    pobranyTyp->canPushItems =
    pobranyTyp->canPushCreatures = true;

    pobranyTyp->defense = 50;
    pobranyTyp->armor = 80;
    pobranyTyp->baseSpeed = 200;
    pobranyTyp->changeTargetSpeed =
    pobranyTyp->changeTargetChance = 0;

    xmlDocPtr doc = xmlParseMemory(spells.c_str(), spells.length());
    xmlNodePtr root = xmlDocGetRootElement(doc);

    xmlNodePtr tmpNode = root->children;

    while (tmpNode)
    {
        if (!xmlStrcmp(tmpNode->name, (const xmlChar*)"attack"))
        {
            spellBlock_t sb;
            if (g_monsters.deserializeSpell(tmpNode, sb, "doCreateCustomMonster"))
                pobranyTyp->spellAttackList.push_back(sb);
        }
        tmpNode = tmpNode->next;
    }

    monster = Monster::createMonster(pobranyTyp);

    if (!g_game.placeCreature(monster, pos, false, false))
    {
        delete monster;

        lua_pushboolean(L, true);
        return 1;
    }

    ScriptEnvironment* env = getScriptEnv();
    lua_pushnumber(L, env->addThing((Thing*)monster));
    return 1;
}

O problema de conversão está nesta parte:

    xmlDocPtr doc = xmlParseMemory(spells.c_str(), spells.length());
    xmlNodePtr root = xmlDocGetRootElement(doc);

    xmlNodePtr tmpNode = root->children;

    while (tmpNode)
    {
        if (!xmlStrcmp(tmpNode->name, (const xmlChar*)"attack"))
        {
            spellBlock_t sb;
            if (g_monsters.deserializeSpell(tmpNode, sb, "doCreateCustomMonster"))
                pobranyTyp->spellAttackList.push_back(sb);
        }
        tmpNode = tmpNode->next;
    }

Então, alguém sabe e poderia dizer como fazer essa conversão para o PUGI-XML? Obrigado.

 

Link para o comentário
Compartilhar em outros sites

  • 1 year later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...