Ir para conteúdo

[Encerrado] Client com som


FireShok

Posts Recomendados

Estou com um problema com sistema de som , no qual o som so pega na cordenada que possua Z= 7 , outra diferente nao funciona exemplo Z= 6 ou Z= 2.

 

Aki o script:

Spoiler

SOUNDS_CONFIG = {
    soundChannel = SoundChannels.Music,
    checkInterval = 100,
    folder = 'music/',
    noSound = 'Nenhum arquivo de som para esta area',
}

SOUNDS = {

        {fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=7}, priority = 1, sound="Smile Town.ogg"},
        {fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=6}, priority = 1, sound="Smile Town.ogg"},
        
        {fromPos = {x=1579, y=1697, z=7}, toPos = {x=1593, y=1707, z=7}, priority = 2, sound="Fairy Tail - Main.ogg"},
        
        
        {fromPos = {x=1558, y=1695, z=7}, toPos = {x=1572, y=1707, z=7}, priority = 2, sound="Pokemon Center.ogg"},
        
        {fromPos = {x=729, y=851, z=7}, toPos = {x=808, y=905, z=7}, priority = 1, sound="Elite Four Battle.ogg"},
        {fromPos = {x=852, y=848, z=7}, toPos = {x=914, y=898, z=7}, priority = 1, sound="Elite Four Battle.ogg"},

        
        
} ----------

-- Sound
local rcSoundChannel
local showPosEvent
local playingSound

-- Design
soundWindow = nil
soundButton = nil

function toggle()
  if soundButton:isOn() then
    soundWindow:close()
    soundButton:setOn(false)
  else
    soundWindow:open()
    soundButton:setOn(true)
  end
end

function onMiniWindowClose()
  soundButton:setOn(false)
end

function init()
    for i = 1, #SOUNDS do
        SOUNDS.sound = SOUNDS_CONFIG.folder .. SOUNDS.sound
    end
    
    connect(g_game, { onGameStart = onGameStart,
                    onGameEnd = onGameEnd })
    
    rcSoundChannel = g_sounds.getChannel(SOUNDS_CONFIG.soundChannel)
    -- rcSoundChannel:setGain(value/COUNDS_CONFIG.volume)

    soundButton = modules.client_topmenu.addRightGameToggleButton('soundButton', tr('Sound Info') .. '', '/images/audio', toggle)
    soundButton:setOn(true)
    
    soundWindow = g_ui.loadUI('rcsound', modules.game_interface.getRightPanel())
    soundWindow:disableResize()
    soundWindow:setup()
    
    if(g_game.isOnline()) then
        onGameStart()
    end
end

function terminate()
    disconnect(g_game, { onGameStart = onGameStart,
                       onGameEnd = onGameEnd })
    onGameEnd()
    soundWindow:destroy()
    soundButton:destroy()
end

function onGameStart()
    stopSound()
    toggleSoundEvent = addEvent(toggleSound, SOUNDS_CONFIG.checkInterval)
end

function onGameEnd()
    stopSound()
    removeEvent(toggleSoundEvent)
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 toggleSound()
    local player = g_game.getLocalPlayer()
    if not player then return end
    
    local pos = player:getPosition()
    local toPlay = nil

    for i = 1, #SOUNDS do
        if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then
            if(toPlay) then
                toPlay.priority = toPlay.priority or 0
                if((toPlay.sound~=SOUNDS.sound) and (SOUNDS.priority>toPlay.priority)) then
                    toPlay = SOUNDS
                end
            else
                toPlay = SOUNDS
            end
        end
    end

    playingSound = playingSound or {sound='', priority=0}
    
    if(toPlay~=nil and playingSound.sound~=toPlay.sound) then
        g_logger.info("RC Sounds: New sound area detected:")
        g_logger.info("  Position: {x=" .. pos.x .. ", y=" .. pos.y .. ", z=" .. pos.z .. "}")
        g_logger.info("  Music: " .. toPlay.sound)
        stopSound()
        playSound(toPlay.sound)
        playingSound = toPlay
    elseif(toPlay==nil) and (playingSound.sound~='') then
        g_logger.info("RC Sounds: New sound area detected:")
        g_logger.info("  Left music area.")
        stopSound()
    end

    toggleSoundEvent = scheduleEvent(toggleSound, SOUNDS_CONFIG.checkInterval)
end

function playSound(sound)
    rcSoundChannel:enqueue(sound, 0)
    setLabel(clearName(sound))
end

function clearName(soundName)
    local explode = string.explode(soundName, "/")
    soundName = explode[#explode]
    explode = string.explode(soundName, ".ogg")
    soundName = ''
    for i = 1, #explode-1 do
        soundName = soundName .. explode
    end
    return soundName
end

function stopSound()
    setLabel(SOUNDS_CONFIG.noSound)
    rcSoundChannel:stop()
    playingSound = nil
end

function setLabel(str)
    soundWindow:recursiveGetChildById('currentSound'):getChildById('value'):setText(str)
end

 

Editado por FireShok
Link para o comentário
Compartilhar em outros sites

Em 21/02/2017 at 14:17, FireShok disse:

Estou com um problema com sistema de som , no qual o som so pega na cordenada que possua Z= 7 , outra diferente nao funciona exemplo Z= 6 ou Z= 2.

 

Aki o script:

  Ocultar conteúdo

SOUNDS_CONFIG = {

    soundChannel = SoundChannels.Music,

    checkInterval = 100,

    folder = 'music/',

    noSound = 'Nenhum arquivo de som para esta area',

}

SOUNDS = {

        {fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=7}, priority = 1, sound="Smile Town.ogg"},

        {fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=6}, priority = 1, sound="Smile Town.ogg"},

        

        {fromPos = {x=1579, y=1697, z=7}, toPos = {x=1593, y=1707, z=7}, priority = 2, sound="Fairy Tail - Main.ogg"},

        

        

        {fromPos = {x=1558, y=1695, z=7}, toPos = {x=1572, y=1707, z=7}, priority = 2, sound="Pokemon Center.ogg"},

        

        {fromPos = {x=729, y=851, z=7}, toPos = {x=808, y=905, z=7}, priority = 1, sound="Elite Four Battle.ogg"},

        {fromPos = {x=852, y=848, z=7}, toPos = {x=914, y=898, z=7}, priority = 1, sound="Elite Four Battle.ogg"},

        

        

} ----------

-- Sound

local rcSoundChannel

local showPosEvent

local playingSound

-- Design

soundWindow = nil

soundButton = nil

function toggle()

  if soundButton:isOn() then

    soundWindow:close()

    soundButton:setOn(false)

  else

    soundWindow:open()

    soundButton:setOn(true)

  end

end

function onMiniWindowClose()

  soundButton:setOn(false)

end

function init()

    for i = 1, #SOUNDS do

        SOUNDS.sound = SOUNDS_CONFIG.folder .. SOUNDS.sound

    end

    

    connect(g_game, { onGameStart = onGameStart,

                    onGameEnd = onGameEnd })

    

    rcSoundChannel = g_sounds.getChannel(SOUNDS_CONFIG.soundChannel)

    -- rcSoundChannel:setGain(value/COUNDS_CONFIG.volume)

    soundButton = modules.client_topmenu.addRightGameToggleButton('soundButton', tr('Sound Info') .. '', '/images/audio', toggle)

    soundButton:setOn(true)

    

    soundWindow = g_ui.loadUI('rcsound', modules.game_interface.getRightPanel())

    soundWindow:disableResize()

    soundWindow:setup()

    

    if(g_game.isOnline()) then

        onGameStart()

    end

end

function terminate()

    disconnect(g_game, { onGameStart = onGameStart,

                       onGameEnd = onGameEnd })

    onGameEnd()

    soundWindow:destroy()

    soundButton:destroy()

end

function onGameStart()

    stopSound()

    toggleSoundEvent = addEvent(toggleSound, SOUNDS_CONFIG.checkInterval)

end

function onGameEnd()

    stopSound()

    removeEvent(toggleSoundEvent)

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 toggleSound()

    local player = g_game.getLocalPlayer()

    if not player then return end

    

    local pos = player:getPosition()

    local toPlay = nil

    for i = 1, #SOUNDS do

        if(isInPos(pos, SOUNDS.fromPos, SOUNDS.toPos)) then

            if(toPlay) then

                toPlay.priority = toPlay.priority or 0

                if((toPlay.sound~=SOUNDS.sound) and (SOUNDS.priority>toPlay.priority)) then

                    toPlay = SOUNDS

                end

            else

                toPlay = SOUNDS

            end

        end

    end

    playingSound = playingSound or {sound='', priority=0}

    

    if(toPlay~=nil and playingSound.sound~=toPlay.sound) then

        g_logger.info("RC Sounds: New sound area detected:")

        g_logger.info("  Position: {x=" .. pos.x .. ", y=" .. pos.y .. ", z=" .. pos.z .. "}")

        g_logger.info("  Music: " .. toPlay.sound)

        stopSound()

        playSound(toPlay.sound)

        playingSound = toPlay

    elseif(toPlay==nil) and (playingSound.sound~='') then

        g_logger.info("RC Sounds: New sound area detected:")

        g_logger.info("  Left music area.")

        stopSound()

    end

    toggleSoundEvent = scheduleEvent(toggleSound, SOUNDS_CONFIG.checkInterval)

end

function playSound(sound)

    rcSoundChannel:enqueue(sound, 0)

    setLabel(clearName(sound))

end

function clearName(soundName)

    local explode = string.explode(soundName, "/")

    soundName = explode[#explode]

    explode = string.explode(soundName, ".ogg")

    soundName = ''

    for i = 1, #explode-1 do

        soundName = soundName .. explode

    end

    return soundName

end

function stopSound()

    setLabel(SOUNDS_CONFIG.noSound)

    rcSoundChannel:stop()

    playingSound = nil

end

function setLabel(str)

    soundWindow:recursiveGetChildById('currentSound'):getChildById('value'):setText(str)

end

 

Ja tentou assim:

 

{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=7}, priority = 1, sound="Smile Town.ogg"},{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=6}, priority = 1, sound="Smile Town.ogg"},{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=5}, priority = 1, sound="Smile Town.ogg"},{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=4}, priority = 1, sound="Smile Town.ogg"},

 

Link para o comentário
Compartilhar em outros sites

22 horas atrás, Crypter disse:

Ja tentou assim:

 

{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=7}, priority = 1, sound="Smile Town.ogg"},{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=6}, priority = 1, sound="Smile Town.ogg"},{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=5}, priority = 1, sound="Smile Town.ogg"},{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=4}, priority = 1, sound="Smile Town.ogg"},

 

continua do mesmo geito :/ 

Link para o comentário
Compartilhar em outros sites

Deve estár acontecendo alguma interferência entre os floors, exemplo o floor 7 é á superfície padrão do Tíbia já o floor 6 é embaixo ou sejá o subterrâneo e o floor 8 acima dá superfície é provável que o código esteja somente pegando o floor 7 mais como o criador disse que funciona no dele em todos floors não faz sentido.

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Scizorgame disse:

Tentou verificar se os floors estão ao contrário ? Invés de 4 seria 10, é bobeira mas é uma possibilidade.

Funciona do Floor 7 ao 15 , agora 6 ao 0  nao funciona.

Link para o comentário
Compartilhar em outros sites

50 minutos atrás, FireShok disse:

Funciona do Floor 7 ao 15 , agora 6 ao 0  nao funciona.

 

Esquece tudo, essa linha aqui:

{fromPos = {x=1509, y=1654, z=7}, toPos = {x=1662, y=1758, z=6}, priority = 1, sound="Smile Town.ogg"},

 

essa função aqui:

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.zend

 

Entendeu ? é obvio que não vai funcionar, tem que botar o X, Y e Z do fromPos SEMPRE menores que os X, Y e Z do toPos.

 

no caso seria:

{fromPos = {x=1509, y=1654, z=6}, toPos = {x=1662, y=1758, z=7}, priority = 1, sound="Smile Town.ogg"},

 

O pior que no final acabou sendo por estarem ao contrario só que em outro sentido kkk. =D

Editado por Scizorgame
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...