> Yep. It's actually very easy to do this. Just set up #define's for all
> the "global" variables that are actually instance variables in the
> different
> worlds. For example, try:
>
> struct World {
> struct room_data *world;
> int top_of_world;
> ...
> };
>
> Then, in your main program, have a global variable called current_realm:
>
> struct World *current_realm;
>
> Whenever input is received from a player, the game sets current_realm to
> whatever World that player is currently in. That's where your macros
> come
> in:
>
> #define WORLD current_realm->world
> #define TOP_OF_WORLD current_realm->top_of_world
> ...
>
> Replace every instance of world in the source with WORLD, and
> top_of_world
> with TOP_OF_WORLD. Take the same approach with all the other "world
> variables" in the game. You then need some extra logic in the login
> sequence to assign realms to players, and a loop to go through all
> the World's and call the heartbeat functions such as pulse_violence.
> The database initialization has to fire up multiple worlds (you can
> again do a quick hack to make this work by using a World loop and
> calling all the DB init routines from inside it).
>
> Don't forget to give each World its own lib directory, as well. Your
> mileage may vary - you may want the worlds to share the wizhelp files
> but
> not the player help files, for example.
Dear lord... why spend all the time and effort... do as I did:
In the zone data add an:
int realm;
And just set diffrent realsm to diffrent numbers, then add in some checks as
to who can see and hear what. 1 thousand times easier than splitting up
worlds and everything into diffrent structs.
Then again, my zones are linked lists now and I can find the number of the
zone a player is in with a simple: ch->in_room->zone->number;
Whatever, I just think that whole multi-world lists thing is more hassle
than it's worth.
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST