Poderia exemplificar, por favor?
- Fórum
- OTServ
- Suporte
- Resolvidos
- [Resolvido] [PDA]Checar pokemon vivo
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Quero assim, ao der use em uma alavanca no chão, quero que cheque se de 11, 10 até 20, 22 tem um Mewtwo Vivo.
Esses números - "10, 11" e "20, 22" - são o quê? Coordenadas? Ou é um raio de SQMs desde a posição central? Por exemplo, verificar se numa área de dimensões 10x20 encontra-se algum monstro chamado "Mewtwo"?
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Cordenadas. Posições do mapa, não é relativo a nada.
Você pode usar uma função disponível inclusive aqui no fórum, getMonstersInArea. Lendo o código, é possível concluir que retorna uma tabela. Então, basta verificar se nesta tabela encontra-se algum valor chamado "Mewtwo" (claro, você terá que fazer algumas alterações na função, para ao invés de insertar na tabela o ID do monstro, seu nome).
Eu, por exemplo, uso este seguinte código:
function getMonstersInArea(area1, area2)
local monsters = {}
for x = area1.x, area2.x do
for y = area1.y, area2.y do
for z = area1.z, area2.z do
monsterpos = {x=x,y=y,z=z,stackpos=253}
monster = getThingFromPos(monsterpos)
if isMonster(monster.uid) then
table.insert(monsters, monster.uid)
end
end
end
end
return monsters
end
Editado Março 26 por zipter98
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Entendi. No caso eu faria assim(depois de botar a function).
EX:
local area1 = {x = 1, y = 2}
local area2 = (x = 4,y = 6}
if getmonsterinarea(area1, area2) == "Mewtwo" then
{script}
end
Edit:
Quais modificaçõs devo fazer? ![]()
Editado Março 26 por gabrielbsales
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

function getMonstersInArea(area1, area2)
local monsters = {}
for x = area1.x, area2.x do
for y = area1.y, area2.y do
for z = area1.z, area2.z do
monsterpos = {x=x,y=y,z=z,stackpos=253}
monster = getThingFromPos(monsterpos)
if isMonster(monster.uid) then
table.insert(monsters, getCreatureName(monster.uid))
end
end
end
end
return monsters
end
local area1 = {x = 1, y = 2}
local area2 = (x = 4,y = 6}
if isInArray(getMonstersInArea(area1, area2), "MewTwo") then
...
end
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Resolvido, rep+ aos dois.
Se puderem, como faço para checar a quantidade de players em uma área?
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

function getPlayersInArea(area1, area2)
local players = {}
for x = area1.x, area2.x do
for y = area1.y, area2.y do
for z = area1.z, area2.z do
local playerpos = {x=x,y=y,z=z,stackpos=253}
local player = getThingFromPos(playerpos)
if isPlayer(player.uid) then
table.insert(players, player.uid)
end
end
end
end
return players
end
local area1 = {x = 1, y = 2}
local area2 = (x = 4,y = 6}
if #getPlayersInArea(area1, area2) > 1 then
...
end
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

Resolvido.
Tópico movido para a seção de dúvidas e pedidos resolvidos.
info
Grupo: Administrador
Registrado: 26/02/07
Posts: 254
Reputação: +205
Gênero: Masculino
Char no Tibia: Frenvius






info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174
Como faço para checar se em um area há um pokemon com tal nome vivo?