[Função] Playerinarea

gledsonrt
em Mods, funções e outros

gledsonrt

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/05/08Posts: 7

Olá galera!

 

Esta é uma função usada no meu OTServ, e vim disponibilizá-la para vocês.

Ela serve para checar se há algum jogador dentro de uma determinada área.

Muito útil em quests como anihilator e svargrond arena!

 

function checkArea(fromx, fromy, fromz, tox, toy, toz)
  for x=fromx, tox do
 	 for y=fromy, toy do
 	 	 for z=fromz, toz do
 	 	 	 position = {x=x, y=y, z=z, stackpos = 253}
 	 	 	 creature = getThingfromPos(position)
 	 	 	 if (isPlayer(creature.uid) == TRUE) then
 	 	 	 	 return true
 	 	 	 end
 	 	 end
 	 end
 end
 return false
end

 

Basicamente, caso ela encontre algum jogador, retornará 1, caso contrário, 0.

Basta adiciona-la ao arquivo "functions.lua"!

Para usá-la, escolha 2 posições:

fromx, fromy e fromz deve ser o canto esquerdo superior.
tox, toy e toz deve ser o canto direito inferior.

Espero que gostem!

 

KaulOTServ:GOD

Gledsonrt

Kaul OTServ - 7.6 Global10x

Register now!

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

Mas já não existe a função 'isInRange' para esse tipo de coisa?

bossisg.png

gledsonrt

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/05/08Posts: 7

A vantagem é que para esta você pode trocar a parte:

 

if (isPlayer(creature.uid) == TRUE) then
   return true
end

 

Para qualquer função que você necessite: encontrar um item, um monstro, até mesmo contar quantos players existem na área.

Kaul OTServ - 7.6 Global10x

Register now!

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

Eu uso essa que é bem simples:

function getPlayerInArea(fromPos, toPos) -- by jhon992
local online = getPlayersOnline()
local players = {}
for i=1, #online do
   if isInArea(getPlayerPosition(online[i]), fromPos, toPos) then
       players[#players+1] = online[i]
   end
end
return players
end

gledsonrt

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 03/05/08Posts: 7

Também funciona, mas novamente, a sua está limitada a players, e necessita da função isInArea.

A minha é basicamente a função isInArea, mas pode ser utilizada para qualquer propósito...

Kaul OTServ - 7.6 Global10x

Register now!

Demonbholder

avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 13/10/08Posts: 1551Char no Tibia: Demonbholder

O modo como o john usa para verificar se uma posição está dentro da outra é infinitamente superior a passar um loop por tudo e verificar se o player está lá.

Oie :D