Ir para conteúdo
  • 0

colocar tempo e...


FelipeXT

Pergunta

Fala pessoal!

queria uma ajuda pra modificar esse script, eu queria colocar um tempo de 24 hrs de cooldown para os players que entrarem na quest poderem faze-la dnv, e colocar pra ser no minimo de 1 a 5 players a serem teleportados!

 

tentei fazer fazer aqui mas não deu muito certo ;[

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

14 respostass a esta questão

Posts Recomendados

  • 0
Em 15/03/2020 em 23:15, FelipeXT disse:
Versão do Servidor: TFS - 0.4
Tipo de Script: actions
Código:
  Ocultar conteúdo


--[[> Annihilator script by Marcryzius D'evil <]]--


local pos_demons,pos_players,tele_players,exit_players = {

  -- posições onde serão sumonados os monstros na annihilator
  {x = 33426, y = 32793, z = 8,stackpos=253}

},{

  --posições onde estão os players antes de irem a sala da annihi
  {x = 33420, y = 32796, z = 6,stackpos=253},
  {x = 33421, y = 32796, z = 6,stackpos=253},
  {x = 33422, y = 32796, z = 6,stackpos=253},
  {x = 33423, y = 32796, z = 6,stackpos=253},
  {x = 33424, y = 32796, z = 6,stackpos=253},

},{

  --posições onde serão teleportados os players para a sala da annihi
  {x = 33419, y = 32793, z = 8,stackpos=253},
  {x = 33420, y = 32793, z = 8,stackpos=253},
  {x = 33421, y = 32793, z = 8,stackpos=253},
  {x = 33422, y = 32793, z = 8,stackpos=253},
  {x = 33423, y = 32793, z = 8,stackpos=253},

}, {x = 33421, y = 32794, z = 6} -- posição de saida


local level,time_annihi = 10,20

QUANT = time_annihi -- não mecha
RELOAD_ANNIHI = 0 -- não mecha

--== FUNÇÕES NECESSARIAS ==--
local function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers) --Marcryzius
    local creaturesList = {}

    for x = -radiusx, radiusx do
        for y = -radiusy, radiusy do
        local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE})
            if (creature.type == 1 and showPlayers == true) or (creature.type == 2 and showMonsters == true) then
                table.insert(creaturesList, creature.uid)
            end
        end
    end
    return creaturesList
end


local function repeatTxtInPos(alavanca_pos,cor)
  local pos = tele_players[3]

   if(QUANT > 0)then
      QUANT = QUANT-1

      doSendAnimatedText(alavanca_pos,QUANT,cor)
      doSendAnimatedText({x=pos.x-10,y=pos.y-10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x-10,y=pos.y+10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x+10,y=pos.y+10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x+10,y=pos.y-10,z=pos.z},QUANT,cor)
      addEvent(repeatTxtInPos,1000,alavanca_pos,cor)

   else
      QUANT = time_annihi
      stopEvent(RELOAD_ANNIHI)
      RELOAD_ANNIHI = 0
   end
end


local function reloadAnnihi()
  local players = getCreaturesInRange(tele_players[3], 6, 6, true, true)
  for _,cid in pairs(players) do
      if(isPlayer(cid) == true)then
         doTeleportThing(cid,exit_players, false)
         doPlayerSendCancel(cid,"Voce não conseguiu completar a annihi e por isso foi retirado dela... NOOB!")

      elseif(isMonster(cid))then
         doRemoveCreature(cid)
      end
   end
end


--== FUNÇÕES NECESSARIAS ==--
function onUse(cid, item, fPos, itemEx, toPosition)
   if(item.itemid == 1946)then
      for _,pos in pairs(pos_players) do
         local player = getThingFromPos(pos)
         if not(isPlayer(player.uid))then
            return true,doPlayerSendCancel(cid,"voce precisa de "..#pos_players.." pessoas para poder entrar na sala.")
         elseif(getPlayerLevel(player.uid) < level)then
            return true,doPlayerSendCancel(cid,"Todos necessitam ter level "..level.." ou mais.")
         end
      end

      local getMonsterInAnnihi = getCreaturesInRange(tele_players[3], 5, 5, true)

      for k,pos  in pairs(pos_demons) do
         if(k <= #pos_players)then
         local player = getThingFromPos(pos_players[k])
            if(player.uid ~= nil)then
               doTeleportThing(player.uid,tele_players[k], false)
            end
         end

         if(#getMonsterInAnnihi > 0)then
            reloadAnnihi()
         end
        doSummonCreature("Rat", pos) -- Nome do monstro
      end

      if(QUANT == time_annihi)then
         repeatTxtInPos(fPos,time_annihi,0)
         RELOAD_ANNIHI = addEvent(reloadAnnihi,time_annihi*1000)
      end

   elseif(item.itemid == 1945)then
      if(#getCreaturesInRange(tele_players[3], 6, 6, false, true) > 0)then
         return true,doPlayerSendCancel(cid,"Espere o time acabar de fazer a annihilator quest.")
      end
   end
end

Fala pessoal!

queria uma ajuda pra modificar esse script, eu queria colocar um tempo de 24 hrs de cooldown para os players que entrarem na quest poderem faze-la dnv, e colocar pra ser no minimo de 1 a 5 players a serem teleportados!

 

tentei fazer fazer aqui mas não deu muito certo ;[

O que não deu certo no seu script? Qual foi o erro? 

 

Está funcionando para os 5 jogadores?

 

Seu server tem alguma função de converter segundos para horas?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 15/03/2020 em 23:15, FelipeXT disse:
Versão do Servidor: TFS - 0.4
Tipo de Script: actions
Código:
  Mostrar conteúdo oculto


--[[> Annihilator script by Marcryzius D'evil <]]--


local pos_demons,pos_players,tele_players,exit_players = {

  -- posições onde serão sumonados os monstros na annihilator
  {x = 33426, y = 32793, z = 8,stackpos=253}

},{

  --posições onde estão os players antes de irem a sala da annihi
  {x = 33420, y = 32796, z = 6,stackpos=253},
  {x = 33421, y = 32796, z = 6,stackpos=253},
  {x = 33422, y = 32796, z = 6,stackpos=253},
  {x = 33423, y = 32796, z = 6,stackpos=253},
  {x = 33424, y = 32796, z = 6,stackpos=253},

},{

  --posições onde serão teleportados os players para a sala da annihi
  {x = 33419, y = 32793, z = 8,stackpos=253},
  {x = 33420, y = 32793, z = 8,stackpos=253},
  {x = 33421, y = 32793, z = 8,stackpos=253},
  {x = 33422, y = 32793, z = 8,stackpos=253},
  {x = 33423, y = 32793, z = 8,stackpos=253},

}, {x = 33421, y = 32794, z = 6} -- posição de saida


local level,time_annihi = 10,20

QUANT = time_annihi -- não mecha
RELOAD_ANNIHI = 0 -- não mecha

--== FUNÇÕES NECESSARIAS ==--
local function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers) --Marcryzius
    local creaturesList = {}

    for x = -radiusx, radiusx do
        for y = -radiusy, radiusy do
        local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE})
            if (creature.type == 1 and showPlayers == true) or (creature.type == 2 and showMonsters == true) then
                table.insert(creaturesList, creature.uid)
            end
        end
    end
    return creaturesList
end


local function repeatTxtInPos(alavanca_pos,cor)
  local pos = tele_players[3]

   if(QUANT > 0)then
      QUANT = QUANT-1

      doSendAnimatedText(alavanca_pos,QUANT,cor)
      doSendAnimatedText({x=pos.x-10,y=pos.y-10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x-10,y=pos.y+10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x+10,y=pos.y+10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x+10,y=pos.y-10,z=pos.z},QUANT,cor)
      addEvent(repeatTxtInPos,1000,alavanca_pos,cor)

   else
      QUANT = time_annihi
      stopEvent(RELOAD_ANNIHI)
      RELOAD_ANNIHI = 0
   end
end


local function reloadAnnihi()
  local players = getCreaturesInRange(tele_players[3], 6, 6, true, true)
  for _,cid in pairs(players) do
      if(isPlayer(cid) == true)then
         doTeleportThing(cid,exit_players, false)
         doPlayerSendCancel(cid,"Voce não conseguiu completar a annihi e por isso foi retirado dela... NOOB!")

      elseif(isMonster(cid))then
         doRemoveCreature(cid)
      end
   end
end


--== FUNÇÕES NECESSARIAS ==--
function onUse(cid, item, fPos, itemEx, toPosition)
   if(item.itemid == 1946)then
      for _,pos in pairs(pos_players) do
         local player = getThingFromPos(pos)
         if not(isPlayer(player.uid))then
            return true,doPlayerSendCancel(cid,"voce precisa de "..#pos_players.." pessoas para poder entrar na sala.")
         elseif(getPlayerLevel(player.uid) < level)then
            return true,doPlayerSendCancel(cid,"Todos necessitam ter level "..level.." ou mais.")
         end
      end

      local getMonsterInAnnihi = getCreaturesInRange(tele_players[3], 5, 5, true)

      for k,pos  in pairs(pos_demons) do
         if(k <= #pos_players)then
         local player = getThingFromPos(pos_players[k])
            if(player.uid ~= nil)then
               doTeleportThing(player.uid,tele_players[k], false)
            end
         end

         if(#getMonsterInAnnihi > 0)then
            reloadAnnihi()
         end
        doSummonCreature("Rat", pos) -- Nome do monstro
      end

      if(QUANT == time_annihi)then
         repeatTxtInPos(fPos,time_annihi,0)
         RELOAD_ANNIHI = addEvent(reloadAnnihi,time_annihi*1000)
      end

   elseif(item.itemid == 1945)then
      if(#getCreaturesInRange(tele_players[3], 6, 6, false, true) > 0)then
         return true,doPlayerSendCancel(cid,"Espere o time acabar de fazer a annihilator quest.")
      end
   end
end

Fala pessoal!

queria uma ajuda pra modificar esse script, eu queria colocar um tempo de 24 hrs de cooldown para os players que entrarem na quest poderem faze-la dnv, e colocar pra ser no minimo de 1 a 5 players a serem teleportados!

 

tentei fazer fazer aqui mas não deu muito certo ;[

tente usar esse 

 

 

Salve galera demorou mas consegui hoje vou estar trazendo ai para vocês um script bem bacana da quest tipo anihi porém editado por mim espero que gostem ^^ 

 

Atenção!!

O script foi otimizado com uma ajuda do @movie agora esta 100% liso testado em 0.3.6 8.54 ✔️

 

 

Bom vamos ao script

tentei deixar a maior parte das configurações tudo em uma tabela só

 

Funções

Configurar Level para fazer a quest

Configurar a actionid e adicione a uniqueid com o mesmo valor

tempo para fazer a quest

storage para fazer apenas uma vez esta desativado porém para ativar só retirar os comentários

efeitos em determinadas ações esta tudo explicado no script

tem configurado 3 posições ou seja você pode configurar três andares ou três partes diferentes do mapa mantendo como uma mesma quest

fail = posição que o 4 jogadores vão caso não completar a quest a tempo

limit = não mexer (seria a verificação se tiver 1 player dentro da área vai enviar a mensagem que tem gente na quest)

Spoiler

 


local function getAmountPlayersInArea(from, to, from2, to2, from3, to3)
    local t = 0
    for _, pid in pairs(getPlayersOnline()) do
		if isInRange(getCreaturePosition(pid), from, to) or isInRange(getCreaturePosition(pid), from2, to2) or isInRange(getCreaturePosition(pid), from3, to3) then
            t = t + 1
			end
		end
    return t
end

local config = {
	questlevel = 400, -- level para fazer a quest
	actionid = 23930, -- actionid e uniqueid da alavanca
	time = 10, -- tempo limite pra fazer a quest
	storage = 62799, -- storage para fazer a quest apenas uma vez Aviso esta desativado para ativar basta remover os comentários
	efeito = 9, -- efeito quando os jogadores forem teleportados para a quest
	efeito2 = 469, -- efeito quando os jogadores chegarem na quest
	efeito3 = 621, -- efeito que vai mostrar caso tiver alguem na quest
    from = {x = 896, y = 987, z = 8}, -- lado superior esquerdo
    to = {x = 920, y = 1042, z = 8}, -- lado inferior direito
	from2 = {x = 920, y = 1032, z = 8}, -- lado superior esquerdo
    to2 = {x = 935, y = 1043, z = 8}, -- lado inferior direito
	from3 = {x = 921, y = 1026, z = 7}, -- lado superior esquerdo
    to3 = {x = 943, y = 1053, z = 7}, -- lado inferior direito	
	fail = {x = 916, y = 990, z = 7}, -- Posição que os jogadores vão caso o tempo da quest chegar no limite
	limit = 1, -- nao mexer
}

function onUse(cid, item, frompos, item2, topos)

	if getAmountPlayersInArea(config.from, config.to, config.from2, config.to2, config.from3, config.to3) >= config.limit then
        doPlayerPopupFYI(cid, 'Aguarde, tem jogadores desafiando o deidara.') -- Mensagem caso tiver jogadores na quest
			doSendMagicEffect(getThingPos(cid), config.efeito3) return true
				end

    if item.uid == config.actionid then
        if item.itemid == 1945 then
		player1pos = {x=913, y=987, z=7, stackpos=253} -- posição do jogador que vai puxar a alanvaca
			player1 = getThingfromPos(player1pos)

		player2pos = {x=913, y=988, z=7, stackpos=253} -- posição do jogador
			player2 = getThingfromPos(player2pos)

		player3pos = {x=913, y=989, z=7, stackpos=253} -- posição do jogador
			player3 = getThingfromPos(player3pos)

		player4pos = {x=913, y=990, z=7, stackpos=253} -- posição do jogador
			player4 = getThingfromPos(player4pos)


	if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

		player1level = getPlayerLevel(player1.uid)
			player2level = getPlayerLevel(player2.uid)
				player3level = getPlayerLevel(player3.uid)
					player4level = getPlayerLevel(player4.uid)

	if player1level >= config.questlevel and player2level >= config.questlevel and player3level >= config.questlevel and player4level >= config.questlevel then

-- PARA ATIVAR A VERIFICAÇÃO DE STORAGE BASTA REMOVER OS COMENTARIOS --
--queststatus1 = getPlayerStorageValue(player1.uid,config.storage)
--queststatus2 = getPlayerStorageValue(player2.uid,config.storage)
--queststatus3 = getPlayerStorageValue(player3.uid,config.storage)
--queststatus4 = getPlayerStorageValue(player4.uid,config.storage)

--if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then

-- PARA ATIVAR A VERIFICAÇÃO DE STORAGE BASTA REMOVER OS COMENTARIOS --

		local t = {
			monstros =
			{
			{{x = 932, y = 1035, z = 7}, "Deidara Boss"}, -- defina pos dos montros e nomes
			{{x = 930, y = 1037, z = 8}, "C4 Spider Kumo"},
			{{x = 916, y = 1037, z = 8}, "C4 Spider"},
			{{x = 914, y = 1038, z = 8}, "C4 Spider"},
			{{x = 912, y = 1035, z = 8}, "C4 Spider"},
			{{x = 905, y = 1029, z = 8}, "C4 Spider"},
			{{x = 902, y = 1026, z = 8}, "C4 Spider"},
			{{x = 900, y = 1023, z = 8}, "C4 Spider"},
			{{x = 898, y = 1018, z = 8}, "C4 Spider"},
			{{x = 897, y = 1015, z = 8}, "C4 Spider"},
			{{x = 899, y = 1012, z = 8}, "C4 Spider"},
			{{x = 902, y = 1008, z = 8}, "C4 Spider"},
			{{x = 904, y = 1005, z = 8}, "C4 Spider"},
			{{x = 908, y = 1005, z = 8}, "C4 Spider"},
			{{x = 909, y = 1002, z = 8}, "C4 Spider"},
			{{x = 912, y = 1000, z = 8}, "C4 Spider"},
			{{x = 911, y = 997, z = 8}, "C4 Spider"},
			{{x = 913, y = 994, z = 8}, "C4 Spider"}
			}
				}

		nplayer1pos = {x=915, y=990, z=8} -- posição que o jogador vai ser teleportado quando for pra quest
			nplayer2pos = {x=915, y=991, z=8} -- posição que o jogador vai ser teleportado quando for pra quest
				nplayer3pos = {x=915, y=992, z=8} -- posição que o jogador vai ser teleportado quando for pra quest
					nplayer4pos = {x=915, y=993, z=8} -- posição que o jogador vai ser teleportado quando for pra quest


		doSendMagicEffect(player1pos,config.efeito)
			doSendMagicEffect(player2pos,config.efeito)
				doSendMagicEffect(player3pos,config.efeito)
					doSendMagicEffect(player4pos,config.efeito)

		doTeleportThing(player1.uid,nplayer1pos)
			doTeleportThing(player2.uid,nplayer2pos)
				doTeleportThing(player3.uid,nplayer3pos)
					doTeleportThing(player4.uid,nplayer4pos)
						doPlayerPopupFYI(cid,"Boa sorte!\nVoce tem "..config.time.." minutos para terminar a quest.") -- mensagem que vai mandar para o jogador que puxar a alavanca
		
		for _, summon in pairs(t.monstros) do
			doCreateMonster(summon[2], summon[1])
				end

		doSendMagicEffect(nplayer1pos,config.efeito2)
			doSendMagicEffect(nplayer2pos,config.efeito2)
				doSendMagicEffect(nplayer3pos,config.efeito2)
					doSendMagicEffect(nplayer4pos,config.efeito2)

		doTransformItem(item.uid,item.itemid+0)

----------- Verificação remover jogador ------------

	addEvent(function(removerjogador)
		if not isPlayer(cid) then
	return
end
		for index, cid in ipairs(getPlayersOnline()) do
			if isInArea(getThingPos(cid), config.from, config.to, config.from2, config.to2, config.from3, config.to3) then
			doTeleportThing(cid, config.fail)
				doPlayerPopupFYI(cid, 'O tempo se esgotou voce e sua equipe voltou para o ponto inicial.')
			end
		end
	return true
end, config.time*60*1000, cid)

----------- Verificação remover monstro -------------

	addEvent(function (removeMonsterInArea)
			if not isCreature(cid) then
		return
	end
	local positionsCheck = {}
		for i = config.from.x, config.to.x do
		positionsCheck[#positionsCheck+1] = {x=i, y = config.from.y, z = config.from.z, stackpos = 0}
			for j = config.from.y+1, config.to.y do
			positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.from.z, stackpos = 0}
	end
end
		for j=1, #positionsCheck do
			for i = 0, 255 do
		positionsCheck[j].stackpos = i
	local tile = getTileThingByPos(positionsCheck[j])
	if isMonster(tile.uid) then
		doRemoveCreature(tile.uid)
			end
		end
	end
return true
end, config.time*60*1000, cid)

----------- Verificação remover monstro -------------

	addEvent(function (removeMonsterInArea2)
			if not isCreature(cid) then
		return
	end
		local positionsCheck = {}
			for i = config.from2.x, config.to2.x do
			positionsCheck[#positionsCheck+1] = {x=i, y = config.from2.y, z = config.from2.z, stackpos = 0}
				for j = config.from2.y+1, config.to2.y do
				positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.from2.z, stackpos = 0}
			end
		end
			for j=1, #positionsCheck do
			for i = 0, 255 do
				positionsCheck[j].stackpos = i
	local tile = getTileThingByPos(positionsCheck[j])
		if isMonster(tile.uid) then
			doRemoveCreature(tile.uid)
			end
		end
	end
return true
end, config.time*60*1000, cid)

----------- Verificação remover monstro -------------

	addEvent(function (removeMonsterInArea3) -- by Jamison
		if not isCreature(cid) then
	return
end
	local positionsCheck = {}
		for i = config.from3.x, config.to3.x do
		positionsCheck[#positionsCheck+1] = {x=i, y = config.from3.y, z = config.from3.z, stackpos = 0}
			for j = config.from3.y+1, config.to3.y do
			positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.from3.z, stackpos = 0}
			end
		end
	for j=1, #positionsCheck do
		for i = 0, 255 do
			positionsCheck[j].stackpos = i
	local tile = getTileThingByPos(positionsCheck[j])
		if isMonster(tile.uid) then
			doRemoveCreature(tile.uid)
		end
	end
end
return true
end, config.time*60*1000, cid)

----------- Verificação fim da verificação -------------


-- PARA ATIVAR A VERIFICAÇÃO DE STORAGE BASTA REMOVER OS COMENTARIOS --
--else
--doPlayerPopupFYI(cid,"Alguem do seu time já fez essa quest.")
--end
-- PARA ATIVAR A VERIFICAÇÃO DE STORAGE BASTA REMOVER OS COMENTARIOS --
		else
			doPlayerPopupFYI(cid,"Alguem não possui level 400 ou mais.")
		end
		else
			doPlayerPopupFYI(cid,"Voce não possui membros o suficiente.")
		end
		elseif item.itemid == 1946 then
			doTransformItem(item.uid,item.itemid-1)
			end
		return 1
	end
end

 

 

 

 

 

Créditos

@Vodkart (algumas funções)

@Jamison (função de remover monstros)

@Brunds

caso tiver mais alguém só enviar pm que eu coloco os créditos

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

  • 0
10 horas atrás, Yan18 disse:

O que não deu certo no seu script? Qual foi o erro? 

 

Está funcionando para os 5 jogadores?

 

Seu server tem alguma função de converter segundos para horas?

não tem nada errado! eu queria ajuda pra colocar um cooldown de 24 hrs nele pra quem pular na quest ou a completarem, e tbm tirar a necessidade de ter exatamente 5 players para fazer a quest , exemplo: maximo de 5 player mas se tiver 1 ou 2,3,4... faz do mesmo jeito!

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

  • 0
6 horas atrás, LeoTK disse:

Salga galera demorou mas consegui hoje vou estar trazendo ai para vocês um script bem bacana da quest tipo anihi porém editado por mim espero que gostem ^^ 

tem o sistema completo? Se sim, poderia postar em um tópico?

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, FlamesAdmin disse:

tem o sistema completo? Se sim, poderia postar em um tópico?

cara o sistema ta completo....

Link para o comentário
Compartilhar em outros sites

  • 0
2 horas atrás, FelipeXT disse:

não tem nada errado! eu queria ajuda pra colocar um cooldown de 24 hrs nele pra quem pular na quest ou a completarem, e tbm tirar a necessidade de ter exatamente 5 players para fazer a quest , exemplo maximo de 5 player mas se tiver 1 ou 2,3,4... faz do mesmo jeito!

Você disse que tentou mexer e não deu certo, e como não especificou, ficou vago e deu a entender que algo deu errado.

 

Mas deu certo o sistema que o cara te passou ai ou você quer continuar com esse seu script e quer que colocar verificação de 24 horas?

Link para o comentário
Compartilhar em outros sites

  • 0
8 horas atrás, Yan18 disse:

Você disse que tentou mexer e não deu certo, e como não especificou, ficou vago e deu a entender que algo deu errado.

 

Mas deu certo o sistema que o cara te passou ai ou você quer continuar com esse seu script e quer que colocar verificação de 24 horas?

Vou continuar com o meu Scripts, o do cara e basicamente o mesmo

Link para o comentário
Compartilhar em outros sites

  • 0
18 minutos atrás, FelipeXT disse:

Vou continuar com o meu Scripts, o do cara e basicamente o mesmo

negativo o meu tem a verificação de storage tu só precisa add um os.time pra ele funcionar pra fazer a cada 24horas...

Link para o comentário
Compartilhar em outros sites

  • 0
Em 19/03/2020 em 07:23, LeoTK disse:

negativo o meu tem a verificação de storage tu só precisa add um os.time pra ele funcionar pra fazer a cada 24horas...

tem como remover a restrição de ter exatamente 4 players pra quest no seu script?

exemplo: máximo de 4 players, mas se tiver 1 ou 2,3... faz do mesmo jeito!

Link para o comentário
Compartilhar em outros sites

  • 0
3 minutos atrás, FelipeXT disse:

tem como remover a restrição de ter exatamente 4 players pra quest no seu script?

exemplo: máximo de 4 players, mas se tiver 1 ou 2,3... faz do mesmo jeito!

tenta modificar essa linha

if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

deixando assim

if player1.itemid > 0 or player2.itemid > 0 or player3.itemid > 0 or player4.itemid > 0 then

se não funcionar vai ter que modificar e provavelmente usar um for pra criar uma verificação em tabela pra poder verificar se tem apenas 1 player ou 4 players.... ai é mais complicado

 

Link para o comentário
Compartilhar em outros sites

  • 0
4 minutos atrás, LeoTK disse:

tenta modificar essa linha


if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

deixando assim


if player1.itemid > 0 or player2.itemid > 0 or player3.itemid > 0 or player4.itemid > 0 then

se não funcionar vai ter que modificar e provavelmente usar um for pra criar uma verificação em tabela pra poder verificar se tem apenas 1 player ou 4 players.... ai é mais complicado

 

não funcionou ;[ mas vlw pela ajuda!

image.png.a07090ae69899ba8b43525f86a86a53a.png

Link para o comentário
Compartilhar em outros sites

  • 0
Em 21/03/2020 em 10:31, LeoTK disse:

tenta modificar essa linha


if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

deixando assim


if player1.itemid > 0 or player2.itemid > 0 or player3.itemid > 0 or player4.itemid > 0 then

se não funcionar vai ter que modificar e provavelmente usar um for pra criar uma verificação em tabela pra poder verificar se tem apenas 1 player ou 4 players.... ai é mais complicado

 

Eu gostei dessa script pra usar na quest, porém teria como se nao for player, for monstro no sqm, tambem reconhecer como sqm preenchido?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 18/03/2020 em 19:39, FelipeXT disse:

não tem nada errado! eu queria ajuda pra colocar um cooldown de 24 hrs nele pra quem pular na quest ou a completarem, e tbm tirar a necessidade de ter exatamente 5 players para fazer a quest , exemplo: maximo de 5 player mas se tiver 1 ou 2,3,4... faz do mesmo jeito!

Arrumei o seu script e coloquei tempo para refazer a quest caso ele complete ou seja removido de acordo com uma função reloadAnnihi. Substitua o código por esse:

 

--[[> Annihilator script by Marcryzius D'ev <]]--

local time_quest = 24 -- COLOQUE O VALOR EM QUANTIDADE DE HORAS PARA REFAZER A QUEST
local storage_time = 63598 -- STORAGE PARA ARMAZENAR AS HORAS PARA REFAZER A QUEST

local pos_demons,pos_players,tele_players,exit_players = {

  -- posições onde serão sumonados os monstros na annihilator
  {x = 33426, y = 32793, z = 8,stackpos=253}

},{

  --posições onde estão os players antes de irem a sala da annihi
  {x = 33420, y = 32796, z = 6,stackpos=253},
  {x = 33421, y = 32796, z = 6,stackpos=253},
  {x = 33422, y = 32796, z = 6,stackpos=253},
  {x = 33423, y = 32796, z = 6,stackpos=253},
  {x = 33424, y = 32796, z = 6,stackpos=253},

},{

  --posições onde serão teleportados os players para a sala da annihi
  {x = 33419, y = 32793, z = 8,stackpos=253},
  {x = 33420, y = 32793, z = 8,stackpos=253},
  {x = 33421, y = 32793, z = 8,stackpos=253},
  {x = 33422, y = 32793, z = 8,stackpos=253},
  {x = 33423, y = 32793, z = 8,stackpos=253},

}, {x = 33421, y = 32794, z = 6} -- posição de saida


local level,time_annihi = 10,20

QUANT = time_annihi -- não mecha
RELOAD_ANNIHI = 0 -- não mecha

--== FUNÇÕES NECESSARIAS ==--
local function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers) --Marcryzius
    local creaturesList = {}

    for x = -radiusx, radiusx do
        for y = -radiusy, radiusy do
        local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE})
            if (creature.type == 1 and showPlayers == true) or (creature.type == 2 and showMonsters == true) then
                table.insert(creaturesList, creature.uid)
            end
        end
    end
    return creaturesList
end


local function repeatTxtInPos(alavanca_pos,cor)
  local pos = tele_players[3]

   if(QUANT > 0)then
      QUANT = QUANT-1

      doSendAnimatedText(alavanca_pos,QUANT,cor)
      doSendAnimatedText({x=pos.x-10,y=pos.y-10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x-10,y=pos.y+10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x+10,y=pos.y+10,z=pos.z},QUANT,cor)
      doSendAnimatedText({x=pos.x+10,y=pos.y-10,z=pos.z},QUANT,cor)
      addEvent(repeatTxtInPos,1000,alavanca_pos,cor)

   else
      QUANT = time_annihi
      stopEvent(RELOAD_ANNIHI)
      RELOAD_ANNIHI = 0
   end
end


local function reloadAnnihi()
  local players = getCreaturesInRange(tele_players[3], 6, 6, true, true)
  for _,cid in pairs(players) do
      if(isPlayer(cid) == true)then
         doTeleportThing(cid,exit_players, false)
         doPlayerSendCancel(cid,"Voce não conseguiu completar a annihi e por isso foi retirado dela... NOOB!")
         setPlayerStorageValue(cid, storage_time, os.time() + (time_quest * 60 * 60)) -- SE O PLAYER FOR RETIRADO DA QUEST ELE PRECISA ESPERAR O TEMPO COLOCADO NA VARIÁVEL TIME_QUEST PARA REFAZER A QUEST
	  return true	 
      
      elseif(isMonster(cid))then
         doRemoveCreature(cid)
      end
   end
end


--== FUNÇÕES NECESSARIAS ==--
function onUse(cid, item, fPos, itemEx, toPosition)
   if(item.itemid == 1946)then
		if getPlayerStorageValue(cid, storage_time) <= os.time() then
			for _,pos in pairs(pos_players) do
				local player = getThingFromPos(pos)
				if not(isPlayer(player.uid))then
					return true,doPlayerSendCancel(cid, "voce precisa de "..#pos_players.." pessoas para poder entrar na sala.")
				elseif(getPlayerLevel(player.uid) < level)then
					return true,doPlayerSendCancel(cid, "Todos necessitam ter level "..level.." ou mais.")
				end
			end
		
			local getMonsterInAnnihi = getCreaturesInRange(tele_players[3], 5, 5, true)
		
			for k,pos  in pairs(pos_demons) do
				if(k <= #pos_players)then
				local player = getThingFromPos(pos_players[k])
					if(player.uid ~= nil)then
					doTeleportThing(player.uid,tele_players[k], false)
					end
				end
		
				if(#getMonsterInAnnihi > 0)then
					reloadAnnihi()
				end
				doSummonCreature("Rat", pos) -- Nome do monstro
			end
		
			if(QUANT == time_annihi)then
				repeatTxtInPos(fPos,time_annihi,0)
				RELOAD_ANNIHI = addEvent(reloadAnnihi,time_annihi*1000)
			end
			
			setPlayerStorageValue(cid, storage_time, os.time() + (time_quest * 60 * 60)) -- CASO O PLAYER COMPLETE A QUEST ADICIONA TEMPO COLOCAD NA VARIÁVEL TIME_QUEST PARA REFAZER
		return true
		
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vocês precisam esperar 24 horas para fazer a quest novamente.")
			doPlayerSendCancel(cid, "Vocês precisam esperar 24 horas para fazer a quest novamente.")
		return true
		end

   elseif(item.itemid == 1945)then
      if(#getCreaturesInRange(tele_players[3], 6, 6, false, true) > 0)then
         return true,doPlayerSendCancel(cid,"Espere o time acabar de fazer a annihilator quest.")
      end
   end
end

Eu deixei 24 horas para refazer a quest, mas, se quiser mudar a quantidade de horas, só alterar o valor da variável time_quest no começo do script. E a variável storage_time armazena a storage da quest (que verifica o tempo para refazer).

 

Testa e me fala se der algum erro.

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

  • 0

Lua Script Error: [Action Interface]
data/actions/scripts/anihi2.lua:onUse
data/actions/scripts/anihi2.lua:4: attempt to call global 'isInRange' (a nil value)
stack traceback:
        [C]: in function 'isInRange'
        data/actions/scripts/anihi2.lua:4: in function 'getAmountPlayersInArea'
        data/actions/scripts/anihi2.lua:31: in function <data/actions/scripts/anihi2.lua:29>

pq? deu esse erro

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...