Dokmos nada mais eu estou la no Orkut esperando o Dinastias ficar on o closed
Voce cada vez se supera como voce faz tantas funçoes ![]()
?
Por Dokmos, 30 de jan. de 2009 em Mods, funções e outros
Dokmos nada mais eu estou la no Orkut esperando o Dinastias ficar on o closed
Voce cada vez se supera como voce faz tantas funçoes ![]()
?
Editado Janeiro 30 por Zafor
info
Grupo: Campones
Registrado: 29/11/07
Posts: 81
Reputação: +4
Char no Tibia: Dokmos

Obrigado Zafor,
Sim, prefiro colocar funções avançadas estimulando a busca pelo conhecimento e desenvolvimento dos progamadores lua, fazendo-os ser "criativos" por seus próprios méritos do que copiar e colar uma action em seu OT sem haja algum aprendizado.
muito bom... reconheço seu trabalho, eu gosto mais de mecher com actions e movements, tambem "fuço" muito o global.lua...
vc é bom no que faz, e tem ideias otimas, o chato de tudo isso, é que todos reconhecem, usam, mais nao deixam nem si quer uma gratificação...(posts)
Parabens
info
Grupo: Campones
Registrado: 29/11/07
Posts: 81
Reputação: +4
Char no Tibia: Dokmos
Function getDirectionBetween(fromPos, toPos[, directions])
by Dokmos
-----------------------------------------------
Características
Essa função verifica a direção de uma posição em relação a outra, por exemplo se eu tenho minha posição e tenho a posição de outro jogador, e gostaria de saber a direção que este jogador está em relação a mim, se ele estiver "acima" de mim retornará 0 (Norte), o último parâmetro é opcional para colocar FALSE ou TRUE, caso você coloque FALSE ele retornará apenas os pontos cardeais (norte, sul, leste e oeste - em seus respectivos números), se colocar TRUE ele poderá retornar também os pontos colaterais (nordeste, noroeste, sudeste, sudoeste - em seus respectivos números).
Utilizo esta função também em magias em que eu quero empurrar uma criatura para longe de mim, por exemplo se eu colocar a posição do jogador e da criatura irá retornar a direção da criatura, se eu utilizar um doMoveCreature para aquela direção irá empurrar a criatura, e se eu quiser puxar uma criatura é só inverter os parâmetros de posição colocando da criatura primeiramente.
-----------------------------------------------
Instalação
Adicione essa função dentro do data\global.lua, você também pode colocá-la em outros libs, mas o global.lua já servirá para todas funções como spells, talkactions, actions, etc.
Obs: Alguas versões de OT o global.lua está no data\lib\constant.lua
function getDirectionBetween(fromPos, toPos, directions) -- Desenvolvido por Dokmos 30/01/2009 -- Apoio Dinastias dify = (fromPos.y-toPos.y) difx = (fromPos.x-toPos.x) local ARRAY = {} local BOOL = {0} local DIR = { {dify, -difx, -dify, difx},{dify-math.abs(difx), -difx-math.abs(dify), -dify-math.abs(difx), difx-math.abs(dify), difx-dify-math.abs(difx), -dify-math.abs(-difx)-difx, dify-math.abs(difx)+difx, dify-math.abs(-difx)-difx} } table.insert(BOOL, directions) for d = 1, #DIR[BOOL[#BOOL]+1] do table.insert(ARRAY, DIR[(BOOL[#BOOL])+1][d]) end table.sort(ARRAY) return (table.find(DIR[BOOL[#BOOL]+1], ARRAY[#ARRAY])-1) end-----------------------------------------------
Funcionamento
Quando utilizar fica a seu critério, vou mostrar um exemplo básico que pega uma direção para empurrar alguma criatura do target para distante do jogador.
Este exemplo acima de uma talkaction verifica se existe alguma criatura no target e caso tenha, empurra a criatura para distante do jogador.
Obs: Se em vez de "getDirectionBetween(pos,getThingPos(creature))" você colocar "getDirectionBetween(getThingPos(creature),pos)", ou seja, inverter as posições irá puxar a criatura para perto do jogador.
Espero que consigam aproveitar a função em seus scripts, qualquer bug ou erro postem aqui para eu dar uma verificada, e a configuração em seus scripts fica por conta de vocês.
:positive:
Atenciosamente,
Dokmos
Editado Janeiro 30 por Dokmos