Biblioteca interessante.
Usar orientação a objetos deixa o codigo bem mais clen
Vou dar uma olhada
Por MaXwEllDeN, 01 de jan. de 2013 em Mods, funções e outros
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Biblioteca interessante.
Usar orientação a objetos deixa o codigo bem mais clen
Vou dar uma olhada
info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

Bem legal essa ideia de biblioteca.
info
Grupo: Barão
Registrado: 18/10/10
Posts: 246
Reputação: +89
Char no Tibia: Elite Pamcadaum

Verdade, orientação a objetos deixa tudo mais clean. Alguém teria mais alguma sugestão para métodos que eu posso implementar na `classe` Position?
info
Grupo: Conde
Registrado: 30/10/11
Posts: 625
Reputação: +101
Gênero: Masculino

__add,__sub e __unm (pra inverter x por y e y por x,ou simplesmente troca o sinal deles)
info
Grupo: Barão
Registrado: 18/10/10
Posts: 246
Reputação: +89
Char no Tibia: Elite Pamcadaum

__add,__sub e __unm (pra inverter x por y e y por x,ou simplesmente troca o sinal deles)
A do add e sub achei legal, mas as __unm não ví muita utilidade, xD. Valeu.
Adicionei aqui, mais tarde upo o arquivo ;_)
info
Grupo: Barão
Registrado: 18/10/10
Posts: 246
Reputação: +89
Char no Tibia: Elite Pamcadaum
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!") endIsso 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!") endDesse modo, se o player estivesse na posição especificada, quando o script fosse executado ele receberia a mensagem do doPlayerSendCancel.
Métodos existentes atualmente
Download
A biblioteca está anexada ao tópico.
EagleLib.tar.gz
Editado Janeiro 1 por MaXwEllDeN