summaryrefslogtreecommitdiff
path: root/npc/commands/music.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/commands/music.txt')
-rw-r--r--npc/commands/music.txt75
1 files changed, 75 insertions, 0 deletions
diff --git a/npc/commands/music.txt b/npc/commands/music.txt
new file mode 100644
index 00000000..b817b949
--- /dev/null
+++ b/npc/commands/music.txt
@@ -0,0 +1,75 @@
+// @music atcommand
+// changes the music for all players on the map
+//
+// group lv: 2
+// group char lv: 99
+// log: True
+//
+// usage:
+// @music <short name>
+//
+// example:
+// @music fun
+
+- script @music 32767,{
+ end;
+
+OnCall:
+ if (!is_evtc())
+ {
+ end;
+ }
+
+ // TODO: tmw-like argv splitter
+ .@map$ = getmap();
+
+ .@m$ = strtolower(.@atcmd_parameters$[0]);
+
+ // GMs might not know and want a list of musics
+ if (.@m$ == "" || .@m$ == "list") {
+ .@r$="list";
+
+ freeloop(true);
+ .@size=getarraysize($MUSIC_ARRAY$);
+ for (.@i = 0; .@i < .@size; ++.@i) {
+ .@r$+=", "+$MUSIC_ARRAY$[.@i];
+ }
+ freeloop(false);
+
+ dispbottom("Music list: "+.@r$);
+ end;
+ }
+
+ .@key = array_exists($MUSIC_ARRAY$, .@m$);
+
+ if (!.@key)
+ {
+ //.@m$ = implode(.@atcmd_parameters$[0], " ");
+ message(getcharid(CHAR_ID_ACCOUNT), sprintf("Can't broadcast: %s.ogg", .@m$));
+ } else {
+ message(getcharid(CHAR_ID_ACCOUNT), sprintf("Now broadcasting: %s", .@m$));
+ changemusic .@map$, .@m$ + ".ogg";
+ }
+ end;
+
+OnMyself:
+ .@m$ = strtolower(.@atcmd_parameters$[0]);
+ .@key = array_exists($MUSIC_ARRAY$, .@m$);
+
+ // TODO: Check if you have the music unlocked? Bitmask? Array?
+
+ if (!.@key)
+ {
+ //.@m$ = implode(.@atcmd_parameters$[0], " ");
+ message(getcharid(CHAR_ID_ACCOUNT), sprintf("Can't play: %s.ogg", .@m$));
+ } else {
+ message(getcharid(CHAR_ID_ACCOUNT), sprintf("Now playing: %s", .@m$));
+ changeplayermusic .@m$ + ".ogg";
+ }
+ end;
+
+OnInit:
+ bindatcmd "music", "@music::OnCall", 0, 99, 1;
+ bindatcmd "jukebox", "@music::OnMyself", 0, 50, 0;
+ end;
+}