diff options
Diffstat (limited to 'npc/commands/motd.txt')
-rw-r--r-- | npc/commands/motd.txt | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/npc/commands/motd.txt b/npc/commands/motd.txt new file mode 100644 index 00000000..2f6a5e2a --- /dev/null +++ b/npc/commands/motd.txt @@ -0,0 +1,194 @@ +function script displayMOTD { + .@size = getvariableofnpc(.size, "@motd"); + .@dsize = getvariableofnpc(.dsize, "@motd"); + + // git stuff and such + if (debug) + { + for (.@i = 0; .@i < .@dsize; ++.@i) + { + dispbottom $@Debug_Messages$[.@i]; // FIXME: send this to the Debug tab instead + } + + if (.@dsize > 0) + dispbottom "---"; + } + + // generic MOTD + for (.@i = 0; .@i < .@size; ++.@i) + { + dispbottom $MOTD_Messages$[.@i]; + } + + return; +} + +function script MOTDConfig { + + function toggleMOTD { + $MOTD_Disabled = !($MOTD_Disabled); + // FIXME: log to GM log + } + + function addNewLine { + clear; + mes l("Please enter the new line."); + input .@s$; + .@s$ = strip(.@s$); + if (.@s$ != "") + { + .@size = getvariableofnpc(.size, "@motd"); + $MOTD_Messages$[.@size] = .@s$; + set getvariableofnpc(.size, "@motd"), getarraysize($MOTD_Messages$); + // FIXME: log to GM log + } + } + + function modifyLine { + + function removeLine { + .@l = getarg(0); + deletearray $MOTD_Messages$[.@l], 1; // remove and shift + mes l("Line @@ has been removed.", .@l); + set getvariableofnpc(.size, "@motd"), getarraysize($MOTD_Messages$); + // FIXME: log to GM log + } + + function moveUp { + .@l = getarg(0); + .@top$ = $MOTD_Messages$[.@l - 1]; + $MOTD_Messages$[.@l - 1] = $MOTD_Messages$[.@l]; + $MOTD_Messages$[.@l] = .@top$; + } + + function moveDown { + .@l = getarg(0); + .@bottom$ = $MOTD_Messages$[.@l + 1]; + $MOTD_Messages$[.@l + 1] = $MOTD_Messages$[.@l]; + $MOTD_Messages$[.@l] = .@bottom$; + } + + function editLine { + .@l = getarg(0); + clear; + mes l("Old line:"); + mes "---"; + mes $MOTD_Messages$[.@l]; + mes "---"; + mes ""; + mes l("Enter new line:"); + next; + input .@s$; + .@s$ = strip(.@s$); + if (.@s$ != "") + { + $MOTD_Messages$[.@l] = .@s$; + // FIXME: log to GM log + } + } + + .@max = (getarg(0) - 1); + + do + { + mes l("Enter line number:"); + next; + input .@n; + if ($MOTD_Messages$[.@n] != "") + { + clear; + mes l("line @@: @@", .@n, $MOTD_Messages$[.@n]); + next; + select + menuimage("actions/back", l("Modify another line")), + menuimage("actions/remove", l("Remove this line")), + menuimage("actions/edit", l("Modify this line")), + rif(.@n > 0, menuimage("actions/raise", l("Move this line up"))), + rif(.@n < .@max, menuimage("actions/lower", l("Move this line down"))), + menuimage("actions/home", l("Return to main menu")); + + switch (@menu) + { + case 2: removeLine .@n; return; + case 3: editLine .@n; return; + case 4: moveUp .@n; return; + case 5: moveDown .@n; return; + case 6: return; + } + } + } while (1); + } + + do + { + clear; + setnpcdialogtitle l("MOTD Config"); + mes l("This menu allows you to modify the generic message that is sent to players when they log in."); + mes ""; + + mes "---"; + .@size = getvariableofnpc(.size, "@motd"); + for (.@i = 0; .@i < .@size; ++.@i) + { + mes l("line @@: @@", .@i, $MOTD_Messages$[.@i]); + } + if (.@size == 0) + { + mes "(" + l("no active MOTD") + ")"; + } + mes "---"; + .@d = $MOTD_Disabled; + mes l("Enabled: @@", (.@d ? l("no") : l("yes"))); + next; + + select + menuimage("actions/toggle", (.@d ? l("Enable") : l("Disable"))), + menuimage("actions/add", l("Add a new line")), + rif(.@size, menuimage("actions/manage", l("Modify, move, or remove a line"))), + rif(.@size, menuimage("actions/test", l("Test MOTD"))), + rif(getarg(0,0), menuimage("actions/home", l("Return to Super Menu"))); + + switch (@menu) + { + case 1: toggleMOTD; break; + case 2: addNewLine; break; + case 3: modifyLine .@size; break; + case 4: displayMOTD; break; + default: return; + } + } while (1); +} + + + +- script @motd 32767,{ + end; + +OnCall: + if (!is_dev()) + { + end; + } + + MOTDConfig; + closeclientdialog; + end; + +OnInit: + MOTD_debug_text; + .size = getarraysize($MOTD_Messages$); + .dsize = getarraysize($@Debug_Messages$); + bindatcmd "motd", "@motd::OnCall", 0, 99, 0; +} + +function script ReceiveMOTD { + if ($MOTD_Disabled < 1) + { + displayMOTD; + } + if (debug) + { + dispbottom "##7<<##B @@help://test-server|" + col(l("Click here for instructions on how to use the test server."),6) + "@@ ##7>>"; + } + return; +} |