Postado Abril 11, 2017 8 anos Boa noite, gostaria que o player não perdesse o efeito do potion xp caso morra ou deslogue. Meu Script function onUse(cid, item, frompos, item2, topos) local pausa = 30*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Sua Experiencia está x2 por 30 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 tempo = 30*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Você já esta sob efeito da pot de experiência espere o efeito acabar." local seuitem = 12289 -- seu item que dará double exp local efeito1 = 14 -- efeito que ficara com o char por meia hora local efeito2 = 1 -- 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, 2 = 1 segundos. sempre coloque 1 segundo a mais. function effect() if isPlayer(cid) then local pos = getCreaturePosition(cid) doSendMagicEffect(pos, efeito1) end end doPlayerSetExperienceRate(cid,exp) doSendMagicEffect(frompos,efeito2) doPlayerSendTextMessage(cid,22,texto) doRemoveItem(item.uid,1) addEvent(potion,pausa,cid) a = 1 while a ~= timeEffect do addEvent(effect, a * 1000) a = a + 1 end return true end function potion(cid) doPlayerSetExperienceRate(cid,expfinal) doPlayerSendTextMessage(cid,22,textofinal) end Obrigado desde já! Editado Abril 11, 2017 8 anos por XandimH (veja o histórico de edições)
Postado Abril 11, 2017 8 anos libs > 050-function adicione Spoiler function getTime(s) local n = math.floor(s / 60) s = s - (60 * n) return n, s end CreatureEventChecker = function(event, ...) if isCreature(arg[1]) then event(unpack(arg)) end end creatureEvent = function(event, delay, ...) addEvent(CreatureEventChecker, delay, event, unpack(arg)) end function getPlayerExtraExpRate(cid) return (getPlayerRates(cid)[8]-1)*100 end actions > scripts > potionexp.lua nao esquece da tag Spoiler function onUse(cid, item, frompos, item2, topos) local pausa = 19*60*1000 -- (1000 = 1 segundos) Tempo que o script durará local texto = "Voce esta com exp bonus por 30 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 = 30*60*1000 -- 1000 = 1s então 1000 vezes 60 vezes 30 = 30 minutos local textofinal1 = "Voce ja esta sob efeito da pot de experiencia espere o efeito acabar." local seuitem = 12289 -- seu item que dará double exp local efeito1 = 13 -- efeito que ficara com o char por meia hora local efeito2 = 35 -- 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) 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 creaturescript > scripts > potionexp.lua tag: <event type="login" name="initao" event="script" value="initao.lua"/> adicione em login.lua registerCreatureEvent(cid, "initao") Spoiler function onLogin(cid) 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, "O Efeito da Potion Termina em.") end creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 49015)))-i)*1000, cid, "O Efeito da Potion Termina em "..a..".") end end return true end obs: não testei. a parte de logar XD Scriptszinhos: Spoiler [CREATURESCRIPT] Auto TP depois de matar boss [ACTION] Clean Area [TALKACTION] !FelizAnoNovo [ACTION + MOVEMENT] Cartas ao GOD [CREATURESCRIPT] Always Emblem System [ACTION] Anihi simples [TALKACTIONS] Urinar / fazer xixi Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.
Postado Abril 11, 2017 8 anos Autor Opa Brother, só fui testar agora, mas com a função onlogin, nenhum player consegue logar, ele loga, da o erro e desloga, nem chega a aparecer a tela do jogo na vdd... fica só naquele "connecting..."
Postado Abril 12, 2017 8 anos erro no console? Scriptszinhos: Spoiler [CREATURESCRIPT] Auto TP depois de matar boss [ACTION] Clean Area [TALKACTION] !FelizAnoNovo [ACTION + MOVEMENT] Cartas ao GOD [CREATURESCRIPT] Always Emblem System [ACTION] Anihi simples [TALKACTIONS] Urinar / fazer xixi Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.
Postado Abril 12, 2017 8 anos Autor Sim, ele da erro na Function "onlogin" , creature not found, mas ja resolvi usando um mod, adaptei ao meu servidor e ta rodando bem! Obrigado pela ajuda! OBS: o mod é o advancedpotionsystem q tem aqui no tk msm.
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.