Ir para conteúdo

Featured Replies

Postado
31 minutos atrás, Vodkart disse:

local storage = 789456
local from, to = {x = 1739, y = 358, z = 7}, {x = 1844, y = 453, z = 7}
local pos = {x = 1005, y = 905, z = 5}
function onThink(interval, lastExecution)
	local on = getPlayersOnline()
	if #on > 0 then
		for _, pid in pairs(on) do
			if isInRange(getPlayerPosition(pid), from, to) and getPlayerStorageValue(pid, storage) - os.time() <= 0 then
				doTeleportThing(pid, config.pos)
				doPlayerSendTextMessage(pid, 19, "tempo esgotado.")
				setPlayerStorageValue(pid, 123456, 0) -- know storage
			end
		end
	end
	return true
end

 

TAG


<globalevent name="ExitHunt" interval="30" script="nome do seu script.lua" />

obs: se o seu servidor for em milesegundos trocar o "30" por "30000"

obs: pode remover o creaturescript

aproveita e me tira 1 dúvida sobre isso se puder por favor, vodkart

esses dias eu fiz a exata mesma solução que você enviou aqui, porém fiquei com um pé atrás de enviar para produção já que vai estar verificando uma área de tiles toda hora com o onthink, isso causaria lag ou é só uma superstição minha?


sobre o tópico:
se ainda quiser uma solução diferente da do vodkart, vou tentar refazer e você verifica se funcionou

 

Spoiler
local config = {
    toKnow = 123456,
    storage = 789456,
    pos = {x = 1005, y = 905, z = 5}, -- para onde o jogador será teleportado caso o tempo tenha acabado.
    }
   
    function onKill(cid, target, lastHit)
        if (getPlayerStorageValue(cid, config.toKnow) == 1) then
            local time = getPlayerStorageValue(cid, config.storage) - os.time()
            if (time <= 0) then
                doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
                doTeleportThing (cid, config.pos)
                setPlayerStorageValue (cid, config.toKnow, 0)
            return true
            end
        end
    return true
    end
   

se funcionar, você pode retirar o evento de login

  • Respostas 26
  • Visualizações 1.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • tem que funcionar viado, ta td certo... me chama discord to on   @So volto tarde   nesse caso não... pois só está pegando a pos númerica dos jogadores... agr se for td hr checar var

Posted Images

Postado
  • Autor
8 minutos atrás, So volto tarde disse:

aproveita e me tira 1 dúvida sobre isso se puder por favor, vodkart

esses dias eu fiz a exata mesma solução que você enviou aqui, porém fiquei com um pé atrás de enviar para produção já que vai estar verificando uma área de tiles toda hora com o onthink, isso causaria lag ou é só uma superstição minha?


sobre o tópico:
se ainda quiser uma solução diferente da do vodkart, vou tentar refazer e você verifica se funcionou

 

  Ocultar conteúdo
local config = {
    toKnow = 123456,
    storage = 789456,
    pos = {x = 1005, y = 905, z = 5}, -- para onde o jogador será teleportado caso o tempo tenha acabado.
    }
   
    function onKill(cid, target, lastHit)
        if (getPlayerStorageValue(cid, config.toKnow) == 1) then
            local time = getPlayerStorageValue(cid, config.storage) - os.time()
            if (time <= 0) then
                doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
                doTeleportThing (cid, config.pos)
                setPlayerStorageValue (cid, config.toKnow, 0)
            return true
            end
        end
    return true
    end
   

se funcionar, você pode retirar o evento de login

Nada ainda vey :(

Postado
2 minutos atrás, leozincorsair disse:

Nada ainda vey :(

tem que funcionar viado, ta td certo... me chama discord to on

 

@So volto tarde

 

nesse caso não... pois só está pegando a pos númerica dos jogadores... agr se for td hr checar varios tiles(num mapa grande), ai sim da um lag absurdo

vodkart_logo.png

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

 

DISCORDvodkart#6090

 

Postado
  • Autor
13 minutos atrás, Vodkart disse:

tem que funcionar viado, ta td certo... me chama discord to on

 

@So volto tarde

 

nesse caso não... pois só está pegando a pos númerica dos jogadores... agr se for td hr checar varios tiles(num mapa grande), ai sim da um lag absurdo

e somente de uma unica hunt, queria fazer isso com 6. tudo individual

Citar

function onUse(cid, item, frompos, item2, topos)
    local config = {
    timeExhausted = 12, -- tempo em horas para poder usar o item novamente.
    timeForUse = 1, -- tempo em horas que o player poderá entrar na cave.
    exhausted = 456789,
    storage = 789456,
    toKnow = 123456,
    effect = 27, -- efeito que dará ao usar o item.
    }
    
    if getPlayerStorageValue(cid, config.exhausted) < os.time() then
        setPlayerStorageValue (cid, config.storage, config.timeForUse * 60 * 60 + os.time())
        setPlayerStorageValue (cid, config.exhausted, config.timeExhausted * 60 * 60 + os.time())
        setPlayerStorageValue (cid, config.toKnow, 1)
        doSendMagicEffect (getThingPos(cid), config.effect)
        doPlayerSendTextMessage (cid, 19, "Parabéns voce tem o acesso a hunt exclusiva N-2 por 1 horas.")
        doRemoveItem(item.uid)
    else
        doPlayerSendTextMessage (cid, 19, "Aguarde 12 horas para usar esse item novamente.")
    end
return true
end

poderia arrumar esse action para por em minutos, pq em horas demora pra testar

Postado

refiz o sistema:

 

-- LIB
hunt_config = {
	storage = 789456,
	from = {x = 1739, y = 358, z = 7}, -- coordenada do canto superior esquerdo da área.
	to = {x = 1844, y = 453, z = 7}, -- coordenada do canto inferior direito da área.
	maxPlayers = 2, -- quantos jogadores poderão entrar na área ao mesmo tempo.
	pos = {x = 1739, y = 397, z = 7}, -- para onde o jogador será teleportado.
	exit = {x = 1005, y = 905, z = 5}
}

-- MOVEMENTS
function onStepIn(cid, item, position, fromPosition)
	local t = {} 
	if not isPlayer(cid) then return true end
	for _, pid in pairs(getPlayersOnline()) do
		if isInRange(getPlayerPosition(pid), hunt_config.from, hunt_config.to) then 
			t[#t+1] = pid
		end
	end
	if #t >= hunt_config.maxPlayers then
		doPlayerSendTextMessage (cid, 19, "Essa hunt ja atingiu o numero maximo de jogadores, aguarde um pouco.")
		doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
		doTeleportThing(cid, fromPosition, true)
	elseif getPlayerStorageValue(cid, hunt_config.storage) - os.time() <= 0 then
		doPlayerSendTextMessage(cid, 19, "Voce nao tem acesso a essa hunt, fale com o npc no segundo andar para adquirir uma.")
		doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
		doTeleportThing(cid, fromPosition, true)
	else
		
		doTeleportThing(cid, hunt_config.pos)
		doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
	end
	return true
end

-- ACTION

function onUse(cid, item, frompos, item2, topos)
	local config = {
		timeExhausted = 12, -- tempo em horas para poder usar o item novamente.
		timeForUse = 1, -- tempo em horas que o player poderá entrar na cave.
		exhausted = 456789,
	}
	if getPlayerStorageValue(cid, config.exhausted) - os.time() > 0 then
		doPlayerSendTextMessage(cid, 19, "Aguarde 12 horas para usar esse item novamente.") return true
	end
	setPlayerStorageValue(cid, hunt_config.storage, os.time()+config.timeForUse*3600)
	setPlayerStorageValue(cid, config.exhausted, os.time()+config.timeExhausted*3600)
	doSendMagicEffect(getThingPos(cid), 27)
	doPlayerSendTextMessage(cid, 19, "Parabéns voce tem o acesso a hunt exclusiva N-2 por 1 horas.")
	doRemoveItem(item.uid)
	return true
end

--GLOBAL
function onThink(interval, lastExecution)
	local on = getPlayersOnline()
	if #on > 0 then
		for _, pid in pairs(on) do
			if isInRange(getPlayerPosition(pid), hunt_config.from, hunt_config.to) and getPlayerStorageValue(pid, hunt_config.storage) - os.time() <= 0 then
				doTeleportThing(pid, hunt_config.exit)
				doPlayerSendTextMessage(pid, 19, "tempo esgotado.")
			end
		end
	end
	return true
end

 

 

 

para testar mais rapido usa assim no actions nessa linha:

 

setPlayerStorageValue(cid, hunt_config.storage, os.time()+90) -- 90 segundos de sistema

 

vodkart_logo.png

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

 

DISCORDvodkart#6090

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo