diff --git a/source/src/entity.h b/source/src/entity.h index 46b83dfd..1802e41f 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -1,13 +1,3 @@ -#ifdef SERVER_CPP - #define __ext - #define __init(...) = __VA_ARGS__; // i hope, all used compilers support variadic macros ;) - #define __initf(...) __VA_ARGS__ -#else - #define __ext extern - #define __init(...) ; - #define __initf(...) ; -#endif - enum // static entity types { NOTUSED = 0, // entity slot not in use in map @@ -25,16 +15,7 @@ enum // static entity types MAXENTTYPES }; -__ext const char *entnames[] __init( -{ - "none?", "light", "playerstart", - "pistol", "ammobox","grenades", - "health", "armour", "akimbo", - "mapmodel", "trigger", - "ladder", "ctf-flag", - "sound", "clip", "plclip", "", "" -}) - +extern const char *entnames[]; #define isitem(i) ((i) >= I_CLIPS && (i) <= I_AKIMBO) struct persistent_entity // map entity @@ -61,23 +42,9 @@ struct entity : public persistent_entity }; struct itemstat { int add, start, max, sound; }; -__ext itemstat ammostats[] __init( -{ - {1, 1, 1, S_ITEMAMMO}, //knife dummy - {16, 32, 72, S_ITEMAMMO}, //pistol - {14, 28, 21, S_ITEMAMMO}, //shotgun - {60, 90, 90, S_ITEMAMMO}, //subgun - {10, 20, 15, S_ITEMAMMO}, //sniper - {30, 60, 60, S_ITEMAMMO}, //assault - {2, 0, 2, S_ITEMAMMO}, //grenade - {72, 0, 72, S_ITEMAKIMBO} //akimbo -}) +extern itemstat ammostats[]; -__ext itemstat powerupstats[] __init( -{ - {33, 100, 100, S_ITEMHEALTH}, //health - {50, 100, 100, S_ITEMARMOUR}, //armour -}) +extern itemstat powerupstats[]; enum { GUN_KNIFE = 0, GUN_PISTOL, GUN_SHOTGUN, GUN_SUBGUN, GUN_SNIPER, GUN_ASSAULT, GUN_GRENADE, GUN_AKIMBO, NUMGUNS }; #define reloadable_gun(g) (g != GUN_KNIFE && g != GUN_GRENADE) @@ -87,25 +54,15 @@ enum { GUN_KNIFE = 0, GUN_PISTOL, GUN_SHOTGUN, GUN_SUBGUN, GUN_SNIPER, GUN_ASSAU #define EXPDAMRAD 10 struct guninfo { string modelname; short sound, reload, reloadtime, attackdelay, damage, projspeed, part, spread, recoil, magsize, mdl_kick_rot, mdl_kick_back, recoilincrease, recoilbase, maxrecoil, recoilbackfade, pushfactor; bool isauto; }; -__ext guninfo guns[NUMGUNS] __init( -{ - { "knife", S_KNIFE, S_NULL, 0, 500, 50, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, false }, - { "pistol", S_PISTOL, S_RPISTOL, 1400, 170, 19, 0, 0, 80, 10, 8, 6, 5, 1, 40, 75, 150, 1, false }, - { "shotgun", S_SHOTGUN, S_RSHOTGUN, 2400, 1000, 5, 0, 0, 1, 35, 7, 9, 9, 1, 130, 500, 150, 1, false }, - { "subgun", S_SUBGUN, S_RSUBGUN, 1650, 80, 16, 0, 0, 70, 15, 30, 1, 2, 7, 15, 30, 250, 1, true }, - { "sniper", S_SNIPER, S_RSNIPER, 1950, 1500, 85, 0, 0, 60, 50, 5, 4, 4, 1, 100, 500, 100, 1, false }, - { "assault", S_ASSAULT, S_RASSAULT, 2000, 130, 24, 0, 0, 20, 40, 15, 0, 2, 2, 25, 60, 150, 1, true }, - { "grenade", S_NULL, S_NULL, 1000, 650, 200, 20, 6, 1, 1, 1, 3, 1, 0, 0, 0, 0, 3, false }, - { "pistol", S_PISTOL, S_RAKIMBO, 1400, 80, 19, 0, 0, 80, 10, 16, 6, 5, 4, 30, 75, 150, 1, true }, -}) +extern guninfo guns[NUMGUNS]; -__ext int reloadtime(int gun) __initf({ return guns[gun].reloadtime; }) -__ext int attackdelay(int gun) __initf({ return guns[gun].attackdelay; }) -__ext int magsize(int gun) __initf({ return guns[gun].magsize; }) +static inline int reloadtime(int gun) { return guns[gun].reloadtime; } +static inline int attackdelay(int gun) { return guns[gun].attackdelay; } +static inline int magsize(int gun) { return guns[gun].magsize; } enum { TEAM_CLA = 0, TEAM_RVSF, TEAM_CLA_SPECT, TEAM_RVSF_SPECT, TEAM_SPECT, TEAM_NUM, TEAM_ANYACTIVE }; -__ext const char *teamnames[] __init({"CLA", "RVSF", "CLA-SPECT", "RVSF-SPECT", "SPECTATOR", "void"}) -__ext const char *teamnames_s[] __init({"CLA", "RVSF", "CSPC", "RSPC", "SPEC", "void"}) +extern const char *teamnames[]; +extern const char *teamnames_s[]; #define TEAM_VOID TEAM_NUM #define isteam(a,b) (m_teammode && (a) == (b)) @@ -118,7 +75,7 @@ __ext const char *teamnames_s[] __init({"CLA", "RVSF", "CSPC", "RSPC", "SPEC", " #define team_group(t) ((t) == TEAM_SPECT ? TEAM_SPECT : team_base(t)) #define team_tospec(t) ((t) == TEAM_SPECT ? TEAM_SPECT : team_base(t) + TEAM_CLA_SPECT - TEAM_CLA) // note: team_isactive and team_base can/should be used to check the limits for arrays of size '2' -__ext const char *team_string(int t, bool abbr = false) __initf({ const char **n = abbr ? teamnames_s : teamnames; return team_isvalid(t) ? n[t] : n[TEAM_NUM]; }) +static inline const char *team_string(int t, bool abbr = false) { const char **n = abbr ? teamnames_s : teamnames; return team_isvalid(t) ? n[t] : n[TEAM_NUM]; } enum { ENT_PLAYER = 0, ENT_BOT, ENT_CAMERA, ENT_BOUNCE }; enum { CS_ALIVE = 0, CS_DEAD, CS_SPAWNING, CS_LAGGED, CS_EDITING, CS_SPECTATE }; @@ -606,6 +563,3 @@ public: void onmoved(const vec &dist); }; -#undef __ext -#undef __init -#undef __initf diff --git a/source/src/protocol.h b/source/src/protocol.h index 6f5fd47b..11b5fcf0 100644 --- a/source/src/protocol.h +++ b/source/src/protocol.h @@ -47,35 +47,7 @@ enum extern void protocoldebug(bool enable); // converts message code to char -#ifdef SERVER_CPP -const char *messagenames[] = -{ - "SV_INITS2C", "SV_WELCOME", "SV_INITC2S", "SV_POS", "SV_POSC", "SV_POSN", "SV_TEXT", "SV_TEAMTEXT", "SV_TEXTME", "SV_TEAMTEXTME", - "SV_SOUND", "SV_VOICECOM", "SV_VOICECOMTEAM", "SV_CDIS", - "SV_SHOOT", "SV_EXPLODE", "SV_SUICIDE", "SV_AKIMBO", "SV_RELOAD", "SV_SCOPE", - "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_LMSITEM", - "SV_SETADMIN", "SV_SERVOPINFO", - "SV_CALLVOTE", "SV_CALLVOTESUC", "SV_CALLVOTEERR", "SV_VOTE", "SV_VOTERESULT", - "SV_TRYTEAM", "SV_SETTEAM", "SV_TEAMDENY", "SV_SERVERMODE", - "SV_WHOIS", "SV_WHOISINFO", - "SV_LISTDEMOS", "SV_SENDDEMOLIST", "SV_GETDEMO", "SV_SENDDEMO", "SV_DEMOPLAYBACK", - "SV_CONNECT", "SV_SPECTCN", - "SV_CLIENT", - "SV_EXTENSION", - "SV_MAPIDENT" -}; -#else extern const char *messagenames[]; -#endif //SERVER_CPP #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}; diff --git a/source/src/server.cpp b/source/src/server.cpp index 1ba7a63b..658e9b45 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -2,6 +2,8 @@ // runs dedicated or as client coroutine // my first try // Brahma +#include "cube.h" + #ifdef WIN32 #include #else @@ -10,10 +12,6 @@ #define _fileno fileno #endif -#define SERVER_CPP - -#include "cube.h" - #define DEBUGCOND (true) #include "server.h" diff --git a/source/src/server.h b/source/src/server.h index 70f55905..a5962cb2 100644 --- a/source/src/server.h +++ b/source/src/server.h @@ -332,3 +332,72 @@ extern string smapname; extern mapstats smapstats; extern char *maplayout; +const char *messagenames[] = +{ + "SV_INITS2C", "SV_WELCOME", "SV_INITC2S", "SV_POS", "SV_POSC", "SV_POSN", "SV_TEXT", "SV_TEAMTEXT", "SV_TEXTME", "SV_TEAMTEXTME", + "SV_SOUND", "SV_VOICECOM", "SV_VOICECOMTEAM", "SV_CDIS", + "SV_SHOOT", "SV_EXPLODE", "SV_SUICIDE", "SV_AKIMBO", "SV_RELOAD", "SV_SCOPE", + "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_LMSITEM", + "SV_SETADMIN", "SV_SERVOPINFO", + "SV_CALLVOTE", "SV_CALLVOTESUC", "SV_CALLVOTEERR", "SV_VOTE", "SV_VOTERESULT", + "SV_TRYTEAM", "SV_SETTEAM", "SV_TEAMDENY", "SV_SERVERMODE", + "SV_WHOIS", "SV_WHOISINFO", + "SV_LISTDEMOS", "SV_SENDDEMOLIST", "SV_GETDEMO", "SV_SENDDEMO", "SV_DEMOPLAYBACK", + "SV_CONNECT", "SV_SPECTCN", + "SV_CLIENT", + "SV_EXTENSION", + "SV_MAPIDENT" +}; + +const char *entnames[] = +{ + "none?", "light", "playerstart", + "pistol", "ammobox","grenades", + "health", "armour", "akimbo", + "mapmodel", "trigger", + "ladder", "ctf-flag", + "sound", "clip", "plclip", "", "" +}; + +itemstat ammostats[] = +{ + {1, 1, 1, S_ITEMAMMO}, //knife dummy + {16, 32, 72, S_ITEMAMMO}, //pistol + {14, 28, 21, S_ITEMAMMO}, //shotgun + {60, 90, 90, S_ITEMAMMO}, //subgun + {10, 20, 15, S_ITEMAMMO}, //sniper + {30, 60, 60, S_ITEMAMMO}, //assault + {2, 0, 2, S_ITEMAMMO}, //grenade + {72, 0, 72, S_ITEMAKIMBO} //akimbo +}; + +itemstat powerupstats[] = +{ + {33, 100, 100, S_ITEMHEALTH}, //health + {50, 100, 100, S_ITEMARMOUR}, //armour +}; + +guninfo guns[NUMGUNS] = +{ + { "knife", S_KNIFE, S_NULL, 0, 500, 50, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, false }, + { "pistol", S_PISTOL, S_RPISTOL, 1400, 170, 19, 0, 0, 80, 10, 8, 6, 5, 1, 40, 75, 150, 1, false }, + { "shotgun", S_SHOTGUN, S_RSHOTGUN, 2400, 1000, 5, 0, 0, 1, 35, 7, 9, 9, 1, 130, 500, 150, 1, false }, + { "subgun", S_SUBGUN, S_RSUBGUN, 1650, 80, 16, 0, 0, 70, 15, 30, 1, 2, 7, 15, 30, 250, 1, true }, + { "sniper", S_SNIPER, S_RSNIPER, 1950, 1500, 85, 0, 0, 60, 50, 5, 4, 4, 1, 100, 500, 100, 1, false }, + { "assault", S_ASSAULT, S_RASSAULT, 2000, 130, 24, 0, 0, 20, 40, 15, 0, 2, 2, 25, 60, 150, 1, true }, + { "grenade", S_NULL, S_NULL, 1000, 650, 200, 20, 6, 1, 1, 1, 3, 1, 0, 0, 0, 0, 3, false }, + { "pistol", S_PISTOL, S_RAKIMBO, 1400, 80, 19, 0, 0, 80, 10, 16, 6, 5, 4, 30, 75, 150, 1, true }, +}; + +const char *teamnames[] = {"CLA", "RVSF", "CLA-SPECT", "RVSF-SPECT", "SPECTATOR", "void"}; +const char *teamnames_s[] = {"CLA", "RVSF", "CSPC", "RSPC", "SPEC", "void"}; +