1 #define MAXCLIENTS 256                  // in a multiplayer game, can be arbitrarily changed
2 #define DEFAULTCLIENTS 6
3 #define MAXTRANS 5000                   // max amount of data to swallow in 1 go
4 #define CUBE_DEFAULT_SERVER_PORT 28763
5 #define CUBE_SERVINFO_PORT_LAN 28762
6 #define CUBE_SERVINFO_PORT(serverport) (serverport+1)
7 #define CUBE_SERVINFO_TO_SERV_PORT(servinfoport) (servinfoport-1)
8 #define PROTOCOL_VERSION 1201           // bump when protocol changes (use negative numbers for mods!)
9 #define DEMO_VERSION 2                  // bump when demo format changes
10 #define DEMO_MAGIC "ASSAULTCUBE_DEMO"
11 #define DEMO_MINTIME 10000              // don't keep demo recordings with less than 10 seconds
12 #define MAXMAPSENDSIZE 65536
13 #define MAXCFGFILESIZE 65536
14 
15 extern bool modprotocol;
16 #define CUR_PROTOCOL_VERSION (modprotocol ? -PROTOCOL_VERSION : PROTOCOL_VERSION)
17 
18 // network messages codes, c2s, c2c, s2c
19 enum
20 {
21     SV_SERVINFO = 0, SV_WELCOME, SV_INITCLIENT, SV_POS, SV_POSC, SV_POSN, SV_TEXT, SV_TEAMTEXT, SV_TEXTME, SV_TEAMTEXTME, SV_TEXTPRIVATE,
22     SV_SOUND, SV_VOICECOM, SV_VOICECOMTEAM, SV_CDIS,
23     SV_SHOOT, SV_EXPLODE, SV_SUICIDE, SV_AKIMBO, SV_RELOAD, SV_AUTHT, SV_AUTHREQ, SV_AUTHTRY, SV_AUTHANS, SV_AUTHCHAL,
24     SV_GIBDIED, SV_DIED, SV_GIBDAMAGE, SV_DAMAGE, SV_HITPUSH, SV_SHOTFX, SV_THROWNADE,
25     SV_TRYSPAWN, SV_SPAWNSTATE, SV_SPAWN, SV_SPAWNDENY, SV_FORCEDEATH, SV_RESUME,
26     SV_DISCSCORES, SV_TIMEUP, SV_EDITENT, SV_ITEMACC,
27     SV_MAPCHANGE, SV_ITEMSPAWN, SV_ITEMPICKUP,
28     SV_PING, SV_PONG, SV_CLIENTPING, SV_GAMEMODE,
29     SV_EDITMODE, SV_EDITH, SV_EDITT, SV_EDITS, SV_EDITD, SV_EDITE, SV_NEWMAP,
30     SV_SENDMAP, SV_RECVMAP, SV_REMOVEMAP,
31     SV_SERVMSG, SV_ITEMLIST, SV_WEAPCHANGE, SV_PRIMARYWEAP,
32     SV_FLAGACTION, SV_FLAGINFO, SV_FLAGMSG, SV_FLAGCNT,
33     SV_ARENAWIN,
34     SV_SETADMIN, SV_SERVOPINFO,
35     SV_CALLVOTE, SV_CALLVOTESUC, SV_CALLVOTEERR, SV_VOTE, SV_VOTERESULT,
36     SV_SETTEAM, SV_TEAMDENY, SV_SERVERMODE,
37     SV_IPLIST,
38     SV_LISTDEMOS, SV_SENDDEMOLIST, SV_GETDEMO, SV_SENDDEMO, SV_DEMOPLAYBACK,
39     SV_CONNECT,
40     SV_SWITCHNAME, SV_SWITCHSKIN, SV_SWITCHTEAM,
41     SV_CLIENT,
42     SV_EXTENSION,
43     SV_MAPIDENT, SV_HUDEXTRAS, SV_POINTS,
44     SV_NUM
45 };
46 
47 #ifdef _DEBUG
48 
49 extern void protocoldebug(bool enable);
50 
51 // converts message code to char
52 extern const char *messagenames[SV_NUM];
53 #endif
54 
55 enum { SA_KICK = 0, SA_BAN, SA_REMBANS, SA_MASTERMODE, SA_AUTOTEAM, SA_FORCETEAM, SA_GIVEADMIN, SA_MAP, SA_RECORDDEMO, SA_STOPDEMO, SA_CLEARDEMOS, SA_SERVERDESC, SA_SHUFFLETEAMS, SA_NUM};
56 enum { VOTE_NEUTRAL = 0, VOTE_YES, VOTE_NO, VOTE_NUM };
57 enum { VOTEE_DISABLED = 0, VOTEE_CUR, VOTEE_MUL, VOTEE_MAX, VOTEE_AREA, VOTEE_PERMISSION, VOTEE_INVALID, VOTEE_WEAK, VOTEE_NEXT, VOTEE_NUM };
58 enum { MM_OPEN = 0, MM_PRIVATE, MM_MATCH, MM_NUM }; enum { MM_MASK = 0x03 };
59 enum { AT_DISABLED = 0, AT_ENABLED = 1, AT_SHUFFLE = 2, AT_NUM };
60 enum { FA_PICKUP = 0, FA_STEAL, FA_DROP, FA_LOST, FA_RETURN, FA_SCORE, FA_NUM, FA_RESET };
61 enum { FM_PICKUP = 0, FM_DROP, FM_LOST, FM_RETURN, FM_SCORE, FM_KTFSCORE, FM_SCOREFAIL, FM_RESET, FM_NUM };
62 enum { FTR_INFO = 0, FTR_PLAYERWISH, FTR_AUTOTEAM, FTR_SILENTFORCE, FTR_NUM }; // forceteam-reasons
63 enum { SP_OK = 0, SP_REFILLMATCH, SP_OK_NUM, SP_WRONGMAP, SP_SPECT, SP_NUM }; // spawn permission (<OK_NUM && isspect: change to active team allowed)
64 enum { HE_COMBO, HE_COMBO2, HE_COMBO3, HE_COMBO4, HE_COMBO5, HE_TEAMWORK, HE_FLAGDEFENDED, HE_FLAGCOVERED, HE_COVER, HE_NUM };
65 
66 
67 #define DMF 16.0f
68 #define DNF 100.0f
69 #define DVELF 4.0f
70 
71 enum { DISC_NONE = 0, DISC_EOP, DISC_CN, DISC_MKICK, DISC_MBAN, DISC_TAGT, DISC_BANREFUSE, DISC_WRONGPW, DISC_SOPLOGINFAIL, DISC_MAXCLIENTS, DISC_MASTERMODE, DISC_AUTOKICK, DISC_AUTOBAN, DISC_DUP, DISC_BADNICK, DISC_OVERFLOW, DISC_ABUSE, DISC_AFK, DISC_FFIRE, DISC_CHEAT, DISC_NUM };
72 enum { BAN_NONE = 0, BAN_VOTE, BAN_AUTO, BAN_BLACKLIST, BAN_MASTER };
73 
74 #define EXT_ACK                         -1
75 #define EXT_VERSION                     104
76 #define EXT_ERROR_NONE                  0
77 #define EXT_ERROR                       1
78 #define EXT_PLAYERSTATS_RESP_IDS        -10
79 #define EXT_UPTIME                      0
80 #define EXT_PLAYERSTATS                 1
81 #define EXT_TEAMSCORE                   2
82 #define EXT_PLAYERSTATS_RESP_STATS      -11
83 
84 enum { PONGFLAG_PASSWORD = 0, PONGFLAG_BANNED, PONGFLAG_BLACKLIST, PONGFLAG_MASTERMODE = 6, PONGFLAG_NUM };
85 enum { EXTPING_NOP = 0, EXTPING_NAMELIST, EXTPING_SERVERINFO, EXTPING_MAPROT, EXTPING_UPLINKSTATS, EXTPING_NUM };
86 
87 enum
88 {
89     GMODE_DEMO = -1,
90     GMODE_TEAMDEATHMATCH = 0,           // 0
91     GMODE_COOPEDIT,
92     GMODE_DEATHMATCH,
93     GMODE_SURVIVOR,
94     GMODE_TEAMSURVIVOR,
95     GMODE_CTF,                          // 5
96     GMODE_PISTOLFRENZY,
97     GMODE_BOTTEAMDEATHMATCH,
98     GMODE_BOTDEATHMATCH,
99     GMODE_LASTSWISSSTANDING,
100     GMODE_ONESHOTONEKILL,               // 10
101     GMODE_TEAMONESHOTONEKILL,
102     GMODE_BOTONESHOTONEKILL,
103     GMODE_HUNTTHEFLAG,
104     GMODE_TEAMKEEPTHEFLAG,
105     GMODE_KEEPTHEFLAG,                  // 15
106     GMODE_TEAMPF,
107     GMODE_TEAMLSS,
108     GMODE_BOTPISTOLFRENZY,
109     GMODE_BOTLSS,
110     GMODE_BOTTEAMSURVIVOR,              // 20
111     GMODE_BOTTEAMONESHOTONKILL,
112     GMODE_NUM
113 };
114 
115 #define m_lms         (gamemode==3 || gamemode==4 || gamemode==20)
116 #define m_ctf         (gamemode==5)
117 #define m_pistol      (gamemode==6 || gamemode==16 || gamemode==18)
118 #define m_lss         (gamemode==9 || gamemode==17 || gamemode==19)
119 #define m_osok        ((gamemode>=10 && gamemode<=12) || gamemode==21)
120 #define m_htf         (gamemode==13)
121 #define m_ktf         (gamemode==14 || gamemode==15)
122 
123 #define m_noitems     (m_lms || m_osok)
124 #define m_noitemsnade (m_lss)
125 #define m_nopistol    (m_osok || m_lss)
126 #define m_noprimary   (m_pistol || m_lss)
127 #define m_noguns      (m_nopistol && m_noprimary)
128 #define m_arena       (m_lms || m_lss || m_osok)
129 #define m_teammode    (gamemode==0 || gamemode==4 || gamemode==5 || gamemode==7 || gamemode==11 || gamemode==13 || gamemode==14 || gamemode==16 || gamemode==17 || gamemode==20 || gamemode==21)
130 #define m_tarena      (m_arena && m_teammode)
131 #define m_botmode     (gamemode==7 || gamemode == 8 || gamemode==12 || (gamemode>=18 && gamemode<=21))
132 #define m_valid(mode) (((mode)>=0 && (mode)<GMODE_NUM) || (mode) == -1)
133 #define m_mp(mode)    (m_valid(mode) && (mode)>=0 && (mode)!=7 && (mode)!=8 && (mode)!=12 && ((mode)<18 || (mode)>21))
134 #define m_demo        (gamemode==-1)
135 #define m_coop        (gamemode==1)
136 #define m_flags       (m_ctf || m_htf || m_ktf)
137 
138