2 ==============================================================================
4 SOURCE FOR GLOBALVARS_T C STRUCTURE
5 MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
7 ==============================================================================
19 float force_retouch; // force all entities to touch triggers
20 // next frame. this is needed because
21 // non-moving things don't normally scan
22 // for triggers, and when a trigger is
23 // created (like a teleport trigger), it
24 // needs to catch everything.
25 // decremented each frame, so set to 2
26 // to guarantee everything is touched
33 float serverflags; // propagated from level to level, used to
34 // keep track of completed episodes
39 float found_secrets; // number of secrets found
40 float killed_monsters; // number of monsters killed
43 // spawnparms are used to encode information about clients across server
45 float parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
48 // global variables set by built in functions
50 vector v_forward, v_up, v_right; // set by makevectors()
52 // set by traceline / tracebox
54 float trace_startsolid;
57 vector trace_plane_normal;
58 float trace_plane_dist;
63 entity msg_entity; // destination of single entity writes
66 // required prog functions
68 void() main; // only for testing
72 void() PlayerPreThink;
73 void() PlayerPostThink;
77 void() PutClientInServer; // call after setting the parm1... parms
78 void() ClientDisconnect;
80 void() SetNewParms; // called when a client first connects to
81 // a server. sets parms so they can be
82 // saved off for restarts
84 void() SetChangeParms; // call to set parms for self so they can
85 // be saved for a level transition
88 //================================================
89 void end_sys_globals; // flag for structure dumping
90 //================================================
93 ==============================================================================
95 SOURCE FOR ENTVARS_T C STRUCTURE
96 MUST NOT BE MODIFIED, OR CRC ERRORS WILL APPEAR
98 ==============================================================================
102 // system fields (*** = do not set in prog code, maintained by C code)
104 .float modelindex; // *** model index in the precached list
105 .vector absmin, absmax; // *** origin + mins / maxs
107 .float ltime; // local time for entity
111 .vector origin; // ***
112 .vector oldorigin; // ***
117 .vector punchangle; // temp angle adjust from damage or recoil
119 .string classname; // spawn function
125 .vector mins, maxs; // bounding box extents reletive to origin
126 .vector size; // maxs - mins
131 .void() blocked; // for doors or plats, called when can't push other
134 .entity groundentity;
139 .float weapon; // one of the IT_SHOTGUN, etc flags
143 .float ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
145 .float items; // bit flags
151 .vector view_ofs; // add to origin to get eye point
154 .float button0; // fire
155 .float button1; // use
156 .float button2; // jump
158 .float impulse; // weapon changes
161 .vector v_angle; // view / targeting angle for players
162 .float idealpitch; // calculated pitch angle for lookup up slopes
174 .float max_health; // players maximum health is stored here
176 .float teleport_time; // don't back up
178 .float armortype; // save this fraction of incoming damage
181 .float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
182 .float watertype; // a contents value
189 .entity goalentity; // a movetarget or an enemy
196 // damage is accumulated through a frame. and sent as one single
197 // message, so the super shotgun doesn't generate huge messages
200 .entity dmg_inflictor;
202 .entity owner; // who launched a missile
203 .vector movedir; // mostly for doors, but also used for waterjump
205 .string message; // trigger messages
207 .float sounds; // either a cd track number or sound number
209 .string noise, noise1, noise2, noise3; // contains names of wavs to play
211 //================================================
212 void end_sys_fields; // flag for structure dumping
213 //================================================
216 ==============================================================================
220 ==============================================================================
234 float FL_CLIENT = 8; // set for all client edicts
235 float FL_INWATER = 16; // for enter / leave water splash
236 float FL_MONSTER = 32;
237 float FL_GODMODE = 64; // player cheat
238 float FL_NOTARGET = 128; // player cheat
239 float FL_ITEM = 256; // extra wide size for bonus items
240 float FL_ONGROUND = 512; // standing on something
241 float FL_PARTIALGROUND = 1024; // not all corners are valid
242 float FL_WATERJUMP = 2048; // player jumping out of water
243 float FL_JUMPRELEASED = 4096; // for jump debouncing
245 // edict.movetype values
246 float MOVETYPE_NONE = 0; // never moves
247 //float MOVETYPE_ANGLENOCLIP = 1;
248 //float MOVETYPE_ANGLECLIP = 2;
249 float MOVETYPE_WALK = 3; // players only
250 float MOVETYPE_STEP = 4; // discrete, not real time unless fall
251 float MOVETYPE_FLY = 5;
252 float MOVETYPE_TOSS = 6; // gravity
253 float MOVETYPE_PUSH = 7; // no clip to world, push and crush
254 float MOVETYPE_NOCLIP = 8;
255 float MOVETYPE_FLYMISSILE = 9; // fly with extra size against monsters
256 float MOVETYPE_BOUNCE = 10;
257 float MOVETYPE_BOUNCEMISSILE = 11; // bounce with extra size
259 // edict.solid values
260 float SOLID_NOT = 0; // no interaction with other objects
261 float SOLID_TRIGGER = 1; // touch on edge, but not blocking
262 float SOLID_BBOX = 2; // touch on edge, block
263 float SOLID_SLIDEBOX = 3; // touch on edge, but not an onground
264 float SOLID_BSP = 4; // bsp clip, touch on edge, block
267 float RANGE_MELEE = 0;
268 float RANGE_NEAR = 1;
275 float DEAD_DYING = 1;
277 float DEAD_RESPAWNABLE = 3;
278 float DEAD_RESPAWNING = 4; // dead, waiting for buttons to be released
283 float DAMAGE_YES = 1;
284 float DAMAGE_AIM = 2;
288 float IT_SHOTGUN = 1;
289 float IT_SUPER_SHOTGUN = 2;
290 float IT_NAILGUN = 4;
291 float IT_SUPER_NAILGUN = 8;
292 float IT_GRENADE_LAUNCHER = 16;
293 float IT_ROCKET_LAUNCHER = 32;
294 float IT_LIGHTNING = 64;
295 float IT_EXTRA_WEAPON = 128;
297 float IT_SHELLS = 256;
298 float IT_NAILS = 512;
299 float IT_ROCKETS = 1024;
300 float IT_CELLS = 2048;
302 float IT_ARMOR1 = 8192;
303 float IT_ARMOR2 = 16384;
304 float IT_ARMOR3 = 32768;
305 float IT_SUPERHEALTH = 65536;
307 float IT_KEY1 = 131072;
308 float IT_KEY2 = 262144;
310 float IT_INVISIBILITY = 524288;
311 float IT_INVULNERABILITY = 1048576;
312 float IT_SUIT = 2097152;
313 float IT_QUAD = 4194304;
315 // point content values
317 float CONTENT_EMPTY = -1;
318 float CONTENT_SOLID = -2;
319 float CONTENT_WATER = -3;
320 float CONTENT_SLIME = -4;
321 float CONTENT_LAVA = -5;
322 float CONTENT_SKY = -6;
325 float STATE_BOTTOM = 1;
327 float STATE_DOWN = 3;
329 vector VEC_ORIGIN = '0 0 0';
330 vector VEC_HULL_MIN = '-16 -16 -24';
331 vector VEC_HULL_MAX = '16 16 32';
333 vector VEC_HULL2_MIN = '-32 -32 -24';
334 vector VEC_HULL2_MAX = '32 32 64';
337 float SVC_TEMPENTITY = 23;
338 float SVC_KILLEDMONSTER = 27;
339 float SVC_FOUNDSECRET = 28;
340 float SVC_INTERMISSION = 30;
341 float SVC_FINALE = 31;
342 float SVC_CDTRACK = 32;
343 float SVC_SELLSCREEN = 33;
347 float TE_SUPERSPIKE = 1;
348 float TE_GUNSHOT = 2;
349 float TE_EXPLOSION = 3;
350 float TE_TAREXPLOSION = 4;
351 float TE_LIGHTNING1 = 5;
352 float TE_LIGHTNING2 = 6;
353 float TE_WIZSPIKE = 7;
354 float TE_KNIGHTSPIKE = 8;
355 float TE_LIGHTNING3 = 9;
356 float TE_LAVASPLASH = 10;
357 float TE_TELEPORT = 11;
360 // channel 0 never willingly overrides
361 // other channels (1-7) allways override a playing sound on that channel
363 float CHAN_WEAPON = 1;
364 float CHAN_VOICE = 2;
371 float ATTN_STATIC = 3;
375 float UPDATE_GENERAL = 0;
376 float UPDATE_STATIC = 1;
377 float UPDATE_BINARY = 2;
378 float UPDATE_TEMP = 3;
382 float EF_BRIGHTFIELD = 1;
383 float EF_MUZZLEFLASH = 2;
384 float EF_BRIGHTLIGHT = 4;
385 float EF_DIMLIGHT = 8;
389 float MSG_BROADCAST = 0; // unreliable to all
390 float MSG_ONE = 1; // reliable to one (msg_entity)
391 float MSG_ALL = 2; // reliable to all
392 float MSG_INIT = 3; // write to the init string
394 //===========================================================================
400 void(vector ang) makevectors = #1; // sets v_forward, etc globals
401 void(entity e, vector o) setorigin = #2;
402 void(entity e, string m) setmodel = #3; // set movetype and solid first
403 void(entity e, vector min, vector max) setsize = #4;
405 void() break_to_debugger = #6;
406 float() random = #7; // returns 0 - 1
407 void(entity e, float chan, string samp, float vol, float atten) sound = #8;
408 vector(vector v) normalize = #9;
409 void(string e, ...) error = #10;
410 void(string e, ...) objerror = #11;
411 float(vector v) vlen = #12;
412 float(vector v) vectoyaw = #13;
413 entity() spawn = #14;
414 void(entity e) remove = #15;
416 // sets trace_* globals
417 // nomonsters can be:
418 // An entity will also be ignored for testing if forent == test,
419 // forent->owner == test, or test->owner == forent
420 // a forent of world is ignored
421 void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;
423 entity() checkclient = #17; // returns a client to look for
424 entity(entity start, .string fld, string match) find = #18;
425 string(string s) precache_sound = #19;
426 string(string s) precache_model = #20;
427 void(entity client, string s, ...)stuffcmd = #21;
428 entity(vector org, float rad) findradius = #22;
429 void(string s, ...) bprint = #23;
430 void(entity client, string s, ...) sprint = #24;
431 void(string s, ...) dprint = #25;
432 string(float f) ftos = #26;
433 string(vector v) vtos = #27;
434 void() coredump = #28; // prints all edicts
435 void() traceon = #29; // turns statment trace on
436 void() traceoff = #30;
437 void(entity e) eprint = #31; // prints an entire edict
438 float(float yaw, float dist) walkmove = #32; // returns TRUE or FALSE
440 float() droptofloor= #34; // TRUE if landed on floor
441 void(float style, string value) lightstyle = #35;
442 float(float v) rint = #36; // round to nearest int
443 float(float v) floor = #37; // largest integer <= v
444 float(float v) ceil = #38; // smallest integer >= v
446 float(entity e) checkbottom = #40; // true if self is on ground
447 float(vector v) pointcontents = #41; // returns a CONTENT_*
449 float(float f) fabs = #43;
450 vector(entity e, float speed) aim = #44; // returns the shooting vector
451 float(string s) cvar = #45; // return cvar.value
452 void(string s, ...) localcmd = #46; // put string into local que
453 entity(entity e) nextent = #47; // for looping through all ents
454 void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
455 void() ChangeYaw = #49; // turn towards self.ideal_yaw
458 vector(vector v) vectoangles = #51;
461 // direct client message generation
463 void(float to, float f) WriteByte = #52;
464 void(float to, float f) WriteChar = #53;
465 void(float to, float f) WriteShort = #54;
466 void(float to, float f) WriteLong = #55;
467 void(float to, float f) WriteCoord = #56;
468 void(float to, float f) WriteAngle = #57;
469 void(float to, string s, ...) WriteString = #58;
470 void(float to, entity s) WriteEntity = #59;
473 // broadcast client message generation
476 // void(float f) bWriteByte = #59;
477 // void(float f) bWriteChar = #60;
478 // void(float f) bWriteShort = #61;
479 // void(float f) bWriteLong = #62;
480 // void(float f) bWriteCoord = #63;
481 // void(float f) bWriteAngle = #64;
482 // void(string s) bWriteString = #65;
483 // void(entity e) bWriteEntity = #66;
485 void(float step) movetogoal = #67;
487 string(string s) precache_file = #68; // no effect except for -copy
488 void(entity e) makestatic = #69;
489 void(string s) changelevel = #70;
493 void(string var, string val) cvar_set = #72; // sets cvar.value
495 void(entity client, string s, ...) centerprint = #73; // sprint, but in middle
497 void(vector pos, string samp, float vol, float atten) ambientsound = #74;
499 string(string s) precache_model2 = #75; // registered version only
500 string(string s) precache_sound2 = #76; // registered version only
501 string(string s) precache_file2 = #77; // registered version only
503 void(entity e) setspawnparms = #78; // set parm1... to the
504 // values at level start
507 //============================================================================