Postado Janeiro 1, 2013 12 anos Introdução O script postado aqui é uma parte de uma Biblioteca que eu estou desenvolvendo para Open Tibia, a EagleLib. Esta biblioteca terá várias funções que são muito úteis e funcionais, funções que tornará mais prático o desenvolvimento de scripts. A `classe` Position Como muitos sabem, Lua não tem uma Orientação a Objetos nativa, mas possui uma poderosa ferramenta que nos permite simular a Orientação a Objetos, a ferramenta a qual me refiro são as metatabelas. Para tornar mais prático o desenvolvimento de scripts que necessitam manipular posições, foi criada uma `classe` nomeada Position. Como declarar um objeto Position Para declarar um objeto Position você deve chamar o método Position:new e atribuir como parâmetro uma tabela contendo as coordenadas da posição. local pos = Position:new({x = 160, y = 54, z = 7}) Comparação entre posições Creio que em algum momento você já precisou, ou pensou em fazer algo como mostra o exemplo abaixo, não? local pos = {x = 160, y = 54, z = 7} local player_pos = getCreaturePosition(cid) if pos == player_pos then return doPlayerSendCancel(cid, "Você não pode fazer isso nessa posição!") end Isso não funcionaria do modo desejado, pois quando a verificação fosse feita não seria verificado se os conteúdos da tabela são iguais, mas se uma tabela é a outra(tem uma enorme diferença entre ser como ela e ser ela). Mas se você tentasse fazer desse modo, em vez do mostrado anteriormente, resultado seria satisfatório. local pos = Position:new({x = 160, y = 54, z = 7}) local player_pos = Position:new(getCreaturePosition(cid)) if pos == player_pos then return doPlayerSendCancel(cid, "Você não pode fazer isso nessa posição!") end Desse modo, se o player estivesse na posição especificada, quando o script fosse executado ele receberia a mensagem do doPlayerSendCancel. Métodos existentes atualmente Position:getItemsThere(items[, start_stack]) Position:isCreatureThere(uid) Position:doTeleportThing(uid) Position:doCreateItem(itemid, amount) Position:doRemoveCreatureThere() Position:doRemoveItemById(itemid[, amount]) Position:doSendMagicEffect(id) Position:isItemThere(itemid) Download A biblioteca está anexada ao tópico. EagleLib.tar.gz -"Supra Omnes Lux Lucis" - Acima de todos brilha a Luz -
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.