Quake II RTX doxygen  1.0 dev
server.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 1997-2001 Id Software, Inc.
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License along
15 with this program; if not, write to the Free Software Foundation, Inc.,
16 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18 // server.h
19 
20 #include "shared/shared.h"
21 #include "shared/list.h"
22 #include "shared/game.h"
23 
24 #include "common/bsp.h"
25 #include "common/cmd.h"
26 #include "common/cmodel.h"
27 #include "common/common.h"
28 #include "common/cvar.h"
29 #include "common/error.h"
30 #include "common/files.h"
31 #include "common/msg.h"
32 #include "common/net/net.h"
33 #include "common/net/chan.h"
34 #include "common/pmove.h"
35 #include "common/prompt.h"
36 #include "common/protocol.h"
37 #include "common/x86/fpu.h"
38 #include "common/zone.h"
39 
40 #include "client/client.h"
41 #include "server/server.h"
42 #include "system/system.h"
43 
44 #if USE_MVD_CLIENT
45 #include "server/mvd/client.h"
46 #endif
47 
48 #if USE_ZLIB
49 #include <zlib.h>
50 #endif
51 
52 //=============================================================================
53 
54 #define SV_Malloc(size) Z_TagMalloc(size, TAG_SERVER)
55 #define SV_Mallocz(size) Z_TagMallocz(size, TAG_SERVER)
56 #define SV_CopyString(s) Z_TagCopyString(s, TAG_SERVER)
57 #define SV_LoadFile(path, buf) FS_LoadFileEx(path, buf, 0, TAG_SERVER)
58 #define SV_FreeFile(buf) Z_Free(buf)
59 
60 #ifdef _DEBUG
61 #define SV_DPrintf(level,...) \
62  if (sv_debug && sv_debug->integer > level) \
63  Com_LPrintf(PRINT_DEVELOPER, __VA_ARGS__)
64 #else
65 #define SV_DPrintf(...)
66 #endif
67 
68 #define SV_BASELINES_SHIFT 6
69 #define SV_BASELINES_PER_CHUNK (1 << SV_BASELINES_SHIFT)
70 #define SV_BASELINES_MASK (SV_BASELINES_PER_CHUNK - 1)
71 #define SV_BASELINES_CHUNKS (MAX_EDICTS >> SV_BASELINES_SHIFT)
72 
73 #define SV_InfoSet(var, val) \
74  Cvar_FullSet(var, val, CVAR_SERVERINFO|CVAR_ROM, FROM_CODE)
75 
76 #if USE_CLIENT
77 #define SV_PAUSED (sv_paused->integer != 0)
78 #else
79 #define SV_PAUSED 0
80 #endif
81 
82 #if USE_FPS
83 #define SV_GMF_VARIABLE_FPS GMF_VARIABLE_FPS
84 #else
85 #define SV_GMF_VARIABLE_FPS 0
86 #endif
87 
88 // game features this server supports
89 #define SV_FEATURES (GMF_CLIENTNUM | GMF_PROPERINUSE | GMF_MVDSPEC | \
90  GMF_WANT_ALL_DISCONNECTS | GMF_ENHANCED_SAVEGAMES | \
91  SV_GMF_VARIABLE_FPS | GMF_EXTRA_USERINFO)
92 
93 // ugly hack for SV_Shutdown
94 #define MVD_SPAWN_DISABLED 0
95 #define MVD_SPAWN_ENABLED 0x40000000
96 #define MVD_SPAWN_INTERNAL 0x80000000
97 #define MVD_SPAWN_MASK 0xc0000000
98 
99 typedef struct {
100  int number;
101  unsigned num_entities;
102  unsigned first_entity;
103  player_packed_t ps;
106  byte areabits[MAX_MAP_AREA_BYTES]; // portalarea visibility bits
107  unsigned sentTime; // for ping calculations
108  int latency;
110 
111 typedef struct {
112  int solid32;
113 
114 #if USE_FPS
115 
116 // must be > MAX_FRAMEDIV
117 #define ENT_HISTORY_SIZE 8
118 #define ENT_HISTORY_MASK (ENT_HISTORY_SIZE - 1)
119 
120  struct {
121  vec3_t origin;
122  int framenum;
123  } history[ENT_HISTORY_SIZE];
124 
125  vec3_t create_origin;
126  int create_framenum;
127 #endif
129 
130 // variable server FPS
131 #if USE_FPS
132 #define SV_FRAMERATE sv.framerate
133 #define SV_FRAMETIME sv.frametime
134 #define SV_FRAMEDIV sv.framediv
135 #define SV_FRAMESYNC !(sv.framenum % sv.framediv)
136 #define SV_CLIENTSYNC(cl) !(sv.framenum % (cl)->framediv)
137 #else
138 #define SV_FRAMERATE BASE_FRAMERATE
139 #define SV_FRAMETIME BASE_FRAMETIME
140 #define SV_FRAMEDIV 1
141 #define SV_FRAMESYNC 1
142 #define SV_CLIENTSYNC(cl) 1
143 #endif
144 
145 typedef struct {
146  server_state_t state; // precache commands are only valid during load
147  int spawncount; // random number generated each server spawn
148 
149 #if USE_FPS
150  int framerate;
151  int frametime;
152  int framediv;
153 #endif
154 
155  int framenum;
156  unsigned frameresidual;
157 
158  char mapcmd[MAX_QPATH]; // ie: *intro.cin+base
159 
160  char name[MAX_QPATH]; // map name, or cinematic name
161  cm_t cm;
163 
164  char configstrings[MAX_CONFIGSTRINGS][MAX_QPATH];
165 
166  server_entity_t entities[MAX_EDICTS];
167 
168  unsigned tracecount;
169 } server_t;
170 
171 #define EDICT_POOL(c, n) ((edict_t *)((byte *)(c)->pool->edicts + (c)->pool->edict_size*(n)))
172 
173 #define EDICT_NUM(n) ((edict_t *)((byte *)ge->edicts + ge->edict_size*(n)))
174 #define NUM_FOR_EDICT(e) ((int)(((byte *)(e) - (byte *)ge->edicts) / ge->edict_size))
175 
176 #define MAX_TOTAL_ENT_LEAFS 128
177 
178 // hack for smooth BSP model rotation
179 #define Q2PRO_SHORTANGLES(c, e) \
180  ((c)->protocol == PROTOCOL_VERSION_Q2PRO && \
181  (c)->version >= PROTOCOL_VERSION_Q2PRO_SHORT_ANGLES && \
182  sv.state == ss_game && \
183  EDICT_POOL(c, e)->solid == SOLID_BSP)
184 
185 typedef enum {
186  cs_free, // can be reused for a new connection
187  cs_zombie, // client has been disconnected, but don't reuse
188  // connection for a couple seconds
189  cs_assigned, // client_t assigned, but no data received from client yet
190  cs_connected, // netchan fully established, but not in game yet
191  cs_primed, // sent serverdata, client is precaching
192  cs_spawned // client is fully in game
193 } clstate_t;
194 
195 #if USE_AC_SERVER
196 
197 typedef enum {
198  AC_NORMAL,
199  AC_REQUIRED,
200  AC_EXEMPT
201 } ac_required_t;
202 
203 typedef enum {
204  AC_QUERY_UNSENT,
205  AC_QUERY_SENT,
206  AC_QUERY_DONE
207 } ac_query_t;
208 
209 #endif // USE_AC_SERVER
210 
211 #define MSG_POOLSIZE 1024
212 #define MSG_TRESHOLD (64 - 10) // keep pmsg_s 64 bytes aligned
213 
214 #define MSG_RELIABLE 1
215 #define MSG_CLEAR 2
216 #define MSG_COMPRESS 4
217 
218 #define MAX_SOUND_PACKET 14
219 
220 typedef struct {
221  list_t entry;
222  uint16_t cursize; // zero means sound packet
223  union {
224  uint8_t data[MSG_TRESHOLD];
225  struct {
226  uint8_t flags;
227  uint8_t index;
228  uint16_t sendchan;
229  uint8_t volume;
230  uint8_t attenuation;
231  uint8_t timeofs;
232  int16_t pos[3]; // saved in case entity is freed
233  };
234  };
236 
237 #define RATE_MESSAGES 10
238 
239 #define FOR_EACH_CLIENT(client) \
240  LIST_FOR_EACH(client_t, client, &sv_clientlist, entry)
241 
242 #define PL_S2C(cl) (cl->frames_sent ? \
243  (1.0f - (float)cl->frames_acked / cl->frames_sent) * 100.0f : 0.0f)
244 #define PL_C2S(cl) (cl->netchan->total_received ? \
245  ((float)cl->netchan->total_dropped / cl->netchan->total_received) * 100.0f : 0.0f)
246 #define AVG_PING(cl) (cl->avg_ping_count ? \
247  cl->avg_ping_time / cl->avg_ping_count : cl->ping)
248 
249 typedef struct {
250  unsigned time;
251  unsigned credit;
252  unsigned credit_cap;
253  unsigned cost;
254 } ratelimit_t;
255 
256 typedef struct client_s {
257  list_t entry;
258 
259  // core info
261  edict_t *edict; // EDICT_NUM(clientnum+1)
262  int number; // client slot number
263 
264  // client flags
265  qboolean reconnected: 1;
266  qboolean nodata: 1;
267  qboolean has_zlib: 1;
268  qboolean drop_hack: 1;
269 #if USE_ICMP
270  qboolean unreachable: 1;
271 #endif
272  qboolean http_download: 1;
273 
274  // userinfo
275  char userinfo[MAX_INFO_STRING]; // name, etc
276  char name[MAX_CLIENT_NAME]; // extracted from userinfo, high bits masked
277  int messagelevel; // for filtering printed messages
278  size_t rate;
279  ratelimit_t ratelimit_namechange; // for suppressing "foo changed name" flood
280 
281  // console var probes
283  char reconnect_var[16];
284  char reconnect_val[16];
286 
287  // usercmd stuff
288  unsigned lastmessage; // svs.realtime when packet was last received
289  unsigned lastactivity; // svs.realtime when user activity was last seen
290  int lastframe; // for delta compression
291  usercmd_t lastcmd; // for filling in big drops
292  int command_msec; // every seconds this is reset, if user
293  // commands exhaust it, assume time cheating
294  int num_moves; // reset every 10 seconds
295  int moves_per_sec; // average movement FPS
296 
299 
300  // frame encoding
301  client_frame_t frames[UPDATE_BACKUP]; // updates can be delta'd from here
303  int framenum;
304 #if USE_FPS
305  int framediv;
306 #endif
307  unsigned frameflags;
308 
309  // rate dropping
310  size_t message_size[RATE_MESSAGES]; // used to rate drop normal packets
311  int suppress_count; // number of messages rate suppressed
312  unsigned send_time, send_delta; // used to rate drop async packets
313 
314  // current download
315  byte *download; // file being downloaded
316  int downloadsize; // total bytes (can't use EOF because of paks)
317  int downloadcount; // bytes sent
318  char *downloadname; // name of the file
319  int downloadcmd; // svc_(z)download
320  qboolean downloadpending;
321 
322  // protocol stuff
323  int challenge; // challenge of this user, randomly generated
324  int protocol; // major version
325  int version; // minor version
326  int settings[CLS_MAX];
327 
328  pmoveParams_t pmp; // spectator speed, etc
329  msgEsFlags_t esFlags; // entity protocol flags
330 
331  // packetized messages
336  size_t msg_unreliable_bytes; // total size of unreliable datagram
337  size_t msg_dynamic_bytes; // total size of dynamic memory allocated
338 
339  // per-client baseline chunks
340  entity_packed_t *baselines[SV_BASELINES_CHUNKS];
341 
342  // server state pointers (hack for MVD channels implementation)
344  char *gamedir, *mapname;
345  edict_pool_t *pool;
346  cm_t *cm;
347  int slot;
350 
351  // netchan type dependent methods
352  void (*AddMessage)(struct client_s *, byte *, size_t, qboolean);
353  void (*WriteFrame)(struct client_s *);
355 
356  // netchan
357  netchan_t *netchan;
358  int numpackets; // for that nasty packetdup hack
359 
360  // misc
361  time_t connect_time; // time of initial connect
363 
364 #if USE_AC_SERVER
365  qboolean ac_valid;
366  ac_query_t ac_query_sent;
367  ac_required_t ac_required;
368  int ac_file_failures;
369  unsigned ac_query_time;
370  int ac_client_type;
371  string_entry_t *ac_bad_files;
372  char *ac_token;
373 #endif
374 } client_t;
375 
376 // a client can leave the server in one of four ways:
377 // dropping properly by quiting or disconnecting
378 // timing out if no valid messages are received for timeout.value seconds
379 // getting kicked off by the server operator
380 // a program error, like an overflowed reliable buffer
381 
382 //=============================================================================
383 
384 // MAX_CHALLENGES is made large to prevent a denial
385 // of service attack that could cycle all of them
386 // out before legitimate users connected
387 #define MAX_CHALLENGES 1024
388 
389 typedef struct {
390  netadr_t adr;
391  unsigned challenge;
392  unsigned time;
393 } challenge_t;
394 
395 typedef struct {
396  list_t entry;
397  netadr_t addr;
398  netadr_t mask;
399  unsigned hits;
400  time_t time; // time of the last hit
401  char comment[1];
402 } addrmatch_t;
403 
404 typedef struct {
405  list_t entry;
406  int len;
407  char string[1];
408 } stuffcmd_t;
409 
410 typedef enum {
415 
418 
419 typedef struct {
420  list_t entry;
422  char *comment;
423  char string[1];
424 } filtercmd_t;
425 
426 #define MAX_MASTERS 8 // max recipients for heartbeat packets
427 #define HEARTBEAT_SECONDS 300
428 
429 typedef struct {
430  list_t entry;
431  netadr_t adr;
432  unsigned last_ack;
434  char name[1];
435 } master_t;
436 
437 typedef struct {
438  char buffer[MAX_QPATH];
439  char *server;
440  char *spawnpoint;
441  server_state_t state;
442  int loadgame;
443  qboolean endofunit;
444  cm_t cm;
445 } mapcmd_t;
446 
447 #define FOR_EACH_MASTER(m) \
448  LIST_FOR_EACH(master_t, m, &sv_masterlist, entry)
449 #define FOR_EACH_MASTER_SAFE(m, n) \
450  LIST_FOR_EACH_SAFE(master_t, m, n, &sv_masterlist, entry)
451 
452 typedef struct server_static_s {
453  qboolean initialized; // sv_init has completed
454  unsigned realtime; // always increasing, no clamping, etc
455 
456  client_t *client_pool; // [maxclients]
457 
458  unsigned num_entities; // maxclients*UPDATE_BACKUP*MAX_PACKET_ENTITIES
459  unsigned next_entity; // next state to use
460  entity_packed_t *entities; // [num_entities]
461 
462 #if USE_ZLIB
463  z_stream z; // for compressing messages at once
464 #endif
465 
466  unsigned last_heartbeat;
467 
471 
472  challenge_t challenges[MAX_CHALLENGES]; // to prevent invalid IPs from connecting
474 
475 //=============================================================================
476 
477 extern list_t sv_masterlist; // address of the master server
478 extern list_t sv_banlist;
479 extern list_t sv_blacklist;
480 extern list_t sv_cmdlist_connect;
481 extern list_t sv_cmdlist_begin;
482 extern list_t sv_filterlist;
483 extern list_t sv_clientlist; // linked list of non-free clients
484 
485 extern server_static_t svs; // persistant server info
486 extern server_t sv; // local server
487 
488 extern pmoveParams_t sv_pmp;
489 
490 extern cvar_t *sv_hostname;
491 extern cvar_t *sv_maxclients;
492 extern cvar_t *sv_password;
493 extern cvar_t *sv_reserved_slots;
494 extern cvar_t *sv_airaccelerate; // development tool
495 extern cvar_t *sv_qwmod; // atu QW Physics modificator
496 extern cvar_t *sv_enforcetime;
497 #if USE_FPS
498 extern cvar_t *sv_fps;
499 #endif
500 extern cvar_t *sv_force_reconnect;
501 extern cvar_t *sv_iplimit;
502 
503 #ifdef _DEBUG
504 extern cvar_t *sv_debug;
505 extern cvar_t *sv_pad_packets;
506 #endif
507 extern cvar_t *sv_novis;
508 extern cvar_t *sv_lan_force_rate;
509 extern cvar_t *sv_calcpings_method;
510 extern cvar_t *sv_changemapcmd;
511 
512 extern cvar_t *sv_strafejump_hack;
513 #if USE_PACKETDUP
514 extern cvar_t *sv_packetdup_hack;
515 #endif
516 extern cvar_t *sv_allow_map;
517 #if !USE_CLIENT
518 extern cvar_t *sv_recycle;
519 #endif
520 extern cvar_t *sv_enhanced_setplayer;
521 
522 extern cvar_t *sv_status_limit;
523 extern cvar_t *sv_status_show;
524 extern cvar_t *sv_auth_limit;
525 extern cvar_t *sv_rcon_limit;
526 extern cvar_t *sv_uptime;
527 
528 extern cvar_t *sv_allow_unconnected_cmds;
529 
530 extern cvar_t *g_features;
531 
532 extern cvar_t *map_override_path;
533 
534 extern cvar_t *sv_timeout;
535 extern cvar_t *sv_zombietime;
536 extern cvar_t *sv_ghostime;
537 
538 extern client_t *sv_client;
539 extern edict_t *sv_player;
540 
541 extern qboolean sv_pending_autosave;
542 
543 
544 //===========================================================
545 
546 //
547 // sv_main.c
548 //
549 void SV_DropClient(client_t *drop, const char *reason);
550 void SV_RemoveClient(client_t *client);
551 void SV_CleanClient(client_t *client);
552 
553 void SV_InitOperatorCommands(void);
554 
556 
557 qboolean SV_RateLimited(ratelimit_t *r);
559 void SV_RateInit(ratelimit_t *r, const char *s);
560 
561 addrmatch_t *SV_MatchAddress(list_t *list, netadr_t *address);
562 
563 int SV_CountClients(void);
564 
565 #if USE_ZLIB
566 voidpf SV_zalloc(voidpf opaque, uInt items, uInt size);
567 void SV_zfree(voidpf opaque, voidpf address);
568 #endif
569 
570 //
571 // sv_init.c
572 //
573 void SV_ClientReset(client_t *client);
574 void SV_SpawnServer(mapcmd_t *cmd);
575 qboolean SV_ParseMapCmd(mapcmd_t *cmd);
576 void SV_InitGame(unsigned mvd_spawn);
577 
578 //
579 // sv_send.c
580 //
582 #define SV_OUTPUTBUF_LENGTH (MAX_PACKETLEN_DEFAULT - 16)
583 
584 #define SV_ClientRedirect() \
585  Com_BeginRedirect(RD_CLIENT, sv_outputbuf, MAX_STRING_CHARS - 1, SV_FlushRedirect)
586 
587 #define SV_PacketRedirect() \
588  Com_BeginRedirect(RD_PACKET, sv_outputbuf, SV_OUTPUTBUF_LENGTH, SV_FlushRedirect)
589 
590 extern char sv_outputbuf[SV_OUTPUTBUF_LENGTH];
591 
592 void SV_FlushRedirect(int redirected, char *outputbuf, size_t len);
593 
594 void SV_SendClientMessages(void);
595 void SV_SendAsyncPackets(void);
596 
597 void SV_Multicast(vec3_t origin, multicast_t to);
598 void SV_ClientPrintf(client_t *cl, int level, const char *fmt, ...) q_printf(3, 4);
599 void SV_BroadcastPrintf(int level, const char *fmt, ...) q_printf(2, 3);
600 void SV_ClientCommand(client_t *cl, const char *fmt, ...) q_printf(2, 3);
601 void SV_BroadcastCommand(const char *fmt, ...) q_printf(1, 2);
602 void SV_ClientAddMessage(client_t *client, int flags);
603 void SV_ShutdownClientSend(client_t *client);
604 void SV_InitClientSend(client_t *newcl);
605 
606 //
607 // sv_mvd.c
608 //
609 #if USE_MVD_SERVER
610 void SV_MvdRegister(void);
611 void SV_MvdInit(void);
612 void SV_MvdShutdown(error_type_t type);
613 void SV_MvdBeginFrame(void);
614 void SV_MvdEndFrame(void);
615 void SV_MvdRunClients(void);
616 void SV_MvdStatus_f(void);
617 void SV_MvdMapChanged(void);
618 void SV_MvdClientDropped(client_t *client);
619 
620 void SV_MvdUnicast(edict_t *ent, int clientNum, qboolean reliable);
621 void SV_MvdMulticast(int leafnum, multicast_t to);
622 void SV_MvdConfigstring(int index, const char *string, size_t len);
623 void SV_MvdBroadcastPrint(int level, const char *string);
624 void SV_MvdStartSound(int entnum, int channel, int flags,
625  int soundindex, int volume,
626  int attenuation, int timeofs);
627 
628 void SV_MvdRecord_f(void);
629 void SV_MvdStop_f(void);
630 #else
631 #define SV_MvdRegister() (void)0
632 #define SV_MvdInit() (void)0
633 #define SV_MvdShutdown(type) (void)0
634 #define SV_MvdBeginFrame() (void)0
635 #define SV_MvdEndFrame() (void)0
636 #define SV_MvdRunClients() (void)0
637 #define SV_MvdStatus_f() (void)0
638 #define SV_MvdMapChanged() (void)0
639 #define SV_MvdClientDropped(client) (void)0
640 
641 #define SV_MvdUnicast(ent, clientNum, reliable) (void)0
642 #define SV_MvdMulticast(leafnum, to) (void)0
643 #define SV_MvdConfigstring(index, string, len) (void)0
644 #define SV_MvdBroadcastPrint(level, string) (void)0
645 #define SV_MvdStartSound(entnum, channel, flags, \
646  soundindex, volume, \
647  attenuation, timeofs) (void)0
648 
649 #define SV_MvdRecord_f() (void)0
650 #define SV_MvdStop_f() (void)0
651 #endif
652 
653 //
654 // sv_ac.c
655 //
656 #if USE_AC_SERVER
659 qboolean AC_ClientBegin(client_t *cl);
661 void AC_ClientToken(client_t *cl, const char *token);
662 
663 void AC_Register(void);
664 void AC_Disconnect(void);
665 void AC_Connect(unsigned mvd_spawn);
666 void AC_Run(void);
667 
668 void AC_List_f(void);
669 void AC_Info_f(void);
670 #else
671 #define AC_ClientConnect(cl) ""
672 #define AC_ClientDisconnect(cl) (void)0
673 #define AC_ClientBegin(cl) qtrue
674 #define AC_ClientAnnounce(cl) (void)0
675 #define AC_ClientToken(cl, token) (void)0
676 
677 #define AC_Register() (void)0
678 #define AC_Disconnect() (void)0
679 #define AC_Connect(mvd_spawn) (void)0
680 #define AC_Run() (void)0
681 
682 #define AC_List_f() \
683  Com_Printf("This server does not support anticheat.\n")
684 #define AC_Info_f() \
685  Com_Printf("This server does not support anticheat.\n")
686 #endif
687 
688 //
689 // sv_user.c
690 //
691 void SV_New_f(void);
692 void SV_Begin_f(void);
694 void SV_CloseDownload(client_t *client);
695 #if USE_FPS
696 void SV_AlignKeyFrames(client_t *client);
697 #else
698 #define SV_AlignKeyFrames(client) (void)0
699 #endif
700 
701 //
702 // sv_ccmds.c
703 //
704 #if USE_MVD_CLIENT || USE_MVD_SERVER
705 extern const cmd_option_t o_record[];
706 #endif
707 
708 void SV_AddMatch_f(list_t *list);
709 void SV_DelMatch_f(list_t *list);
710 void SV_ListMatches_f(list_t *list);
711 client_t *SV_GetPlayer(const char *s, qboolean partial);
712 void SV_PrintMiscInfo(void);
713 
714 //
715 // sv_ents.c
716 //
717 
718 #define ES_INUSE(s) \
719  ((s)->modelindex || (s)->effects || (s)->sound || (s)->event)
720 
721 void SV_BuildProxyClientFrame(client_t *client);
722 void SV_BuildClientFrame(client_t *client);
725 
726 //
727 // sv_game.c
728 //
729 extern game_export_t *ge;
730 
731 void SV_InitGameProgs(void);
732 void SV_ShutdownGameProgs(void);
733 void SV_InitEdict(edict_t *e);
734 
735 void PF_Pmove(pmove_t *pm);
736 
737 //
738 // sv_save.c
739 //
740 void SV_AutoSaveBegin(mapcmd_t *cmd);
741 void SV_AutoSaveEnd(void);
742 void SV_CheckForSavegame(mapcmd_t *cmd);
743 void SV_RegisterSavegames(void);
744 int SV_NoSaveGames(void);
745 
746 //============================================================
747 
748 //
749 // high level object sorting to reduce interaction tests
750 //
751 
752 void SV_ClearWorld(void);
753 // called after the world model has been loaded, before linking any entities
754 
755 void PF_UnlinkEdict(edict_t *ent);
756 // call before removing an entity, and before trying to move one,
757 // so it doesn't clip against itself
758 
759 void SV_LinkEdict(cm_t *cm, edict_t *ent);
760 void PF_LinkEdict(edict_t *ent);
761 // Needs to be called any time an entity changes origin, mins, maxs,
762 // or solid. Automatically unlinks if needed.
763 // sets ent->v.absmin and ent->v.absmax
764 // sets ent->leafnums[] for pvs determination even if the entity
765 // is not solid
766 
767 int SV_AreaEdicts(vec3_t mins, vec3_t maxs, edict_t **list, int maxcount, int areatype);
768 // fills in a table of edict pointers with edicts that have bounding boxes
769 // that intersect the given area. It is possible for a non-axial bmodel
770 // to be returned that doesn't actually intersect the area on an exact
771 // test.
772 // returns the number of pointers filled in
773 // ??? does this always return the world?
774 
775 qboolean SV_EdictIsVisible(cm_t *cm, edict_t *ent, byte *mask);
776 
777 //===================================================================
778 
779 //
780 // functions that interact with everything apropriate
781 //
782 int SV_PointContents(vec3_t p);
783 // returns the CONTENTS_* value from the world at the given point.
784 // Quake 2 extends this to also check entities, to allow moving liquids
785 
786 trace_t q_gameabi SV_Trace(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end,
787  edict_t *passedict, int contentmask);
788 // mins and maxs are relative
789 
790 // if the entire move stays in a solid volume, trace.allsolid will be set,
791 // trace.startsolid will be set, and trace.fraction will be 0
792 
793 // if the starting point is in a solid, it will be allowed to move out
794 // to an open area
795 
796 // passedict is explicitly excluded from clipping checks (normally NULL)
797 
sv_blacklist
list_t sv_blacklist
sv_pending_autosave
qboolean sv_pending_autosave
Definition: main.c:35
client_s::lastframe
int lastframe
Definition: server.h:290
server_static_s::next_entity
unsigned next_entity
Definition: server.h:459
AC_List_f
#define AC_List_f()
Definition: server.h:682
sv_maxclients
cvar_t * sv_maxclients
Definition: main.c:58
server_t::framenum
int framenum
Definition: server.h:155
client_s::version_string
char * version_string
Definition: server.h:282
server_t::entitystring
char * entitystring
Definition: server.h:162
sv_status_show
cvar_t * sv_status_show
Definition: main.c:89
client_s::msg_dynamic_bytes
size_t msg_dynamic_bytes
Definition: server.h:337
sv
server_t sv
Definition: init.c:22
sv_qwmod
cvar_t * sv_qwmod
Definition: main.c:55
stuffcmd_t
Definition: server.h:404
SV_AutoSaveBegin
void SV_AutoSaveBegin(mapcmd_t *cmd)
Definition: save.c:474
filtercmd_t::action
filteraction_t action
Definition: server.h:421
client_frame_t::first_entity
unsigned first_entity
Definition: server.h:102
SV_MvdConfigstring
#define SV_MvdConfigstring(index, string, len)
Definition: server.h:643
master_t::adr
netadr_t adr
Definition: server.h:431
cs_spawned
@ cs_spawned
Definition: server.h:192
SV_AddMatch_f
void SV_AddMatch_f(list_t *list)
Definition: commands.c:1082
server_t
Definition: server.h:145
SV_ListMatches_f
void SV_ListMatches_f(list_t *list)
Definition: commands.c:1176
pm
static pmove_t * pm
Definition: pmove.c:44
addrmatch_t::entry
list_t entry
Definition: server.h:396
ac_required
static cvar_t * ac_required
Definition: ac.c:137
SV_MvdBeginFrame
#define SV_MvdBeginFrame()
Definition: server.h:634
sv_masterlist
list_t sv_masterlist
sv_banlist
list_t sv_banlist
RD_CLIENT
@ RD_CLIENT
Definition: server.h:581
SV_BASELINES_CHUNKS
#define SV_BASELINES_CHUNKS
Definition: server.h:71
challenge_t::adr
netadr_t adr
Definition: server.h:390
sv_timeout
cvar_t * sv_timeout
Definition: main.c:43
client_s::send_delta
unsigned send_delta
Definition: server.h:312
mapcmd_t::state
server_state_t state
Definition: server.h:441
SV_SendAsyncPackets
void SV_SendAsyncPackets(void)
Definition: send.c:987
client_s::moves_per_sec
int moves_per_sec
Definition: server.h:295
AC_Connect
#define AC_Connect(mvd_spawn)
Definition: server.h:679
client_s::protocol
int protocol
Definition: server.h:324
server_t::tracecount
unsigned tracecount
Definition: server.h:168
ratelimit_t
Definition: server.h:249
message_packet_t
Definition: server.h:220
AC_ClientDisconnect
#define AC_ClientDisconnect(cl)
Definition: server.h:672
ratelimit_t::time
unsigned time
Definition: server.h:250
client_s::downloadname
char * downloadname
Definition: server.h:318
master_t
Definition: server.h:429
SV_FlushRedirect
void SV_FlushRedirect(int redirected, char *outputbuf, size_t len)
Definition: send.c:32
SV_MvdEndFrame
#define SV_MvdEndFrame()
Definition: server.h:635
stuffcmd_t::entry
list_t entry
Definition: server.h:405
client_s::has_zlib
qboolean has_zlib
Definition: server.h:267
server_static_s::entities
entity_packed_t * entities
Definition: server.h:460
AC_ClientToken
#define AC_ClientToken(cl, token)
Definition: server.h:675
SV_BroadcastCommand
void void void void SV_BroadcastCommand(const char *fmt,...) q_printf(1
SV_InitEdict
void SV_InitEdict(edict_t *e)
SV_WriteFrameToClient_Enhanced
void SV_WriteFrameToClient_Enhanced(client_t *client)
Definition: entities.c:218
map_override_path
cvar_t * map_override_path
Definition: main.c:101
client_s::msg_free_list
list_t msg_free_list
Definition: server.h:332
sv_lan_force_rate
cvar_t * sv_lan_force_rate
Definition: main.c:72
client_s::state
clstate_t state
Definition: server.h:260
SV_MvdShutdown
#define SV_MvdShutdown(type)
Definition: server.h:633
client_s::number
int number
Definition: server.h:262
client_s::gamedir
char * gamedir
Definition: server.h:344
client_s::frames_sent
unsigned frames_sent
Definition: server.h:302
server_static_s::ratelimit_rcon
ratelimit_t ratelimit_rcon
Definition: server.h:470
sv_allow_unconnected_cmds
cvar_t * sv_allow_unconnected_cmds
Definition: main.c:97
client_s::spawncount
int spawncount
Definition: server.h:348
SV_ClearWorld
void SV_ClearWorld(void)
Definition: world.c:101
SV_InitGame
void SV_InitGame(unsigned mvd_spawn)
Definition: init.c:361
client_s::slot
int slot
Definition: server.h:347
addrmatch_t::time
time_t time
Definition: server.h:400
addrmatch_t::hits
unsigned hits
Definition: server.h:399
filteraction_t
filteraction_t
Definition: server.h:410
SV_NoSaveGames
int SV_NoSaveGames(void)
Definition: save.c:460
client_s::WriteDatagram
void(* WriteDatagram)(struct client_s *)
Definition: server.h:354
SV_MvdBroadcastPrint
#define SV_MvdBroadcastPrint(level, string)
Definition: server.h:644
RATE_MESSAGES
#define RATE_MESSAGES
Definition: server.h:237
client_s::downloadcount
int downloadcount
Definition: server.h:317
addrmatch_t::mask
netadr_t mask
Definition: server.h:398
SV_MvdClientDropped
#define SV_MvdClientDropped(client)
Definition: server.h:639
sv_auth_limit
cvar_t * sv_auth_limit
Definition: main.c:91
server_static_t
struct server_static_s server_static_t
sv_zombietime
cvar_t * sv_zombietime
Definition: main.c:44
client_s::maxclients
int maxclients
Definition: server.h:349
SV_MvdStatus_f
#define SV_MvdStatus_f()
Definition: server.h:637
g_features
cvar_t * g_features
Definition: main.c:99
SV_ClientAddMessage
void void void void void SV_ClientAddMessage(client_t *client, int flags)
Definition: send.c:399
clstate_t
clstate_t
Definition: server.h:185
mapcmd_t::spawnpoint
char * spawnpoint
Definition: server.h:440
master_t::last_resolved
time_t last_resolved
Definition: server.h:433
client_s::mapname
char * mapname
Definition: server.h:344
sv_novis
cvar_t * sv_novis
Definition: main.c:56
AC_ClientBegin
#define AC_ClientBegin(cl)
Definition: server.h:673
SV_New_f
void SV_New_f(void)
Definition: user.c:365
server_entity_t::solid32
int solid32
Definition: server.h:112
server_static_s::ratelimit_auth
ratelimit_t ratelimit_auth
Definition: server.h:469
client_s::suppress_count
int suppress_count
Definition: server.h:311
SV_CountClients
int SV_CountClients(void)
Definition: main.c:1296
SV_MvdRegister
#define SV_MvdRegister()
Definition: server.h:631
SV_InitClientSend
void SV_InitClientSend(client_t *newcl)
Definition: send.c:1040
client_s::msg_reliable_list
list_t msg_reliable_list
Definition: server.h:334
SV_ClientCommand
void void void SV_ClientCommand(client_t *cl, const char *fmt,...) q_printf(2
sv_player
edict_t * sv_player
Definition: main.c:33
server_static_s::ratelimit_status
ratelimit_t ratelimit_status
Definition: server.h:468
PF_LinkEdict
void PF_LinkEdict(edict_t *ent)
Definition: world.c:264
client_s::last_valid_cluster
int last_valid_cluster
Definition: server.h:362
SV_ParseMapCmd
qboolean SV_ParseMapCmd(mapcmd_t *cmd)
Definition: init.c:285
client_frame_t::clientNum
int clientNum
Definition: server.h:104
sv_recycle
cvar_t * sv_recycle
Definition: main.c:83
sv_outputbuf
char sv_outputbuf[SV_OUTPUTBUF_LENGTH]
Definition: send.c:30
client_s::drop_hack
qboolean drop_hack
Definition: server.h:268
mapcmd_t::loadgame
int loadgame
Definition: server.h:442
SV_RemoveClient
void SV_RemoveClient(client_t *client)
Definition: main.c:107
sv_pmp
pmoveParams_t sv_pmp
Definition: main.c:22
SV_AlignKeyFrames
#define SV_AlignKeyFrames(client)
Definition: server.h:698
SV_GetPlayer
client_t * SV_GetPlayer(const char *s, qboolean partial)
Definition: commands.c:127
message_packet_t::sendchan
uint16_t sendchan
Definition: server.h:228
sv_password
cvar_t * sv_password
Definition: main.c:48
SV_AreaEdicts
int SV_AreaEdicts(vec3_t mins, vec3_t maxs, edict_t **list, int maxcount, int areatype)
Definition: world.c:407
FA_IGNORE
@ FA_IGNORE
Definition: server.h:411
client_frame_t::areabytes
int areabytes
Definition: server.h:105
sv_rcon_limit
cvar_t * sv_rcon_limit
Definition: main.c:92
addrmatch_t::addr
netadr_t addr
Definition: server.h:397
sv_status_limit
cvar_t * sv_status_limit
Definition: main.c:88
sv_enforcetime
cvar_t * sv_enforcetime
Definition: main.c:37
SV_ShutdownClientSend
void SV_ShutdownClientSend(client_t *client)
Definition: send.c:1063
client_s::console_queries
int console_queries
Definition: server.h:285
client_s::nodata
qboolean nodata
Definition: server.h:266
client_frame_t::num_entities
unsigned num_entities
Definition: server.h:101
mapcmd_t::server
char * server
Definition: server.h:439
server_static_s::last_heartbeat
unsigned last_heartbeat
Definition: server.h:466
SV_BuildProxyClientFrame
void SV_BuildProxyClientFrame(client_t *client)
AC_Info_f
#define AC_Info_f()
Definition: server.h:684
MSG_TRESHOLD
#define MSG_TRESHOLD
Definition: server.h:212
client_s::download
byte * download
Definition: server.h:315
SV_CheckForSavegame
void SV_CheckForSavegame(mapcmd_t *cmd)
Definition: save.c:550
SV_BuildClientFrame
void SV_BuildClientFrame(client_t *client)
Definition: entities.c:382
client_s::downloadpending
qboolean downloadpending
Definition: server.h:320
ratelimit_t::cost
unsigned cost
Definition: server.h:253
SV_MvdUnicast
#define SV_MvdUnicast(ent, clientNum, reliable)
Definition: server.h:641
ge
game_export_t * ge
Definition: game.c:22
client_s::baselines
entity_packed_t * baselines[SV_BASELINES_CHUNKS]
Definition: server.h:340
filtercmd_t
Definition: server.h:419
client_s::downloadcmd
int downloadcmd
Definition: server.h:319
SV_InitGameProgs
void SV_InitGameProgs(void)
Definition: game.c:841
client_s::frames
client_frame_t frames[UPDATE_BACKUP]
Definition: server.h:301
ratelimit_t::credit_cap
unsigned credit_cap
Definition: server.h:252
message_packet_t::index
uint8_t index
Definition: server.h:227
master_t::last_ack
unsigned last_ack
Definition: server.h:432
ratelimit_t::credit
unsigned credit
Definition: server.h:251
client_s::lastactivity
unsigned lastactivity
Definition: server.h:289
client_s::entry
list_t entry
Definition: server.h:257
client_t
struct client_s client_t
server_static_s::client_pool
client_t * client_pool
Definition: server.h:456
client_s::lastcmd
usercmd_t lastcmd
Definition: server.h:291
sv_client
client_t * sv_client
Definition: main.c:32
server_static_s::initialized
qboolean initialized
Definition: server.h:453
FA_MAX
@ FA_MAX
Definition: server.h:416
server_static_s::challenges
challenge_t challenges[MAX_CHALLENGES]
Definition: server.h:472
sv_hostname
cvar_t * sv_hostname
Definition: main.c:65
client_s::challenge
int challenge
Definition: server.h:323
cs_free
@ cs_free
Definition: server.h:186
SV_ExecuteClientMessage
void SV_ExecuteClientMessage(client_t *cl)
Definition: user.c:1482
sv_reserved_slots
cvar_t * sv_reserved_slots
Definition: main.c:59
cs_zombie
@ cs_zombie
Definition: server.h:187
PF_UnlinkEdict
void PF_UnlinkEdict(edict_t *ent)
Definition: world.c:256
origin
static vec3_t origin
Definition: mesh.c:27
AC_ClientAnnounce
#define AC_ClientAnnounce(cl)
Definition: server.h:674
SV_CloseDownload
void SV_CloseDownload(client_t *client)
Definition: user.c:545
client_s::avg_ping_count
int avg_ping_count
Definition: server.h:298
SV_MvdStop_f
#define SV_MvdStop_f()
Definition: server.h:650
void
void(APIENTRY *qwglDrawBuffer)(GLenum mode)
client_s::num_moves
int num_moves
Definition: server.h:294
client_frame_t::sentTime
unsigned sentTime
Definition: server.h:107
FA_STUFF
@ FA_STUFF
Definition: server.h:413
client_s::reconnect_val
char reconnect_val[16]
Definition: server.h:284
client_s::lastmessage
unsigned lastmessage
Definition: server.h:288
sv_clientlist
list_t sv_clientlist
client_s::version
int version
Definition: server.h:325
client_frame_t::latency
int latency
Definition: server.h:108
client_frame_t
Definition: server.h:99
mapcmd_t
Definition: server.h:437
client_s::connect_time
time_t connect_time
Definition: server.h:361
SV_AutoSaveEnd
void SV_AutoSaveEnd(void)
Definition: save.c:516
SV_LinkEdict
void SV_LinkEdict(cm_t *cm, edict_t *ent)
Definition: world.c:156
client_s::message_size
size_t message_size[RATE_MESSAGES]
Definition: server.h:310
client_frame_t::ps
player_packed_t ps
Definition: server.h:103
svs
server_static_t svs
Definition: init.c:21
client_s::messagelevel
int messagelevel
Definition: server.h:277
AC_ClientConnect
#define AC_ClientConnect(cl)
Definition: server.h:671
o_record
static const cmd_option_t o_record[]
Definition: demo.c:299
server_static_s
Definition: server.h:452
MAX_CHALLENGES
#define MAX_CHALLENGES
Definition: server.h:387
client_s::command_msec
int command_msec
Definition: server.h:292
SV_Multicast
void SV_Multicast(vec3_t origin, multicast_t to)
Definition: send.c:255
SV_OUTPUTBUF_LENGTH
#define SV_OUTPUTBUF_LENGTH
Definition: server.h:582
message_packet_t::flags
uint8_t flags
Definition: server.h:226
SV_SendClientMessages
void SV_SendClientMessages(void)
Definition: send.c:880
server_static_s::num_entities
unsigned num_entities
Definition: server.h:458
cl
client_state_t cl
Definition: main.c:99
sv_iplimit
cvar_t * sv_iplimit
Definition: main.c:87
client_frame_t::number
int number
Definition: server.h:100
client_s::http_download
qboolean http_download
Definition: server.h:272
client_s::avg_ping_time
int avg_ping_time
Definition: server.h:298
SV_RegisterSavegames
void SV_RegisterSavegames(void)
Definition: save.c:706
server_entity_t
Definition: server.h:111
SV_WriteFrameToClient_Default
void SV_WriteFrameToClient_Default(client_t *client)
Definition: entities.c:174
challenge_t::time
unsigned time
Definition: server.h:392
SV_UserinfoChanged
void SV_UserinfoChanged(client_t *cl)
Definition: main.c:1927
server_t::cm
cm_t cm
Definition: server.h:161
client_s::reconnect_var
char reconnect_var[16]
Definition: server.h:283
mapcmd_t::cm
cm_t cm
Definition: server.h:444
mapcmd_t::endofunit
qboolean endofunit
Definition: server.h:443
sv_calcpings_method
cvar_t * sv_calcpings_method
Definition: main.c:73
redirect_t
redirect_t
Definition: server.h:581
SV_BroadcastPrintf
void void SV_BroadcastPrintf(int level, const char *fmt,...) q_printf(2
message_packet_t::timeofs
uint8_t timeofs
Definition: server.h:231
cs_assigned
@ cs_assigned
Definition: server.h:189
SV_DropClient
void SV_DropClient(client_t *drop, const char *reason)
Definition: main.c:212
challenge_t::challenge
unsigned challenge
Definition: server.h:391
sv_filterlist
list_t sv_filterlist
SV_PointContents
int SV_PointContents(vec3_t p)
Definition: world.c:454
SV_MvdMapChanged
#define SV_MvdMapChanged()
Definition: server.h:638
SV_ShutdownGameProgs
void SV_ShutdownGameProgs(void)
Definition: game.c:786
client_s::settings
int settings[CLS_MAX]
Definition: server.h:326
master_t::entry
list_t entry
Definition: server.h:430
SV_MvdMulticast
#define SV_MvdMulticast(leafnum, to)
Definition: server.h:642
q_printf
static void q_printf(2, 3)
Definition: files.c:2516
SV_Begin_f
void SV_Begin_f(void)
Definition: user.c:488
sv_allow_map
cvar_t * sv_allow_map
Definition: main.c:81
server_static_s::realtime
unsigned realtime
Definition: server.h:454
level
level_locals_t level
Definition: g_main.c:22
sv_strafejump_hack
cvar_t * sv_strafejump_hack
Definition: main.c:76
client_s::AddMessage
void(* AddMessage)(struct client_s *, byte *, size_t, qboolean)
Definition: server.h:352
SV_CleanClient
void SV_CleanClient(client_t *client)
Definition: main.c:135
SV_MatchAddress
addrmatch_t * SV_MatchAddress(list_t *list, netadr_t *address)
Definition: main.c:370
filtercmd_t::comment
char * comment
Definition: server.h:422
client_s::pool
edict_pool_t * pool
Definition: server.h:345
client.h
SV_ClientPrintf
void SV_ClientPrintf(client_t *cl, int level, const char *fmt,...) q_printf(3
client_s::WriteFrame
void(* WriteFrame)(struct client_s *)
Definition: server.h:353
cs_primed
@ cs_primed
Definition: server.h:191
AC_Disconnect
#define AC_Disconnect()
Definition: server.h:678
SV_RateLimited
qboolean SV_RateLimited(ratelimit_t *r)
Definition: main.c:265
SV_MvdStartSound
#define SV_MvdStartSound(entnum, channel, flags, soundindex, volume, attenuation, timeofs)
Definition: server.h:645
SV_MvdRunClients
#define SV_MvdRunClients()
Definition: server.h:636
server_t::state
server_state_t state
Definition: server.h:146
SV_SpawnServer
void SV_SpawnServer(mapcmd_t *cmd)
Definition: init.c:139
RD_NONE
@ RD_NONE
Definition: server.h:581
client_s::ping
int ping
Definition: server.h:297
client_s::msg_unreliable_bytes
size_t msg_unreliable_bytes
Definition: server.h:336
PF_Pmove
void PF_Pmove(pmove_t *pm)
Definition: game.c:708
client_s::msg_unreliable_list
list_t msg_unreliable_list
Definition: server.h:333
client_s::frameflags
unsigned frameflags
Definition: server.h:307
client_s::max_ping
int max_ping
Definition: server.h:297
client_s::netchan
netchan_t * netchan
Definition: server.h:357
client_s
Definition: server.h:256
SV_MvdRecord_f
#define SV_MvdRecord_f()
Definition: server.h:649
message_packet_t::cursize
uint16_t cursize
Definition: server.h:222
SV_RateRecharge
void SV_RateRecharge(ratelimit_t *r)
Definition: main.c:287
client_s::send_time
unsigned send_time
Definition: server.h:312
sv_ghostime
cvar_t * sv_ghostime
Definition: main.c:45
client.h
client_s::downloadsize
int downloadsize
Definition: server.h:316
challenge_t
Definition: server.h:389
client_s::numpackets
int numpackets
Definition: server.h:358
client_s::msg_pool
message_packet_t * msg_pool
Definition: server.h:335
client_s::reconnected
qboolean reconnected
Definition: server.h:265
server_t::frameresidual
unsigned frameresidual
Definition: server.h:156
server_t::spawncount
int spawncount
Definition: server.h:147
client_s::min_ping
int min_ping
Definition: server.h:297
client_s::rate
size_t rate
Definition: server.h:278
FA_PRINT
@ FA_PRINT
Definition: server.h:412
sv_cmdlist_begin
list_t sv_cmdlist_begin
filtercmd_t::entry
list_t entry
Definition: server.h:420
SV_InitOperatorCommands
void SV_InitOperatorCommands(void)
Definition: commands.c:1593
server.h
message_packet_t::attenuation
uint8_t attenuation
Definition: server.h:230
SV_PrintMiscInfo
void SV_PrintMiscInfo(void)
Definition: commands.c:777
message_packet_t::entry
list_t entry
Definition: server.h:221
SV_EdictIsVisible
qboolean SV_EdictIsVisible(cm_t *cm, edict_t *ent, byte *mask)
Definition: world.c:129
AC_Run
#define AC_Run()
Definition: server.h:680
addrmatch_t
Definition: server.h:395
SV_Trace
trace_t q_gameabi SV_Trace(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, edict_t *passedict, int contentmask)
Definition: world.c:546
SV_RateInit
void SV_RateInit(ratelimit_t *r, const char *s)
Definition: main.c:309
AC_Register
#define AC_Register()
Definition: server.h:677
sv_force_reconnect
cvar_t * sv_force_reconnect
Definition: main.c:51
stuffcmd_t::len
int len
Definition: server.h:406
RD_PACKET
@ RD_PACKET
Definition: server.h:581
client_s::ratelimit_namechange
ratelimit_t ratelimit_namechange
Definition: server.h:279
client_s::userinfo
char userinfo[MAX_INFO_STRING]
Definition: server.h:275
message_packet_t::volume
uint8_t volume
Definition: server.h:229
client_s::configstrings
char * configstrings
Definition: server.h:343
sv_cmdlist_connect
list_t sv_cmdlist_connect
client_s::framenum
int framenum
Definition: server.h:303
cs_connected
@ cs_connected
Definition: server.h:190
SV_DelMatch_f
void SV_DelMatch_f(list_t *list)
Definition: commands.c:1119
sv_changemapcmd
cvar_t * sv_changemapcmd
Definition: main.c:74
sv_airaccelerate
cvar_t * sv_airaccelerate
Definition: main.c:54
client_s::pmp
pmoveParams_t pmp
Definition: server.h:328
sv_uptime
cvar_t * sv_uptime
Definition: main.c:90
SV_ClientReset
void SV_ClientReset(client_t *client)
Definition: init.c:24
client_s::cm
cm_t * cm
Definition: server.h:346
client_s::esFlags
msgEsFlags_t esFlags
Definition: server.h:329
client_s::frames_acked
unsigned frames_acked
Definition: server.h:302
client_s::frames_nodelta
unsigned frames_nodelta
Definition: server.h:302
SV_MvdInit
#define SV_MvdInit()
Definition: server.h:632
FA_KICK
@ FA_KICK
Definition: server.h:414
client_s::name
char name[MAX_CLIENT_NAME]
Definition: server.h:276
client_s::edict
edict_t * edict
Definition: server.h:261
sv_enhanced_setplayer
cvar_t * sv_enhanced_setplayer
Definition: main.c:85