Jump to content

[Ajuda] SetSoundVolume [resolvido]


Recommended Posts

Galera, está acorrendo este erro

I7tYKF2.png

O som toca, mas esses Warnnigs me incomoda, alguém tem alguma solução?

  
function playGunfireSound() 
    local muzzleX, muzzleY, muzzleZ = getPedWeaponMuzzlePosition ( source )   
    local px, py, pz = getElementPosition ( source )  
    local weapon = getPedWeapon ( source ) 
    local current_1 = getElementData(source,"currentweapon_1") 
    local current_2 = getElementData(source,"currentweapon_2") 
    if not weapon then return end          
    if weapon == 27 and current_1 == "Saiga 12k" then 
    local sound = setSoundMaxDistance(playSound3D("soundweapons/sa58v.mp3",muzzleX, muzzleY, muzzleZ),150) 
        setSoundVolume(sound, 3) 
    elseif weapon == 25 and current_1 == "Winchester 1866" then 
        local sound = setSoundMaxDistance(playSound3D("soundweapons/winchester.wav",muzzleX, muzzleY, muzzleZ),150) 
        setSoundVolume(sound, 3) 
end 
end 
  

Edited by Guest
Link to comment

na função playSound3D faltou o true, acho que deve ser isso, e depois tente setar ele no meta como clientSide

meta.xml


client.lua

sound = playSound3D("sound.mp3", muzzleX, muzzleY, muzzleZ, true)-- adicionado true 
setSoundMaxDistance(sound, 60) 
setSoundMinDistance(sound, 1) 
setSoundVolume(sound, 100) 

Link to comment

achei um erro grave, você tem 2 variaveis com o mesmo nome

local sound = 
local sound = 

que está dando conflito com o ( setSoundVolume ), pois tem 2 "setSoundVolume" puxando a mesma variavel, ou seja

tudo duplicado com o mesmo nome :o

Link to comment

O problema não é a existência das variáveis duplicadas porque, com o uso do local, informa-se que aquela variável só existe dentro do escopo atual que, no caso, é o if ou else. Ou seja, o primeiro sound só existe dentro do if e, o segundo, só existe dentro do else. Maiores informações sobre variáveis locais e globais podem ser encontradas aqui.

Quando usamos variavel = funcaoQualquer(), armazenamos o retorno que funcaoQualquer() possui. No código atual, a variável está armazenando não o retorno de playSound3D, que é responsável por retornar um elemento do tipo som. Ela está armazenando o retorno de setSoundMaxDistance(), que retorna simplesmente um true ou false indicando se a distância foi ou não alterada.

  
-- Primeiro crie o som em si 
local sound = playSound3D("soundweapons/winchester.wav",muzzleX, muzzleY, muzzleZ) -- agora sound é o som em si 
  
-- Definimos a distancia maxima 
setSoundMaxDistance(sound, 150) --retorna true ou false, mas como nao é relevante, nao armazenamos em variavel nenhuma 
  
-- Define o volume. Funciona porque sound agora não é true ou false, mas o som em si 
setSoundVolume(sound, 100) 
  

Deu para sacar o que eu quis dizer? Sua variável sound não era o som em si, mas sim um valor booleano. Aí quando você usava setSoundVolume, você não passa o som, mas sim um valor booleano.

Edited by Guest
Link to comment

Roots, o código que você postou resolve de fato o problema. Mas não pelo true, e sim pelo fato de que você usou o mesmo sistema: armazenou, em sound, o retorno de playSound3D(), e não de setSoundMaxDistance(). Já o Adisson armazenava em sound o retorno de setSoundMaxDistance(). O true na verdade é só um argumento opcional. Inclusive, como ele quer alterar o som dos disparos, acredito que ele prefira com false (ou sem nada, já que false é padrão).

Link to comment

Adisson, pode postar seu código? Verifiquei o meu e este está exatamente igual ao do Roots, somente com os valores numéricos alterados. Quero ler seu código porque pode acontecer de você ter definido playSound3D() em um IF e, no ELSE, somente setado a distância máxima. Como eu disse, o local define o escopo ao qual a variável existe. Ou seja, o som precisaria ser criado antes da condição ou dentro de cada uma (indubitavelmente preferível a primeira opção, de declarar antes da condição).

Link to comment
  • 2 weeks later...
function playGunfireSound() 
    local muzzleX, muzzleY, muzzleZ = getPedWeaponMuzzlePosition ( source )   
    local px, py, pz = getElementPosition ( source )  
    local weapon = getPedWeapon ( source ) 
    local current_1 = getElementData(source,"currentweapon_1") 
    local current_2 = getElementData(source,"currentweapon_2") 
    if not weapon then return end          
    if weapon == 25 and current_1 == "Winchester 1866" then 
    local sound = playSound3D("soundweapons/Winchester .wav", muzzleX, muzzleY, muzzleZ, true) 
    setSoundMaxDistance(sound, 185) 
    setSoundMinDistance(sound, 1) 
setSoundVolume(sound, 100) 
  
    end 
end 
addEventHandler("onClientPlayerWeaponFire",getRootElement(),playGunfireSound) 
--------------------------------------------------------------------------------->> 

Link to comment

FLzBV7y.png

function playGunfireSound() 
    local muzzleX, muzzleY, muzzleZ = getPedWeaponMuzzlePosition ( source )   
    local px, py, pz = getElementPosition ( source ) 
    local weapon = getPedWeapon ( source ) 
    local current_1 = getElementData(source,"currentweapon_1") 
    local current_2 = getElementData(source,"currentweapon_2") 
    if not weapon then return end         
    if weapon == 25 and current_1 == "Winchester 1866" then 
    local sound = playSound3D("soundweapons/Winchester .wav", muzzleX, muzzleY, muzzleZ) 
    setSoundMaxDistance(sound, 185) 
    setSoundMinDistance(sound, 1) 
setSoundVolume(sound, 1.0) 
  
    end 
end 
addEventHandler("onClientPlayerWeaponFire",getRootElement(),playGunfireSound) 
--------------------------------------------------------------------------------->> 

Link to comment
Obrigado galera, desculpe pelo transtorno mas tinha uma linha errada no meu código, não estava igual ao do #RooTs, agora funcionou, desculpas por minha falta de atenção. Obrigado pela ajuda pessoal, obrigado mesmo.

humm, o engraçado é que.....

o meu

setSoundVolume(sound, 100) 

funcionou sem qualquer erro :?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...