/* ************************************************************************ * File: db.h Part of CircleMUD * * Usage: header file for database handling * * * * All rights reserved. See license.doc for complete information. * * * * Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University * * CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. * ************************************************************************ */ #ifndef _db_h_ #define _db_h_ #include <stdio.h> #include "bitfield.h" /* names of various files and directories */ #define INDEX_FILE "index" /* index of world files */ #define MINDEX_FILE "index.mini" /* ... and for mini-mud-mode */ #define ICINDEX_FILE "index.ic" /* For matrix IC */ #define WLD_PREFIX "world/wld" /* room definitions */ #define MOB_PREFIX "world/mob" /* monster prototypes */ #define OBJ_PREFIX "world/obj" /* object prototypes */ #define ZON_PREFIX "world/zon" /* zon defs & command tables */ #define SHP_PREFIX "world/shp" /* shop definitions */ #define QST_PREFIX "world/qst" /* autoquests */ #define VEH_PREFIX "world/veh" /* vehicles */ #define MTX_PREFIX "world/mtx" /* Matrix */ #define CREDITS_FILE "text/credits" /* for the 'credits' command */ #define NEWS_FILE "text/news" /* for the 'news' command */ #define MOTD_FILE "text/motd" /* messages of the day / mortal */ #define IMOTD_FILE "text/imotd" /* messages of the day / immort */ #define HELP_KWRD_FILE "text/helplist" /* for HELP <keywrd> */ #define HELP_PAGE_FILE "text/help" /* for HELP <CR> */ #define INFO_FILE "text/info" /* for INFO */ #define IMMLIST_FILE "text/immlist" /* for IMMLIST */ #define BACKGROUND_FILE "text/background" /* for the background story */ #define POLICIES_FILE "text/policies" /* player policies/rules */ #define HANDBOOK_FILE "text/handbook" /* handbook for new immorts */ #define WIZHELP_FILE "text/wizhelp" /* for WIZHELP <keywrd> */ #define IDEA_FILE "text/ideas"/* for the 'idea'-command */ #define TYPO_FILE "text/typos"/* 'typo' */ #define BUG_FILE "text/bugs" /* 'bug' */ #define MESS_FILE "misc/messages" /* damage messages */ #define SOCMESS_FILE "misc/socials" /* messgs for social acts */ #define XNAME_FILE "misc/xnames" /* invalid name substrings */ #define PLAYER_FILE "etc/players" /* the player database */ #define MAIL_FILE "etc/plrmail" /* for the mudmail system */ #define BAN_FILE "etc/badsites" /* for the siteban system */ #define HCONTROL_FILE "etc/houses" /* for the house system */ #define PLR_PREFIX "etc/pfiles" #define SLASH "/" /* change these if you want to put all files in the same directory (or if you just like big file names */ #define PLR_SUFFIX "" /* new bitvector data for use in player_index_element */ #define PINDEX_DELETED 11 /* deleted player */ #define PINDEX_NODELETE 12 /* protected player */ #define PINDEX_SELFDELETE 11 /* player is selfdeleting*/ /* public procedures in db.c */ void DBInit(); void DBEnd(); int create_entry(char *name); void ensure_entry(struct char_data *player); void zone_update(void); long real_room(long virt); char *fread_string(FILE *fl, char *error); long get_id_by_name(char *name); char *get_name_by_id(long id); int load_char(char *name, struct char_data *ch); //void save_char(struct char_data *ch, sh_int load_room); //void init_char(struct char_data *ch); struct char_data *read_mobile(int nr, int type); struct veh_data *read_vehicle(int nr, int type); long real_mobile(long virt); int vnum_mobile(char *searchname, struct char_data *ch); void clear_char(struct char_data *ch); void reset_char(struct char_data *ch); void free_char(struct char_data *ch); struct obj_data *create_obj(void); void clear_object(struct obj_data *obj); void clear_room(struct room_data *room); void free_obj(struct obj_data *obj); void free_room(struct room_data *room); long real_object(long virt); struct obj_data *read_object(int nr, int type); int vnum_object(char *searchname, struct char_data *ch); void free_veh(struct veh_data *veh); void clear_vehicle(struct veh_data *veh); long real_vehicle(long virt); void free_host(struct host_data *host); void clear_host(struct host_data *veh); long real_host(long virt); void free_icon(struct matrix_icon *icon); void clear_icon(struct matrix_icon *icon); long real_ic(long virt); struct matrix_icon *read_ic(int nr, int type); long real_shop(long virt); long real_quest(long virt); long real_zone(long virt); /* structure for the reset commands */ struct reset_com { char command; /* current command */ bool if_flag; /* if TRUE: exe only if preceding exe'd */ long arg1; /* */ long arg2; /* Arguments to the command */ long arg3; /* */ int line; /* line number this command appears on */ /* * Commands: * * 'M': Read a mobile * * 'O': Read an object * * 'G': Give obj to mob * * 'P': Put obj in obj * * 'G': Obj to char * * 'E': Obj to char equip * * 'D': Set state of door * */ }; /* zone definition structure. for the 'zone-table' */ struct zone_data { char *name; /* name of this zone */ int lifespan; /* how long between resets (minutes) */ int age; /* current age of this zone (minutes) */ int top; /* upper limit for rooms in this zone */ int security; /* security rating for node */ int connected; /* zone is connected */ int reset_mode; /* conditions for reset (see below) */ int number; /* virtual number of this zone */ int num_cmds; // number of commands in the table int editor_ids[5]; // array of zone editors int juridiction; // Abstract zone this zone belongs to struct reset_com *cmd; /* command table for reset */ /* * Reset mode: * * 0: Don't reset, and don't update age. * * 1: Reset if no PC's are located in zone. * * 2: Just reset. * */ }; struct help_index_data { char *keyword; char *filename; struct help_index_data *next; help_index_data (): keyword(NULL), filename(NULL), next(NULL) {} }; /* global buffering system */ #ifdef __DB_CC__ char buf[MAX_STRING_LENGTH]; char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char arg[MAX_STRING_LENGTH]; #else extern struct room_data *world; extern rnum_t top_of_world; extern struct zone_data *zone_table; extern rnum_t top_of_zone_table; extern struct descriptor_data *descriptor_list; extern struct char_data *character_list; extern struct player_special_data dummy_mob; extern struct player_index_element *player_table; extern int top_of_p_table; extern struct index_data *mob_index; extern struct char_data *mob_proto; extern rnum_t top_of_mobt; extern int top_of_mob_array; extern int mob_chunk_size; extern struct index_data *obj_index; extern struct obj_data *object_list; extern struct obj_data *obj_proto; extern rnum_t top_of_objt; extern int top_of_obj_array; extern int obj_chunk_size; extern struct shop_data *shop_table; extern rnum_t top_of_shopt; extern int top_of_shop_array; extern struct quest_data *quest_table; extern rnum_t top_of_questt; extern int top_of_quest_array; extern rnum_t top_of_world; extern int top_of_world_array; extern int world_chunk_size; extern struct veh_data *veh_proto; extern int top_of_veht; extern struct index_data *veh_index; extern struct veh_data *veh_list; extern struct phone_data *phone_list; extern struct host_data *matrix; extern int top_of_matrix; extern struct matrix_icon *icon_list; extern struct matrix_icon *ic_proto; extern struct index_data *ic_index; extern int top_of_ic; extern int market[5]; extern char buf[MAX_STRING_LENGTH]; extern char buf1[MAX_STRING_LENGTH]; extern char buf2[MAX_STRING_LENGTH]; extern char arg[MAX_STRING_LENGTH]; extern char *credits; extern char *news; extern char *info; extern char *motd; extern char *imotd; extern char *immlist; extern char *policies; extern char *handbook; extern char *background; extern char *hindex; extern int olc_state; #endif #ifndef __CONFIG_CC__ extern char *OK; extern char *NOPERSON; extern char *TOOBUSY; extern char *NOOBJECT; #endif #endif extern void save_etext(struct char_data *ch);