2004-08-23 00:15:46 +00:00
/*
Copyright ( C ) 1996 - 1997 Id Software , Inc .
This program is free software ; you can redistribute it and / or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation ; either version 2
of the License , or ( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2005-12-21 03:07:33 +00:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .
2004-08-23 00:15:46 +00:00
See the GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
// server.h
# define QW_SERVER
# define MAX_MASTERS 8 // max recipients for heartbeat packets
# define MAX_SIGNON_BUFFERS 16
typedef enum {
ss_dead , // no map loaded
ss_loading , // spawning level edicts
ss_active , // actively running
ss_cinematic
} server_state_t ;
// some qc commands are only valid before the server has finished
// initializing (precache commands, static sounds / objects, etc)
# ifdef SVCHAT
typedef struct chatvar_s {
char varname [ 64 ] ;
float value ;
struct chatvar_s * next ;
} chatvar_t ;
typedef struct {
qboolean active ;
char filename [ 64 ] ;
edict_t * edict ;
char maintext [ 1024 ] ;
struct
{
float tag ;
char text [ 256 ] ;
} option [ 6 ] ;
int options ;
chatvar_t * vars ;
float time ;
} svchat_t ;
# endif
typedef struct {
int netstyle ;
char particleeffecttype [ 64 ] ;
char stain [ 3 ] ;
qbyte radius ;
qbyte dlightrgb [ 3 ] ;
qbyte dlightradius ;
qbyte dlighttime ;
2004-08-30 06:07:13 +00:00
qbyte dlightcfade [ 3 ] ;
2004-08-23 00:15:46 +00:00
} svcustomtents_t ;
2007-08-30 20:45:01 +00:00
typedef struct laggedpacket_s
{
double time ;
struct laggedpacket_s * next ;
int length ;
2012-02-12 05:18:31 +00:00
unsigned char data [ MAX_QWMSGLEN + 10 ] ;
2007-08-30 20:45:01 +00:00
} laggedpacket_t ;
2004-12-08 04:14:52 +00:00
typedef struct
{
vec3_t origin ;
2005-01-25 05:01:30 +00:00
char angles [ 3 ] ;
2004-12-08 04:14:52 +00:00
qbyte modelindex ;
qbyte frame ;
qbyte colormap ;
qbyte skinnum ;
qbyte effects ;
qbyte scale ;
qbyte trans ;
2005-01-25 05:01:30 +00:00
char fatness ;
2004-12-08 04:14:52 +00:00
} mvdentity_state_t ;
Fixes, workarounds, and breakages. Hexen2 should work much better (-hexen2 says no mission pack, -portals says h2mp). Started working on splitting bigcoords per client, far too much work still to go on that. Removed gl_ztrick entirely. Enabled csprogs download by default. Added client support for fitzquake's 666 protocol, needs testing, some cleanup for dp protocols too, no server support, couldn't selectively enable it anyway. Now attempting to cache shadow meshes for explosions and stuff. Played with lightmaps a little, should potentially run a little faster on certain (intel?) cards. Tweeked npfte a little to try to avoid deadlocks and crashes. Fixed sky worldspawn parsing. Added h2mp's model format. Fixed baseline issue in q2 client, made servers generate q2 baselines. MOVETYPE_PUSH will not rotate extra if rotation is forced. Made status command show allowed client types. Changed lighting on weapons - should now be shaded.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3572 fc73d0e0-1445-4013-8a0c-d673dee63da5
2010-08-11 03:36:31 +00:00
extern entity_state_t * sv_staticentities ;
extern int sv_max_staticentities ;
2004-08-23 00:15:46 +00:00
typedef struct
{
qboolean active ; // false when server is going down
server_state_t state ; // precache commands are only valid during load
2005-03-20 02:57:11 +00:00
float gamespeed ; //time progression multiplier, fixed per-level.
qboolean csqcdebug ;
2008-05-25 22:23:43 +00:00
unsigned int csqcchecksum ;
2007-03-04 19:17:16 +00:00
qboolean mapchangelocked ;
2005-03-20 02:57:11 +00:00
2004-08-23 00:15:46 +00:00
double time ;
2005-08-07 18:08:13 +00:00
double starttime ;
2004-08-23 00:15:46 +00:00
int framenum ;
2005-12-21 03:07:33 +00:00
qboolean paused ; // are we paused?
2006-01-21 00:06:49 +00:00
float pausedstart ;
2004-08-23 00:15:46 +00:00
//check player/eyes models for hacks
unsigned model_player_checksum ;
unsigned eyes_player_checksum ;
2005-12-21 03:07:33 +00:00
2004-08-23 00:15:46 +00:00
char name [ 64 ] ; // file map name
char mapname [ 256 ] ;
char modelname [ MAX_QPATH ] ; // maps/<name>.bsp, for model_precache[0]
2009-11-04 21:16:50 +00:00
world_t world ;
2004-08-23 00:15:46 +00:00
2005-03-20 02:57:11 +00:00
union {
# ifdef Q2SERVER
struct {
char configstring [ Q2MAX_CONFIGSTRINGS ] [ MAX_QPATH ] ;
} ;
# endif
struct {
2009-06-21 17:45:33 +00:00
char * vw_model_precache [ 32 ] ;
2005-05-17 02:36:54 +00:00
char * model_precache [ MAX_MODELS ] ; // NULL terminated
2013-03-12 22:44:00 +00:00
char particle_precache [ MAX_SSPARTICLESPRE ] [ MAX_QPATH ] ; // NULL terminated
2005-03-20 02:57:11 +00:00
char sound_precache [ MAX_SOUNDS ] [ MAX_QPATH ] ; // NULL terminated
char * lightstyles [ MAX_LIGHTSTYLES ] ;
char lightstylecolours [ MAX_LIGHTSTYLES ] ;
} ;
2006-02-17 02:51:59 +00:00
} strings ;
2010-09-05 10:42:23 +00:00
qbyte h2cdtrack ;
2004-08-23 00:15:46 +00:00
int allocated_client_slots ; //number of slots available. (used mostly to stop single player saved games cacking up)
2012-01-17 07:57:46 +00:00
int spawned_client_slots ; //number of PLAYER slots which are active (ie: putclientinserver was called)
2013-03-12 22:35:33 +00:00
int spawned_observer_slots ;
2004-08-23 00:15:46 +00:00
2009-11-07 13:29:15 +00:00
model_t * models [ MAX_MODELS ] ;
2004-08-23 00:15:46 +00:00
qbyte * pvs , * phs ; // fully expanded and decompressed
// added to every client's unreliable buffer each frame, then cleared
sizebuf_t datagram ;
qbyte datagram_buf [ MAX_DATAGRAM ] ;
// added to every client's reliable buffer each frame, then cleared
sizebuf_t reliable_datagram ;
qbyte reliable_datagram_buf [ MAX_QWMSGLEN ] ;
2005-12-21 03:07:33 +00:00
// the multicast buffer is used to send a message to a set of clients
2004-08-23 00:15:46 +00:00
sizebuf_t multicast ;
Fixes, workarounds, and breakages. Hexen2 should work much better (-hexen2 says no mission pack, -portals says h2mp). Started working on splitting bigcoords per client, far too much work still to go on that. Removed gl_ztrick entirely. Enabled csprogs download by default. Added client support for fitzquake's 666 protocol, needs testing, some cleanup for dp protocols too, no server support, couldn't selectively enable it anyway. Now attempting to cache shadow meshes for explosions and stuff. Played with lightmaps a little, should potentially run a little faster on certain (intel?) cards. Tweeked npfte a little to try to avoid deadlocks and crashes. Fixed sky worldspawn parsing. Added h2mp's model format. Fixed baseline issue in q2 client, made servers generate q2 baselines. MOVETYPE_PUSH will not rotate extra if rotation is forced. Made status command show allowed client types. Changed lighting on weapons - should now be shaded.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3572 fc73d0e0-1445-4013-8a0c-d673dee63da5
2010-08-11 03:36:31 +00:00
qbyte multicast_buf [ MAX_QWMSGLEN ] ;
2004-08-23 00:15:46 +00:00
# ifdef NQPROT
sizebuf_t nqdatagram ;
qbyte nqdatagram_buf [ MAX_NQDATAGRAM ] ;
sizebuf_t nqreliable_datagram ;
qbyte nqreliable_datagram_buf [ MAX_NQMSGLEN ] ;
sizebuf_t nqmulticast ;
qbyte nqmulticast_buf [ MAX_NQMSGLEN ] ;
# endif
sizebuf_t q2datagram ;
qbyte q2datagram_buf [ MAX_Q2DATAGRAM ] ;
sizebuf_t q2reliable_datagram ;
qbyte q2reliable_datagram_buf [ MAX_Q2MSGLEN ] ;
sizebuf_t q2multicast ;
qbyte q2multicast_buf [ MAX_Q2MSGLEN ] ;
// the master buffer is used for building log packets
sizebuf_t master ;
qbyte master_buf [ MAX_DATAGRAM ] ;
// the signon buffer will be sent to each client as they connect
2011-12-05 15:23:40 +00:00
// traditionally includes the entity baselines, the static entities, etc
2005-12-21 03:07:33 +00:00
// large levels will have >MAX_DATAGRAM sized signons, so
2004-08-23 00:15:46 +00:00
// multiple signon messages are kept
2011-12-05 15:23:40 +00:00
// fte only stores writebyted stuff in here. everything else is regenerated based upon the client's extensions.
2004-08-23 00:15:46 +00:00
sizebuf_t signon ;
int num_signon_buffers ;
int signon_buffer_size [ MAX_SIGNON_BUFFERS ] ;
qbyte signon_buffers [ MAX_SIGNON_BUFFERS ] [ MAX_DATAGRAM ] ;
qboolean msgfromdemo ;
qboolean gamedirchanged ;
qboolean mvdrecording ;
2004-12-08 04:14:52 +00:00
//====================================================
2009-11-07 13:29:15 +00:00
//this lot is for serverside playback of demos
# ifdef SERVER_DEMO_PLAYBACK
2004-08-23 00:15:46 +00:00
qboolean mvdplayback ;
float realtime ;
2005-12-21 03:07:33 +00:00
vfsfile_t * demofile ; //also signifies playing the thing.
2004-08-23 00:15:46 +00:00
int lasttype ;
int lastto ;
2004-12-08 04:14:52 +00:00
//playback spikes (svc_nails/nails2)
2004-08-23 00:15:46 +00:00
int numdemospikes ;
struct {
vec3_t org ;
qbyte id ;
qbyte pitch ;
qbyte yaw ;
qbyte modelindex ;
} demospikes [ 255 ] ;
2004-12-08 04:14:52 +00:00
//playback of entities (svc_nails/nails2)
mvdentity_state_t * demostate ;
mvdentity_state_t * demobaselines ;
int demomaxents ;
2004-08-23 00:15:46 +00:00
qboolean demostatevalid ;
2004-12-08 04:14:52 +00:00
//players
2004-08-23 00:15:46 +00:00
struct {
int stats [ MAX_CL_STATS ] ;
int pl ;
int ping ;
int frags ;
int userid ;
int weaponframe ;
char userinfo [ MAX_INFO_STRING ] ;
2005-01-26 03:39:47 +00:00
vec3_t oldorg ;
vec3_t oldang ;
2004-08-23 00:15:46 +00:00
float updatetime ;
} recordedplayer [ MAX_CLIENTS ] ;
2004-12-08 04:14:52 +00:00
//gamestate
char demoinfo [ MAX_SERVERINFO_STRING ] ;
2004-08-23 00:15:46 +00:00
char demmodel_precache [ MAX_MODELS ] [ MAX_QPATH ] ; // NULL terminated
char demsound_precache [ MAX_SOUNDS ] [ MAX_QPATH ] ; // NULL terminated
char demgamedir [ 64 ] ;
char demname [ 64 ] ; // map name
2004-12-08 04:14:52 +00:00
qboolean democausesreconnect ; //this makes current clients go through the connection process (and when the demo ends too)
2004-08-23 00:15:46 +00:00
sizebuf_t demosignon ;
int num_demosignon_buffers ;
int demosignon_buffer_size [ MAX_SIGNON_BUFFERS ] ;
qbyte demosignon_buffers [ MAX_SIGNON_BUFFERS ] [ MAX_DATAGRAM ] ;
char demfullmapname [ 64 ] ;
char * demolightstyles [ MAX_LIGHTSTYLES ] ;
2009-11-07 13:29:15 +00:00
# endif
2004-12-08 04:14:52 +00:00
//====================================================
2004-08-23 00:15:46 +00:00
// movevars_t demomovevars; //FIXME:!
//end this lot... (demo playback)
2010-09-05 10:42:23 +00:00
int num_static_entities ;
2004-08-23 00:15:46 +00:00
svcustomtents_t customtents [ 255 ] ;
2005-02-28 07:16:19 +00:00
2013-04-04 08:08:49 +00:00
int * csqcentversion ; //prevents ent versions from going backwards
2004-08-23 00:15:46 +00:00
} server_t ;
typedef enum
{
cs_free , // can be reused for a new connection
cs_zombie , // client has been disconnected, but don't reuse
// connection for a couple seconds
2005-12-21 03:07:33 +00:00
cs_connected , // has been assigned to a client_t, but not in game yet
2004-08-23 00:15:46 +00:00
cs_spawned // client is fully in game
} client_conn_state_t ;
typedef struct
{
// received from client
// reply
2012-02-12 05:18:31 +00:00
double senttime ; //time we sent this frame to the client, for ping calcs
int sequence ; //the outgoing sequence - without mask, meaning we know if its current or stale
float ping_time ; //how long it took for the client to ack it, may be negativ
2012-02-27 12:23:15 +00:00
float move_msecs ; //
2012-02-12 05:18:31 +00:00
int packetsizein ; //amount of data received for this frame
int packetsizeout ; //amount of data that was sent in the frame
vec3_t playerpositions [ MAX_CLIENTS ] ; //where each player was in this frame, for antilag
qboolean playerpresent [ MAX_CLIENTS ] ; //whether the player was actually present
packet_entities_t entities ; //package containing entity states that were sent in this frame, for deltaing
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
unsigned int * resendentnum ; //the number of each entity that was sent in this frame
2012-02-12 05:18:31 +00:00
unsigned int * resendentbits ; //the bits of each entity that were sent in this frame
2004-08-23 00:15:46 +00:00
} client_frame_t ;
# ifdef Q2SERVER
typedef struct //merge?
{
int areabytes ;
qbyte areabits [ MAX_Q2MAP_AREAS / 8 ] ; // portalarea visibility bits
q2player_state_t ps ;
int num_entities ;
int first_entity ; // into the circular sv_packet_entities[]
int senttime ; // for ping calculations
2013-03-12 22:53:23 +00:00
float ping_time ;
2004-08-23 00:15:46 +00:00
} q2client_frame_t ;
# endif
2005-03-07 08:58:26 +00:00
# ifdef Q3SERVER
# include "clq3defs.h"
typedef struct //merge?
{
int flags ;
int areabytes ;
qbyte areabits [ MAX_Q2MAP_AREAS / 8 ] ; // portalarea visibility bits
q3playerState_t ps ;
int num_entities ;
int first_entity ; // into the circular sv_packet_entities[]
int senttime ; // for ping calculations
2005-08-07 18:08:13 +00:00
int serverMessageNum ;
int serverCommandNum ;
int serverTime ; // server time the message is valid for (in msec)
int localTime ;
int deltaFrame ;
2005-03-07 08:58:26 +00:00
} q3client_frame_t ;
# endif
2004-08-23 00:15:46 +00:00
2004-08-31 23:58:18 +00:00
# define MAX_BACK_BUFFERS 16
2004-08-23 00:15:46 +00:00
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
enum
{
PRESPAWN_INVALID = 0 ,
PRESPAWN_SERVERINFO ,
PRESPAWN_SOUNDLIST , //nq skips these
PRESPAWN_MODELLIST ,
PRESPAWN_MAPCHECK , //wait for old prespawn command
2013-03-12 22:44:00 +00:00
PRESPAWN_PARTICLES ,
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
PRESPAWN_CUSTOMTENTS ,
PRESPAWN_SIGNON_BUF ,
PRESPAWN_SPAWNSTATIC ,
PRESPAWN_BASELINES ,
PRESPAWN_DONE
} ;
2004-08-23 00:15:46 +00:00
typedef struct client_s
{
client_conn_state_t state ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
unsigned int prespawn_stage ;
unsigned int prespawn_idx ;
2004-08-23 00:15:46 +00:00
int spectator ; // non-interactive
2011-09-06 20:53:38 +00:00
int redirect ;
2004-08-23 00:15:46 +00:00
qboolean sendinfo ; // at end of frame, send info to all
// this prevents malicious multiple broadcasts
float lastnametime ; // time of last name change
int lastnamecount ; // time of last name change
unsigned checksum ; // checksum for calcs
qboolean drop ; // lose this guy next opportunity
int lossage ; // loss percentage
2005-03-07 08:58:26 +00:00
int challenge ;
2004-08-23 00:15:46 +00:00
int userid ; // identifying number
2005-03-07 08:58:26 +00:00
char userinfo [ EXTENDED_INFO_STRING ] ; // infostring
2004-08-23 00:15:46 +00:00
usercmd_t lastcmd ; // for filling in big drops and partial predictions
double localtime ; // of last message
qboolean jump_held ;
2012-02-12 05:18:31 +00:00
qboolean lockangles ; //mod is spamming angle changes, don't do relative changes
2004-08-23 00:15:46 +00:00
float maxspeed ; // localized maxspeed
float entgravity ; // localized ent gravity
int viewent ; //fake the entity positioning.
2005-12-21 03:07:33 +00:00
2004-08-23 00:15:46 +00:00
edict_t * edict ; // EDICT_NUM(clientnum+1)
2009-03-03 01:52:30 +00:00
//additional game modes use additional edict pointers. this ensures that references are crashes.
2004-08-23 00:15:46 +00:00
# ifdef Q2SERVER
q2edict_t * q2edict ; // EDICT_NUM(clientnum+1)
# endif
2009-03-03 01:52:30 +00:00
# ifdef HLSERVER
struct hledict_s * hledict ;
# endif
2004-08-23 00:15:46 +00:00
2005-08-26 22:56:51 +00:00
int playercolor ;
2004-08-23 00:15:46 +00:00
int playerclass ;
2005-05-17 02:36:54 +00:00
char teambuf [ 32 ] ;
char * team ;
char * name ;
char namebuf [ 32 ] ; // for printing to other people
2004-08-23 00:15:46 +00:00
// extracted from userinfo
2011-09-03 03:49:43 +00:00
char guid [ 32 ] ; /*+2 for split+pad*/
2004-08-23 00:15:46 +00:00
int messagelevel ; // for filtering printed messages
// the datagram is written to after every frame, but only cleared
// when it is sent out to the client. overflow is tolerated.
sizebuf_t datagram ;
2012-09-30 05:52:03 +00:00
qbyte datagram_buf [ MAX_OVERALLMSGLEN / 2 ] ;
2004-08-23 00:15:46 +00:00
// back buffers for client reliable data
sizebuf_t backbuf ;
int num_backbuf ;
int backbuf_size [ MAX_BACK_BUFFERS ] ;
qbyte backbuf_data [ MAX_BACK_BUFFERS ] [ MAX_BACKBUFLEN ] ;
double connection_started ; // or time of disconnect for zombies
qboolean send_message ; // set on frames a datagram arived on
2009-11-13 16:54:21 +00:00
laggedentinfo_t laggedents [ MAX_CLIENTS ] ;
unsigned int laggedents_count ;
float laggedents_frac ;
2009-11-04 21:16:50 +00:00
2004-08-23 00:15:46 +00:00
// spawn parms are carried from level to level
float spawn_parms [ NUM_SPAWN_PARMS ] ;
char * spawninfo ;
float spawninfotime ;
float nextservertimeupdate ;
2005-12-21 03:07:33 +00:00
// client known data for deltas
2004-08-23 00:15:46 +00:00
int old_frags ;
2005-12-21 03:07:33 +00:00
2008-05-25 22:23:43 +00:00
int statsi [ MAX_CL_STATS ] ;
float statsf [ MAX_CL_STATS ] ;
char * statss [ MAX_CL_STATS ] ;
2010-08-21 22:12:43 +00:00
char * centerprintstring ;
2004-08-23 00:15:46 +00:00
union { //save space
2005-05-26 12:55:34 +00:00
client_frame_t * frames ; // updates can be deltad from here
2004-08-23 00:15:46 +00:00
# ifdef Q2SERVER
2005-05-26 12:55:34 +00:00
q2client_frame_t * q2frames ;
2005-03-07 08:58:26 +00:00
# endif
# ifdef Q3SERVER
2005-05-26 12:55:34 +00:00
q3client_frame_t * q3frames ;
2004-08-23 00:15:46 +00:00
# endif
2006-02-17 02:51:59 +00:00
} frameunion ;
2012-02-12 05:18:31 +00:00
packet_entities_t sentents ;
unsigned int * pendingentbits ;
2007-06-20 00:02:54 +00:00
2008-11-09 22:29:28 +00:00
char downloadfn [ MAX_QPATH ] ;
2005-12-21 03:07:33 +00:00
vfsfile_t * download ; // file being downloaded
2009-04-06 00:34:32 +00:00
unsigned int downloadsize ; // total bytes
unsigned int downloadcount ; // bytes sent
2004-08-23 00:15:46 +00:00
2007-06-20 00:02:54 +00:00
int downloadacked ; //DP-specific
int downloadstarted ; //DP-specific
2004-08-23 00:15:46 +00:00
int spec_track ; // entnum of player tracking
2005-03-07 08:58:26 +00:00
# ifdef Q3SERVER
int gamestatesequence ; //the sequence number the initial gamestate was sent in.
int last_server_command_num ;
int last_client_command_num ;
int num_server_commands ;
int num_client_commands ;
2005-08-30 00:15:06 +00:00
char server_commands [ 64 ] [ 1024 ] ;
2005-03-07 08:58:26 +00:00
char last_client_command [ 1024 ] ;
# endif
2005-02-28 07:16:19 +00:00
# ifdef PEXT_CSQC
int csqclastsentsequence ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
int * csqcentsequence ; //the sequence number a csqc entity was sent in
int * csqcentversions ; //the version of the entity when it was sent in that sequenced packet.
2005-02-28 07:16:19 +00:00
# endif
2004-08-23 00:15:46 +00:00
//true/false/persist
qbyte ismuted ;
qbyte iscuffed ;
qbyte iscrippled ;
qbyte istobeloaded ; //loadgame creates place holders for clients to connect to. Effectivly loading a game reconnects all clients, but has precreated ents.
2006-05-29 06:12:12 +00:00
double floodprotmessage ;
double lastspoke ;
2004-08-23 00:15:46 +00:00
double lockedtill ;
qboolean upgradewarn ; // did we warn him?
2005-12-21 03:07:33 +00:00
vfsfile_t * upload ;
2004-08-23 00:15:46 +00:00
char uploadfn [ MAX_QPATH ] ;
netadr_t snap_from ;
qboolean remote_snap ;
2005-12-21 03:07:33 +00:00
2004-08-23 00:15:46 +00:00
//===== NETWORK ============
int chokecount ;
2009-05-24 10:11:17 +00:00
qboolean waschoked ;
2004-08-23 00:15:46 +00:00
int delta_sequence ; // -1 = no compression
2005-03-07 08:58:26 +00:00
int last_sequence ;
2004-08-23 00:15:46 +00:00
netchan_t netchan ;
2005-06-22 17:10:13 +00:00
qboolean isindependant ;
2004-08-23 00:15:46 +00:00
2012-02-12 05:18:31 +00:00
int lastsequence_acknowledged ;
2005-02-28 07:16:19 +00:00
2010-12-05 02:46:07 +00:00
# ifdef VOICECHAT
unsigned int voice_read ; /*place in ring*/
2013-06-23 02:17:02 +00:00
unsigned char voice_mute [ ( MAX_CLIENTS + 7 ) / 8 ] ;
2010-11-15 02:40:31 +00:00
qboolean voice_active ;
2010-12-05 02:46:07 +00:00
enum
{
/*note - when recording an mvd, only 'all' will be received by non-spectating viewers. all other chat will only be heard when spectating the receiver(or sender) of said chat*/
/*should we add one to respond to the last speaker? or should that be an automagic +voip_reply instead?*/
VT_TEAM ,
VT_ALL ,
VT_NONMUTED , /*cheap, but allows custom private channels with no external pesters*/
VT_PLAYERSLOT0
/*player0+...*/
} voice_target ;
# endif
2004-08-23 00:15:46 +00:00
# ifdef SVCHAT
svchat_t chat ;
# endif
# ifdef SVRANKING
int rankid ;
int kills ;
int deaths ;
double stats_started ;
# endif
2005-03-10 03:55:18 +00:00
qboolean csqcactive ;
2004-08-23 00:15:46 +00:00
# ifdef PROTOCOL_VERSION_FTE
2011-05-20 04:10:46 +00:00
qboolean pextknown ;
2013-03-12 22:47:42 +00:00
unsigned int fteprotocolextensions ;
unsigned int fteprotocolextensions2 ;
2004-08-23 00:15:46 +00:00
# endif
2013-03-12 22:47:42 +00:00
unsigned int zquake_extensions ;
2012-02-12 05:18:31 +00:00
unsigned int max_net_ents ; /*highest entity number the client can receive (limited by either protocol or client's buffer size)*/
2013-06-23 02:17:02 +00:00
unsigned int max_net_clients ; /*max number of player slots supported by the client */
2011-07-30 14:14:56 +00:00
unsigned int maxmodels ; /*max models supported by whatever the protocol is*/
2005-05-26 12:55:34 +00:00
enum {
2005-06-14 04:52:10 +00:00
SCP_BAD , //don't send (a bot)
2005-05-26 12:55:34 +00:00
SCP_QUAKEWORLD ,
2005-05-27 05:41:07 +00:00
SCP_QUAKE2 ,
2005-08-26 22:56:51 +00:00
SCP_QUAKE3 ,
2009-07-14 23:42:54 +00:00
//all the below are considered netquake clients.
2005-05-26 12:55:34 +00:00
SCP_NETQUAKE ,
2012-10-01 14:29:44 +00:00
SCP_PROQUAKE ,
2011-10-27 16:16:29 +00:00
SCP_FITZ666 ,
2005-05-27 05:41:07 +00:00
SCP_DARKPLACES6 ,
SCP_DARKPLACES7 //extra prediction stuff
//note, nq is nq+
2005-05-26 12:55:34 +00:00
} protocol ;
2004-08-23 00:15:46 +00:00
//speed cheat testing
int msecs ;
int msec_cheating ;
float last_check ;
qboolean gibfilter ;
int trustlevel ;
qboolean wasrecorded ; //this client shouldn't get any net messages sent to them
2005-12-21 03:07:33 +00:00
2005-01-26 03:39:47 +00:00
vec3_t specorigin ; //mvds need to use a different origin from the one QC has.
vec3_t specvelocity ;
2004-08-23 00:15:46 +00:00
int language ; //the clients language
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
// struct {
// qbyte vweap;
// } otherclientsknown[MAX_CLIENTS]; //updated as needed. Flag at a time, or all flags.
2004-08-23 00:15:46 +00:00
2010-12-23 03:55:10 +00:00
struct client_s * controller ; /*first in splitscreen chain, NULL=nosplitscreen*/
struct client_s * controlled ; /*next in splitscreen chain*/
2004-10-19 16:10:14 +00:00
2012-02-27 12:23:15 +00:00
/*these are the current rates*/
float ratetime ;
float inrate ;
float outrate ;
2005-03-10 03:55:18 +00:00
2004-10-19 16:10:14 +00:00
int rate ;
int drate ;
2006-09-17 00:59:22 +00:00
netadr_t realip ;
int realip_status ;
int realip_num ;
int realip_ping ;
2007-08-30 20:45:01 +00:00
float delay ;
laggedpacket_t * laggedpacket ;
laggedpacket_t * laggedpacket_last ;
2004-08-23 00:15:46 +00:00
} client_t ;
2005-05-26 12:55:34 +00:00
# define ISQWCLIENT(cl) ((cl)->protocol == SCP_QUAKEWORLD)
# define ISQ2CLIENT(cl) ((cl)->protocol == SCP_QUAKE2)
2008-11-09 22:29:28 +00:00
# define ISQ3CLIENT(cl) ((cl)->protocol == SCP_QUAKE3)
2005-05-27 05:41:07 +00:00
# define ISNQCLIENT(cl) ((cl)->protocol >= SCP_NETQUAKE)
2008-11-09 22:29:28 +00:00
# define ISDPCLIENT(cl) ((cl)->protocol >= SCP_DARKPLACES6)
2005-05-26 12:55:34 +00:00
2004-08-23 00:15:46 +00:00
// a client can leave the server in one of four ways:
// dropping properly by quiting or disconnecting
// timing out if no valid messages are received for timeout.value seconds
// getting kicked off by the server operator
// a program error, like an overflowed reliable buffer
//=============================================================================
//mvd stuff
# define MSG_BUF_SIZE 8192
typedef struct
{
vec3_t origin ;
vec3_t angles ;
int weaponframe ;
int skinnum ;
int model ;
int effects ;
} demoinfo_t ;
typedef struct
{
demoinfo_t info ;
float sec ;
int parsecount ;
qboolean fixangle ;
vec3_t angle ;
float cmdtime ;
int flags ;
int frame ;
} demo_client_t ;
typedef struct {
qbyte type ;
qbyte full ;
int to ;
int size ;
qbyte data [ 1 ] ; //gcc doesn't allow [] (?)
} header_t ;
typedef struct
{
2010-11-20 22:01:16 +00:00
sizebuf_t sb ;
2004-08-23 00:15:46 +00:00
int bufsize ;
header_t * h ;
} demobuf_t ;
typedef struct
{
demo_client_t clients [ MAX_CLIENTS ] ;
double time ;
demobuf_t buf ;
} demo_frame_t ;
typedef struct {
qbyte * data ;
int start , end , last ;
int maxsize ;
} dbuffer_t ;
# define DEMO_FRAMES 64
# define DEMO_FRAMES_MASK (DEMO_FRAMES - 1)
typedef struct
{
2012-08-04 01:35:52 +00:00
// demobuf_t *dbuf;
// dbuffer_t dbuffer;
2004-08-23 00:15:46 +00:00
sizebuf_t datagram ;
qbyte datagram_data [ MSG_BUF_SIZE ] ;
int lastto ;
int lasttype ;
double time , pingtime ;
2011-08-16 04:12:15 +00:00
int statsi [ MAX_CLIENTS ] [ MAX_CL_STATS ] ; // ouch!
float statsf [ MAX_CLIENTS ] [ MAX_CL_STATS ] ; // ouch!
char * statss [ MAX_CLIENTS ] [ MAX_CL_STATS ] ; // ouch!
2004-08-23 00:15:46 +00:00
client_t recorder ;
qboolean fixangle [ MAX_CLIENTS ] ;
float fixangletime [ MAX_CLIENTS ] ;
vec3_t angles [ MAX_CLIENTS ] ;
int parsecount ;
int lastwritten ;
demo_frame_t frames [ DEMO_FRAMES ] ;
demoinfo_t info [ MAX_CLIENTS ] ;
qbyte buffer [ 20 * MAX_QWMSGLEN ] ;
int bufsize ;
int forceFrame ;
2004-12-10 21:34:42 +00:00
struct mvddest_s * dest ;
2006-09-17 00:59:22 +00:00
struct mvdpendingdest_s * pendingdest ;
2004-08-23 00:15:46 +00:00
} demo_t ;
//=============================================================================
# define STATFRAMES 100
typedef struct
{
double active ;
double idle ;
int count ;
int packets ;
double latched_active ;
double latched_idle ;
int latched_packets ;
} svstats_t ;
// MAX_CHALLENGES is made large to prevent a denial
// of service attack that could cycle all of them
// out before legitimate users connected
# define MAX_CHALLENGES 1024
typedef struct
{
netadr_t adr ;
int challenge ;
int time ;
} challenge_t ;
typedef struct bannedips_s {
2009-07-14 23:42:54 +00:00
enum { BAN_BAN , BAN_FILTER , BAN_PERMIT } type ;
2004-08-23 00:15:46 +00:00
struct bannedips_s * next ;
netadr_t adr ;
2006-05-22 22:51:14 +00:00
netadr_t adrmask ;
2009-07-14 23:42:54 +00:00
unsigned int expiretime ;
2006-05-25 04:47:03 +00:00
char reason [ 1 ] ;
2004-08-23 00:15:46 +00:00
} bannedips_t ;
2005-03-07 08:58:26 +00:00
typedef enum {
GT_PROGS , //q1, qw, h2 are similar enough that we consider it only one game mode. (We don't support the h2 protocol)
2007-09-02 19:55:17 +00:00
GT_Q1QVM ,
2009-03-03 01:52:30 +00:00
GT_HALFLIFE ,
2005-03-07 08:58:26 +00:00
GT_QUAKE2 , //q2 servers run from a q2 game dll
2005-03-18 06:13:11 +00:00
GT_QUAKE3 , //q3 servers run off the q3 qvm api
GT_MAX
2005-03-07 08:58:26 +00:00
} gametype_e ;
2005-03-18 06:13:11 +00:00
typedef struct levelcache_s {
struct levelcache_s * next ;
char * mapname ;
gametype_e gametype ;
} levelcache_t ;
2005-11-30 01:20:53 +00:00
# ifdef TCPCONNECT
typedef struct svtcpstream_s {
int socketnum ;
int inlen ;
qboolean waitingforprotocolconfirmation ;
char inbuffer [ 1500 ] ;
float timeouttime ;
netadr_t remoteaddr ;
struct svtcpstream_s * next ;
} svtcpstream_t ;
# endif
2004-08-23 00:15:46 +00:00
typedef struct
{
2005-03-07 08:58:26 +00:00
gametype_e gametype ;
2004-08-23 00:15:46 +00:00
int spawncount ; // number of servers spawned since start,
// used to check late spawns
2006-12-26 18:19:35 +00:00
int framenum ; //physics frame number for out-of-sequence thinks (fix for slow rockets)
2004-08-23 00:15:46 +00:00
2008-11-09 22:29:28 +00:00
struct ftenet_connections_s * sockets ;
2005-11-30 01:20:53 +00:00
2004-08-23 00:15:46 +00:00
client_t clients [ MAX_CLIENTS ] ;
int serverflags ; // episode completion information
2005-12-21 03:07:33 +00:00
2004-08-23 00:15:46 +00:00
double last_heartbeat ;
int heartbeat_sequence ;
svstats_t stats ;
char info [ MAX_SERVERINFO_STRING ] ;
// log messages are used so that fraglog processes can get stats
int logsequence ; // the message currently being filled
double logtime ; // time of last swap
sizebuf_t log [ 2 ] ;
qbyte log_buf [ 2 ] [ MAX_DATAGRAM ] ;
challenge_t challenges [ MAX_CHALLENGES ] ; // to prevent invalid IPs from connecting
bannedips_t * bannedips ;
char progsnames [ MAX_PROGS ] [ 32 ] ;
progsnum_t progsnum [ MAX_PROGS ] ;
int numprogs ;
Fixes, workarounds, and breakages. Hexen2 should work much better (-hexen2 says no mission pack, -portals says h2mp). Started working on splitting bigcoords per client, far too much work still to go on that. Removed gl_ztrick entirely. Enabled csprogs download by default. Added client support for fitzquake's 666 protocol, needs testing, some cleanup for dp protocols too, no server support, couldn't selectively enable it anyway. Now attempting to cache shadow meshes for explosions and stuff. Played with lightmaps a little, should potentially run a little faster on certain (intel?) cards. Tweeked npfte a little to try to avoid deadlocks and crashes. Fixed sky worldspawn parsing. Added h2mp's model format. Fixed baseline issue in q2 client, made servers generate q2 baselines. MOVETYPE_PUSH will not rotate extra if rotation is forced. Made status command show allowed client types. Changed lighting on weapons - should now be shaded.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3572 fc73d0e0-1445-4013-8a0c-d673dee63da5
2010-08-11 03:36:31 +00:00
struct netprim_s netprim ;
2004-08-23 00:15:46 +00:00
qboolean demoplayback ;
qboolean demorecording ;
qboolean msgfromdemo ;
int language ; //the server operators language
2007-08-30 20:45:01 +00:00
laggedpacket_t * free_lagged_packet ;
2012-02-12 05:18:31 +00:00
packet_entities_t entstatebuffer ; /*just a temp buffer*/
2004-08-23 00:15:46 +00:00
levelcache_t * levcache ;
} server_static_t ;
//=============================================================================
// edict->movetype values
# define MOVETYPE_NONE 0 // never moves
# define MOVETYPE_ANGLENOCLIP 1
# define MOVETYPE_ANGLECLIP 2
# define MOVETYPE_WALK 3 // gravity
# define MOVETYPE_STEP 4 // gravity, special edge handling
# define MOVETYPE_FLY 5
# define MOVETYPE_TOSS 6 // gravity
# define MOVETYPE_PUSH 7 // no clip to world, push and crush
# define MOVETYPE_NOCLIP 8
# define MOVETYPE_FLYMISSILE 9 // extra size to monsters
# define MOVETYPE_BOUNCE 10
# define MOVETYPE_BOUNCEMISSILE 11 // bounce w/o gravity
# define MOVETYPE_FOLLOW 12 // track movement of aiment
2010-08-11 23:55:35 +00:00
# define MOVETYPE_H2PUSHPULL 13 // pushable/pullable object
# define MOVETYPE_H2SWIM 14 // should keep the object in water
2009-11-04 21:16:50 +00:00
# define MOVETYPE_PHYSICS 32
2004-08-23 00:15:46 +00:00
// edict->solid values
# define SOLID_NOT 0 // no interaction with other objects
# define SOLID_TRIGGER 1 // touch on edge, but not blocking
# define SOLID_BBOX 2 // touch on edge, block
# define SOLID_SLIDEBOX 3 // touch on edge, but not an onground
# define SOLID_BSP 4 // bsp clip, touch on edge, block
# define SOLID_PHASEH2 5
2004-11-23 15:13:32 +00:00
# define SOLID_CORPSE 5
2004-08-23 00:15:46 +00:00
# define SOLID_LADDER 20 //dmw. touch on edge, not blocking. Touching players have different physics. Otherwise a SOLID_TRIGGER
# define DAMAGE_NO 0
# define DAMAGE_YES 1
# define DAMAGE_AIM 2
2008-05-25 22:23:43 +00:00
# define PVSF_NORMALPVS 0x0
# define PVSF_NOTRACECHECK 0x1
# define PVSF_USEPHS 0x2
# define PVSF_IGNOREPVS 0x3
# define PVSF_MODE_MASK 0x3
# define PVSF_NOREMOVE 0x80
2004-08-23 00:15:46 +00:00
// entity effects
//define EF_BRIGHTFIELD 1
//define EF_MUZZLEFLASH 2
2011-10-27 16:16:29 +00:00
//#define EF_BRIGHTLIGHT (1<<2)
//#define EF_DIMLIGHT (1<<4)
2004-08-23 00:15:46 +00:00
2011-10-27 16:16:29 +00:00
//#define EF_FULLBRIGHT 512
2004-08-23 00:15:46 +00:00
2009-11-04 21:16:50 +00:00
# define SPAWNFLAG_NOT_EASY (1<<8)
# define SPAWNFLAG_NOT_MEDIUM (1<<9)
# define SPAWNFLAG_NOT_HARD (1<<10)
# define SPAWNFLAG_NOT_DEATHMATCH (1<<11)
2004-08-23 00:15:46 +00:00
2009-11-04 21:16:50 +00:00
# define SPAWNFLAG_NOT_H2PALADIN (1<<8)
# define SPAWNFLAG_NOT_H2CLERIC (1<<9)
# define SPAWNFLAG_NOT_H2NECROMANCER (1<<10)
# define SPAWNFLAG_NOT_H2THEIF (1<<11)
# define SPAWNFLAG_NOT_H2EASY (1<<12)
# define SPAWNFLAG_NOT_H2MEDIUM (1<<13)
# define SPAWNFLAG_NOT_H2HARD (1<<14)
# define SPAWNFLAG_NOT_H2DEATHMATCH (1<<15)
# define SPAWNFLAG_NOT_H2COOP (1<<16)
# define SPAWNFLAG_NOT_H2SINGLE (1<<17)
2004-08-23 00:15:46 +00:00
#if 0 //ndef Q2SERVER
typedef enum multicast_e
{
MULTICAST_ALL ,
MULTICAST_PHS ,
MULTICAST_PVS ,
MULTICAST_ALL_R ,
MULTICAST_PHS_R ,
MULTICAST_PVS_R
} multicast_t ;
# endif
2005-02-28 07:16:19 +00:00
//shared with qc
2005-05-08 17:03:19 +00:00
# define MSG_PRERELONE -100
2005-02-28 07:16:19 +00:00
# define MSG_BROADCAST 0 // unreliable to all
# define MSG_ONE 1 // reliable to one (msg_entity)
# define MSG_ALL 2 // reliable to all
# define MSG_INIT 3 // write to the init string
# define MSG_MULTICAST 4 // for multicast()
# define MSG_CSQC 5 // for writing csqc entities
2004-08-23 00:15:46 +00:00
//============================================================================
2009-11-15 03:20:17 +00:00
extern cvar_t sv_mintic , sv_maxtic , sv_limittics ;
2004-08-23 00:15:46 +00:00
extern cvar_t sv_maxspeed ;
2009-11-04 21:16:50 +00:00
extern cvar_t sv_antilag ;
2009-11-13 16:54:21 +00:00
extern cvar_t sv_antilag_frac ;
2004-08-23 00:15:46 +00:00
extern netadr_t master_adr [ MAX_MASTERS ] ; // address of the master server
2011-10-27 16:16:29 +00:00
extern cvar_t pr_ssqc_progs ;
2004-08-23 00:15:46 +00:00
extern cvar_t spawn ;
extern cvar_t teamplay ;
extern cvar_t deathmatch ;
Fixes, workarounds, and breakages. Hexen2 should work much better (-hexen2 says no mission pack, -portals says h2mp). Started working on splitting bigcoords per client, far too much work still to go on that. Removed gl_ztrick entirely. Enabled csprogs download by default. Added client support for fitzquake's 666 protocol, needs testing, some cleanup for dp protocols too, no server support, couldn't selectively enable it anyway. Now attempting to cache shadow meshes for explosions and stuff. Played with lightmaps a little, should potentially run a little faster on certain (intel?) cards. Tweeked npfte a little to try to avoid deadlocks and crashes. Fixed sky worldspawn parsing. Added h2mp's model format. Fixed baseline issue in q2 client, made servers generate q2 baselines. MOVETYPE_PUSH will not rotate extra if rotation is forced. Made status command show allowed client types. Changed lighting on weapons - should now be shaded.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3572 fc73d0e0-1445-4013-8a0c-d673dee63da5
2010-08-11 03:36:31 +00:00
extern cvar_t coop ;
2004-08-23 00:15:46 +00:00
extern cvar_t fraglimit ;
extern cvar_t timelimit ;
extern server_static_t svs ; // persistant server info
extern server_t sv ; // local server
extern client_t * host_client ;
extern edict_t * sv_player ;
extern char localmodels [ MAX_MODELS ] [ 5 ] ; // inline model names for precache
extern char localinfo [ MAX_LOCALINFO_STRING + 1 ] ;
2005-12-21 03:07:33 +00:00
extern vfsfile_t * sv_fraglogfile ;
2004-08-23 00:15:46 +00:00
//===========================================================
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
void SV_AddDebugPolygons ( void ) ;
2013-05-03 04:28:08 +00:00
char * SV_CheckRejectConnection ( netadr_t * adr , char * uinfo , unsigned int protocol , unsigned int pext1 , unsigned int pext2 , char * guid ) ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
2004-08-23 00:15:46 +00:00
//
// sv_main.c
//
2009-11-04 21:16:50 +00:00
NORETURN void VARGS SV_Error ( char * error , . . . ) LIKEPRINTF ( 1 ) ;
2004-08-23 00:15:46 +00:00
void SV_Shutdown ( void ) ;
2011-06-05 23:53:33 +00:00
float SV_Frame ( void ) ;
2004-08-23 00:15:46 +00:00
void SV_FinalMessage ( char * message ) ;
void SV_DropClient ( client_t * drop ) ;
struct quakeparms_s ;
void SV_Init ( struct quakeparms_s * parms ) ;
2013-06-23 02:17:02 +00:00
void SV_ExecInitialConfigs ( char * defaultexec ) ;
2004-08-23 00:15:46 +00:00
2010-02-06 01:25:04 +00:00
int SV_CalcPing ( client_t * cl , qboolean forcecalc ) ;
2013-03-31 04:21:08 +00:00
void SV_FullClientUpdate ( client_t * client , client_t * to ) ;
2013-07-13 12:14:32 +00:00
void SV_GeneratePublicUserInfo ( int pext , client_t * cl , char * info , int infolength ) ;
2004-08-23 00:15:46 +00:00
int SV_ModelIndex ( char * name ) ;
void SV_WriteClientdataToMessage ( client_t * client , sizebuf_t * msg ) ;
2012-02-12 05:18:31 +00:00
void SVQW_WriteDelta ( entity_state_t * from , entity_state_t * to , sizebuf_t * msg , qboolean force , unsigned int protext ) ;
2004-08-23 00:15:46 +00:00
void SV_SaveSpawnparms ( qboolean ) ;
2010-07-25 15:06:38 +00:00
void SV_SaveLevelCache ( char * savename , qboolean dontharmgame ) ;
2011-06-29 18:39:11 +00:00
void SV_Savegame ( char * savename ) ;
2010-07-25 15:06:38 +00:00
qboolean SV_LoadLevelCache ( char * savename , char * level , char * startspot , qboolean ignoreplayers ) ;
2004-08-23 00:15:46 +00:00
void SV_Physics_Client ( edict_t * ent , int num ) ;
void SV_ExecuteUserCommand ( char * s , qboolean fromQC ) ;
void SV_InitOperatorCommands ( void ) ;
void SV_SendServerinfo ( client_t * client ) ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
void SV_ExtractFromUserinfo ( client_t * cl , qboolean verbose ) ;
2004-08-23 00:15:46 +00:00
2005-12-21 03:07:33 +00:00
void SV_SaveInfos ( vfsfile_t * f ) ;
2004-11-23 00:34:41 +00:00
2004-08-23 00:15:46 +00:00
void Master_Heartbeat ( void ) ;
void Master_Packet ( void ) ;
2008-08-23 19:17:19 +00:00
void SV_FixupName ( char * in , char * out , unsigned int outlen ) ;
2004-08-23 00:15:46 +00:00
//
// sv_init.c
//
void SV_SpawnServer ( char * server , char * startspot , qboolean noents , qboolean usecinematic ) ;
void SV_UnspawnServer ( void ) ;
void SV_FlushSignon ( void ) ;
void SV_FilterImpulseInit ( void ) ;
2009-11-04 21:16:50 +00:00
qboolean SV_FilterImpulse ( int imp , int level ) ;
2004-08-23 00:15:46 +00:00
//svq2_game.c
qboolean SVQ2_InitGameProgs ( void ) ;
2005-03-18 06:13:11 +00:00
void VARGS SVQ2_ShutdownGameProgs ( void ) ;
2004-08-23 00:15:46 +00:00
//svq2_ents.c
2012-02-12 05:18:31 +00:00
void SVQ2_BuildClientFrame ( client_t * client ) ;
void SVQ2_WriteFrameToClient ( client_t * client , sizebuf_t * msg ) ;
2004-08-23 00:15:46 +00:00
# ifdef Q2SERVER
void MSGQ2_WriteDeltaEntity ( q2entity_state_t * from , q2entity_state_t * to , sizebuf_t * msg , qboolean force , qboolean newentity ) ;
Fixes, workarounds, and breakages. Hexen2 should work much better (-hexen2 says no mission pack, -portals says h2mp). Started working on splitting bigcoords per client, far too much work still to go on that. Removed gl_ztrick entirely. Enabled csprogs download by default. Added client support for fitzquake's 666 protocol, needs testing, some cleanup for dp protocols too, no server support, couldn't selectively enable it anyway. Now attempting to cache shadow meshes for explosions and stuff. Played with lightmaps a little, should potentially run a little faster on certain (intel?) cards. Tweeked npfte a little to try to avoid deadlocks and crashes. Fixed sky worldspawn parsing. Added h2mp's model format. Fixed baseline issue in q2 client, made servers generate q2 baselines. MOVETYPE_PUSH will not rotate extra if rotation is forced. Made status command show allowed client types. Changed lighting on weapons - should now be shaded.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3572 fc73d0e0-1445-4013-8a0c-d673dee63da5
2010-08-11 03:36:31 +00:00
void SVQ2_BuildBaselines ( void ) ;
2004-08-23 00:15:46 +00:00
# endif
2005-09-14 04:38:33 +00:00
//q3 stuff
# ifdef Q3SERVER
void SVQ3_ShutdownGame ( void ) ;
qboolean SVQ3_InitGame ( void ) ;
qboolean SVQ3_ConsoleCommand ( void ) ;
2012-02-12 05:18:31 +00:00
qboolean SVQ3_HandleClient ( void ) ;
2005-09-14 04:38:33 +00:00
void SVQ3_DirectConnect ( void ) ;
2005-11-30 01:20:53 +00:00
void SVQ3_DropClient ( client_t * cl ) ;
int SVQ3_AddBot ( void ) ;
2005-09-14 04:38:33 +00:00
void SVQ3_RunFrame ( void ) ;
void SVQ3_SendMessage ( client_t * client ) ;
qboolean SVQ3_Command ( void ) ;
# endif
2004-08-23 00:15:46 +00:00
//
// sv_phys.c
//
2010-07-11 10:53:13 +00:00
void SV_SetMoveVars ( void ) ;
2011-09-03 03:49:43 +00:00
void WPhys_RunNewmis ( world_t * w ) ;
2004-08-23 00:15:46 +00:00
qboolean SV_Physics ( void ) ;
2011-09-03 03:49:43 +00:00
void WPhys_CheckVelocity ( world_t * w , wedict_t * ent ) ;
trace_t WPhys_Trace_Toss ( world_t * w , wedict_t * ent , wedict_t * ignore ) ;
2010-07-11 10:53:13 +00:00
void SV_ProgStartFrame ( void ) ;
2011-09-03 03:49:43 +00:00
void WPhys_RunEntity ( world_t * w , wedict_t * ent ) ;
qboolean WPhys_RunThink ( world_t * w , wedict_t * ent ) ;
2012-01-17 07:57:46 +00:00
void WPhys_MoveChain ( world_t * w , wedict_t * ent , wedict_t * movechain , float * initial_origin , float * initial_angle ) ; /*here for player movement to do movechains too*/
2004-08-23 00:15:46 +00:00
//
// sv_send.c
//
2013-06-23 02:17:02 +00:00
void SV_CalcNetRates ( client_t * cl , double * ftime , int * frames , double * minf , double * maxf ) ; //gets received framerate etc info
2005-11-30 01:20:53 +00:00
qboolean SV_ChallengePasses ( int challenge ) ;
2008-01-23 01:31:01 +00:00
void SV_QCStatName ( int type , char * name , int statnum ) ;
void SV_QCStatFieldIdx ( int type , unsigned int fieldindex , int statnum ) ;
2008-11-09 22:29:28 +00:00
void SV_QCStatGlobal ( int type , char * globalname , int statnum ) ;
2010-08-16 02:03:02 +00:00
void SV_QCStatPtr ( int type , void * ptr , int statnum ) ;
2004-11-23 00:34:41 +00:00
void SV_ClearQCStats ( void ) ;
2004-08-23 00:15:46 +00:00
void SV_SendClientMessages ( void ) ;
2005-03-18 06:13:11 +00:00
void VARGS SV_Multicast ( vec3_t origin , multicast_t to ) ;
2004-08-31 23:58:18 +00:00
# define FULLDIMENSIONMASK 0xffffffff
void SV_MulticastProtExt ( vec3_t origin , multicast_t to , int dimension_mask , int with , int without ) ;
2004-08-23 00:15:46 +00:00
2010-11-06 23:05:29 +00:00
void SV_StartSound ( int ent , vec3_t origin , int seenmask , int channel , char * sample , int volume , float attenuation , int pitchadj ) ;
2013-03-12 23:24:15 +00:00
void SVQ1_StartSound ( float * origin , wedict_t * entity , int channel , char * sample , int volume , float attenuation , int pitchadj ) ;
2007-08-07 00:11:21 +00:00
void SV_PrintToClient ( client_t * cl , int level , char * string ) ;
2011-12-05 15:23:40 +00:00
void SV_StuffcmdToClient ( client_t * cl , char * string ) ;
2009-11-04 21:16:50 +00:00
void VARGS SV_ClientPrintf ( client_t * cl , int level , char * fmt , . . . ) LIKEPRINTF ( 3 ) ;
2004-08-23 00:15:46 +00:00
void VARGS SV_ClientTPrintf ( client_t * cl , int level , translation_t text , . . . ) ;
2009-11-04 21:16:50 +00:00
void VARGS SV_BroadcastPrintf ( int level , char * fmt , . . . ) LIKEPRINTF ( 2 ) ;
2004-08-23 00:15:46 +00:00
void VARGS SV_BroadcastTPrintf ( int level , translation_t fmt , . . . ) ;
2009-11-04 21:16:50 +00:00
void VARGS SV_BroadcastCommand ( char * fmt , . . . ) LIKEPRINTF ( 1 ) ;
2005-03-28 00:11:59 +00:00
void SV_SendServerInfoChange ( char * key , const char * value ) ;
2004-08-23 00:15:46 +00:00
void SV_SendMessagesToAll ( void ) ;
void SV_FindModelNumbers ( void ) ;
//
// sv_user.c
//
2005-06-14 04:52:10 +00:00
# ifdef NQPROT
void SVNQ_New_f ( void ) ;
void SVNQ_ExecuteClientMessage ( client_t * cl ) ;
# endif
2006-01-28 02:35:40 +00:00
qboolean SV_UserInfoIsBasic ( char * infoname ) ; //standard message.
2004-08-23 00:15:46 +00:00
void SV_ExecuteClientMessage ( client_t * cl ) ;
void SVQ2_ExecuteClientMessage ( client_t * cl ) ;
int SV_PMTypeForClient ( client_t * cl ) ;
void SV_UserInit ( void ) ;
2006-01-21 00:06:49 +00:00
qboolean SV_TogglePause ( client_t * cl ) ;
2004-08-23 00:15:46 +00:00
2010-11-15 02:40:31 +00:00
# ifdef PEXT2_VOICECHAT
void SV_VoiceInitClient ( client_t * client ) ;
void SV_VoiceSendPacket ( client_t * client , sizebuf_t * buf ) ;
# endif
2004-08-23 00:15:46 +00:00
void SV_ClientThink ( void ) ;
2009-04-06 00:34:32 +00:00
void SV_Begin_Core ( client_t * split ) ;
2004-08-23 00:15:46 +00:00
void VoteFlushAll ( void ) ;
2005-10-07 16:27:20 +00:00
void SV_SetUpClientEdict ( client_t * cl , edict_t * ent ) ;
2006-01-28 02:35:40 +00:00
void SV_UpdateToReliableMessages ( void ) ;
2012-05-09 15:30:53 +00:00
void SV_FlushBroadcasts ( void ) ;
2013-05-09 02:18:15 +00:00
qboolean SV_CanTrack ( client_t * client , int entity ) ;
2004-08-23 00:15:46 +00:00
2007-08-07 00:11:21 +00:00
void SV_DarkPlacesDownloadChunk ( client_t * cl , sizebuf_t * msg ) ;
void SV_New_f ( void ) ;
2007-10-02 15:25:26 +00:00
void SV_PreRunCmd ( void ) ;
void SV_RunCmd ( usercmd_t * ucmd , qboolean recurse ) ;
void SV_PostRunCmd ( void ) ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
void SV_SendClientPrespawnInfo ( client_t * client ) ;
2013-03-12 22:35:33 +00:00
void SV_ClientProtocolExtensionsChanged ( client_t * client ) ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
2004-08-23 00:15:46 +00:00
//sv_master.c
void SVM_Think ( int port ) ;
//
// svonly.c
//
2005-01-16 00:59:48 +00:00
typedef enum { RD_NONE , RD_CLIENT , RD_PACKET , RD_OBLIVION } redirect_t ; //oblivion is provided so people can read the output before the buffer is wiped.
void SV_BeginRedirect ( redirect_t rd , int lang ) ;
2004-08-23 00:15:46 +00:00
void SV_EndRedirect ( void ) ;
//
// sv_ccmds.c
//
void SV_Status_f ( void ) ;
2006-01-21 00:06:49 +00:00
qboolean PR_GameCodePacket ( char * s ) ;
qboolean PR_GameCodePausedTic ( float pausedtime ) ;
qboolean PR_ShouldTogglePause ( client_t * initiator , qboolean pausedornot ) ;
2004-08-23 00:15:46 +00:00
//
// sv_ents.c
//
void SV_WriteEntitiesToClient ( client_t * client , sizebuf_t * msg , qboolean ignorepvs ) ;
2012-07-05 19:42:36 +00:00
void SVFTE_EmitBaseline ( entity_state_t * to , qboolean numberisimportant , sizebuf_t * msg ) ;
2009-11-04 21:16:50 +00:00
void SVQ3Q1_BuildEntityPacket ( client_t * client , packet_entities_t * pack ) ;
2004-08-23 00:15:46 +00:00
int SV_HullNumForPlayer ( int h2hull , float * mins , float * maxs ) ;
void SV_GibFilterInit ( void ) ;
2012-07-05 19:42:36 +00:00
void SV_GibFilterPurge ( void ) ;
2004-08-23 00:15:46 +00:00
void SV_CleanupEnts ( void ) ;
2005-03-10 03:55:18 +00:00
void SV_CSQC_DroppedPacket ( client_t * client , int sequence ) ;
2006-02-11 14:51:36 +00:00
void SV_CSQC_DropAll ( client_t * client ) ;
2005-03-10 03:55:18 +00:00
2004-08-23 00:15:46 +00:00
//
// sv_nchan.c
//
void ClientReliableCheckBlock ( client_t * cl , int maxsize ) ;
void ClientReliable_FinishWrite ( client_t * cl ) ;
void ClientReliableWrite_Begin ( client_t * cl , int c , int maxsize ) ;
void ClientReliableWrite_Angle ( client_t * cl , float f ) ;
void ClientReliableWrite_Angle16 ( client_t * cl , float f ) ;
void ClientReliableWrite_Byte ( client_t * cl , int c ) ;
void ClientReliableWrite_Char ( client_t * cl , int c ) ;
void ClientReliableWrite_Float ( client_t * cl , float f ) ;
void ClientReliableWrite_Coord ( client_t * cl , float f ) ;
void ClientReliableWrite_Long ( client_t * cl , int c ) ;
void ClientReliableWrite_Short ( client_t * cl , int c ) ;
------------------------------------------------------------------------
r4169 | acceptthis | 2013-01-17 08:55:12 +0000 (Thu, 17 Jan 2013) | 31 lines
removed MAX_VISEDICTS limit.
PEXT2_REPLACEMENTDELTAS tweaked, now has 4 million entity limit. still not enabled by default.
TE_BEAM now maps to a separate TEQW_BEAM to avoid conflicts with QW.
added android multitouch emulation for windows/rawinput (in_simulatemultitouch).
split topcolor/bottomcolor from scoreboard, for dp's colormap|1024 feature.
now using utf-8 for windows consoles.
qcc warnings/errors now give clickable console links for quick+easy editing.
disabled menutint when the currently active item changes contrast or gamma (for OneManClan).
Added support for drawfont/drawfontscale.
tweaked the qcvm a little to reduce the number of pointers.
.doll file loading. still experimental and will likely crash. requires csqc active, even if its a dummy progs. this will be fixed in time. Still other things that need cleaning up.
windows: gl_font "?" shows the standard windows font-selection dialog, and can be used to select windows fonts. not all work. and you probably don't want to use windings.
fixed splitscreen support when playing mvds. added mini-scoreboards to splitscreen.
editor/debugger now shows asm if there's no linenumber info. also, pressing f1 for help shows the shortcuts.
Added support for .framegroups files for psk(psa) and iqm formats.
True support for ezquake's colour codes. Mutually exclusive with background colours.
path command output slightly more readable.
added support for digest_hex (MD4, SHA1, CRC16).
skingroups now colourmap correctly.
Fix terrain colour hints, and litdata from the wrong bsp.
fix ftp dual-homed issue. support epsv command, and enable ipv6 (eprt still not supported).
remove d3d11 compilation from the makefile. the required headers are not provided by mingw, and are not available to the build bot, so don't bother.
fix v *= v.x and similar opcodes.
fteqcc: fixed support for áéÃóú type chars in names. utf-8 files now properly supported (even with the utf-8 bom/identifier). utf-16 also supported.
fteqcc: fixed '#if 1 == 3 && 4' parsing.
fteqcc: -Werror acts on the warning, rather than as a separate error. Line numbers are thus more readable.
fteqcc: copyright message now includes compile date instead.
fteqccgui: the treeview control is now coloured depending on whether there were warnings/errors in the last compile.
fteqccgui: the output window is now focused and scrolls down as compilation progresses.
pr_dumpplatform command dumps out some pragmas to convert more serious warnings to errors. This is to avoid the infamous 'fteqcc sucks cos my code sucks' issue.
rewrote prespawn/modelist/soundlist code. server tracks progress now.
------------------------------------------------------------------------
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4167 fc73d0e0-1445-4013-8a0c-d673dee63da5
2013-03-12 22:29:40 +00:00
void ClientReliableWrite_Entity ( client_t * cl , int c ) ;
2004-08-23 00:15:46 +00:00
void ClientReliableWrite_String ( client_t * cl , char * s ) ;
void ClientReliableWrite_SZ ( client_t * cl , void * data , int len ) ;
# ifdef SVRANKING
//flags
# define RANK_MUTED 2
# define RANK_CUFFED 4
# define RANK_CRIPPLED 8 //ha ha... get speed cheaters with this!... :o)
2009-11-05 03:07:52 +00:00
# define NUM_RANK_SPAWN_PARMS 32
2005-12-21 03:07:33 +00:00
typedef struct { //stats info
2004-08-23 00:15:46 +00:00
int kills ;
int deaths ;
2009-11-05 03:07:52 +00:00
float parm [ NUM_RANK_SPAWN_PARMS ] ;
2004-08-23 00:15:46 +00:00
float timeonserver ;
qbyte flags1 ;
qbyte trustlevel ;
char pad2 ;
char pad3 ;
} rankstats_t ;
typedef struct { //name, identity and order.
int prev ; //score is held for convineance.
int next ;
char name [ 32 ] ;
int pwd ;
float score ;
} rankheader_t ;
typedef struct {
rankheader_t h ;
2005-12-21 03:07:33 +00:00
rankstats_t s ;
2004-08-23 00:15:46 +00:00
} rankinfo_t ;
2011-09-03 03:49:43 +00:00
int Rank_GetPlayerID ( char * guid , char * name , int pwd , qboolean allowcreate , qboolean requirepasswordtobeset ) ;
2004-08-23 00:15:46 +00:00
void Rank_SetPlayerStats ( int id , rankstats_t * stats ) ;
rankstats_t * Rank_GetPlayerStats ( int id , rankstats_t * buffer ) ;
rankinfo_t * Rank_GetPlayerInfo ( int id , rankinfo_t * buffer ) ;
qboolean Rank_OpenRankings ( void ) ;
void Rank_Flush ( void ) ;
void Rank_ListTop10_f ( void ) ;
void Rank_RegisterCommands ( void ) ;
int Rank_GetPass ( char * name ) ;
extern cvar_t rank_needlogin ;
client_t * SV_GetClientForString ( char * name , int * id ) ;
2010-08-14 03:17:33 +00:00
qboolean SV_MayCheat ( void ) ;
2004-08-23 00:15:46 +00:00
qboolean ReloadRanking ( client_t * cl , char * newname ) ;
# endif
void NPP_Flush ( void ) ;
void NPP_NQWriteByte ( int dest , qbyte data ) ;
void NPP_NQWriteChar ( int dest , char data ) ;
void NPP_NQWriteShort ( int dest , short data ) ;
void NPP_NQWriteLong ( int dest , long data ) ;
void NPP_NQWriteAngle ( int dest , float data ) ;
void NPP_NQWriteCoord ( int dest , float data ) ;
void NPP_NQWriteString ( int dest , char * data ) ;
void NPP_NQWriteEntity ( int dest , short data ) ;
void NPP_QWWriteByte ( int dest , qbyte data ) ;
void NPP_QWWriteChar ( int dest , char data ) ;
void NPP_QWWriteShort ( int dest , short data ) ;
void NPP_QWWriteLong ( int dest , long data ) ;
void NPP_QWWriteAngle ( int dest , float data ) ;
void NPP_QWWriteCoord ( int dest , float data ) ;
void NPP_QWWriteString ( int dest , char * data ) ;
void NPP_QWWriteEntity ( int dest , short data ) ;
void NPP_MVDForceFlush ( void ) ;
//replacement rand function (useful cos it's fully portable, with seed grabbing)
void predictablesrand ( unsigned int x ) ;
int predictablerandgetseed ( void ) ;
int predictablerand ( void ) ;
# ifdef SVCHAT
void SV_WipeChat ( client_t * client ) ;
int SV_ChatMove ( int impulse ) ;
void SV_ChatThink ( client_t * client ) ;
# endif
void SV_ConSay_f ( void ) ;
//
// sv_mvd.c
//
2007-08-07 00:11:21 +00:00
//qtv proxies are meant to send a small header now, bit like http
//this header gives supported version numbers and stuff
typedef struct mvdpendingdest_s {
qboolean error ; //disables writers, quit ASAP.
int socket ;
char inbuffer [ 2048 ] ;
char outbuffer [ 2048 ] ;
char challenge [ 64 ] ;
qboolean hasauthed ;
qboolean isreverse ;
int insize ;
int outsize ;
struct mvdpendingdest_s * nextdest ;
} mvdpendingdest_t ;
typedef struct mvddest_s {
qboolean error ; //disables writers, quit ASAP.
qboolean droponmapchange ;
enum { DEST_NONE , DEST_FILE , DEST_BUFFEREDFILE , DEST_STREAM } desttype ;
int socket ;
2009-04-01 22:03:56 +00:00
vfsfile_t * file ;
2007-08-07 00:11:21 +00:00
char name [ MAX_QPATH ] ;
char path [ MAX_QPATH ] ;
char * cache ;
int cacheused ;
int maxcachesize ;
unsigned int totalsize ;
struct mvddest_s * nextdest ;
} mvddest_t ;
2004-08-23 00:15:46 +00:00
void SV_MVDPings ( void ) ;
2011-06-05 01:36:14 +00:00
void SV_MVD_FullClientUpdate ( sizebuf_t * msg , client_t * player ) ;
2012-08-04 01:35:52 +00:00
sizebuf_t * MVDWrite_Begin ( qbyte type , int to , int size ) ;
2004-08-23 00:15:46 +00:00
void MVDSetMsgBuf ( demobuf_t * prev , demobuf_t * cur ) ;
2006-11-03 15:53:04 +00:00
void SV_MVDStop ( int reason , qboolean mvdonly ) ;
2004-08-23 00:15:46 +00:00
void SV_MVDStop_f ( void ) ;
2007-09-10 14:39:08 +00:00
qboolean SV_MVDWritePackets ( int num ) ;
2004-08-23 00:15:46 +00:00
void MVD_Init ( void ) ;
2007-08-07 00:11:21 +00:00
void SV_MVD_RunPendingConnections ( void ) ;
void SV_MVD_SendInitialGamestate ( mvddest_t * dest ) ;
2004-08-23 00:15:46 +00:00
extern demo_t demo ; // server demo struct
extern cvar_t sv_demofps ;
extern cvar_t sv_demoPings ;
extern cvar_t sv_demoUseCache ;
extern cvar_t sv_demoMaxSize ;
extern cvar_t sv_demoMaxDirSize ;
2011-09-03 03:49:43 +00:00
char * SV_Demo_CurrentOutput ( void ) ;
2004-08-23 00:15:46 +00:00
void SV_MVDInit ( void ) ;
2008-06-01 22:06:22 +00:00
char * SV_MVDNum ( char * buffer , int bufferlen , int num ) ;
2004-08-23 00:15:46 +00:00
void SV_SendMVDMessage ( void ) ;
qboolean SV_ReadMVD ( void ) ;
void SV_FlushDemoSignon ( void ) ;
2007-08-07 00:11:21 +00:00
void DestFlush ( qboolean compleate ) ;
2004-08-23 00:15:46 +00:00
// savegame.c
void SV_FlushLevelCache ( void ) ;
2004-10-19 16:10:14 +00:00
int SV_RateForClient ( client_t * cl ) ;
2006-03-06 01:41:09 +00:00
qboolean TransformedNativeTrace ( struct model_s * model , int hulloverride , int frame , vec3_t start , vec3_t end , vec3_t mins , vec3_t maxs , unsigned int against , struct trace_s * trace , vec3_t origin , vec3_t angles ) ;
2004-08-23 00:15:46 +00:00
void SVVC_Frame ( qboolean enabled ) ;
void SV_CalcPHS ( void ) ;
void SV_GetConsoleCommands ( void ) ;
void SV_CheckTimer ( void ) ;
2007-08-07 00:11:21 +00:00
void SV_LogPlayer ( client_t * cl , char * msg ) ;
2009-11-04 21:16:50 +00:00
void AddLinksToPmove ( edict_t * player , areanode_t * node ) ;
2012-07-05 19:42:36 +00:00
# ifdef HLSERVER
void SVHL_SaveLevelCache ( char * filename ) ;
//network frame info
void SVHL_Snapshot_Build ( client_t * client , packet_entities_t * pack , qbyte * pvs , edict_t * clent , qboolean ignorepvs ) ;
qbyte * SVHL_Snapshot_SetupPVS ( client_t * client , qbyte * pvs , unsigned int pvsbufsize ) ;
void SVHL_BuildStats ( client_t * client , int * si , float * sf , char * * ss ) ;
//gamecode entry points
int SVHL_InitGame ( void ) ;
void SVHL_SetupGame ( void ) ;
void SVHL_SpawnEntities ( char * entstring ) ;
void SVHL_RunFrame ( void ) ;
qboolean SVHL_ClientConnect ( client_t * client , netadr_t adr , char rejectmessage [ 128 ] ) ;
void SVHL_PutClientInServer ( client_t * client ) ;
void SVHL_RunPlayerCommand ( client_t * cl , usercmd_t * oldest , usercmd_t * oldcmd , usercmd_t * newcmd ) ;
qboolean HLSV_ClientCommand ( client_t * client ) ;
void SVHL_DropClient ( client_t * drop ) ;
void SVHL_ShutdownGame ( void ) ;
# endif