SphereCommunity
Music for regions and peace/war mode - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Help (/Forum-Script-Help)
+--- Thread: Music for regions and peace/war mode (/Thread-Music-for-regions-and-peace-war-mode)



Music for regions and peace/war mode - UltimaAku - 04-27-2015 03:00 AM

Hi there all! Long time no see

Is there a way to change the music for a region if your in war mode? I know music can be changed depending on region but I can't seem to find out if it's possible to have a theme change when your in war mode.


RE: Music for regions and peace/war mode - XuN - 04-27-2015 07:23 AM

You'll have to use ON=@UserWarMode inside one event applied when entering this region (and removed upon leaving).


RE: Music for regions and peace/war mode - UltimaAku - 04-27-2015 08:40 PM

[REGIONTYPE r_default]
ON=@Enter
IF (<SRC.ISPLAYER>)
IF !(<isempty <TAG.MUSIC>>)
SRC.MIDILIST=<TAG.MUSIC>
ELSE
SRC.MIDILIST=21
ENDIF
ENDIF

////@enter works

ON=@UserWarMode
IF (<ARGN1>=1)
SRC.MIDILIST=37
ELSE
IF !(<isempty <TAG.MUSIC>>)
SRC.MIDILIST=<TAG.MUSIC>
ELSE
SRC.MIDILIST=21
ENDIF

///This doesnt work

Have I done something wrong? (for test purposes It should play tavern music when in war)


RE: Music for regions and peace/war mode - XuN - 04-27-2015 09:50 PM

1) if (<argn1>==1) <--- this MUST have double == to compare

2)ON=@Enter
src.events +e_area_default_warmusic

ON=@Exit
src.events -e_area_default_warmusic

[events e_area_default_warmusic]
IF (<ARGN1>==1)
SRC.MIDILIST=37
ELSEIF !(<isempty <TAG.MUSIC>>)
SRC.MIDILIST=<TAG.MUSIC>
ELSE
SRC.MIDILIST=21
ENDIF


RE: Music for regions and peace/war mode - UltimaAku - 04-28-2015 10:06 AM

[REGIONTYPE r_default]

ON=@Enter
IF (<SRC.ISPLAYER>)
IF !(<isempty <TAG.MUSIC>>)
SRC.TAG.MUSIC=<TAG.MUSIC>
SRC.MIDILIST=<SRC.TAG.MUSIC>
SRC.SAY TRIGGER 1
ELSE
SRC.TAG.MUSIC=21
SRC.MIDILIST=21
SRC.SAY TRIGGER 2
ENDIF
ENDIF
src.events +e_area_default_warmusic
SRC.SAY TRIGGER 3

ON=@Exit
src.events -e_area_default_warmusic

[events e_area_default_warmusic]
ON=@USERWARMODE
IF (<ARGN1>==0) //when going from peace to war
SRC.MIDILIST=21
SRC.SAY TRIGGER 4
ELSE
IF !(<isempty <SRC.TAG.MUSIC>>)
SRC.MIDILIST=<SRC.TAG.MUSIC>
SRC.SAY TRIGGER 6
ELSE
SRC.MIDILIST=37
SRC.SAY TRIGGER 7
ENDIF

Just tinkered with it to see how much works.

Everything is being triggered, and the music is working in all areas, apart from trigger 4, which is when they are in war mode... It still plays the default war mode song, but the trigger is going off.


RE: Music for regions and peace/war mode - XuN - 04-28-2015 06:47 PM

Look at this:
Code:
ON=@USERWARMODE
IF (<ARGN1>==0) //when going from peace to war
  SRC.MIDILIST=21
  SRC.SAY TRIGGER 4
ELSE
  IF !(<isempty <SRC.TAG.MUSIC>>)
   SRC.MIDILIST=<SRC.TAG.MUSIC>
   SRC.SAY TRIGGER 6
  ELSE
   SRC.MIDILIST=37
   SRC.SAY TRIGGER 7
  ENDIF

Don't you see something missing?

Code:
ON=@USERWARMODE
IF (<ARGN1>==0) //when going from peace to war
  SRC.MIDILIST=21
  SRC.SAY TRIGGER 4
ELSE
  IF !(<isempty <SRC.TAG.MUSIC>>)
   SRC.MIDILIST=<SRC.TAG.MUSIC>
   SRC.SAY TRIGGER 6
  ELSE
   SRC.MIDILIST=37
   SRC.SAY TRIGGER 7
  ENDIF
ENDIF <--- you had another IF to close.

Or you can do what you did but with the proper syntax:
Code:
ON=@USERWARMODE
IF (<ARGN1>==0) //when going from peace to war
  SRC.MIDILIST=21
  SRC.SAY TRIGGER 4
ELSEIF !(<isempty <SRC.TAG.MUSIC>>)
  SRC.MIDILIST=<SRC.TAG.MUSIC>
  SRC.SAY TRIGGER 6
ELSE
  SRC.MIDILIST=37
  SRC.SAY TRIGGER 7
ENDIF

For the issue you have I bet Sphere is automatically playing the music when entering/leaving WarMode so it overrides what you tell it to play, i'll look into a way to disable music inside the @UserWarMode trigger.


RE: Music for regions and peace/war mode - UltimaAku - 04-28-2015 07:17 PM

Thanks, the script looks a lot tidier with the proper syntax. Thanks for looking into it for me Wink


RE: Music for regions and peace/war mode - XuN - 05-02-2015 09:20 PM

Looked into the core and there is no sound send in war changes, so this is handled internally by the client, only way to 'solve' your problem is to trick it with a workaround:

use a timerf in the @UserWarMode.
Code:
ON=@UserWarMode
timerf STOP,f_UserWarModeSound // delete previous timers, if any, in case of someone boring constantly pressing/unpressing tab key.
timerf 0,f_UserWarModeSound

[function f_UserWarModeSound]
IF (<flags>&Statf_War) //when going from peace to war
  SRC.MIDILIST=21
  SRC.SAY TRIGGER 4
ELSEIF !(<isempty <SRC.TAG.MUSIC>>)
  SRC.MIDILIST=<SRC.TAG.MUSIC>
  SRC.SAY TRIGGER 6
ELSE
  SRC.MIDILIST=37
  SRC.SAY TRIGGER 7
ENDIF



RE: Music for regions and peace/war mode - UltimaAku - 05-11-2015 06:56 PM

unfortunately this didn't work. It seems to prioritise the war theme over whatever I want it to change to. The script triggers correctly but the song doesn't change.