Ir para conteúdo
  • 0

Item 2x 3x 5x 7x de EXP


markim1986

Pergunta

Galera esse script está muito top

 

<?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 FALSEconfigs = {time = 1, ---- TIME IN MINUTESneedpa = FALSE,needlvl = {FALSE, level = 1},costmana = {FALSE, mana = 50},addrate = 100, -- Exp que vai adicionar em %removeonuse = FALSE}function getTime(s)local n = math.floor(s / 60)s = s - (60 * n)return n, sendCreatureEventChecker = function(event, ...) -- Colexif isCreature(arg[1]) thenevent(unpack(arg))endendcreatureEvent = function(event, delay, ...) -- ColexaddEvent(CreatureEventChecker, delay, event, unpack(arg))endfunction getPlayerExtraExpRate(cid) -- By MatheusMkaloreturn (getPlayerRates(cid)[8]-1)*100end]]></config><!-- exppotion.lua --><action itemid="5952" event="script"><![CDATA[domodlib('PotionExpConfigs')if getPlayerStorageValue(cid, 62164) >= 1 thenreturn doPlayerPopupFYI(cid, "Você não pode usar o mesmo potion, use os outros para ativar o combo\n\n\nSe seu tempo já esgotou e mesmo assim você não consegue usar o potion\né porque você esta bugado.\n\nPor favor digite !fly desbugar em uma área pz\n\nBom Jogo")endif configs.needpa and not isPremium(cid) thenreturn doPlayerSendCancel(cid, "You need to be a premmium account to use this item.")endif configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level thenreturn doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.")endif configs.costmana[1] thenif getCreatureMana(cid) < configs.costmana.mana thenreturn doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.")elsedoCreatureAddMana(cid, -configs.costmana.mana)endendif configs.removeonuse thendoRemoveItem(item.uid, 1)endfor i = configs.time*60, 1, -1 dolocal a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))if #a < 4 thena = string.sub(a,1,2) .. "0" .. string.sub(a, 3)endif i == configs.time*60 thencreatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.")endcreatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "2x "..a..".")enddoPlayerSetExperienceRate(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, "Você adicionou 2x de exp por 30 minutos.")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 thendoPlayerSetExperienceRate(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 dolocal a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))if #a < 4 thena = string.sub(a,1,2) .. "0" .. string.sub(a, 3)endif i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) thencreatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.")endcreatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "Sua experiecia de 2x acaba em  "..a..".")endendreturn TRUE]]></creaturescript></mod>

só tem um detalhe, como que eu faco pra ter um de 3x e uma de 2x ( eu troquei o nome do xml e as storages da copia, ate funciona mas quando o tempo acaba ele não volta com a experiencia normal quando acaba, isso quando eu uso o de 2x e 3x juntos, se usar separado funciona de boa.

 

o lance é usar juntos e acabar a exp normal

 

 

Na verdade eu queria os itens desta maneira:

item "xxxx" daria 2x de exp por 30 minitem "xxxx" daria 3x de exp por 30 minitem "xxxx" daria 4x de exp por 30 minitem "xxxx" daria 5x de exp por 30 minitem "xxxx" daria 7x de exp por 30 min

 

 

Desde já agradeço

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Se vai troca o nome destas partes.

 

AdvancedExpPotionSystem

So por um 2 ali no final, e na outra 3 assim vai.

 

Onde tiver isso voce faz o mesmo. 

PotionExpConfigs

Mas preste atencao no mesmo script vai ter que ter tudo igual.

 

e esse aqui tambem.

<creaturescript type="login" name="ExpPotion" event="script">

 

Vou postar um modelo aqui em baixo ai se decora e faz os outros beleza?

 

 

 

<?xml version="1.0" encoding="UTF-8"?><mod name="AdvancedExpPotionSystem2" enabled="yes" author="MatheusMkalo" forum="XTibia.com"><!-- Configs and Functions --><config name="PotionExpConfigs2"><![CDATA[------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSEconfigs = {time = 1, ---- TIME IN MINUTESneedpa = FALSE,needlvl = {FALSE, level = 1},costmana = {FALSE, mana = 50},addrate = 100, -- Exp que vai adicionar em %removeonuse = FALSE}function getTime(s)local n = math.floor(s / 60)s = s - (60 * n)return n, sendCreatureEventChecker = function(event, ...) -- Colexif isCreature(arg[1]) thenevent(unpack(arg))endendcreatureEvent = function(event, delay, ...) -- ColexaddEvent(CreatureEventChecker, delay, event, unpack(arg))endfunction getPlayerExtraExpRate(cid) -- By MatheusMkaloreturn (getPlayerRates(cid)[8]-1)*100end]]></config><!-- exppotion.lua --><action itemid="ITEMID" event="script"><![CDATA[domodlib('PotionExpConfigs2')if getPlayerStorageValue(cid, 62164) >= 1 thenreturn doPlayerPopupFYI(cid, "Você não pode usar o mesmo potion, use os outros para ativar o combo\n\n\nSe seu tempo já esgotou e mesmo assim você não consegue usar o potion\né porque você esta bugado.\n\nPor favor digite !fly desbugar em uma área pz\n\nBom Jogo")endif configs.needpa and not isPremium(cid) thenreturn doPlayerSendCancel(cid, "You need to be a premmium account to use this item.")endif configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level thenreturn doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.")endif configs.costmana[1] thenif getCreatureMana(cid) < configs.costmana.mana thenreturn doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.")elsedoCreatureAddMana(cid, -configs.costmana.mana)endendif configs.removeonuse thendoRemoveItem(item.uid, 1)endfor i = configs.time*60, 1, -1 dolocal a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))if #a < 4 thena = string.sub(a,1,2) .. "0" .. string.sub(a, 3)endif i == configs.time*60 thencreatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.")endcreatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "2x "..a..".")enddoPlayerSetExperienceRate(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, "Você adicionou 2x de exp por 30 minutos.")setPlayerStorageValue(cid, 62164, os.time())creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)return TRUE]]></action><creaturescript type="login" name="ExpPotion2" event="script"><![CDATA[domodlib('PotionExpConfigs2')local time = configs.time if os.time()-getPlayerStorageValue(cid, 62164) < time *60 thendoPlayerSetExperienceRate(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 dolocal a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))if #a < 4 thena = string.sub(a,1,2) .. "0" .. string.sub(a, 3)endif i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) thencreatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.")endcreatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "Sua experiecia de 2x acaba em  "..a..".")endendreturn TRUE]]></creaturescript></mod>

Nao esqueca de trocar o ITEMID pro ID do seu item.

qualquer duvida pergunta ai, ( Obs: ja usei esse script em um OTserv e nao te indicaria ele. )

Se quiser que eles acumulem tambem tem como.

Do jeito que ta ai ta claro, so pode usar 1 de cada vez.

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, atakashi disse:

Se vai troca o nome destas partes.

 

AdvancedExpPotionSystem

So por um 2 ali no final, e na outra 3 assim vai.

 

Onde tiver isso voce faz o mesmo. 

PotionExpConfigs

Mas preste atencao no mesmo script vai ter que ter tudo igual.

 

e esse aqui tambem.

<creaturescript type="login" name="ExpPotion" event="script">

 

Vou postar um modelo aqui em baixo ai se decora e faz os outros beleza?

 

 

 

<?xml version="1.0" encoding="UTF-8"?><mod name="AdvancedExpPotionSystem2" enabled="yes" author="MatheusMkalo" forum="XTibia.com"><!-- Configs and Functions --><config name="PotionExpConfigs2"><![CDATA[------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSEconfigs = {time = 1, ---- TIME IN MINUTESneedpa = FALSE,needlvl = {FALSE, level = 1},costmana = {FALSE, mana = 50},addrate = 100, -- Exp que vai adicionar em %removeonuse = FALSE}function getTime(s)local n = math.floor(s / 60)s = s - (60 * n)return n, sendCreatureEventChecker = function(event, ...) -- Colexif isCreature(arg[1]) thenevent(unpack(arg))endendcreatureEvent = function(event, delay, ...) -- ColexaddEvent(CreatureEventChecker, delay, event, unpack(arg))endfunction getPlayerExtraExpRate(cid) -- By MatheusMkaloreturn (getPlayerRates(cid)[8]-1)*100end]]></config><!-- exppotion.lua --><action itemid="ITEMID" event="script"><![CDATA[domodlib('PotionExpConfigs2')if getPlayerStorageValue(cid, 62164) >= 1 thenreturn doPlayerPopupFYI(cid, "Você não pode usar o mesmo potion, use os outros para ativar o combo\n\n\nSe seu tempo já esgotou e mesmo assim você não consegue usar o potion\né porque você esta bugado.\n\nPor favor digite !fly desbugar em uma área pz\n\nBom Jogo")endif configs.needpa and not isPremium(cid) thenreturn doPlayerSendCancel(cid, "You need to be a premmium account to use this item.")endif configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level thenreturn doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.")endif configs.costmana[1] thenif getCreatureMana(cid) < configs.costmana.mana thenreturn doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.")elsedoCreatureAddMana(cid, -configs.costmana.mana)endendif configs.removeonuse thendoRemoveItem(item.uid, 1)endfor i = configs.time*60, 1, -1 dolocal a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))if #a < 4 thena = string.sub(a,1,2) .. "0" .. string.sub(a, 3)endif i == configs.time*60 thencreatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.")endcreatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "2x "..a..".")enddoPlayerSetExperienceRate(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, "Você adicionou 2x de exp por 30 minutos.")setPlayerStorageValue(cid, 62164, os.time())creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)return TRUE]]></action><creaturescript type="login" name="ExpPotion2" event="script"><![CDATA[domodlib('PotionExpConfigs2')local time = configs.time if os.time()-getPlayerStorageValue(cid, 62164) < time *60 thendoPlayerSetExperienceRate(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 dolocal a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))if #a < 4 thena = string.sub(a,1,2) .. "0" .. string.sub(a, 3)endif i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) thencreatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.")endcreatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "Sua experiecia de 2x acaba em  "..a..".")endendreturn TRUE]]></creaturescript></mod>

Nao esqueca de trocar o ITEMID pro ID do seu item.

qualquer duvida pergunta ai, ( Obs: ja usei esse script em um OTserv e nao te indicaria ele. )

Se quiser que eles acumulem tambem tem como.

Do jeito que ta ai ta claro, so pode usar 1 de cada vez.

Testei aqui e fiz exatamente o que você disse, e de fato da o problema que você mencionou, vou explicar o problema no exemplo: 

 

Todas as potions estao com o tempo de 30 minutos

quando eu uso individuamente o tempo acaba e a exp volta ao normal.

quando eu uso mais de uma, ou seja, acumulando, a exp de fato acumula combando os dois potions, só que quando o tempo da potion usanda primeiro acaba, a exp de uma buga e permanece ate o char deslogar, a ultima no caso.

 

Esse é problema.

 

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

  • 0

cara esse exp em combo sempre da ruim, mas e um script bem complicado rs, eu utilizo um no meu servidor de poketibia que nao LAGA igual esse ai, um normalzinho, eu prefiro estes normais que nao dao lag no servidor, agora que acumule puts, ai e um script bem mais complicado.

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, atakashi disse:

cara esse exp em combo sempre da ruim, mas e um script bem complicado rs, eu utilizo um no meu servidor de poketibia que nao LAGA igual esse ai, um normalzinho, eu prefiro estes normais que nao dao lag no servidor, agora que acumule puts, ai e um script bem mais complicado.

 

Humm, show de bola, de fato de pra ver que a memoria usada no ot aumentou pra caramba, você teria como me mostrar como usa o seu ? tambem gosto das coisas mais simples ;P

Link para o comentário
Compartilhar em outros sites

  • 0

Usa esse ai.

function potion(pos, cid)        doPlayerSetExperienceRate(pos,expfinal)        doPlayerSendTextMessage(pos,MESSAGE_INFO_DESCR,textofinal)endfunction sendmsg(cid)   time = 60   for i = 1, 6 do      if (isCreature(cid)) then         addEvent(doPlayerSendTextMessage, i*10*60*1000, cid, MESSAGE_STATUS_DEFAULT, "Tienes "..time - (i*10).. " minutos de experiencia extra.")      else         break      end   endend function onUse(cid, item, frompos, item2, topos)   local pausa = 60*60*1000 -- (1000 = 1 segundos) tiempo del script cuanto durara   local texto = "Agora voce tem 2X exp por 1 hora."   textofinal = "Tempo de Exp Potion finalizado." -- Texto que irá receber quando o efeito da potion acabar.   local exp = 2.0 -- cuanto usted quiere que le de la exp potion de exp , ejemplo cada es suplicada x2.   expfinal = 1 -- esto es para que la exp vuelva a su normalidad no mover.                 doRemoveItem(item.uid,1)                doPlayerSetExperienceRate(cid,exp)                doSendMagicEffect(frompos,30)                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,texto)            sendmsg (cid)                addEvent(potion,pausa,cid)   return trueend
<action itemid="7440" event="script" value="NOMBRE DE TU ARCHIVO.lua"/>

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, atakashi disse:

Usa esse ai.

function potion(pos, cid)        doPlayerSetExperienceRate(pos,expfinal)        doPlayerSendTextMessage(pos,MESSAGE_INFO_DESCR,textofinal)endfunction sendmsg(cid)   time = 60   for i = 1, 6 do      if (isCreature(cid)) then         addEvent(doPlayerSendTextMessage, i*10*60*1000, cid, MESSAGE_STATUS_DEFAULT, "Tienes "..time - (i*10).. " minutos de experiencia extra.")      else         break      end   endend function onUse(cid, item, frompos, item2, topos)   local pausa = 60*60*1000 -- (1000 = 1 segundos) tiempo del script cuanto durara   local texto = "Agora voce tem 2X exp por 1 hora."   textofinal = "Tempo de Exp Potion finalizado." -- Texto que irá receber quando o efeito da potion acabar.   local exp = 2.0 -- cuanto usted quiere que le de la exp potion de exp , ejemplo cada es suplicada x2.   expfinal = 1 -- esto es para que la exp vuelva a su normalidad no mover.                 doRemoveItem(item.uid,1)                doPlayerSetExperienceRate(cid,exp)                doSendMagicEffect(frompos,30)                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,texto)            sendmsg (cid)                addEvent(potion,pausa,cid)   return trueend
<action itemid="7440" event="script" value="NOMBRE DE TU ARCHIVO.lua"/>

 

 

 

Script sem storage nem rola, morreu perdeu. =///

O lance todo do script em mod ali é fazer que na hora de tirar o storage e voltar o tempo normal é colocar pra ele retirar apenas o que ele adiconou, tipo, add 200% na exp? entao retira só os 200%.

Como ele manda voltar pra exp inicial ele buga o o proximo quando usado mais de um.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...