Postado Abril 3, 2018 7 anos Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website). TFS 0.4 Base: Queria colocar esse script de exp potion pra NAO usar na protection zone, alguem sabe colocar? grato <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="TibiaKing.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs50"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = FALSE, needlvl = {TRUE, level = 1}, costmana = {FALSE, mana = 10}, addrate = 25, -- 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="6544" event="script"><![CDATA[ domodlib('PotionExpConfigs50') if getPlayerStorageValue(cid, 49015) >= 1 then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] So pode usar 1 EXP POT por vez.", TALKTYPE_ORANGE_1) 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, "[Exp +25%], o efeito acabara em "..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))) doCreatureSay(cid, "EXP POTION Ativada, voce ganhou um bonus de EXP [+25%] por 30 minutos.", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid), 21) setPlayerStorageValue(cid, 49015, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 49015, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs50') local time = configs.time if os.time()-getPlayerStorageValue(cid, 49015) < time *60 then doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 49015))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 49015))) * 1000 , cid, 49015, 0) for i = (time*60-(os.time()-getPlayerStorageValue(cid, 49015))), 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, 49015))) then creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 49015)))*1000, cid, "The effect of the exp potion end.") end creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 49015)))-i)*1000, cid, "+25% de experiencia!, o efeito acabara em "..a..".") end end return TRUE ]]></creaturescript> </mod> Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
Postado Abril 3, 2018 7 anos Solução <?xml version="1.0" encoding="UTF-8"?> <mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="TibiaKing.com"> <!-- Configs and Functions --> <config name="PotionExpConfigs50"><![CDATA[ ------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE configs = { time = 30, ---- TIME IN MINUTES needpa = FALSE, needlvl = {TRUE, level = 1}, costmana = {FALSE, mana = 10}, addrate = 25, -- 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="6544" event="script"><![CDATA[ domodlib('PotionExpConfigs50') if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] nao pode usar em pz", TALKTYPE_ORANGE_1) end if getPlayerStorageValue(cid, 49015) >= 1 then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] So pode usar 1 EXP POT por vez.", TALKTYPE_ORANGE_1) 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, "[Exp +25%], o efeito acabara em "..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))) doCreatureSay(cid, "EXP POTION Ativada, voce ganhou um bonus de EXP [+25%] por 30 minutos.", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid), 21) setPlayerStorageValue(cid, 49015, os.time()) creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 49015, 0) return TRUE ]]></action> <creaturescript type="login" name="ExpPotion" event="script"><![CDATA[ domodlib('PotionExpConfigs50') local time = configs.time if os.time()-getPlayerStorageValue(cid, 49015) < time *60 then doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100)) creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 49015))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100))) creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 49015))) * 1000 , cid, 49015, 0) for i = (time*60-(os.time()-getPlayerStorageValue(cid, 49015))), 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, 49015))) then creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 49015)))*1000, cid, "The effect of the exp potion end.") end creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 49015)))-i)*1000, cid, "+25% de experiencia!, o efeito acabara em "..a..".") end end return TRUE ]]></creaturescript> </mod>
Postado Abril 4, 2018 7 anos Autor funcionou perfeitamente, obrigado, poderia me falar onde voce alterou? eu tenho outros 3 script pra colocar isso tambem
Postado Abril 4, 2018 7 anos 11 minutos atrás, poko360 disse: funcionou perfeitamente, obrigado, poderia me falar onde voce alterou? eu tenho outros 3 script pra colocar isso tambem Basta usar: if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] nao pode usar em pz", TALKTYPE_ORANGE_1) end antes de iniciar a ação. Esse código checa se o player está em pz, se estiver ele envia a mensagem de erro, se não estiver executa a ação.
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.