summaryrefslogtreecommitdiff
path: root/world/map/npc/017-9
diff options
context:
space:
mode:
authorwushin <pasekei@gmail.com>2014-06-18 10:02:03 -0500
committerwushin <pasekei@gmail.com>2014-06-18 10:13:46 -0500
commitdf92273c8412b87d7fe86b4547d08c66cf2ed5c2 (patch)
treecaa1ab6efe20a2249d7f1205d662a2b4dc27526a /world/map/npc/017-9
parent511dc33bfe89c98251579d72ff7f3fa795e29d15 (diff)
downloadserverdata-df92273c8412b87d7fe86b4547d08c66cf2ed5c2.tar.gz
serverdata-df92273c8412b87d7fe86b4547d08c66cf2ed5c2.tar.bz2
serverdata-df92273c8412b87d7fe86b4547d08c66cf2ed5c2.tar.xz
serverdata-df92273c8412b87d7fe86b4547d08c66cf2ed5c2.zip
Moving GM/Dev utilities off of botcheck
Allows botcheck to become a permanent prison
Diffstat (limited to 'world/map/npc/017-9')
-rw-r--r--world/map/npc/017-9/_import.txt1
-rw-r--r--world/map/npc/017-9/announcements.txt175
2 files changed, 176 insertions, 0 deletions
diff --git a/world/map/npc/017-9/_import.txt b/world/map/npc/017-9/_import.txt
index 69c67d6f..4e650df8 100644
--- a/world/map/npc/017-9/_import.txt
+++ b/world/map/npc/017-9/_import.txt
@@ -3,4 +3,5 @@
map: 017-9.gat
npc: npc/017-9/_mobs.txt
npc: npc/017-9/_warps.txt
+npc: npc/017-9/announcements.txt
npc: npc/017-9/mapflags.txt
diff --git a/world/map/npc/017-9/announcements.txt b/world/map/npc/017-9/announcements.txt
new file mode 100644
index 00000000..585fbc28
--- /dev/null
+++ b/world/map/npc/017-9/announcements.txt
@@ -0,0 +1,175 @@
+//############################################################################
+//# #
+//# GM scheduled broadcasts #
+//# #
+//############################################################################
+
+// $@GMSA_STATUS values:
+// 0: Broadcasts not running
+// 1: Broadcasts running
+// $@GMSA_NAME$: the GM/Admin who created the broadcast, if any
+// $@GMSA_MSG$: the message to be broadcasted
+// $@GMSA_MAX: the number of times the broadcast will be performed, if > 0
+// $@GMSA_TICK: broadcast the message every $@GMSA_TICK hours
+// $@GMSA_CURRENT_TICK: internal counter incremented every hour
+
+017-9.gat,26,24,0|script|Stone Board|145,
+{
+ if (getgmlevel() < 60)
+ goto L_Close;
+
+ if ($@GMSA_STATUS)
+ goto L_InfoBroadcast;
+ goto L_PrepareBroadcast;
+
+L_InfoBroadcast:
+ set @next_broadcast_ts, (3600000*($@GMSA_TICK - $@GMSA_CURRENT_TICK) - getnpctimer(0))/1000;
+ set @next_broadcast_h, @next_broadcast_ts/3600;
+ set @next_broadcast_m, (@next_broadcast_ts - @next_broadcast_h*3600)/60;
+
+ mes "[GM Scheduled Broadcasts Board]";
+ mes $@GMSA_NAME$ + " scheduled the current message, every " + $@GMSA_TICK + " hour(s):";
+ mes $@GMSA_MSG$;
+ next;
+ if (@next_broadcast_h > 0)
+ mes "The next broadcast will happen in " + @next_broadcast_h + " hour(s) and " + @next_broadcast_m + " minute(s).";
+ if (@next_broadcast_h == 0)
+ mes "The next broadcast will happen in " + @next_broadcast_m + " minute(s).";
+ next;
+
+ set @next_broadcast_ts, 0;
+ set @next_broadcast_h, 0;
+ set @next_broadcast_m, 0;
+
+ mes "What do you want to do?";
+ menu
+ "Nothing.", L_Close,
+ "Nothing but... what is this?", L_Help,
+ "Stop broadcasting.", L_StopBroadcast,
+ "Trigger manually the current broadcast.", L_ManualBroadcast;
+
+L_PrepareBroadcast:
+ callsub S_Help;
+ next;
+ mes "There is no broadcast scheduled.";
+ mes "Do you want to create one?";
+ menu
+ "No.", L_Close,
+ "Yes.", L_CreateBroadcast;
+
+L_CreateBroadcast:
+ mes "[GM Scheduled Broadcasts Board]";
+ mes "Enter the message to broadcast:";
+ input $@GMSA_MSG$;
+ if ($@GMSA_MSG$ == "")
+ goto L_InvalidBroadcastMessage;
+
+ next;
+ mes "[GM Scheduled Broadcasts Board]";
+ mes "The message will be broadcasted every X hour(s). Enter X:";
+ input $@GMSA_TICK;
+ if ($@GMSA_TICK < 1)
+ goto L_InvalidBroadcastTick;
+
+ next;
+ mes "[GM Scheduled Broadcasts Board]";
+ mes "If you want the message to be broadcasted a limited number of times, enter its value. Keep 0 otherwise:";
+ input $@GMSA_MAX;
+
+ next;
+ mes "[GM Scheduled Broadcasts Board]";
+ if ($@GMSA_MAX == 0)
+ mes "The current message will be broadcasted every " + $@GMSA_TICK + " hour(s):";
+ if ($@GMSA_MAX > 0)
+ mes "The current message will be broadcasted every " + $@GMSA_TICK + " hour(s), up to " + $@GMSA_MAX + " times:";
+ mes $@GMSA_MSG$;
+ next;
+ mes "Is this correct?";
+ menu
+ "No. I'll retry.", L_CreateBroadcast,
+ "No", L_Close,
+ "Yes. Broadcast this. (the first broadcast will happen in " + $@GMSA_TICK + " hour(s).)", L_StartBroadcast,
+ "Yes. Broadcast this, and make an extra broadcast right now.", L_StartBroadcast2;
+
+L_InvalidBroadcastMessage:
+ mes "[GM Scheduled Broadcasts Board]";
+ mes "The message can't be empty. Please retry.";
+ goto L_CreateBroadcast;
+
+L_InvalidBroadcastTick:
+ mes "[GM Scheduled Broadcasts Board]";
+ mes "You obviously can't repeat a message every 0 hours. Please retry.";
+ goto L_CreateBroadcast;
+
+L_Help:
+ callsub S_Help;
+ goto L_Close;
+
+S_Help:
+ mes "[GM Scheduled Broadcasts Board]";
+ mes "This board allows a GM to schedule a message to be broadcast every X hours.";
+ mes "Only one broadcast can be scheduled at a time.";
+ return;
+
+S_PerformBroadcast:
+ announce $@GMSA_MSG$, 0;
+ return;
+
+L_ManualBroadcast:
+ callsub S_PerformBroadcast;
+ mes "Done.";
+ goto L_Close;
+
+L_StopBroadcast:
+ callsub S_StopBroadcast;
+ mes "Done.";
+ goto L_Close;
+
+S_StopBroadcast:
+ stopnpctimer;
+ setnpctimer 0;
+ set $@GMSA_STATUS, 0;
+ set $@GMSA_NAME$, "";
+ set $@GMSA_MSG$, "";
+ set $@GMSA_TICK, 0;
+ set $@GMSA_MAX, 0;
+ set $@GMSA_CURRENT_TICK, 0;
+ return;
+
+L_StartBroadcast2:
+ if ($@GMSA_STATUS == 1)
+ goto L_Abort;
+ callsub S_PerformBroadcast;
+ goto L_StartBroadcast;
+
+L_StartBroadcast:
+ if ($@GMSA_STATUS == 1)
+ goto L_Abort;
+ set $@GMSA_STATUS, 1;
+ set $@GMSA_NAME$, strcharinfo(0);
+ set $@GMSA_CURRENT_TICK, 0;
+ initnpctimer;
+ mes "Done.";
+ goto L_Close;
+
+L_Abort:
+ mes "[GM Scheduled Broadcasts Board]";
+ mes $@GMSA_NAME$ + " has created a scheduled broadcast just before you, hence yours will abort.";
+ goto L_Close;
+
+L_Close:
+ close;
+
+OnTimer3600000:
+ set $@GMSA_CURRENT_TICK, $@GMSA_CURRENT_TICK + 1;
+ setnpctimer 0;
+ if ($@GMSA_CURRENT_TICK != $@GMSA_TICK)
+ end;
+ callsub S_PerformBroadcast;
+ set $@GMSA_CURRENT_TICK, 0;
+ set $@GMSA_MAX, $@GMSA_MAX - 1;
+ if ($@GMSA_MAX != 0)
+ end;
+ callsub S_StopBroadcast;
+ end;
+}