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