Ir para conteúdo
  • 0

Exp Potion


Pedrohost

Pergunta

Ae Galera Seguinte Eu Estava Por Ai E Encontrei Uma Exp Potion Bem Bacana Mas Então Surgiu Um Problema.

 

Quando Um Personagem Morre, Ele Nao Consegue Mais Usar Nenhuma Exp Potion.

 

Vou Mandar O Script Sei Lá, Ele Fica Na Pasta MODS

 

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">
<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[
------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 15, ---- TIME IN MINUTES
needpa = TRUE,
needlvl = {TRUE, level = 8},
costmana = {TRUE, mana = 150},
addrate = 100, -- Exp que vai adicionar em %
removeonuse = TRUE
}
function getTime(s)
   local n = math.floor(s / 60)
   s = s - (60 * n)
   return n, s
end
CreatureEventChecker = function(event, ...) -- Colex
   if isCreature(arg[1]) then
    event(unpack(arg))
   end
end
creatureEvent = function(event, delay, ...) -- Colex
   addEvent(CreatureEventChecker, delay, event, unpack(arg))
end
function getPlayerExtraExpRate(cid) -- By MatheusMkalo
   return (getPlayerRates(cid)[8]-1)*100
end
]]></config>
<!-- exppotion.lua -->
<action itemid="7440" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 62164) >= 1 then
   return doPlayerSendCancel(cid, "You are already taking effect from this item.")
end
if configs.needpa and not isPremium(cid) then
   return doPlayerSendCancel(cid, "You need to be a premmium account to use this item.")
end
if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
   return doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.")
end
if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
   return doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.")
else
doCreatureAddMana(cid, -configs.costmana.mana)
end
end
if configs.removeonuse then
   doRemoveItem(item.uid, 1)
end

for i = configs.time*60, 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == configs.time*60 then
creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "The effect of the exp potion will end in "..a..".")
end
doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
doPlayerSendTextMessage(cid, 22, "Agora voce ira receber mais exp ao matar os monstros.")
setPlayerStorageValue(cid, 62164, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)
return TRUE
]]></action>
<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
   if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then
   doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
   creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
   creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)
   for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do
   local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
   if #a < 4 then
   a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
   end
   if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then
   creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.")
   end
   creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "The effect of the exp potion will end in "..a..".")
   end
   end
return TRUE
]]></creaturescript>
</mod>

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

O Motivo è Que Esse Script Ai Tem Storage ;s

 

Use Esse Aqui

 

Primeiramente abra a pasta data/actions/scripts e crie um arquivo .lua do nome que você bem entender e cole isso dentro:

 

 

 

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

 

local pausa = 1800000 -- (1000 = 1 segundos) Tempo que o script durará

local texto = 'You receive double the experience to kill a monster for 30 minutes.' -- Texto que irá receber ao usar a potion.

textofinal = 'Its just minutes.' -- Texto que irá receber quando o efeito da potion acabar.

local exp = 2 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server.

expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal.

 

if item.itemid == 7443 then

doRemoveItem(item.uid,1)

doPlayerSetExperienceRate(cid,exp)

doSendMagicEffect(frompos,13)

doPlayerSendTextMessage(cid,22,texto)

addEvent(potion,pausa,cid)

end

end

 

 

 

function potion(pos, cid)

doPlayerSetExperienceRate(pos,expfinal)

doPlayerSendTextMessage(pos,22,textofinal)

end

 

 

Agora, é só você adcionar a tag no arquivo

data/action/actions.xml

 

 

 

 

<action itemid="7443" script="NOMEDOSCRIPT.lua" />

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

AE MANO

 

Vai EM data/action/scripts E Cria 1 Script Com O Nome Expotion

 

E Adiciona Isso Dentro

 

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

 

local pausa = 1800000 -- (1000 = 1 segundos) Tempo que o script durará

local texto = 'You receive double the experience to kill a monster for 30 minutes.' -- Texto que irá receber ao usar a potion.

textofinal = 'Its just minutes.' -- Texto que irá receber quando o efeito da potion acabar.

local exp = 2 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server.

expfinal = 1 --Não mude, isso é para a experiencia voltar ao normal.

 

if item.itemid == 7443 then

doRemoveItem(item.uid,1)

doPlayerSetExperienceRate(cid,exp)

doSendMagicEffect(frompos,13)

doPlayerSendTextMessage(cid,22,texto)

addEvent(potion,pausa,cid)

end

end

 

 

 

function potion(pos, cid)

doPlayerSetExperienceRate(pos,expfinal)

doPlayerSendTextMessage(pos,22,textofinal)

end

 

 

Ai Agora Vai Em data/action/actions.xml

 

E Coloca Essa Tag

 

<action itemid="7443" script="expotion.lua" />

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

×
×
  • Criar Novo...