IOWeenI 0 Postado Dezembro 25, 2020 Share Postado Dezembro 25, 2020 Boom basicamente o que eu quero é que o player ao usar esses buffs de XP fique saindo um efeito nele Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Dezembro 25, 2020 Share Postado Dezembro 25, 2020 Considerando que esse script está funcionando é só substituir o código por esse: local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM function onUse(cid, item, fromPosition, itemEx, toPosition) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false --[[if expItem.timeType == "death" then tempo = "death" death = true else]] if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, 45144) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, 45144, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Só colocar o id do efeito na variável effect que coloquei lá em cima. Avisa se der algum erro IOWeenI reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Dezembro 25, 2020 Autor Share Postado Dezembro 25, 2020 4 minutos atrás, Yan18 disse: Considerando que esse script está funcionando é só substituir o código por esse: local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM function onUse(cid, item, fromPosition, itemEx, toPosition) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false --[[if expItem.timeType == "death" then tempo = "death" death = true else]] if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, 45144) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, 45144, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Só colocar o id do efeito na variável effect que coloquei lá em cima. Avisa se der algum erro VLW MANIN PERFEITO ❤️ Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Dezembro 25, 2020 Share Postado Dezembro 25, 2020 1 minuto atrás, wenderotpoke disse: VLW MANIN PERFEITO ❤️ Que bom que funcionou ?. Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Dezembro 25, 2020 Autor Share Postado Dezembro 25, 2020 2 minutos atrás, Yan18 disse: Que bom que funcionou ?. agora que percebi uma coisinha kkk ele n continua fazendo o efeito tipo eu quero que fique continuo ate o buff acabar tem como? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 2, 2021 Share Postado Janeiro 2, 2021 Em 25/12/2020 em 14:53, wenderotpoke disse: agora que percebi uma coisinha kkk ele n continua fazendo o efeito tipo eu quero que fique continuo ate o buff acabar tem como? Ah sim, tem como sim. Substitui o código por esse: local function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end while --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, 3, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Eu alterei o código e criei uma função para ficar soltando o efeito no player enquanto ele tem buff. Na função que criei buffEffect, tem os seguintes parâmetros: cid = Player time = A cada quantos segundos vai sair o efeito no player novamente effect = Id do efeito duration = Duração do buff O que você vai precisar mudar, praticamente é o segundo e terceiro parâmetro, que é o intervalo do efeito e o id do efeito. Testa e fala se der algum erro. Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Janeiro 3, 2021 Autor Share Postado Janeiro 3, 2021 12 horas atrás, Yan18 disse: Ah sim, tem como sim. Substitui o código por esse: local function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end while --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, 3, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Eu alterei o código e criei uma função para ficar soltando o efeito no player enquanto ele tem buff. Na função que criei buffEffect, tem os seguintes parâmetros: cid = Player time = A cada quantos segundos vai sair o efeito no player novamente effect = Id do efeito duration = Duração do buff O que você vai precisar mudar, praticamente é o segundo e terceiro parâmetro, que é o intervalo do efeito e o id do efeito. Testa e fala se der algum erro. Mano me perdi aqui kkkk calma ai vamo ve se entendi em time eu coloco o tempo né? tipo a cada 1s coloco 100? e a duração eu gostaria ate o buff acabar ai faz como? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 3, 2021 Share Postado Janeiro 3, 2021 11 horas atrás, wenderotpoke disse: Mano me perdi aqui kkkk calma ai vamo ve se entendi em time eu coloco o tempo né? tipo a cada 1s coloco 100? e a duração eu gostaria ate o buff acabar ai faz como? Você só precisa colocar o tempo em segundos para o efeito sair novamente no player. Ou seja, se você colocar 3, a cada 3 segundos vai repetir o efeito. Por exemplo, eu sei que o buff tem duração de 1 dia, então dentro desse intervalo de 24 horas, quando o player está online, se eu quiser que nesse tempo o efeito do buff fique repetindo a cada 5 segundos, eu coloco 5: buffEffect(cid, 5, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF Mas, vou te facilitar a vida, já que está confuso, vou criar uma variável que repete o efeito a cada X segundos, substitui o código por esse: local loop_effect_segundos = 3 -- INTERVALO DE TEMPO EM SEGUNDOS QUE VAI SAIR EFEITO NO PLAYER ENQUANTO POSSUIR O BUFF local function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) loop_effect_segundos = math.floor(loop_effect_segundos) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end while --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, loop_effect_segundos, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Pronto, agora a única coisa que você precisa se preocupar e alterar, é o valor na variável loop_effect_segundos na primeira linha do código. Altere lá o valor em segundos que quer que repita o efeito no player (loop) enquanto ele possuir buff. Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Janeiro 5, 2021 Autor Share Postado Janeiro 5, 2021 Em 03/01/2021 em 12:23, Yan18 disse: Você só precisa colocar o tempo em segundos para o efeito sair novamente no player. Ou seja, se você colocar 3, a cada 3 segundos vai repetir o efeito. Por exemplo, eu sei que o buff tem duração de 1 dia, então dentro desse intervalo de 24 horas, quando o player está online, se eu quiser que nesse tempo o efeito do buff fique repetindo a cada 5 segundos, eu coloco 5: buffEffect(cid, 5, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF Mas, vou te facilitar a vida, já que está confuso, vou criar uma variável que repete o efeito a cada X segundos, substitui o código por esse: local loop_effect_segundos = 3 -- INTERVALO DE TEMPO EM SEGUNDOS QUE VAI SAIR EFEITO NO PLAYER ENQUANTO POSSUIR O BUFF local function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) loop_effect_segundos = math.floor(loop_effect_segundos) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end while --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, loop_effect_segundos, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Pronto, agora a única coisa que você precisa se preocupar e alterar, é o valor na variável loop_effect_segundos na primeira linha do código. Altere lá o valor em segundos que quer que repita o efeito no player (loop) enquanto ele possuir buff. deu esse erro aqui mano [Error - LuaScriptInterface::loadFile] data/actions/scripts/ExpItems.lua:58: 'do' expected near 'doRemoveItem' [Warning - Event::loadScript] Cannot load script (data/actions/scripts/ExpItems.lua) data/actions/scripts/ExpItems.lua:58: 'do' expected near 'doRemoveItem' Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 5, 2021 Share Postado Janeiro 5, 2021 2 horas atrás, wenderotpoke disse: deu esse erro aqui mano [Error - LuaScriptInterface::loadFile] data/actions/scripts/ExpItems.lua:58: 'do' expected near 'doRemoveItem' [Warning - Event::loadScript] Cannot load script (data/actions/scripts/ExpItems.lua) data/actions/scripts/ExpItems.lua:58: 'do' expected near 'doRemoveItem' Esqueci um while ali haha, substitui o código por esse: local function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) loop_effect_segundos = math.floor(loop_effect_segundos) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, loop_effect_segundos, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Testa e veja se continua dando erro. Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Janeiro 5, 2021 Autor Share Postado Janeiro 5, 2021 2 horas atrás, Yan18 disse: Esqueci um while ali haha, substitui o código por esse: local function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) loop_effect_segundos = math.floor(loop_effect_segundos) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, loop_effect_segundos, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Testa e veja se continua dando erro. tu so tirou o While né? kkk eu fiz a msm coisa aqui e pegou mas so o buff n estava fazendo o efeito Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 5, 2021 Share Postado Janeiro 5, 2021 2 horas atrás, wenderotpoke disse: tu so tirou o While né? kkk eu fiz a msm coisa aqui e pegou mas so o buff n estava fazendo o efeito Sim, eu ia usar while, mas ai achei melhor usar de outra forma, mas esqueci de tirar. Não entendi o problema que está dando, como assim pegou mas o buff não está fazendo efeito? Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Janeiro 6, 2021 Autor Share Postado Janeiro 6, 2021 4 horas atrás, Yan18 disse: Sim, eu ia usar while, mas ai achei melhor usar de outra forma, mas esqueci de tirar. Não entendi o problema que está dando, como assim pegou mas o buff não está fazendo efeito? O efeito magico n fica saindo do player ainda '-' n sei o motivo de n estar pegando o Efeito do buff ta normal Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 6, 2021 Share Postado Janeiro 6, 2021 1 hora atrás, wenderotpoke disse: O efeito magico n fica saindo do player ainda '-' n sei o motivo de n estar pegando o Efeito do buff ta normal Da algum erro na distro? Link para o comentário Compartilhar em outros sites More sharing options...
0 IOWeenI 0 Postado Janeiro 6, 2021 Autor Share Postado Janeiro 6, 2021 10 horas atrás, Yan18 disse: Da algum erro na distro? nenhum ele pega mas n da erro só não fica com o efeito mesmo andei pensando ontem sera que não teria que ter algum evento registrado? pq quando vc logar ele iria sumir tbm né? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 6, 2021 Share Postado Janeiro 6, 2021 3 horas atrás, wenderotpoke disse: nenhum ele pega mas n da erro só não fica com o efeito mesmo andei pensando ontem sera que não teria que ter algum evento registrado? pq quando vc logar ele iria sumir tbm né? Muito bem observado, é isso mesmo, como foi feito por actions, então só vai funcionar na primeira vez que der use no item e até deslogar. Faz o seguinte, substitui o código de actions por esse: function buffEffect(cid, time, effect, duration) duration = math.floor(duration) if not cid then return true end if duration > os.time() then return doSendMagicEffect(getThingPos(cid), effect) and addEvent(buffEffect, 1000 * time, cid.uid, time, effect, duration) else return true end end local items = { [19268] = {percentExtra = 50, timeType = "hours", time = 1}, -- 1 hora [19269] = {percentExtra = 100, timeType = "hours", time = 1}, -- 1 hora [19270] = {percentExtra = 50, timeType = "days", time = 7}, -- 1 semana [19271] = {percentExtra = 100, timeType = "days", time = 7}, -- 1 semana [19272] = {percentExtra = 50, timeType = "days", time = 30}, -- 1 Mês [19273] = {percentExtra = 100, timeType = "days", time = 30}, -- 1 Mês } local effect = 28 -- EFEITO QUE SAI NO PLAYER AO USAR O ITEM local storage_time = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR function onUse(cid, item, fromPosition, itemEx, toPosition) loop_effect_segundos = math.floor(loop_effect_segundos) local expItem = items[item.itemid] if not expItem then return true end local tempo = 0 local death = false if expItem.timeType == "days" then tempo = expItem.time * 60 * 60 * 24 else -- Hours tempo = expItem.time * 60 * 60 end if getPlayerStorageValue(cid, storage_time) - os.time() > 1 then doPlayerSendTextMessage(cid, 20, "Você ainda tem um Experience Booster ativo de "..getPlayerStorageValue(cid, 45145).."%. Ele irá acabar em "..convertTime(getPlayerStorageValue(cid, 45144) - os.time())..".") return false end --doSendMagicEffect(getThingPos(cid), effect) -- FUNÇÃO QUE SAI EFEITO NO PLAYER AO USAR O ITEM buffEffect(cid, loop_effect_segundos, effect, storage_time) -- FUNÇÃO QUE SAI EFEITO NO PLAYER ENQUANTO ELE ESTÁ COM BUFF doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, storage_time, tempo + os.time()) setPlayerStorageValue(cid, 45145, expItem.percentExtra) doPlayerSendTextMessage(cid, 20, "Você ativou um Experience Booster de "..expItem.percentExtra.."% a mais, que durará "..(death and "até morrer" or convertTime(tempo))..".") return true end Agora vai em Data/Creaturescripts/Scripts ou Data/Creaturescripts/Scripts/Player e abre o arquivo login.lua embaixo de: function onLogin(cid) adicione esse bloco: local storage_buff = 45144 -- STORAGE QUE ARMAZENA O TEMPO QUE O BUFF VAI DURAR local effect_buff = 28 if getPlayerStorageValue(cid, storage_buff) > os.time() then buffEffect(cid, 3, effect_buff, storage_buff) end Reinicia a distro, e usa o item novamente e testa, ai testa uns minutos online, depois desloga e loga de novo. Qualquer problema você me avisa. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
IOWeenI 0
Boom basicamente o que eu quero é que o player ao usar esses buffs de XP fique saindo um efeito nele
Link para o comentário
Compartilhar em outros sites
30 respostass a esta questão
Posts Recomendados