Ir para conteúdo

Featured Replies

Postado

opa, preciso de uma força se possivel.
possuo um script de EXP potion, que quando eu clico, recebo um "Addevent" com o bonus de exp
porem, quando dou /reload actions, todos os players perdem esse efeito e a storage fica (junto com o bonus de exp da exp food)

isso vem me causando alguns problemas com alguns players, pois preciso atualizar o server/remover bugs

 

teria alguma forma de converter esse action, pra creaturescript e remover esse "addevent"?
queria que se o player deslogasse, continuasse contando a exp potion (como se fosse uma storage os.time)
que quando chegasse em 0 do seu tempo os.time, a exp voltasse ao normal e eu pudesse dar /reload creaturescript que nao interferisse no tempo dos players

 

alguem sabe fazer isso?

a action que uso:

 

Mostrar conteúdo oculto


grato

 

Postado

Usa esse MOD, melhor.

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Exp Potion" version="1.0" author="Vodkart" contact="DISCORD: vodkart#6090" enabled="yes">
<config name="exppotion"><![CDATA[
exp_info = {rate = 0.2, storage = {354870,354871,354872}, minutes = 30} -- rate 0.2 = 20%
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
]]></config>
<event type="login" name="ExpPotionLogin" event="script"><![CDATA[
domodlib('exppotion')
function onLogin(cid)
    if getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() > 0 then 
        registerCreatureEvent(cid, "ExpPotionThink")
        local rates = getPlayerRates(cid)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você ainda tem "..convertTime(getPlayerStorageValue(cid, exp_info.storage[1]) - os.time()).." de Exp Potion.")
        doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]+exp_info.rate)
		setPlayerStorageValue(cid, exp_info.storage[3], 1) -- registro
    end 
	return true
end]]></event>
<event type="think" name="ExpPotionThink" event="script"><![CDATA[
domodlib('exppotion')
function onThink(cid, interval)
	if getPlayerStorageValue(cid, exp_info.storage[3]) > 0 and getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() <= 0 then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sua Exp Potion acabou!") 
		-- doPlayerSetExperienceRate(cid, getPlayerStorageValue(cid, exp_info.storage[2]))
		local rates = getPlayerRates(cid)
		doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]-exp_info.rate)
		setPlayerStorageValue(cid, exp_info.storage[3], 0) -- registro
	end
	return true
end]]></event>
<talkaction words="!exppotion;/exppotion;!exp;/exp" event="buffer"><![CDATA[
domodlib('exppotion')
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() <= 0 and "Você não possui Exp Potion ativa no momento." or "Você tem "..convertTime(getPlayerStorageValue(cid, exp_info.storage[1]) - os.time()).." de exp potion.")]]></talkaction>
<action itemid="12698" event="script"><![CDATA[
domodlib('exppotion')
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() > 0 then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não pode usar outra Exp Potion pois ainda possui uma ativa. Ainda restam: "..convertTime(getPlayerStorageValue(cid, exp_info.storage[1]) - os.time())..".") return true
	end
	
	local rates = getPlayerRates(cid)
	-- setPlayerStorageValue(cid, exp_info.storage[2], rates[SKILL__LEVEL])
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você ativou Exp potion por "..exp_info.minutes.." minutos! Durante este tempo, você receberá +20% exp de monstros. Para saber o tempo, digite: /exppotion") 
	setPlayerStorageValue(cid, exp_info.storage[1], os.time()+exp_info.minutes*60)
	setPlayerStorageValue(cid, exp_info.storage[3], 1) -- registro
	doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]+exp_info.rate)
	registerCreatureEvent(cid, "ExpPotionThink")
	doRemoveItem(item.uid,1)
	return true
end]]></action>
</mod>

 

Postado
  • Autor

obg, quando dou /reload realmente funciona, mas há alguma maneira de implementar esse sistema pra mostrar o tempo em tempo real? em vez de ficar dando o comando? pq meu script atual ele mostra o tempo restante da potion (fica contando de 1 em 1 segundo)

na parte inferior do tibia

Mostrar conteúdo oculto


@Vodkart vi que o script tem créditos seu, podes desenrolar isso pra mim? :S


EDIT: @ikaroangelo21 se euquiser adicionar outro script igual, tenho que mudar oque?

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

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.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo