[lua] couper la musique ingame ?

Répondre
Partager Rechercher
Salut,

J'ai repris il y a un moment le dev d'un addon pour lire vos mp3 IG.
J'aimerais bien intégrer une fonction qui coupe la musique de wow lorsque vs écoutez un mp3.

Est ce possible déjà :/

Merci d'avance pour votre aide.
Citation :
Publié par Tzioup
Code:
function Coupemusique()
SetCVar("EnableMusic", GetCVar("EnableMusic") == "1" and 0 or 1)
self:Update()
Merci bcp

Aprés quelques petits tests ça à l'air nickel. Je verrais mieux ce soir en condition réelles ^^

++
En fin de compte ça ne fonctionne pas :/

je suis perdu, de plus ds l'api de wow il est dit que :

Citation :
If any of the built-in music is playing when you call this function (e.g. Stormwind background music), it will fade out
Source : WowWiki
Citation :
Publié par Epsil
En fin de compte ça ne fonctionne pas :/

je suis perdu, de plus ds l'api de wow il est dit que :



Source : WowWiki
Le code que j'ai posté plus haut ne fonctionne pas, ou c'est ta fonction de lecture de musique qui ne marche pas? Mon code est une fonction toggle (c'est à dire qui coupe ou active selon un event), a ne pas confondre avec un coupe-musique qui la désactiverait quelque soit l'état actuel du config.wtf \o/

Deuxième tentative :
Code:
function Coupemusique()
SetCVar("EnableMusic", 1)
self:Update()

Tu pourrais poster ton code histoire de voir ce qui ne va pas?Et le message d'erreur aussi?
J'ai testé l'addon, et la musique de fond se coupe bien dès le lancement du mp3.
Ce qui reste, ce sont les sons "ambiants".
Après un rapide fix, voici le code du lua (j'ai mis en gras les changements)
Le principe, c'est de baisser à 0 le volume des sons ambiants a chaque appui sur "play", et de le remettre à 1 pour "stop".

Citation :
-- Play/Stop button
function SimpleMp3_PlayStopClick()
if ( isPlaying == true ) then -- stop music
Min = 0;
Sec = 0;
StopMusic();
SetCVar("SoundVolume", 1.0)
SetTimeLabel("0:0");
SetNameLabel(Current .. ". " .. PlayList[Current].Name);
isPlaying = false;
isScrolling = false;
DEFAULT_CHAT_FRAME:AddMessage(SIMPLEMP3_STOPMUSIC);
SetPlayStopBnText(SIMPLEMP3_BINDPLAY);
elseif ( isPlaying == false ) then -- start music
if ( isRandomizing == true ) then
Randomize();
end

if ( isScrolling == true ) then
Count = 0;
end
SetCVar("SoundVolume", 0)
PlayMusic(Mp3Path .. PlayList[Current].Name);
SetNameLabel(Current .. ". " .. PlayList[Current].Name);
isPlaying = true;
isScrolling = true;
DEFAULT_CHAT_FRAME:AddMessage(SIMPLEMP3_NOWPLAY .. Current .. ". " .. PlayList[Current].Name);
SetPlayStopBnText(SIMPLEMP3_BINDSTOP);
end
end
Pour que l'addon ne soit pas trop intrusif, il faudrait sauvegarder la valeur du volume ambiant pré-arrêt, pour la restituer ensuite.

La portion de code concerne les lignes 76 à 105.

Si tu as d'autres problêmes, pm.
Merci ça progresse

Mais j'ai tjrs des musiques (lors de changements de zones notamment)

Les sons que tu coupe je souhaite les garder (à voir quand même ^^) mais les musiques de wow restent tjrs :s je me demande si c'est bien possible ?
Citation :
Publié par Epsil
Merci ça progresse

Mais j'ai tjrs des musiques (lors de changements de zones notamment)

Les sons que tu coupe je souhaite les garder (à voir quand même ^^) mais les musiques de wow restent tjrs :s je me demande si c'est bien possible ?

Code:
 							 -- Play/Stop button
function SimpleMp3_PlayStopClick()
	if ( isPlaying == true ) then	-- stop music
		Min = 0;
		Sec = 0;
		StopMusic();
		SetCVar("EnableMusic", 1);
		SetCVar("SoundVolume", 1.0);
		SetTimeLabel("0:0");
		SetNameLabel(Current .. ". " .. PlayList[Current].Name);
		isPlaying = false;
		isScrolling = false;
		DEFAULT_CHAT_FRAME:AddMessage(SIMPLEMP3_STOPMUSIC);
		SetPlayStopBnText(SIMPLEMP3_BINDPLAY);
	elseif ( isPlaying == false ) then -- start music
		if ( isRandomizing == true ) then
			Randomize();
		end
		
		if ( isScrolling == true ) then
			Count = 0;
		end
		SetCVar("SoundVolume", 0);
		SetCVar("EnableMusic", 1);
		PlayMusic(Mp3Path .. PlayList[Current].Name);
		SetNameLabel(Current .. ". " .. PlayList[Current].Name);
		isPlaying = true;
		isScrolling = true;
		DEFAULT_CHAT_FRAME:AddMessage(SIMPLEMP3_NOWPLAY .. Current .. ". " .. PlayList[Current].Name);
		SetPlayStopBnText(SIMPLEMP3_BINDSTOP);
	end	
end
Et comme ça?(je n'ai pas test)
Tjrs pareil

J'avais testé hier soir ds la même voie que ça (SetCVar("EnableMusic", 1); )

J'ai l'impression que lorsque je joue un mp3 la musique de wow se coupe bien à ce moment là, mais lorsque je change de zone j'ai tjrs la musique en fond :s

Je doute de plus en plus sur la possibilité de la chose
Ou alors il faut peut être voir ds les events.

Ds tout les cas merci beaucoup du temps que tu prend pour m'aider
J'ai revu tout ça cet après midi, en campant à la limite Dun Morogh/Ironforge.

La première chose qui m'intriguait était le fait que même une fois toutes les cases Sounds décochées, si une musique "d'ambience" (en l'occurence Ironforge theme) était lancée, elle ne pouvait pas être désactivée autrement que par une baisse de volume musical, qui malheureusement affecte aussi le PlayMusic().

En premier lieu, j'ai essayé la méthode "trash", donc j'ai bassement désactivé via SetCVar() "tous" les sons émis par le jeu, en espérant que cette fichue musique de fond partirait avec.

Citation :
SetCVar("SoundVolume", 0);
SetCVar("EnableMusic", 0);
SetCVar("EnableAmbience", 0);
SetCVar("EnableErrorSpeech", 0);
SetCVar("EnableGroupSpeech", 0);
Et la, contre toute attente, avec toutes les cases décochées, la musique d'Ironforge se lance quand même en surcouche.

J'ai ensuite essayé de bypass ce léger problême par un petit widget qui remettrait à plat la config sonore selon si une musique est jouée ou non.

J'ai donc déclaré deux nouvelles fonctions, qui triggeraient sur un ZONE_CHANGED (ce qui équivaut pour le jeu à un changement de nom de zone sur la minimap)

Citation :
function Register_Zoning_Onload()
this:RegisterEvent("ADDON_LOADED");
this:RegisterEvent("ZONE_CHANGED");
end

function Register_Zoning_OnEvent()
if ( event == "ADDON_LOADED" and arg1=="SimpleMp3") then
SoundVolume=GetCVar("SoundVolume");
elseif ( event == "ZONE_CHANGED") then
if (isPlaying==true) then
SetCVar("SoundVolume", 0);
else SetCVar("SoundVolume", 1);
end
end
end
Tout ceci avec la modif du SimpleMp3Form.xml qui va bien, en déclarant ces fonctions à la fin:

Citation :
<Frame name="Register_Zoning">
<Scripts>
<Onload>
Register_Zoning_Onload();
</Onload>
<OnEvent>
Register_Zoning_OnEvent();
</OnEvent>
</Scripts>
</Frame>
Et bien, ça ne fonctionne toujours pas. Je ne vois vraiment pas comment on pourrait altérer cette musique sans modifier le volume du mp3 qui est en train d'être joué
Je pensais pas que même avec les events la musique serait tjrs présente Oo

Comme tu le dis je me demande si c'est possible

Ds tout les cas merci bcp de l'aide que tu m'a apporté, j'en espérais pas autant
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés