#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) |
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 }