Ir para conteúdo

[TFS 0.3.6] [CreatureEvent] Função onWalk(cid, fromPosition, toPosition)


Posts Recomendados

Olá Membros do Xtibia tudo na paz? Creio que sim hoje eu venho postar á função OnWalk eu procurei bastante por ela na época em que eu usava á versão 0.3.6/0.4 e nunca consegui encontrar na época ela era necessária para o TV System do PDA Funcionar e quando eu adaptava uma source sempre faltava á função, bom os problemas acabaram a partir de hoje, la vai á função ae logo abaixo.

 

Vá no arquivo creatureevent.cpp e procure por:

else if(tmpStr == "spawn")
        m_type = CREATURE_EVENT_SPAWN;

Logo abaixo coloque:

else if(tmpStr == "walk")
        m_type = CREATURE_EVENT_WALK;

Depois procure por:

case CREATURE_EVENT_SPAWN:
            return "onSpawn";

Logo abaixo coloque:

case CREATURE_EVENT_WALK:
            return "onWalk";

Depois procure por:

case CREATURE_EVENT_SPAWN:
            return "cid";

Logo abaixo coloque:

case CREATURE_EVENT_WALK:
            return "cid, fromPosition, toPosition";

Depois procure por:

uint32_t CreatureEvent::executeOnSpawn(Creature* creature)
{

    //onSpawn(cid)
    if(m_interface->reserveEnv())
    {
        ScriptEnviroment* env = m_interface->getEnv();
        if(m_scripted == EVENT_SCRIPT_BUFFER)
        {
            env->setRealPos(creature->getPosition());
            std::stringstream scriptstream;


            scriptstream << "local cid = " << env->addThing(creature) << std::endl;



            scriptstream << m_scriptData;


            bool result = true;
            if(m_interface->loadBuffer(scriptstream.str()))
            {
                lua_State* L = m_interface->getState();
                result = m_interface->getGlobalBool(L, "_result", true);
            }


            m_interface->releaseEnv();
            return result;
        }
        else
        {
            #ifdef __DEBUG_LUASCRIPTS__
            std::stringstream desc;
            desc << creature->getName();
            env->setEvent(desc.str());
            #endif


            env->setScriptId(m_scriptId, m_interface);
            env->setRealPos(creature->getPosition());


            lua_State* L = m_interface->getState();
            m_interface->pushFunction(m_scriptId);


            lua_pushnumber(L, env->addThing(creature));


            bool result = m_interface->callFunction(1);
            m_interface->releaseEnv();
            return result;
        }
    }
    else
    {
        std::clog << "[Error - CreatureEvent::executeCast] Call stack overflow." << std::endl;
        return 0;
    }
}

Dê uma quebra de linha e logo abaixo coloque:

uint32_t CreatureEvent::executeWalk(Creature* creature, const Position& fromPosition, const Position& toPosition)
{
    //onWalk(cid, old, current)
    if(m_interface->reserveEnv())
    {
        ScriptEnviroment* env = m_interface->getEnv();
        if(m_scripted == EVENT_SCRIPT_BUFFER)
        {
            env->setRealPos(creature->getPosition());
            std::stringstream scriptstream;
            scriptstream << "local cid = " << env->addThing(creature) << std::endl;
 
			env->streamPosition(scriptstream, "fromPosition", fromPosition, 0);
			env->streamPosition(scriptstream, "toPosition", toPosition, 0);
 
            scriptstream << m_scriptData;
            bool result = true;
            if(m_interface->loadBuffer(scriptstream.str()))
            {
                lua_State* L = m_interface->getState();
                result = m_interface->getGlobalBool(L, "_result", true);
            }
 
            m_interface->releaseEnv();
            return result;
        }
        else
        {
            #ifdef __DEBUG_LUASCRIPTS__
            char desc[30];
            sprintf(desc, "%s", creature->getName().c_str());
            env->setEventDesc(desc);
            #endif
 
            env->setScriptId(m_scriptId, m_interface);
            env->setRealPos(creature->getPosition());
 
            lua_State* L = m_interface->getState();
            m_interface->pushFunction(m_scriptId);
 
            bool result = m_interface->callFunction(3);
            m_interface->releaseEnv();
            return result;
        }
    }
    else
    {
        std::cout << "[Error - CreatureEvent::executeMove] Call stack overflow." << std::endl;
        return 0;
    }
}

Agora vá no arquivo creatureevent.h procure por:

CREATURE_EVENT_SPAWN,

Logo abaixo coloque:

CREATURE_EVENT_WALK,

Depois procure por:

uint32_t executeOnSpawn(Creature* creature);

Logo abaixo coloque:

uint32_t executeWalk(Creature* creature, const Position& fromPosition, const Position& toPosition);

 

Pronto Agora basta compilar e Pronto.

 

Espero ter Ajudado qualquer dúvida estarei respondendo, Abraço.

 

Créditos:

Darkhaos (De outro fórum)

 

Editado por DarkWore
Correção
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Ola amigo, sera que poderia me ajudar? Adicionei essa funcao sua na source que tem aqui no xtibia do dxp/pda, o erro ao ligar o server do onwalk sumiu mas ao logar e tentar soltar o poke da um bug, fica soltando varios pokes, e ao usar o order para o poke se mover da esse bug.

 

59999780b56ca_bugparaxtibia.png.8150d641025214d265d3b8259cde3a7b.png

 

Estou tentando adaptar essa source para usar em um pda, mas esta dificil kkk.

59999780b56ca_bugparaxtibia.png.8150d641025214d265d3b8259cde3a7b.png

Link para o comentário
Compartilhar em outros sites

20 minutos atrás, Matador7 disse:

Isso ai e pra adaptar um source pra a (PDA)? 

 Na secao de download tem uma source la DxP/PDA mas nao tem essa funcao ai que o cara postou, testei aqui e funcionou, mas estou com outros erros, falta de outras funcoes, é o que perguntei pra ele, pra ver se ajuda.

Link para o comentário
Compartilhar em outros sites

42 minutos atrás, Taiger disse:

 Na secao de download tem uma source la DxP/PDA mas nao tem essa funcao ai que o cara postou, testei aqui e funcionou, mas estou com outros erros, falta de outras funcoes, é o que perguntei pra ele, pra ver se ajuda.

vc vai deixa o download quando termina?

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Matador7 disse:

vc vai deixa o download quando termina?

 

Sim amigo. Mas como não sou programador eu dependo da ajuda deles.

Tipo eu gastei muito tempo com meu PDA, não queria começar em outra base e perder tudo que eu fiz nele, dai estou tentando adaptar esta source que vai servir para todos.

Link para o comentário
Compartilhar em outros sites

Agora, Taiger disse:

 

Sim amigo. Mas como não sou programador eu dependo da ajuda deles.

Tipo eu gastei muito tempo com meu PDA, não queria começar em outra base e perder tudo que eu fiz nele, dai estou tentando adaptar esta source que vai servir para todos.

sei como e isso tbm nao quero acabar perdendo minha base troca pra uma que tem source :( boa sorte espero noticias :) qualquer coisa so fala :D

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Matador7 disse:

sei como e isso tbm nao quero acabar perdendo minha base troca pra uma que tem source :( boa sorte espero noticias :) qualquer coisa so fala :D

Blz manow, se eu conseguir terminar eu vou criar um tópico.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Taiger disse:

Ola amigo, sera que poderia me ajudar? Adicionei essa funcao sua na source que tem aqui no xtibia do dxp/pda, o erro ao ligar o server do onwalk sumiu mas ao logar e tentar soltar o poke da um bug, fica soltando varios pokes, e ao usar o order para o poke se mover da esse bug.

 

59999780b56ca_bugparaxtibia.png.8150d641025214d265d3b8259cde3a7b.png

 

Estou tentando adaptar essa source para usar em um pda, mas esta dificil kkk.

Sim é á Falta da Função para o Pokémon Mover-se

Link para o comentário
Compartilhar em outros sites

  • 2 months later...
3 horas atrás, Sepulturaa disse:

@DarkWore Muito bom!

Pode fazer essa função? selfAttackCreature, a falta dela causa erro quando vai batalhar com os lideres de ginásio em meu servidor.

Grato! ^ ^ 

 

Opa esse selfAttackCreature um amigo estava com esse problema há um tempo atrás irei ver com ele dependendo posto aqui, Abraço. ^^

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...