43cvar_t coop = {
CF_SERVER,
"coop",
"0",
"coop mode, 0 = no coop, 1 = coop mode, multiple players playing through the singleplayer game (coop mode also shuts off deathmatch)"};
44cvar_t deathmatch = {
CF_SERVER,
"deathmatch",
"0",
"deathmatch mode, values depend on mod but typically 0 = no deathmatch, 1 = normal deathmatch with respawning weapons, 2 = weapons stay (players can only pick up new weapons)"};
52cvar_t skill = {
CF_SERVER,
"skill",
"1",
"difficulty level of game, affects monster layouts in levels, 0 = easy, 1 = normal, 2 = hard, 3 = nightmare (same layout as hard but monsters fire twice)"};
56cvar_t sv_aim = {
CF_SERVER |
CF_ARCHIVE,
"sv_aim",
"2",
"maximum cosine angle for quake's vertical autoaim, a value above 1 completely disables the autoaim, quake used 0.93"};
57cvar_t sv_airaccel_qw = {
CF_SERVER,
"sv_airaccel_qw",
"1",
"ratio of QW-style air control as opposed to simple acceleration; when < 0, the speed is clamped against the maximum allowed forward speed after the move"};
59cvar_t sv_airaccel_sideways_friction = {
CF_SERVER,
"sv_airaccel_sideways_friction",
"",
"anti-sideways movement stabilization (reduces speed gain when zigzagging); when < 0, only so much friction is applied that braking (by accelerating backwards) cannot be stronger"};
60cvar_t sv_airaccelerate = {
CF_SERVER,
"sv_airaccelerate",
"-1",
"rate at which a player accelerates to sv_maxairspeed while in the air, if less than 0 the sv_accelerate variable is used instead"};
74cvar_t sv_areagrid_link_SOLID_NOT = {
CF_SERVER |
CF_NOTIFY,
"sv_areagrid_link_SOLID_NOT",
"1",
"set to 0 to prevent SOLID_NOT entities from being linked to the area grid, and unlink any that are already linked (in the code paths that would otherwise link them), for better performance"};
76cvar_t sv_checkforpacketsduringsleep = {
CF_SERVER,
"sv_checkforpacketsduringsleep",
"0",
"uses select() function to wait between frames which can be interrupted by packets being received, instead of Sleep()/usleep()/SDL_Sleep() functions which do not check for packets"};
77cvar_t sv_clmovement_enable = {
CF_SERVER,
"sv_clmovement_enable",
"1",
"whether to allow clients to use cl_movement prediction, which can cause choppy movement on the server which may annoy other players"};
78cvar_t sv_clmovement_minping = {
CF_SERVER,
"sv_clmovement_minping",
"0",
"if client ping is below this time in milliseconds, then their ability to use cl_movement prediction is disabled for a while (as they don't need it)"};
79cvar_t sv_clmovement_minping_disabletime = {
CF_SERVER,
"sv_clmovement_minping_disabletime",
"1000",
"when client falls below minping, disable their prediction for this many milliseconds (should be at least 1000 or else their prediction may turn on/off frequently)"};
81cvar_t sv_cullentities_nevercullbmodels = {
CF_SERVER,
"sv_cullentities_nevercullbmodels",
"0",
"if enabled the clients are always notified of moving doors and lifts and other submodels of world (warning: eats a lot of network bandwidth on some levels!)"};
84cvar_t sv_cullentities_trace = {
CF_SERVER,
"sv_cullentities_trace",
"0",
"somewhat slow but very tight culling of hidden entities, minimizes network traffic and makes wallhack cheats useless"};
94cvar_t sv_cullentities_trace_samples_extra = {
CF_SERVER,
"sv_cullentities_trace_samples_extra",
"2",
"number of samples to test for entity culling when the entity affects its surroundings by e.g. dlight (also applies to portal camera eyes even if sv_cullentities_trace is 0)"};
100cvar_t sv_edgefriction = {
CF_SERVER,
"edgefriction",
"1",
"how much you slow down when nearing a ledge you might fall off, multiplier of sv_friction (Quake used 2, QuakeWorld used 1 due to a bug in physics code)"};
101cvar_t sv_entpatch = {
CF_SERVER,
"sv_entpatch",
"1",
"enables loading of .ent files to override entities in the bsp (for example Threewave CTF server pack contains .ent patch files enabling play of CTF on id1 maps)"};
106cvar_t sv_gameplayfix_delayprojectiles = {
CF_SERVER,
"sv_gameplayfix_delayprojectiles",
"1",
"causes entities to not move on the same frame they are spawned, meaning that projectiles wait until the next frame to perform their first move, giving proper interpolation and rocket trails, but making weapons harder to use at low framerates"};
110cvar_t sv_gameplayfix_findradiusdistancetobox = {
CF_SERVER,
"sv_gameplayfix_findradiusdistancetobox",
"1",
"causes findradius to check the distance to the corner of a box rather than the center of the box, makes findradius detect bmodels such as very large doors that would otherwise be unaffected by splash damage"};
113cvar_t sv_gameplayfix_impactbeforeonground = {
CF_SERVER,
"sv_gameplayfix_impactbeforeonground",
"0",
"enables a bug from old DP versions in which entity .touch functions are called before FL_ONGROUND is set when a collision is detected in SV_FlyMove() (used by MOVETYPE_WALK and MOVETYPE_STEP), Quake 1.5 and Combat+ mods require this, it breaks id1 fiends"};
115cvar_t sv_gameplayfix_noairborncorpse = {
CF_SERVER,
"sv_gameplayfix_noairborncorpse",
"1",
"causes entities (corpses, items, etc) sitting ontop of moving entities (players) to fall when the moving entity (player) is no longer supporting them"};
117cvar_t sv_gameplayfix_nudgeoutofsolid = {
CF_SERVER,
"sv_gameplayfix_nudgeoutofsolid",
"0",
"attempts to fix physics errors where an object ended up in solid for some reason, smarter than sv_gameplayfix_unstick* except on Q1BSP with mod_q1bsp_polygoncollisions disabled (there it falls back to the unsticking method)"};
121cvar_t sv_gameplayfix_setmodelrealbox = {
CF_SERVER,
"sv_gameplayfix_setmodelrealbox",
"1",
"fixes a bug in Quake that made setmodel always set the entity box to ('-16 -16 -16', '16 16 16') rather than properly checking the model box, breaks some poorly coded mods"};
122cvar_t sv_gameplayfix_slidemoveprojectiles = {
CF_SERVER,
"sv_gameplayfix_slidemoveprojectiles",
"1",
"allows MOVETYPE_FLY/FLYMISSILE/TOSS/BOUNCE/BOUNCEMISSILE entities to finish their move in a frame even if they hit something, fixes 'gravity accumulation' bug for grenades on steep slopes"};
123cvar_t sv_gameplayfix_stepdown = {
CF_SERVER,
"sv_gameplayfix_stepdown",
"0",
"attempts to step down stairs, not just up them (prevents the familiar thud..thud..thud.. when running down stairs and slopes)"};
126cvar_t sv_gameplayfix_swiminbmodels = {
CF_SERVER,
"sv_gameplayfix_swiminbmodels",
"1",
"causes pointcontents (used to determine if you are in a liquid) to check bmodel entities as well as the world model, so you can swim around in (possibly moving) water bmodel entities"};
128cvar_t sv_gameplayfix_downtracesupportsongroundflag = {
CF_SERVER,
"sv_gameplayfix_downtracesupportsongroundflag",
"1",
"prevents very short moves from clearing onground (which may make the player stick to the floor at high netfps), fixes groundentity not being set when walking onto a mover with sv_gameplayfix_nogravityonground"};
129cvar_t sv_gameplayfix_q1bsptracelinereportstexture = {
CF_SERVER,
"sv_gameplayfix_q1bsptracelinereportstexture",
"1",
"enables mods to get accurate trace_texture results on q1bsp by using a surface-hitting traceline implementation rather than the standard solidbsp method, q3bsp always reports texture accurately"};
131cvar_t sv_gameplayfix_unstickentities = {
CF_SERVER,
"sv_gameplayfix_unstickentities",
"0",
"hack to check if entities are crossing world collision hull and try to move them to the right position. Quake didn't do this so maps shouldn't depend on it."};
132cvar_t sv_gameplayfix_fixedcheckwatertransition = {
CF_SERVER,
"sv_gameplayfix_fixedcheckwatertransition",
"1",
"fix two very stupid bugs in SV_CheckWaterTransition when watertype is CONTENTS_EMPTY (the bugs causes waterlevel to be 1 on first frame, -1 on second frame - the fix makes it 0 on both frames)"};
139cvar_t sv_legacy_bbox_expand = {
CF_SERVER,
"sv_legacy_bbox_expand",
"1",
"before linking an entity to the area grid, decrease its mins and increase its maxs by '1 1 1', or '15 15 1' if it has flag FL_ITEM (this is the Quake/QuakeWorld behaviour); disable to make SVQC bboxes consistent with CSQC which never does this expansion"};
140cvar_t sv_maxairspeed = {
CF_SERVER,
"sv_maxairspeed",
"30",
"maximum speed a player can accelerate to when airborn (note that it is possible to completely stop by moving the opposite direction)"};
148cvar_t sv_qcstats = {
CF_SERVER,
"sv_qcstats",
"0",
"Disables engine sending of stats 220 and above, for use by certain games such as Xonotic, NOTE: it's strongly recommended that SVQC send correct STAT_MOVEVARS_TICRATE and STAT_MOVEVARS_TIMESCALE"};
149cvar_t sv_random_seed = {
CF_SERVER,
"sv_random_seed",
"",
"random seed; when set, on every map start this random seed is used to initialize the random number generator. Don't touch it unless for benchmarking or debugging"};
151cvar_t sv_sound_land = {
CF_SERVER,
"sv_sound_land",
"demon/dland2.wav",
"sound to play when MOVETYPE_STEP entity hits the ground at high speed (empty cvar disables the sound)"};
152cvar_t sv_sound_watersplash = {
CF_SERVER,
"sv_sound_watersplash",
"misc/h2ohit1.wav",
"sound to play when MOVETYPE_FLY/TOSS/BOUNCE/STEP entity enters or leaves water (empty cvar disables the sound)"};
156cvar_t sv_wateraccelerate = {
CF_SERVER,
"sv_wateraccelerate",
"-1",
"rate at which a player accelerates to sv_maxspeed while in water, if less than 0 the sv_accelerate variable is used instead"};
159cvar_t sv_warsowbunny_accel = {
CF_SERVER,
"sv_warsowbunny_accel",
"0.1585",
"how fast you accelerate until after reaching sv_maxspeed (it gets harder as you near sv_warsowbunny_topspeed)"};
166cvar_t sys_ticrate = {
CF_SERVER |
CF_ARCHIVE,
"sys_ticrate",
"0.01388889",
"how long a server frame is in seconds, 0.05 is 20fps server rate, 0.1 is 10fps (can not be set higher than 0.1), 0 runs as many server frames as possible (makes games against bots a little smoother, overwhelms network players), 1/72 matches QuakeWorld physics"};
170cvar_t sv_threaded = {
CF_SERVER,
"sv_threaded",
"0",
"enables a separate thread for server code, improving performance, especially when hosting a game while playing, EXPERIMENTAL, may be crashy"};
172cvar_t teamplay = {
CF_SERVER |
CF_NOTIFY,
"teamplay",
"0",
"teamplay mode, values depend on mod but typically 0 = no teams, 1 = no team damage no self damage, 2 = team damage and self damage, some mods support 3 = no team damage but can damage self"};
187cvar_t temp1 = {
CF_SERVER,
"temp1",
"0",
"general cvar for mods to use, in stock id1 this selects which death animation to use on players (0 = random death, other values select specific death scenes)"};
211cvar_t sv_autodemo_perclient = {
CF_SERVER |
CF_ARCHIVE,
"sv_autodemo_perclient",
"0",
"set to 1 to enable autorecorded per-client demos (they'll start to record at the beginning of a match); set it to 2 to also record client->server packets (for debugging)"};
212cvar_t sv_autodemo_perclient_nameformat = {
CF_SERVER |
CF_ARCHIVE,
"sv_autodemo_perclient_nameformat",
"sv_autodemos/%Y-%m-%d_%H-%M",
"The format of the sv_autodemo_perclient filename, followed by the map name, the client number and the IP address + port number, separated by underscores (the date is encoded using strftime escapes)" };
215cvar_t halflifebsp = {
CF_SERVER,
"halflifebsp",
"0",
"indicates the current map is hlbsp format (useful to know because of different bounding box sizes)"};
216cvar_t sv_mapformat_is_quake2 = {
CF_SERVER,
"sv_mapformat_is_quake2",
"0",
"indicates the current map is q2bsp format (useful to know because of different entity behaviors, .frame on submodels and other things)"};
256 "TE_TEI_BIGEXPLOSION",
278#define SV_REQFIELDS (sizeof(sv_reqfields) / sizeof(prvm_required_field_t))
282#define PRVM_DECLARE_serverglobalfloat(x)
283#define PRVM_DECLARE_serverglobalvector(x)
284#define PRVM_DECLARE_serverglobalstring(x)
285#define PRVM_DECLARE_serverglobaledict(x)
286#define PRVM_DECLARE_serverglobalfunction(x)
287#define PRVM_DECLARE_clientglobalfloat(x)
288#define PRVM_DECLARE_clientglobalvector(x)
289#define PRVM_DECLARE_clientglobalstring(x)
290#define PRVM_DECLARE_clientglobaledict(x)
291#define PRVM_DECLARE_clientglobalfunction(x)
292#define PRVM_DECLARE_menuglobalfloat(x)
293#define PRVM_DECLARE_menuglobalvector(x)
294#define PRVM_DECLARE_menuglobalstring(x)
295#define PRVM_DECLARE_menuglobaledict(x)
296#define PRVM_DECLARE_menuglobalfunction(x)
297#define PRVM_DECLARE_serverfieldfloat(x) {ev_float, #x},
298#define PRVM_DECLARE_serverfieldvector(x) {ev_vector, #x},
299#define PRVM_DECLARE_serverfieldstring(x) {ev_string, #x},
300#define PRVM_DECLARE_serverfieldedict(x) {ev_entity, #x},
301#define PRVM_DECLARE_serverfieldfunction(x) {ev_function, #x},
302#define PRVM_DECLARE_clientfieldfloat(x)
303#define PRVM_DECLARE_clientfieldvector(x)
304#define PRVM_DECLARE_clientfieldstring(x)
305#define PRVM_DECLARE_clientfieldedict(x)
306#define PRVM_DECLARE_clientfieldfunction(x)
307#define PRVM_DECLARE_menufieldfloat(x)
308#define PRVM_DECLARE_menufieldvector(x)
309#define PRVM_DECLARE_menufieldstring(x)
310#define PRVM_DECLARE_menufieldedict(x)
311#define PRVM_DECLARE_menufieldfunction(x)
312#define PRVM_DECLARE_serverfunction(x)
313#define PRVM_DECLARE_clientfunction(x)
314#define PRVM_DECLARE_menufunction(x)
315#define PRVM_DECLARE_field(x)
316#define PRVM_DECLARE_global(x)
317#define PRVM_DECLARE_function(x)
319#undef PRVM_DECLARE_serverglobalfloat
320#undef PRVM_DECLARE_serverglobalvector
321#undef PRVM_DECLARE_serverglobalstring
322#undef PRVM_DECLARE_serverglobaledict
323#undef PRVM_DECLARE_serverglobalfunction
324#undef PRVM_DECLARE_clientglobalfloat
325#undef PRVM_DECLARE_clientglobalvector
326#undef PRVM_DECLARE_clientglobalstring
327#undef PRVM_DECLARE_clientglobaledict
328#undef PRVM_DECLARE_clientglobalfunction
329#undef PRVM_DECLARE_menuglobalfloat
330#undef PRVM_DECLARE_menuglobalvector
331#undef PRVM_DECLARE_menuglobalstring
332#undef PRVM_DECLARE_menuglobaledict
333#undef PRVM_DECLARE_menuglobalfunction
334#undef PRVM_DECLARE_serverfieldfloat
335#undef PRVM_DECLARE_serverfieldvector
336#undef PRVM_DECLARE_serverfieldstring
337#undef PRVM_DECLARE_serverfieldedict
338#undef PRVM_DECLARE_serverfieldfunction
339#undef PRVM_DECLARE_clientfieldfloat
340#undef PRVM_DECLARE_clientfieldvector
341#undef PRVM_DECLARE_clientfieldstring
342#undef PRVM_DECLARE_clientfieldedict
343#undef PRVM_DECLARE_clientfieldfunction
344#undef PRVM_DECLARE_menufieldfloat
345#undef PRVM_DECLARE_menufieldvector
346#undef PRVM_DECLARE_menufieldstring
347#undef PRVM_DECLARE_menufieldedict
348#undef PRVM_DECLARE_menufieldfunction
349#undef PRVM_DECLARE_serverfunction
350#undef PRVM_DECLARE_clientfunction
351#undef PRVM_DECLARE_menufunction
352#undef PRVM_DECLARE_field
353#undef PRVM_DECLARE_global
354#undef PRVM_DECLARE_function
357#define SV_REQGLOBALS (sizeof(sv_reqglobals) / sizeof(prvm_required_field_t))
361#define PRVM_DECLARE_serverglobalfloat(x) {ev_float, #x},
362#define PRVM_DECLARE_serverglobalvector(x) {ev_vector, #x},
363#define PRVM_DECLARE_serverglobalstring(x) {ev_string, #x},
364#define PRVM_DECLARE_serverglobaledict(x) {ev_entity, #x},
365#define PRVM_DECLARE_serverglobalfunction(x) {ev_function, #x},
366#define PRVM_DECLARE_clientglobalfloat(x)
367#define PRVM_DECLARE_clientglobalvector(x)
368#define PRVM_DECLARE_clientglobalstring(x)
369#define PRVM_DECLARE_clientglobaledict(x)
370#define PRVM_DECLARE_clientglobalfunction(x)
371#define PRVM_DECLARE_menuglobalfloat(x)
372#define PRVM_DECLARE_menuglobalvector(x)
373#define PRVM_DECLARE_menuglobalstring(x)
374#define PRVM_DECLARE_menuglobaledict(x)
375#define PRVM_DECLARE_menuglobalfunction(x)
376#define PRVM_DECLARE_serverfieldfloat(x)
377#define PRVM_DECLARE_serverfieldvector(x)
378#define PRVM_DECLARE_serverfieldstring(x)
379#define PRVM_DECLARE_serverfieldedict(x)
380#define PRVM_DECLARE_serverfieldfunction(x)
381#define PRVM_DECLARE_clientfieldfloat(x)
382#define PRVM_DECLARE_clientfieldvector(x)
383#define PRVM_DECLARE_clientfieldstring(x)
384#define PRVM_DECLARE_clientfieldedict(x)
385#define PRVM_DECLARE_clientfieldfunction(x)
386#define PRVM_DECLARE_menufieldfloat(x)
387#define PRVM_DECLARE_menufieldvector(x)
388#define PRVM_DECLARE_menufieldstring(x)
389#define PRVM_DECLARE_menufieldedict(x)
390#define PRVM_DECLARE_menufieldfunction(x)
391#define PRVM_DECLARE_serverfunction(x)
392#define PRVM_DECLARE_clientfunction(x)
393#define PRVM_DECLARE_menufunction(x)
394#define PRVM_DECLARE_field(x)
395#define PRVM_DECLARE_global(x)
396#define PRVM_DECLARE_function(x)
398#undef PRVM_DECLARE_serverglobalfloat
399#undef PRVM_DECLARE_serverglobalvector
400#undef PRVM_DECLARE_serverglobalstring
401#undef PRVM_DECLARE_serverglobaledict
402#undef PRVM_DECLARE_serverglobalfunction
403#undef PRVM_DECLARE_clientglobalfloat
404#undef PRVM_DECLARE_clientglobalvector
405#undef PRVM_DECLARE_clientglobalstring
406#undef PRVM_DECLARE_clientglobaledict
407#undef PRVM_DECLARE_clientglobalfunction
408#undef PRVM_DECLARE_menuglobalfloat
409#undef PRVM_DECLARE_menuglobalvector
410#undef PRVM_DECLARE_menuglobalstring
411#undef PRVM_DECLARE_menuglobaledict
412#undef PRVM_DECLARE_menuglobalfunction
413#undef PRVM_DECLARE_serverfieldfloat
414#undef PRVM_DECLARE_serverfieldvector
415#undef PRVM_DECLARE_serverfieldstring
416#undef PRVM_DECLARE_serverfieldedict
417#undef PRVM_DECLARE_serverfieldfunction
418#undef PRVM_DECLARE_clientfieldfloat
419#undef PRVM_DECLARE_clientfieldvector
420#undef PRVM_DECLARE_clientfieldstring
421#undef PRVM_DECLARE_clientfieldedict
422#undef PRVM_DECLARE_clientfieldfunction
423#undef PRVM_DECLARE_menufieldfloat
424#undef PRVM_DECLARE_menufieldvector
425#undef PRVM_DECLARE_menufieldstring
426#undef PRVM_DECLARE_menufieldedict
427#undef PRVM_DECLARE_menufieldfunction
428#undef PRVM_DECLARE_serverfunction
429#undef PRVM_DECLARE_clientfunction
430#undef PRVM_DECLARE_menufunction
431#undef PRVM_DECLARE_field
432#undef PRVM_DECLARE_global
433#undef PRVM_DECLARE_function
467 Con_Printf (
"Only one of -dedicated or -listen can be specified\n");
778 memset(client->
stats, 0,
sizeof(client->
stats));
815 char timestring[128];
820 for(j = 0; ipaddress[j]; ++j)
821 if(!isalnum(ipaddress[j]))
824 dpsnprintf(demofile,
sizeof(demofile),
"%s_%s_%d_%s.dem", timestring,
847 sb.
data = (
unsigned char *)
buf;
914 client->
begun =
false;
918 memset(&client->
cmd, 0,
sizeof(client->
cmd));
948 memcpy(backupparms, client->
spawn_parms,
sizeof(backupparms));
949 memset(client, 0,
sizeof(*client));
950 memcpy(client->
spawn_parms, backupparms,
sizeof(backupparms));
953 memset(client, 0,
sizeof(*client));
961 Con_Printf(
"%s connection to %s has been established: client is %s@%s%.*s, I am %.*s@%s%.*s\n",
977 client->
begun =
false;
985 client->
rate = 1000000000;
1024 char reason[512] =
"";
1030 va_start(argptr, fmt);
1052 unsigned char bufdata[520];
1054 memset(&
buf, 0,
sizeof(
buf));
1056 buf.maxsize =
sizeof(bufdata);
1154 Con_Printf(
"Loaded game, everyone rejoined - unpausing\n");
1199 for(
i = 2;
i < argc; ++
i)
1211 const char *whichpack, *whichpack2, *extension;
1262 extensions[0] =
'\0';
1265 dp_strlcat(extensions,
" deflate",
sizeof(extensions));
1285 SV_ClientPrintf(
"Download rejected: server does not have the file \"%s\"\nYou may need to separately download or purchase the data archives for this game/mod to get this file\n",
host_client->
download_name);
1295 SV_ClientPrintf(
"Download rejected: file \"%s\" is part of registered Quake(r)\nYou must purchase Quake(r) from id Software or a retailer to get this file\nPlease go to http://www.idsoftware.com/games/quake/quake/index.php?game_section=buy\n",
host_client->
download_name);
1306 SV_ClientPrintf(
"Download rejected: file \"%s\" is in an archive (\"%s\")\nYou must separately download or purchase the data archives for this game/mod to get this file\n",
host_client->
download_name, whichpack);
1314 if (!strcasecmp(extension,
"cfg"))
1316 SV_ClientPrintf(
"Download rejected: file \"%s\" is a .cfg file which is forbidden for security reasons\nYou must separately download or purchase the data archives for this game/mod to get this file\n",
host_client->
download_name);
1326 SV_ClientPrintf(
"Download rejected: file \"%s\" is in the dlcache/ directory which is forbidden for security reasons\nYou must separately download or purchase the data archives for this game/mod to get this file\n",
host_client->
download_name);
1334 if (!strcasecmp(extension,
"pak") || !strcasecmp(extension,
"pk3") || !strcasecmp(extension,
"dpk"))
1421 for (
i = 2;
i < limit;
i++)
1429 Con_Printf(
"SV_ModelIndex(\"%s\"): precache_model can only be done in spawn functions\n", filename);
1432 if (precachemode == 1)
1433 Con_Printf(
"SV_ModelIndex(\"%s\"): not precached (fix your code), precaching anyway\n", filename);
1458 Con_Printf(
"SV_ModelIndex(\"%s\"): not precached\n", filename);
1484 for (
i = 1;
i < limit;
i++)
1492 Con_Printf(
"SV_SoundIndex(\"%s\"): precache_sound can only be done in spawn functions\n", filename);
1495 if (precachemode == 1)
1496 Con_Printf(
"SV_SoundIndex(\"%s\"): not precached (fix your code), precaching anyway\n", filename);
1506 Con_Printf(
"SV_SoundIndex(\"%s\"): not precached\n", filename);
1524 int i, argc, linenumber, effectnameindex;
1527 unsigned char *filedata;
1529 const char *textstart;
1531 char argv[16][1024];
1539 for (filepass = 0;;filepass++)
1542 dpsnprintf(filename,
sizeof(filename),
"effectinfo.txt");
1543 else if (filepass == 1)
1550 textstart = (
const char *)filedata;
1553 for (linenumber = 1;;linenumber++)
1570 if (!strcmp(
argv[0],
"effect"))
1590 Con_Printf(
"%s:%i: too many effects!\n", filename, linenumber);
1602 return effectnameindex;
1616 if (!ed || ed->
free)
1665 if (svent->
priv.
server->baseline.modelindex & 0xFF00 || svent->
priv.
server->baseline.frame & 0xFF00)
1696 for (
i=0 ;
i<3 ;
i++)
1732 size_t deflated_size;
1745 Con_DPrintf(
"Deflated: %g%%\n", 100.0 - 100.0 * (deflated_size / (
float)progsize));
1749 Con_DPrintf(
"Cannot compress - need zlib for this. Using uncompressed progs only.\n");
1819 const char *canonicalname;
1824 dpsnprintf (modelname,
sizeof(modelname),
"maps/%s.bsp", map);
1828 dpsnprintf (modelname,
sizeof(modelname),
"maps/%s", map);
1837 if (modelname != canonicalname)
1838 dp_strlcpy(modelname, canonicalname,
sizeof(modelname));
1857 if (!worldmodel || !worldmodel->
TraceBox)
1916 memset (&
sv, 0,
sizeof(
sv));
1983 worldmodel->
used =
true;
2155 memset(&
sv, 0,
sizeof(
sv));
2337 prog->
name =
"server";
2523 return va(
buf, buflen,
"%.1f%% CPU, %.2f%% lost, offset avg %.1fms, max %.1fms, sdev %.1fms",
sv.
perf_cpuload * 100,
sv.
perf_lost * 100,
sv.
perf_offset_avg * 1000,
sv.
perf_offset_max * 1000,
sv.
perf_offset_sdev * 1000);
2529 static double sv_timer;
2532 qbool reporting =
false;
2600 if((sv_timer +=
time) < 0)
2619 int framecount, framelimit = 1;
2620 double advancetime, aborttime = 0;
2629 advancetime = sv_timer;
2642 advancetime =
min(advancetime, 0.1);
2667 for (framecount = 0; framecount < framelimit && sv_timer > 0; framecount++)
2669 sv_timer -= advancetime;
2681 SV_BroadcastPrintf(
CON_WARN "Server lag report: caught up %.1fms by running %d extra frames\n", advancetime * (framecount - 1) * 1000, framecount - 1);
2719 qbool playing =
false;
2720 double sv_timer = 0;
2721 double sv_deltarealtime, sv_oldrealtime, sv_realtime;
2731 sv_oldrealtime = sv_realtime;
2733 sv_deltarealtime = sv_realtime - sv_oldrealtime;
2734 if (sv_deltarealtime < 0 || sv_deltarealtime >= 1800) sv_deltarealtime = 0;
2736 sv_timer += sv_deltarealtime;
2794 advancetime =
min(sv_timer, 0.1);
2816 sv_timer -= advancetime;
void SCR_BeginLoadingPlaque(qbool startup)
void Cmd_AddCommand(unsigned flags, const char *cmd_name, xcommand_t function, const char *description)
called by the init functions of other parts of the program to register commands and functions to call...
cmd_state_t * cmd_local
command interpreter for local commands injected by SVQC, CSQC, MQC, server or client engine code uses...
#define CF_READONLY
cvar cannot be changed from the console or the command buffer, and is considered CF_PERSISTENT
#define CF_NOTIFY
cvar should trigger a chat notification to all connected clients when changed
#define CF_SERVER
cvar/command that only the server can change/execute
static int Cmd_Argc(cmd_state_t *cmd)
static const char * Cmd_Argv(cmd_state_t *cmd, int arg)
Cmd_Argv(cmd, ) will return an empty string (not a NULL) if arg > argc, so string operations are alwa...
#define CF_SERVER_FROM_CLIENT
command the client is allowed to execute on the server as a stringcmd
#define CF_CLIENT
cvar/command that only the client can change/execute
#define CF_ARCHIVE
cvar should have its set value saved to config.cfg and persist across sessions
void Collision_Cache_Reset(qbool resetlimits)
unsigned short CRC_Block(const unsigned char *data, size_t size)
void EntityFrame4_FreeDatabase(entityframe4_database_t *d)
entityframe4_database_t * EntityFrame4_AllocDatabase(mempool_t *pool)
entityframe_database_t * EntityFrame_AllocDatabase(mempool_t *mempool)
void EntityFrame_FreeDatabase(entityframe_database_t *d)
#define IS_NEXUIZ_DERIVED(g)
void MSG_WriteShort(sizebuf_t *sb, int c)
void MSG_WriteString(sizebuf_t *sb, const char *s)
void MSG_WriteLong(sizebuf_t *sb, int c)
void MSG_WriteCoord(sizebuf_t *sb, float f, protocolversion_t protocol)
void MSG_WriteByte(sizebuf_t *sb, int c)
void MSG_WriteAngle(sizebuf_t *sb, float f, protocolversion_t protocol)
void SZ_Clear(sizebuf_t *buf)
int dpvsnprintf(char *buffer, size_t buffersize, const char *format, va_list args)
Returns the number of printed characters, excluding the final '\0' or returns -1 if the buffer isn't ...
char com_token[MAX_INPUTLINE]
char * va(char *buf, size_t buflen, const char *format,...)
qbool COM_ParseToken_Simple(const char **datapointer, qbool returnnewline, qbool parsebackslash, qbool parsecomments)
int dpsnprintf(char *buffer, size_t buffersize, const char *format,...)
Returns the number of printed characters, excluding the final '\0' or returns -1 if the buffer isn't ...
@ PROTOCOL_DARKPLACES2
various changes
@ PROTOCOL_DARKPLACES4
various changes
@ PROTOCOL_NEHAHRABJP2
same as NEHAHRABJP but with 16bit soundindex
@ PROTOCOL_DARKPLACES3
uses EntityFrame4 entity snapshot encoder/decoder which is broken, this attempted to do partial snaps...
@ PROTOCOL_NEHAHRABJP
same as QUAKEDP but with 16bit modelindex
@ PROTOCOL_DARKPLACES5
uses EntityFrame5 entity snapshot encoder/decoder which is based on a Tribes networking article at ht...
@ PROTOCOL_QUAKEDP
darkplaces extended quake protocol (used by TomazQuake and others), backwards compatible as long as n...
@ PROTOCOL_QUAKE
quake (aka netquake/normalquake/nq) protocol
@ PROTOCOL_DARKPLACES8
added parting messages. WIP
@ PROTOCOL_NEHAHRABJP3
same as NEHAHRABJP2 but with some changes
@ PROTOCOL_NEHAHRAMOVIE
Nehahra movie protocol, a big nasty hack dating back to early days of the Quake Standards Group (but ...
@ PROTOCOL_DARKPLACES1
uses EntityFrame entity snapshot encoder/decoder which is a QuakeWorld-like entity snapshot delta com...
#define dp_strlcat(dst, src, dsize)
#define dp_strlcpy(dst, src, dsize)
void Con_Print(const char *msg)
Prints to all appropriate console targets, and adds timestamps.
void Con_DPrintf(const char *fmt,...)
A Con_Printf that only shows up if the "developer" cvar is set.
void Con_Printf(const char *fmt,...)
Prints to all appropriate console targets.
void Con_DPrint(const char *msg)
A Con_Print that only shows up if the "developer" cvar is set.
int crypto_keyfp_recommended_length
qbool MakeDownloadPacket(const char *filename, unsigned char *data, size_t len, int crc, int cnt, sizebuf_t *buf, int protocol)
vector trace_plane_normal
void Cvar_SetValueQuick(cvar_t *var, float value)
void Cvar_SetQuick(cvar_t *var, const char *value)
void Cvar_RegisterVariable(cvar_t *variable)
registers a cvar that already has the name, string, and optionally the archive elements set.
void Cvar_RegisterVirtual(cvar_t *variable, const char *name)
void Cvar_RegisterCallback(cvar_t *variable, void(*callback)(cvar_t *))
void Cvar_Callback(cvar_t *var)
char engineversion[128]
version string for the corner of the console, crash messages, status command, etc
string crypto_encryptmethod
const char * FS_FileExtension(const char *in)
qfile_t * FS_OpenVirtualFile(const char *filepath, qbool quiet)
qbool FS_WriteFile(const char *filename, const void *data, fs_offset_t len)
unsigned char * FS_LoadFile(const char *path, mempool_t *pool, qbool quiet, fs_offset_t *filesizepointer)
static int(ZEXPORT *qz_inflate)(z_stream *strm
void FS_StripExtension(const char *in, char *out, size_t size_out)
fs_offset_t FS_FileSize(qfile_t *file)
int FS_Close(qfile_t *file)
const char * FS_WhichPack(const char *filename)
unsigned char * FS_Deflate(const unsigned char *data, size_t size, size_t *deflated_size, int level, mempool_t *mempool)
int FS_CheckNastyPath(const char *path, qbool isgamedir)
const char * FS_FileExists(const char *filename)
Look for a file in the packages and in the filesystem Returns its canonical name (same case as used i...
qfile_t * FS_FileFromData(const unsigned char *data, const size_t size, qbool quiet)
qbool FS_IsRegisteredQuakePack(const char *name)
GLuint GLuint GLintptr offset
GLenum GLuint GLenum GLsizei const GLchar * buf
void Host_Error(const char *error,...)
int LHNETADDRESS_ToString(const lhnetaddress_t *vaddress, char *string, int stringbuffersize, int includeport)
Returns the number of bytes written to *string excluding the \0 terminator.
void Curl_SendRequirements(void)
void Curl_ClearRequirements(void)
void Curl_RequireFile(const char *filename)
#define bound(min, num, max)
#define VectorCopy(in, out)
model_t * Mod_ForName(const char *name, qbool crash, qbool checkdisk, const char *parentname)
void Mod_PurgeUnused(void)
static memexpandablearray_t models
model_t * Mod_FindName(const char *name, const char *parentname)
void Mod_FreeQ3Shaders(void)
void NetConn_Heartbeat(int priority)
void NetConn_Close(netconn_t *conn)
void NetConn_ServerFrame(void)
void NetConn_OpenServerPorts(int opennetports)
void NetConn_CloseServerPorts(void)
int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data, protocolversion_t protocol, int rate, int burstsize, qbool quakesignon_suppressreliables)
#define PROGHEADER_CRC_TENEBRAE
void PRVM_ED_LoadFromFile(prvm_prog_t *prog, const char *data)
#define PRVM_serveredictvector(ed, fieldname)
void PRVM_ED_ClearEdict(prvm_prog_t *prog, prvm_edict_t *e)
#define PRVM_serverglobaledict(fieldname)
void PRVM_Prog_Load(prvm_prog_t *prog, const char *filename, unsigned char *data, fs_offset_t size, void CheckRequiredFuncs(prvm_prog_t *prog, const char *filename), int numrequiredfields, prvm_required_field_t *required_field, int numrequiredglobals, prvm_required_field_t *required_global)
#define PRVM_ED_FindFieldOffset_FromStruct(st, field)
#define PRVM_EDICT_TO_PROG(e)
void PRVM_Prog_Init(prvm_prog_t *prog, struct cmd_state_s *cmd)
Initializing a vm: Call InitProg with the num Set up the fields marked with [INIT] in the prog struct...
int PRVM_SetEngineString(prvm_prog_t *prog, const char *s)
const char * vm_sv_extensions[]
client also uses this
#define PRVM_EDICT_NUM(n)
prvm_builtin_t vm_sv_builtins[]
const char * PRVM_GetString(prvm_prog_t *prog, int num)
void PRVM_Prog_Reset(prvm_prog_t *prog)
void SVVM_ExecuteProgram(prvm_prog_t *prog, func_t fnum, const char *errormessage)
#define PRVM_NUM_FOR_EDICT(e)
void SVVM_reset_cmd(prvm_prog_t *prog)
void VM_RemoveEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed)
void SVVM_init_cmd(prvm_prog_t *prog)
#define PRVM_serverglobalfloat(fieldname)
#define PRVM_serveredictfloat(ed, fieldname)
const int vm_sv_numbuiltins
#define PRVM_serverfunction(funcname)
#define PRVM_ED_FindGlobalOffset_FromStruct(st, field)
#define PRVM_serverglobalstring(fieldname)
#define PRVM_serveredictstring(ed, fieldname)
protocolversion_t Protocol_EnumForName(const char *s)
int Protocol_NumberForEnum(protocolversion_t p)
entity_state_t defaultstate
void Protocol_Names(char *buffer, size_t buffersize)
void EntityFrame5_FreeDatabase(entityframe5_database_t *d)
#define svc_spawnbaseline2
entityframe5_database_t * EntityFrame5_AllocDatabase(struct mempool_s *pool)
#define svc_spawnbaseline
#define MAX_OSPATH
max length of a filesystem pathname
#define MAX_EDICTS
max number of objects in game world at once (32768 protocol limit)
#define NET_MAXMESSAGE
max reliable packet size (sent as multiple fragments of MAX_PACKETFRAGMENT)
#define MAX_SOUNDS
max number of sounds loaded at once
#define MAX_QPATH
max length of a quake game pathname
#define MAX_PARTICLEEFFECTNAME
maximum number of unique names of particle effects (for particleeffectnum)
#define MAX_SCOREBOARD
max number of players in game at once (255 protocol limit)
#define MAX_MODELS
max number of models loaded at once (including during level transitions)
int current_skill
skill level for currently loaded level (in case the user changes the cvar while the level is running,...
void R_TimeReport(const char *desc)
#define SPAWNFLAG_NOT_EASY
void SV_BroadcastPrintf(const char *fmt,...) DP_FUNC_PRINTF(1)
void VM_CustomStats_Clear(void)
#define SV_LockThreadMutex()
void SV_InitOperatorCommands(void)
void SV_LinkEdict(prvm_edict_t *ent)
#define SV_UnlockThreadMutex()
#define SPAWNFLAG_NOT_DEATHMATCH
void SV_SendClientMessages(void)
#define SPAWNFLAG_NOT_MEDIUM
#define MOVETYPE_PUSH
no clip to world, push and crush
#define MOVETYPE_STEP
gravity, special edge handling, special step based client side interpolation
void SV_ClientCommands(const char *fmt,...) DP_FUNC_PRINTF(1)
#define SPAWNFLAG_NOT_HARD
#define NUM_CSQCENTITYDB_FRAMES
#define SOLID_BSP
bsp clip, touch on edge, block
void SV_ClientPrintf(const char *fmt,...) DP_FUNC_PRINTF(1)
void S_StopAllSounds(void)
qbool active
false = empty client slot
signed char movement_count[NETGRAPH_PACKETS]
qbool begun
false = don't send datagrams
char download_name[MAX_QPATH]
char weaponmodel[MAX_QPATH]
cache weaponmodel name lookups
prvm_vec_t spawn_parms[NUM_SPAWN_PARMS]
spawn parms are carried from level to level
entityframe_database_t * entitydatabase
csqcentityframedb_t csqcentityframehistory[NUM_CSQCENTITYDB_FRAMES]
unsigned int movesequence
qbool clientconnectcalled
false = don't do ClientDisconnect on drop
unsigned char csqcentityscope[MAX_EDICTS]
int rate
requested rate in bytes per second
int sendsignon
1 = send svc_serverinfo and advance to 2, 2 doesn't send, then advances to 0 (allowing unlimited send...
entityframe5_database_t * entitydatabase5
char old_name[MAX_SCOREBOARDNAME]
qbool prespawned
false = don't allow spawn
char name[MAX_SCOREBOARDNAME]
unsigned int csqcentitysendflags[MAX_EDICTS]
entityframe4_database_t * entitydatabase4
int latestframenum
latest received clc_ackframe (used to detect packet loss)
int csqcentityframehistory_next
int clientcamera
clientcamera (entity to use as camera)
netconn_t * netconnection
communications handle
int download_expectedposition
next position the client should ack
unsigned char unreliablemsg_data[NET_MAXMESSAGE]
qfile_t * sv_demo_file
demo recording
qbool spawned
false = don't allow begin
prvm_edict_t * edict
PRVM_EDICT_NUM(clientnum+1)
double connecttime
realtime this client connected
unsigned int movement_highestsequence_seen
float ping
LadyHavoc: can be used for prediction or whatever...
unsigned char statsdeltabits[(MAX_CL_STATS+7)/8]
command interpreter state - the tokenizing and execution of commands, as well as pointers to which cv...
char server_keyfp[FP64_SIZE+1]
char client_idfp[FP64_SIZE+1]
char client_keyfp[FP64_SIZE+1]
char server_idfp[FP64_SIZE+1]
double sleeptime
time spent sleeping after the last frame
double dirtytime
the main loop wall time for this frame, equal to Sys_DirtyTime() at the start of this host frame
void(* SV_Shutdown)(void)
unsigned int framecount
incremented every frame, never reset, >0 means Host_AbortCurrentFrame() is possible
double realtime
the accumulated mainloop time since application started (with filtering), without any slowmo or clamp...
struct host_static_t::@12 hook
qbool paused
global paused state, pauses both client and server
void(* TraceBox)(struct model_s *model, const struct frameblend_s *frameblend, const struct skeleton_s *skeleton, struct trace_s *trace, const vec3_t start, const vec3_t boxmins, const vec3_t boxmaxs, const vec3_t end, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask)
lhnetaddress_t peeraddress
sizebuf_t message
writing buffer to send to peer as the next reliable message can be added to at any time,...
union prvm_edict_t::@30 fields
qbool free
true if this edict is unused
union prvm_edict_t::@29 priv
struct edict_engineprivate_s * server
FIXME: this server pointer really means world, not server (it is used by both server qc and client qc...
void(* reset_cmd)(struct prvm_prog_s *prog)
[INIT] used by PRVM_ResetProg
int entityfields
number of vec_t fields in progs (some variables are 3)
prvm_builtin_t * builtins
qbool loaded
used to indicate whether a prog is loaded
int edictprivate_size
size of the engine private struct
const char * name
name of the prog, e.g. "Server", "Client" or "Menu" (used for text output)
void(* begin_increase_edicts)(struct prvm_prog_s *prog)
[INIT] used by PRVM_MEM_Increase_Edicts
void(* free_edict)(struct prvm_prog_s *prog, prvm_edict_t *ed)
[INIT] used by PRVM_ED_Free
void(* error_cmd)(const char *format,...) DP_FUNC_PRINTF(1) DP_FUNC_NORETURN
[INIT]
int num_edicts
copies of some vars that were former read from sv
void(* count_edicts)(struct prvm_prog_s *prog)
[INIT] used by PRVM_ED_Count_f
double inittime
system time when QC initialization code finished (any entity created before is not a leak)
int limit_edicts
used instead of the constant MAX_EDICTS
qbool allowworldwrites
allow writing to world entity fields, this is set by server init and cleared before first server fram...
unsigned flag
flag - used to store general flags like PRVM_GE_SELF, etc.
void(* init_edict)(struct prvm_prog_s *prog, prvm_edict_t *edict)
[INIT] used by PRVM_ED_ClearEdict
mempool_t * progs_mempool
all memory allocations related to this vm_prog (code, edicts, strings)
int max_edicts
number of edicts for which space has been (should be) allocated
void(* ExecuteProgram)(struct prvm_prog_s *prog, func_t fnum, const char *errormessage)
pointer to one of the *VM_ExecuteProgram functions
qbool(* load_edict)(struct prvm_prog_s *prog, prvm_edict_t *ent)
[INIT] used by PRVM_ED_LoadFromFile
void(* init_cmd)(struct prvm_prog_s *prog)
[INIT] used by PRVM_InitProg
union prvm_prog_t::@31 globals
const char ** extensionstring
void(* end_increase_edicts)(struct prvm_prog_s *prog)
[INIT]
int reserved_edicts
number of reserved edicts (allocated from 1)
unsigned char * csqc_progdata_deflated
struct client_s * clients
client slots
unsigned char * csqc_progdata
qbool changelevel_issued
cleared when at SV_SpawnServer
qbool volatile threadstop
int maxclients
number of svs.clients slots (updated by maxplayers command)
int serverflags
episode completion information
size_t csqc_progsize_deflated
unsigned char reliable_datagram_buf[NET_MAXMESSAGE]
char particleeffectname[MAX_PARTICLEEFFECTNAME][MAX_QPATH]
char worldbasename[MAX_QPATH]
char sound_precache[MAX_SOUNDS][MAX_QPATH]
world_t world
collision culling data
float perf_acc_offset_max
int perf_acc_offset_samples
qbool active
false if only a net client
char model_precache[MAX_MODELS][MAX_QPATH]
unsigned char signon_buf[NET_MAXMESSAGE]
LadyHavoc: increased signon message buffer from 8192.
char worldnamenoextension[MAX_QPATH]
server_state_t state
some actions are only valid during load
sizebuf_t reliable_datagram
qbool loadgame
handle connections specially
char csqc_progname[MAX_QPATH]
float perf_acc_offset_squared
struct model_s * worldmodel
qbool particleeffectnamesloaded
unsigned char csqcentityversion[MAX_EDICTS]
legacy support for self.Version based csqc entity networking
struct model_s * models[MAX_MODELS]
unsigned char datagram_buf[NET_MAXMESSAGE]
char worldname[MAX_QPATH]
protocolversion_t protocol
one of the PROTOCOL_ values
qbool allowoverflow
if false, do a Sys_Error
void SV_StopDemoRecording(client_t *client)
void SV_StartDemoRecording(client_t *client, const char *filename, int forcetrack)
void SV_WriteDemoMessage(client_t *client, sizebuf_t *sendbuffer, qbool clienttoserver)
cvar_t sv_autodemo_perclient_discardable
static void SV_AreaStats_f(cmd_state_t *cmd)
static void Host_Timescale_c(cvar_t *var)
cvar_t sv_cullentities_stats
void SV_StartThread(void)
cvar_t sv_gameplayfix_swiminbmodels
static void SVVM_end_increase_edicts(prvm_prog_t *prog)
static void SVVM_init_edict(prvm_prog_t *prog, prvm_edict_t *e)
int SV_SoundIndex(const char *s, int precachemode)
void SV_SaveSpawnparms(void)
cvar_t sv_gameplayfix_nudgeoutofsolid_separation
cvar_t sv_gameplayfix_delayprojectiles
cvar_t sv_gameplayfix_noairborncorpse_allowsuspendeditems
cvar_t sv_gameplayfix_droptofloorstartsolid_nudgetocorrect
cvar_t sv_allowdownloads_archive
cvar_t sv_gameplayfix_consistentplayerprethink
cvar_t sv_maxairstrafespeed
static void SV_VM_Shutdown(qbool prog_reset)
static void SV_Prepare_CSQC(void)
cvar_t sv_gameplayfix_easierwaterjump
cvar_t sv_airstopaccelerate
cvar_t sv_cullentities_trace_enlarge
cvar_t sv_clmovement_enable
cvar_t sv_areagrid_link_SOLID_NOT
cvar_t sv_gameplayfix_impactbeforeonground
static void SV_ServerOptions(void)
cvar_t sv_gameplayfix_unstickplayers
cvar_t net_connecttimeout
static void SV_Download_f(cmd_state_t *cmd)
cvar_t sv_cullentities_pvs
cvar_t sv_gameplayfix_nudgeoutofsolid
double SV_Frame(double time)
cvar_t sv_lagreporting_strict
cvar_t sv_cullentities_trace_prediction
void SV_DropClient(qbool leaving, const char *fmt,...)
cvar_t sv_freezenonclients
cvar_t sv_maxphysicsframesperserverframe
cvar_t sv_airspeedlimit_nonqw
cvar_t sv_airaccel_qw_stretchfactor
cvar_t sv_warsowbunny_turnaccel
void SV_SpawnServer(const char *map)
int SV_ModelIndex(const char *s, int precachemode)
cvar_t sv_gameplayfix_nogravityonground
cvar_t sv_wateraccelerate
cvar_t sv_init_frame_count
model_t * SV_GetModelByIndex(int modelindex)
cvar_t sv_gameplayfix_findradiusdistancetobox
cvar_t sv_mapformat_is_quake2
cvar_t sv_sendentities_csqc_randomize_order
static void SVVM_free_edict(prvm_prog_t *prog, prvm_edict_t *ed)
cvar_t sv_aircontrol_penalty
cvar_t sv_cullentities_trace_expand
void SV_SendServerinfo(client_t *client)
cvar_t sv_cullentities_trace_eyejitter
cvar_t sv_allowdownloads_dlcache
cvar_t sv_cullentities_nevercullbmodels
cvar_t sv_legacy_bbox_expand
prvm_required_field_t sv_reqfields[]
cvar_t sv_sound_watersplash
const char * SV_TimingReport(char *buf, size_t buflen)
for output in SV_Status_f
static void SV_VM_Setup(void)
cvar_t sv_gameplayfix_noairborncorpse
cvar_t sv_airstrafeaccelerate
cvar_t sv_gameplayfix_nosquashentities
cvar_t sv_gameplayfix_gravityunaffectedbyticrate
cvar_t sv_autodemo_perclient_nameformat
cvar_t sv_gameplayfix_q2airaccelerate
cvar_t sv_aircontrol_power
static const char * standardeffectnames[EFFECT_TOTAL]
cvar_t sv_warsowbunny_airforwardaccel
static void SV_CreateBaseline(void)
cvar_t sv_areagrid_mingridsize
cvar_t sv_gameplayfix_fixedcheckwatertransition
cvar_t sv_idealpitchscale
cvar_t sv_gameplayfix_slidemoveprojectiles
int SV_IsLocalServer(void)
cvar_t sv_airstrafeaccel_qw
cvar_t sv_gameplayfix_upwardvelocityclearsongroundflag
model_t * SV_GetModelFromEdict(prvm_edict_t *ed)
static qbool SVVM_load_edict(prvm_prog_t *prog, prvm_edict_t *ent)
server_static_t svs
persistant server info
cvar_t sv_writepicture_quality
cvar_t sv_cullentities_trace_samples
static void SV_CheckTimeouts(void)
cvar_t sv_gameplayfix_unstickentities
cvar_t sv_cullentities_trace
prvm_required_field_t sv_reqglobals[]
static void SVVM_begin_increase_edicts(prvm_prog_t *prog)
static void SVVM_count_edicts(prvm_prog_t *prog)
cvar_t sv_gameplayfix_droptofloorstartsolid
cvar_t sv_clmovement_inputtimeout
static int SV_ThreadFunc(void *voiddata)
cvar_t sv_worldnamenoextension
cvar_t sv_cullentities_trace_samples_extra
cvar_t sv_allowdownloads_config
static void SV_SaveEntFile_f(cmd_state_t *cmd)
cvar_t sv_checkforpacketsduringsleep
cvar_t sv_clmovement_minping
static void Download_CheckExtensions(cmd_state_t *cmd)
cvar_t sv_allowdownloads_inarchive
cvar_t sv_mapformat_is_quake3
cvar_t sv_gameplayfix_downtracesupportsongroundflag
cvar_t sv_lagreporting_always
int SV_ParticleEffectIndex(const char *name)
cvar_t sv_gameplayfix_q1bsptracelinereportstexture
cvar_t sv_warsowbunny_accel
cvar_t sv_clmovement_minping_disabletime
cvar_t sv_airaccel_sideways_friction
cvar_t sv_cullentities_trace_entityocclusion
cvar_t sv_gameplayfix_nostepmoveonsteepslopes
void SV_ConnectClient(int clientnum, netconn_t *netconnection)
cvar_t sv_warsowbunny_backtosideratio
cvar_t sv_gameplayfix_stepmultipletimes
cvar_t sv_autodemo_perclient
static void SV_StartDownload_f(cmd_state_t *cmd)
cvar_t sv_cullentities_trace_delay
cvar_t sv_playerphysicsqc
cvar_t sv_cullentities_trace_delay_players
cvar_t sv_cullentities_trace_samples_players
cvar_t sv_cullentities_trace_prediction_time
cvar_t sv_cullentities_trace_spectators
cvar_t sv_onlycsqcnetworking
cvar_t sv_warsowbunny_topspeed
cvar_t sv_gameplayfix_blowupfallenzombies
cvar_t sv_gameplayfix_grenadebouncedownslopes
cvar_t sv_gameplayfix_setmodelrealbox
cvar_t sv_gameplayfix_stepdown
cvar_t sv_gameplayfix_multiplethinksperframe
static void SV_CheckRequiredFuncs(prvm_prog_t *prog, const char *filename)
size_t Sys_TimeString(char buf[], size_t bufsize, const char *timeformat)
void Sys_MakeProcessNice(void)
double Sys_DirtyTime(void)
void Sys_MakeProcessMean(void)
double Sys_Sleep(double time)
called to yield for a little bit so as not to hog cpu when paused or debugging
int Sys_CheckParm(const char *parm)
#define Thread_DestroyMutex(m)
qbool Thread_HasThreads(void)
#define Thread_CreateMutex()
#define Thread_WaitThread(thread, retval)
#define Thread_CreateThread(fn, data)
void World_PrintAreaStats(world_t *world, const char *worldname)
void World_SetSize(world_t *world, const char *filename, const vec3_t mins, const vec3_t maxs, prvm_prog_t *prog)
void World_UnlinkAll(world_t *world)
unlinks all entities (used before reallocation of edicts)
void World_UnlinkEdict(prvm_edict_t *ent)
void World_Start(world_t *world)
void World_Physics_RemoveJointFromEntity(world_t *world, struct prvm_edict_s *ed)
void World_Physics_RemoveFromEntity(world_t *world, struct prvm_edict_s *ed)
#define Mem_Alloc(pool, size)
#define Mem_AllocPool(name, flags, parent)