Postado Fevereiro 28, 2016 9 anos Olá Gente, queria pedir a ajuda de vcs hoje, estou usando o mod Advanced Sound do Vyctor17, mas tem um bug na tabela do mod de sound, tipo assim a tabela é essa. SOUNDS = {--area sounds {fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}}, } se eu colocar somente um lugar com som nessa tabela funciona normalmente, mas se eu acrescentar 2 tags na tabela, para adicionar som em outros cantos alem desse canto que ta ai na tabela tipo assim. SOUNDS = {--area sounds {fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}}, {fromPos = {x = 1045, y = 1091, z = 7}, toPos = {x = 1057, y = 1103, z = 7}, sound = {"Cerulean.mp3", "Cerulean2.mp3"}}, } o som n toca, alias, o som das duas áreas n tocam, nem a primeira que no caso é a de saffron, e nem a segunda que é a de cerulean, só funciona quando tem somente uma tag na tabela que nem o primeiro exemplo que mostrei e vou mostrar agr denovo. SOUNDS = {--area sounds {fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}}, } alguém me ajuda pfv, queria poder colocar sons em mais áreas da tabela sem parar de funcionar os sons. Mostrar conteúdo oculto require('advsound') require('ex') SOUNDS_CONFIG = { folder = 'mods/Advanced Sound/Sounds/', loop=false, start_paused=false, checkInterval = 500, } local UPDATESOUND_OPCODE = 85 local PAUSESOUND_OPCODE = 81 SOUNDS = {--area sounds {fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}}, {fromPos = {x = 1045, y = 1091, z = 7}, toPos = {x = 1057, y = 1103, z = 7}, sound = {"Cerulean.mp3", "Cerulean2.mp3"}}, } local toggleSoundEvent local e local audio = nil local window = nil local volume = 100 local 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) end function iniciar() if (g_game.isOnline()) then removeEvent(e) toggleSoundEvent = addEvent(startAsound, SOUNDS_CONFIG.checkInterval) end end local m function startAsound() local player = g_game.getLocalPlayer() if not player then return end local pos = player:getPosition() for i = 1, #SOUNDS do if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then if audio == nil then m = advsound.playMusic(SOUNDS_CONFIG.folder..SOUNDS.sound[math.random(#SOUNDS.sound)], true, SOUNDS_CONFIG.start_paused) str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":") volume = tonumber(str[2]) advsound.setVolume(m, volume/100) audio = true end else audio = nil advsound.setPaused(m, true) removeEvent(toggleSoundEvent) end end toggleSoundEvent = scheduleEvent(startAsound, SOUNDS_CONFIG.checkInterval) end local music function getSound(protocol, opcode, buffer) local cof = string.explode(buffer, "|") local conff = { ["true"] = true, ["false"] = false, } music = advsound.playMusic(SOUNDS_CONFIG.folder..cof[1], conff[cof[2]], SOUNDS_CONFIG.start_paused) str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":") volume = tonumber(str[2]) advsound.setVolume(music, volume/100) end function pauseSound(protocol, opcode, buffer) if opcode == 81 then advsound.pauseAll() end end function terminate() disconnect(g_game, { onGameEnd = terminate }) e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval) audio = nil advsound.pauseAll() end function 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 Editado Fevereiro 28, 2016 9 anos por zangoosedoido (veja o histórico de edições)
Postado Março 3, 2016 9 anos Desculpe, mas eu estou sem tempo, por isso vou apenas te orientar a resolver seu problema. Citar for i = 1, #SOUNDS do if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then SOUNDS.fromPos ... Essa sentença não está usando o index da variável "i" declarada no loop acima dela. Deveria ficar dessa forma: Citar for i = 1, #SOUNDS do if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then Verifica em outras sentenças esse erro e muda elas como demonstrei acima. Espero que funcione. Editado Março 3, 2016 9 anos por dominus Nenhuma (veja o histórico de edições)
Postado Março 4, 2016 9 anos Autor Em 03/03/2016 em 15:49, dominus disse: Desculpe, mas eu estou sem tempo, por isso vou apenas te orientar a resolver seu problema. SOUNDS.fromPos ... Essa sentença não está usando o index da variável "i" declarada no loop acima dela. Deveria ficar dessa forma: Verifica em outras sentenças esse erro e muda elas como demonstrei acima. Espero que funcione. deu esse erro aqui no otc. Mostrar conteúdo oculto ERROR: lua function callback failed: LUA ERROR: /Advanced Sound/Adsound.lua:95: attempt to index local 'fromPos' (a nil value) stack traceback: [C]: ? /Advanced Sound/Adsound.lua:95: in function 'isInPos' /Advanced Sound/Adsound.lua:49: in function </Advanced Sound/Adsound.lua:43> deixei a script assim. Mostrar conteúdo oculto require('advsound') require('ex') SOUNDS_CONFIG = { folder = 'mods/Advanced Sound/Sounds/', loop=false, start_paused=false, checkInterval = 500, } local UPDATESOUND_OPCODE = 85 local PAUSESOUND_OPCODE = 81 SOUNDS = {--area sounds {fromPos = {x = 1045, y = 1042, z = 7}, toPos = {x = 1065, y = 1055, z = 7}, sound = {"Saffron.mp3", "Saffron2.mp3"}}, {fromPos = {x = 1045, y = 1091, z = 7}, toPos = {x = 1057, y = 1103, z = 7}, sound = {"Cerulean.mp3", "Cerulean2.mp3"}}, } local toggleSoundEvent local e local audio = nil local window = nil local volume = 100 local 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) end function iniciar() if (g_game.isOnline()) then removeEvent(e) toggleSoundEvent = addEvent(startAsound, SOUNDS_CONFIG.checkInterval) end end local m function startAsound() local player = g_game.getLocalPlayer() if not player then return end local pos = player:getPosition() for i = 1, #SOUNDS do if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then if audio == nil then m = advsound.playMusic(SOUNDS_CONFIG.folder..SOUNDS.sound[math.random(#SOUNDS.sound)], true, SOUNDS_CONFIG.start_paused) str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":") volume = tonumber(str[2]) advsound.setVolume(m, volume/100) audio = true end else audio = nil advsound.setPaused(m, true) removeEvent(toggleSoundEvent) end end toggleSoundEvent = scheduleEvent(startAsound, SOUNDS_CONFIG.checkInterval) end local music function getSound(protocol, opcode, buffer) local cof = string.explode(buffer, "|") local conff = { ["true"] = true, ["false"] = false, } music = advsound.playMusic(SOUNDS_CONFIG.folder..cof[1], conff[cof[2]], SOUNDS_CONFIG.start_paused) str = string.explode(window:getChildById('musicSoundVolumeLabel'):getText(), ":") volume = tonumber(str[2]) advsound.setVolume(music, volume/100) end function pauseSound(protocol, opcode, buffer) if opcode == 81 then advsound.pauseAll() end end function terminate() disconnect(g_game, { onGameEnd = terminate }) e = cycleEvent(iniciar, SOUNDS_CONFIG.checkInterval) audio = nil advsound.pauseAll() end function 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 function Play(sound, loop, vol) music = advsound.playMusic('data/sounds/'..sound, loop, false) -- Play("Nome Da Musica.mp3", true, 0.5) -- advsound.setVolume(music, vol) return true end
Postado Março 7, 2016 9 anos Em 03/03/2016 em 15:49, dominus disse: Desculpe, mas eu estou sem tempo, por isso vou apenas te orientar a resolver seu problema. SOUNDS.fromPos ... Essa sentença não está usando o index da variável "i" declarada no loop acima dela. Deveria ficar dessa forma: for i = 1, #SOUNDS do if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then Verifica em outras sentenças esse erro e muda elas como demonstrei acima. Espero que funcione. Desculpe, mas não sei o que houve que o post da minha resposta não mudou depois da edição que eu fiz. O que quero te explicar é o seguinte: Existe um loop ("for i = #SOUNDS do"), esse loop está varrendo a tabela "SOUNDS", mas na hora de obter os dados, ele está sendo chamado de forma direta ("SOUNDS.fromPos ") e não através do index do loop (SOUNDS.fromPos). Não sei porquê, mas as chaves "" não aparecem no texto, por isso coloquei entre aspas, mas não use ele com as aspas. Utilize as chaves com index "" entre a palavra "SOUNDS" e o ponto final "."que fica junto da palavra "fromPos". Editado Março 7, 2016 9 anos por dominus Bug do tk (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.