Ir para conteúdo
  • 0

[Ajuda] Checka se há player no local.


gonorreiaswat

Pergunta

Boa tarde galera do Xtibia, cá estou novamente solicitando ajuda.

 

O que acontece é o seguinte, quebrei a cabeça tentando resolver, mas realmente achei que seria melhor postar pois as pessoas daqui estão mais qualificadas a me ajudar e assim eu não perco tanto tempo em apenas um parte de um script, digamos que, bobo.

 

Ao script:

Seria uma verificação se há player em determinada área e funcionará assim...

Se não houver player nesta área (pode ter monstro, só não pode player) então, será executada a criação de um ITEM no chão.
E caso haja player, será agendada uma nova verificação, sucessivamente, até não haver nenhum player na área para então criar o item no chão.

 

O script havia ficado assim, mas estou encontrando problemas (Resumo do script):

 

local pos = {x = 855, y = 980, z = 7}
local reativar = 10 -- em segundos
local check = 4 -- em segundos
local from = {x = 860, y = 978, z = 7}
local to = {x = 865, y = 982, z = 7}
 
            function ReAtive() -- linha 38 de erro do Launcher
    if #getSpectatorsFromArea(from, to) >= 1 then -- linha 39 de erro do Launcher
        doBroadcastMessage("Temos intrusos e o item nao foi criado!")
        addEvent(ReAtive, check * 1000)
    else
        doCreateItem(corpse, 1, pos)
        doBroadcastMessage("Item adicionado com sucesso!")
  end
end

 

Com o script desta maneira, está ocorrendo o seguinte, se houver um monstro no local, ele da a mensagem de "Intrusos" normalmente, como programado.

Só que se eu remover o monstro do local, da esta mensagem no launcher quando executa a verificação, na hora de criar o item:

 

[07/04/2014 11:59:33] [Error - MoveEvents Interface]
[07/04/2014 11:59:33] In a timer event called from:
[07/04/2014 11:59:33] data/movements/scripts/ResidentEvil/zombie.lua:onStepIn
[07/04/2014 11:59:33] Description:
[07/04/2014 11:59:33] data/movements/scripts/ResidentEvil/zombie.lua:39: attempt to get length of a nil value
[07/04/2014 11:59:33] stack traceback:
[07/04/2014 11:59:33] data/movements/scripts/ResidentEvil/zombie.lua:39: in function <data/movements/scripts/ResidentEvil/zombie.lua:38>

 

Eu sei que não era para identificar o monstro como player no script, mas estava tentando resolver este problema primeiro.

Se alguém puder me ajudar, ficaria muito grato.

 

Lembrando: Não pode haver player no local, monstros serão ignorados.

 

Aguardo ajuda.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

talvez assim?

 

local function ReAtive()
   local players = getPlayersOnline()
   for _, player in ipairs(players) do
      if isInRange(getThingPos(player), from, to) then
         doBroadcastMessage("Temos intrusos e o item nao foi criado!")
         addEvent(ReAtive, check * 1000)
         return
      end
   end
   doCreateItem(corpse, 1, pos)
   doBroadcastMessage("Item adicionado com sucesso!")
end
Link para o comentário
Compartilhar em outros sites

  • 0

Me diz uma coisa...

tem que por "local function ReAtive()" ou só deixar o function ReAtive() e adiciona o restante?

 

Deu este erro:

 

 

[07/04/2014 12:53:10] [Error - MoveEvents Interface]
[07/04/2014 12:53:10] In a timer event called from:
[07/04/2014 12:53:10] data/movements/scripts/ResidentEvil/zombie.lua:onStepIn
[07/04/2014 12:53:10] Description:
[07/04/2014 12:53:10] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)
[07/04/2014 12:53:10] stack traceback:
[07/04/2014 12:53:10] data/lib/032-position.lua:2: in function 'isInRange'
[07/04/2014 12:53:10] data/movements/scripts/ResidentEvil/zombie.lua:41: in function <data/movements/scripts/ResidentEvil/zombie.lua:38>

 

--EDIT'

 

RESOLVIDO.

Pode fechar.

Editado por Adriano Swatt
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...