Dokmos 4 Postado Dezembro 18, 2008 Share Postado Dezembro 18, 2008 (editado) Fórmula Posição & Direção by Dokmos ----------------------------------------------- Fórmula atualizada 30/01! Agora a fórmula converte todas as direções: norte, leste, sul, oeste (0, 1, 2, 3) e também as direções sudoeste, sudeste, noroeste e nordeste (4, 5, 6, 7)! Esta fórmula pode parecer ridícula e inútil, mas se você souber usá-la economizará tempo, linhas, bugs e um sistema mais rápido em seus scripts! ----------------------------------------------- Fórmula dir = { x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1))) } ----------------------------------------------- Funcionamento Você agora provavelmente deve estar perguntando se o tio Dokmos não tem mais nada para fazer do que vir aqui postar isso. Bom então vou explicar para que esses números servem. Essa fórmula é baseada nas direções padrões do global: NORTE = 0 LESTE = 1 SUL = 2 OESTE = 3 SUDOESTE = 4 SUDESTE = 5 NOROESTE = 6 NORDESTE = 7 Essa tabela resulta nas posições x e y de acordo com a posição do jogador, quando variamos a posição de algum jogador para essas direções modicamos os eixos x e y, as vezes um pode ser nulo, negativo ou positivo, por exemplo vamos andar 1 sqm para o norte: variação de x = 0 variação de y = -1 Ou seja, o x atual do jogador permanece e o y atual do jogador subtrai 1. Vou colocar aqui a variação para as direções em 1 sqm: NORTE x = 0, y = -1 LESTE x = 1, y = 0 SUL x = 0, y = 1 OESTE x = -1, y = 0 Vamos ver agora se essa fórmula funciona mesmo, vamos andar 1 sqm para a direção norte, ou seja, a tabela terá que ser {0,-1}, agora jogando na fórmula: {math.fmod(0,2)*(-(0-2)),(0-1)*(0-1-(0-1)*math.abs(0-2))} {0*2,-1*(0*2)} {0,-1*(-1-(-1*2))} {0,-1*(-1+2)} {0,-1*1} {0,-1} Good! Se você quiser testar com todas direções vai ver que todas vão sair nas posições desejadas!!! Agora você deve estar perguntando e para que eu estou lendo isso? Bom na verdade você já precisou, precisa ou precisará disso em algum script seu, por exemplo vamos mover o jogador 1 sqm a frente, fazendo do jeito normal: pos = getThingPos(cid) if getPlayerLookDir(cid) == 0 then newpos = {x=pos.x,y=pos.y-1,z=pos.z} elseif getPlayerLookDir(cid) == 1 then newpos = {x=pos.x+1,y=pos.y,z=pos.z} elseif getPlayerLookDir(cid) == 2 then newpos = {x=pos.x,y=pos.y+1,z=pos.z} elseif getPlayerLookDir(cid) == 3 then newpos = {x=pos.x-1,y=pos.y,z=pos.z} end doTeleportThing(cid,newpos,TRUE) E se usando a fórmula seria assim: pos = getThingPos(cid) d = getPlayerLookDir(cid) dir = { x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1))) } newpos = {x=pos.x+dir.x,y=pos.y+dir.y,z=pos.z} doTeleportThing(cid,newpos,TRUE} Como eu disse pode parecer inútil para alguns e bastante útil para quem sabe usá-lo. Agora é com vocês!!! E aproveitando o tópico vou colocar um mini-função para vocês baseado nessa fórmula, para instalar é só colocar dentro do seu global.lua e ela server para pegar uma posição quantos sqm's a frente você desejar. Função getPosfromSquare(pos,direction,squares) ------------------ Function getPosfromSquare(pos,direction,squares) by Dokmos ------------------ function getPosfromSquare(pos,direction,squares) d = direction dir = { x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1))) } newpos = {x=pos.x+dir.x*squares,y=pos.y+dir.y*squares,z=pos.z} return newpos end Aqui uma talkaction como exemplo que usa a função: function onSay(cid, words, param) newpos = getPosfromSquare(getThingPos(cid),getPlayerLookDir(cid),5) doTeleportThing(cid,newpos,TRUE) return TRUE end Como vocês podem ver essa talkaction teleporta o jogador 5 sqm a frente que ele está olhando, como disse uma mini-função. Espero que aproveitem a fórmula!!! :smile_positivo: Atenciosamente, Dokmos Editado Janeiro 30, 2009 por Dokmos Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/ Compartilhar em outros sites More sharing options...
guilhermes26 26 Postado Dezembro 18, 2008 Share Postado Dezembro 18, 2008 Show cara, bem interessanet esse "code". Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/#findComment-659527 Compartilhar em outros sites More sharing options...
Nottinghster 16 Postado Dezembro 19, 2008 Share Postado Dezembro 19, 2008 Dokmos cada vez mais mostrando a sua capacidade como Scripter!! Parabéns Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/#findComment-659918 Compartilhar em outros sites More sharing options...
Vi Vanderlaysk 0 Postado Dezembro 19, 2008 Share Postado Dezembro 19, 2008 Muito massa cara ... realmente melhor... eu li e demorei pra entender isso .. mas tipo gostei mais desse do q o q ja tinha ;P Nem eu sei oq eu falei xD Abraço ;D Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/#findComment-660296 Compartilhar em outros sites More sharing options...
PedrinhuHenrique 7 Postado Dezembro 19, 2008 Share Postado Dezembro 19, 2008 Boa, cara pena que não sou scripter, mais você trazendo esse tipo de tutorial é uma excelente iniciativa! Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/#findComment-660299 Compartilhar em outros sites More sharing options...
Dokmos 4 Postado Janeiro 30, 2009 Autor Share Postado Janeiro 30, 2009 Obrigado, acabei de atualizar a fórmula e agora ela converte todas as posições! Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/#findComment-687561 Compartilhar em outros sites More sharing options...
satan666 12 Postado Fevereiro 15, 2009 Share Postado Fevereiro 15, 2009 muito bom mesmo gostei vo ve se funfa em tfs... vlw ae... Link para o comentário https://xtibia.com/forum/topic/102993-dinastias-f%C3%B3rmula-posi%C3%A7%C3%A3o-dire%C3%A7%C3%A3o-3001/#findComment-696333 Compartilhar em outros sites More sharing options...
Posts Recomendados