nociam 90 Postado Maio 27, 2018 Share Postado Maio 27, 2018 (editado) Boa tarde. Pensei em fazer um ordem para pokemon mas estou com um bug alguém tem ideia de como resolver. Problema: quanto do ordem em 1 sqm ele vai certinho mas quanto e mais longe ele se teleporta. Código c++: int LuaScriptInterface::luaGamePlayerMovePokemon(lua_State* L) { // Game.playerMovePokemon(pokemon, toPosition) Creature* pokemon = getCreature(L, 1); if (pokemon->getMonster()) { const Position& position = getPosition(L, 2); Tile* toTile = g_game.map.getTile(position); g_game.internalMoveCreature(*pokemon, *toTile, FLAG_NOLIMIT); } return 1; } código lua: function onUse(player, item, fromPosition, target, toPosition, isHotkey) local poke = player:getSummons()[1] Game.playerMovePokemon(poke, toPosition) return true end Editado Maio 27, 2018 por nociam Link para o comentário Compartilhar em outros sites More sharing options...
1 Administrador PoRaI 99 Postado Maio 27, 2018 Administrador Share Postado Maio 27, 2018 Ah sim, nem tinha analisado o código, só o gif, rs. Pensei que você tava arrastando ele pra testar, awoejawei. Enfim, a função internalMoveCreature é usada para mover criaturas (quase igual a função internalTeleport) sem usar o algoritmo de Path Finding. Em C++: int LuaScriptInterface::luaGamePlayerMovePokemon(lua_State* L) { // Game.playerMovePokemon(pokemon, toPosition) Creature* pokemon = getCreature(L, 1); const Position& position = getPosition(L, 2); if (pokemon->getMonster()) { std::forward_list<Direction> dirList; if(pokemon->getPathTo(position, dirList, 0, 0, true, true)) pokemon->startAutoWalk(dirList); } return 1; } Lua: (Esse código ta mais elaborado do que o C++) local pokemonsMoveTo = {} function Player:movePokemonByList(pokemon, dirList, index) if self and pokemon and #dirList >= index then local speed = pokemon:getSpeed() * 3 pokemon:move(dirList[index], 16) index = index + 1 pokemonsMoveTo[self:getId()] = addEvent(function() self:movePokemonByList(pokemon, dirList, index) end, speed) end end function Player:movePokemon(pos) local pokemon = self:getSummons() if #pokemon == 0 then return false end if pokemonsMoveTo[self:getId()] then stopEvent(pokemonsMoveTo[self:getId()]) pokemonsMoveTo[self:getId()] = nil end local dirList = pokemon[1]:getPathTo(pos, 0, 0, true, true) self:movePokemonByList(pokemon[1], dirList, 1) return true end Frenvius e Tungs reagiu a isso 2 Link para o comentário Compartilhar em outros sites More sharing options...
0 Administrador PoRaI 99 Postado Maio 27, 2018 Administrador Share Postado Maio 27, 2018 Alguma configuração do config.lua ou na source para teleportar summons para perto quando tiver longe em X sqms. Link para o comentário Compartilhar em outros sites More sharing options...
0 nociam 90 Postado Maio 27, 2018 Autor Share Postado Maio 27, 2018 (editado) Se observar nao e esse o caso, ao dar ordem em 1 sql ele vai, quanto e pra mais longe ele vai mais nao vai caminhando ele se teleporta ate o local o certo e ir andando ate o local. Editado Maio 27, 2018 por nociam Link para o comentário Compartilhar em outros sites More sharing options...
0 nociam 90 Postado Maio 27, 2018 Autor Share Postado Maio 27, 2018 (editado) Estranho nesse modo ele so vai pra baixo. código c++ código lua Editado Maio 27, 2018 por nociam Link para o comentário Compartilhar em outros sites More sharing options...
0 Administrador PoRaI 99 Postado Maio 27, 2018 Administrador Share Postado Maio 27, 2018 atualizei ambos os scripts, testa aí e me fala. nociam reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 nociam 90 Postado Maio 27, 2018 Autor Share Postado Maio 27, 2018 100% obrigado os 2 modos no lua foi so ajustar o tempo. Link para o comentário Compartilhar em outros sites More sharing options...
0 Administrador Frenvius 204 Postado Maio 28, 2018 Administrador Share Postado Maio 28, 2018 A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nociam 90
Boa tarde.
Pensei em fazer um ordem para pokemon mas estou com um bug alguém tem ideia de como resolver.
Problema: quanto do ordem em 1 sqm ele vai certinho mas quanto e mais longe ele se teleporta.
Código c++:
int LuaScriptInterface::luaGamePlayerMovePokemon(lua_State* L) { // Game.playerMovePokemon(pokemon, toPosition) Creature* pokemon = getCreature(L, 1); if (pokemon->getMonster()) { const Position& position = getPosition(L, 2); Tile* toTile = g_game.map.getTile(position); g_game.internalMoveCreature(*pokemon, *toTile, FLAG_NOLIMIT); } return 1; }
código lua:
function onUse(player, item, fromPosition, target, toPosition, isHotkey) local poke = player:getSummons()[1] Game.playerMovePokemon(poke, toPosition) return true end
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados