olá gente, boa noite, queria a ajuda de algum Scripter pra me dá uma ajudinha ligeira. n sou muito conceituado com lua, e sim com java e c++. mas vamos lá.
estou com um sistema de som que reproduz som em uma posição especifica do mapa, porem ele funciona com apenas 1 posição. só que quando ponho uma nova posição ou seja um array novo de posições diferentes dentro do array de "Sons" ele repete somente 1 segundo do arquivo mp3. creio eu que seja algum bug em algum if de comparação dentro do for que percorre o array. se alguém me ajudar fico agradecido.
Array sounds, e dentro do array, um array de posições e a string da música.
SOUNDS ={--area sounds{fromPos ={x =989, y =884, z =7}, toPos ={x =1072, y =946, z =7}, sound ="Musica1.mp3"},}
quando eu ponho somente um array de posições ele funciona. agr se eu fizer assim
SOUNDS ={--area sounds{fromPos ={x =989, y =884, z =7}, toPos ={x =1072, y =946, z =7}, sound ="Musica1.mp3"},{fromPos ={x =940, y =919, z =7}, toPos ={x =968, y =949, z =7}, sound ="Musica2.mp3"},}
ele faz o bug que eu falei a cima.
vou deixar a parte do código
require('irrklua')
require('ex')
SOUNDS_CONFIG ={
folder ='mods/Advanced Sound/Sounds/',
loop=false,
start_paused=false,
checkInterval =500,}local UPDATESOUND_OPCODE =85local PAUSESOUND_OPCODE =81
SOUNDS ={--area sounds{fromPos ={x =989, y =884, z =7}, toPos ={x =1072, y =946, z =7}, sound ="Musica1.mp3"},{fromPos ={x =940, y =919, z =7}, toPos ={x =968, y =949, z =7}, sound ="Musica2.mp3"},}local toggleSoundEvent
local e
local audio =nillocal window =nillocal volume =100local str
function init()
connect(g_game,{ onGameEnd = terminate })
window = modules.client_options.audioPanel
str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(),":")
volume = tonumber(str[2])
ProtocolGame.registerExtendedOpcode(UPDATESOUND_OPCODE, getSound)
ProtocolGame.registerExtendedOpcode(PAUSESOUND_OPCODE, pauseSound)
e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval)endfunction iniciar()if(g_game.isOnline())then
removeEvent(e)
toggleSoundEvent = addEvent(startAsound, SOUNDS_CONFIG.checkInterval)endendlocal m
function startAsound()local player = g_game.getLocalPlayer()ifnot player thenreturnendlocal pos = player:getPosition()for i =1,#SOUNDS doif(isInPos(pos, SOUNDS[i].fromPos, SOUNDS[i].toPos))thenif audio ==nilthen
m = irrklua.playMusic(SOUNDS_CONFIG.folder..SOUNDS[i].sound,true, SOUNDS_CONFIG.start_paused)
str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(),":")
volume = tonumber(str[2])
irrklua.setVolume(m, volume/100)
audio =trueendelse
audio =nil
irrklua.setPaused(m,true)
removeEvent(toggleSoundEvent)endend
toggleSoundEvent = scheduleEvent(startAsound, SOUNDS_CONFIG.checkInterval)endfunction pauseSound(protocol, opcode, buffer)if opcode ==81then
irrklua.pauseAll()endendfunction terminate()
disconnect(g_game,{ onGameEnd = terminate })
e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval)
audio =nil
irrklua.pauseAll()endfunction isInPos(pos, fromPos, toPos)return
pos.x>=fromPos.x and
pos.y>=fromPos.y and
pos.z>=fromPos.z and
pos.x<=toPos.x and
pos.y<=toPos.y and
pos.z<=toPos.z
end
Pergunta
Developer Berg 65
olá gente, boa noite, queria a ajuda de algum Scripter pra me dá uma ajudinha ligeira. n sou muito conceituado com lua, e sim com java e c++. mas vamos lá.
estou com um sistema de som que reproduz som em uma posição especifica do mapa, porem ele funciona com apenas 1 posição. só que quando ponho uma nova posição ou seja um array novo de posições diferentes dentro do array de "Sons" ele repete somente 1 segundo do arquivo mp3. creio eu que seja algum bug em algum if de comparação dentro do for que percorre o array. se alguém me ajudar fico agradecido.
Array sounds, e dentro do array, um array de posições e a string da música.
quando eu ponho somente um array de posições ele funciona. agr se eu fizer assim
ele faz o bug que eu falei a cima.
vou deixar a parte do código
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados