Postado Agosto 11, 2018 6 anos tipo, peguei um script de exp potion aqui no tibiaking e queria colocar um tempo restante pra potion acabar atualmente esta assim: Spoiler ai nesse lugar de "[XP]+25%" eu queria colocar um tempo eu queria que fosse por tempo assim: Spoiler 19:59 19:58 19:57 19:56 ... script da potion: Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +25% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 1.25 -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6544 -- seu item que dará double exp local efeito1 = 22 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1801 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect() if isPlayer(cid) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) doSendAnimatedText(getPlayerPosition(cid),"[XP]+25%", math.random(191,191)) end end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1800) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) a = 1 while a ~= timeEffect do addEvent(effect, a * 1000) a = a + 1 end elseif item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end alguem pode me ajudar?
Postado Agosto 12, 2018 6 anos coloca essa função na lib se não tiver function convertTime(minutes,seconds) local hours = 0 repeat if seconds >= 60 then minutes = minutes + 1; seconds = seconds - 60 elseif minutes >= 60 then hours = hours + 1; minutes = minutes - 60 end until seconds < 60 and minutes < 60 return {hours = hours, seconds = seconds, minutes = minutes} end -------------------------- function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +25% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 1.25 -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6544 -- seu item que dará double exp local efeito1 = 22 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1801 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect(cid, seconds) if not isCreature(cid) then return LUA_ERROR end local t, pos = convertTime(0, seconds), getCreaturePosition(cid) doSendMagicEffect(pos, 22) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, math.random(191,191)) if seconds ~= 1 then addEvent(effect, 1000, cid,seconds-1) end end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1800) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) effect(cid, 20*60) elseif item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Agosto 12, 2018 6 anos Autor mt obrigado @VodkartEDIT:@Vodkart, tipo no meu server existe 5 potions de exp diferentes dai só da pra usar uma por vez, dai eu tenho 5 potions: azul verde amarelo roxo vermelho dai tem um probleminha: se eu uso uma potion azul, ele começa a contar em texto azul 19:59...19:58...19:57... em AZUL até ai tudo bem... se eu clicar em outra potion de outra cor tipo , dou use na VERMELHA, ele muda a cor da contagem pra vermelho e continua a contagem 19:56...19:55...19:54... em VERMELHO ai tipo, se passar uns 10 segundos sem clicar em outra potion, as potions ficam trocando de cor aleatoriamente (das 5 cores que escolhi)vc consegue colocar pra nao fazer isso? tipo, cada um ter sua cor POT Verde: Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +25% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 1.25 -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6544 -- seu item que dará double exp local efeito1 = 24 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1201 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect(cid, seconds) if not isCreature(cid) then return LUA_ERROR end local t, pos = convertTime(0, seconds), getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, math.random(215,215)) if seconds ~= 1 then addEvent(effect, 1000, cid,seconds-1) end end if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce nao pode usar exp foods em area Protection Zone", TALKTYPE_ORANGE_1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1200) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) effect(cid, 20*60) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end POT Vermelho: Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +50% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 1.5 -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6542 -- seu item que dará double exp local efeito1 = 24 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1201 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect(cid, seconds) if not isCreature(cid) then return LUA_ERROR end local t, pos = convertTime(0, seconds), getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, math.random(215,215)) if seconds ~= 1 then addEvent(effect, 1000, cid,seconds-1) end end if getPlayerStorageValue(cid, 3044) < 0 then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce precisa da Payhunt quest para usar essa potion.", TALKTYPE_ORANGE_1) end if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce nao pode usar exp foods em area Protection Zone", TALKTYPE_ORANGE_1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) and getPlayerStorageValue(cid, 3044) == 1 then doPlayerSendTextMessage(cid,22,textofinal1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) and getPlayerStorageValue(cid, 3044) == 1 then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1200) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) effect(cid, 20*60) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end POT Amarelo Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +75% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 1.75 -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6541 -- seu item que dará double exp local efeito1 = 24 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1201 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect(cid, seconds) if not isCreature(cid) then return LUA_ERROR end local t, pos = convertTime(0, seconds), getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, math.random(215,215)) if seconds ~= 1 then addEvent(effect, 1000, cid,seconds-1) end end if getPlayerStorageValue(cid, 7575) < 0 then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce precisa da ultima quest para usar essa potion.", TALKTYPE_ORANGE_1) end if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce nao pode usar exp foods em area Protection Zone", TALKTYPE_ORANGE_1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) and getPlayerStorageValue(cid, 7575) == 1 then doPlayerSendTextMessage(cid,22,textofinal1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) and getPlayerStorageValue(cid, 7575) == 1 then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1200) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) effect(cid, 20*60) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end POT Roxo Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +100% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6545 -- seu item que dará double exp local efeito1 = 24 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1201 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect(cid, seconds) if not isCreature(cid) then return LUA_ERROR end local t, pos = convertTime(0, seconds), getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, math.random(215,215)) if seconds ~= 1 then addEvent(effect, 1000, cid,seconds-1) end end if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce nao pode usar exp foods em area Protection Zone", TALKTYPE_ORANGE_1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1200) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) effect(cid, 20*60) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end POT Azul Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 20*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Você Multiplicou +200% da sua Experiencia por 20 minutos" -- Texto que irá receber ao usar a potion. textofinal = "Acabou o potion de Experiencia." -- Texto que irá receber quando o efeito da potion acabar. local exp = 3 -- 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. local limitedeuso = 49015 local tempo = 20*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da potion, se nao estiver, teste relogar!" local seuitem = 6543 -- seu item que dará double exp local efeito1 = 24 -- efeito que ficara com o char por meia hora local efeito2 = 14 -- efeito que acontecera no momento que usar a pot --fim da parte configuravel não mecha se nao tiver conhecimento de scripting local timeEffect = 1201 -- tempo em segundos que o efeito vai apareceer no player, 31 = 30 segundos. sempre coloque 1 segundo a mais. function effect(cid, seconds) if not isCreature(cid) then return LUA_ERROR end local t, pos = convertTime(0, seconds), getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, math.random(215,215)) if seconds ~= 1 then addEvent(effect, 1000, cid,seconds-1) end end if not isPremium(cid) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce precisa ser VIP Account para usar este item.", TALKTYPE_ORANGE_1) end if getTilePzInfo(getCreaturePosition(cid)) then doSendMagicEffect(getPlayerPosition(cid), 2) return doCreatureSay(cid, "[Error] Voce nao pode usar exp foods em area Protection Zone", TALKTYPE_ORANGE_1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() > 0) then doPlayerSendTextMessage(cid,22,textofinal1) end if item.itemid == seuitem and (getPlayerStorageValue(cid, limitedeuso) - os.time() <= 0) then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 1200) doPlayerSendTextMessage(cid,22,texto) addEvent(potion,pausa,cid) effect(cid, 20*60) end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end Editado Agosto 12, 2018 6 anos por poko360 (veja o histórico de edições)
Postado Agosto 12, 2018 6 anos vc ja mexeu nas cores na função lá? por exemplo não precisa de math.random se a cor é só uma doSendAnimatedText(pos, t.minutes > 0 and t.minutes..":"..t.seconds or t.seconds, 215) [*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*] DISCORD: vodkart#6090
Postado Agosto 12, 2018 6 anos Autor tentei agora, deu no mesmo =/@Vodkart eu descobri uma coisa, quando um player usa uma potion de qualquer cor, a contagem de todo mundo muda a cor pra cor que ele usou exemplo eu uso uma verde, e voce usa uma roxa 5 segundos depois de mim, ai a contagem de todos do ot que tiver no efeito da potion fica roxa tem alguma possibilidade de botar essa cor pra cada um nao? ta tipo global storage Editado Agosto 12, 2018 6 anos 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.