Adissonboy11 Posted May 16, 2015 Share Posted May 16, 2015 (edited) Galera, está acorrendo este erro 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 June 2, 2015 by Guest Link to comment
#RooTs Posted May 16, 2015 Share Posted May 16, 2015 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
#RooTs Posted May 16, 2015 Share Posted May 16, 2015 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 Link to comment
Stanley Sathler Posted May 16, 2015 Share Posted May 16, 2015 (edited) 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 May 16, 2015 by Guest Link to comment
#RooTs Posted May 16, 2015 Share Posted May 16, 2015 ahh, legal. boa explicação e bem util e facil, Graças homem então era mesmo o true que citei antes do meu ultimo tipico citado Link to comment
Stanley Sathler Posted May 16, 2015 Share Posted May 16, 2015 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
Adissonboy11 Posted May 17, 2015 Author Share Posted May 17, 2015 O código que o Roots mandou, funciona, porem o som não para, fica repetindo várias vezes conforme atira, fica repetindo eternamente... Não para, e o Codigo do Stanley, não funcionou. :c Link to comment
FelipeMallmann Posted May 17, 2015 Share Posted May 17, 2015 Ele nao para pois o true colocado no PlaySound3D representa o loop, ou seja, ficar repetindo o som sound = playSound3D("sound.mp3", muzzleX, muzzleY, muzzleZ, [b]true[/b])-- adicionado true Link to comment
Stanley Sathler Posted May 17, 2015 Share Posted May 17, 2015 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
Adissonboy11 Posted May 29, 2015 Author Share Posted May 29, 2015 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
xeon17 Posted May 29, 2015 Share Posted May 29, 2015 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
Adissonboy11 Posted June 2, 2015 Author Share Posted June 2, 2015 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. Link to comment
#RooTs Posted June 2, 2015 Share Posted June 2, 2015 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now