Xonotic
csprogsdefs.qc
Go to the documentation of this file.
1 /*
2 ==============================================================================
3 
4  SOURCE FOR GLOBALVARS_T C STRUCTURE
5  MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
6 
7 ==============================================================================
8 */
9 
10 //
11 // system globals
12 //
13 entity self;
16 float time;
17 float frametime;
18 
19 float player_localentnum; //the entnum
20 float player_localnum; //the playernum
21 float maxclients; //a constant filled in by the engine. gah, portability eh?
22 
23 float clientcommandframe; //player movement
24 float servercommandframe; //clientframe echoed off the server
25 
26 string mapname;
27 
28 //
29 // global variables set by built in functions
30 //
31 vector v_forward, v_up, v_right; // set by makevectors()
32 
33 // set by traceline / tracebox
43 
44 //
45 // required prog functions
46 //
47 void() CSQC_Init;
48 void() CSQC_Shutdown;
49 float(float f, float t, float n) CSQC_InputEvent;
50 void(float w, float h) CSQC_UpdateView;
51 float(string s) CSQC_ConsoleCommand;
52 
53 //these fields are read and set by the default player physics
58 //retrieved from the current movement commands (read by player physics)
61 vector input_movevalues; //forwards, right, up.
62 float input_buttons; //attack, use, jump (default physics only uses jump)
63 
67 float movevar_spectatormaxspeed; //used by NOCLIP movetypes.
73 float movevar_entgravity; //the local player's gravity field. Is a multiple (1 is the normal value)
74 
75 //================================================
76 void end_sys_globals; // flag for structure dumping
77 //================================================
78 
79 /*
80 ==============================================================================
81 
82  SOURCE FOR ENTVARS_T C STRUCTURE
83  MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
84 
85 ==============================================================================
86 */
87 
88 //
89 // system fields (*** = do not set in prog code, maintained by C code)
90 //
91 .float modelindex; // *** model index in the precached list
92 .vector absmin, absmax; // *** origin + mins / maxs
93 
94 .float entnum; // *** the ent number as on the server
95 .float drawmask;
96 .void() predraw;
97 
98 .float movetype;
99 .float solid;
100 
101 .vector origin; // ***
106 
107 .string classname; // spawn function
108 .string model;
109 .float frame;
110 .float skin;
111 .float effects;
112 
113 .vector mins, maxs; // bounding box extents reletive to origin
114 .vector size; // maxs - mins
115 
116 .void() touch;
117 .void() use;
118 .void() think;
119 .void() blocked; // for doors or plats, called when can't push other
120 
121 .float nextthink;
122 
124 
125 .string netname;
126 
128 
129 .float flags;
130 
131 .float colormap;
132 
133 .entity owner; // who launched a missile
134 
135 //================================================
136 void end_sys_fields; // flag for structure dumping
137 //================================================
138 
139 /*
140 ==============================================================================
141 
142  OPTIONAL FIELDS AND GLOBALS
143 
144 ==============================================================================
145 */
146 
147 // Additional OPTIONAL Fields and Globals
148 float intermission; // indicates intermission state (0 = normal, 1 = scores, 2 = finale text)
149 
150 vector view_angles; // same as input_angles
151 vector view_punchangle; // from server
152 vector view_punchvector; // from server
153 
154 /*
155 ==============================================================================
156 
157  CONSTANT DEFINITIONS
158 
159 ==============================================================================
160 */
161 
162 const float MASK_ENGINE = 1;
163 const float MASK_ENGINEVIEWMODELS = 2;
164 const float MASK_NORMAL = 4;
165 
166 const float RF_VIEWMODEL = 1;
167 const float RF_EXTERNALMODEL = 2;
168 const float RF_DEPTHHACK = 4;
169 const float RF_ADDITIVE = 8;
170 const float RF_USEAXIS = 16;
171 
172 const float VF_MIN = 1; //(vector)
173 const float VF_MIN_X = 2; //(float)
174 const float VF_MIN_Y = 3; //(float)
175 const float VF_SIZE = 4; //(vector) (viewport size)
176 const float VF_SIZE_Y = 5; //(float)
177 const float VF_SIZE_X = 6; //(float)
178 const float VF_VIEWPORT = 7; //(vector, vector)
179 const float VF_FOV = 8; //(vector)
180 const float VF_FOVX = 9; //(float)
181 const float VF_FOVY = 10; //(float)
182 const float VF_ORIGIN = 11; //(vector)
183 const float VF_ORIGIN_X = 12; //(float)
184 const float VF_ORIGIN_Y = 13; //(float)
185 const float VF_ORIGIN_Z = 14; //(float)
186 const float VF_ANGLES = 15; //(vector)
187 const float VF_ANGLES_X = 16; //(float)
188 const float VF_ANGLES_Y = 17; //(float)
189 const float VF_ANGLES_Z = 18; //(float)
190 const float VF_DRAWWORLD = 19; //(float)
191 const float VF_DRAWENGINESBAR = 20; //(float)
192 const float VF_DRAWCROSSHAIR = 21; //(float)
193 
194 const float VF_CL_VIEWANGLES = 33; //(vector)
195 const float VF_CL_VIEWANGLES_X = 34; //(float)
196 const float VF_CL_VIEWANGLES_Y = 35; //(float)
197 const float VF_CL_VIEWANGLES_Z = 36; //(float)
198 
199 const float VF_PERSPECTIVE = 200;
200 
201 const float STAT_HEALTH = 0;
202 const float STAT_WEAPONMODEL = 2;
203 const float STAT_AMMO = 3;
204 const float STAT_ARMOR = 4;
205 const float STAT_WEAPONFRAME = 5;
206 const float STAT_SHELLS = 6;
207 const float STAT_NAILS = 7;
208 const float STAT_ROCKETS = 8;
209 const float STAT_CELLS = 9;
210 const float STAT_ACTIVEWEAPON = 10;
211 const float STAT_TOTALSECRETS = 11;
212 const float STAT_TOTALMONSTERS = 12;
213 const float STAT_SECRETS = 13;
214 const float STAT_MONSTERS = 14;
215 const float STAT_ITEMS = 15;
216 const float STAT_VIEWHEIGHT = 16;
217 
218 // Quake Sound Constants
219 const float CHAN_AUTO = 0;
220 const float CHAN_WEAPON = 1;
221 const float CHAN_VOICE = 2;
222 const float CHAN_ITEM = 3;
223 const float CHAN_BODY = 4;
224 
225 const float ATTN_NONE = 0;
226 const float ATTN_NORM = 1;
227 const float ATTN_IDLE = 2;
228 const float ATTN_STATIC = 3;
229 
230 // Frik File Constants
231 const float FILE_READ = 0;
232 const float FILE_APPEND = 1;
233 const float FILE_WRITE = 2;
234 
235 // Quake Point Contents
236 const float CONTENT_EMPTY = -1;
237 const float CONTENT_SOLID = -2;
238 const float CONTENT_WATER = -3;
239 const float CONTENT_SLIME = -4;
240 const float CONTENT_LAVA = -5;
241 const float CONTENT_SKY = -6;
242 
243 // Quake Solid Constants
244 const float SOLID_NOT = 0;
245 const float SOLID_TRIGGER = 1;
246 const float SOLID_BBOX = 2;
247 const float SOLID_SLIDEBOX = 3;
248 const float SOLID_BSP = 4;
249 const float SOLID_CORPSE = 5;
250 
251 // Quake Move Constants
252 const float MOVE_NORMAL = 0;
253 const float MOVE_NOMONSTERS = 1;
254 const float MOVE_MISSILE = 2;
255 
256 // Boolean Constants
257 const float true = 1;
258 const float false = 0;
259 const float TRUE = 1;
260 const float FALSE = 0;
261 
262 const float EXTRA_LOW = -99999999;
263 const float EXTRA_HIGH = 99999999;
264 
265 const vector VEC_1 = '1 1 1';
266 const vector VEC_0 = '0 0 0';
267 const vector VEC_M1 = '-1 -1 -1';
268 
269 const float M_PI = 3.14159265358979323846;
270 
271 vector VEC_HULL_MIN = '-16 -16 -24';
272 vector VEC_HULL_MAX = '16 16 32';
273 
274 // Quake Temporary Entity Constants
275 const float TE_SPIKE = 0;
276 const float TE_SUPERSPIKE = 1;
277 const float TE_GUNSHOT = 2;
278 const float TE_EXPLOSION = 3;
279 const float TE_TAREXPLOSION = 4;
280 const float TE_LIGHTNING1 = 5;
281 const float TE_LIGHTNING2 = 6;
282 const float TE_WIZSPIKE = 7;
283 const float TE_KNIGHTSPIKE = 8;
284 const float TE_LIGHTNING3 = 9;
285 const float TE_LAVASPLASH = 10;
286 const float TE_TELEPORT = 11;
287 const float TE_EXPLOSION2 = 12;
288  // Darkplaces Additions
289  const float TE_EXPLOSIONRGB = 53;
290  const float TE_GUNSHOTQUAD = 57;
291  const float TE_EXPLOSIONQUAD = 70;
292  const float TE_SPIKEQUAD = 58;
293  const float TE_SUPERSPIKEQUAD = 59;
294 
295 // PFlags for Dynamic Lights
296 const float PFLAGS_NOSHADOW = 1;
297 const float PFLAGS_CORONA = 2;
298 const float PFLAGS_FULLDYNAMIC = 128;
299 
300 const float EF_ADDITIVE = 32;
301 const float EF_BLUE = 64;
302 const float EF_FLAME = 1024;
303 const float EF_FULLBRIGHT = 512;
304 const float EF_NODEPTHTEST = 8192;
305 const float EF_NODRAW = 16;
306 const float EF_NOSHADOW = 4096;
307 const float EF_RED = 128;
308 const float EF_STARDUST = 2048;
309 const float EF_SELECTABLE = 16384;
310 
311 const float PFL_ONGROUND = 1;
312 const float PFL_CROUCH = 2;
313 const float PFL_DEAD = 4;
314 const float PFL_GIBBED = 8;
315 
316 // draw flags
317 const float DRAWFLAG_NORMAL = 0;
318 const float DRAWFLAG_ADDITIVE = 1;
319 const float DRAWFLAG_MODULATE = 2;
320 const float DRAWFLAG_2XMODULATE = 3;
321 const float DRAWFLAG_SCREEN = 4;
322 const float DRAWFLAG_MIPMAP = 0x100; // only for R_BeginPolygon
323 
324 /*
325 ==============================================================================
326 
327  BUILTIN DEFINITIONS
328  EXTENSIONS ARE NOT ADDED HERE, BUT BELOW!
329 
330 ==============================================================================
331 */
332 
333 void(vector ang) makevectors = #1;
334 void(entity e, vector o) setorigin = #2;
335 void(entity e, string m) setmodel = #3;
336 void(entity e, vector min, vector max) setsize = #4;
337 
338 void() break_to_debugger = #6;
339 float() random = #7;
340 void(entity e, float chan, string samp, float volume, float atten, ...) sound = #8;
341 vector(vector v) normalize = #9;
342 void(string e) error = #10;
343 void(string e) objerror = #11;
344 float(vector v) vlen = #12;
345 float(vector v) vectoyaw = #13;
346 entity() spawn = #14;
347 void(entity e) remove = #15;
348 float(vector v1, vector v2, float tryents, entity ignoreentity) traceline = #16;
349 
350 entity(entity start, .string fld, string match) find = #18;
351 void(string s) precache_sound = #19;
352 void(string s) precache_model = #20;
353 
354 entity(vector org, float rad) findradius = #22;
355 
356 void(string s, ...) dprint = #25;
357 string(float f) ftos = #26;
358 string(vector v) vtos = #27;
359 void() coredump = #28;
360 void() traceon = #29;
361 void() traceoff = #30;
362 void(entity e) eprint = #31;
363 // settrace optional
364 float(float yaw, float dist, float settrace) walkmove = #32;
365 
366 float() droptofloor = #34;
367 void(float style, string value) lightstyle = #35;
368 float(float v) rint = #36;
369 float(float v) floor = #37;
370 float(float v) ceil = #38;
371 
372 float(entity e) checkbottom = #40;
373 float(vector v) pointcontents = #41;
374 
375 float(float f) fabs = #43;
376 
377 float(string s) cvar = #45;
378 void(string s, ...) localcmd = #46;
379 entity(entity e) nextent = #47;
380 void(vector o, vector d, float color, float count) particle = #48;
381 void() ChangeYaw = #49;
382 
383 vector(vector v) vectoangles = #51;
384 vector(vector v, vector w) vectoangles2 = #51;
385 
386 float(float f) sin = #60;
387 float(float f) cos = #61;
388 float(float f) sqrt = #62;
389 void(entity ent) changepitch = #63;
390 void(entity e, entity ignore) tracetoss = #64;
391 string(entity ent) etos = #65;
392 
393 string(string s) precache_file = #68;
394 void(entity e) makestatic = #69;
395 
396 void(string var, string val) cvar_set = #72;
397 
398 void(vector pos, string samp, float vol, float atten) ambientsound = #74;
399 string(string s) precache_model2 = #75;
400 string(string s) precache_sound2 = #76;
401 string(string s) precache_file2 = #77;
402 
403 float(string s) stof = #81;
404 
405 
406 void(vector v1, vector min, vector max, vector v2, float nomonsters, entity forent) tracebox = #90;
407 vector() randomvec = #91;
408 vector(vector org) getlight = #92;
409 vector(vector org, float lpflags) getlight2 = #92;
413 const float LP_LIGHTMAP = 1;
414 const float LP_RTWORLD = 2;
415 const float LP_DYNLIGHT = 4;
416 const float LP_COMPLETE = 7;
417 
418 float(string name, string value) registercvar = #93;
419 float( float a, ... ) min = #94;
420 float( float b, ... ) max = #95;
421 float(float minimum, float val, float maximum) bound = #96;
422 float(float f, float f) pow = #97;
423 entity(entity start, .float fld, float match) findfloat = #98;
424 entity(entity start, .entity fld, entity match) findentity = #98;
425 float(string s) checkextension = #99;
426 // FrikaC and Telejano range #100-#199
427 
428 float(string filename, float mode) fopen = #110;
429 void(float fhandle) fclose = #111;
430 string(float fhandle) fgets = #112;
431 void(float fhandle, string s) fputs = #113;
432 float(string s) strlen = #114;
433 string(...) strcat = #115;
434 string(string s, float start, float length) substring = #116;
435 vector(string) stov = #117;
436 string(string s) strzone = #118;
437 void(string s) strunzone = #119;
438 
439 // FTEQW range #200-#299
440 
441 float(float number, float quantity) bitshift = #218;
442 
443 //float(string str, string sub[, float startpos]) strstrofs = #221;
444 float(string str, string sub, float startpos) strstrofs = #221;
445 float(string str, float ofs) str2chr = #222;
446 string(float c, ...) chr2str = #223;
447 string(float ccase, float calpha, float cnum, string s, ...) strconv = #224;
448 string(float chars, string s, ...) strpad = #225;
449 string(string info, string key, string value, ...) infoadd = #226;
450 string(string info, string key) infoget = #227;
451 float(string s1, string s2) strcmp = #228;
452 float(string s1, string s2, float len) strncmp = #228;
453 float(string s1, string s2) strcasecmp = #229;
454 float(string s1, string s2, float len) strncasecmp = #230;
455 
456 // CSQC range #300-#399
457 void() clearscene = #300;
458 void(float mask) addentities = #301;
459 void(entity ent) addentity = #302;
460 float(float property, ...) setproperty = #303;
461 float(float property) getproperty = #309;
462 vector(float property) getpropertyvec = #309;
463 void() renderscene = #304;
464 void(vector org, float radius, vector lightcolours) adddynamiclight = #305;
465 void(vector org, float radius, vector lightcolours, float style, string cubemapname, float pflags) adddynamiclight2 = #305;
466 //void(string texturename, float flag[, float is2d, float lines]) R_BeginPolygon = #306;
467 void(string texturename, float flag, ...) R_BeginPolygon = #306;
468 void(vector org, vector texcoords, vector rgb, float alpha) R_PolygonVertex = #307;
469 void() R_EndPolygon = #308;
470 vector (vector v) cs_unproject = #310;
471 vector (vector v) cs_project = #311;
472 
473 void(float width, vector pos1, vector pos2, vector rgb, float alpha, float flag) drawline = #315;
474 float(string name) iscachedpic = #316;
475 string(string name, ...) precache_pic = #317;
476 string(string name) precache_cubemap = #317;
477 vector(string picname) draw_getimagesize = #318;
478 void(string name) freepic = #319;
479 float(vector position, float character, vector scale, vector rgb, float alpha, float flag) drawcharacter = #320;
480 float(vector position, string text, vector scale, vector rgb, float alpha, float flag) drawstring = #321;
481 float(vector position, string pic, vector size, vector rgb, float alpha, float flag) drawpic = #322;
482 float(vector position, vector size, vector rgb, float alpha, float flag) drawfill = #323;
483 void(float x, float y, float width, float height) drawsetcliparea = #324;
484 void(void) drawresetcliparea = #325;
485 float(vector position, string text, vector scale, float alpha, float flag) drawcolorcodedstring = #326;
486 vector(vector position, string text, vector scale, vector rgb, float alpha, float flag) drawcolorcodedstring2 = #326;
487 
488 float(float stnum) getstatf = #330;
489 float(float stnum, ...) getstati = #331; // can optionally take first bit and count
490 string(float firststnum) getstats = #332;
491 void(entity e, float mdlindex) setmodelindex = #333;
492 string(float mdlindex) modelnameforindex = #334;
493 float(string effectname) particleeffectnum = #335;
494 void(entity ent, float effectnum, vector start, vector end) trailparticles = #336;
495 //void(float effectnum, vector origin [, vector dir, float count]) pointparticles = #337;
496 void(float effectnum, vector origin , vector dir, float count) pointparticles = #337;
497 void(string s, ...) centerprint = #338;
498 void(string s, ...) print = #339;
499 string(float keynum) keynumtostring = #340;
500 float(string keyname) stringtokeynum = #341;
501 string(float keynum) getkeybind = #342;
502 void(float usecursor) setcursormode = #343;
503 vector() getmousepos = #344;
504 float(float framenum) getinputstate = #345;
505 void(float sens) setsensitivityscale = #346;
506 void(...) runstandardplayerphysics = #347; // this may or may not take a player ent
507 string(float playernum, string keyname) getplayerkeyvalue = #348;
508 float() isdemo = #349;
509 float() isserver = #350;
510 void(vector origin, vector forward, vector right, vector up) SetListener = #351;
511 void(string cmdname) registercommand = #352;
512 float(entity ent) wasfreed = #353;
513 string(string key) serverkey = #354;
514 
515 // Use proper case; refer to the id1 Write* functions!
516 float() ReadByte = #360;
517 float() ReadChar = #361;
518 float() ReadShort = #362;
519 float() ReadLong = #363;
520 float() ReadCoord = #364;
521 float() ReadAngle = #365;
522 string() ReadString = #366;
523 float() ReadFloat = #367;
524 
525 // LadyHavoc's range #400-#499
526 void(entity from, entity to) copyentity = #400;
527 
528 entity(.string fld, string match) findchain = #402;
529 entity(.float fld, float match) findchainfloat = #403;
530 void(vector org, string modelname, float startframe, float endframe, float framerate) effect = #404;
531 void(vector org, vector velocity, float howmany) te_blood = #405;
532 void(vector mincorner, vector maxcorner, float explosionspeed, float howmany) te_bloodshower = #406;
533 void(vector org, vector color) te_explosionrgb = #407;
534 void(vector mincorner, vector maxcorner, vector vel, float howmany, float color, float gravityflag, float randomveljitter) te_particlecube = #408;
535 void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlerain = #409;
536 void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlesnow = #410;
537 void(vector org, vector vel, float howmany) te_spark = #411;
538 void(vector org) te_gunshotquad = #412;
539 void(vector org) te_spikequad = #413;
540 void(vector org) te_superspikequad = #414;
541 void(vector org) te_explosionquad = #415;
542 void(vector org) te_smallflash = #416;
543 void(vector org, float radius, float lifetime, vector color) te_customflash = #417;
544 void(vector org) te_gunshot = #418;
545 void(vector org) te_spike = #419;
546 void(vector org) te_superspike = #420;
547 void(vector org) te_explosion = #421;
548 void(vector org) te_tarexplosion = #422;
549 void(vector org) te_wizspike = #423;
550 void(vector org) te_knightspike = #424;
551 void(vector org) te_lavasplash = #425;
552 void(vector org) te_teleport = #426;
553 void(vector org, float colorstart, float colorlength) te_explosion2 = #427;
554 void(entity own, vector start, vector end) te_lightning1 = #428;
555 void(entity own, vector start, vector end) te_lightning2 = #429;
556 void(entity own, vector start, vector end) te_lightning3 = #430;
557 void(entity own, vector start, vector end) te_beam = #431;
558 void(vector dir) vectorvectors = #432;
559 void(vector org) te_plasmaburn = #433;
560 float(entity e, float s) getsurfacenumpoints = #434;
561 vector(entity e, float s, float n) getsurfacepoint = #435;
562 vector(entity e, float s) getsurfacenormal = #436;
563 string(entity e, float s) getsurfacetexture = #437;
564 float(entity e, vector p) getsurfacenearpoint = #438;
565 vector(entity e, float s, vector p) getsurfaceclippedpoint = #439;
566 
567 float(string s) tokenize = #441;
568 string(float n) argv = #442;
569 void(entity e, entity tagentity, string tagname) setattachment = #443;
570 float(string pattern, float caseinsensitive, float quiet) search_begin = #444;
571 void(float handle) search_end = #445;
572 float(float handle) search_getsize = #446;
573 string(float handle, float num) search_getfilename = #447;
574 string(string s) cvar_string = #448;
575 entity(entity start, .float fld, float match) findflags = #449;
576 entity(.float fld, float match) findchainflags = #450;
577 float(entity ent, string tagname) gettagindex = #451;
578 vector(entity ent, float tagindex) gettaginfo = #452;
579 
580 void(vector org, vector vel, float howmany) te_flamejet = #457;
581 
582 entity(float num) entitybyindex = #459;
583 float() buf_create = #460;
584 void(float bufhandle) buf_del = #461;
585 float(float bufhandle) buf_getsize = #462;
586 void(float bufhandle_from, float bufhandle_to) buf_copy = #463;
587 void(float bufhandle, float sortpower, float backward) buf_sort = #464;
588 string(float bufhandle, string glue) buf_implode = #465;
589 string(float bufhandle, float string_index) bufstr_get = #466;
590 void(float bufhandle, float string_index, string str) bufstr_set = #467;
591 float(float bufhandle, string str, float order) bufstr_add = #468;
592 void(float bufhandle, float string_index) bufstr_free = #469;
593 
594 float(float s) asin = #471;
595 float(float c) acos = #472;
596 float(float t) atan = #473;
597 float(float c, float s) atan2 = #474;
598 float(float a) tan = #475;
599 float(string s) strippedstringlen = #476;
600 float(string s) strlennocol = #476; // This is the correct name for the function, but not removing the strippedstringlen mapping.
601 string(string s) decolorizedstring = #477;
602 string(string s) strdecolorize = #477; // This is the correct name for the function, but not removing the decolorizedstring mapping.
603 string(float uselocaltime, string format, ...) strftime = #478;
604 string(string s) strtolower = #480;
605 string(string s) strtoupper = #481;
606 string(string s) cvar_defstring = #482;
607 void(vector origin, string sample, float volume, float attenuation) pointsound = #483;
608 string(string search, string replace, string subject) strreplace = #484;
609 string(string search, string replace, string subject) strireplace = #485;
610 vector(entity e, float s, float n, float a) getsurfacepointattribute = #486;
611 #ifdef SUPPORT_GECKO
612 float gecko_create( string name ) = #487;
613 void gecko_destroy( string name ) = #488;
614 void gecko_navigate( string name, string URI ) = #489;
615 float gecko_keyevent( string name, float key, float eventtype ) = #490;
616 void gecko_mousemove( string name, float x, float y ) = #491;
617 void gecko_resize( string name, float w, float h ) = #492;
618 vector gecko_get_texture_extent( string name ) = #493;
619 #else
620 
621 #endif
622 
623 /*
624 ==============================================================================
625 
626  EXTENSION DEFINITIONS
627 
628 ==============================================================================
629 */
630 
631 // DP_CSQC_SPAWNPARTICLE
632 // idea: VorteX
633 // darkplaces implementation: VorteX
634 // constant definitions:
635 // particle base behavior:
636 float PT_ALPHASTATIC = 1;
637 float PT_STATIC = 2;
638 float PT_SPARK = 3;
639 float PT_BEAM = 4;
640 float PT_RAIN = 5;
641 float PT_RAINDECAL = 6;
642 float PT_SNOW = 7;
643 float PT_BUBBLE = 8;
644 float PT_BLOOD = 9;
645 float PT_SMOKE = 10;
646 float PT_DECAL = 11;
647 float PT_ENTITYPARTICLE = 12;
648 // particle blendtypes:
649 float PBLEND_ALPHA = 0;
650 float PBLEND_ADD = 1;
651 float PBLEND_INVMOD = 2;
652 // particle orientation:
654 float PARTICLE_SPARK = 1;
656 float PARTICLE_BEAM = 3;
657 // global definitions:
658 float particle_type; // one of PT_
659 float particle_blendmode; // one of PBLEND_ values
660 float particle_orientation; // one of PARTICLE_ values
663 float particle_tex; // number of chunk in particlefont
675 float particle_qualityreduction; // enable culling of this particle when FPS is low
686 // builtin definitions:
687 float(float max_themes) initparticlespawner = #522; // check fields/globals for integration and enable particle spawner, return 1 is succeded, otherwise returns 0
688 void() resetparticle = #523; // reset p_ globals to default theme #0
689 void(float theme) particletheme = #524; // restore p_ globals from saved theme
690 float() particlethemesave = #525; // save p_ globals to new particletheme and return it's index
691 void(float theme) particlethemeupdate = #525; // save p_ globals to new particletheme and return it's index
692 void(float theme) particlethemefree = #526; // delete a particle theme
693 float(vector org, vector vel) spawnparticle = #527; // returns 0 when failed, 1 when spawned
694 float(vector org, vector vel, float theme) quickparticle = #527; // not reading globals, just theme, returns 0 when failed, 1 when spawned
695 float(vector org, vector vel, float delay, float collisiondelay) delayedparticle = #528;
696 float(vector org, vector vel, float delay, float collisiondelay, float theme) quickdelayedparticle = #528;
697 // description: this builtin provides an easy and flexible way to spawn particles,
698 // it is not created as replace for DP_SV_POINTPARTICLES but as an addition to it.
699 // With this extension you can create a specific particles like rain particles, or entity particles
700 // notes:
701 // 1) 0 is default particle template, it could be changed
702 // 2) color vectors could have value 0-255 of each component
703 // restrictions: max themes could be between 4 and 2048
704 // warning: you should call initparticlespawner() at very beginning BEFORE all other particle spawner functions
705 // function to query particle info
706 // don't remove this function as it protects all particle_ globals from FTEQCC/FRIKQCC non-referenced removal optimisation
707 void() printparticle =
708 {
709  // vortex: this also protects from 'non-referenced' optimisation on some compilers
710  print("PARTICLE:\n");
711  print(strcat(" type: ", ftos(particle_type), "\n"));
712  print(strcat(" blendmode: ", ftos(particle_blendmode), "\n"));
713  print(strcat(" orientation: ", ftos(particle_orientation), "\n"));
714  print(strcat(" color1: ", vtos(particle_color1), "\n"));
715  print(strcat(" color2: ", vtos(particle_color2), "\n"));
716  print(strcat(" tex: ", ftos(particle_tex), "\n"));
717  print(strcat(" size: ", ftos(particle_size), "\n"));
718  print(strcat(" sizeincrease: ", ftos(particle_sizeincrease), "\n"));
719  print(strcat(" alpha: ", ftos(particle_alpha), "\n"));
720  print(strcat(" alphafade: ", ftos(particle_alphafade), "\n"));
721  print(strcat(" time: ", ftos(particle_time), "\n"));
722  print(strcat(" gravity: ", ftos(particle_gravity), "\n"));
723  print(strcat(" bounce: ", ftos(particle_bounce), "\n"));
724  print(strcat(" airfriction: ", ftos(particle_airfriction), "\n"));
725  print(strcat(" liquidfriction: ", ftos(particle_liquidfriction), "\n"));
726  print(strcat(" originjitter: ", ftos(particle_originjitter), "\n"));
727  print(strcat(" velocityjitter: ", ftos(particle_velocityjitter), "\n"));
728  print(strcat(" qualityreduction: ", ftos(particle_qualityreduction), "\n"));
729  print(strcat(" stretch: ", ftos(particle_stretch), "\n"));
730  print(strcat(" staincolor1: ", vtos(particle_staincolor1), "\n"));
731  print(strcat(" staincolor2: ", vtos(particle_staincolor2), "\n"));
732  print(strcat(" staintex: ", ftos(particle_staintex), "\n"));
733  print(strcat(" stainalpha: ", ftos(particle_stainalpha), "\n"));
734  print(strcat(" stainsize: ", ftos(particle_stainsize), "\n"));
735  print(strcat(" delayspawn: ", ftos(particle_delayspawn), "\n"));
736  print(strcat(" delaycollision: ", ftos(particle_delaycollision), "\n"));
737  print(strcat(" angle: ", ftos(particle_angle), "\n"));
738  print(strcat(" spin: ", ftos(particle_spin), "\n"));
739 }
740 
741 // DP_CSQC_ENTITYTRANSPARENTSORTING_OFFSET
742 // idea: VorteX
743 // darkplaces implementation: VorteX
744 float RF_USETRANSPARENTOFFSET = 64; // enables transparent origin offsetting
745 // global definitions
746 float transparent_offset; // should be set before entity is added
747 // description: offset a model's meshes origin used for transparent sorting. Could be used to tweak sorting bugs on very large transparent entities or hacking transparent sorting order for certain objects
748 // example: transparent_offset = 1000000; // entity always appear on background of other transparents
749 // note: offset is done in view forward axis
750 
751 // DP_CSQC_ENTITYWORLDOBJECT
752 // idea: VorteX
753 // darkplaces implementation: VorteX
754 const float RF_WORLDOBJECT = 128;
755 // description: when renderflag is set, engine will not use culling methods for this entity, e.g. it will always be drawn
756 // useful for large outdoor objects (like asteroids on sky horizon or sky models)
757 
758 // DP_CSQC_ENTITYMODELLIGHT
759 // idea: VorteX
760 // darkplaces implementation: VorteX
761 const float RF_MODELLIGHT = 4096;
765 // description: allows CSQC to override directional model lightning on entity
766 
767 // DP_CSQC_SETPAUSE
768 // idea: VorteX
769 // darkplaces implementation: VorteX
770 // builtin definitions:
771 void(float ispaused) setpause = #531;
772 // description: provides ability to set pause in local games (similar to one set once console is activated)
773 // not stopping sound/cd track, useful for inventory screens, ingame menus with input etc.
774 
775 // DP_CSQC_QUERYRENDERENTITY
776 // idea: VorteX
777 // darkplaces implementation: VorteX
778 // constant definitions:
779 // render entity fields:
780 float E_ACTIVE = 0; // float 0/1
781 float E_ORIGIN = 1; // vector
782 float E_FORWARD = 2; // vector
783 float E_RIGHT = 3; // vector
784 float E_UP = 4; // vector
785 float E_SCALE = 5; // float
786 float E_ORIGINANDVECTORS = 6; // returns origin, + sets v_* vectors to orientation
787 float E_ALPHA = 7; // float
788 float E_COLORMOD = 8; // vector
789 float E_PANTSCOLOR = 9; // vector
790 float E_SHIRTCOLOR = 10; // vector
791 float E_SKIN = 11; // float
792 float E_MINS = 12; // vector
793 float E_MAXS = 13; // vector
794 float E_ABSMIN = 14; // vector
795 float E_ABSMAX = 15; // vector
796 float E_LIGHT = 16; // vector - modellight
797 // builtin definitions:
798 float(float entitynum, float fldnum) getentity = #504;
799 vector(float entitynum, float fldnum) getentityvec = #504;
800 // description: allows to query parms from render entities, especially useful with attaching CSQC ents to
801 // server entities networked and interpolated by engine (monsters, players), number of entity is it's SVQC number
802 // you can send it via tempentity/CSQC entity message. Note that this builtin doesnt know about entity removing/reallocating
803 // so it's meaning to work for short period of time, dont use it on missiles/grenades whatever will be removed next five seconds
804 
805 //DP_GFX_FONTS
806 //idea: Blub\0, divVerent
807 //darkplaces implementation: Blub\0
808 //console commands:
809 // loadfont fontname fontmaps size1 size2 ...
810 // A font can simply be gfx/tgafile (freetype fonts doent need extension),
811 // or alternatively you can specify multiple fonts and faces
812 // Like this: gfx/vera-sans:2,gfx/fallback:1
813 // to load face 2 of the font gfx/vera-sans and use face 1
814 // of gfx/fallback as fallback font
815 // You can also specify a list of font sizes to load, like this:
816 // loadfont console gfx/conchars,gfx/fallback 8 12 16 24 32
817 // In many cases, 8 12 16 24 32 should be a good choice.
818 // for slots see:
819 //constant definitions:
820 float drawfont; // set it before drawstring()/drawchar() calls
821 float FONT_DEFAULT = 0; // 'default'
822 float FONT_CONSOLE = 1; // 'console', REALLY should be fixed width (ls!)
823 float FONT_SBAR = 2; // 'sbar', used on hud, must be fixed width
824 float FONT_NOTIFY = 3; // 'notify', used on sprint/bprint
825 float FONT_CHAT = 4; // 'chat'
826 float FONT_CENTERPRINT = 5;// 'centerprint'
827 float FONT_INFOBAR = 6; // 'infobar'
828 float FONT_MENU = 7; // 'menu', should be fixed width
829 float FONT_USER0 = 8; // 'user0', userdefined fonts
830 float FONT_USER1 = 9; // 'user1', userdefined fonts
831 float FONT_USER2 = 10; // 'user2', userdefined fonts
832 float FONT_USER3 = 11; // 'user3', userdefined fonts
833 float FONT_USER4 = 12; // 'user4', userdefined fonts
834 float FONT_USER5 = 13; // 'user5', userdefined fonts
835 float FONT_USER6 = 14; // 'user6', userdefined fonts
836 float FONT_USER7 = 15; // 'user7' slot, userdefined fonts
837 //builtin definitions:
838 float findfont(string s) = #356; // find font by fontname and return it's index
839 float loadfont(string fontname, string fontmaps, string sizes, float slot, float fix_scale, float fix_voffset) = #357;
840 // loads font immediately so stringwidth() function can be used just after builtin call
841 // returns a font slotnum (which is used to set drawfont to)
842 // first 3 parms are identical to "loadfont" console command ones
843 // slot could be one of FONT_ constants or result of findfont() or -1 to not use it
844 // if slot is given, font will be loaded to this slotnum and fontname become new title for it
845 // this way you can rename user* fonts to something more usable
846 // fix_* parms let you fix badly made fonts by applying some transformations to them
847 // fix_scale : per-character center-oriented scale (doesn't change line height at all)
848 // fix_voffset : vertical offset for each character, it's a multiplier to character height
849 float stringwidth(string text, float allowColorCodes, vector size) = #327; // get a width of string with given font and char size
850 float stringwidth_menu(string text, float allowColorCodes, vector size) = #468; // in menu.dat it has different builtin #
851 //description: engine support for custom fonts in console, hud, qc etc.
852 // limits:
853 // max 128 chars for font name
854 // max 3 font fallbacks
855 // max 8 sizes per font
856 
857 //DP_GFX_FONTS_FREETYPE
858 //idea: Blub\0, divVerent
859 //darkplaces implementation: Blub\0
860 //cvar definitions:
861 // r_font_disable_freetype 0/1 : disable freetype fonts loading (uttetly disables freetype library initialization)
862 // r_font_antialias 0/1 : antialiasing when loading font
863 // r_font_hint 0/1/2/3 : hinting when loading font, 0 is no hinting, 1 light autohinting , 2 full autohinting, 3 full hinting
864 // r_font_postprocess_blur X : font outline blur amount
865 // r_font_postprocess_outline X : font outline width
866 // r_font_postprocess_shadow_x X : font outline shadow x shift amount, applied during outlining
867 // r_font_postprocess_shadow_y X : font outline shadow y shift amount, applied during outlining
868 // r_font_postprocess_shadow_z X : font outline shadow z shift amount, applied during blurring
869 //description: engine support for truetype/freetype fonts
870 //so .AFM+.PFB/.OTF/.TTF files could be stuffed as fontmaps in loadfont()
871 //(console command version will support them as well)
872 
873 //DP_CSQC_BINDMAPS
874 //idea: daemon, motorsep
875 //darkplaces implementation: divVerent
876 //builtin definitions:
877 string(float key, float bindmap) getkeybind_bindmap = #342;
878 float(float key, string bind, float bindmap) setkeybind_bindmap = #630;
879 vector(void) getbindmaps = #631;
880 float(vector bm) setbindmaps = #632;
881 string(string command, float bindmap) findkeysforcommand = #610;
882 //<already in EXT_CSQC> float(string key) stringtokeynum = #341;
883 //<already in EXT_CSQC> string(float keynum) keynumtostring = #340;
884 //description: key bind setting/getting including support for switchable
885 //bindmaps.
886 
887 //DP_CRYPTO
888 //idea: divVerent
889 //darkplaces implementation: divVerent
890 //builtin definitions: (CSQC)
891 float(string url, float id, string content_type, string delim, float buf, float keyid) crypto_uri_postbuf = #513;
892 //description:
893 //use -1 as buffer handle to justs end delim as postdata
894 
895 //DP_CSQC_MAINVIEW
896 //idea: divVerent
897 //darkplaces implementation: divVerent
898 //constant definitions:
899 const float VF_MAINVIEW = 400;
900 //use setproperty(VF_MAINVIEW, 1); before calling R_RenderView for the render
901 //that shall become the "main" view, which is e.g. used by PRYDON_CLIENTCURSOR
902 //this flag is set for the first scene, and not cleared by R_ClearScene
903 //this flag is automatically cleared by R_RenderView
904 //so when not using this extension, the first view rendered is the main view
905 
906 //DP_CSQC_MINFPS_QUALITY
907 //idea: divVerent
908 //darkplaces implementation: divVerent
909 //constant definitions:
910 const float VF_MINFPS_QUALITY = 401;
911 //use getproperty(VF_MINFPS_QUALITY); to do CSQC based LOD based on cl_minfps
912 //1 should lead to an unmodified view
913 
914 //DP_CSQC_V_CALCREFDEF_WIP1
915 //DP_CSQC_V_CALCREFDEF_WIP2
916 //idea: divVerent
917 //darkplaces implementation: divVerent
918 //builtin definitions:
919 void(entity e, float refdefflags) V_CalcRefdef = #640;
920 //constant definitions:
921 float PMF_DUCKED = 4;
922 float PMF_ONGROUND = 8;
925 float REFDEFFLAG_DEAD = 4;
927 //- use this on the player entity after performing prediction
928 //- pass REFDEFFLAG_TELEPORTED if the player teleported since last frame
929 //- pass REFDEFFLAG_JUMPING if jump button is pressed
930 //- pass REFDEFFLAG_DEAD if dead (DP_CSQC_V_CALCREFDEF_WIP2)
931 //- pass REFDEFFLAG_INTERMISSION if in intermission (DP_CSQC_V_CALCREFDEF_WIP2)
932 //- the player entity needs to have origin, velocity, pmove_flags set according
933 // to prediction (the above two PMF_ flags are used in the player's pmove_flags)
934 //- NOTE: to check for this, ALSO OR a check with DP_CSQC_V_CALCREFDEF to also support
935 // the finished extension once done
936 
937 // assorted builtins
938 float drawsubpic(vector position, vector size, string pic, vector srcPosition, vector srcSize, vector rgb, float alpha, float flag) = #328;
939 vector drawgetimagesize(string pic) = #318;
940 #define SPA_POSITION 0
941 #define SPA_S_AXIS 1
942 #define SPA_T_AXIS 2
943 #define SPA_R_AXIS 3
944 #define SPA_TEXCOORDS0 4
945 #define SPA_LIGHTMAP0_TEXCOORDS 5
946 #define SPA_LIGHTMAP_COLOR 6
947 // float (entity e, float s) getsurfacenumpoints = #434;
948 // vector (entity e, float s, float n) getsurfacepoint = #435;
949 // vector (entity e, float s) getsurfacenormal = #436;
950 // string (entity e, float s) getsurfacetexture = #437;
951 // float (entity e, vector p) getsurfacenearpoint = #438;
952 // vector (entity e, float s, vector p) getsurfaceclippedpoint = #439;
953 // vector(entity e, float s, float n, float a) getsurfacepointattribute = #486;
954 float(entity e, float s) getsurfacenumtriangles = #628;
955 vector(entity e, float s, float n) getsurfacetriangle = #629;
956 
957 //DP_QC_ASINACOSATANATAN2TAN
958 //idea: Urre
959 //darkplaces implementation: LadyHavoc
960 //constant definitions:
961 float DEG2RAD = 0.0174532925199432957692369076848861271344287188854172545609719144;
962 float RAD2DEG = 57.2957795130823208767981548141051703324054724665643215491602438612;
963 float PI = 3.1415926535897932384626433832795028841971693993751058209749445923;
964 //builtin definitions:
965 /* -Wdouble-declaration
966 float(float s) asin = #471; // returns angle in radians for a given sin() value, the result is in the range -PI*0.5 to PI*0.5
967 float(float c) acos = #472; // returns angle in radians for a given cos() value, the result is in the range 0 to PI
968 float(float t) atan = #473; // returns angle in radians for a given tan() value, the result is in the range -PI*0.5 to PI*0.5
969 float(float c, float s) atan2 = #474; // returns angle in radians for a given cos() and sin() value pair, the result is in the range -PI to PI (this is identical to vectoyaw except it returns radians rather than degrees)
970 float(float a) tan = #475; // returns tangent value (which is simply sin(a)/cos(a)) for the given angle in radians, the result is in the range -infinity to +infinity
971 */
972 //description:
973 //useful math functions for analyzing vectors, note that these all use angles in radians (just like the cos/sin functions) not degrees unlike makevectors/vectoyaw/vectoangles, so be sure to do the appropriate conversions (multiply by DEG2RAD or RAD2DEG as needed).
974 //note: atan2 can take unnormalized vectors (just like vectoyaw), and the function was included only for completeness (more often you want vectoyaw or vectoangles), atan2(v_x,v_y) * RAD2DEG gives the same result as vectoyaw(v)
975 
976 //DP_QC_SPRINTF
977 //idea: divVerent
978 //darkplaces implementation: divVerent
979 //builtin definitions:
980 string(string format, ...) sprintf = #627;
981 //description:
982 //you know sprintf :P
983 //supported stuff:
984 // %
985 // optional: <argpos>$ for the argument to format (the arg counter then is not increased)
986 // flags: #0- +
987 // optional: <width>, *, or *<argpos>$ for the field width (width is read before value and precision)
988 // optional: .<precision>, .*, or .*<argpos>$ for the precision (precision is read before value)
989 // length modifiers: h for forcing a float, l for forcing an int/entity (by default, %d etc. cast a float to int)
990 // conversions:
991 // d takes a float if no length is specified or h is, and an int/entity if l is specified as length, and cast it to an int
992 // i takes an int/entity if no length is specified or i is, and a float if h is specified as length, and cast it to an int
993 // ouxXc take a float if no length is specified or h is, and an int/entity if l is specified as length, and cast it to an unsigned int
994 // eEfFgG take a float if no length is specified or h is, and an int/entity if l is specified as length, and cast it to a double
995 // s takes a string
996 // vV takes a vector, and processes the three components as if it were a gG for all three components, separated by space
997 // For conversions s and c, the flag # makes precision and width interpreted
998 // as byte count, by default it is interpreted as character count in UTF-8
999 // enabled engines. No other conversions can create wide characters, and #
1000 // has another meaning in these.
1001 
1002 //DP_QC_GETTIME
1003 //idea: tZork
1004 //darkplaces implementation: tZork, divVerent
1005 //constant definitions:
1006 float GETTIME_FRAMESTART = 0; // time of start of frame
1007 float GETTIME_REALTIME = 1; // current time (may be OS specific)
1008 float GETTIME_HIRES = 2; // like REALTIME, but may reset between QC invocations and thus can be higher precision
1009 float GETTIME_UPTIME = 3; // time since start of the engine
1010 //builtin definitions:
1011 float(float tmr) gettime = #519;
1012 //description:
1013 //some timers to query...
1014 
1015 //DP_QC_GETTIME_CDTRACK
1016 //idea: divVerent
1017 //darkplaces implementation: divVerent
1018 //constant definitions:
1020 //description:
1021 //returns the playing time of the current cdtrack when passed to gettime()
1022 //see DP_END_GETSOUNDTIME for similar functionality but for entity sound channels
1023 
1024 //DP_QC_TOKENIZEBYSEPARATOR
1025 //idea: Electro, SavageX, LadyHavoc
1026 //darkplaces implementation: LadyHavoc
1027 //builtin definitions:
1028 float(string s, string separator1, ...) tokenizebyseparator = #479;
1029 //description:
1030 //this function returns tokens separated by any of the supplied separator strings, example:
1031 //numnumbers = tokenizebyseparator("10.2.3.4", ".");
1032 //returns 4 and the tokens are "10" "2" "3" "4"
1033 //possibly useful for parsing IPv4 addresses (such as "1.2.3.4") and IPv6 addresses (such as "[1234:5678:9abc:def0:1234:5678:9abc:def0]:26000")
1034 
1035 //DP_QC_TOKENIZE_CONSOLE
1036 //idea: divVerent
1037 //darkplaces implementation: divVerent
1038 //builtin definitions:
1039 float(string s) tokenize_console = #514;
1040 float(float i) argv_start_index = #515;
1041 float(float i) argv_end_index = #516;
1042 //description:
1043 //this function returns tokens separated just like the console does
1044 //also, functions are provided to get the index of the first and last character of each token in the original string
1045 //Passing negative values to them, or to argv, will be treated as indexes from the LAST token (like lists work in Perl). So argv(-1) will return the LAST token.
1046 
1047 //DP_SND_SOUND7_WIP1
1048 //DP_SND_SOUND7_WIP2
1049 //idea: divVerent
1050 //darkplaces implementation: divVerent
1051 //builtin definitions:
1052 void(entity e, float chan, string samp, float vol, float atten, float speed, float flags) sound7 = #8;
1054 //description:
1055 //plays a sound, with some more flags
1056 //extensions to sound():
1057 //- channel may be in the range from -128 to 127; channels -128 to 0 are "auto",
1058 // i.e. support multiple sounds at once, but cannot be stopped/restarted
1059 //- a value 0 in the speed parameter means no change; otherwise, it is a
1060 // percentage of playback speed ("pitch shifting"). 100 is normal pitch, 50 is
1061 // half speed, 200 is double speed, etc. (DP_SND_SOUND7_WIP2)
1062 //- the flag SOUNDFLAG_RELIABLE can be specified, which makes the sound send
1063 // to MSG_ALL (reliable) instead of MSG_BROADCAST (unreliable, default);
1064 // similarily, SOUNDFLAG_RELIABLE_TO_ONE sends to MSG_ONE
1065 //- channel 0 is controlled by snd_channel0volume; channel 1 and -1 by
1066 // snd_channel1volume, etc. (so, a channel shares the cvar with its respective
1067 // auto-channel); however, the mod MUST define snd_channel8volume and upwards
1068 // in default.cfg if they are to be used, as the engine does not create them
1069 // to not litter the cvar list
1070 //- this extension applies to CSQC as well; CSQC_Event_Sound will get speed and
1071 // flags as extra 7th and 8th argument
1072 //- WIP2 ideas: SOUNDFLAG_RELIABLE_TO_ONE, SOUNDFLAG_NOPHS, SOUNDFLAG_FORCELOOP
1073 //- NOTE: to check for this, ALSO OR a check with DP_SND_SOUND7 to also support
1074 // the finished extension once done
1075 
1076 //DP_PRECACHE_PIC_FLAGS
1077 //idea: divVerent
1078 //darkplaces implementation: divVerent
1079 //constant definitions:
1080 float PRECACHE_PIC_FROMWAD = 1; // this one actually is part of EXT_CSQC
1081 float PRECACHE_PIC_NOTPERSISTENT = 2; // picture may get deallocated when unused
1082 float PRECACHE_PIC_MIPMAP = 8; // mipmap the texture for possibly better downscaling at memory expense
1083 //notes: these constants are given as optional second argument to precache_pic()
1084 
1085 //DP_QC_TRACE_MOVETYPE_WORLDONLY
1086 //idea: LadyHavoc
1087 //darkplaces implementation: LadyHavoc
1088 //constant definitions:
1089 float MOVE_WORLDONLY = 3;
1090 //description:
1091 //allows traces to hit only world (ignoring all entities, unlike MOVE_NOMONSTERS which hits all bmodels), use as the nomonsters parameter to trace functions
1092 
1093 //DP_SND_GETSOUNDTIME
1094 //idea: VorteX
1095 //darkplaces implementation: VorteX
1096 //constant definitions:
1097 float(entity e, float channel) getsoundtime = #533; // get currently sound playing position on entity channel, -1 if not playing or error
1098 float(string sample) soundlength = #534; // returns length of sound sample in seconds, -1 on error (sound not precached, sound system not initialized etc.)
1099 //description: provides opportunity to query length of sound samples and realtime tracking of sound playing on entities (similar to DP_GETTIME_CDTRACK)
1100 //note: beware dedicated server not running sound engine at all, so in dedicated mode this builtins will not work in server progs
1101 //note also: menu progs not supporting getsoundtime() (will give a warning) since it has no sound playing on entities
1102 //examples of use:
1103 // - QC-driven looped sounds
1104 // - QC events when sound playing is finished
1105 // - toggleable ambientsounds
1106 // - subtitles
1107 
1108 //DP_QC_NUM_FOR_EDICT
1109 //idea: Blub\0
1110 //darkplaces implementation: Blub\0
1111 //Function to get the number of an entity - a clean way.
1112 float(entity num) num_for_edict = #512;
1113 
1114 //DP_TRACE_HITCONTENTSMASK_SURFACEINFO
1115 //idea: LadyHavoc
1116 //darkplaces implementation: LadyHavoc
1117 //globals:
1118 .float dphitcontentsmask; // if non-zero on the entity passed to traceline/tracebox/tracetoss this will override the normal collidable contents rules and instead hit these contents values (for example AI can use tracelines that hit DONOTENTER if it wants to, by simply changing this field on the entity passed to traceline), this affects normal movement as well as trace calls
1119 float trace_dpstartcontents; // DPCONTENTS_ value at start position of trace
1120 float trace_dphitcontents; // DPCONTENTS_ value of impacted surface (not contents at impact point, just contents of the surface that was hit)
1121 float trace_dphitq3surfaceflags; // Q3SURFACEFLAG_ value of impacted surface
1122 string trace_dphittexturename; // texture name of impacted surface
1123 //constants:
1124 float DPCONTENTS_SOLID = 1; // hit a bmodel, not a bounding box
1128 float DPCONTENTS_SKY = 16;
1129 float DPCONTENTS_BODY = 32; // hit a bounding box, not a bmodel
1130 float DPCONTENTS_CORPSE = 64; // hit a SOLID_CORPSE entity
1131 float DPCONTENTS_NODROP = 128; // an area where backpacks should not spawn
1132 float DPCONTENTS_PLAYERCLIP = 256; // blocks player movement
1133 float DPCONTENTS_MONSTERCLIP = 512; // blocks monster movement
1134 float DPCONTENTS_DONOTENTER = 1024; // AI hint brush
1135 float DPCONTENTS_LIQUIDSMASK = 14; // WATER | SLIME | LAVA
1136 float DPCONTENTS_BOTCLIP = 2048; // AI hint brush
1137 float DPCONTENTS_OPAQUE = 4096; // only fully opaque brushes get this (may be useful for line of sight checks)
1139 float Q3SURFACEFLAG_SLICK = 2; // low friction surface
1140 float Q3SURFACEFLAG_SKY = 4; // sky surface (also has NOIMPACT and NOMARKS set)
1141 float Q3SURFACEFLAG_LADDER = 8; // climbable surface
1142 float Q3SURFACEFLAG_NOIMPACT = 16; // projectiles should remove themselves on impact (this is set on sky)
1143 float Q3SURFACEFLAG_NOMARKS = 32; // projectiles should not leave marks, such as decals (this is set on sky)
1144 float Q3SURFACEFLAG_FLESH = 64; // projectiles should do a fleshy effect (blood?) on impact
1145 float Q3SURFACEFLAG_NODRAW = 128; // compiler hint (not important to qc)
1146 //float Q3SURFACEFLAG_HINT = 256; // compiler hint (not important to qc)
1147 //float Q3SURFACEFLAG_SKIP = 512; // compiler hint (not important to qc)
1148 //float Q3SURFACEFLAG_NOLIGHTMAP = 1024; // compiler hint (not important to qc)
1149 //float Q3SURFACEFLAG_POINTLIGHT = 2048; // compiler hint (not important to qc)
1150 float Q3SURFACEFLAG_METALSTEPS = 4096; // walking on this surface should make metal step sounds
1151 float Q3SURFACEFLAG_NOSTEPS = 8192; // walking on this surface should not make footstep sounds
1152 float Q3SURFACEFLAG_NONSOLID = 16384; // compiler hint (not important to qc)
1153 //float Q3SURFACEFLAG_LIGHTFILTER = 32768; // compiler hint (not important to qc)
1154 //float Q3SURFACEFLAG_ALPHASHADOW = 65536; // compiler hint (not important to qc)
1155 //float Q3SURFACEFLAG_NODLIGHT = 131072; // compiler hint (not important to qc)
1156 //float Q3SURFACEFLAG_DUST = 262144; // translucent 'light beam' effect (not important to qc)
1157 //description:
1158 //adds additional information after a traceline/tracebox/tracetoss call.
1159 //also (very important) sets trace_* globals before calling .touch functions,
1160 //this allows them to inspect the nature of the collision (for example
1161 //determining if a projectile hit sky), clears trace_* variables for the other
1162 //object in a touch event (that is to say, a projectile moving will see the
1163 //trace results in its .touch function, but the player it hit will see very
1164 //little information in the trace_ variables as it was not moving at the time)
1165 
1166 //DP_QC_CVAR_TYPE
1167 //idea: divVerent
1168 //DarkPlaces implementation: divVerent
1169 //builtin definitions:
1170 float(string name) cvar_type = #495;
1177 
1178 //DP_QC_CRC16
1179 //idea: divVerent
1180 //darkplaces implementation: divVerent
1181 //Some hash function to build hash tables with. This has to be be the CRC-16-CCITT that is also required for the QuakeWorld download protocol.
1182 //When caseinsensitive is set, the CRC is calculated of the lower cased string.
1183 float(float caseinsensitive, string s, ...) crc16 = #494;
1184 
1185 //DP_QC_URI_ESCAPE
1186 //idea: divVerent
1187 //darkplaces implementation: divVerent
1188 //URI::Escape's functionality
1189 string(string in) uri_escape = #510;
1190 string(string in) uri_unescape = #511;
1191 
1192 //DP_QC_DIGEST
1193 //idea: motorsep, Spike
1194 //DarkPlaces implementation: divVerent
1195 //builtin definitions:
1196 string(string digest, string data, ...) digest_hex = #639;
1197 //description:
1198 //returns a given hex digest of given data
1199 //the returned digest is always encoded in hexadecimal
1200 //only the "MD4" digest is always supported!
1201 //if the given digest is not supported, string_null is returned
1202 //the digest string is matched case sensitively, use "MD4", not "md4"!
1203 
1204 //DP_QC_DIGEST_SHA256
1205 //idea: motorsep, Spike
1206 //DarkPlaces implementation: divVerent
1207 //description:
1208 //"SHA256" is also an allowed digest type
1209 
1210 //DP_QC_LOG
1211 //darkplaces implementation: divVerent
1212 //builtin definitions:
1213 float log(float f) = #532;
1214 //description:
1215 //logarithm
1216 
1217 //FTE_CSQC_SKELETONOBJECTS
1218 //idea: Spike, LadyHavoc
1219 //darkplaces implementation: LadyHavoc
1220 //builtin definitions:
1221 // all skeleton numbers are 1-based (0 being no skeleton)
1222 // all bone numbers are 1-based (0 being invalid)
1223 float(float modlindex) skel_create = #263; // create a skeleton (be sure to assign this value into .skeletonindex for use), returns skeleton index (1 or higher) on success, returns 0 on failure (for example if the modelindex is not skeletal), it is recommended that you create a new skeleton if you change modelindex, as the skeleton uses the hierarchy from the model.
1224 float(float skel, entity ent, float modlindex, float retainfrac, float firstbone, float lastbone) skel_build = #264; // blend in a percentage of standard animation, 0 replaces entirely, 1 does nothing, 0.5 blends half, etc, and this only alters the bones in the specified range for which out of bounds values like 0,100000 are safe (uses .frame, .frame2, .frame3, .frame4, .lerpfrac, .lerpfrac3, .lerpfrac4, .frame1time, .frame2time, .frame3time, .frame4time), returns skel on success, 0 on failure
1225 float(float skel) skel_get_numbones = #265; // returns how many bones exist in the created skeleton, 0 if skeleton does not exist
1226 string(float skel, float bonenum) skel_get_bonename = #266; // returns name of bone (as a tempstring), "" if invalid bonenum (< 1 for example) or skeleton does not exist
1227 float(float skel, float bonenum) skel_get_boneparent = #267; // returns parent num for supplied bonenum, 0 if bonenum has no parent or bone does not exist (returned value is always less than bonenum, you can loop on this)
1228 float(float skel, string tagname) skel_find_bone = #268; // get number of bone with specified name, 0 on failure, bonenum (1-based) on success, same as using gettagindex but takes modelindex instead of entity
1229 vector(float skel, float bonenum) skel_get_bonerel = #269; // get matrix of bone in skeleton relative to its parent - sets v_forward, v_right, v_up, returns origin (relative to parent bone)
1230 vector(float skel, float bonenum) skel_get_boneabs = #270; // get matrix of bone in skeleton in model space - sets v_forward, v_right, v_up, returns origin (relative to entity)
1231 void(float skel, float bonenum, vector org) skel_set_bone = #271; // set matrix of bone relative to its parent, reads v_forward, v_right, v_up, takes origin as parameter (relative to parent bone)
1232 void(float skel, float bonenum, vector org) skel_mul_bone = #272; // transform bone matrix (relative to its parent) by the supplied matrix in v_forward, v_right, v_up, takes origin as parameter (relative to parent bone)
1233 void(float skel, float startbone, float endbone, vector org) skel_mul_bones = #273; // transform bone matrices (relative to their parents) by the supplied matrix in v_forward, v_right, v_up, takes origin as parameter (relative to parent bones)
1234 void(float skeldst, float skelsrc, float startbone, float endbone) skel_copybones = #274; // copy bone matrices (relative to their parents) from one skeleton to another, useful for copying a skeleton to a corpse
1235 void(float skel) skel_delete = #275; // deletes skeleton at the beginning of the next frame (you can add the entity, delete the skeleton, renderscene, and it will still work)
1236 float(float modlindex, string framename) frameforname = #276; // finds number of a specified frame in the animation, returns -1 if no match found
1237 float(float modlindex, float framenum) frameduration = #277; // returns the intended play time (in seconds) of the specified framegroup, if it does not exist the result is 0, if it is a single frame it may be a small value around 0.1 or 0.
1238 //fields:
1239 .float skeletonindex; // active skeleton overriding standard animation on model
1240 .float frame; // primary framegroup animation (strength = 1 - lerpfrac - lerpfrac3 - lerpfrac4)
1241 .float frame2; // secondary framegroup animation (strength = lerpfrac)
1242 .float frame3; // tertiary framegroup animation (strength = lerpfrac3)
1243 .float frame4; // quaternary framegroup animation (strength = lerpfrac4)
1244 .float lerpfrac; // strength of framegroup blend
1245 .float lerpfrac3; // strength of framegroup blend
1246 .float lerpfrac4; // strength of framegroup blend
1247 .float frame1time; // start time of framegroup animation
1248 .float frame2time; // start time of framegroup animation
1249 .float frame3time; // start time of framegroup animation
1250 .float frame4time; // start time of framegroup animation
1251 //description:
1252 //this extension provides a way to do complex skeletal animation on an entity.
1253 //
1254 //see also DP_SKELETONOBJECTS (this extension implemented on server as well as client)
1255 //
1256 //notes:
1257 //each model contains its own skeleton, reusing a skeleton with incompatible models will yield garbage (or not render).
1258 //each model contains its own animation data, you can use animations from other model files (for example saving out all character animations as separate model files).
1259 //if an engine supports loading an animation-only file format such as .md5anim in FTEQW, it can be used to animate any model with a compatible skeleton.
1260 //proper use of this extension may require understanding matrix transforms (v_forward, v_right, v_up, origin), and you must keep in mind that v_right is negative for this purpose.
1261 //
1262 //features include:
1263 //multiple animations blended together.
1264 //animating a model with animations from another model with a compatible skeleton.
1265 //restricting animation blends to certain bones of a model - for example independent animation of legs, torso, head.
1266 //custom bone controllers - for example making eyes track a target location.
1267 //
1268 //
1269 //
1270 //example code follows...
1271 //
1272 //this helper function lets you identify (by parentage) what group a bone
1273 //belongs to - for example "torso", "leftarm", would return 1 ("torso") for
1274 //all children of the bone named "torso", unless they are children of
1275 //"leftarm" (which is a child of "torso") which would return 2 instead...
1276 float(float skel, float bonenum, string g1, string g2, string g3, string g4, string g5, string g6) example_skel_findbonegroup =
1277 {
1278  local string bonename;
1279  while (bonenum >= 0)
1280  {
1281  bonename = skel_get_bonename(skel, bonenum);
1282  if (bonename == g1) return 1;
1283  if (bonename == g2) return 2;
1284  if (bonename == g3) return 3;
1285  if (bonename == g4) return 4;
1286  if (bonename == g5) return 5;
1287  if (bonename == g6) return 6;
1288  bonenum = skel_get_boneparent(skel, bonenum);
1289  }
1290  return 0;
1291 };
1292 // create a skeletonindex for our player using current modelindex
1293 void() example_skel_player_setup =
1294 {
1295  self.skeletonindex = skel_create(self.modelindex);
1296 };
1297 // setup bones of skeleton based on an animation
1298 // note: animmodelindex can be a different model than self.modelindex
1299 void(float animmodelindex, float framegroup, float framegroupstarttime) example_skel_player_update_begin =
1300 {
1301  // start with our standard animation
1302  self.frame = framegroup;
1303  self.frame2 = 0;
1304  self.frame3 = 0;
1305  self.frame4 = 0;
1306  self.frame1time = framegroupstarttime;
1307  self.frame2time = 0;
1308  self.frame3time = 0;
1309  self.frame4time = 0;
1310  self.lerpfrac = 0;
1311  self.lerpfrac3 = 0;
1312  self.lerpfrac4 = 0;
1313  skel_build(self.skeletonindex, self, animmodelindex, 0, 0, 100000);
1314 };
1315 // apply a different framegroup animation to bones with a specified parent
1316 void(float animmodelindex, float framegroup, float framegroupstarttime, float blendalpha, string groupbonename, string excludegroupname1, string excludegroupname2) example_skel_player_update_applyoverride =
1317 {
1318  local float bonenum;
1319  local float numbones;
1320  self.frame = framegroup;
1321  self.frame2 = 0;
1322  self.frame3 = 0;
1323  self.frame4 = 0;
1324  self.frame1time = framegroupstarttime;
1325  self.frame2time = 0;
1326  self.frame3time = 0;
1327  self.frame4time = 0;
1328  self.lerpfrac = 0;
1329  self.lerpfrac3 = 0;
1330  self.lerpfrac4 = 0;
1331  bonenum = 0;
1332  numbones = skel_get_numbones(self.skeletonindex);
1333  while (bonenum < numbones)
1334  {
1335  if (example_skel_findbonegroup(self.skeletonindex, bonenum, groupbonename, excludegroupname1, excludegroupname2, "", "", "") == 1)
1336  skel_build(self.skeletonindex, self, animmodelindex, 1 - blendalpha, bonenum, bonenum + 1);
1337  bonenum = bonenum + 1;
1338  }
1339 };
1340 // make eyes point at a target location, be sure v_forward, v_right, v_up are set correctly before calling
1341 void(vector eyetarget, string bonename) example_skel_player_update_eyetarget =
1342 {
1343  local float bonenum;
1344  local vector ang;
1345  local vector oldforward, oldright, oldup;
1346  local vector relforward, relright, relup, relorg;
1347  local vector boneforward, boneright, boneup, boneorg;
1348  local vector parentforward, parentright, parentup, parentorg;
1349  local vector u, v;
1350  local vector modeleyetarget;
1351  bonenum = skel_find_bone(self.skeletonindex, bonename) - 1;
1352  if (bonenum < 0)
1353  return;
1354  oldforward = v_forward;
1355  oldright = v_right;
1356  oldup = v_up;
1357  v = eyetarget - self.origin;
1358  modeleyetarget_x = v * v_forward;
1359  modeleyetarget_y = 0-v * v_right;
1360  modeleyetarget_z = v * v_up;
1361  // this is an eyeball, make it point at the target location
1362  // first get all the data we can...
1363  relorg = skel_get_bonerel(self.skeletonindex, bonenum);
1364  relforward = v_forward;
1365  relright = v_right;
1366  relup = v_up;
1367  boneorg = skel_get_boneabs(self.skeletonindex, bonenum);
1368  boneforward = v_forward;
1369  boneright = v_right;
1370  boneup = v_up;
1371  parentorg = skel_get_boneabs(self.skeletonindex, skel_get_boneparent(self.skeletonindex, bonenum));
1372  parentforward = v_forward;
1373  parentright = v_right;
1374  parentup = v_up;
1375  // get the vector from the eyeball to the target
1376  u = modeleyetarget - boneorg;
1377  // now transform it inversely by the parent matrix to produce new rel vectors
1378  v_x = u * parentforward;
1379  v_y = u * parentright;
1380  v_z = u * parentup;
1381  ang = vectoangles2(v, relup);
1382  ang_x = 0 - ang_x;
1383  makevectors(ang);
1384  // set the relative bone matrix
1385  skel_set_bone(self.skeletonindex, bonenum, relorg);
1386  // restore caller's v_ vectors
1387  v_forward = oldforward;
1388  v_right = oldright;
1389  v_up = oldup;
1390 };
1391 // delete skeleton when we're done with it
1392 // note: skeleton remains valid until next frame when it is really deleted
1393 void() example_skel_player_delete =
1394 {
1395  skel_delete(self.skeletonindex);
1396  self.skeletonindex = 0;
1397 };
1398 //
1399 // END OF EXAMPLES FOR FTE_CSQC_SKELETONOBJECTS
1400 //
1401 
1402 //DP_QC_ENTITYDATA
1403 //idea: KrimZon
1404 //darkplaces implementation: KrimZon
1405 //builtin definitions:
1406 float() numentityfields = #496;
1407 string(float fieldnum) entityfieldname = #497;
1408 float(float fieldnum) entityfieldtype = #498;
1409 string(float fieldnum, entity ent) getentityfieldstring = #499;
1410 float(float fieldnum, entity ent, string s) putentityfieldstring = #500;
1411 //constants:
1412 //Returned by entityfieldtype
1413 float FIELD_STRING = 1;
1414 float FIELD_FLOAT = 2;
1415 float FIELD_VECTOR = 3;
1416 float FIELD_ENTITY = 4;
1417 float FIELD_FUNCTION = 6;
1418 //description:
1419 //Versatile functions intended for storing data from specific entities between level changes, but can be customized for some kind of partial savegame.
1420 //WARNING: .entity fields cannot be saved and restored between map loads as they will leave dangling pointers.
1421 //numentityfields returns the number of entity fields. NOT offsets. Vectors comprise 4 fields: v, v_x, v_y and v_z.
1422 //entityfieldname returns the name as a string, eg. "origin" or "classname" or whatever.
1423 //entityfieldtype returns a value that the constants represent, but the field may be of another type in more exotic progs.dat formats or compilers.
1424 //getentityfieldstring returns data as would be written to a savegame, eg... "0.05" (float), "0 0 1" (vector), or "Hello World!" (string). Function names can also be returned.
1425 //putentityfieldstring puts the data returned by getentityfieldstring back into the entity.
1426 
1427 //DP_QC_ENTITYSTRING
1428 void(string s) loadfromdata = #529;
1429 void(string s) loadfromfile = #530;
1430 void(string s) callfunction = #605;
1431 void(float fh, entity e) writetofile = #606;
1432 float(string s) isfunction = #607;
1433 void(entity e, string s) parseentitydata = #608;
1434 
1435 //DP_COVERAGE
1436 //idea: divVerent
1437 //darkplaces implementation: divVerent
1438 //function definitions:
1439 void coverage() = #642; // Reports a coverage event. The engine counts for each of the calls to this builtin whether it has been called.
1440 
1441 //DP_QC_FS_SEARCH_PACKFILE
1442 //idea: Mario
1443 //darkplaces implementation: Mario
1444 //builtin definitions:
1445 float(string pattern, float caseinsensitive, float quiet, string packfile) search_packfile_begin = #444;
1446 //description:
1447 //extension to search_begin (DP_QC_FS_SEARCH), performs a filename search with the specified pattern (for example "maps/*.bsp") and stores the results in a search slot (minimum of 128 supported by any engine with this extension), the other functions take this returned search slot number, be sure to search_free when done (they are also freed on progs reload).
1448 //only searches for files within the specified packfile, which is expected to match the results of whichpack().
1449 
1450 // assorted builtins
1451 const float STAT_MOVEVARS_TICRATE = 240;
1452 const float STAT_MOVEVARS_TIMESCALE = 241;
1453 const float STAT_FRAGLIMIT = 235;
1454 const float STAT_TIMELIMIT = 236;
1455 const float STAT_MOVEVARS_GRAVITY = 242;
1456 string(void) ReadPicture = #501;
1461 float PARTICLES_USEFADE = 4; // fades the COUNT (fade alpha using alphamin/alphamax)
1464 void(float effectindex, entity own, vector org_from, vector org_to, vector dir_from, vector dir_to, float countmultiplier, float flags) boxparticles = #502;
1466 const float RF_FULLBRIGHT = 256;
1467 const float RF_NOSHADOW = 512;
1469 
1476 float checkpvs(vector viewpos, entity viewee) = #240;
const float RF_USEAXIS
Definition: csprogsdefs.qc:170
const float SOLID_NOT
Definition: csprogsdefs.qc:244
float frame3time
vector input_movevalues
Definition: csprogsdefs.qc:61
vector color
float gettaginfo_parent
const float STAT_MOVEVARS_TIMESCALE
const float CHAN_ITEM
Definition: csprogsdefs.qc:222
#define skel_mul_bone
Definition: post.qh:27
vector pmove_org
Definition: csprogsdefs.qc:54
float PT_ALPHASTATIC
Definition: csprogsdefs.qc:636
float FONT_DEFAULT
Definition: csprogsdefs.qc:821
const float STAT_TOTALSECRETS
Definition: csprogsdefs.qc:211
float particle_delayspawn
Definition: csprogsdefs.qc:682
const float STAT_ARMOR
Definition: csprogsdefs.qc:204
const float SOLID_SLIDEBOX
Definition: csprogsdefs.qc:247
const vector VEC_0
Definition: csprogsdefs.qc:266
const float PFL_CROUCH
Definition: csprogsdefs.qc:312
float PT_SNOW
Definition: csprogsdefs.qc:642
string gettaginfo_name
const float STAT_TOTALMONSTERS
Definition: csprogsdefs.qc:212
float colormap
Definition: csprogsdefs.qc:131
vector modellight_diffuse
Definition: csprogsdefs.qc:763
float particle_stretch
Definition: csprogsdefs.qc:676
float alpha
Definition: items.qc:14
float particle_staintex
Definition: csprogsdefs.qc:679
const float VF_MIN_Y
Definition: csprogsdefs.qc:174
const float DRAWFLAG_2XMODULATE
Definition: csprogsdefs.qc:320
float DEG2RAD
Definition: csprogsdefs.qc:961
const float CHAN_VOICE
Definition: csprogsdefs.qc:221
const float CONTENT_LAVA
Definition: csprogsdefs.qc:240
float particle_spin
Definition: csprogsdefs.qc:685
void end_sys_fields
Definition: csprogsdefs.qc:136
float lerpfrac4
float trace_plane_dist
Definition: csprogsdefs.qc:39
entity world
Definition: csprogsdefs.qc:15
float speed
Definition: subs.qh:41
float lerpfrac
spree_inf s1 s2 s3loc s2 s1
Definition: all.inc:265
void coverage()
const float STAT_CELLS
Definition: csprogsdefs.qc:209
float particle_originjitter
Definition: csprogsdefs.qc:673
float FIELD_FUNCTION
const float PFLAGS_CORONA
Definition: csprogsdefs.qc:297
float FONT_USER2
Definition: csprogsdefs.qc:831
const float VF_ORIGIN_Y
Definition: csprogsdefs.qc:184
#define adddynamiclight
Definition: post.qh:29
const float STAT_MOVEVARS_GRAVITY
spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 spree_inf s1 s2 s3loc s2 s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2loc s1 s2 f1 f1points s1 s2
Definition: all.inc:438
vector modellight_dir
Definition: csprogsdefs.qc:764
float PI
Definition: csprogsdefs.qc:963
float movevar_wateraccelerate
Definition: csprogsdefs.qc:70
vector particle_staincolor1
Definition: csprogsdefs.qc:677
float trace_dphitq3surfaceflags
float movevar_maxspeed
Definition: csprogsdefs.qc:66
#define ReadString
int int number
Definition: impulse.qc:89
#define str2chr
Definition: dpextensions.qh:45
const float EF_FLAME
Definition: csprogsdefs.qc:302
const float STAT_WEAPONFRAME
Definition: csprogsdefs.qc:205
const float VF_CL_VIEWANGLES
Definition: csprogsdefs.qc:194
float E_MINS
Definition: csprogsdefs.qc:792
const float RF_VIEWMODEL
Definition: csprogsdefs.qc:166
const float RF_FULLBRIGHT
const float PFL_DEAD
Definition: csprogsdefs.qc:313
float modelindex
Definition: csprogsdefs.qc:91
const float ATTN_NONE
Definition: csprogsdefs.qc:225
float servercommandframe
Definition: csprogsdefs.qc:24
float skin
Definition: csprogsdefs.qc:110
const float RF_NOSHADOW
float PT_SMOKE
Definition: csprogsdefs.qc:645
vector gettaginfo_offset
float GETTIME_FRAMESTART
vector getlight_dir
Definition: csprogsdefs.qc:410
const float TE_SUPERSPIKEQUAD
Definition: csprogsdefs.qc:293
const float STAT_MONSTERS
Definition: csprogsdefs.qc:214
#define getentity
Definition: post.qh:33
float DPCONTENTS_MONSTERCLIP
float particle_stainalpha
Definition: csprogsdefs.qc:680
const float ATTN_IDLE
Definition: csprogsdefs.qc:227
float E_PANTSCOLOR
Definition: csprogsdefs.qc:789
vector oldorigin
Definition: csprogsdefs.qc:102
const float VF_FOVY
Definition: csprogsdefs.qc:181
const float MASK_ENGINE
Definition: csprogsdefs.qc:162
float trace_networkentity
vector gettaginfo_up
const float TE_SPIKE
Definition: csprogsdefs.qc:275
float trace_dphitcontents
float CVAR_TYPEFLAG_EXISTS
entity() spawn
vector VEC_HULL_MIN
Definition: csprogsdefs.qc:271
float Q3SURFACEFLAG_NONSOLID
const float TE_TAREXPLOSION
Definition: csprogsdefs.qc:279
float movevar_gravity
Definition: csprogsdefs.qc:64
#define strncmp
Definition: dpextensions.qh:54
const float MOVE_NORMAL
Definition: csprogsdefs.qc:252
float input_buttons
Definition: csprogsdefs.qc:62
const float VF_MIN_X
Definition: csprogsdefs.qc:173
const float STAT_SECRETS
Definition: csprogsdefs.qc:213
float Q3SURFACEFLAG_LADDER
vector input_angles
Definition: csprogsdefs.qc:60
float particle_liquidfriction
Definition: csprogsdefs.qc:672
float radius
Definition: impulse.qh:11
const float DRAWFLAG_SCREEN
Definition: csprogsdefs.qc:321
float intermission
Definition: csprogsdefs.qc:148
vector maxs
Definition: csprogsdefs.qc:113
float E_SHIRTCOLOR
Definition: csprogsdefs.qc:790
float PT_DECAL
Definition: csprogsdefs.qc:646
float DPCONTENTS_SKY
const float CONTENT_SOLID
Definition: csprogsdefs.qc:237
float particle_gravity
Definition: csprogsdefs.qc:669
const float DRAWFLAG_MIPMAP
Definition: csprogsdefs.qc:322
const float TE_SPIKEQUAD
Definition: csprogsdefs.qc:292
vector particle_staincolor2
Definition: csprogsdefs.qc:678
float movevar_entgravity
Definition: csprogsdefs.qc:73
#define skel_get_boneparent
Definition: dpextensions.qh:36
const float TE_EXPLOSIONQUAD
Definition: csprogsdefs.qc:291
float checkpvs(vector viewpos, entity viewee)
float DPCONTENTS_BOTCLIP
float transparent_offset
Definition: csprogsdefs.qc:746
const float FILE_READ
Definition: csprogsdefs.qc:231
float style
float atten
Definition: triggers.qh:47
const float FILE_APPEND
Definition: csprogsdefs.qc:232
vector pmove_vel
Definition: csprogsdefs.qc:55
float FONT_USER6
Definition: csprogsdefs.qc:835
float E_ABSMAX
Definition: csprogsdefs.qc:795
const float ATTN_STATIC
Definition: csprogsdefs.qc:228
float maxclients
Definition: csprogsdefs.qc:21
const float STAT_AMMO
Definition: csprogsdefs.qc:203
const float VF_CL_VIEWANGLES_X
Definition: csprogsdefs.qc:195
float DPCONTENTS_PLAYERCLIP
float Q3SURFACEFLAG_SLICK
entity to
Definition: self.qh:96
const float TE_KNIGHTSPIKE
Definition: csprogsdefs.qc:283
#define vectorvectors
Definition: post.qh:31
float particle_alphafade
Definition: csprogsdefs.qc:667
const float VF_MINFPS_QUALITY
Definition: csprogsdefs.qc:910
float Q3SURFACEFLAG_METALSTEPS
float particle_sizeincrease
Definition: csprogsdefs.qc:665
const float VF_ANGLES_Z
Definition: csprogsdefs.qc:189
#define droptofloor
Definition: pre.qh:5
float E_RIGHT
Definition: csprogsdefs.qc:783
const float LP_LIGHTMAP
Definition: csprogsdefs.qc:413
float particle_tex
Definition: csprogsdefs.qc:663
#define gettaginfo
Definition: post.qh:32
string classname
Definition: csprogsdefs.qc:107
float movevar_waterfriction
Definition: csprogsdefs.qc:72
float SOUNDFLAG_RELIABLE
float particle_blendmode
Definition: csprogsdefs.qc:659
const float EF_NODEPTHTEST
Definition: csprogsdefs.qc:304
const float FALSE
Definition: csprogsdefs.qc:260
vector avelocity
Definition: csprogsdefs.qc:105
float PT_BEAM
Definition: csprogsdefs.qc:639
const float RF_MODELLIGHT
Definition: csprogsdefs.qc:761
vector size
Definition: csprogsdefs.qc:114
float PT_RAINDECAL
Definition: csprogsdefs.qc:641
entity other
Definition: csprogsdefs.qc:14
vector getlight_diffuse
Definition: csprogsdefs.qc:412
float PT_RAIN
Definition: csprogsdefs.qc:640
float particles_fade
float frame4time
const float VF_CL_VIEWANGLES_Y
Definition: csprogsdefs.qc:196
entity chain
Definition: csprogsdefs.qc:123
float FIELD_VECTOR
vector pmove_mins
Definition: csprogsdefs.qc:56
float FONT_USER5
Definition: csprogsdefs.qc:834
float effects
Definition: csprogsdefs.qc:111
const float EF_NOSHADOW
Definition: csprogsdefs.qc:306
vector drawgetimagesize(string pic)
float E_LIGHT
Definition: csprogsdefs.qc:796
string model
Definition: csprogsdefs.qc:108
float movevar_stopspeed
Definition: csprogsdefs.qc:65
#define skel_mul_bones
Definition: post.qh:28
float PMF_DUCKED
Definition: csprogsdefs.qc:921
float REFDEFFLAG_DEAD
Definition: csprogsdefs.qc:925
#define gettagindex
Definition: dpextensions.qh:16
float GETTIME_CDTRACK
void() CSQC_Init
entity trace_ent
Definition: csprogsdefs.qc:40
float PARTICLES_USEALPHA
vector modellight_ambient
Definition: csprogsdefs.qc:762
float E_FORWARD
Definition: csprogsdefs.qc:782
const float EF_ADDITIVE
Definition: csprogsdefs.qc:300
const float VF_ANGLES_Y
Definition: csprogsdefs.qc:188
const float VF_FOVX
Definition: csprogsdefs.qc:180
float frame4
float PRECACHE_PIC_MIPMAP
float particle_stainsize
Definition: csprogsdefs.qc:681
#define setmodel(this, m)
Definition: model.qh:26
string mapname
Definition: csprogsdefs.qc:26
float clientcommandframe
Definition: csprogsdefs.qc:23
const float STAT_FRAGLIMIT
const float ATTN_NORM
Definition: csprogsdefs.qc:226
float drawfont
Definition: csprogsdefs.qc:820
string trace_dphittexturename
float particle_bounce
Definition: csprogsdefs.qc:670
float FONT_INFOBAR
Definition: csprogsdefs.qc:827
float Q3SURFACEFLAG_NOSTEPS
float stringwidth(string text, float allowColorCodes, vector size)
Definition: draw.qc:75
vector absmax
Definition: csprogsdefs.qc:92
vector view_angles
Definition: csprogsdefs.qc:150
float trace_inopen
Definition: csprogsdefs.qc:41
const float STAT_VIEWHEIGHT
Definition: csprogsdefs.qc:216
const float EF_NODRAW
Definition: csprogsdefs.qc:305
const float CONTENT_EMPTY
Definition: csprogsdefs.qc:236
const float DRAWFLAG_ADDITIVE
Definition: csprogsdefs.qc:318
float frame2
const float EF_FULLBRIGHT
Definition: csprogsdefs.qc:303
float FONT_USER0
Definition: csprogsdefs.qc:829
vector(vector v) normalize
float E_MAXS
Definition: csprogsdefs.qc:793
#define argv_end_index
Definition: dpextensions.qh:30
float PARTICLES_USEFADE
float particles_alphamin
const float EXTRA_LOW
Definition: csprogsdefs.qc:262
float FONT_USER7
Definition: csprogsdefs.qc:836
const float MOVE_MISSILE
Definition: csprogsdefs.qc:254
#define buf_create
Definition: dpextensions.qh:63
float PT_BLOOD
Definition: csprogsdefs.qc:644
float PT_SPARK
Definition: csprogsdefs.qc:638
float Q3SURFACEFLAG_NOMARKS
float FIELD_ENTITY
float E_SKIN
Definition: csprogsdefs.qc:791
const float RF_DEPTHHACK
Definition: csprogsdefs.qc:168
float lifetime
Definition: powerups.qc:23
const float VF_CL_VIEWANGLES_Z
Definition: csprogsdefs.qc:197
float E_ORIGIN
Definition: csprogsdefs.qc:781
float Q3SURFACEFLAG_SKY
const float MOVE_NOMONSTERS
Definition: csprogsdefs.qc:253
vector mins
Definition: csprogsdefs.qc:113
float E_ABSMIN
Definition: csprogsdefs.qc:794
float E_UP
Definition: csprogsdefs.qc:784
float particle_orientation
Definition: csprogsdefs.qc:660
float REFDEFFLAG_TELEPORTED
Definition: csprogsdefs.qc:923
const float TE_TELEPORT
Definition: csprogsdefs.qc:286
vector VEC_HULL_MAX
Definition: csprogsdefs.qc:272
const float RF_WORLDOBJECT
Definition: csprogsdefs.qc:754
const float TE_GUNSHOT
Definition: csprogsdefs.qc:277
vector gettaginfo_right
float E_ALPHA
Definition: csprogsdefs.qc:787
vector particles_colormax
const float STAT_NAILS
Definition: csprogsdefs.qc:207
const float CONTENT_SLIME
Definition: csprogsdefs.qc:239
float skeletonindex
const float VF_ORIGIN_X
Definition: csprogsdefs.qc:183
float FIELD_FLOAT
const float EXTRA_HIGH
Definition: csprogsdefs.qc:263
#define strcmp
Definition: dpextensions.qh:51
const float VF_MAINVIEW
Definition: csprogsdefs.qc:899
const float CHAN_BODY
Definition: csprogsdefs.qc:223
#define skel_get_bonerel
Definition: post.qh:24
const float EF_BLUE
Definition: csprogsdefs.qc:301
vector v_up
Definition: csprogsdefs.qc:31
float GETTIME_UPTIME
#define argv_start_index
Definition: dpextensions.qh:27
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1 s1 strcat(_("Level %s: "), "^BG%s\3\, _("^BGPress ^F2%s^BG to enter the game"))
float E_COLORMOD
Definition: csprogsdefs.qc:788
float Q3SURFACEFLAG_FLESH
float FONT_CHAT
Definition: csprogsdefs.qc:825
float height
Definition: jumppads.qh:12
const float CONTENT_WATER
Definition: csprogsdefs.qc:238
const float VF_ORIGIN_Z
Definition: csprogsdefs.qc:185
float movevar_spectatormaxspeed
Definition: csprogsdefs.qc:67
const float LP_DYNLIGHT
Definition: csprogsdefs.qc:415
const float CONTENT_SKY
Definition: csprogsdefs.qc:241
float CVAR_TYPEFLAG_READONLY
const float STAT_ROCKETS
Definition: csprogsdefs.qc:208
const float LP_COMPLETE
Definition: csprogsdefs.qc:416
#define pointparticles
Definition: csprogsdefs.qh:13
const float TE_SUPERSPIKE
Definition: csprogsdefs.qc:276
float delay
Definition: subs.qh:38
float Q3SURFACEFLAG_NODAMAGE
float frametime
Definition: csprogsdefs.qc:17
float findfont(string s)
float trace_dpstartcontents
float DPCONTENTS_SOLID
const float DRAWFLAG_NORMAL
Definition: csprogsdefs.qc:317
const float TE_LAVASPLASH
Definition: csprogsdefs.qc:285
void CSQC_UpdateView(entity this, float w, float h)
Definition: view.qc:1532
float CVAR_TYPEFLAG_PRIVATE
float PARTICLE_BILLBOARD
Definition: csprogsdefs.qc:653
float FONT_SBAR
Definition: csprogsdefs.qc:823
#define walkmove
Definition: pre.qh:10
const float TE_WIZSPIKE
Definition: csprogsdefs.qc:282
#define skel_get_boneabs
Definition: post.qh:25
vector particles_colormin
float FIELD_STRING
vector getlight_ambient
Definition: csprogsdefs.qc:411
vector trace_endpos
Definition: csprogsdefs.qc:37
float particle_airfriction
Definition: csprogsdefs.qc:671
#define strstrofs
Definition: dpextensions.qh:42
const float VF_PERSPECTIVE
Definition: csprogsdefs.qc:199
float loadfont(string fontname, string fontmaps, string sizes, float slot, float fix_scale, float fix_voffset)
float particle_alpha
Definition: csprogsdefs.qc:666
float PMF_ONGROUND
Definition: csprogsdefs.qc:922
float frame
Definition: csprogsdefs.qc:109
const float TE_LIGHTNING2
Definition: csprogsdefs.qc:281
float E_ACTIVE
Definition: csprogsdefs.qc:780
float Q3SURFACEFLAG_NOIMPACT
float particle_size
Definition: csprogsdefs.qc:664
const float MASK_NORMAL
Definition: csprogsdefs.qc:164
float drawmask
Definition: csprogsdefs.qc:95
float nextthink
Definition: csprogsdefs.qc:121
float player_localentnum
Definition: csprogsdefs.qc:19
float DPCONTENTS_WATER
float FONT_CENTERPRINT
Definition: csprogsdefs.qc:826
const float RF_ADDITIVE
Definition: csprogsdefs.qc:169
float E_ORIGINANDVECTORS
Definition: csprogsdefs.qc:786
const float VF_VIEWPORT
Definition: csprogsdefs.qc:178
string(float f) ftos
float scale
Definition: projectile.qc:14
float FONT_USER1
Definition: csprogsdefs.qc:830
const float TE_LIGHTNING3
Definition: csprogsdefs.qc:284
entity enemy
Definition: csprogsdefs.qc:127
const float VF_SIZE_X
Definition: csprogsdefs.qc:177
float FONT_USER4
Definition: csprogsdefs.qc:833
const float STAT_TIMELIMIT
const float DRAWFLAG_MODULATE
Definition: csprogsdefs.qc:319
float GETTIME_REALTIME
float GETTIME_HIRES
#define tokenize_console
Definition: dpextensions.qh:24
float DPCONTENTS_OPAQUE
float FONT_CONSOLE
Definition: csprogsdefs.qc:822
const float PFL_GIBBED
Definition: csprogsdefs.qc:314
const float M_PI
Definition: csprogsdefs.qc:269
float CVAR_TYPEFLAG_ENGINE
const float FILE_WRITE
Definition: csprogsdefs.qc:233
float input_timelength
Definition: csprogsdefs.qc:59
const float PFLAGS_FULLDYNAMIC
Definition: csprogsdefs.qc:298
const float EF_RED
Definition: csprogsdefs.qc:307
const float CHAN_AUTO
Definition: csprogsdefs.qc:219
bool CSQC_ConsoleCommand(string command)
Definition: cl_cmd.qc:634
vector v
Definition: ent_cs.qc:116
const float SOLID_BSP
Definition: csprogsdefs.qc:248
const float STAT_HEALTH
Definition: csprogsdefs.qc:201
const float VF_ANGLES
Definition: csprogsdefs.qc:186
float log(float f)
const float MASK_ENGINEVIEWMODELS
Definition: csprogsdefs.qc:163
const float TRUE
Definition: csprogsdefs.qc:259
float DPCONTENTS_BODY
float flags
Definition: csprogsdefs.qc:129
float pflags
float CSQC_InputEvent(int bInputType, float nPrimary, float nSecondary)
Definition: main.qc:452
float lerpfrac3
float RAD2DEG
Definition: csprogsdefs.qc:962
float count
Definition: powerups.qc:22
#define strncasecmp
Definition: dpextensions.qh:60
float particle_angle
Definition: csprogsdefs.qc:684
#define skel_set_bone
Definition: post.qh:26
float PARTICLE_ORIENTED_DOUBLESIDED
Definition: csprogsdefs.qc:655
const vector VEC_1
Definition: csprogsdefs.qc:265
const float CHAN_WEAPON
Definition: csprogsdefs.qc:220
const float VF_SIZE_Y
Definition: csprogsdefs.qc:176
float Q3SURFACEFLAG_NODRAW
float PARTICLES_DRAWASTRAIL
vector view_punchangle
Definition: csprogsdefs.qc:151
float PT_BUBBLE
Definition: csprogsdefs.qc:643
float PRECACHE_PIC_NOTPERSISTENT
const float VF_DRAWWORLD
Definition: csprogsdefs.qc:190
const float STAT_SHELLS
Definition: csprogsdefs.qc:206
entity owner
Definition: csprogsdefs.qc:133
const float PFLAGS_NOSHADOW
Definition: csprogsdefs.qc:296
float CVAR_TYPEFLAG_HASDESCRIPTION
const float SOLID_TRIGGER
Definition: csprogsdefs.qc:245
#define ChangeYaw
Definition: pre.qh:3
const float false
Definition: csprogsdefs.qc:258
const float VF_DRAWENGINESBAR
Definition: csprogsdefs.qc:191
float FONT_NOTIFY
Definition: csprogsdefs.qc:824
float trace_inwater
Definition: csprogsdefs.qc:42
const float STAT_WEAPONMODEL
Definition: csprogsdefs.qc:202
float frame2time
vector v_right
Definition: csprogsdefs.qc:31
float(float f, float t, float n) CSQC_InputEvent
void CSQC_Init()
Definition: main.qc:45
#define tokenizebyseparator
Definition: dpextensions.qh:21
vector pmove_maxs
Definition: csprogsdefs.qc:57
const float SOLID_BBOX
Definition: csprogsdefs.qc:246
const float VF_FOV
Definition: csprogsdefs.qc:179
float PBLEND_INVMOD
Definition: csprogsdefs.qc:651
vector pos1
Definition: subs.qh:50
const float TE_GUNSHOTQUAD
Definition: csprogsdefs.qc:290
float drawsubpic(vector position, vector size, string pic, vector srcPosition, vector srcSize, vector rgb, float alpha, float flag)
float particle_velocityjitter
Definition: csprogsdefs.qc:674
#define adddynamiclight2
Definition: post.qh:30
const float TE_EXPLOSION2
Definition: csprogsdefs.qc:287
float DPCONTENTS_NODROP
setorigin(ent, v)
float dphitcontentsmask
const float TE_EXPLOSIONRGB
Definition: csprogsdefs.qc:289
const float VF_ANGLES_X
Definition: csprogsdefs.qc:187
float REFDEFFLAG_INTERMISSION
Definition: csprogsdefs.qc:926
const float VF_DRAWCROSSHAIR
Definition: csprogsdefs.qc:192
vector trace_plane_normal
Definition: csprogsdefs.qc:38
const float RF_EXTERNALMODEL
Definition: csprogsdefs.qc:167
float stringwidth_menu(string text, float allowColorCodes, vector size)
float DPCONTENTS_SLIME
#define trailparticles
Definition: csprogsdefs.qh:12
float frame3
float movevar_accelerate
Definition: csprogsdefs.qc:68
vector angles
Definition: csprogsdefs.qc:104
float DPCONTENTS_LIQUIDSMASK
#define use
Definition: csprogsdefs.qh:50
float trace_startsolid
Definition: csprogsdefs.qc:35
float PARTICLES_USECOLOR
float movetype
Definition: csprogsdefs.qc:98
float PARTICLE_SPARK
Definition: csprogsdefs.qc:654
float PRECACHE_PIC_FROMWAD
float particle_type
Definition: csprogsdefs.qc:658
float frame1time
#define sound(e, c, s, v, a)
Definition: sound.qh:52
vector absmin
Definition: csprogsdefs.qc:92
float CVAR_TYPEFLAG_SAVED
string netname
Definition: csprogsdefs.qc:125
float REFDEFFLAG_JUMPING
Definition: csprogsdefs.qc:924
const float STAT_MOVEVARS_TICRATE
const float LP_RTWORLD
Definition: csprogsdefs.qc:414
float PBLEND_ALPHA
Definition: csprogsdefs.qc:649
const float TE_EXPLOSION
Definition: csprogsdefs.qc:278
const float STAT_ITEMS
Definition: csprogsdefs.qc:215
float DPCONTENTS_DONOTENTER
const float TE_LIGHTNING1
Definition: csprogsdefs.qc:280
float MOVE_WORLDONLY
void end_sys_globals
Definition: csprogsdefs.qc:76
float PBLEND_ADD
Definition: csprogsdefs.qc:650
float trace_allsolid
Definition: csprogsdefs.qc:34
float PT_STATIC
Definition: csprogsdefs.qc:637
float movevar_airaccelerate
Definition: csprogsdefs.qc:69
const float VF_SIZE
Definition: csprogsdefs.qc:175
float particles_alphamax
float time
Definition: csprogsdefs.qc:16
float FONT_USER3
Definition: csprogsdefs.qc:832
#define strcasecmp
Definition: dpextensions.qh:57
vector origin
Definition: csprogsdefs.qc:101
vector velocity
Definition: csprogsdefs.qc:103
vector pos2
Definition: subs.qh:50
float particle_delaycollision
Definition: csprogsdefs.qc:683
float PARTICLE_BEAM
Definition: csprogsdefs.qc:656
vector view_punchvector
Definition: csprogsdefs.qc:152
int dir
Definition: impulse.qc:89
#define makevectors
Definition: post.qh:21
float trace_fraction
Definition: csprogsdefs.qc:36
#define chr2str
Definition: dpextensions.qh:48
#define getentityvec
Definition: post.qh:34
const float EF_SELECTABLE
Definition: csprogsdefs.qc:309
const float STAT_ACTIVEWEAPON
Definition: csprogsdefs.qc:210
#define skel_find_bone
Definition: dpextensions.qh:39
#define makestatic
Definition: post.qh:23
float entnum
Definition: csprogsdefs.qc:94
float player_localnum
Definition: csprogsdefs.qc:20
const float PFL_ONGROUND
Definition: csprogsdefs.qc:311
float particle_time
Definition: csprogsdefs.qc:668
float particle_qualityreduction
Definition: csprogsdefs.qc:675
vector particle_color1
Definition: csprogsdefs.qc:661
float movevar_friction
Definition: csprogsdefs.qc:71
float RF_DYNAMICMODELLIGHT
float FONT_MENU
Definition: csprogsdefs.qc:828
vector particle_color2
Definition: csprogsdefs.qc:662
const float EF_STARDUST
Definition: csprogsdefs.qc:308
vector gettaginfo_forward
float E_SCALE
Definition: csprogsdefs.qc:785
float volume
Definition: triggers.qh:47
float DPCONTENTS_CORPSE
const float VF_ORIGIN
Definition: csprogsdefs.qc:182
vector v_forward
Definition: csprogsdefs.qc:31
float DPCONTENTS_LAVA
float solid
Definition: csprogsdefs.qc:99
const float SOLID_CORPSE
Definition: csprogsdefs.qc:249
const float true
Definition: csprogsdefs.qc:257
float PT_ENTITYPARTICLE
Definition: csprogsdefs.qc:647
#define particleeffectnum(e)
Definition: effect.qh:3
const float VF_MIN
Definition: csprogsdefs.qc:172
const vector VEC_M1
Definition: csprogsdefs.qc:267