addzipmod zipname Add the zip package file "mods/zipname.zip" to the virtual file system. Only files below the path "packages/" are added (and also files below "config/", if zipname starts with "###"). If the size of the zip file is below zipcachemaxsize, the whole zip file is cached in memory. (Un-cached zip files are kept open at all time, so caching keeps the number of simultaneously opened files lower.) zipmodremove zipname Removes one zip file from the virtual file system. zipmodclear Removes all zip files from the virtual file system. zipmodlist [what] Lists zip files in "mods/". By default, or if "what" is "all", all zips are listed. If "what" is "active", only those zips, that are already in use, are listed. If "what" is "inactive", only the unused zip files are listed. zipmodgetdesc zipfile Reads and returns the first 11 lines from the file "desc.txt" in the named zip file. The first line is supposed to contain a descriptive title for the zip (for use in menus) and the next 10 lines should contain a more detailed description (also for use in menus). The command also unpacks "preview.jpg" from the zip and mounts it as a temporary file under the name "packages/modpreviews/zipname.jpg". zipmodgetfiles zipfile Returns the list of files contained in a zip file. zipmodgetrevision zipfile Returns the revision number of the zip file. The number is supposed to be part of a filename: "revision_n". If no such file is found in the zip file, the return value is zero. The content of the revision file is not relevant and a file size of zero is recommended. DOCREF addzipmod zipmodremove zipmodclear zipcachemaxsize DOCREF zipmodlist zipmodgetdesc zipmodgetfiles zipmodgetrevision
179 lines
8.6 KiB
C
179 lines
8.6 KiB
C
#define MAXCLIENTS 256 // in a multiplayer game, can be arbitrarily changed
|
|
#define DEFAULTCLIENTS 6
|
|
#define MAXTRANS 5000 // max amount of data to swallow in 1 go
|
|
#define CUBE_DEFAULT_SERVER_PORT 28763
|
|
#define CUBE_SERVINFO_PORT_LAN 28762
|
|
#define CUBE_SERVINFO_PORT(serverport) (serverport+1)
|
|
#define CUBE_SERVINFO_TO_SERV_PORT(servinfoport) (servinfoport-1)
|
|
#define PROTOCOL_VERSION 1201 // bump when protocol changes (use negative numbers for mods!)
|
|
#define DEMO_VERSION 2 // bump when demo format changes
|
|
#define DEMO_MAGIC "ASSAULTCUBE_DEMO"
|
|
#define DEMO_MINTIME 10000 // don't keep demo recordings with less than 10 seconds
|
|
#define MAXMAPSENDSIZE 65536
|
|
#define MAXCFGFILESIZE 65536
|
|
#define MAXMEDIADOWNLOADFILESIZE 1024000 // hard cap on filesizes (raw and unzipped) - to limit the effect of zip bombs - no nice error messages: just cap
|
|
#define MAXFILESINADZIP 21 // max number of files extracted from a zip by autodownload
|
|
|
|
extern bool modprotocol;
|
|
#define CUR_PROTOCOL_VERSION (modprotocol ? -PROTOCOL_VERSION : PROTOCOL_VERSION)
|
|
|
|
// network messages codes, c2s, c2c, s2c
|
|
enum
|
|
{
|
|
SV_SERVINFO = 0, SV_WELCOME, SV_INITCLIENT, SV_POS, SV_POSC, SV_POSN, SV_TEXT, SV_TEAMTEXT, SV_TEXTME, SV_TEAMTEXTME, SV_TEXTPRIVATE,
|
|
SV_SOUND, SV_VOICECOM, SV_VOICECOMTEAM, SV_CDIS,
|
|
SV_SHOOT, SV_EXPLODE, SV_SUICIDE, SV_AKIMBO, SV_RELOAD, SV_AUTHT, SV_AUTHREQ, SV_AUTHTRY, SV_AUTHANS, SV_AUTHCHAL,
|
|
SV_GIBDIED, SV_DIED, SV_GIBDAMAGE, SV_DAMAGE, SV_HITPUSH, SV_SHOTFX, SV_THROWNADE,
|
|
SV_TRYSPAWN, SV_SPAWNSTATE, SV_SPAWN, SV_SPAWNDENY, SV_FORCEDEATH, SV_RESUME,
|
|
SV_DISCSCORES, SV_TIMEUP, SV_EDITENT, SV_ITEMACC,
|
|
SV_MAPCHANGE, SV_ITEMSPAWN, SV_ITEMPICKUP,
|
|
SV_PING, SV_PONG, SV_CLIENTPING, SV_GAMEMODE,
|
|
SV_EDITMODE, SV_EDITH, SV_EDITT, SV_EDITS, SV_EDITD, SV_EDITE, SV_NEWMAP,
|
|
SV_SENDMAP, SV_RECVMAP, SV_REMOVEMAP,
|
|
SV_SERVMSG, SV_ITEMLIST, SV_WEAPCHANGE, SV_PRIMARYWEAP,
|
|
SV_FLAGACTION, SV_FLAGINFO, SV_FLAGMSG, SV_FLAGCNT,
|
|
SV_ARENAWIN,
|
|
SV_SETADMIN, SV_SERVOPINFO,
|
|
SV_CALLVOTE, SV_CALLVOTESUC, SV_CALLVOTEERR, SV_VOTE, SV_VOTERESULT,
|
|
SV_SETTEAM, SV_TEAMDENY, SV_SERVERMODE,
|
|
SV_IPLIST,
|
|
SV_LISTDEMOS, SV_SENDDEMOLIST, SV_GETDEMO, SV_SENDDEMO, SV_DEMOPLAYBACK,
|
|
SV_CONNECT,
|
|
SV_SWITCHNAME, SV_SWITCHSKIN, SV_SWITCHTEAM,
|
|
SV_CLIENT,
|
|
SV_EXTENSION,
|
|
SV_MAPIDENT, SV_HUDEXTRAS, SV_POINTS,
|
|
SV_NUM
|
|
};
|
|
|
|
#ifdef _DEBUG
|
|
|
|
extern void protocoldebug(bool enable);
|
|
|
|
// converts message code to char
|
|
extern const char *messagenames[SV_NUM];
|
|
#endif
|
|
|
|
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};
|
|
enum { VOTE_NEUTRAL = 0, VOTE_YES, VOTE_NO, VOTE_NUM };
|
|
enum { VOTEE_DISABLED = 0, VOTEE_CUR, VOTEE_MUL, VOTEE_MAX, VOTEE_AREA, VOTEE_PERMISSION, VOTEE_INVALID, VOTEE_WEAK, VOTEE_NEXT, VOTEE_NUM };
|
|
enum { MM_OPEN = 0, MM_PRIVATE, MM_MATCH, MM_NUM }; enum { MM_MASK = 0x03 };
|
|
enum { AT_DISABLED = 0, AT_ENABLED = 1, AT_SHUFFLE = 2, AT_NUM };
|
|
enum { FA_PICKUP = 0, FA_STEAL, FA_DROP, FA_LOST, FA_RETURN, FA_SCORE, FA_NUM, FA_RESET };
|
|
enum { FM_PICKUP = 0, FM_DROP, FM_LOST, FM_RETURN, FM_SCORE, FM_KTFSCORE, FM_SCOREFAIL, FM_RESET, FM_NUM };
|
|
enum { FTR_INFO = 0, FTR_PLAYERWISH, FTR_AUTOTEAM, FTR_SILENTFORCE, FTR_NUM }; // forceteam-reasons
|
|
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)
|
|
enum { HE_COMBO, HE_COMBO2, HE_COMBO3, HE_COMBO4, HE_COMBO5, HE_TEAMWORK, HE_FLAGDEFENDED, HE_FLAGCOVERED, HE_COVER, HE_NUM };
|
|
|
|
|
|
#define DMF 16.0f
|
|
#define DNF 100.0f
|
|
#define DVELF 4.0f
|
|
|
|
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 };
|
|
enum { BAN_NONE = 0, BAN_VOTE, BAN_AUTO, BAN_BLACKLIST, BAN_MASTER };
|
|
|
|
#define EXT_ACK -1
|
|
#define EXT_VERSION 104
|
|
#define EXT_ERROR_NONE 0
|
|
#define EXT_ERROR 1
|
|
#define EXT_PLAYERSTATS_RESP_IDS -10
|
|
#define EXT_UPTIME 0
|
|
#define EXT_PLAYERSTATS 1
|
|
#define EXT_TEAMSCORE 2
|
|
#define EXT_PLAYERSTATS_RESP_STATS -11
|
|
|
|
enum { PONGFLAG_PASSWORD = 0, PONGFLAG_BANNED, PONGFLAG_BLACKLIST, PONGFLAG_MASTERMODE = 6, PONGFLAG_NUM };
|
|
enum { EXTPING_NOP = 0, EXTPING_NAMELIST, EXTPING_SERVERINFO, EXTPING_MAPROT, EXTPING_UPLINKSTATS, EXTPING_NUM };
|
|
|
|
enum
|
|
{
|
|
GMODE_DEMO = -1,
|
|
GMODE_TEAMDEATHMATCH = 0, // 0
|
|
GMODE_COOPEDIT,
|
|
GMODE_DEATHMATCH,
|
|
GMODE_SURVIVOR,
|
|
GMODE_TEAMSURVIVOR,
|
|
GMODE_CTF, // 5
|
|
GMODE_PISTOLFRENZY,
|
|
GMODE_BOTTEAMDEATHMATCH,
|
|
GMODE_BOTDEATHMATCH,
|
|
GMODE_LASTSWISSSTANDING,
|
|
GMODE_ONESHOTONEKILL, // 10
|
|
GMODE_TEAMONESHOTONEKILL,
|
|
GMODE_BOTONESHOTONEKILL,
|
|
GMODE_HUNTTHEFLAG,
|
|
GMODE_TEAMKEEPTHEFLAG,
|
|
GMODE_KEEPTHEFLAG, // 15
|
|
GMODE_TEAMPF,
|
|
GMODE_TEAMLSS,
|
|
GMODE_BOTPISTOLFRENZY,
|
|
GMODE_BOTLSS,
|
|
GMODE_BOTTEAMSURVIVOR, // 20
|
|
GMODE_BOTTEAMONESHOTONKILL,
|
|
GMODE_NUM
|
|
};
|
|
|
|
#define m_lms (gamemode==3 || gamemode==4 || gamemode==20)
|
|
#define m_ctf (gamemode==5)
|
|
#define m_pistol (gamemode==6 || gamemode==16 || gamemode==18)
|
|
#define m_lss (gamemode==9 || gamemode==17 || gamemode==19)
|
|
#define m_osok ((gamemode>=10 && gamemode<=12) || gamemode==21)
|
|
#define m_htf (gamemode==13)
|
|
#define m_ktf (gamemode==14 || gamemode==15)
|
|
|
|
#define m_noitems (m_lms || m_osok)
|
|
#define m_noitemsnade (m_lss)
|
|
#define m_nopistol (m_osok || m_lss)
|
|
#define m_noprimary (m_pistol || m_lss)
|
|
#define m_noguns (m_nopistol && m_noprimary)
|
|
#define m_arena (m_lms || m_lss || m_osok)
|
|
#define m_autospawn (gamemode == 0 || gamemode == 2 || gamemode == 6 || gamemode == 13 || gamemode == 16)
|
|
#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)
|
|
#define m_tarena (m_arena && m_teammode)
|
|
#define m_botmode (gamemode==7 || gamemode == 8 || gamemode==12 || (gamemode>=18 && gamemode<=21))
|
|
#define m_valid(mode) (((mode)>=0 && (mode)<GMODE_NUM) || (mode) == -1)
|
|
#define m_mp(mode) (m_valid(mode) && (mode)>=0 && (mode)!=7 && (mode)!=8 && (mode)!=12 && ((mode)<18 || (mode)>21))
|
|
#define m_demo (gamemode==-1)
|
|
#define m_coop (gamemode==1)
|
|
#define m_flags (m_ctf || m_htf || m_ktf)
|
|
#define m_isdemo(x) ((x) == -1)
|
|
|
|
// single filter modes
|
|
#define FTXT_NOWHITE (1<<8)
|
|
#define FTXT_ALLOWBLANKS (1<<9)
|
|
#define FTXT_ALLOWNL (1<<10)
|
|
#define FTXT_ALLOWTAB (1<<11)
|
|
#define FTXT_NOCOLOR (1<<12)
|
|
#define FTXT_TABTOBLANK (1<<13)
|
|
#define FTXT_FILLBLANKS (1<<14)
|
|
#define FTXT_SAFECS (1<<15)
|
|
#define FTXT_LEET (1<<16)
|
|
#define FTXT_TOUPPER (1<<17)
|
|
#define FTXT_TOLOWER (1<<18)
|
|
#define FTXT_FILENAME (1<<19)
|
|
#define FTXT_ALLOWSLASH (1<<20)
|
|
#define FTXT_MAPNAME (1<<21)
|
|
#define FTXT_CROPWHITE (1<<22)
|
|
// character classes
|
|
#define FTXT__ALIAS (FTXT_NOWHITE | FTXT_NOCOLOR | FTXT_SAFECS | FTXT_MAPNAME)
|
|
#define FTXT__SERVDESC (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_TABTOBLANK)
|
|
#define FTXT__MAPMSG (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_TABTOBLANK)
|
|
#define FTXT__MAPNAME (FTXT_NOCOLOR | FTXT_MAPNAME | FTXT_TOLOWER)
|
|
#define FTXT__MDLATTR (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_TABTOBLANK | FTXT_NOCOLOR | FTXT_SAFECS)
|
|
#define FTXT__DEMONAME (FTXT_NOCOLOR | FTXT_MAPNAME)
|
|
#define FTXT__PLAYERNAME (FTXT_NOWHITE | FTXT_NOCOLOR)
|
|
#define FTXT__SERVERINFO (FTXT_ALLOWTAB)
|
|
#define FTXT__MOTD (FTXT_TABTOBLANK)
|
|
#define FTXT__CHAT (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_NOCOLOR | FTXT_TABTOBLANK)
|
|
#define FTXT__LOG (FTXT_NOCOLOR | FTXT_TABTOBLANK)
|
|
#define FTXT__LOGIDENT (FTXT_NOCOLOR | FTXT_NOWHITE | FTXT_FILENAME)
|
|
#define FTXT__PREFERENCES (FTXT_NOCOLOR | FTXT_NOWHITE | FTXT_FILENAME)
|
|
#define FTXT__AUTH (FTXT_NOCOLOR | FTXT_NOWHITE)
|
|
#define FTXT__KICKBANREASON (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_NOCOLOR | FTXT_TABTOBLANK)
|
|
#define FTXT__FAVCATEGORY (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_NOCOLOR)
|
|
#define FTXT__GLOBALNAME (FTXT_NOWHITE | FTXT_NOCOLOR | FTXT_FILLBLANKS)
|
|
#define FTXT__MEDIAFILENAME (FTXT_FILENAME)
|
|
#define FTXT__MEDIAFILEPATH (FTXT_FILENAME | FTXT_ALLOWSLASH)
|
|
#define FTXT__ZIPDESC (FTXT_NOWHITE | FTXT_ALLOWBLANKS | FTXT_TABTOBLANK | FTXT_NOCOLOR | FTXT_SAFECS)
|