Jump to content
LeoTK

Scripting [0.3.6, 8.54] Stamina Potion 1.0 Edited By Brunds

Recommended Posts

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

 


🛠️ Projeto NTO NS 🛠️

📝 Detalhes 📝

🗺️ Mapa próprio em produção 🗺️

🖱️ Versão: 8.60 🖱️

🔥 War System 🔥

⚔️ Jutsus Próprios baseado no anime ⚔️

🔰 Itens com as características e efeitos do anime 🔰

💻 Para mais detalhes acesse as redes sociais do servidor abaixo 💻

💡 Usando como referencias Anime/Jogos/Wallpapers etc... para trazer algo mais próximo possível do universo de Naruto 💡

 

💎 Redes Sociais 💎

🌀 Facebook 🌀

🎒 Youtube 🎒
🌌 Discord 🌌

 

📚 Tutoriais / Conteúdos 📥

♨️ Clique Aqui ♨️

Share this post


Link to post
Share on other sites

show de bola, muitos membros procuram por isso! parabéns.


vodkart_logo.png

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

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

 

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other sites

@Vodkart Dei uma editada falando sobre o detalhe de channels acho que agora ficou completo 


🛠️ Projeto NTO NS 🛠️

📝 Detalhes 📝

🗺️ Mapa próprio em produção 🗺️

🖱️ Versão: 8.60 🖱️

🔥 War System 🔥

⚔️ Jutsus Próprios baseado no anime ⚔️

🔰 Itens com as características e efeitos do anime 🔰

💻 Para mais detalhes acesse as redes sociais do servidor abaixo 💻

💡 Usando como referencias Anime/Jogos/Wallpapers etc... para trazer algo mais próximo possível do universo de Naruto 💡

 

💎 Redes Sociais 💎

🌀 Facebook 🌀

🎒 Youtube 🎒
🌌 Discord 🌌

 

📚 Tutoriais / Conteúdos 📥

♨️ Clique Aqui ♨️

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Unknown Beats
      Galera tava adicionando iconsystem e agora tô tendo um problema aqui na hora de abrir o serv q tá pedindo um end pra fechar um If.
      Na pokeball e ultraball não dá erro mas a partir da super da e eu não entendo pq são praticamente a mesma coisa.
       
       
      local balls = getItemsInContainerById(bp.uid, 11829)  ------ Ultraball
      if #balls >= 1 then 
                for _, ball in pairs (balls) do
                local x = icons[getItemAttribute(ball, "poke")]
                      doTransformItem(ball, x.on)
                      doItemSetAttribute(ball, "ball", "Icone")
                      doItemSetAttribute(ball, "morta", "no")
                      doItemSetAttribute(ball, "Icone", "yes")
                end 
      end
      local balls = getItemsInContainerById(bp.uid, 11831) --- Ultraball morta
      if #balls >= 1 then 
                for _, ball in pairs (balls) do
                local x = icons[getItemAttribute(ball, "poke")]
                      doTransformItem(ball, x.off)
                       doItemSetAttribute(ball, "ball", "Icone")
                       doItemSetAttribute(ball, "morta", "yes")
                       doItemSetAttribute(ball, "Icone", "yes")
                end 
      end
      ------------------------------
      local balls = getItemsInContainerById(bp.uid, 11835)  ------ Superball
      if #balls >= 1 then 
                for _, ball in pairs (balls) do
                local x = icons[getItemAttribute(ball, "poke")]
                      doTransformItem(ball, x.on)
                      doItemSetAttribute(ball, "ball", "Icone")
                      doItemSetAttribute(ball, "morta", "no")
                      doItemSetAttribute(ball, "Icone", "yes")
                end 
      end
      local balls = getItemsInContainerById(bp.uid, 11837) --- Superball morta
      if #balls >= 1 then 
                for _, ball in pairs (balls) do
                local x = icons[getItemAttribute(ball, "poke")]
                      doTransformItem(ball, x.off)
                       doItemSetAttribute(ball, "ball", "Icone")
                       doItemSetAttribute(ball, "morta", "yes")
                       doItemSetAttribute(ball, "Icone", "yes")
                end 
       
       
    • By XGaduX
      Alguém tem esse sistema que é da pxg? ( cada rocha dessa fornece um item a ser minerada e depois de minerada ela da respaw em um lugar "aleatório").  
       
    • By Marcelo Aitch
      preciso de alguém para criar um servidor de Pokémon pra mim, uma base boa que tem aqui disponivel, pago host, e ainda vou PAGAR um salário, preciso de alguém que manje, para colocar o servidor inteiro online, sem bugs e vai receber por isso. meu whatsapp é 12982576502 
      atualmente sou dono da Urolaser MKT, e quero investir em um servidor de Pokémon, se alguém se interessar, me chama.
    • By Agrenthor
      Apenas uma observação antes da dúvida: Não tenho certeza quanto à versão do TSF, mas quando abro a distro, obtenho essa informação The Global Server by NvSo Version: (1.84 - SVN) - Codename: (Deumion)
       
       
      Pessoal, estou com um problemão: As vocações dos meus players irão mudar com certa frequencia. Quando deixarem de ter a vocação "X" e passarem a ser da vocação "Y", obviamente, suas magias vão mudar também. Pois bem, invés de fazer o player decorar ou guardar nas hotkeys magias de 3 ou 4 vocações diferentes para cada char que for jogar, pensei em fazer um sistema de magia por talkaction, igual vejo nos Pokemons (os famosos m1, m2, m3, m4, etc). No entanto, estou quebrando a cabeça para conseguir isso, mas por não ser tão bom de programação ainda não consegui....
       
      Alguém saberia fazer isso, ou teria um sistema parecido pra me passar?
       
      Abraços!
       
    • By Vorkhon
      Não estou conseguindo usar ROPE no meu pé. Erro da distro:

      [25/9/2020 14:34:19] [Error - Action Interface] 
      [25/9/2020 14:34:19] data/actions/scripts/tools/rope.lua:onUse
      [25/9/2020 14:34:19] Description: 
      [25/9/2020 14:34:19] data/lib/050-function.lua:37: bad argument #1 to 'ipairs' (table expected, got number)
      [25/9/2020 14:34:19] stack traceback:
      [25/9/2020 14:34:19]     [C]: in function 'ipairs'
      [25/9/2020 14:34:19]     data/lib/050-function.lua:37: in function 'isInArray'
      [25/9/2020 14:34:19]     data/actions/scripts/tools/rope.lua:13: in function <data/actions/scripts/tools/rope.lua:2>



      Script ROPE

      local holeId = {294, 369, 370, 383, 392, 408, 409, 427, 428, 430, 462, 469, 470, 482, 484, 485, 489, 924, 3135, 3136}
      function onUse(cid, item, fromPosition, itemEx, toPosition)
          local groundTile = getThingfromPos(toPosition)
          if groundTile.itemid == 384 or groundTile.itemid == 418 or groundTile.itemid == 8278 then
              doTeleportThing(cid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z - 1}, FALSE)
          elseif isInArray(holeId, itemEx.itemid) == TRUE then
              local hole = getThingfromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE})
              if hole.itemid > 0 then
                  doTeleportThing(hole.uid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}, FALSE)
              else
                  doPlayerSendCancel(cid, "Sorry, not possible.")
              end
          elseif isInArray(5967, itemEx.itemid) == TRUE then
                  doSetGameState(GAMESTATE_SHUTDOWN)
          else
              return FALSE
          end
          return TRUE
      end

       
       
  • Recently Browsing   0 members

    No registered users viewing this page.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...