On Tue, 2 Apr 1996, the root of all evil wrote: > > So basically what I need to know, is how could I get a command > > to wait 30 seconds, check for the status of the victims flag > > and if the flag is on teleport the victim to a battle room, or > > if it is off, the whole thing abort and game play continue normally. > > Here's a simple way to add an event system, its a little hairy to code if > your not familiar with linked lists, but the concept is easy and you > should be able to tweak it to suit your needs... > > An event_data structure... I use: > > struct event_data { > struct char_data *ch; /* char this event happens to */ > int cmd; /* command number */ > char *args; /* typed in args */ > int count; /* pulses to event completion */ > struct event_data *next; /* next command event in list */ > }; [some code snipped] One thing to remember if implementing an event system like this is that if it is activated after a player have logged out, for example, the *ch pointer is no longer valid, and Bad Things might happen... The solution? Either search through all the events every time a free_char() call is made, or use some other system to store the char_data reference. For the record, my event queue system have player/mob/obj id (and balanced binary searchtrees...), but the other solution is probably easier to implement. / Johan Eenfeldt Student, Computer Science Department @ Uppsala University d95joe@csd.uu.se
This archive was generated by hypermail 2b30 : 12/18/00 PST