FTEQW
Documentation of the FTE engine source tree.
server.h
Go to the documentation of this file.
1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19*/
20// server.h
21
22#define QW_SERVER
23
24typedef enum {
25 ss_dead, // no map loaded
27 ss_loading, // spawning level edicts
28 ss_active, // actively running
31// some qc commands are only valid before the server has finished
32// initializing (precache commands, static sounds / objects, etc)
33
34#ifdef SVCHAT
35typedef struct chatvar_s {
36 char varname[64];
37 float value;
38
39 struct chatvar_s *next;
41typedef struct {
43 char filename[64];
45
46 char maintext[1024];
47 struct
48 {
49 float tag;
50 char text[256];
51 } option[6];
53
55
56 float time;
57} svchat_t;
58#endif
59
60typedef struct {
62 char particleeffecttype[64];
63 char stain[3];
65 qbyte dlightrgb[3];
68 qbyte dlightcfade[3];
70
71typedef struct laggedpacket_s
72{
73 double time;
75 int length;
76 unsigned char data[MAX_QWMSGLEN+10];
78
79typedef struct
80{
82 char angles[3];
88
91 char fatness;
93
94typedef struct
95{
97 unsigned short soundnum;
101
103extern int sv_max_staticentities;
105extern int sv_max_staticsounds;
106
107typedef struct server_s
108{
109 qboolean active; // false when server is going down
110 server_state_t state; // precache commands are only valid during load
111
112 float gamespeed; //time progression multiplier, fixed per-level.
113 unsigned int csqcchecksum;
115
116#ifdef SAVEDGAMES
117 char loadgame_on_restart[MAX_QPATH]; //saved game to load on map_restart
119#endif
120 double time; //time passed since map (re)start
121 double starttime; //Sys_DoubleTime at the start of the map
122 double restarttime; //for delayed map restarts - map will restart once sv.time reaches this stamp
125
126 enum
127 {
128 PAUSE_EXPLICIT = 1, //someone hit pause
129 PAUSE_SERVICE = 2, //we're running as a service and someone paused us rather than killing us.
130 PAUSE_AUTO = 4 //console is down in a singleplayer game.
133
134 //check player/eyes models for hacks
137
138// char name[64]; // file map name (moved to svs, for restart)
139 char mapname[256]; // text description of the map
140 char modelname[MAX_QPATH]; // maps/<name>.bsp, for model_precache[0]
141
143
144 union {
145#ifdef Q2SERVER
146 struct {
147 const char *configstring[Q2MAX_CONFIGSTRINGS];
148 const char *q2_extramodels[MAX_PRECACHE_MODELS]; // NULL terminated
149 const char *q2_extrasounds[MAX_PRECACHE_SOUNDS]; // NULL terminated
150 };
151#endif
152 struct {
153#ifdef HAVE_LEGACY
154 const char *vw_model_precache[32];
155#endif
156 const char *model_precache[MAX_PRECACHE_MODELS]; // NULL terminated
157 const char *particle_precache[MAX_SSPARTICLESPRE]; // NULL terminated
158 const char *sound_precache[MAX_PRECACHE_SOUNDS]; // NULL terminated
159 };
160 const char *ptrs[1];
162 qboolean stringsalloced; //if true, we need to free the string pointers safely rather than just memsetting them to 0
163 struct
164 {
165 const char *str; //double dynamic. urgh, but allows it to be nice and long.
168 size_t maxlightstyles; //limited to MAX_NET_LIGHTSTYLES
169
170#ifdef HEXEN2
171 char h2miditrack[MAX_QPATH];
173#endif
174
175 pvec3_t skyroom_pos; //parsed from world._skyroom
177
178 int allocated_client_slots; //number of slots available. (used mostly to stop single player saved games cacking up)
179 int spawned_client_slots; //number of PLAYER slots which are active (ie: putclientinserver was called)
181
182 model_t *models[MAX_PRECACHE_MODELS];
183
184 struct client_s *skipbprintclient; //SV_BroadcastPrint skips this client
185
186 // added to every client's unreliable buffer each frame, then cleared
188 qbyte datagram_buf[MAX_DATAGRAM];
189
190 // added to every client's reliable buffer each frame, then cleared
193
194 // the multicast buffer is used to send a message to a set of clients
196 qbyte multicast_buf[MAX_QWMSGLEN];
197
198#ifdef NQPROT
200 qbyte nqdatagram_buf[MAX_NQDATAGRAM];
201
204
206 qbyte nqmulticast_buf[MAX_NQMSGLEN];
207#endif
208
209#ifdef Q2SERVER
211 qbyte q2datagram_buf[MAX_Q2DATAGRAM];
212
215
217 qbyte q2multicast_buf[MAX_Q2MSGLEN];
218#endif
219
220 // the master buffer is used for building log packets
222 qbyte master_buf[MAX_DATAGRAM];
223
224 // the signon buffer will be sent to each client as they connect
225 // traditionally includes the entity baselines, the static entities, etc
226 // large levels will have >MAX_DATAGRAM sized signons, so
227 // multiple signon messages are kept
228 // fte only stores writebyted stuff in here. everything else is regenerated based upon the client's extensions.
231 qbyte signon_buffer[MAX_OVERALLMSGLEN]; //flushed after every 512 bytes (two leading bytes says the size of the buffer).
232
234
235#ifdef QUAKESTATS
236 qboolean haveitems2; //use items2 field instead of serverflags for the high bits of STAT_ITEMS
237#endif
238
239
240
241
242#ifdef MVD_RECORDING
244#endif
245
246//====================================================
247//this lot is for serverside playback of mvds. Use QTV instead.
248#ifdef SERVER_DEMO_PLAYBACK
250 float realtime;
251 vfsfile_t *demofile; //also signifies playing the thing.
252
255
256//playback spikes (svc_nails/nails2)
258 struct {
265
266//playback of entities (svc_nails/nails2)
271
272//players
273 struct {
275 int pl;
276 int ping;
277 int frags;
280 char userinfo[MAX_INFO_STRING];
284 } recordedplayer[MAX_CLIENTS];
285
286//gamestate
287 char demoinfo[MAX_SERVERINFO_STRING];
288 char demmodel_precache[MAX_MODELS][MAX_QPATH]; // NULL terminated
289 char demsound_precache[MAX_SOUNDS][MAX_QPATH]; // NULL terminated
290 char demgamedir[64];
291 char demname[64]; // map name
292
293 qboolean democausesreconnect; //this makes current clients go through the connection process (and when the demo ends too)
296 int demosignon_buffer_size[MAX_SIGNON_BUFFERS];
297 qbyte demosignon_buffers[MAX_SIGNON_BUFFERS][MAX_DATAGRAM];
299
300 char *demolightstyles[MAX_LIGHTSTYLES];
301#endif
302//====================================================
303// movevars_t demomovevars; //FIXME:!
304//end this lot... (demo playback)
305
308
310
311 int *csqcentversion;//prevents ent versions from going backwards
313void SV_WipeServerState(void);
314
315/*
316#define CS_EMPTY 0
317#define CS_ZOMBIE (1u<<0) //just stops the slot from being reused for a bit.
318#define CS_CLUSTER (1u<<1) //is managed by the cluster host (and will appear on scoreboards).
319#define CS_SPAWNED (1u<<2) //has an active entity.
320#define CS_ACTIVE (1u<<3) //has a connection
321
322#define cs_free (CS_EMPTY)
323#define cs_zombie (CS_ZOMBIE)
324#define cs_loadzombie (CS_SPAWNED)
325#define cs_connected (CS_ACTIVE)
326#define cs_spawned (CS_ACTIVE|CS_SPAWNED)
327*/
328
329typedef enum
330{
331 cs_free, // can be reused for a new connection
332 cs_zombie, // client has been disconnected, but don't reuse connection for a couple seconds. entity was already cleared.
333 cs_loadzombie, // slot reserved for a client. the player's entity may or may not be known (istobeloaded says that state). parms _ARE_ known.
334 cs_connected, // has been assigned to a client_t, but not in game yet
335 cs_spawned // client is fully in game
337
338typedef struct
339{
340 // received from client
341
342 // reply
343 double senttime; //time we sent this frame to the client, for ping calcs (realtime)
344 int sequence; //the outgoing sequence - without mask, meaning we know if its current or stale
345 float ping_time; //how long it took for the client to ack it, may be negative
346 float move_msecs; //
347 int packetsizein; //amount of data received for this frame
348 int packetsizeout; //amount of data that was sent in the frame
349
350 packet_entities_t qwentities; //package containing entity states that were sent in this frame, for deltaing
351
353 {
354 unsigned int entnum;
355 unsigned int bits; //delta (fte or dpp5+)
356 quint64_t flags; //csqc
357 } *resend;
358 unsigned int numresend;
359 unsigned int maxresend;
360
361 unsigned short resendstats[32];//the number of each entity that was sent in this frame
362 unsigned int numresendstats; //the bits of each entity that were sent in this frame
363
364 short baseangles[MAX_SPLITS][3];
365 unsigned int baseanglelocked[MAX_SPLITS];
366
367 //antilag
368 //these are to recalculate the player's origin without old knockbacks nor teleporters, to give more accurate weapon start positions (post-command).
372 unsigned int pmjumpheld:1;
373 unsigned int pmonladder:1;
376 //these are old positions of players, to give more accurate victim positions
377 laggedentinfo_t laggedplayer[MAX_CLIENTS];
378 unsigned int numlaggedplayers;
379 float laggedtime; //sv.time of when this frame was sent
381
382#ifdef Q2SERVER
383typedef struct //merge?
384{
386 qbyte areabits[MAX_Q2MAP_AREAS/8]; // portalarea visibility bits
387 q2player_state_t ps[MAX_SPLITS]; //yuck
388 int clientnum[MAX_SPLITS];
390 int first_entity; // into the circular sv_packet_entities[]
391 int senttime; // for ping calculations
394#endif
395
396#define MAX_BACK_BUFFERS 16
397
398enum
399{
401 PRESPAWN_PROTOCOLSWITCH, //nq drops unreliables until reliables are acked. this gives us a chance to drop any clc_move packets with formats from the previous map
403#ifdef MVD_RECORDING
404 PRESPAWN_CSPROGS, //demos contain a copy of the csprogs.
405#endif
406 PRESPAWN_SOUNDLIST, //nq skips these
407#ifdef HAVE_LEGACY
408 PRESPAWN_VWEPMODELLIST, //qw ugly extension.
409#endif
411 PRESPAWN_MAPCHECK, //wait for old prespawn command
422
423enum
424{ //'soft' limits that result in warnings if the client's protocol is too limited.
427 PLIMIT_SOUNDS = 1u<<2
429
430//client_t->spec_print + sv_specprint
431#define SPECPRINT_CENTERPRINT 0x1
432#define SPECPRINT_SPRINT 0x2
433#define SPECPRINT_STUFFCMD 0x4
434
435#define STUFFCMD_IGNOREINDEMO ( 1<<0) // do not put in mvd demo
436#define STUFFCMD_DEMOONLY ( 1<<1) // put in mvd demo only
437#define STUFFCMD_BROADCAST ( 1<<2) // everyone sees it.
438#define STUFFCMD_UNRELIABLE ( 1<<3) // someone might not see it. oh well.
439
440#define FIXANGLE_NO 0 //don't override anything
441#define FIXANGLE_AUTO 1 //guess (initial=fixed, spammed=fixed, sporadic=relative)
442#define FIXANGLE_DELTA 2 //send a relative change
443#define FIXANGLE_FIXED 3 //send a absolute angle.
444
446{
447 SCP_BAD, //don't send (a bot)
451 //all the below are considered netquake clients.
453 //bjp1, bjp2
454 SCP_BJP3, //16bit angles,model+sound indexes. nothing else (assume raised ent limits too).
456 //dp5
458 SCP_DARKPLACES7 //extra prediction stuff
459 //note, nq is nq+
461
462typedef struct client_s
463{
465
466 unsigned int prespawn_stage;
467 unsigned int prespawn_idx;
468 unsigned int prespawn_idx2;
471
472 int spectator; // non-interactive
473 int redirect; //1=redirected because full, 2=cluster transfer
474
475 qboolean sendinfo; // at end of frame, send info to all
476 // this prevents malicious multiple broadcasts
477 float lastnametime; // time of last name change
478 int lastnamecount; // time of last name change
479 unsigned checksum; // checksum for calcs
480 qboolean drop; // lose this guy next opportunity
481 int lossage; // loss percentage
482
484 int userid; // identifying number
485 infobuf_t userinfo; // all of the user's various settings
486 infosync_t infosync; // information about the infos that the client still doesn't know (server and multiple clients).
487 char *transfer;
488
489 unsigned int baseanglelock; // lock the player angles to base (until baseangle sequence is acked)
490 short baseangles[3]; // incoming angle inputs are relative to this value.
491 usercmd_t lastcmd; // for filling in big drops and partial predictions
492 double localtime; // of last message
494 unsigned int lockanglesseq; //mod is spamming angle changes, don't do relative changes. outgoing sequence. v_angles isn't really known until netchan.incoming_acknowledged>=lockangles
495
496 float maxspeed; // localized maxspeed
497 float entgravity; // localized ent gravity
498
499 int viewent; //fake the entity positioning.
500 int clientcamera; //cache for dp_sv_clientcamera.
501
502 edict_t *edict; // EDICT_NUM(clientnum+1)
503//additional game modes use additional edict pointers. this ensures that references are crashes.
504#ifdef Q2SERVER
505 q2edict_t *q2edict; // EDICT_NUM(clientnum+1)
506#endif
507#ifdef HLSERVER
509#endif
510
513 char teambuf[32];
514 char *team;
515 char *name;
516 char namebuf[32]; // for printing to other people
517 // extracted from userinfo
518 char guid[64]; /*+2 for split+pad*/
519 int messagelevel; // for filtering printed messages
520 int autoaimdot; //smallest dotproduct allowed for autoaim
521#ifdef HAVE_LEGACY
522 float *dp_ping;
523 float *dp_pl;
524#endif
525
526 // the datagram is written to after every frame, but only cleared
527 // when it is sent out to the client. overflow is tolerated.
529 qbyte datagram_buf[MAX_OVERALLMSGLEN/2];
530
531 // back buffers for client reliable data
534 int backbuf_size[MAX_BACK_BUFFERS];
535 qbyte backbuf_data[MAX_BACK_BUFFERS][MAX_BACKBUFLEN];
536
537 double connection_started; // or time of disconnect for zombies
538 qboolean send_message; // set on frames a datagram arived on
539
541 unsigned int laggedents_count;
544
545// spawn parms are carried from level to level
546 float spawn_parms[NUM_SPAWN_PARMS];
547 char *spawn_parmstring; //qc-specified data.
548 char *spawninfo; //entity-formatted data (for hexen2's ClientReEnter)
550 float nextservertimeupdate; //next time to send STAT_TIME
551 float lastoutgoingphysicstime;//sv.world.physicstime of the last outgoing message.
552
553// client known data for deltas
555
556 unsigned int pendingstats[((MAX_CL_STATS*2) + 31)>>5]; //these are the stats that have changed and that need sending/resending
561
562 struct
563 {
565 char *header;
566 double nextsend; //qex is a one-off, other clients need spam.
568 struct
569 {
570 char *text;
572 } *opt;
573
574 int oldmove[2];
576
577 union{ //save space
578 client_frame_t *frames; // updates can be deltad from here
579#ifdef Q2SERVER
581#endif
582#ifdef Q3SERVER
583 void *q3frames;
584#endif
587 unsigned int *pendingdeltabits;
588 quint64_t *pendingcsqcbits;
589 unsigned int nextdeltaindex; //splurged round-robin to deal with overflows
590 unsigned int nextcsqcindex; //splurged round-robin
591 #define SENDFLAGS_PRESENT 0x1u //this entity is present on that client
592 #define SENDFLAGS_REMOVED 0x2u //to handle remove packetloss
593 #define SENDFLAGS_RESERVED (SENDFLAGS_PRESENT|SENDFLAGS_REMOVED)
594 #define SENDFLAGS_SHIFT 2u
595 #define SENDFLAGS_USABLE (~(quint64_t)SENDFLAGS_RESERVED) //this number of bits are actually safe in a float. not all together, but otherwise safe.
596
597#ifdef HAVE_LEGACY
598 char *dlqueue; //name\name delimited list of files to ask the client to download.
599#endif
600 char downloadfn[MAX_QPATH];
601 vfsfile_t *download; // file being downloaded
602 qofs_t downloadsize; // total bytes
603 qofs_t downloadcount; // bytes sent
604
605#ifdef NQPROT
606 qofs_t downloadacked; //DP-specific
607 qofs_t downloadstarted; //DP-specific
608#endif
609
610 int spec_track; // entnum of player tracking
611
612 unsigned int spec_print; //bitfield for things this spectator should see that were directed to the player that they're tracking.
613
614#ifdef Q3SERVER
615 int gamestatesequence; //the sequence number the initial gamestate was sent in.
616
619
620 //quake3 does reliables only via this mechanism. basically just like q1's stuffcmds.
621 int server_command_ack; //number known to have been received.
622 int server_command_sequence; //number available.
623 char server_commands[256][1024]; //the commands, to deal with resends
624#endif
625
626 //true/false/persist
627 unsigned int penalties;
628 qbyte istobeloaded; //spawnparms are known.
629 qboolean spawned; //gamecode knows about it.
630
632 double lastspoke;
635
636 qboolean upgradewarn; // did we warn him?
637
639 char uploadfn[MAX_QPATH];
642
643//===== NETWORK ============
646 int delta_sequence; // -1 = no compression
647 int last_sequence; //last inputframe sequence received
650
652
653#ifdef VOICECHAT
654 unsigned int voice_read; /*place in ring*/
655 unsigned char voice_mute[(MAX_CLIENTS+7)/8];
657 enum
658 {
659 /*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*/
660
661 /*should we add one to respond to the last speaker? or should that be an automagic +voip_reply instead?*/
664 VT_NONMUTED, /*cheap, but allows custom private channels with no external pesters*/
665 VT_SPECSELF, /*sends to self, audiable to people spectating self*/
667 /*player0+...*/
669#endif
670
671#ifdef SVCHAT
673#endif
674#ifdef SVRANKING
676
677 int kills;
679
681#endif
682
688 unsigned int zquake_extensions;
689 unsigned int max_net_ents; /*highest entity number the client can receive (limited by either protocol or client's buffer size)*/
690 unsigned int max_net_staticents; /*limit to the number of static ents supported by the client*/
691 unsigned int max_net_clients; /*max number of player slots supported by the client */
692 unsigned int maxmodels; /*max models supported by whatever the protocol is*/
693
695 unsigned int supportedprotocols;
696 qboolean proquake_angles_hack; //expect 16bit client->server angles .
697 qboolean qex; //qex sends strange clc inputs and needs workarounds for its prediction. it also favours fitzquake's protocol but violates parts of it.
698
699 unsigned int lastruncmd; //for non-qw physics. timestamp they were last run, so switching between physics modes isn't a (significant) cheat
700 unsigned int hoverms; //purely for sv_showpredloss to avoid excessive spam
701//speed cheat testing
702#define NEWSPEEDCHEATPROT
703 float msecs;
704#ifndef NEWSPEEDCHEATPROT
707#endif
708
710
712
713 vec3_t specorigin; //mvds need to use a different origin from the one QC has.
715
716 int language; //the clients language
717
718// struct {
719// qbyte vweap;
720// } otherclientsknown[MAX_CLIENTS]; //updated as needed. Flag at a time, or all flags.
721
722 struct client_s *controller; /*first in splitscreen chain, NULL=nosplitscreen*/
723 struct client_s *controlled; /*next in splitscreen chain*/
725
726 /*these are the current rates*/
727 float ratetime;
728 float inrate;
729 float outrate;
730
731 int rate;
732 int drate;
733
739
740 unsigned int plimitwarned;
741
742 float delay;
745
747 float *lastseen_time; //timer for cullentities_trace, so we can get away with fewer traces per test
748
749#ifdef VM_Q1
752#endif
754
755#if defined(NQPROT) || defined(Q2SERVER) || defined(Q3SERVER)
756#define ISQWCLIENT(cl) ((cl)->protocol == SCP_QUAKEWORLD)
757#define ISQ2CLIENT(cl) ((cl)->protocol == SCP_QUAKE2)
758#define ISQ3CLIENT(cl) ((cl)->protocol == SCP_QUAKE3)
759#define ISNQCLIENT(cl) ((cl)->protocol >= SCP_NETQUAKE)
760#define ISDPCLIENT(cl) ((cl)->protocol >= SCP_DARKPLACES6)
761#else
762#define ISQWCLIENT(cl) ((cl)->protocol != SCP_BAD)
763#define ISQ2CLIENT(cl) false
764#define ISQ3CLIENT(cl) false
765#define ISNQCLIENT(cl) false
766#define ISDPCLIENT(cl) false
767#endif
768
769// a client can leave the server in one of four ways:
770// dropping properly by quiting or disconnecting
771// timing out if no valid messages are received for timeout.value seconds
772// getting kicked off by the server operator
773// a program error, like an overflowed reliable buffer
774
775
776
777
778//=============================================================================
779
780//mvd stuff
781#ifdef MVD_RECORDING
782#define MSG_BUF_SIZE 8192
783
784typedef struct
785{
790 int model;
792} demoinfo_t;
793
794typedef struct
795{
797 float sec;
801 float cmdtime;
802 int flags;
803 int frame;
805
806typedef struct {
809 int to;
810 int size;
811 qbyte data[1]; //gcc doesn't allow [] (?)
813
814typedef struct
815{
819} demobuf_t;
820
821typedef struct
822{
823 demo_client_t clients[MAX_CLIENTS];
824 double time;
827
828typedef struct {
830 int start, end, last;
832} dbuffer_t;
833
834#define DEMO_FRAMES 64 //why is this not just 2?
835#define DEMO_FRAMES_MASK (DEMO_FRAMES - 1)
836
837typedef struct
838{
839// demobuf_t *dbuf;
840// dbuffer_t dbuffer;
842 qbyte datagram_data[MSG_BUF_SIZE];
845 double time, pingtime;
846 int statsi[MAX_CLIENTS][MAX_CL_STATS]; // ouch!
847 float statsf[MAX_CLIENTS][MAX_CL_STATS]; // ouch!
848 char *statss[MAX_CLIENTS][MAX_CL_STATS]; // ouch!
850 qboolean playerreset[MAX_CLIENTS]; //will ensure that the model etc is written when this player is next written.
851 qboolean fixangle[MAX_CLIENTS];
852 float fixangletime[MAX_CLIENTS];
853 vec3_t angles[MAX_CLIENTS];
857 demo_frame_t frames[DEMO_FRAMES];
858 demoinfo_t info[MAX_CLIENTS];
859 qbyte buffer[20*MAX_QWMSGLEN];
862
864} demo_t;
865#endif
866
867//=============================================================================
868
869#define SVSTATS_PERIOD 10
870typedef struct
871{
872 double active;
873 double idle;
874 int count;
876 double maxresponse; //longest (active) frame time within the current period
877 int maxpackets; //max packet count in a single frame
878
879 double latched_time; //time that the current period ends
880 double latched_active; //active time in the last period
886} svstats_t;
887
888// MAX_CHALLENGES is made large to prevent a denial
889// of service attack that could cycle all of them
890// out before legitimate users connected
891#define MAX_CHALLENGES 1024
892
893typedef struct
894{
897 int time;
899
900typedef struct bannedips_s {
901 unsigned int banflags;
906 char reason[1];
908
909typedef enum {
910 GT_PROGS, //q1, qw, h2 are similar enough that we consider it only one game mode. (We don't support the h2 protocol)
913 GT_QUAKE2, //q2 servers run from a q2 game dll
914 GT_QUAKE3, //q3 servers run off the q3 qvm api
915#ifdef VM_LUA
916 GT_LUA, //for the luls
917#endif
918 GT_MAX
920
921typedef struct levelcache_s {
923 char *mapname;
925 unsigned char savedplayers[(MAX_CLIENTS+7)>>3]; //bitmask to say which players are actually stored in the cache. so that restarts can restore.
927
928#ifdef TCPCONNECT
929typedef struct svtcpstream_s {
931 int inlen;
933 char inbuffer[1500];
938#endif
939
940typedef struct server_static_s
941{
943 int spawncount; // number of servers spawned since start,
944 // used to check late spawns
945 int framenum; //physics frame number for out-of-sequence thinks (fix for slow rockets)
946 int clusterserverid; // which server we are in the cluster. for gamecode to track with stats.
947
949
950 int allocated_client_slots; //number of entries in the clients array
951 client_t *clients; //[svs.allocated_client_slots]
952 int serverflags; // episode completion information
953
957
960
961 // log messages are used so that fraglog processes can get stats
962 int logsequence; // the message currently being filled
963 double logtime; // time of last swap
964
965#define FRAGLOG_BUFFERS 8
966 sizebuf_t log[FRAGLOG_BUFFERS];
967 qbyte log_buf[FRAGLOG_BUFFERS][MAX_DATAGRAM];
968
969 challenge_t challenges[MAX_CHALLENGES]; // to prevent invalid IPs from connecting
970
972
973 char progsnames[MAX_PROGS][MAX_QPATH];
976
978
980 packet_entities_t entstatebuffer; /*just a temp buffer*/
981
982 char name[64]; // map name (base filename). static because of restart command after disconnecting.
984
986 {
989 void *ctxptr;
990 intptr_t ctxint;
991 char data[1];
994
995//=============================================================================
996
997/*
998// edict->movetype values
999#define MOVETYPE_NONE 0 // never moves
1000#define MOVETYPE_ANGLENOCLIP 1
1001#define MOVETYPE_ANGLECLIP 2
1002#define MOVETYPE_WALK 3 // gravity
1003#define MOVETYPE_STEP 4 // gravity, special edge handling
1004#define MOVETYPE_FLY 5
1005#define MOVETYPE_TOSS 6 // gravity
1006#define MOVETYPE_PUSH 7 // no clip to world, push and crush
1007#define MOVETYPE_NOCLIP 8
1008#define MOVETYPE_FLYMISSILE 9 // extra size to monsters
1009#define MOVETYPE_BOUNCE 10
1010#define MOVETYPE_BOUNCEMISSILE 11 // bounce w/o gravity
1011#define MOVETYPE_FOLLOW 12 // track movement of aiment
1012#define MOVETYPE_H2PUSHPULL 13 // pushable/pullable object
1013#define MOVETYPE_H2SWIM 14 // should keep the object in water
1014#define MOVETYPE_PHYSICS 32
1015#define MOVETYPE_FLY_WORLDONLY 33
1016
1017// edict->solid values
1018#define SOLID_NOT 0 // no interaction with other objects
1019#define SOLID_TRIGGER 1 // touch on edge, but not blocking
1020#define SOLID_BBOX 2 // touch on edge, block
1021#define SOLID_SLIDEBOX 3 // touch on edge, but not an onground
1022#define SOLID_BSP 4 // bsp clip, touch on edge, block
1023#define SOLID_PHASEH2 5
1024#define SOLID_CORPSE 5
1025#define SOLID_LADDER 20 //dmw. touch on edge, not blocking. Touching players have different physics. Otherwise a SOLID_TRIGGER. deprecated. use solid_bsp and skin=-16
1026
1027#define DAMAGE_NO 0
1028#define DAMAGE_YES 1
1029#define DAMAGE_AIM 2
1030*/
1031
1032#define PVSF_NORMALPVS 0x0
1033#define PVSF_NOTRACECHECK 0x1
1034#define PVSF_USEPHS 0x2
1035#define PVSF_IGNOREPVS 0x3
1036#define PVSF_MODE_MASK 0x3
1037#define PVSF_NOREMOVE 0x80
1038
1039// entity effects
1040
1041//define EF_BRIGHTFIELD 1
1042//define EF_MUZZLEFLASH 2
1043//#define EF_BRIGHTLIGHT (1<<2)
1044//#define EF_DIMLIGHT (1<<4)
1045
1046//#define EF_FULLBRIGHT 512
1047
1048
1049#define SPAWNFLAG_NOT_EASY (1<<8)
1050#define SPAWNFLAG_NOT_MEDIUM (1<<9)
1051#define SPAWNFLAG_NOT_HARD (1<<10)
1052#define SPAWNFLAG_NOT_DEATHMATCH (1<<11)
1053
1054#define SPAWNFLAG_NOT_H2PALADIN (1<<8)
1055#define SPAWNFLAG_NOT_H2CLERIC (1<<9)
1056#define SPAWNFLAG_NOT_H2NECROMANCER (1<<10)
1057#define SPAWNFLAG_NOT_H2THEIF (1<<11)
1058#define SPAWNFLAG_NOT_H2EASY (1<<12)
1059#define SPAWNFLAG_NOT_H2MEDIUM (1<<13)
1060#define SPAWNFLAG_NOT_H2HARD (1<<14)
1061#define SPAWNFLAG_NOT_H2DEATHMATCH (1<<15)
1062#define SPAWNFLAG_NOT_H2COOP (1<<16)
1063#define SPAWNFLAG_NOT_H2SINGLE (1<<17)
1064
1065#if 0//ndef Q2SERVER
1066typedef enum multicast_e
1067{
1075#endif
1076
1077
1078//shared with qc
1079#define MSG_PRERELONE -100
1080#define MSG_BROADCAST 0 // unreliable to all
1081#define MSG_ONE 1 // reliable to one (msg_entity)
1082#define MSG_ALL 2 // reliable to all
1083#define MSG_INIT 3 // write to the init string
1084#define MSG_MULTICAST 4 // for multicast()
1085#define MSG_CSQC 5 // for writing csqc entities
1086
1087//============================================================================
1088
1090extern cvar_t sv_maxspeed;
1091extern cvar_t sv_antilag;
1092extern cvar_t sv_antilag_frac;
1093
1094void SV_Master_ReResolve(void);
1095void SV_Master_Shutdown(void);
1096void SV_Master_Heartbeat (void);
1100
1101extern cvar_t pr_ssqc_progs;
1102extern cvar_t sv_csqcdebug;
1103extern cvar_t spawn;
1104extern cvar_t teamplay;
1105extern cvar_t deathmatch;
1106extern cvar_t coop;
1107extern cvar_t fraglimit;
1108extern cvar_t timelimit;
1109
1110extern server_static_t svs; // persistant server info
1111extern server_t sv; // local server
1112
1113extern client_t *host_client;
1114
1115extern edict_t *sv_player;
1116
1117//extern char localmodels[MAX_MODELS][5]; // inline model names for precache
1118
1120
1121//===========================================================
1122
1123void SV_AddDebugPolygons(void);
1124const char *SV_CheckRejectConnection(netadr_t *adr, const char *uinfo, unsigned int protocol, unsigned int pext1, unsigned int pext2, unsigned int ezpext1, char *guid);
1125
1126//
1127//sv_ccmds.c
1128//
1129char *SV_BannedReason (netadr_t *a);
1131void SV_AutoAddPenalty (client_t *cl, unsigned int banflag, int duration, char *reason);
1132void SV_AutoBanSender (int duration, char *reason); //bans net_from
1133
1134//note: not all penalties are actually penalties, but they can still expire.
1135#define BAN_BAN (1u<<0) //user is banned from the server
1136#define BAN_PERMIT (1u<<1) //+user can evade block bans or filterban
1137#define BAN_CUFF (1u<<2) //can't shoot/use impulses
1138#define BAN_MUTE (1u<<3) //can't use say/say_team/voip
1139#define BAN_CRIPPLED (1u<<4) //can't move
1140#define BAN_DEAF (1u<<5) //can't see say/say_team
1141#define BAN_LAGGED (1u<<6) //given an extra 200ms
1142#define BAN_VIP (1u<<7) //+mods might give the user special rights, via the *VIP infokey. the engine itself currently does not do anything but track it.
1143#define BAN_BLIND (1u<<8) //player's pvs is wiped.
1144#define BAN_SPECONLY (1u<<9) //player is forced to spectate
1145#define BAN_STEALTH (1u<<10)//player is not told of their bans
1146#define BAN_USER1 (1u<<11)//mod-specified
1147#define BAN_USER2 (1u<<12)//mod-specified
1148#define BAN_USER3 (1u<<13)//mod-specified
1149#define BAN_USER4 (1u<<14)//mod-specified
1150#define BAN_USER5 (1u<<15)//mod-specified
1151#define BAN_USER6 (1u<<16)//mod-specified
1152#define BAN_USER7 (1u<<17)//mod-specified
1153#define BAN_USER8 (1u<<18)//mod-specified
1154#define BAN_MAPPER (1u<<19)//+player is allowed to use the brush/entity editing clc.
1155#define BAN_VMUTE (1u<<20)//can't use voip (but can still use other forms of chat)
1156
1157#define BAN_NOLOCALHOST (BAN_BAN|BAN_PERMIT|BAN_SPECONLY) //any attempt to ban localhost is denied, but you can vip, lag, cripple, etc them.
1158
1159//
1160// sv_main.c
1161//
1162NORETURN void VARGS SV_Error (char *error, ...) LIKEPRINTF(1);
1163void SV_Shutdown (void);
1164float SV_Frame (void);
1165void SV_ReadPacket(void);
1166void SV_FinalMessage (char *message);
1167void SV_DropClient (client_t *drop);
1168struct quakeparms_s;
1169void SV_Init (struct quakeparms_s *parms);
1170void SV_ExecInitialConfigs(char *defaultexec);
1171void SV_ArgumentOverrides(void);
1172
1173int SV_CalcPing (client_t *cl, qboolean forcecalc);
1174void SV_FullClientUpdate (client_t *client, client_t *to);
1176
1177const char *SV_GetProtocolVersionString(void); //decorate the protocol version field of server queries with extra features...
1179int SV_NewChallenge (void);
1180void SVC_DirectConnect(int expectedreliablesequence);
1181typedef struct
1182{
1183 enum serverprotocols_e protocol; //protocol used to talk to this client.
1184#ifdef NQPROT
1185 qboolean proquakeanglehack; //specifies that the client will expect proquake angles if we give a proquake CCREP_ACCEPT response.
1186 qboolean isqex; //yay quirks...
1187 unsigned int expectedreliablesequence; //required for nq connection cookies (like tcp's syn cookies).
1188 unsigned int supportedprotocols; //1<<SCP_* bitmask
1189#endif
1190 unsigned int ftepext1;
1191 unsigned int ftepext2;
1192 unsigned int ezpext1;
1193 int qport; //part of the qw protocol to avoid issues with buggy routers that periodically renumber cl2sv ports.
1194#ifdef HUFFNETWORK
1195 int huffcrc; //network compression stuff
1196#endif
1197 int challenge; //the challenge used at connect. remembered to make life harder for proxies.
1198 int mtu; //allowed fragment size (also signifies that it supports fragmented qw packets)
1199 char userinfo[2048]; //random userinfo data. no blobs, obviously.
1200 char guid[128]; //user's guid data
1201 netadr_t adr; //the address the connect request came from (so we can check passwords before accepting)
1203void SV_DoDirectConnect(svconnectinfo_t *fte_restrict info);
1204
1205int SV_ModelIndex (const char *name);
1206
1208void SVQW_WriteDelta (entity_state_t *from, entity_state_t *to, sizebuf_t *msg, qboolean force, unsigned int protext, unsigned int ezext);
1209
1210client_t *SV_AddSplit(client_t *controller, char *info, int id);
1211void SV_SpawnParmsToQC(client_t *client);
1212void SV_SpawnParmsToClient(client_t *client);
1214void SV_SaveSpawnparms (void);
1215void SV_SaveSpawnparmsClient(client_t *client, float *transferparms); //if transferparms, calls SetTransferParms instead, and does not modify the player.
1216void SV_SaveLevelCache(const char *savename, qboolean dontharmgame);
1217void SV_Savegame (const char *savename, qboolean autosave);
1218qboolean SV_LoadLevelCache(const char *savename, const char *level, const char *startspot, qboolean ignoreplayers);
1219
1221
1222void SV_ExecuteUserCommand (const char *s, qboolean fromQC);
1223void SV_InitOperatorCommands (void);
1224
1227
1228void SV_SaveInfos(vfsfile_t *f);
1229
1230void SV_FixupName(const char *in, char *out, unsigned int outlen);
1231
1232#ifdef SUBSERVERS
1233//cluster stuff
1234void SSV_UpdateAddresses(void);
1235void SSV_InitiatePlayerTransfer(client_t *cl, const char *newserver);
1236void SSV_InstructMaster(sizebuf_t *cmd);
1238void SSV_PrintToMaster(char *s);
1239void SSV_ReadFromControlServer(void);
1240void SSV_SavePlayerStats(client_t *cl, int reason); //initial, periodic (in case of node crashes), part
1241void SSV_RequestShutdown(void); //asks the cluster to not send us new players
1242
1244vfsfile_t *Sys_GetStdInOutStream(void); //obtains a bi-directional pipe for reading/writing via stdin/stdout. make sure the system code won't be using it.
1245
1246qboolean MSV_NewNetworkedNode(vfsfile_t *stream, qbyte *reqstart, qbyte *buffered, size_t buffersize, const char *remoteaddr); //call to register a pipe to a newly discovered node.
1247void SSV_SetupControlPipe(vfsfile_t *stream); //call to register the pipe.
1249#define SSV_IsSubServer() isClusterSlave
1250
1251
1252void MSV_SubServerCommand_f(void);
1253void MSV_MapCluster_f(void);
1254void MSV_MapCluster_Setup(const char *landingmap, qboolean use_database, qboolean singleplyaer);
1255void MSV_Shutdown(void);
1256void SSV_Send(const char *dest, const char *src, const char *cmd, const char *msg);
1258void MSV_PollSlaves(void);
1259qboolean MSV_ForwardToAutoServer(void); //forwards console command to a default subserver. ie: whichever one our client is on.
1260void MSV_Status(void);
1261void MSV_OpenUserDatabase(void);
1262#else
1263#define SSV_UpdateAddresses() ((void)0)
1264#define MSV_ClusterLogin(info) false
1265#define SSV_IsSubServer() false
1266#define MSV_OpenUserDatabase()
1267#define MSV_PollSlaves()
1268#define MSV_ForwardToAutoServer() false
1269#endif
1270
1271//
1272// sv_init.c
1273//
1274void SV_SpawnServer (const char *server, const char *startspot, qboolean noents, qboolean usecinematic, int playerslots);
1275void SV_UnspawnServer (void);
1276void SV_FlushSignon (qboolean force);
1277void SV_UpdateMaxPlayers(int newmax);
1278
1279void SV_FilterImpulseInit(void);
1280qboolean SV_FilterImpulse(int imp, int level);
1281
1282//svq2_game.c
1284void VARGS SVQ2_ShutdownGameProgs (void);
1285void VARGS PFQ2_Configstring (int i, const char *val); //for engine cheats.
1286
1287//svq2_ents.c
1288void SVQ2_BuildClientFrame (client_t *client);
1290#ifdef Q2SERVER
1292void SVQ2_BuildBaselines(void);
1293#endif
1294
1295//
1296// sv_send.c
1297//
1298void SV_CalcNetRates(client_t *cl, double *ftime, int *frames, double *minf, double *maxf); //gets received framerate etc info
1300void SV_QCStatName(int type, char *name, int statnum);
1301void SV_QCStatFieldIdx(int type, unsigned int fieldindex, int statnum);
1302void SV_QCStatGlobal(int type, const char *globalname, int statnum);
1303void SV_QCStatPtr(int type, void *ptr, int statnum);
1304void SV_ClearQCStats(void);
1305
1306void SV_SendClientMessages (void);
1307
1308void SV_SendLightstyle(client_t *cl, sizebuf_t *forcemsg, int style, qboolean initial);
1310#define FULLDIMENSIONMASK 0xffffffff
1311void SV_MulticastProtExt(vec3_t origin, multicast_t to, int dimension_mask, int with, int without);
1312void SV_MulticastCB(vec3_t origin, multicast_t to, const char *reliableinfokey, int dimension_mask, void (*callback)(client_t *cl, sizebuf_t *msg, void *ctx), void *ctx);
1313
1314void SV_StartSound (int ent, vec3_t origin, float *velocity, int seenmask, int channel, const char *sample, int volume, float attenuation, float pitchadj, float timeofs, unsigned int flags);
1315void QDECL SVQ1_StartSound (vec_t *origin, wedict_t *entity, int channel, const char *sample, int volume, float attenuation, float pitchadj, float timeofs, unsigned int chflags);
1316void SV_PrintToClient(client_t *cl, int level, const char *string);
1317void SV_TPrintToClient(client_t *cl, int level, const char *string);
1318void SV_StuffcmdToClient(client_t *cl, const char *string);
1319void SV_StuffcmdToClient_Unreliable(client_t *cl, const char *string);
1320void VARGS SV_ClientPrintf (client_t *cl, int level, const char *fmt, ...) LIKEPRINTF(3);
1321void VARGS SV_ClientTPrintf (client_t *cl, int level, translation_t text, ...);
1322void VARGS SV_BroadcastPrintf (int level, const char *fmt, ...) LIKEPRINTF(2);
1323void SV_BroadcastPrint_QexLoc (unsigned int flags, int level, const char **arg, int args);
1324void SV_BroadcastPrint (unsigned int flags, int level, const char *text);
1325 //flags exposed to ktx.
1326 #define BPRINT_IGNOREINDEMO (1<<0) // broad cast print will be not put in demo
1327 #define BPRINT_IGNORECLIENTS (1<<1) // broad cast print will not be seen by clients, but may be seen in demo
1328 //#define BPRINT_QTVONLY (1<<2) // if broad cast print goes to demo, then it will be only qtv sream, but not file
1329 #define BPRINT_IGNORECONSOLE (1<<3) // broad cast print will not be put in server console
1330void VARGS SV_BroadcastTPrintf (int level, translation_t fmt, ...);
1331void VARGS SV_BroadcastCommand (const char *fmt, ...) LIKEPRINTF(1);
1332void SV_SendMessagesToAll (void);
1333void SV_FindModelNumbers (void);
1334void SV_SendFixAngle(client_t *client, sizebuf_t *msg, int fixtype, qboolean roll);
1335
1336void SV_BroadcastUserinfoChange(client_t *about, qboolean isbasic, const char *key, const char *newval);
1337
1340void SV_Prompt_Input(client_t *cl, usercmd_t *ucmd);
1341
1342//
1343// sv_user.c
1344//
1345#ifdef NQPROT
1346void SVNQ_New_f (void);
1348#endif
1349qboolean SV_UserInfoIsBasic(const char *infoname); //standard message.
1353void SV_UserInit (void);
1355
1356#ifdef PEXT2_VOICECHAT
1357void SV_VoiceInitClient(client_t *client);
1359#endif
1360
1361void SV_SetSSQCInputs(usercmd_t *ucmd);
1362void SV_ClientThink (void);
1363void SV_Begin_Core(client_t *split); //sets up the player's gamecode state
1364void SV_DespawnClient(client_t *cl); //shuts down the gamecode state.
1365
1366void VoteFlushAll(void);
1368void SV_UpdateToReliableMessages (void);
1369void SV_FlushBroadcasts (void);
1370qboolean SV_CanTrack(client_t *client, int entity);
1371
1372#ifdef HAVE_LEGACY
1373void SV_DownloadQueueNext(client_t *client);
1374void SV_DownloadQueueClear(client_t *client);
1375#endif
1376#ifdef NQPROT
1378#endif
1379void SV_New_f (void);
1380
1381void SV_PreRunCmd(void);
1382void SV_RunCmd (usercmd_t *ucmd, qboolean recurse);
1383void SV_PostRunCmd(void);
1384void SV_RunCmdCleanup(void);
1385
1388
1389//sv_master.c
1390float SVM_Think(void);
1391vfsfile_t *SVM_GenerateIndex(const char *requesthost, const char *fname, const char **mimetype, const char *query);
1392void SVM_AddBrokerGame(const char *brokerid, const char *info);
1393void SVM_RemoveBrokerGame(const char *brokerid);
1394qboolean SVM_FixupServerAddress(netadr_t *adr, struct dtlspeercred_s *cred);
1395void FTENET_TCP_ICEResponse(struct ftenet_connections_s *col, int type, const char *cid, const char *sdp);
1396
1397
1398//
1399// svonly.c
1400//
1401typedef enum {RD_NONE, RD_CLIENT, RD_PACKET, RD_PACKET_LOG, RD_OBLIVION, RD_MASTER} redirect_t; //oblivion is provided so people can read the output before the buffer is wiped.
1402void SV_BeginRedirect (redirect_t rd, int lang);
1403void SV_EndRedirect (void);
1404extern char sv_redirected_buf[8000];
1406extern int sv_redirectedlang;
1407
1408
1410qboolean PR_GameCodePausedTic(float pausedtime);
1411qboolean PR_ShouldTogglePause(client_t *initiator, qboolean pausedornot);
1412
1413//
1414// sv_ents.c
1415//
1416void SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean ignorepvs);
1417void SVFTE_EmitBaseline(entity_state_t *to, qboolean numberisimportant, sizebuf_t *msg, unsigned int pext2, unsigned int ezext);
1420int SV_HullNumForPlayer(int h2hull, float *mins, float *maxs);
1421void SV_GibFilterInit(void);
1422void SV_GibFilterPurge(void);
1423void SV_CleanupEnts(void);
1425
1426void SV_AckEntityFrame(client_t *cl, int framenum);
1427void SV_ReplaceEntityFrame(client_t *cl, int framenum);
1428
1429//
1430// sv_nchan.c
1431//
1432
1433void ClientReliableCheckBlock(client_t *cl, int maxsize);
1434sizebuf_t *ClientReliable_StartWrite(client_t *cl, int maxsize); //MUST be followed by a call to ClientReliable_FinishWrite before the next start
1436void ClientReliableWrite_Begin(client_t *cl, int c, int maxsize);
1437client_t *ClientReliableWrite_BeginSplit(client_t *cl, int svc, int svclen);
1438void ClientReliableWrite_Angle(client_t *cl, float f);
1442void ClientReliableWrite_Float(client_t *cl, float f);
1443void ClientReliableWrite_Double(client_t *cl, double f);
1444void ClientReliableWrite_Coord(client_t *cl, float f);
1445void ClientReliableWrite_Int64(client_t *cl, qint64_t c);
1449void ClientReliableWrite_String(client_t *cl, const char *s);
1450void ClientReliableWrite_SZ(client_t *cl, const void *data, int len);
1451
1452
1453#ifdef SVRANKING
1454//flags
1455#define RANK_MUTED 2
1456#define RANK_CUFFED 4
1457#define RANK_CRIPPLED 8 //ha ha... get speed cheaters with this!... :o)
1458
1459#define NUM_RANK_SPAWN_PARMS 32
1460
1461typedef struct { //stats info
1464 float parm[NUM_RANK_SPAWN_PARMS];
1468 char pad2;
1469 char pad3;
1470
1471#if NUM_RANK_SPAWN_PARMS>32
1472 quint64_t created;
1473 quint64_t lastseen;
1474#endif
1475} rankstats_t;
1476
1477typedef struct { //name, identity and order.
1478 int prev; //score is held for convineance.
1479 int next;
1480 char name[32];
1481 int pwd;
1482 float score;
1483} rankheader_t;
1484
1485typedef struct {
1488} rankinfo_t;
1489
1490int Rank_GetPlayerID(char *guid, const char *name, int pwd, qboolean allowcreate, qboolean requirepasswordtobeset);
1491void Rank_SetPlayerStats(int id, rankstats_t *stats);
1495void Rank_Flush (void);
1496
1497void Rank_ListTop10_f (void);
1498void Rank_RegisterCommands(void);
1499int Rank_GetPass (char *name);
1500
1501extern cvar_t rank_needlogin;
1503#endif
1504
1505client_t *SV_GetClientForString(const char *name, int *id);
1506qboolean SV_MayCheat(void);
1507
1508
1509
1510
1511
1512
1513
1514void NPP_Flush(void);
1515void NPP_NQWriteByte(int dest, qbyte data);
1516void NPP_NQWriteChar(int dest, char data);
1517void NPP_NQWriteShort(int dest, short data);
1518void NPP_NQWriteLong(int dest, long data);
1519void NPP_NQWriteAngle(int dest, float data);
1520void NPP_NQWriteCoord(int dest, float data);
1521void NPP_NQWriteFloat(int dest, float data);
1522void NPP_NQWriteString(int dest, const char *data);
1523void NPP_NQWriteEntity(int dest, int data);
1524
1525void NPP_QWWriteByte(int dest, qbyte data);
1526void NPP_QWWriteChar(int dest, char data);
1527void NPP_QWWriteShort(int dest, short data);
1528void NPP_QWWriteLong(int dest, long data);
1529void NPP_QWWriteAngle(int dest, float data);
1530void NPP_QWWriteCoord(int dest, float data);
1531void NPP_QWWriteFloat(int dest, float data);
1532void NPP_QWWriteString(int dest, const char *data);
1533void NPP_QWWriteEntity(int dest, int data);
1534
1535
1536
1537void NPP_MVDForceFlush(void);
1538
1539
1540//replacement rand function (useful cos it's fully portable, with seed grabbing)
1541void predictablesrand(unsigned int x);
1544
1545
1546
1547
1548
1549
1550
1551#ifdef SVCHAT
1552void SV_WipeChat(client_t *client);
1553int SV_ChatMove(int impulse);
1554void SV_ChatThink(client_t *client);
1555#endif
1556
1557
1558#ifdef MVD_RECORDING
1559/*
1560//
1561// sv_mvd.c
1562//
1563//qtv proxies are meant to send a small header now, bit like http
1564//this header gives supported version numbers and stuff
1565typedef struct mvdpendingdest_s {
1566 qboolean error; //disables writers, quit ASAP.
1567#ifdef _WIN32
1568 qintptr_t socket;
1569#else
1570 int socket;
1571#endif
1572
1573 char inbuffer[2048];
1574 char outbuffer[2048];
1575
1576 char challenge[64];
1577 qboolean hasauthed;
1578 qboolean isreverse;
1579
1580 int insize;
1581 int outsize;
1582
1583 struct mvdpendingdest_s *nextdest;
1584} mvdpendingdest_t;*/
1585
1586typedef struct mvddest_s {
1587 qboolean error; //disables writers, quit ASAP.
1589
1591
1593
1594 int id;
1595 char filename[MAX_QPATH]; //demos/foo.mvd (or a username)
1596 char simplename[MAX_QPATH]; //foo.mvd (or a qtv resource)
1597
1598 int flushing; //worker has a cache (used as a sync point)
1599 char *cache;
1603
1604 unsigned int totalsize;
1605
1608void SV_MVDPings (void);
1612
1614{
1618 MVD_CLOSE_DISCONNECTED, //qtv disconnected
1621
1622void SV_MVDStop (enum mvdclosereason_e reason, qboolean mvdonly);
1623void SV_MVDStop_f (void);
1625void MVD_Init (void);
1628
1629extern demo_t demo; // server demo struct
1630
1633extern cvar_t sv_demofps;
1634extern cvar_t sv_demoPings;
1635extern cvar_t sv_demoUseCache;
1636extern cvar_t sv_demoMaxSize;
1638
1639qboolean MVD_CheckSpace(qboolean broadcastwarnings);
1640void SV_MVD_AutoRecord (void);
1641char *SV_Demo_CurrentOutput(void);
1642void SV_Demo_PrintOutputs(void);
1643void SV_MVDInit(void);
1644char *SV_MVDNum(char *buffer, int bufferlen, int num);
1645const char *SV_MVDLastNum(unsigned int num);
1646void SV_SendMVDMessage(void);
1647void SV_MVD_WriteReliables(qboolean writebroadcasts);
1648qboolean SV_ReadMVD (void);
1649void SV_FlushDemoSignon (void);
1650void DestFlush(qboolean compleate);
1651
1652typedef struct
1653{
1656 char challenge[64]; //aka nonce
1658int SV_MVD_GotQTVRequest(vfsfile_t *clientstream, char *headerstart, char *headerend, qtvpendingstate_t *p);
1659#endif
1660
1661// savegame.c
1662void SV_Savegame_f (void);
1663void SV_DeleteSavegame_f (void);
1664void SV_Savegame_c(int argn, const char *partial, struct xcommandargcompletioncb_s *ctx);
1665void SV_Loadgame_f (void);
1666qboolean SV_Loadgame (const char *unsafe_savename);
1667void SV_AutoSave(void);
1668void SV_FlushLevelCache(void);
1669extern cvar_t sv_autosave;
1670extern cvar_t sv_savefmt;
1671
1672
1674
1676void SV_CalcPHS (void);
1677
1678void SV_GetConsoleCommands (void);
1679void SV_CheckTimer(void);
1680
1681void SV_LogPlayer(client_t *cl, char *msg);
1682
1683extern vec3_t pmove_mins, pmove_maxs; //abs min/max extents
1684#ifdef USEAREAGRID
1685void AddAllLinksToPmove (world_t *w, wedict_t *player);
1686#else
1687void AddLinksToPmove (world_t *w, wedict_t *player, areanode_t *node);
1688void AddLinksToPmove_Force (world_t *w, wedict_t *player, areanode_t *node);
1689#define AddAllLinksToPmove(w,p) do{AddLinksToPmove(w,p,(w)->areanodes);AddLinksToPmove_Force(w,p,&(w)->portallist);}while(0)
1690#endif
1691
1692
1693#ifdef HLSERVER
1694void SVHL_SaveLevelCache(char *filename);
1695
1696//network frame info
1697void SVHL_Snapshot_Build(client_t *client, packet_entities_t *pack, qbyte *pvs, edict_t *clent, qboolean ignorepvs);
1698qbyte *SVHL_Snapshot_SetupPVS(client_t *client, qbyte *pvs, unsigned int pvsbufsize);
1699void SVHL_BuildStats(client_t *client, int *si, float *sf, char **ss);
1700
1701//gamecode entry points
1702int SVHL_InitGame(void);
1703void SVHL_SetupGame(void);
1704void SVHL_SpawnEntities(char *entstring);
1705void SVHL_RunFrame (void);
1706qboolean SVHL_ClientConnect(client_t *client, netadr_t adr, char rejectmessage[128]);
1707void SVHL_PutClientInServer(client_t *client);
1708void SVHL_RunPlayerCommand(client_t *cl, usercmd_t *oldest, usercmd_t *oldcmd, usercmd_t *newcmd);
1710void SVHL_DropClient(client_t *drop);
1711void SVHL_ShutdownGame(void);
1712#endif
1713
qboolean
Definition: api_menu.h:34
float vec_t
Definition: api_menu.h:38
vec_t vec3_t[3]
Definition: api_menu.h:40
uint64_t qofs_t
Definition: api_menu.h:49
@ MAX_CL_STATS
Definition: bothdefs.h:1060
int challenge
Definition: cl_main.c:304
client_state_t cl
Definition: cl_main.c:247
unsigned char guid[64]
Definition: cl_main.c:322
double time
Definition: cl_main.c:306
int protocol
Definition: cl_main.c:289
netadr_t adr[8]
Definition: cl_main.c:288
cvar_t msg
Definition: cl_main.c:159
void(QDECL *vgui_frame)(void)
entity_t * ent
Definition: com_mesh.c:717
void dNearCallback * callback
Definition: com_phys_ode.c:655
int num
Definition: com_phys_ode.c:314
unsigned char qbyte
Definition: common.h:127
char * text
Definition: decomp.c:375
s
Definition: execloop.h:53
char filename[64]
Definition: generatebuiltin.c:8
void size_t buffersize
Definition: gl_model.c:912
const char * newname
Definition: gl_model.c:1431
unsigned int col
Definition: gl_ngraph.c:39
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: gl_vidcommon.c:351
GLint level
Definition: gl_vidcommon.c:42
static EGLSurface EGLSurface EGLContext ctx
Definition: gl_videgl.c:47
int error
Definition: gl_vidlinuxglx.c:447
GLenum query
Definition: glquake.h:818
GLint GLenum type
Definition: glquake.h:157
GLuint GLcharARB * name
Definition: glquake.h:155
GLint size
Definition: glquake.h:157
GLfloat x
Definition: glquake.h:158
GLfloat GLfloat GLfloat GLfloat w
Definition: glquake.h:158
GLint GLfloat * parms
Definition: glsupp.h:612
GLenum GLsizei len
Definition: glsupp.h:502
static png_size_t start
Definition: image.c:1419
iwboolean verbose
Definition: iwebiface.c:329
char fname[MAX_QPATH]
Definition: m_mp3.c:160
char ** data
Definition: p_script.c:63
int const void * p
Definition: pr_lua.c:232
evalc_t angles
Definition: pr_menu.c:1357
evalc_t origin
Definition: pr_menu.c:1356
evalc_t mins
Definition: pr_menu.c:1354
evalc_t maxs
Definition: pr_menu.c:1355
pint_t progsnum_t
Definition: progtype.h:64
pvec_t pvec3_t[3]
Definition: progtype.h:63
enum multicast_e multicast_t
multicast_e
Definition: q2game.h:24
int outlen
Definition: qccgui.c:6543
uploadfmt_t fmt
Definition: r_2d.c:48
qboolean MVD_CheckSpace(qboolean broadcastwarnings)
Definition: sv_mvd.c:1969
void NPP_NQWriteEntity(int dest, int data)
Definition: net_preparse.c:1679
void SVM_AddBrokerGame(const char *brokerid, const char *info)
Definition: sv_master.c:1069
char * SV_MVDNum(char *buffer, int bufferlen, int num)
Definition: sv_mvd.c:2733
void SSV_CheckFromMaster(void)
qboolean isClusterSlave
Definition: sv_cluster.c:95
vfsfile_t * Sys_ForkServer(void)
Definition: sys_linux_threads.c:344
qboolean HLSV_ClientCommand(client_t *client)
Definition: svhl_game.c:1984
void NPP_NQWriteAngle(int dest, float data)
Definition: net_preparse.c:287
void SVQW_WriteDelta(entity_state_t *from, entity_state_t *to, sizebuf_t *msg, qboolean force, unsigned int protext, unsigned int ezext)
Definition: sv_ents.c:680
qboolean PR_ShouldTogglePause(client_t *initiator, qboolean pausedornot)
Definition: pr_cmds.c:2377
void NPP_MVDForceFlush(void)
Definition: net_preparse.c:2974
struct server_s server_t
void SV_VoiceSendPacket(client_t *client, sizebuf_t *buf)
Definition: sv_user.c:3004
int sv_max_staticentities
Definition: sv_init.c:41
struct svtcpstream_s svtcpstream_t
void SV_DespawnClient(client_t *cl)
Definition: sv_user.c:2134
void SV_ReplaceEntityFrame(client_t *cl, int framenum)
Definition: sv_ents.c:629
server_t sv
Definition: sv_init.c:38
void SV_SaveLevelCache(const char *savename, qboolean dontharmgame)
Definition: savegame.c:932
void ClientReliableWrite_Float(client_t *cl, float f)
Definition: sv_nchan.c:196
client_conn_state_t
Definition: server.h:330
@ cs_spawned
Definition: server.h:335
@ cs_connected
Definition: server.h:334
@ cs_loadzombie
Definition: server.h:333
@ cs_zombie
Definition: server.h:332
@ cs_free
Definition: server.h:331
void SV_SaveSpawnparms(void)
Definition: sv_init.c:409
void SV_SpawnParmsToQC(client_t *client)
Definition: sv_init.c:286
client_t * SV_GetClientForString(const char *name, int *id)
Definition: sv_ccmds.c:80
void SV_CalcNetRates(client_t *cl, double *ftime, int *frames, double *minf, double *maxf)
Definition: sv_user.c:5818
void SV_AutoAddPenalty(client_t *cl, unsigned int banflag, int duration, char *reason)
Definition: sv_ccmds.c:1906
void NPP_QWWriteShort(int dest, short data)
Definition: net_preparse.c:325
vec3_t pmove_mins
Definition: sv_user.c:6802
void NPP_NQWriteString(int dest, const char *data)
Definition: net_preparse.c:1625
void SV_BroadcastUserinfoChange(client_t *about, qboolean isbasic, const char *key, const char *newval)
Definition: sv_send.c:3370
void SV_ReadPacket(void)
Definition: sv_main.c:4835
struct server_static_s server_static_t
void SV_UpdateMaxPlayers(int newmax)
Definition: sv_init.c:676
qboolean SV_CanTrack(client_t *client, int entity)
Definition: sv_send.c:2591
cvar_t sv_csqcdebug
Definition: sv_main.c:163
vfsfile_t * SVM_GenerateIndex(const char *requesthost, const char *fname, const char **mimetype, const char *query)
Definition: sv_master.c:993
const char * SV_GetProtocolVersionString(void)
Definition: sv_main.c:1295
qboolean SV_Master_AddressIsMaster(netadr_t *adr)
Definition: net_master.c:210
void SV_MVD_WriteReliables(qboolean writebroadcasts)
Definition: sv_mvd.c:945
void SV_SetUpClientEdict(client_t *cl, edict_t *ent)
Definition: sv_user.c:5416
int sv_redirectedlang
Definition: sv_send.c:48
void MSV_OpenUserDatabase(void)
Definition: sv_cluster.c:1827
cvar_t deathmatch
Definition: sv_main.c:183
mvdclosereason_e
Definition: server.h:1614
@ MVD_CLOSE_STOPPED
Definition: server.h:1615
@ MVD_CLOSE_FSERROR
Definition: server.h:1619
@ MVD_CLOSE_SIZELIMIT
Definition: server.h:1616
@ MVD_CLOSE_CANCEL
Definition: server.h:1617
@ MVD_CLOSE_DISCONNECTED
Definition: server.h:1618
int SV_ChatMove(int impulse)
Definition: sv_chat.c:630
void NPP_QWWriteFloat(int dest, float data)
Definition: net_preparse.c:2337
void ClientReliableWrite_Long(client_t *cl, int c)
Definition: sv_nchan.c:228
void SVHL_DropClient(client_t *drop)
Definition: svhl_game.c:2044
int SV_ModelIndex(const char *name)
Definition: sv_init.c:60
void AddLinksToPmove_Force(world_t *w, wedict_t *player, areanode_t *node)
Definition: sv_user.c:7043
void ClientReliableWrite_String(client_t *cl, const char *s)
Definition: sv_nchan.c:260
cvar_t sv_demoDir
Definition: sv_mvd.c:43
qboolean PR_GameCodePausedTic(float pausedtime)
Definition: pr_cmds.c:2361
void SV_Master_HeartbeatResponse(netadr_t *adr, const char *challenge)
Definition: net_master.c:225
cvar_t sv_mintic
Definition: sv_main.c:57
qbyte * SVHL_Snapshot_SetupPVS(client_t *client, qbyte *pvs, unsigned int pvsbufsize)
Definition: svhl_game.c:2377
cvar_t coop
Definition: sv_main.c:187
void SV_ExtractFromUserinfo(client_t *cl, qboolean verbose)
Definition: sv_main.c:6215
void SVNQ_ExecuteClientMessage(client_t *cl)
Definition: sv_user.c:9015
void SV_AckEntityFrame(client_t *cl, int framenum)
Definition: sv_ents.c:613
int predictablerand(void)
struct bannedips_s bannedips_t
gametype_e
Definition: server.h:909
@ GT_QUAKE2
Definition: server.h:913
@ GT_QUAKE3
Definition: server.h:914
@ GT_LUA
Definition: server.h:916
@ GT_MAX
Definition: server.h:918
@ GT_HALFLIFE
Definition: server.h:912
@ GT_PROGS
Definition: server.h:910
@ GT_Q1QVM
Definition: server.h:911
void SV_GibFilterInit(void)
Definition: sv_ents.c:3313
void SV_ExecuteUserCommand(const char *s, qboolean fromQC)
Definition: sv_user.c:6593
rankstats_t * Rank_GetPlayerStats(int id, rankstats_t *buffer)
Definition: sv_rankin.c:329
const char * SV_CheckRejectConnection(netadr_t *adr, const char *uinfo, unsigned int protocol, unsigned int pext1, unsigned int pext2, unsigned int ezpext1, char *guid)
Definition: pr_cmds.c:7870
void SV_ClientProtocolExtensionsChanged(client_t *client)
Definition: sv_main.c:2104
qboolean SV_ChallengePasses(int challenge)
Definition: sv_main.c:1926
void SV_ExecInitialConfigs(char *defaultexec)
Definition: sv_main.c:6433
void SV_ProcessSendFlags(client_t *c)
Definition: sv_ents.c:4418
void SV_FilterImpulseInit(void)
Definition: sv_user.c:6728
void SV_MVDStop_f(void)
Definition: sv_mvd.c:1523
qboolean SV_Loadgame(const char *unsafe_savename)
Definition: savegame.c:2078
void SVVC_Frame(qboolean enabled)
void VARGS PFQ2_Configstring(int i, const char *val)
Definition: svq2_game.c:297
void NPP_Flush(void)
Definition: net_preparse.c:204
void SV_MVDInit(void)
Definition: sv_mvd.c:3113
void SVQ3Q1_BuildEntityPacket(client_t *client, packet_entities_t *pack)
Definition: sv_ents.c:4224
void SV_DoDirectConnect(svconnectinfo_t *fte_restrict info)
Definition: sv_main.c:2621
cvar_t timelimit
Definition: sv_main.c:174
void SV_MVD_RunPendingConnections(void)
void SSV_RequestShutdown(void)
struct chatvar_s chatvar_t
void SV_SaveInfos(vfsfile_t *f)
Definition: sv_ccmds.c:2759
void QDECL SVQ1_StartSound(vec_t *origin, wedict_t *entity, int channel, const char *sample, int volume, float attenuation, float pitchadj, float timeofs, unsigned int chflags)
Definition: sv_send.c:1344
NORETURN void VARGS SV_Error(char *error,...) LIKEPRINTF(1)
Definition: sv_main.c:328
void NPP_NQWriteLong(int dest, long data)
Definition: net_preparse.c:281
cvar_t sv_demoUseCache
Definition: sv_mvd.c:37
void SV_EvaluatePenalties(client_t *cl)
Definition: sv_ccmds.c:1323
void Rank_ListTop10_f(void)
Definition: sv_rankin.c:767
cvar_t pr_ssqc_progs
Definition: pr_cmds.c:86
void SV_ClientThink(void)
Definition: sv_user.c:9686
void SV_DownloadQueueClear(client_t *client)
Definition: sv_user.c:3612
void MVD_Init(void)
Definition: sv_mvd.c:1178
qboolean SVHL_ClientConnect(client_t *client, netadr_t adr, char rejectmessage[128])
Definition: svhl_game.c:2008
void MSGQ2_WriteDeltaEntity(q2entity_state_t *from, q2entity_state_t *to, sizebuf_t *msg, qboolean force, qboolean newentity)
Definition: svq2_ents.c:38
void AddAllLinksToPmove(world_t *w, wedict_t *player)
Definition: sv_user.c:6965
void SSV_SetupControlPipe(vfsfile_t *stream)
Definition: sv_cluster.c:378
void NPP_NQWriteFloat(int dest, float data)
Definition: net_preparse.c:1526
void SV_Demo_PrintOutputs(void)
Definition: sv_mvd.c:1418
int SV_PMTypeForClient(client_t *cl, edict_t *ent)
Definition: sv_user.c:7134
void SV_Prompt_Clear(client_t *cl)
Definition: pr_cmds.c:11103
int predictablerandgetseed(void)
void SSV_SavePlayerStats(client_t *cl, int reason)
Definition: sv_cluster.c:1575
void VARGS SV_ClientPrintf(client_t *cl, int level, const char *fmt,...) LIKEPRINTF(3)
Definition: sv_send.c:304
void SVQ2_BuildClientFrame(client_t *client)
Definition: svq2_ents.c:688
void FTENET_TCP_ICEResponse(struct ftenet_connections_s *col, int type, const char *cid, const char *sdp)
Definition: net_wins.c:6169
void SV_MVD_AutoRecord(void)
Definition: sv_mvd.c:2080
void ClientReliableWrite_Entity(client_t *cl, int c)
Definition: sv_nchan.c:249
client_t * ClientReliableWrite_BeginSplit(client_t *cl, int svc, int svclen)
Definition: sv_nchan.c:75
void SV_EndRedirect(void)
Definition: cl_main.c:7659
void SV_Prompt_Input(client_t *cl, usercmd_t *ucmd)
Definition: pr_cmds.c:10998
@ PRESPAWN_CUSTOMTENTS
Definition: server.h:413
@ PRESPAWN_CSPROGS
Definition: server.h:404
@ PRESPAWN_BASELINES
Definition: server.h:417
@ PRESPAWN_COMPLETED
Definition: server.h:420
@ PRESPAWN_SOUNDLIST
Definition: server.h:406
@ PRESPAWN_VWEPMODELLIST
Definition: server.h:408
@ PRESPAWN_SPAWNSTATIC
Definition: server.h:415
@ PRESPAWN_PARTICLES
Definition: server.h:412
@ PRESPAWN_INVALID
Definition: server.h:400
@ PRESPAWN_AMBIENTSOUND
Definition: server.h:416
@ PRESPAWN_BRUSHES
Definition: server.h:419
@ PRESPAWN_SERVERINFO
Definition: server.h:402
@ PRESPAWN_PROTOCOLSWITCH
Definition: server.h:401
@ PRESPAWN_MAPCHECK
Definition: server.h:411
@ PRESPAWN_SIGNON_BUF
Definition: server.h:414
@ PRESPAWN_SPAWN
Definition: server.h:418
@ PRESPAWN_MODELLIST
Definition: server.h:410
void SV_AutoBanSender(int duration, char *reason)
Definition: sv_ccmds.c:1920
void SVHL_BuildStats(client_t *client, int *si, float *sf, char **ss)
Definition: svhl_game.c:2025
qboolean SV_FilterImpulse(int imp, int level)
Definition: sv_user.c:6718
void VoteFlushAll(void)
Definition: sv_user.c:4931
void SV_Master_Heartbeat(void)
Definition: net_master.c:599
void SV_Savegame(const char *savename, qboolean autosave)
Definition: savegame.c:1219
char * SV_BannedReason(netadr_t *a)
Definition: sv_ccmds.c:1598
struct mvddest_s mvddest_t
void Rank_SetPlayerStats(int id, rankstats_t *stats)
Definition: sv_rankin.c:359
cvar_t sv_demoAutoRecord
Definition: sv_mvd.c:36
void NPP_NQWriteChar(int dest, char data)
Definition: net_preparse.c:269
const char * SV_MVDLastNum(unsigned int num)
Definition: sv_mvd.c:2726
void SV_SendFixAngle(client_t *client, sizebuf_t *msg, int fixtype, qboolean roll)
Definition: sv_send.c:1513
void SV_Master_Shutdown(void)
Definition: net_master.c:772
void SVM_RemoveBrokerGame(const char *brokerid)
Definition: sv_master.c:1042
void SV_Prompt_Resend(client_t *cl)
Definition: pr_cmds.c:11035
qboolean SVC_GetChallenge(qboolean respond_dp)
Definition: sv_main.c:1629
void SV_CleanupEnts(void)
Definition: sv_ents.c:4437
void SVHL_RunFrame(void)
Definition: svhl_phys.c:1812
void SV_GibFilterPurge(void)
Definition: sv_ents.c:3279
int Rank_GetPlayerID(char *guid, const char *name, int pwd, qboolean allowcreate, qboolean requirepasswordtobeset)
Definition: sv_rankin.c:408
void SVQ2_WriteFrameToClient(client_t *client, sizebuf_t *msg)
Definition: svq2_ents.c:622
qboolean MSV_ClusterLogin(svconnectinfo_t *info)
Definition: sv_cluster.c:1861
cvar_t sv_autosave
Definition: savegame.c:14
void SV_QCStatName(int type, char *name, int statnum)
Definition: sv_send.c:2056
void NPP_QWWriteString(int dest, const char *data)
Definition: net_preparse.c:2387
qboolean SV_LoadLevelCache(const char *savename, const char *level, const char *startspot, qboolean ignoreplayers)
Definition: savegame.c:450
void SV_InitOperatorCommands(void)
Definition: sv_ccmds.c:3440
void NPP_NQWriteShort(int dest, short data)
Definition: net_preparse.c:275
void VARGS SV_BroadcastTPrintf(int level, translation_t fmt,...)
Definition: sv_send.c:488
void SV_CheckTimer(void)
Definition: sv_ccmds.c:3165
qboolean SV_MayCheat(void)
Definition: sv_ccmds.c:33
void SV_PostRunCmd(void)
Definition: sv_user.c:7847
void SV_FinalMessage(char *message)
Definition: sv_main.c:438
void Rank_Flush(void)
Definition: sv_rankin.c:940
void SV_FixupName(const char *in, char *out, unsigned int outlen)
Definition: sv_main.c:6020
void ClientReliableCheckBlock(client_t *cl, int maxsize)
Definition: sv_nchan.c:26
enum multicast_e multicast_t
void SV_Snapshot_BuildStateQ1(entity_state_t *state, edict_t *ent, client_t *client, packet_entities_t *pack)
Definition: sv_ents.c:3435
void SV_MVD_SendInitialGamestate(mvddest_t *dest)
Definition: sv_mvd.c:1684
void SV_UnspawnServer(void)
Definition: sv_init.c:606
void MSV_Shutdown(void)
Definition: sv_cluster.c:560
char * SV_PlayerPublicAddress(client_t *cl)
Definition: sv_main.c:1165
void SVHL_PutClientInServer(client_t *client)
Definition: svhl_game.c:2035
void SV_MulticastCB(vec3_t origin, multicast_t to, const char *reliableinfokey, int dimension_mask, void(*callback)(client_t *cl, sizebuf_t *msg, void *ctx), void *ctx)
Definition: sv_send.c:909
void Rank_RegisterCommands(void)
Definition: sv_rankin.c:919
sizebuf_t * ClientReliable_StartWrite(client_t *cl, int maxsize)
Definition: sv_nchan.c:102
qboolean SVM_FixupServerAddress(netadr_t *adr, struct dtlspeercred_s *cred)
Definition: sv_master.c:194
void SV_TPrintToClient(client_t *cl, int level, const char *string)
Definition: sv_send.c:196
serverprotocols_e
Definition: server.h:446
@ SCP_QUAKEWORLD
Definition: server.h:448
@ SCP_BJP3
Definition: server.h:454
@ SCP_FITZ666
Definition: server.h:455
@ SCP_DARKPLACES7
Definition: server.h:458
@ SCP_DARKPLACES6
Definition: server.h:457
@ SCP_NETQUAKE
Definition: server.h:452
@ SCP_QUAKE3
Definition: server.h:450
@ SCP_QUAKE2
Definition: server.h:449
@ SCP_BAD
Definition: server.h:447
cvar_t sv_demoMaxSize
Definition: sv_mvd.c:47
void SV_AddDebugPolygons(void)
Definition: pr_cmds.c:7988
void SV_SendServerinfo(client_t *client)
void SV_FindModelNumbers(void)
Definition: sv_send.c:1492
qboolean MSV_ForwardToAutoServer(void)
Definition: sv_cluster.c:781
void VARGS SV_Multicast(vec3_t origin, multicast_t to)
Definition: sv_send.c:1116
struct client_s client_t
void SSV_InstructMaster(sizebuf_t *cmd)
Definition: sv_cluster.c:1288
void VARGS SV_BroadcastCommand(const char *fmt,...) LIKEPRINTF(1)
Definition: sv_send.c:541
void SVQ2_BuildBaselines(void)
Definition: svq2_ents.c:867
cvar_t sv_maxspeed
Definition: sv_phys.c:49
redirect_t sv_redirected
Definition: sv_send.c:47
void SVHL_Snapshot_Build(client_t *client, packet_entities_t *pack, qbyte *pvs, edict_t *clent, qboolean ignorepvs)
Definition: svhl_game.c:2307
void SV_WriteEntitiesToClient(client_t *client, sizebuf_t *msg, qboolean ignorepvs)
Definition: sv_ents.c:4243
void SV_VoiceInitClient(client_t *client)
Definition: sv_user.c:2997
void SV_AutoSave(void)
Definition: savegame.c:1520
void SV_Master_ReResolve(void)
Definition: net_master.c:754
void SV_SpawnParmsToClient(client_t *client)
Definition: sv_init.c:299
void SV_FlushLevelCache(void)
Definition: savegame.c:377
void SV_FlushBroadcasts(void)
Definition: sv_send.c:2780
void ClientReliableWrite_Double(client_t *cl, double f)
Definition: sv_nchan.c:185
void NPP_NQWriteByte(int dest, qbyte data)
Definition: net_preparse.c:263
qboolean SVQ2_InitGameProgs(void)
Definition: svq2_game.c:822
void VARGS SVQ2_ShutdownGameProgs(void)
Definition: svq2_game.c:760
cvar_t sv_demoMaxDirSize
Definition: sv_mvd.c:39
void SV_SendLightstyle(client_t *cl, sizebuf_t *forcemsg, int style, qboolean initial)
Definition: sv_send.c:1384
void ClientReliableWrite_Angle(client_t *cl, float f)
Definition: sv_nchan.c:141
void ClientReliableWrite_Char(client_t *cl, int c)
Definition: sv_nchan.c:174
void SV_DropClient(client_t *drop)
Definition: sv_main.c:488
void SVFTE_EmitBaseline(entity_state_t *to, qboolean numberisimportant, sizebuf_t *msg, unsigned int pext2, unsigned int ezext)
Definition: sv_ents.c:1448
void SV_FullClientUpdate(client_t *client, client_t *to)
Definition: sv_main.c:982
server_state_t
Definition: server.h:24
@ ss_clustermode
Definition: server.h:26
@ ss_cinematic
Definition: server.h:29
@ ss_active
Definition: server.h:28
@ ss_loading
Definition: server.h:27
@ ss_dead
Definition: server.h:25
void SV_BroadcastPrint_QexLoc(unsigned int flags, int level, const char **arg, int args)
Definition: sv_send.c:412
cvar_t spawn
Definition: sv_main.c:189
void SVHL_SpawnEntities(char *entstring)
Definition: svhl_game.c:1835
void SV_New_f(void)
Definition: sv_user.c:242
cvar_t sv_demoPings
Definition: sv_mvd.c:46
float SVM_Think(void)
Definition: sv_master.c:1899
void SV_GetNewSpawnParms(client_t *cl)
Definition: sv_init.c:431
void ClientReliable_FinishWrite(client_t *cl)
Definition: sv_nchan.c:124
int SV_MVD_GotQTVRequest(vfsfile_t *clientstream, char *headerstart, char *headerend, qtvpendingstate_t *p)
Definition: sv_mvd.c:259
void NPP_QWWriteCoord(int dest, float data)
Definition: net_preparse.c:337
void SV_RunCmdCleanup(void)
Definition: sv_user.c:7223
qboolean SV_UserInfoIsBasic(const char *infoname)
Definition: sv_user.c:4710
void SV_MVD_FullClientUpdate(sizebuf_t *msg, client_t *player)
Definition: sv_mvd.c:800
void SV_FlushSignon(qboolean force)
Definition: sv_init.c:127
void SV_GetConsoleCommands(void)
Definition: sv_main.c:5245
void SV_Init(struct quakeparms_s *parms)
Definition: sv_main.c:6468
void SV_SendClientPrespawnInfo(client_t *client)
Definition: sv_user.c:1074
void SV_ArgumentOverrides(void)
Definition: sv_main.c:6422
void SV_SendMVDMessage(void)
Definition: sv_send.c:3710
void SV_StuffcmdToClient(client_t *cl, const char *string)
Definition: sv_send.c:202
void SV_WipeServerState(void)
Definition: sv_init.c:816
void SV_QCStatGlobal(int type, const char *globalname, int statnum)
Definition: sv_send.c:2035
void DestFlush(qboolean compleate)
Definition: sv_mvd.c:164
qboolean SV_ReadMVD(void)
Definition: sv_demo.c:321
qboolean SV_MVDWritePackets(int num)
Definition: sv_mvd.c:1013
void SV_DownloadQueueNext(client_t *client)
Definition: sv_user.c:3591
cvar_t sv_antilag
Definition: sv_user.c:68
void ClientReliableWrite_Short(client_t *cl, int c)
Definition: sv_nchan.c:239
void SV_StuffcmdToClient_Unreliable(client_t *cl, const char *string)
Definition: sv_send.c:248
void SV_SendClientMessages(void)
Definition: sv_send.c:3407
void SSV_Send(const char *dest, const char *src, const char *cmd, const char *msg)
Definition: sv_cluster.c:1602
void SV_RunCmd(usercmd_t *ucmd, qboolean recurse)
Definition: sv_user.c:7237
void SV_Loadgame_f(void)
Definition: savegame.c:2361
void VARGS SV_ClientTPrintf(client_t *cl, int level, translation_t text,...)
Definition: sv_send.c:332
void VARGS SV_BroadcastPrintf(int level, const char *fmt,...) LIKEPRINTF(2)
Definition: sv_send.c:475
void SSV_UpdateAddresses(void)
Definition: sv_cluster.c:1532
void SV_PrintToClient(client_t *cl, int level, const char *string)
Definition: sv_send.c:158
qboolean Rank_OpenRankings(void)
Definition: sv_rankin.c:152
void AddLinksToPmove(world_t *w, wedict_t *player, areanode_t *node)
Definition: sv_user.c:6986
void SV_CalcPHS(void)
Definition: sv_init.c:458
server_static_t svs
Definition: sv_init.c:37
void SV_MulticastProtExt(vec3_t origin, multicast_t to, int dimension_mask, int with, int without)
Definition: sv_send.c:590
cvar_t fraglimit
Definition: sv_main.c:173
void ClientReliableWrite_Coord(client_t *cl, float f)
Definition: sv_nchan.c:207
void SVC_DirectConnect(int expectedreliablesequence)
Definition: sv_main.c:3388
void SV_ExecuteClientMessage(client_t *cl)
Definition: sv_user.c:8220
void SSV_ReadFromControlServer(void)
Definition: sv_cluster.c:1300
void SV_FlushDemoSignon(void)
Definition: sv_init.c:148
void MSV_MapCluster_Setup(const char *landingmap, qboolean use_database, qboolean singleplyaer)
Definition: sv_cluster.c:476
int SV_HullNumForPlayer(int h2hull, float *mins, float *maxs)
Definition: sv_ents.c:2225
void NPP_QWWriteAngle(int dest, float data)
Definition: net_preparse.c:333
void MVDSetMsgBuf(demobuf_t *prev, demobuf_t *cur)
void SV_LogPlayer(client_t *cl, char *msg)
Definition: log.c:235
cvar_t sv_limittics
Definition: server.h:1089
void SV_Savegame_c(int argn, const char *partial, struct xcommandargcompletioncb_s *ctx)
Definition: savegame.c:1479
redirect_t
Definition: server.h:1401
@ RD_OBLIVION
Definition: server.h:1401
@ RD_CLIENT
Definition: server.h:1401
@ RD_NONE
Definition: server.h:1401
@ RD_MASTER
Definition: server.h:1401
@ RD_PACKET_LOG
Definition: server.h:1401
@ RD_PACKET
Definition: server.h:1401
void SV_QCStatPtr(int type, void *ptr, int statnum)
Definition: sv_send.c:2051
vfsfile_t * Sys_GetStdInOutStream(void)
Definition: sys_linux_threads.c:511
demo_t demo
Definition: sv_mvd.c:79
void SV_BroadcastPrint(unsigned int flags, int level, const char *text)
Definition: sv_send.c:368
void SVQ2_ExecuteClientMessage(client_t *cl)
Definition: sv_user.c:8591
void SV_WipeChat(client_t *client)
Definition: sv_chat.c:551
client_t * SV_AddSplit(client_t *controller, char *info, int id)
Definition: sv_main.c:2405
struct levelcache_s levelcache_t
vec3_t pmove_maxs
Definition: server.h:1683
qboolean PR_GameCodePacket(char *s)
Definition: pr_cmds.c:2396
void ClientReliableWrite_SZ(client_t *cl, const void *data, int len)
Definition: sv_nchan.c:271
cvar_t sv_antilag_frac
Definition: server.h:1099
void MSV_PollSlaves(void)
Definition: sv_cluster.c:1194
void ClientReliableWrite_Int64(client_t *cl, qint64_t c)
Definition: sv_nchan.c:218
qboolean SV_TogglePause(client_t *cl)
Definition: sv_user.c:4458
int SV_RateForClient(client_t *cl)
Definition: sv_main.c:5264
cvar_t sv_maxtic
Definition: server.h:1089
void NPP_QWWriteLong(int dest, long data)
Definition: net_preparse.c:329
char * SV_Demo_CurrentOutput(void)
Definition: sv_mvd.c:1408
void SV_SpawnServer(const char *server, const char *startspot, qboolean noents, qboolean usecinematic, int playerslots)
Definition: sv_init.c:842
void SV_PreRunCmd(void)
Definition: sv_user.c:7212
entity_state_t * sv_staticentities
Definition: sv_init.c:40
void MSV_MapCluster_f(void)
Definition: sv_cluster.c:556
void NPP_QWWriteByte(int dest, qbyte data)
Definition: net_preparse.c:317
void SVHL_RunPlayerCommand(client_t *cl, usercmd_t *oldest, usercmd_t *oldcmd, usercmd_t *newcmd)
Definition: svhl_game.c:2287
void SV_UpdateToReliableMessages(void)
Definition: sv_send.c:2966
void SV_ClearQCStats(void)
Definition: sv_send.c:2086
void SVHL_SetupGame(void)
Definition: svhl_game.c:1829
void NPP_QWWriteEntity(int dest, int data)
Definition: net_preparse.c:345
void SV_Physics_Client(edict_t *ent, int num)
cvar_t sv_demofps
Definition: sv_mvd.c:45
char sv_redirected_buf[8000]
Definition: sv_send.c:45
sizebuf_t * MVDWrite_Begin(qbyte type, int to, int size)
Definition: sv_mvd.c:844
void SV_BeginRedirect(redirect_t rd, int lang)
Definition: sv_send.c:133
void SV_DeleteSavegame_f(void)
Definition: savegame.c:2380
int SV_NewChallenge(void)
Definition: sv_main.c:1586
void SV_SendMessagesToAll(void)
Definition: sv_send.c:3916
void SV_Shutdown(void)
Definition: pr_cmds.c:171
int SV_CalcPing(client_t *cl, qboolean forcecalc)
Definition: sv_main.c:908
void SVHL_ShutdownGame(void)
Definition: svhl_game.c:1968
struct laggedpacket_s laggedpacket_t
void SV_Savegame_f(void)
Definition: savegame.c:1490
void ClientReliableWrite_Begin(client_t *cl, int c, int maxsize)
Definition: sv_nchan.c:67
void SV_WriteClientdataToMessage(client_t *client, sizebuf_t *msg)
Definition: sv_send.c:1681
void SVNQ_New_f(void)
Definition: sv_user.c:497
void SSV_InitiatePlayerTransfer(client_t *cl, const char *newserver)
Definition: sv_cluster.c:1622
void MSV_Status(void)
Definition: sv_cluster.c:607
qboolean ReloadRanking(client_t *cl, const char *newname)
Definition: sv_main.c:6153
void SVHL_SaveLevelCache(char *filename)
Definition: svhl_game.c:1824
int SVHL_InitGame(void)
Definition: svhl_game.c:1755
rankinfo_t * Rank_GetPlayerInfo(int id, rankinfo_t *buffer)
Definition: sv_rankin.c:343
client_t * host_client
Definition: sv_main.c:34
void NPP_QWWriteChar(int dest, char data)
Definition: net_preparse.c:321
cvar_t sv_savefmt
Definition: savegame.c:13
int Rank_GetPass(char *name)
Definition: sv_rankin.c:624
void predictablesrand(unsigned int x)
qboolean MSV_NewNetworkedNode(vfsfile_t *stream, qbyte *reqstart, qbyte *buffered, size_t buffersize, const char *remoteaddr)
Definition: sv_cluster.c:274
void SV_SetSSQCInputs(usercmd_t *ucmd)
Definition: pr_cmds.c:10443
float SV_Frame(void)
Definition: sv_main.c:5446
void SV_StartSound(int ent, vec3_t origin, float *velocity, int seenmask, int channel, const char *sample, int volume, float attenuation, float pitchadj, float timeofs, unsigned int flags)
Definition: sv_send.c:1252
vfsfile_t * sv_fraglogfile
Definition: sv_main.c:215
void ClientReliableWrite_Angle16(client_t *cl, float f)
Definition: sv_nchan.c:152
void SV_MVDStop(enum mvdclosereason_e reason, qboolean mvdonly)
Definition: sv_mvd.c:1475
void SV_ChatThink(client_t *client)
Definition: sv_chat.c:636
void MSV_SubServerCommand_f(void)
Definition: sv_cluster.c:730
cvar_t sv_demoDirAlt
Definition: server.h:1631
int sv_max_staticsounds
Definition: sv_init.c:43
void ClientReliableWrite_Byte(client_t *cl, int c)
Definition: sv_nchan.c:163
cvar_t teamplay
Definition: sv_main.c:175
void SV_DarkPlacesDownloadChunk(client_t *cl, sizebuf_t *msg)
Definition: sv_user.c:2480
cvar_t rank_needlogin
Definition: sv_rankin.c:33
void SV_MVDPings(void)
Definition: sv_mvd.c:780
void SV_QCStatFieldIdx(int type, unsigned int fieldindex, int statnum)
Definition: sv_send.c:2069
void SV_UserInit(void)
Definition: sv_user.c:9233
void SSV_PrintToMaster(char *s)
Definition: sv_cluster.c:587
void NPP_NQWriteCoord(int dest, float data)
Definition: net_preparse.c:293
@ MULTICAST_PHS
Definition: server.h:1069
@ MULTICAST_ALL_R
Definition: server.h:1071
@ MULTICAST_PVS
Definition: server.h:1070
@ MULTICAST_ALL
Definition: server.h:1068
@ MULTICAST_PVS_R
Definition: server.h:1073
@ MULTICAST_PHS_R
Definition: server.h:1072
staticsound_state_t * sv_staticsounds
Definition: sv_init.c:42
edict_t * sv_player
Definition: sv_user.c:33
void SV_Begin_Core(client_t *split)
Definition: sv_user.c:2190
@ PLIMIT_MODELS
Definition: server.h:426
@ PLIMIT_ENTITIES
Definition: server.h:425
@ PLIMIT_SOUNDS
Definition: server.h:427
void SV_SaveSpawnparmsClient(client_t *client, float *transferparms)
Definition: sv_init.c:316
static ALC_API ALCvoid * buffer
Definition: snd_al.c:259
static LPCSTR LPCSTR LPVOID parm
Definition: snd_directx.c:1076
static int void * ptr
Definition: snd_dma.c:483
static spx_int16_t * in
Definition: snd_dma.c:488
static SpeexBits spx_int16_t * out
Definition: snd_dma.c:492
cvar_t volume
Definition: snd_dma.c:85
OggVorbis_File char * initial
Definition: snd_ov.c:46
int i
Definition: snd_ov.c:50
Definition: world.h:164
Definition: server.h:900
unsigned int banflags
Definition: server.h:901
netadr_t adr
Definition: server.h:903
struct bannedips_s * next
Definition: server.h:902
time_t expiretime
Definition: server.h:905
char reason[1]
Definition: server.h:906
netadr_t adrmask
Definition: server.h:904
Definition: server.h:894
netadr_t adr
Definition: server.h:895
int time
Definition: server.h:897
int challenge
Definition: server.h:896
Definition: server.h:35
char varname[64]
Definition: server.h:36
struct chatvar_s * next
Definition: server.h:39
float value
Definition: server.h:37
Definition: server.h:353
unsigned int entnum
Definition: server.h:354
unsigned int bits
Definition: server.h:355
quint64_t flags
Definition: server.h:356
Definition: server.h:339
unsigned int pmonladder
Definition: server.h:373
float move_msecs
Definition: server.h:346
unsigned int numresendstats
Definition: server.h:362
vec3_t pmorigin
Definition: server.h:369
vec3_t pmvelocity
Definition: server.h:370
float pmwaterjumptime
Definition: server.h:374
float laggedtime
Definition: server.h:379
double senttime
Definition: server.h:343
float ping_time
Definition: server.h:345
int packetsizeout
Definition: server.h:348
unsigned int numresend
Definition: server.h:358
int pmtype
Definition: server.h:371
unsigned int maxresend
Definition: server.h:359
unsigned int pmjumpheld
Definition: server.h:372
packet_entities_t qwentities
Definition: server.h:350
usercmd_t cmd
Definition: server.h:375
int sequence
Definition: server.h:344
int packetsizein
Definition: server.h:347
unsigned int numlaggedplayers
Definition: server.h:378
Definition: server.h:463
unsigned int maxmodels
Definition: server.h:692
laggedpacket_t * laggedpacket_last
Definition: server.h:744
float last_check
Definition: server.h:706
unsigned int voice_read
Definition: server.h:654
char * team
Definition: server.h:514
qboolean waschoked
Definition: server.h:645
vec3_t specorigin
Definition: server.h:713
unsigned char voice_mute[(MAX_CLIENTS+7)/8]
Definition: server.h:655
int backbuf_size[MAX_BACK_BUFFERS]
Definition: server.h:534
client_frame_t * frames
Definition: server.h:578
qofs_t downloadstarted
Definition: server.h:607
int server_command_sequence
Definition: server.h:622
q2edict_t * q2edict
Definition: server.h:505
int playerclass
Definition: server.h:512
size_t lastseen_count
Definition: server.h:746
char server_commands[256][1024]
Definition: server.h:623
int lastnamecount
Definition: server.h:478
unsigned int max_net_ents
Definition: server.h:689
qboolean drop
Definition: server.h:480
sizebuf_t datagram
Definition: server.h:528
int autoaimdot
Definition: server.h:520
void * q3frames
Definition: server.h:583
int rankid
Definition: server.h:675
char uploadfn[MAX_QPATH]
Definition: server.h:639
unsigned int supportedprotocols
Definition: server.h:695
int lossage
Definition: server.h:481
qboolean active
Definition: server.h:564
qboolean pextknown
Definition: server.h:684
double localtime
Definition: server.h:492
enum serverprotocols_e protocol
Definition: server.h:694
struct client_s * controller
Definition: server.h:722
struct client_s::@431::@436 * opt
unsigned int prespawn_idx2
Definition: server.h:468
qofs_t downloadacked
Definition: server.h:606
int deaths
Definition: server.h:678
char last_client_command[1024]
Definition: server.h:618
float * dp_pl
Definition: server.h:523
unsigned int laggedents_count
Definition: server.h:541
int last_sequence
Definition: server.h:647
qboolean spawned
Definition: server.h:629
qboolean sendinfo
Definition: server.h:475
qofs_t downloadcount
Definition: server.h:603
int kills
Definition: server.h:677
size_t selected
Definition: server.h:567
int viewent
Definition: server.h:499
char * statss[MAX_CL_STATS]
Definition: server.h:559
qboolean csqcactive
Definition: server.h:683
struct client_s::@431 prompt
qbyte seat
Definition: server.h:724
double stats_started
Definition: server.h:680
char namebuf[32]
Definition: server.h:516
vec3_t specvelocity
Definition: server.h:714
unsigned int baseanglelock
Definition: server.h:489
unsigned int plimitwarned
Definition: server.h:740
union client_s::@432 frameunion
float inrate
Definition: server.h:728
int msec_cheating
Definition: server.h:705
client_conn_state_t state
Definition: server.h:464
short baseangles[3]
Definition: server.h:490
int realip_ping
Definition: server.h:737
int spectator
Definition: server.h:472
size_t numopts
Definition: server.h:567
char * spawn_parmstring
Definition: server.h:547
size_t maxopts
Definition: server.h:567
float entgravity
Definition: server.h:497
vfsfile_t * upload
Definition: server.h:638
unsigned int lastruncmd
Definition: server.h:699
char * text
Definition: server.h:570
unsigned int prespawn_stage
Definition: server.h:466
double floodprotmessage
Definition: server.h:631
qboolean gibfilter
Definition: server.h:709
float laggedents_time
Definition: server.h:543
float msecs
Definition: server.h:703
netchan_t netchan
Definition: server.h:648
float ratetime
Definition: server.h:727
qboolean send_message
Definition: server.h:538
int userid
Definition: server.h:484
int gamestatesequence
Definition: server.h:615
infosync_t infosync
Definition: server.h:486
char * centerprintstring
Definition: server.h:560
packet_entities_t sentents
Definition: server.h:586
int messagelevel
Definition: server.h:519
unsigned int hoverms
Definition: server.h:700
int spec_track
Definition: server.h:610
vfsfile_t * download
Definition: server.h:601
unsigned int ezprotocolextensions1
Definition: server.h:687
char * transfer
Definition: server.h:487
unsigned int spec_print
Definition: server.h:612
char downloadfn[MAX_QPATH]
Definition: server.h:600
qboolean isindependant
Definition: server.h:649
int drate
Definition: server.h:732
usercmd_t lastcmd
Definition: server.h:491
unsigned int fteprotocolextensions2
Definition: server.h:686
unsigned int * pendingdeltabits
Definition: server.h:587
qboolean prespawn_allow_modellist
Definition: server.h:469
edict_t * edict
Definition: server.h:502
float * dp_ping
Definition: server.h:522
float * lastseen_time
Definition: server.h:747
float nextservertimeupdate
Definition: server.h:550
unsigned int nextcsqcindex
Definition: server.h:590
unsigned int zquake_extensions
Definition: server.h:688
float laggedents_frac
Definition: server.h:542
netadr_t realip
Definition: server.h:734
float maxspeed
Definition: server.h:496
unsigned int prespawn_idx
Definition: server.h:467
int num_backbuf
Definition: server.h:533
qboolean upgradewarn
Definition: server.h:636
int chokecount
Definition: server.h:644
int clientcamera
Definition: server.h:500
float statsf[MAX_CL_STATS]
Definition: server.h:558
laggedentinfo_t laggedents[MAX_CLIENTS]
Definition: server.h:540
int statsi[MAX_CL_STATS]
Definition: server.h:557
qboolean hideplayers
Definition: server.h:751
qboolean proquake_angles_hack
Definition: server.h:696
int language
Definition: server.h:716
@ VT_SPECSELF
Definition: server.h:665
@ VT_NONMUTED
Definition: server.h:664
@ VT_ALL
Definition: server.h:663
@ VT_PLAYERSLOT0
Definition: server.h:666
@ VT_TEAM
Definition: server.h:662
double lastspoke
Definition: server.h:632
qboolean prespawn_allow_soundlist
Definition: server.h:470
qboolean jump_held
Definition: server.h:493
int server_command_ack
Definition: server.h:621
int realip_status
Definition: server.h:735
unsigned int lockanglesseq
Definition: server.h:494
int oldmove[2]
Definition: server.h:574
qboolean voice_active
Definition: server.h:656
int trustlevel
Definition: server.h:711
int rate
Definition: server.h:731
double connection_started
Definition: server.h:537
int hideentity
Definition: server.h:750
char * name
Definition: server.h:515
unsigned int pendingstats[((MAX_CL_STATS *2)+31)> >5]
Definition: server.h:556
enum client_s::@435 voice_target
quint64_t * pendingcsqcbits
Definition: server.h:588
qofs_t downloadsize
Definition: server.h:602
double nextsend
Definition: server.h:566
float spawn_parms[NUM_SPAWN_PARMS]
Definition: server.h:546
struct client_s * controlled
Definition: server.h:723
struct hledict_s * hledict
Definition: server.h:508
float delay
Definition: server.h:742
int last_client_command_num
Definition: server.h:617
float joinobservelockeduntil
Definition: server.h:634
int old_frags
Definition: server.h:554
unsigned int max_net_staticents
Definition: server.h:690
unsigned int fteprotocolextensions
Definition: server.h:685
char * dlqueue
Definition: server.h:598
infobuf_t userinfo
Definition: server.h:485
qbyte istobeloaded
Definition: server.h:628
qbyte backbuf_data[MAX_BACK_BUFFERS][MAX_BACKBUFLEN]
Definition: server.h:535
float spawninfotime
Definition: server.h:549
int redirect
Definition: server.h:473
char teambuf[32]
Definition: server.h:513
double lockedtill
Definition: server.h:633
char * header
Definition: server.h:565
netadr_t snap_from
Definition: server.h:640
char * spawninfo
Definition: server.h:548
svchat_t chat
Definition: server.h:672
int lastsequence_acknowledged
Definition: server.h:651
unsigned int penalties
Definition: server.h:627
laggedpacket_t * laggedpacket
Definition: server.h:743
char * reversedns
Definition: server.h:738
int challenge
Definition: server.h:483
int impulse
Definition: server.h:571
sizebuf_t backbuf
Definition: server.h:532
unsigned checksum
Definition: server.h:479
float outrate
Definition: server.h:729
int playercolor
Definition: server.h:511
unsigned int max_net_clients
Definition: server.h:691
char guid[64]
Definition: server.h:518
qboolean qex
Definition: server.h:697
qbyte datagram_buf[MAX_OVERALLMSGLEN/2]
Definition: server.h:529
float lastnametime
Definition: server.h:477
qboolean remote_snap
Definition: server.h:641
int realip_num
Definition: server.h:736
int delta_sequence
Definition: server.h:646
float lastoutgoingphysicstime
Definition: server.h:551
q2client_frame_t * q2frames
Definition: server.h:580
unsigned int nextdeltaindex
Definition: server.h:589
Definition: cvar.h:59
Definition: server.h:828
int end
Definition: server.h:830
qbyte * data
Definition: server.h:829
int maxsize
Definition: server.h:831
Definition: server.h:795
int parsecount
Definition: server.h:798
qboolean fixangle
Definition: server.h:799
vec3_t angle
Definition: server.h:800
int frame
Definition: server.h:803
float cmdtime
Definition: server.h:801
float sec
Definition: server.h:797
demoinfo_t info
Definition: server.h:796
int flags
Definition: server.h:802
Definition: server.h:822
demobuf_t buf
Definition: server.h:825
double time
Definition: server.h:824
Definition: server.h:838
double pingtime
Definition: server.h:845
int lasttype
Definition: server.h:844
int lastwritten
Definition: server.h:856
sizebuf_t datagram
Definition: server.h:841
int forceFrame
Definition: server.h:861
struct mvddest_s * dest
Definition: server.h:863
int lastto
Definition: server.h:843
qboolean resetdeltas
Definition: server.h:854
client_t recorder
Definition: server.h:849
int parsecount
Definition: server.h:855
int bufsize
Definition: server.h:860
Definition: server.h:815
int bufsize
Definition: server.h:817
mvd_header_t * h
Definition: server.h:818
sizebuf_t sb
Definition: server.h:816
Definition: server.h:785
int weaponframe
Definition: server.h:788
int model
Definition: server.h:790
int effects
Definition: server.h:791
vec3_t origin
Definition: server.h:786
int skinnum
Definition: server.h:789
vec3_t angles
Definition: server.h:787
Definition: progs.h:65
Definition: protocol.h:1155
Definition: netinc.h:408
Definition: svhl_gcapi.h:232
Definition: common.h:884
Definition: common.h:901
Definition: world.h:179
Definition: server.h:72
struct laggedpacket_s * next
Definition: server.h:74
int length
Definition: server.h:75
double time
Definition: server.h:73
unsigned char data[MAX_QWMSGLEN+10]
Definition: server.h:76
Definition: server.h:921
gametype_e gametype
Definition: server.h:924
struct levelcache_s * next
Definition: server.h:922
char * mapname
Definition: server.h:923
unsigned char savedplayers[(MAX_CLIENTS+7)> >3]
Definition: server.h:925
Definition: gl_model.h:972
Definition: server.h:806
qbyte full
Definition: server.h:808
int size
Definition: server.h:810
qbyte type
Definition: server.h:807
int to
Definition: server.h:809
Definition: server.h:1586
int flushing
Definition: server.h:1598
char simplename[MAX_QPATH]
Definition: server.h:1596
char * altcache
Definition: server.h:1600
char * cache
Definition: server.h:1599
qboolean droponmapchange
Definition: server.h:1588
int id
Definition: server.h:1594
qboolean error
Definition: server.h:1587
struct mvddest_s * nextdest
Definition: server.h:1606
int maxcachesize
Definition: server.h:1602
char filename[MAX_QPATH]
Definition: server.h:1595
int cacheused
Definition: server.h:1601
unsigned int totalsize
Definition: server.h:1604
@ DEST_NONE
Definition: server.h:1590
@ DEST_STREAM
Definition: server.h:1590
@ DEST_FILE
Definition: server.h:1590
@ DEST_BUFFEREDFILE
Definition: server.h:1590
@ DEST_THREADEDFILE
Definition: server.h:1590
enum mvddest_s::@439 desttype
vfsfile_t * file
Definition: server.h:1592
Definition: server.h:80
qbyte colormap
Definition: server.h:85
qbyte trans
Definition: server.h:90
qbyte frame
Definition: server.h:84
qbyte modelindex
Definition: server.h:83
qbyte skinnum
Definition: server.h:86
vec3_t origin
Definition: server.h:81
char fatness
Definition: server.h:91
qbyte effects
Definition: server.h:87
qbyte scale
Definition: server.h:89
Definition: net.h:71
Definition: net.h:232
Definition: common.h:171
Definition: protocol.h:1252
Definition: server.h:384
float ping_time
Definition: server.h:392
int areabytes
Definition: server.h:385
int first_entity
Definition: server.h:390
int senttime
Definition: server.h:391
int num_entities
Definition: server.h:389
Definition: q2game.h:153
Definition: q2game.h:128
Definition: client.h:122
Definition: server.h:1653
qboolean isreverse
Definition: server.h:1655
qboolean hasauthed
Definition: server.h:1654
Definition: quakedef.h:302
Definition: server.h:1477
int next
Definition: server.h:1479
int prev
Definition: server.h:1478
float score
Definition: server.h:1482
int pwd
Definition: server.h:1481
Definition: server.h:1485
rankheader_t h
Definition: server.h:1486
rankstats_t s
Definition: server.h:1487
Definition: server.h:1461
float timeonserver
Definition: server.h:1465
char pad3
Definition: server.h:1469
int kills
Definition: server.h:1462
quint64_t lastseen
Definition: server.h:1473
char pad2
Definition: server.h:1468
qbyte trustlevel
Definition: server.h:1467
qbyte flags1
Definition: server.h:1466
quint64_t created
Definition: server.h:1472
int deaths
Definition: server.h:1463
Definition: server.h:108
vec3_t org
Definition: server.h:259
int num_static_sounds
Definition: server.h:307
qbyte id
Definition: server.h:260
qbyte reliable_datagram_buf[MAX_QWMSGLEN]
Definition: server.h:192
char mapname[256]
Definition: server.h:139
vec3_t oldorg
Definition: server.h:281
const char * str
Definition: server.h:165
mvdentity_state_t * demostate
Definition: server.h:267
qbyte q2reliable_datagram_buf[MAX_Q2MSGLEN]
Definition: server.h:214
unsigned model_player_checksum
Definition: server.h:135
sizebuf_t q2multicast
Definition: server.h:216
model_t * models[MAX_PRECACHE_MODELS]
Definition: server.h:182
int framenum
Definition: server.h:123
@ PAUSE_AUTO
Definition: server.h:130
@ PAUSE_EXPLICIT
Definition: server.h:128
@ PAUSE_SERVICE
Definition: server.h:129
sizebuf_t signon
Definition: server.h:229
qboolean mapchangelocked
Definition: server.h:114
int lastto
Definition: server.h:254
qbyte pitch
Definition: server.h:261
int allocated_client_slots
Definition: server.h:178
sizebuf_t reliable_datagram
Definition: server.h:191
int num_static_entities
Definition: server.h:306
const char * particle_precache[MAX_SSPARTICLESPRE]
Definition: server.h:157
pvec3_t skyroom_pos
Definition: server.h:175
char demoinfo[MAX_SERVERINFO_STRING]
Definition: server.h:287
qboolean haveitems2
Definition: server.h:236
sizebuf_t multicast
Definition: server.h:195
int logindatabase
Definition: server.h:124
qboolean gamedirchanged
Definition: server.h:233
int lasttype
Definition: server.h:253
sizebuf_t datagram
Definition: server.h:187
enum server_s::@413 paused
int num_demosignon_buffers
Definition: server.h:295
int spawned_client_slots
Definition: server.h:179
char demfullmapname[64]
Definition: server.h:298
char demname[64]
Definition: server.h:291
int used_signon_space
Definition: server.h:230
const char * vw_model_precache[32]
Definition: server.h:154
qbyte h2cdtrack
Definition: server.h:172
server_state_t state
Definition: server.h:110
svcustomtents_t customtents[255]
Definition: server.h:309
float gamespeed
Definition: server.h:112
const char * model_precache[MAX_PRECACHE_MODELS]
Definition: server.h:156
sizebuf_t nqreliable_datagram
Definition: server.h:202
int frags
Definition: server.h:277
sizebuf_t master
Definition: server.h:221
sizebuf_t nqdatagram
Definition: server.h:199
qboolean mvdrecording
Definition: server.h:243
const char * q2_extrasounds[MAX_PRECACHE_SOUNDS]
Definition: server.h:149
double time
Definition: server.h:120
qbyte master_buf[MAX_DATAGRAM]
Definition: server.h:222
char loadgame_on_restart[MAX_QPATH]
Definition: server.h:117
sizebuf_t demosignon
Definition: server.h:294
unsigned int csqcchecksum
Definition: server.h:113
char * demolightstyles[MAX_LIGHTSTYLES]
Definition: server.h:300
qboolean democausesreconnect
Definition: server.h:293
struct server_s::@417 * lightstyles
struct server_s::@420 recordedplayer[MAX_CLIENTS]
qbyte nqreliable_datagram_buf[MAX_NQMSGLEN]
Definition: server.h:203
qbyte yaw
Definition: server.h:262
qboolean demostatevalid
Definition: server.h:270
double restarttime
Definition: server.h:122
char demmodel_precache[MAX_MODELS][MAX_QPATH]
Definition: server.h:288
float realtime
Definition: server.h:250
int spawned_observer_slots
Definition: server.h:180
vec3_t oldang
Definition: server.h:282
qbyte nqmulticast_buf[MAX_NQMSGLEN]
Definition: server.h:206
enum server_s::@413 oldpaused
int weaponframe
Definition: server.h:279
double autosave_time
Definition: server.h:118
char userinfo[MAX_INFO_STRING]
Definition: server.h:280
qboolean active
Definition: server.h:109
char demgamedir[64]
Definition: server.h:290
qboolean skyroom_pos_known
Definition: server.h:176
union server_s::@414 strings
size_t maxlightstyles
Definition: server.h:168
const char * sound_precache[MAX_PRECACHE_SOUNDS]
Definition: server.h:158
qbyte datagram_buf[MAX_DATAGRAM]
Definition: server.h:188
qbyte demosignon_buffers[MAX_SIGNON_BUFFERS][MAX_DATAGRAM]
Definition: server.h:297
char modelname[MAX_QPATH]
Definition: server.h:140
const char * q2_extramodels[MAX_PRECACHE_MODELS]
Definition: server.h:148
int numdemospikes
Definition: server.h:257
vec3_t colours
Definition: server.h:166
sizebuf_t q2datagram
Definition: server.h:210
qbyte q2multicast_buf[MAX_Q2MSGLEN]
Definition: server.h:217
float updatetime
Definition: server.h:283
mvdentity_state_t * demobaselines
Definition: server.h:268
qbyte q2datagram_buf[MAX_Q2DATAGRAM]
Definition: server.h:211
int stats[MAX_CL_STATS]
Definition: server.h:274
qbyte modelindex
Definition: server.h:263
unsigned eyes_player_checksum
Definition: server.h:136
struct server_s::@419 demospikes[255]
int userid
Definition: server.h:278
char h2miditrack[MAX_QPATH]
Definition: server.h:171
float pausedstart
Definition: server.h:132
qboolean mvdplayback
Definition: server.h:249
qbyte nqdatagram_buf[MAX_NQDATAGRAM]
Definition: server.h:200
int pl
Definition: server.h:275
double starttime
Definition: server.h:121
int ping
Definition: server.h:276
struct client_s * skipbprintclient
Definition: server.h:184
int * csqcentversion
Definition: server.h:311
sizebuf_t nqmulticast
Definition: server.h:205
const char * configstring[Q2MAX_CONFIGSTRINGS]
Definition: server.h:147
qboolean stringsalloced
Definition: server.h:162
char demsound_precache[MAX_SOUNDS][MAX_QPATH]
Definition: server.h:289
qbyte multicast_buf[MAX_QWMSGLEN]
Definition: server.h:196
const char * ptrs[1]
Definition: server.h:160
sizebuf_t q2reliable_datagram
Definition: server.h:213
int demomaxents
Definition: server.h:269
world_t world
Definition: server.h:142
qbyte signon_buffer[MAX_OVERALLMSGLEN]
Definition: server.h:231
vfsfile_t * demofile
Definition: server.h:251
int demosignon_buffer_size[MAX_SIGNON_BUFFERS]
Definition: server.h:296
Definition: server.h:986
void * ctxptr
Definition: server.h:989
struct frameendtasks_s * next
Definition: server.h:987
intptr_t ctxint
Definition: server.h:990
char data[1]
Definition: server.h:991
void(* callback)(struct frameendtasks_s *task)
Definition: server.h:988
Definition: server.h:941
char progsnames[MAX_PROGS][MAX_QPATH]
Definition: server.h:973
int heartbeat_sequence
Definition: server.h:955
qbyte log_buf[FRAGLOG_BUFFERS][MAX_DATAGRAM]
Definition: server.h:967
infobuf_t localinfo
Definition: server.h:959
int serverflags
Definition: server.h:952
int numprogs
Definition: server.h:975
struct server_static_s::frameendtasks_s * frameendtasks
client_t * clients
Definition: server.h:951
double logtime
Definition: server.h:963
challenge_t challenges[MAX_CHALLENGES]
Definition: server.h:969
progsnum_t progsnum[MAX_PROGS]
Definition: server.h:974
sizebuf_t log[FRAGLOG_BUFFERS]
Definition: server.h:966
int clusterserverid
Definition: server.h:946
int spawncount
Definition: server.h:943
levelcache_t * levcache
Definition: server.h:983
double last_heartbeat
Definition: server.h:954
int framenum
Definition: server.h:945
struct ftenet_connections_s * sockets
Definition: server.h:948
svstats_t stats
Definition: server.h:956
gametype_e gametype
Definition: server.h:942
packet_entities_t entstatebuffer
Definition: server.h:980
infobuf_t info
Definition: server.h:958
struct netprim_s netprim
Definition: server.h:977
bannedips_t * bannedips
Definition: server.h:971
laggedpacket_t * free_lagged_packet
Definition: server.h:979
int logsequence
Definition: server.h:962
int allocated_client_slots
Definition: server.h:950
Definition: common.h:196
Definition: server.h:95
vec3_t position
Definition: server.h:96
unsigned short soundnum
Definition: server.h:97
qbyte volume
Definition: server.h:98
qbyte attenuation
Definition: server.h:99
Definition: server.h:41
edict_t * edict
Definition: server.h:44
float time
Definition: server.h:56
chatvar_t * vars
Definition: server.h:54
int options
Definition: server.h:52
float tag
Definition: server.h:49
qboolean active
Definition: server.h:42
Definition: server.h:1182
qboolean proquakeanglehack
Definition: server.h:1185
unsigned int ftepext2
Definition: server.h:1191
int huffcrc
Definition: server.h:1195
unsigned int ftepext1
Definition: server.h:1190
unsigned int ezpext1
Definition: server.h:1192
netadr_t adr
Definition: server.h:1201
int qport
Definition: server.h:1193
int mtu
Definition: server.h:1198
qboolean isqex
Definition: server.h:1186
unsigned int supportedprotocols
Definition: server.h:1188
enum serverprotocols_e protocol
Definition: server.h:1183
int challenge
Definition: server.h:1197
unsigned int expectedreliablesequence
Definition: server.h:1187
Definition: server.h:60
int netstyle
Definition: server.h:61
qbyte dlighttime
Definition: server.h:67
qbyte radius
Definition: server.h:64
qbyte dlightradius
Definition: server.h:66
Definition: server.h:871
double latched_maxresponse
Definition: server.h:885
int packets
Definition: server.h:875
int latched_count
Definition: server.h:882
double idle
Definition: server.h:873
double active
Definition: server.h:872
double latched_active
Definition: server.h:880
int latched_maxpackets
Definition: server.h:884
double latched_time
Definition: server.h:879
int maxpackets
Definition: server.h:877
double latched_idle
Definition: server.h:881
double maxresponse
Definition: server.h:876
int latched_packets
Definition: server.h:883
int count
Definition: server.h:874
Definition: server.h:929
int socketnum
Definition: server.h:930
struct svtcpstream_s * next
Definition: server.h:936
float timeouttime
Definition: server.h:934
int inlen
Definition: server.h:931
char inbuffer[1500]
Definition: server.h:933
netadr_t remoteaddr
Definition: server.h:935
qboolean waitingforprotocolconfirmation
Definition: server.h:932
Definition: protocol.h:1285
Definition: pr_common.h:13
Definition: world.h:207
Definition: cmd.h:135
netadr_t a
Definition: sv_master.c:141
static unsigned char const char * from
Definition: sv_sql.c:31
static unsigned char * to
Definition: sv_sql.c:31
static enum mysql_option option const char * arg
Definition: sv_sql.c:28
unsigned char buf[KBRINGSIZE]
Definition: sys_dos.c:27
void * vfsfile_t
Definition: sys_plugfte.h:2
const char * translation_t
Definition: translate.h:3
unsigned int flags
Definition: valid.c:313
cvar_t enabled
Definition: view.c:50
newm prev
Definition: zone.c:583