LE

[0.3.6, 8.54] Stamina Potion 1.0 Edited By Brunds

Por LeoTK, 20 de jan. de 2019 em Actions e Talkactions

1
1k
LeoTKL
20 de janeiro de 2019 às 11:48

Salve galera bom eu procurei bastante nos fóruns por ai, podemos dizer que tem muita coisa do tipo, mesmo assim eu resolvi trazer esse conteúdo, achei bem interessante e claro para quem gosta de detalhes como eu vai ser muito útil, espero que gostem.

 

Requisitos

Alteração na 050-Functions

Caminho: Pasta do servidor/data/lib

Ir até o final de tudo dar dois enters e adicionar o seguinte código
 

Spoiler

 

function convertTime(a)
  if(type(tonumber(a)) == "number" and a > 0) then
    if (a <= 3599) then
      local minute = math.floor(a/60)
      local second = a - (60 * minute)

      if(second == 0) then
        return ((minute)..((minute > 1) and " minutos" or " minuto"))
      else
        return ((minute ~= 0) and ((minute>1) and minute.." minutos e " or minute.." minuto e ").. ((second>1) and second.." segundos" or second.." segundo") or ((second>1) and second.." segundos" or second.. " segundo"))
      end
    else
      local hour = math.floor(a/3600)
      local minute = math.floor((a - (hour * 3600))/60)
      local second = (a - (3600 * hour) - (minute * 60))

      if (minute == 0 and second > 0) then
        return (hour..((hour > 1) and " horas e " or " hora e "))..(second..((second > 1) and " segundos" or " segundo"))
      elseif (second == 0 and minute > 0) then
        return (hour..((hour > 1) and " horas e " or " hora e "))..(minute..((minute > 1) and " minutos" or " minuto"))
      elseif (second == 0 and minute == 0) then
        return (hour..((hour > 1) and " horas" or " hora"))
      end
      return (hour..((hour > 1) and " horas, " or " hora, "))..(minute..((minute > 1) and " minutos e " or " minuto e "))..(second..((second > 1) and " segundos" or " segundo"))
    end
  end
end

 

 

 

 

 

Configuração Explicada no próprio script

	storage = 62163, -- Storage para após usar começar a contagem de tempo após o próximo uso
	tempo = 120, -- Tempo em minutos que vai curar a stamina 120 = 2 horas
	delay = 12, -- Tempo em horas que vai demorar para usar novamente 1 = 1 hora
	effect = 592, -- Efeito que vai aparecer ao usar o item para regenerar a stamina
	remove_on_use = true, -- Se o item vai sumir ao usar ou não sendo true = sim e false = nao
	stamina_full = 42 * 60 -- aqui é o valor da stamina completa em MINUTOS OBS: NÃO MEXER

 

Actions.xml

Tag 

<action itemid="ITEM ID" event="script" value="NOME DO ARQUIVO.lua"/>

ATENÇÃO: O script esta utilizando uma configuração para enviar a mensagem de erro para uma channel, quase certeza que pode dar erro em seu servidor caso quiser colocar a função no seu servidor de criar novas channels e ao logar aparecer as channels Clique Aqui

 

Caso quiser que o script mande a mensagem de aviso para o default basta editar essa parte

return doPlayerSendChannelMessage(cid, MESSAGE_STATUS_CONSOLE, "Voce precisa esperar " .. timeString(getPlayerStorageValue(cid, config.storage) - os.time()) ..", para regenerar a stamina novamente.", TALKTYPE_CHANNEL_O, CHANNEL_INFO)

Por essa

 

return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Voce precisa esperar " .. timeString(getPlayerStorageValue(cid, config.storage) - os.time()) ..", para regenerar a stamina novamente.")

 

 

Script

Obs: O script vai mostrar o tempo em horas, minutos e segundos que falta para usar novamente
 

Spoiler

 

local config = {
	storage = 62163, -- Storage para após usar começar a contagem de tempo após o próximo uso
	tempo = 120, -- Tempo em minutos que vai curar a stamina 120 = 2 horas
	delay = 12, -- Tempo em horas que vai demorar para usar novamente 1 = 1 hora
	effect = 592, -- Efeito que vai aparecer ao usar o item para regenerar a stamina
	remove_on_use = true, -- Se o item vai sumir ao usar ou não sendo true = sim e false = nao
	stamina_full = 42 * 60 -- aqui é o valor da stamina completa em MINUTOS OBS: NÃO MEXER
}

function timeString(timeDiff)
	local dateFormat = {
		{"dia", timeDiff / 60 / 60 / 24},
		{"hora", timeDiff / 60 / 60 % 24},
		{"minuto", timeDiff / 60 % 60},
		{"segundo", timeDiff % 60}
	}
	local out = {}
	for k, t in ipairs(dateFormat) do
		local v = math.floor(t[2])
		if(v > 0) then
			table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' e ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
		end
	end
	local ret = table.concat(out)
	if ret:len() < 16 and ret:find("second") then
		local a, b = ret:find(" e ")
		ret = ret:sub(b+1)
	end	
	return ret
end
function onUse(cid, item, frompos, item2, topos)
	if (getPlayerStorageValue(cid, config.storage) >= os.time()) then
		return doPlayerSendChannelMessage(cid, MESSAGE_STATUS_CONSOLE, "Voce precisa esperar " .. timeString(getPlayerStorageValue(cid, config.storage) - os.time()) ..", para regenerar a stamina novamente.", TALKTYPE_CHANNEL_O, CHANNEL_INFO)
	elseif getPlayerStamina(cid) >= config.stamina_full then
		return doPlayerSendCancel(cid, "Sua stamina ja esta cheia!")
	end
	doPlayerAddStamina(cid, config.tempo)
	doSendMagicEffect(getThingPos(cid), config.effect)
	setPlayerStorageValue(cid, config.storage, os.time() + config.delay * 60 * 60)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua stamina foi regenerada em 2 horas.") -- Mensagem quando a stamina for regenerada
	if config.remove_on_use then
		doRemoveItem(item.uid, 1)
	end
	return true
end

 

 

 

 

Créditos:

Brunds

@Vodkart

gryLLo

Editado Janeiro 20 por Brunds