00001
00002
00003
00004
00005
00006 #ifndef __COMSYS_H__
00007 #define __COMSYS_H__
00008
00009 typedef struct chanentry CHANENT;
00010 struct chanentry
00011 {
00012 char *channame;
00013 struct channel *chan;
00014 };
00015
00016 #define NUM_COMSYS 500
00017
00018 #define MAX_CHANNEL_LEN 50
00019 #define MAX_HEADER_LEN 100
00020 #define MAX_TITLE_LEN 200
00021 #define MAX_ALIAS_LEN 5
00022 #define ALIAS_SIZE (MAX_ALIAS_LEN+1)
00023
00024 struct comuser
00025 {
00026 dbref who;
00027 bool bUserIsOn;
00028 char *title;
00029 bool ComTitleStatus;
00030 struct comuser *on_next;
00031 };
00032
00033 struct channel
00034 {
00035 char name[MAX_CHANNEL_LEN+1];
00036 char header[MAX_HEADER_LEN+1];
00037 int type;
00038 int temp1;
00039 int temp2;
00040 int charge;
00041 dbref charge_who;
00042 int amount_col;
00043 int num_users;
00044 int max_users;
00045 dbref chan_obj;
00046 struct comuser **users;
00047 struct comuser *on_users;
00048 int num_messages;
00049 };
00050
00051 typedef struct tagComsys
00052 {
00053 dbref who;
00054
00055 int numchannels;
00056 int maxchannels;
00057 char *alias;
00058 char **channels;
00059
00060 struct tagComsys *next;
00061 } comsys_t;
00062
00063 void save_comsys(char *filename);
00064 void load_comsys(char *filename);
00065 void del_comsys(dbref who);
00066 void add_comsys(comsys_t *c);
00067 bool test_join_access(dbref player, struct channel *chan);
00068 bool test_transmit_access(dbref player, struct channel *chan);
00069 bool test_receive_access(dbref player, struct channel *chan);
00070 void do_joinchannel(dbref player, struct channel *ch);
00071 void do_comdisconnectchannel(dbref player, char *channel);
00072 void load_channels(FILE *fp);
00073 void purge_comsystem(void);
00074 void save_channels(FILE *fp);
00075 void destroy_comsys(comsys_t *c);
00076 void sort_com_aliases(comsys_t *c);
00077 void load_comsystem(FILE *fp);
00078 void save_comsystem(FILE *fp);
00079 void SendChannelMessage
00080 (
00081 dbref player,
00082 struct channel *ch,
00083 char *msgNormal,
00084 char *msgNoComtitle
00085 );
00086 void do_comwho(dbref player, struct channel *ch);
00087 void do_comlast(dbref player, struct channel *ch, int arg);
00088 void do_leavechannel(dbref player, struct channel *ch);
00089 void do_delcomchannel(dbref player, char *channel, bool bQuiet);
00090 #if 0
00091 void do_cleanupchannels(void);
00092 #endif // 0
00093 void do_channelnuke(dbref player);
00094 void sort_users(struct channel *ch);
00095 void do_comdisconnect(dbref player);
00096 void do_comconnect(dbref player);
00097 void do_clearcom(dbref executor, dbref caller, dbref enactor, int unused2);
00098 void do_cheader(dbref player, char *channel, char *header);
00099 void do_addcom
00100 (
00101 dbref executor,
00102 dbref caller,
00103 dbref enactor,
00104 int key,
00105 int nargs,
00106 char *arg1,
00107 char *arg2
00108 );
00109
00110 comsys_t *create_new_comsys ();
00111
00112 struct channel *select_channel(char *channel);
00113 struct comuser *select_user(struct channel *ch, dbref player);
00114
00115 char *get_channel_from_alias();
00116
00117 bool do_comsystem(dbref who, char *cmd);
00118 void do_chanlist(dbref executor, dbref caller, dbref enactor, int key, char *pattern);
00119
00120 #define CHANNEL_PLAYER_JOIN (0x00000001UL)
00121 #define CHANNEL_PLAYER_TRANSMIT (0x00000002UL)
00122 #define CHANNEL_PLAYER_RECEIVE (0x00000004UL)
00123 #define CHANNEL_OBJECT_JOIN (0x00000010UL)
00124 #define CHANNEL_OBJECT_TRANSMIT (0x00000020UL)
00125 #define CHANNEL_OBJECT_RECEIVE (0x00000040UL)
00126 #define CHANNEL_LOUD (0x00000100UL)
00127 #define CHANNEL_PUBLIC (0x00000200UL)
00128 #define CHANNEL_SPOOF (0x00000400UL)
00129
00130
00131
00132 #define UNDEAD(x) (Good_obj(x) && ((Typeof(x) != TYPE_PLAYER) || Connected(x)))
00133
00134 #endif // __COMSYS_H__