+Sommer Posted February 29 Share Posted February 29 Fala rapaziada blz, estou tentando fazer um sistema que utiliza musicas, mas queria fazer um esquema de toda vez que uma musica acabar antes de entrar a outra rolar um fade out, tentei utilizar um setTimer ma snao deu certo apaguei procurei um pouco e achei uma função util, tentei fazer da maneira que esta ai, mas sem sucesso tbm, creio que terei que pegar o tamanho do som/musica e setar algum limite pra ele e quando isso acontecer setar = 0, na logica creio q é isso, mas n sei como aplicar, se alguem puder dar uma luz agradeço, segue o codigo atual local playlist = { "playlist/1.mp3", "playlist/2.mp3", "playlist/3.mp3", "playlist/4.mp3", "playlist/5.mp3", "playlist/6.mp3" } addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function() local sound = playSound(playlist[math.random(#playlist)], false) addEventHandler("onClientSoundStopped", getRootElement(), function(reason) if sound and reason == "finished" then playSound(playlist[math.random(#playlist)], false) else local volume = getSoundVolume(sound) if volume == true then return else stopSoundSlowly(sound) end end end) end) -- ## Scripts Auxiliares ## -- function stopSoundSlowly( sound_element ) if not isElement( sound_element ) then return false end local sound_timer_quant = getSoundVolume( sound_element ) setTimer( function( ) if not isElement( sound_element ) then return end local sound_volume = getSoundVolume( sound_element ) sound_volume = ( ( sound_volume * 10 ) - ( 0.1 * 10 ) ) / 10 setSoundVolume( sound_element, sound_volume - 0.1 ) if sound_volume > 0 then return end stopSound( sound_element ) end, 500, sound_timer_quant * 10 ) end Link to comment
WWW Posted February 29 Share Posted February 29 addEventHandler("onClientResourceStart", getResourceRootElement(), function() end) addEventHandler("onClientSoundBeat", getResourceRootElement(), function() end) addEventHandler("onClientSoundStopped", getResourceRootElement(), function() end) Link to comment
+Sommer Posted March 1 Author Share Posted March 1 21 hours ago, WWW said: addEventHandler("onClientResourceStart", getResourceRootElement(), function() local sound = playSound(playlist[math.random(#playlist)], false) end) addEventHandler("onClientSoundBeat", getResourceRootElement(), function(time) if time > getSoundLength(source) - 5 then stopSoundSlowly(source) end end) addEventHandler("onClientSoundStopped", getResourceRootElement(), function(reason) if reason == "finished" then playSound(playlist[math.random(#playlist)], false) end end) Tentei da forma como colocou e sem sucesso, ele nao executa o fade e quando executou a proxima musica nao foi tocada ou toca a mesma musica repetidamente, posso estar utilizando de maneira incorreta? tentei separadamente como mandou e tentei desse jeito, teria outro metodo, pois em um futuro irei colocar o nome da musica q esta sendo tocada, ent precisava q a proxima musica tocasse nao repetidamente mas de forma aleatoria e com precisao para colocar o nome, maneira q tentei: local playlist = { {"playlist/1.mp3", "EDEN - Drugs"}, {"playlist/2.mp3", "Fukkit - Kiwi"}, {"playlist/3.mp3", "Lilbubblegum x Letoa - Guap"}, {"playlist/4.mp3", "Luh Kel - How to love"}, {"playlist/5.mp3", "Second Time - Style aomine"}, {"playlist/6.mp3", "Thareapa - Bad spin"} } local random = math.random(1, #playlist) addEventHandler("onClientResourceStart", getResourceRootElement(), function() local sound = playSound(playlist[random][1], false) addEventHandler("onClientSoundBeat", getResourceRootElement(), function(time) if time > getSoundLength(source) - 5 then stopSoundSlowly(source) end addEventHandler("onClientSoundStopped", getResourceRootElement(), function(reason) if ( reason == "finished" ) then playSound(playlist[random][1], false) end end) end) end) -- Login UI -- -- ## Scripts Auxiliares ## -- function stopSoundSlowly( sound_element ) if not isElement( sound_element ) then return false end local sound_timer_quant = getSoundVolume( sound_element ) setTimer( function( ) if not isElement( sound_element ) then return end local sound_volume = getSoundVolume( sound_element ) sound_volume = ( ( sound_volume * 10 ) - ( 0.1 * 10 ) ) / 10 setSoundVolume( sound_element, sound_volume - 0.1 ) if sound_volume > 0 then return end stopSound( sound_element ) end, 500, sound_timer_quant * 10 ) end Link to comment
WWW Posted March 1 Share Posted March 1 local sound = playSound("https://upload.wikimedia.org/wikipedia/commons/0/0d/Hino-Nacional-Brasil-instrumental-mec.ogg", false) addEventHandler("onClientRender", root, function() for i, v in pairs(getElementsByType("sound", resourceRoot)) do if getSoundPosition(v) >= getSoundLength(v) - 10 then setSoundVolume(v, getSoundVolume(v) - 0.005) end end end) 1 Link to comment
+Sommer Posted March 2 Author Share Posted March 2 (edited) On 01/03/2024 at 08:04, WWW said: local sound = playSound("https://upload.wikimedia.org/wikipedia/commons/0/0d/Hino-Nacional-Brasil-instrumental-mec.ogg", false) addEventHandler("onClientRender", root, function() for i, v in pairs(getElementsByType("sound", resourceRoot)) do if getSoundPosition(v) >= getSoundLength(v) - 10 then setSoundVolume(v, getSoundVolume(v) - 0.005) end end end) Certo, perfeito até demais kakakaka muito obrigado de vdd, depois disso eu so estou tendo o ultimo problema pode me dar uma direção de onde estou errando? a musica esta aleatoria mas somente quando eu dou start ou restart no resource, mesmo eu colcocando uma função para quando a musica parar, nesse link tem um exemplo https://www.upload.ee/image/16342877/duvida.png On 01/03/2024 at 08:04, WWW said: local soundtrack = { {"soundtrack/1.mp3", "Gorillaz - DARE"}, {"soundtrack/2.mp3", "Lilbubblegum - Thotties"}, {"soundtrack/3.mp3", "Lh chucro - Pepp@"} } local random = math.random(1, #soundtrack) addEventHandler("onClientResourceStart", getResourceRootElement(), function() local music = playSound(soundtrack[random][1]) outputChatBox("Você está escutando: " .. soundtrack[random][2]) addEventHandler("onClientRender", root, function() for i, sound in pairs(getElementsByType("sound", resourceRoot)) do if getSoundPosition(sound) >= getSoundLength(sound) - 10 then setSoundVolume(sound, getSoundVolume(sound) - 0.005) end end end) addEventHandler("onClientSoundStopped", getRootElement(), function(reason) if reason == "finished" then if music == music then local music = playSound(soundtrack[random][1]) outputChatBox("Agora você está escutando: " .. soundtrack[random][2]) end end end) end) Edited March 2 by +Sommer Link to comment
WWW Posted March 2 Share Posted March 2 addEventHandler("onClientSoundStopped", resourceRoot, function(reason) local soundtrack = playlist[math.random(#playlist)] if reason == "destroyed" then playSound(soundtrack[1], false) elseif reason == "finished" then playSound(soundtrack[1], false) elseif reason == "paused" then playSound(soundtrack[1], false) end outputChatBox("Agora você está escutando: " .. soundtrack[2]) end) 1 Link to comment
+Sommer Posted March 3 Author Share Posted March 3 20 hours ago, WWW said: addEventHandler("onClientSoundStopped", resourceRoot, function(reason) local soundtrack = playlist[math.random(#playlist)] if reason == "destroyed" then playSound(soundtrack[1], false) elseif reason == "finished" then playSound(soundtrack[1], false) elseif reason == "paused" then playSound(soundtrack[1], false) end outputChatBox("Agora você está escutando: " .. soundtrack[2]) end) Agora sim funcionou perfeitamente, muito obrigado mesmo principe, aprendi funções e ordens q nunca tinha usado com isso, obrigado mesmo de vdd Link to comment
Recommended Posts