GA

[Resolvido] [PDA]Checar pokemon vivo

Por gabrielbsales, 25 de mar. de 2014 em Resolvidos

resolvido
13
2.5k
gabrielbsalesG
25 de março de 2014 às 14:49

Como faço para checar se em um area há um pokemon com tal nome vivo?

zipter98Z
26 de março de 2014 às 12:54

Poderia exemplificar, por favor?

gabrielbsalesG
26 de março de 2014 às 14:10

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.

zipter98Z
26 de março de 2014 às 17:21

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"?

gabrielbsalesG
26 de março de 2014 às 17:47

Cordenadas. Posições do mapa, não é relativo a nada.

zipter98Z
26 de março de 2014 às 18:28

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

gabrielbsalesG
26 de março de 2014 às 20:40

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

SlicerS
26 de março de 2014 às 22:18

 

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
gabrielbsalesG
26 de março de 2014 às 22:23

Resolvido, rep+ aos dois.

Se puderem, como faço para checar a quantidade de players em uma área?

SlicerS
27 de março de 2014 às 16:45
Melhor resposta

 

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
gabrielbsalesG
27 de março de 2014 às 23:18

Resolvido.

zipter98Z
28 de março de 2014 às 14:07

Tópico movido para a seção de dúvidas e pedidos resolvidos.

3 anos depois...
FrenviusF
29 de novembro de 2017 às 14:22
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.