Ir para conteúdo

Posts Recomendados

getCreaturePathTo(cid, position, maxSearchDist)

g5q414x.gif

 

Retornará uma tabela com as direções que o jogador deve seguir para chegar no ponto position. Não contem as posições que ele deve passar por. maxSearchDist é o valor máximo de passos que ele vai dar em direção à essa position e na via das dúvidas coloque o maior valor de distancia entre as duas posições.

Ex: Da para fazer um npc anda até certo lugar e depois volta.

 

Suporte para: TFS 0.4/0.3.6 e OTX2

 

Em luascript.h depois de:

static int32_t luaGetCreatureName(lua_State* L);

Adicionar:

static int32_t luaGetCreaturePathTo(lua_State* L);

Em luascript.cpp depois de:

//getCreatureName(cid)
lua_register(m_luaState, "getCreatureName", LuaInterface::luaGetCreatureName);

Adicionar:

//getCreaturePathTo(cid, pos, maxSearchDist)
lua_register(m_luaState, "getCreaturePathTo", LuaInterface::luaGetCreaturePathTo);

Depois de:

int32_t LuaInterface::luaGetCreatureName(lua_State* L)
{
//getCreatureName(cid)
    ScriptEnviroment* env = getEnv();
    if(Creature* creature = env->getCreatureByUID(popNumber(L)))
        lua_pushstring(L, creature->getName().c_str());
    else
    {
        errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND));
        lua_pushboolean(L, false);
    }
    return 1;
}

Adicionar:

int32_t LuaInterface::luaGetCreaturePathTo(lua_State* L)
{
//getCreaturePathTo(cid, pos, maxSearchDist)
    ScriptEnviroment* env = getEnv();
    int32_t maxSearchDist = popNumber(L);
    PositionEx position;
    popPosition(L, position);
    Creature* creature = env->getCreatureByUID(popNumber(L));
    if (!creature) {
        lua_pushnil(L);
        return 1;
    }
    std::list<Direction> dirList;
    lua_newtable(L);
    if (g_game.getPathTo(creature, position, dirList, maxSearchDist)) {
        std::list<Direction>::const_iterator it = dirList.begin();
        for (int32_t index = 1; it != dirList.end(); ++it, ++index) {
            lua_pushnumber(L, index);
            lua_pushnumber(L, (*it));
            pushTable(L);
        }
    } else {
        lua_pushboolean(L, false);
    }
    return 1;
}

Credito: Elwyn

Editado por RigBy
Link para o comentário
https://xtibia.com/forum/topic/234384-getcreaturepathtocid-position-maxsearchdist/
Compartilhar em outros sites

uma gif feita pelo wolf, com a função :

 

g5q414x.gif

 

"Você já atingiu seu limite de reputações positivas para hoje."

Vlw ai, já coloquei la no tópico.

Link para o comentário
https://xtibia.com/forum/topic/234384-getcreaturepathtocid-position-maxsearchdist/#findComment-1653906
Compartilhar em outros sites

  • 6 months later...
×
×
  • Criar Novo...