Ir para conteúdo
Entre para seguir isso  
Antharaz

function emarea(cid,frompos,topos)

Recommended Posts

Antharaz    4
Antharaz

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]

 

 

img1v.png

 

 

Resultado com god na pos [X: 520] [Y: 463] [Z: 4]

 

 

img2x.png

 

 

 

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]

 

 

img3k.png

 

 

Resultado com god na pos [X: 520] [Y: 463] [Z: 4]

 

 

img4ob.png

 

 

 

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

Editado por Antharaz

Compartilhar este post


Link para o post
Flatronez    1
Flatronez

É parecido com o isInRange, mas tem algo a mais =]

 

aprovadog.png

OBS: Eu tinha reprovado antes pela semelhança com o outro comando, nem tinha percebido que no outro o Z era obrigatório.

Editado por Flatronez
Tem algo a mais =]

Compartilhar este post


Link para o post
Mock    32
Mock

Tem uma parecida com essa so que menor '-'

isInArea(pos1,pos2,check)

forma um cubo com pos1 e pos2

e o check é a posição ele retorna true se tiver dentro do cubo e false se river fora

ele pega pela pos direto e nao pelo id

 

Desculpe mais sua funçao esta muia ruinzinha '-'

Compartilhar este post


Link para o post
Antharaz    4
Antharaz

@Mock

 

ok...

 

vlw por informar isto...

 

xD

 

Eu improvisei pois não sabia da existência de outras funções... enfim...

 

faz parte :B

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×