Antharaz 93 Postado Março 14, 2010 Share Postado Março 14, 2010 ATENÇÃO: NÃO SE TRATA DE UM TUTORIAL, MAS DE UMA FUNCTION. COMO NÃO TEM UM LUGAR PARA FUNCTIONS, TIVE QUE POSTAR AQUI. Nome: emarea(cid,frompos,topos) Autor: Antharaz Versão Testada: TFS 0.3.6 e TCS (todas versões) Informações adicionais: Bem, não sei se já existe um function com este mesmo objetivo, mas eu pelo menos nunca vi. Ela verifica se determinado player está em certa área. Como se usar: Declare 2 variáveis, uma com as coordenadas do 1º sqm superior esquerdo da área e outro com as coordenadas do último sqm da parte inferior direita da área. A da parte superior esquerda corresponde a frompos e a outra a topos. Não precisa colocar a coordenada z de cada sqm, isto é OPCIONAL, mas se colocar, coloque a do andar mais baixó no frompos e a do último andar que deseja verificar na topos. Caso o player esteja na área, irá retornar TRUE, caso não esteje, irá retornar false. Exemplos: Abaixo haverá um exemplo no qual eu usei a function em uma talkction: 1º - usando com a coordenada Z local frompos = {x=517,y=460,z=3} local topos = {x=524,y=464,z=1} function onSay(cid, words, param, channel) if emarea(cid,frompos,topos) then doBroadcastMessage("Está na área.") else doBroadcastMessage("Não está na área.") end return TRUE end Resultado com god na pos [X: 520] [Y: 462] [Z: 2] Resultado com god na pos [X: 520] [Y: 463] [Z: 4] 2º - retirando a coordenada z das variáveis: local frompos = {x=517,y=460} local topos = {x=524,y=464} function onSay(cid, words, param, channel) if emarea(cid,frompos,topos) then doBroadcastMessage("Está na área.") else doBroadcastMessage("Não está na área.") end return TRUE end Resultado com god na pos [X: 520] [Y: 462] [Z: 2] Resultado com god na pos [X: 520] [Y: 463] [Z: 4] Como deu para ver pelas SSs, a diferença entre colocar o Z e não colocar, é que ele também verificará o andar. Abaixo segue o code da function: function emarea(cid,frompos,topos) if frompos.x <= getThingPos(cid).x and topos.x >= getThingPos(cid).x and frompos.y <= getThingPos(cid).y and topos.y >= getThingPos(cid).y then if frompos.z and topos.z then if frompos.z >= getThingPos(cid).z and topos.z <= getThingPos(cid).z then return TRUE end else return TRUE end end return FALSE end Link para o comentário Compartilhar em outros sites More sharing options...
Kydrai 146 Postado Março 14, 2010 Share Postado Março 14, 2010 Existe uma função parecida, isInRange ou isInArea. function isInRange(pos, fromPos, toPos) return (pos.x >= fromPos.x and pos.y >= fromPos.y and pos.z >= fromPos.z and pos.x <= toPos.x and pos.y <= toPos.y and pos.z <= toPos.z) end Acho que seria bom se criassem uma área para funções e sistemas. Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Março 15, 2010 Share Postado Março 15, 2010 na realidade existe varias funções idênticas. Link para o comentário Compartilhar em outros sites More sharing options...
Antharaz 93 Postado Março 15, 2010 Autor Share Postado Março 15, 2010 Na verdade, as funções citadas exigem a coordenad z, que no meu é opcional. Mas enfim, vi que existem funções deste mesmo tipo. Obrigado a todos que postaram =D Link para o comentário Compartilhar em outros sites More sharing options...
CarlosPain 9 Postado Maio 15, 2010 Share Postado Maio 15, 2010 Bacana.. vou mover para uma área que se encaixe! Obrigado! Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados