mud/lib/cmds/creators/events.c
2020-09-06 05:43:07 -07:00

79 lines
2.6 KiB
C

/* /cmds/creator/events.c
* From the Dead Souls Mud Library
* show wizard events
* Version: @(#) events.c 1.2@(#)
* Last modified: 96/12/08
*/
#include <lib.h>
#include <daemons.h>
inherit LIB_DAEMON;
int cmd(string str) {
mapping mp;
string *obs;
string *st2;
string st3;
int i,j,k,l;
string name;
if(!str && archp(previous_object())) {
mp = EVENTS_D->GetEvents();
i = sizeof(obs = sort_array(keys(mp),-1));
message("info", "The following events are pending:", this_player());
while(i--) {
l=atoi(""+obs[i]);
message("info", arrange_string(""+l, 30) +
arrange_string(mp[obs[i]]["function"], 15) +
local_ctime(l)+" "+query_tz(), this_player());
}
return 1;
}
else if((archp(previous_object()) && str) || creatorp(previous_object())) {
if (archp(previous_object()))
name = str;
else
name = this_player()->GetKeyName();
j = 0;
mp = EVENTS_D->GetEvents();
i = sizeof(obs = keys(mp));
if (i) {
while(i--)
if((st2 = explode(""+obs[i], "/")))
if (st2[0] == "realms" && st2[1] == name) {
if (j == 0) {
if (archp(previous_object()))
message("info", name + " has the following events pending:", this_player());
else
message("info", "You have the following events pending:", this_player());
j = 1;
}
st3 = "~";
for (k = 2; k < sizeof(st2); k++)
st3 += "/" + st2[k];
message("info", arrange_string(st3, 30) +
arrange_string(mp[obs[i]]["function"], 15) +
ctime(mp[obs[i]]["time"])+" Mud Time", this_player());
}
}
if (j == 0) {
if (archp(previous_object()))
message("info", name+" doesn't have any events pending.", this_player());
else
message("info", "You don't have any events pending.", this_player());
}
return 1;
}
return 0;
}
string GetHelp() {
if(archp(this_player()))
return ("Syntax: events [creator]\n\n"
"Gives a list of all pending mud events or all events pending for the specified creator.");
else
return ("Syntax: events\n\n"
"Gives a list of your pending events.");
}