src/mguests.h File Reference

#include "copyright.h"
#include "config.h"
#include "interface.h"

Include dependency graph for mguests.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

char * make_guest (DESC *)
dbref create_guest (char *, char *)
void destroy_guest (dbref)


Function Documentation

dbref create_guest ( char *  ,
char *   
)

Definition at line 24 of file mguests.c.

References A_LENTER, A_LOCK, alloc_lbuf, atr_cpy(), create_player(), do_lock(), Flags, free_lbuf, GOD, Good_obj, confdata::guest_char, confdata::guest_nuker, log_text(), move_object(), mudconf, NOTHING, Parent, Pennies(), s_Flags, s_Guest, s_Parent, s_Pennies(), s_Zone, confdata::start_room, tprintf(), WIZARD, Wizard, and Zone.

00025 {
00026         dbref player;
00027         char *buff;
00028 
00029         if(!Wizard(mudconf.guest_nuker) || !Good_obj(mudconf.guest_nuker))
00030                 mudconf.guest_nuker = 1;
00031 
00032         buff = alloc_lbuf("create_guest");
00033 
00034         /*
00035          * Make the player. 
00036          */
00037 
00038         player = create_player(name, password, mudconf.guest_nuker, 0, 1);
00039 
00040         if(player == NOTHING) {
00041                 log_text("GUEST: failed in create_player\n");
00042                 return NOTHING;
00043         }
00044         /*
00045          * Turn the player into a guest. 
00046          */
00047 
00048         s_Guest(player);
00049         move_object(player, mudconf.start_room);
00050         s_Flags(player, Flags(player) & ~WIZARD);
00051         s_Pennies(player, Pennies(mudconf.guest_char));
00052         s_Zone(player, Zone(mudconf.guest_char));
00053         s_Parent(player, Parent(mudconf.guest_char));
00054 
00055         /*
00056          * Make sure the guest is locked. 
00057          */
00058         do_lock(player, player, A_LOCK, tprintf("#%d", player), "me");
00059         do_lock(player, player, A_LENTER, tprintf("#%d", player), "me");
00060 
00061         /*
00062          * Copy all attributes. 
00063          */
00064         atr_cpy(GOD, player, mudconf.guest_char);
00065         free_lbuf(buff);
00066         return player;
00067 }

void destroy_guest ( dbref   ) 

Definition at line 69 of file mguests.c.

References A_DESTROYER, atr_add_raw(), destroy_obj(), destroy_player(), Good_obj, Guest, confdata::guest_nuker, mudconf, toast_player(), tprintf(), and Wizard.

Referenced by make_guest().

00070 {
00071         if(!Wizard(mudconf.guest_nuker) || !Good_obj(mudconf.guest_nuker))
00072                 mudconf.guest_nuker = 1;
00073 
00074         if(!Guest(guest))
00075                 return;
00076 
00077         toast_player(guest);
00078         atr_add_raw(guest, A_DESTROYER, tprintf("%d", mudconf.guest_nuker));
00079         destroy_player(guest);
00080         destroy_obj(mudconf.guest_nuker, guest);
00081 }

char* make_guest ( DESC  ) 

Definition at line 83 of file mguests.c.

References Connected, destroy_guest(), GOD, confdata::guest_prefix, lookup_player(), mudconf, name, NOTHING, confdata::number_guests, and queue_string().

Referenced by check_connect().

00084 {
00085         int i;
00086         dbref player, p2;
00087         static char name[50];
00088 
00089         /*
00090          * Nuke extra guests as new guests connect. 
00091          */
00092 
00093         for(i = 0; i < mudconf.number_guests; i++) {
00094                 sprintf(name, "%s%d", mudconf.guest_prefix, i + 1);
00095                 p2 = lookup_player(GOD, name, 0);
00096                 if(p2 != NOTHING && !Connected(p2))
00097                         destroy_guest(p2);
00098         }
00099 
00100         /*
00101          * Locate a free guest ID, and eat it. 
00102          */
00103 
00104         for(i = 0; i < mudconf.number_guests; i++) {
00105                 sprintf(name, "%s%d", mudconf.guest_prefix, i + 1);
00106                 player = lookup_player(GOD, name, 0);
00107                 if(player == NOTHING)
00108                         break;
00109         }
00110 
00111         if(i == mudconf.number_guests) {
00112                 queue_string(d,
00113                                          "GAME: All guest ID's are busy, please try again later.\n");
00114                 return NULL;
00115         }
00116         sprintf(name, "%s%d", mudconf.guest_prefix, i + 1);
00117         player = create_guest(name, mudconf.guest_prefix);
00118 
00119         if(player == NOTHING) {
00120                 queue_string(d,
00121                                          "GAME: Error creating guest ID, please try again later.\n");
00122                 log_text(tprintf
00123                                  ("GUEST: Error creating guest ID. '%s' already exists.\n",
00124                                   name));
00125                 return NULL;
00126         }
00127         return Name(player);
00128 }


Generated on Mon May 28 04:25:46 2007 for BattletechMUX by  doxygen 1.4.7