Ir para conteúdo
Entre para seguir isso  
Elwyn

Poder registrar move event para items com tag function

Recommended Posts

Elwyn    106
Elwyn

Recentemente em um dos servidores que eu trabalho surgiu um inconveniente para criar um sistema que envolve todos os equipamentos do server, e isso era o fato de que se registrássemos um script para um item que tem uma tag function, por exemplo energy ring ou life ring, esse item passa a não exercer mais sua função de energy ring ou life ring, sendo assim o script teria que substituir isso.

 

Como o sistema envolvia todos os itens do servidor, não era possível refazer todos esses itens em LUA então eu alterei a source de modo que move events passam a aceitar function tag e script tag.

 

Para fazer essa mesma alteração, você vai ter que ir em baseevents.cpp, na função BaseEvents::loadFromXml() procure por:

        pugi::xml_attribute scriptAttribute = node.attribute("script");

        if (scriptAttribute) {

            std::string scriptFile = "scripts/" + std::string(scriptAttribute.as_string());

            success = event->checkScript(basePath, scriptsName, scriptFile) && event->loadScript(basePath + scriptFile);

        } else {

            pugi::xml_attribute functionAttribute = node.attribute("function");

            if (functionAttribute) {

                success = event->loadFunction(functionAttribute.as_string());

            } else {

                success = false;

            }

        }

e substitua por:

        pugi::xml_attribute scriptAttribute = node.attribute("script");

        if (scriptAttribute) {

            std::string scriptFile = "scripts/" + std::string(scriptAttribute.as_string());

            success = event->checkScript(basePath, scriptsName, scriptFile) && event->loadScript(basePath + scriptFile);



            pugi::xml_attribute functionAttribute = node.attribute("function");

            if (functionAttribute) {

                event->loadFunction(functionAttribute.as_string());

            }

        } else {

            pugi::xml_attribute functionAttribute = node.attribute("function");

            if (functionAttribute) {

                success = event->loadFunction(functionAttribute.as_string());

            } else {

                success = false;

            }

        }

Agora em movement.cpp, na função MoveEvent::EquipItem procure por:

    if (isCheck) {

        return 1;

    }

E logo abaixo adicione:

    if (moveEvent->m_scriptId) {

        moveEvent->executeEquip(player, item, slot);

    }

Ainda em movement.cpp, na função MoveEvent::DeEquipItem procure por:

    player->setItemAbility(slot, false);



    const ItemType& it = Item::items[item->getID()];

E adicione logo abaixo isso

    if (moveEvent->m_scriptId) {

        moveEvent->executeEquip(player, item, slot);

    }
Editado por Elwyn

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×