Ir para conteúdo
  • Cadastre-se

(Resolvido)Não ficar na area por mais de 5 segundos


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Olá,

Gostaria de pedir a ajudar de vocês para criar um script que o player só possa ficar na área por 5 segundos, após os 5 segundos e teletransportado para fora, e que so possa ter 1 player por vez dentro da área.

 

Usando o script do @pablobion coloquei ele como Function onUse, agora so preciso que coloque o tempo máximo de permanência.

E a linha que assim que abrir o bau (no caso do boxevent) ele parar a contagem [já tenho o script do boxevento, só me falar a linha pra adicionar pra quando abrir o box a contagem encerrar.].



 

local c = {
        limit = 1, -- Limite de jogadores
        msgCancel = 'Ainda tem gente la dentro', -- Mensagem quando o limite de jogadores estiver atingido


        area = {
          From = {x = 1826, y = 1834, z = 7}, -- Coordenada maxima superior esquerda
          To = {x = 1832, y = 1840, z = 7}, -- Coordenada minima inferior direita
        },


        pos = {x = 1825, y = 1837, z = 7}, -- Coordenada onde será teletransportado
        pos1 = {x = 1834, y = 1837, z = 7}, -- Coordenada onde será teletransportado
    }


 local function getPlayersInArea(fromPos, toPos)
      local t = {}


        for _, cid in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(cid), fromPos, toPos) then
                table.insert(t, cid)
            end
        end


      return t
    end


function onUse(cid, item, fromPos, itemEx, toPos)
        if isPlayer(cid) then


            if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then
                doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
                doTeleportThing(cid, c.pos)
                doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)


             else
               doPlayerSendCancel(cid, c.msgCancel)
            end
    end


      return true
    end

show.thumb.png.bd59dabf6c84f9c408b3caa969ca52c6.png

Editado por tetheuscunha (veja o histórico de edições)

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

tenho um aqui, que é um movement onde coloca a area e quantos jogadores pode entrar....

coloca a actionid do movement em um tp e é sucesso

vai te ajudar. e sobre os 5 segudos é so estudar mais sobre addevent que você consegue ^^


edit:

com o addevent você pode botar pra dar um teleport no players depois de 5 segundos... o problema é que nao tem como parar o addevent... mas se ele ja pegou o bau... sorte a dele ^^ @tetheuscunha
 

Spoiler

local c = {
        limit = 1, -- Limite de jogadores
        msgCancel = 'Tp bloqueado. Maximo de jogadores atingido', -- Mensagem quando o limite de jogadores estiver atingido

        area = {
          From = {x = 1108, y = 1080, z = 8}, -- Coordenada maxima superior esquerda
          To = {x = 1119, y = 1093, z = 8}, -- Coordenada minima inferior direita
        },

        pos = {x = 1118, y = 1087, z = 8}, -- Coordenada onde será teletransportado
    }

 local function getPlayersInArea(fromPos, toPos)
      local t = {}

        for _, cid in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(cid), fromPos, toPos) then
                table.insert(t, cid)
            end
        end

      return t
    end

    function onStepIn(cid, item, fromPos, toPos)
        if isPlayer(cid) then

            if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then
                doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
                doTeleportThing(cid, c.pos)
                doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)

             else
               doPlayerSendCancel(cid, c.msgCancel)
               doTeleportThing(cid, toPos, false)
            end
        end

      return true
    end

 



 

 

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Link para o post
Compartilhar em outros sites

Mas depois que clicar neste seu "boxevent" o que acontece? ele é teleportado da sala? porque se ele clicar neste box, poderá ficar na área por tempo indeterminado?

 

porque se fosse o caso você poderia usar neste script essas linhas

 

local function DoKickPlayerFromArea(cid)
local exit = {x = 154, y = 160, z = 7}
if not isCreature(cid) then return LUA_ERROR end
	if getPlayerStorageValue(cid, 209308) <= 0 then
		doTeleportThing(cid, exit)
	end
	return true
end 

addEvent(DoKickPlayerFromArea, 5000, cid)


-- e no script do box vc adicionaria esta linha por exemplo 

setPlayerStorageValue(cid, 209308, 1)

 

enfim, só um esboço... não entendi muito bem esse evento.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, Vodkart disse:

Mas depois que clicar neste seu "boxevent" o que acontece? ele é teleportado da sala? porque se ele clicar neste box, poderá ficar na área por tempo indeterminado?

 

porque se fosse o caso você poderia usar neste script essas linhas

 


local function DoKickPlayerFromArea(cid)
local exit = {x = 154, y = 160, z = 7}
if not isCreature(cid) then return LUA_ERROR end
	if getPlayerStorageValue(cid, 209308) <= 0 then
		doTeleportThing(cid, exit)
	end
	return true
end 

addEvent(DoKickPlayerFromArea, 5000, cid)


-- e no script do box vc adicionaria esta linha por exemplo 

setPlayerStorageValue(cid, 209308, 1)

 

enfim, só um esboço... não entendi muito bem esse evento.

 

Faltou definir para voltar a Storage para -1 após a saída.

Editado por vankk (veja o histórico de edições)

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Link para o post
Compartilhar em outros sites
2 horas atrás, vankk disse:

Faltou definir para voltar a Storage para -1 após a saída.

 

Sim, justamente por isso que perguntei qual seria a ideia dele, ou poderia colocar a storage -1 para qndo entrasse na sala, etc...

 

É esboço;

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart ao der USE no boxevent ele removido da sala.

 

Exemplo do evento 

 

Editado por tetheuscunha (veja o histórico de edições)

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites
local c = {
        limit = 1, -- Limite de jogadores
        msgCancel = 'Ainda tem gente la dentro', -- Mensagem quando o limite de jogadores estiver atingido 
        area = {
          From = {x = 1826, y = 1834, z = 7}, -- Coordenada maxima superior esquerda
          To = {x = 1832, y = 1840, z = 7}, -- Coordenada minima inferior direita
        }, 
        pos = {x = 1825, y = 1837, z = 7}, -- Coordenada onde será teletransportado
        pos1 = {x = 1834, y = 1837, z = 7}, -- Coordenada onde será teletransportado
    } 
 local function getPlayersInArea(fromPos, toPos)
      local t = {} 
        for _, cid in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(cid), fromPos, toPos) then
                table.insert(t, cid)
            end
        end 
      return t
    end 
local function DoKickPlayerFromArea(cid)
local exit = {x = 154, y = 160, z = 7} -- defina para onde ele vai
if not isCreature(cid) then return LUA_ERROR end
	 if isInRange(getThingPos(cid), c.area.From, c.area.To) then
		doTeleportThing(cid, exit)
	end
	return true
end
function onUse(cid, item, fromPos, itemEx, toPos)
            if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then
                doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
                doTeleportThing(cid, c.pos)
				addEvent(DoKickPlayerFromArea, 5000, cid)
                doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) 
             else
               doPlayerSendCancel(cid, c.msgCancel)
            end
      return true
    end 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
11 horas atrás, Vodkart disse:

local c = {
        limit = 1, -- Limite de jogadores
        msgCancel = 'Ainda tem gente la dentro', -- Mensagem quando o limite de jogadores estiver atingido 
        area = {
          From = {x = 1826, y = 1834, z = 7}, -- Coordenada maxima superior esquerda
          To = {x = 1832, y = 1840, z = 7}, -- Coordenada minima inferior direita
        }, 
        pos = {x = 1825, y = 1837, z = 7}, -- Coordenada onde será teletransportado
        pos1 = {x = 1834, y = 1837, z = 7}, -- Coordenada onde será teletransportado
    } 
 local function getPlayersInArea(fromPos, toPos)
      local t = {} 
        for _, cid in ipairs(getPlayersOnline()) do
            if isInRange(getThingPos(cid), fromPos, toPos) then
                table.insert(t, cid)
            end
        end 
      return t
    end 
local function DoKickPlayerFromArea(cid)
local exit = {x = 154, y = 160, z = 7} -- defina para onde ele vai
if not isCreature(cid) then return LUA_ERROR end
	 if isInRange(getThingPos(cid), c.area.From, c.area.To) then
		doTeleportThing(cid, exit)
	end
	return true
end
function onUse(cid, item, fromPos, itemEx, toPos)
            if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then
                doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
                doTeleportThing(cid, c.pos)
				addEvent(DoKickPlayerFromArea, 5000, cid)
                doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) 
             else
               doPlayerSendCancel(cid, c.msgCancel)
            end
      return true
    end 

 

 

Deu Certo @Vodkart. Como coloco pra ficar contagem regressiva?? E qual linha eu coloco no script do BOX pra quando da use no box ele remover o tempo? Porque assim que da use no box ele e retirado da sala

Editado por tetheuscunha (veja o histórico de edições)

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites
11 horas atrás, tetheuscunha disse:

Deu Certo @Vodkart. Como coloco pra ficar contagem regressiva?? E qual linha eu coloco no script do BOX pra quando da use no box ele remover o tempo? Porque assim que da use no box ele e retirado da sala

 

 

nesse caso não precisa colocar nada na linha da box, porque o script vai checar se ele está dentro da sala ainda... :D

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
14 horas atrás, tetheuscunha disse:

Deu Certo @Vodkart. Como coloco pra ficar contagem regressiva?? E qual linha eu coloco no script do BOX pra quando da use no box ele remover o tempo? Porque assim que da use no box ele e retirado da sala

Eu adicionei um CHECK para que outro jogador não entre na sala antes dos 5seg.

 

-- REMOVIDO --

EDIT: a função do @Vodkart já possui um check!

Editado por KOLISAO (veja o histórico de edições)

 

Link para o post
Compartilhar em outros sites
3 horas atrás, Vodkart disse:

 

nesse caso não precisa colocar nada na linha da box, porque o script vai checar se ele está dentro da sala ainda... ?

 

Ah ok, e como coloco pra ficar saindo 5 4 3 2 1 do player??? Pra ele saber que tem tempo pra ficar la dentro!

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites
  • Solução
3 horas atrás, tetheuscunha disse:

Ah ok, e como coloco pra ficar saindo 5 4 3 2 1 do player??? Pra ele saber que tem tempo pra ficar la dentro!

 

local c = {
  limit = 1, -- Limite de jogadores
  msgCancel = 'Ainda tem gente la dentro', -- Mensagem quando o limite de jogadores estiver atingido
  area = {
    From = {x = 1826, y = 1834, z = 7}, -- Coordenada maxima superior esquerda
    To = {x = 1832, y = 1840, z = 7}, -- Coordenada minima inferior direita
  },
  pos = {x = 1825, y = 1837, z = 7}, -- Coordenada onde será teletransportado
  pos1 = {x = 1834, y = 1837, z = 7}, -- Coordenada onde será teletransportado
}
local function getPlayersInArea(fromPos, toPos)
  local t = {}
  for _, cid in ipairs(getPlayersOnline()) do
    if isInRange(getThingPos(cid), fromPos, toPos) then
      table.insert(t, cid)
    end
  end
  return t
end
local function DoKickPlayerFromArea(cid, delay)
  local exit = {x = 154, y = 160, z = 7} -- defina para onde ele vai
  if not isCreature(cid) or not isInRange(getThingPos(cid), c.area.From, c.area.To) then
    return LUA_ERROR
  end
  if delay > 0 then
    doSendAnimatedText(getThingPos(cid), delay, 145)
    addEvent(DoKickPlayerFromArea, 1000, cid, delay-1)
  else
    doTeleportThing(cid, exit)
  end
  return true
end
function onUse(cid, item, fromPos, itemEx, toPos)
  if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then
    doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
    doTeleportThing(cid, c.pos)
    DoKickPlayerFromArea(cid, 5)
    doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
  else
    doPlayerSendCancel(cid, c.msgCancel)
  end
  return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
1 hora atrás, Vodkart disse:

local c = {
  limit = 1, -- Limite de jogadores
  msgCancel = 'Ainda tem gente la dentro', -- Mensagem quando o limite de jogadores estiver atingido
  area = {
    From = {x = 1826, y = 1834, z = 7}, -- Coordenada maxima superior esquerda
    To = {x = 1832, y = 1840, z = 7}, -- Coordenada minima inferior direita
  },
  pos = {x = 1825, y = 1837, z = 7}, -- Coordenada onde será teletransportado
  pos1 = {x = 1834, y = 1837, z = 7}, -- Coordenada onde será teletransportado
}
local function getPlayersInArea(fromPos, toPos)
  local t = {}
  for _, cid in ipairs(getPlayersOnline()) do
    if isInRange(getThingPos(cid), fromPos, toPos) then
      table.insert(t, cid)
    end
  end
  return t
end
local function DoKickPlayerFromArea(cid, delay)
  local exit = {x = 154, y = 160, z = 7} -- defina para onde ele vai
  if not isCreature(cid) or not isInRange(getThingPos(cid), c.area.From, c.area.To) then
    return LUA_ERROR
  end
  if delay > 0 then
    doSendAnimatedText(getThingPos(cid), delay, 145)
    addEvent(DoKickPlayerFromArea, 1000, cid, delay-1)
  else
    doTeleportThing(cid, exit)
  end
  return true
end
function onUse(cid, item, fromPos, itemEx, toPos)
  if table.getn(getPlayersInArea(c.area.From, c.area.To)) < c.limit then
    doSendMagicEffect(fromPos, CONST_ME_TELEPORT)
    doTeleportThing(cid, c.pos)
    DoKickPlayerFromArea(cid, 5)
    doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
  else
    doPlayerSendCancel(cid, c.msgCancel)
  end
  return true
end

 

 

Muito obrigado @Vodkart, te amo cara. <3

Senhoras e senhores, se alguma resposta lhe ajudou, marque-a como a melhor resposta e de ponto positivo, assim você incentiva quem lhe ajudou a continuar ajudando!!.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo