26#include "../qcommon/q_shared.h"
27#include "../qcommon/qcommon.h"
28#include "../fgame/bg_public.h"
29#include "../fgame/g_public.h"
31# include "../client/snd_local.h"
39#define MAX_ENT_CLUSTERS 16
46#define VOIP_QUEUE_LENGTH 64
48typedef struct voipServerPacket_s
64 entityState_t baseline;
66 int clusternums[MAX_ENT_CLUSTERS];
68 int areanum, areanum2;
83 int restartedServerId;
87 int checksumFeedServerId;
93 char *configstrings[MAX_CONFIGSTRINGS];
94 svEntity_t svEntities[MAX_GENTITIES];
99 char *entityParsePoint;
102 gentity_t *gentities;
106 playerState_t *gameClients;
116 byte areabits[MAX_MAP_AREA_BYTES];
138 byte msgBuffer[MAX_MSGLEN];
139#ifdef LEGACY_PROTOCOL
140 char clientCommandString[MAX_STRING_CHARS];
147 char userinfo[MAX_INFO_STRING];
149 char reliableCommands[MAX_RELIABLE_COMMANDS][MAX_STRING_CHARS];
150 int reliableSequence;
151 int reliableAcknowledge;
153 int messageAcknowledge;
155 int gamestateMessageNum;
157 int serverIdAcknowledge;
159 usercmd_t lastUsercmd;
161 usereyes_t lastEyeinfo;
164 int lastClientCommand;
165 char lastClientCommandString[MAX_STRING_CHARS];
167 char name[MAX_NAME_LENGTH];
170 char downloadName[MAX_QPATH];
171 fileHandle_t download;
174 int downloadClientBlock;
175 int downloadCurrentBlock;
176 int downloadXmitBlock;
177 unsigned char *downloadBlocks[MAX_DOWNLOAD_WINDOW];
178 int downloadBlockSize[MAX_DOWNLOAD_WINDOW];
179 qboolean downloadEOF;
180 int downloadSendTime;
183 int nextReliableTime;
186 int lastSnapshotTime;
187 qboolean rateDelayed;
202 netchan_buffer_t *netchan_start_queue;
203 netchan_buffer_t **netchan_end_queue;
207 qboolean muteAllVoip;
208 qboolean ignoreVoipFromClient[MAX_CLIENTS];
209 voipServerPacket_t *voipPacket[VOIP_QUEUE_LENGTH];
210 int queuedVoipPackets;
215 qboolean csUpdated[MAX_CONFIGSTRINGS];
217 server_sound_t server_sounds[ MAX_SERVER_SOUNDS ];
218 int number_of_server_sounds;
224 char stringToPrint[256];
226 int lastRadarTime[MAX_CLIENTS];
227 int lastVisCheckTime[MAX_CLIENTS];
229#ifdef LEGACY_PROTOCOL
240#define MAX_CHALLENGES 2048
244#define MAX_CHALLENGES_MULTI (MAX_CHALLENGES / 2)
246#define AUTHORIZE_TIMEOUT 5000
274 unsigned int gamespyId;
275 char gsChallenge[12];
276 cdKeyState_e cdkeyState;
287 qboolean initialized;
291 int snapFlagServerBit;
301 int numSnapshotEntities;
302 int nextSnapshotEntities;
303 entityState_t *snapshotEntities;
304 int nextHeartbeatTime;
310 char gameName[ MAX_QPATH ];
311 char mapName[ MAX_QPATH ];
312 char rawServerName[ MAX_QPATH ];
313 int areabits_warning_time;
315 qboolean soundsNeedLoad;
316 char tm_filename[ MAX_QPATH ];
328#define SERVER_MAXBANS 1024
329#define MAX_REASON_LENGTH 128
336 qboolean isexception;
337 char reason[MAX_REASON_LENGTH];
344extern game_export_t *ge;
346extern cvar_t *sv_fps;
347extern cvar_t *sv_timeout;
348extern cvar_t *sv_zombietime;
349extern cvar_t *sv_rconPassword;
350extern cvar_t *sv_privatePassword;
351extern cvar_t *sv_allowDownload;
352extern cvar_t *sv_maxclients;
354extern cvar_t *sv_privateClients;
355extern cvar_t *sv_hostname;
356extern cvar_t *sv_master[MAX_MASTER_SERVERS];
357extern cvar_t *sv_reconnectlimit;
358extern cvar_t *sv_showloss;
359extern cvar_t *sv_padPackets;
360extern cvar_t *sv_killserver;
361extern cvar_t *sv_mapname;
362extern cvar_t *sv_mapChecksum;
363extern cvar_t *sv_serverid;
364extern cvar_t *sv_minRate;
365extern cvar_t *sv_maxRate;
366extern cvar_t *sv_dlRate;
367extern cvar_t *sv_minPing;
368extern cvar_t *sv_maxPing;
369extern cvar_t *g_gametype;
370extern cvar_t *g_gametypestring;
371extern cvar_t *sv_pure;
372extern cvar_t *sv_floodProtect;
373extern cvar_t *sv_lanForceRate;
374extern cvar_t *sv_maplist;
375extern cvar_t *sv_drawentities;
376extern cvar_t *sv_deeptracedebug;
377extern cvar_t *sv_netprofile;
378extern cvar_t *sv_netprofileoverlay;
379extern cvar_t *sv_netoptimize;
380extern cvar_t *sv_netoptimize_vistime;
381extern cvar_t *g_netoptimize;
382extern cvar_t *sv_chatter;
383extern cvar_t *sv_gamename;
384extern cvar_t *sv_location;
385extern cvar_t *sv_debug_gamespy;
386extern cvar_t *sv_gamespy;
388extern cvar_t *sv_strictAuth;
390extern cvar_t *sv_banFile;
392extern cvar_t *sv_logContext;
394extern serverBan_t serverBans[SERVER_MAXBANS];
395extern int serverBansCount;
398extern cvar_t *sv_voip;
399extern cvar_t *sv_voipProtocol;
422 leakyBucket_t *prev, *next;
425extern leakyBucket_t outboundLeakyBucket;
427qboolean SVC_RateLimit( leakyBucket_t *bucket,
int burst,
int period );
428qboolean SVC_RateLimitAddress(
netadr_t from,
int burst,
int period );
430void SV_FinalMessage (
const char *message);
431void QDECL SV_SendServerCommand( client_t *cl,
const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
434void SV_AddOperatorCommands (
void);
435void SV_RemoveOperatorCommands (
void);
438void SV_MasterHeartbeat (
void);
439void SV_MasterShutdown (
void);
440int SV_RateMsec(client_t *client);
442void SV_PrintfClient(
int clientNum, const
char *fmt, ...);
444void SV_ArchiveHudDrawElements( qboolean loading );
445void SV_HudDrawShader(
int iInfo, const
char *name );
446void SV_HudDrawAlign(
int iInfo,
int iHorizontalAlign,
int iVerticalAlign );
447void SV_HudDrawRect(
int iInfo,
int iX,
int iY,
int iWidth,
int iHeight );
448void SV_HudDrawVirtualSize(
int iInfo, qboolean bVirtualScreen );
449void SV_HudDrawColor(
int iInfo, vec3_t vColor );
450void SV_HudDrawAlpha(
int iInfo,
float alpha );
451void SV_HudDrawString(
int iInfo, const
char *
string );
452void SV_HudDrawFont(
int iInfo, const
char *name );
453void SV_ArchiveViewModelAnimation( qboolean loading );
454void SV_ArchiveStopwatch( qboolean loading );
455void SV_ArchivePersistantFile( qboolean loading );
456void SV_ArchiveLevel( qboolean loading );
457qboolean SV_ArchiveLevelFile( qboolean loading, qboolean autosave );
458void S_Save( fileHandle_t f );
459void S_Load( fileHandle_t f );
460qboolean SV_ArchiveServerFile( qboolean loading, qboolean autosave );
461void SV_Loadgame_f(
void );
462void SV_SavegameFilename( const
char *name,
char *fileName,
int length );
463qboolean SV_AllowSaveGame(
void );
464qboolean SV_DoSaveGame();
465void SV_SaveGame( const
char *gamename, qboolean autosave );
466void SV_Savegame_f(
void );
467void SV_Autosavegame_f(
void );
472void SV_ClearSvsTimeFixups(
void );
473void SV_FinishSvsTimeFixups(
void );
474void SV_AddSvsTimeFixup(
int *piTime );
475void SV_SetConfigstring(
int index, const
char *val );
476char *SV_GetConfigstring(
int index );
477int SV_FindIndex( const
char *name,
int start,
int max, qboolean create );
478int SV_ModelIndex( const
char *name );
479void SV_ClearModel(
int index );
480int SV_SoundIndex( const
char *name, qboolean streamed );
481int SV_ImageIndex( const
char *name );
482int SV_ItemIndex( const
char *name );
483void SV_SetLightStyle(
int index, const
char *data );
484void SV_UpdateConfigstrings( client_t *client );
486void SV_SetUserinfo(
int index, const
char *val );
487void SV_GetUserinfo(
int index,
char *buffer,
int bufferSize );
489int SV_NumClients(
void);
490void SV_ChangeMaxClients(
void );
491void SV_SpawnServer( const
char *server, qboolean loadgame, qboolean restart, qboolean bTransition );
494int SV_PVSSoundIndex(const
char* name, qboolean streamed);
495void SV_HandleNonPVSSound();
497void SV_ApplyOriginalConfigTweaks();
506void SV_DirectConnect(
netadr_t from );
508void SV_AuthorizeIpPacket(
netadr_t from );
510void SV_ExecuteClientMessage( client_t *cl, msg_t *msg );
511void SV_UserinfoChanged( client_t *cl );
513void SV_ClientEnterWorld( client_t *client, usercmd_t *cmd );
514void SV_FreeClient(client_t *client);
515void SV_DropClient( client_t *drop, const
char *reason );
517void SV_ExecuteClientCommand( client_t *cl, const
char *s, qboolean clientOK );
518void SV_ClientThink (client_t *cl, usercmd_t *cmd);
520int SV_WriteDownloadToClient(client_t *cl , msg_t *msg);
521int SV_SendDownloadMessages(
void);
522int SV_SendQueuedMessages(
void);
528void SV_Heartbeat_f(
void );
534void SV_AddServerCommand( client_t *client, const
char *cmd );
535void SV_UpdateServerCommandsToClient( client_t *client, msg_t *msg );
536void SV_WriteFrameToClient (client_t *client, msg_t *msg);
537void SV_SendMessageToClient( msg_t *msg, client_t *client );
538void SV_SendClientMessages(
void );
539void SV_SendClientSnapshot( client_t *client );
540qboolean SV_IsValidSnapshotClient(client_t* client);
546extern
int numDebugLines;
548extern
int numDebugStrings;
550void SV_ClearModelUserCounts(
void );
551int SV_NumForGentity( gentity_t *ent );
552gentity_t *SV_GentityNum(
int num );
553playerState_t *SV_GameClientNum(
int num );
554svEntity_t *SV_SvEntityForGentity( gentity_t *gEnt );
555gentity_t *SV_GEntityForSvEntity( svEntity_t *svEnt );
556void SV_InitGameProgs (
void );
557void SV_ShutdownGameProgs (
void );
558qboolean SV_inPVS (const vec3_t p1, const vec3_t p2);
560void SV_WriteCGMToClient (client_t *client, msg_t *msg);
561void SV_InitAllCGMessages ();
566void SV_ClientSound(client_t* client, vec3_t* org,
int entnum,
int channel,
int sound_index,
float volume,
float mindist,
float pitch,
float maxdist, qboolean streamed);
567void SV_Sound( vec3_t *org,
int entnum,
int channel, const
char *sound_name,
float volume,
float mindist,
float pitch,
float maxdist, qboolean streamed );
568void SV_ClearSounds( client_t *client );
569void SV_StopSound(
int entnum,
int channel );
576void SV_ClearWorld (
void);
579void SV_UnlinkEntity( gentity_t *ent );
583void SV_LinkEntity( gentity_t *ent );
591clipHandle_t SV_ClipHandleForEntity( const gentity_t *ent );
594void SV_SectorList_f(
void );
597int SV_AreaEntities( const vec3_t mins, const vec3_t maxs,
int *entityList,
int maxcount );
605baseshader_t *SV_GetShaderPointer(
int iShaderNum );
606int SV_PointContents( const vec3_t p,
int passEntityNum );
609qboolean SV_SightTraceEntity( gentity_t *touch, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int contentmask, qboolean cylinder );
610qboolean SV_SightTrace( const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int passEntityNum,
int passEntityNum2,
int contentmask, qboolean cylinder );
611qboolean SV_HitEntity(gentity_t* pEnt, gentity_t* pOther);
612void SV_Trace(
trace_t *results, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int passEntityNum,
int contentmask, qboolean cylinder, qboolean traceDeep );
613void SV_TraceDeep(
trace_t *results, const vec3_t vStart, const vec3_t vEnd,
int iBrushMask, gentity_t *touch );
625void SV_ClipToEntity(
trace_t *trace, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
int entityNum,
int contentmask );
631void SV_Netchan_Transmit( client_t *client, msg_t *msg);
632int SV_Netchan_TransmitNextFragment( client_t *client );
633qboolean SV_Netchan_Process( client_t *client, msg_t *msg );
634void SV_Netchan_FreeQueue(client_t *client);
636void SV_NET_UpdateClientNetProfileInfo(
netprofclient_t* netprofile,
int rate);
637void SV_NET_UpdateAllNetProfileInfo();
638void SV_NET_CalcTotalNetProfile(
netprofclient_t* netprofile, qboolean server);
Definition q_shared.h:2095
Definition q_shared.h:2105
Definition snd_local_new.h:55
Definition q_shared.h:1452