From 54f6c830deb4dbe750e0a7338a8f0146a2456ab7 Mon Sep 17 00:00:00 2001 From: Spoike Date: Sun, 7 Jun 2009 15:46:12 +0000 Subject: [PATCH] movevars and pmove are obsolete. Bit of a code cleanup. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3213 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- quakec/csqctest/src/cs/csbuiltins.qc | 27 +++++--- quakec/csqctest/src/cs/entrypoints.qc | 62 +++++++++++++++---- quakec/csqctest/src/cs/hud.qc | 89 +++++++++++++-------------- quakec/csqctest/src/cs/prediction.qc | 2 +- quakec/csqctest/src/cs/system.qc | 48 ++++++++++----- quakec/csqctest/src/optscsqc.qc | 3 +- quakec/csqctest/src/progs.src | 2 + quakec/csqctest/src/ss/ai.qc | 10 +-- quakec/csqctest/src/ss/client.qc | 4 +- quakec/csqctest/src/ss/defs.qc | 3 +- quakec/csqctest/src/ss/player.qc | 2 +- quakec/csqctest/src/ss/weapons.qc | 16 ++++- 12 files changed, 172 insertions(+), 96 deletions(-) create mode 100644 quakec/csqctest/src/progs.src diff --git a/quakec/csqctest/src/cs/csbuiltins.qc b/quakec/csqctest/src/cs/csbuiltins.qc index 4b8dbf8b3..964e97133 100644 --- a/quakec/csqctest/src/cs/csbuiltins.qc +++ b/quakec/csqctest/src/cs/csbuiltins.qc @@ -26,12 +26,12 @@ float(string name) iscachedpic = #316; // (EXT_CSQC) string(string name, float trywad) precache_pic = #317; // (EXT_CSQC) vector(string picname) draw_getimagesize = #318; // (EXT_CSQC) void(string name) freepic = #319; // (EXT_CSQC) -float(vector position, float character, vector scale, vector rgb, float alpha, ...) drawcharacter = #320; // (EXT_CSQC, [EXT_CSQC_???]) -float(vector position, string text, vector scale, vector rgb, float alpha, ...) drawstring = #321; // (EXT_CSQC, [EXT_CSQC_???]) -float(vector position, string pic, vector size, vector rgb, float alpha, ...) drawpic = #322; // (EXT_CSQC, [EXT_CSQC_???]) -float(vector position, vector size, vector rgb, float alpha, ...) drawfill = #323; // (EXT_CSQC, [EXT_CSQC_???]) -void(float x, float y, float width, float height) drawsetcliparea = #324; // (EXT_CSQC_???) -void(void) drawresetcliparea = #325; // (EXT_CSQC_???) +void(vector position, float character, vector scale, vector rgb, float alpha, ...) drawcharacter = #320; // (EXT_CSQC, [EXT_CSQC_???]) +void(vector position, string text, vector scale, vector rgb, float alpha, ...) drawrawstring = #321; // (EXT_CSQC, [EXT_CSQC_???]) +void(vector position, string pic, vector size, vector rgb, float alpha, ...) drawpic = #322; // (EXT_CSQC, [EXT_CSQC_???]) +void(vector position, vector size, vector rgb, float alpha, ...) drawfill = #323; // (EXT_CSQC, [EXT_CSQC_???]) + +void(vector position, string text, vector scale, float alpha, ...) drawstring = #326; // (EXT_CSQC_1) float(float stnum) getstatf = #330; // (EXT_CSQC) float(float stnum) getstati = #331; // (EXT_CSQC) @@ -42,6 +42,7 @@ string(float mdlindex) modelnameforindex = #334; // (EXT_CSQC) float(string effectname) particleeffectforname = #335; // (EXT_CSQC) #ifdef WORKINDP +//DP got the arguments the wrong way around... void(entity ent, float effectnum, vector start, vector end) trailparticles_dp = #336; // (EXT_CSQC), void(float effectnum, entity ent, vector start, vector end) trailparticles = { @@ -81,4 +82,16 @@ float() readlong = #363; // (EXT_CSQC) float() readcoord = #364; // (EXT_CSQC) float() readangle = #365; // (EXT_CSQC) string() readstring = #366; // (EXT_CSQC) -string() readfloat = #367; // (EXT_CSQC) \ No newline at end of file +string() readfloat = #367; // (EXT_CSQC) + +void(string model, void(float isnew) updatefunc, float flags) deltalisten = #371; +//void(float flags, float simtime) readserverentitystate = #369; +#define RSES_NOLERP 1 //only really for use on predicted player entities +#define RSES_AUTOROTATE 0 +#define RSES_NOROTATE 2 +#define RSES_AUTOTRAILS 0 +#define RSES_NOTRAILS 4 +#define RSES_AUTOLIGHTS 0 +#define RSES_NOLIGHTS 8 + +void(string evname, string argdesc, ...) sendevent = #359; diff --git a/quakec/csqctest/src/cs/entrypoints.qc b/quakec/csqctest/src/cs/entrypoints.qc index 545cca289..1d60f803e 100644 --- a/quakec/csqctest/src/cs/entrypoints.qc +++ b/quakec/csqctest/src/cs/entrypoints.qc @@ -1,18 +1,9 @@ -void(string model, void(float isnew) updatefunc, float flags) deltalisten = #371; -void(float flags, float simtime) readserverentitystate = #369; -#define RSES_NOLERP 1 //only really for use on predicted player entities -#define RSES_AUTOROTATE 0 -#define RSES_NOROTATE 2 -#define RSES_AUTOTRAILS 0 -#define RSES_NOTRAILS 4 -#define RSES_AUTOLIGHTS 0 -#define RSES_NOLIGHTS 8 - #ifdef WORKINDP #define show_scoreboard sb_showscores #endif float show_scoreboard; +string dbgstr; //check engine extensions, and give suitable warning void() checkengineversion = @@ -38,6 +29,14 @@ float(float f1, float f2) testfunc2 = return f1+f2; } float testarray[2]; + +float(float p1, float p2) a = {return p1+p2+5;}; +float() b = {return 86;}; +float(float p1) c = {return p1+566;}; +float() d = {return 7773;}; + +#pragma TARGET ID + void() checkcompilerversion = { local entity testent; @@ -53,6 +52,8 @@ void() checkcompilerversion = testarray[0] = 5; testarray[1] = 6; + if (testfunc (a(b(), c(d()))) != 86+5+7773+566) + print("compiler failed on a(b(), c(d()))\n"); if (testfunc(5)+testfunc(6) != 11) print("compiler failed on f()+f()\n"); if (testfunc2(5, testfunc(6)) != 11) @@ -63,6 +64,9 @@ void() checkcompilerversion = print("compiler failed on a[0]+a[1]\n"); }; +#ifdef FTEDEPENDANT +# pragma TARGET FTE +#endif void(float isnew) RefreshPlayer; @@ -141,6 +145,9 @@ float(string str) CSQC_ConsoleCommand = args = tokenize(str); switch(argv(0)) { + case "test": + sendevent("testevent", "fsev", 64, "hello world", player_local, '73 72 71'); + break; case "tetris": Menu_Tetris(); break; @@ -181,6 +188,18 @@ float(string str) CSQC_ConsoleCommand = return true; }; +void(string msg, float type) CSQC_Parse_Print = +{ + print("parse_print(", ftos(type), "): "); + print(msg); + +cprint(msg); + + if (dbgstr) + strunzone(dbgstr); + dbgstr = strzone(msg); +}; + void() CSQC_Ent_Remove = //the ent disappeared on the server. { if (self.removefunc) @@ -334,7 +353,12 @@ void(float width, float height, float do2d) CSQC_UpdateView = setviewprop(VF_MIN, '0 0 0'); setviewprop(VF_SIZE_X, width); setviewprop(VF_SIZE_Y, height); - +#if 0 + setviewprop(VF_MIN_X, width/2); + setviewprop(VF_MIN_Y, height/2); + setviewprop(VF_SIZE_X, width/2); + setviewprop(VF_SIZE_Y, height/2); +#endif addentities(MASK_NORMAL|MASK_ENGINE); if (player_local) @@ -357,7 +381,15 @@ void(float width, float height, float do2d) CSQC_UpdateView = } renderscene(); - +#if 0 +clearscene(); + setviewprop(VF_MIN_X, 0); + setviewprop(VF_MIN_Y, 0); + setviewprop(VF_SIZE_X, width/2); + setviewprop(VF_SIZE_Y, height/2); + addentities(MASK_NORMAL|MASK_ENGINE); +renderscene(); +#endif if (do2d) { if (hudtype) @@ -365,5 +397,11 @@ void(float width, float height, float do2d) CSQC_UpdateView = Menu_Think(); } + + if (dbgstr) + { + drawrawstring('16 64 0', dbgstr, '16 16 16', '1 1 1', 0.5); + drawstring('16 80 0', dbgstr, '16 16 16', 0.5); + } }; diff --git a/quakec/csqctest/src/cs/hud.qc b/quakec/csqctest/src/cs/hud.qc index 9e052ecbe..4a382619d 100644 --- a/quakec/csqctest/src/cs/hud.qc +++ b/quakec/csqctest/src/cs/hud.qc @@ -23,7 +23,7 @@ string anumber[10] = { "anum_8", "anum_9" }; -void Hud_Init(void) +void() Hud_Init { float i; precache_pic("sbar", true); @@ -37,7 +37,7 @@ void Hud_Init(void) vector screensize; float items, items2; -void Hud_DrawLargeValue(vector pos, float value, float threshhold) +void(vector pos, float value, float threshhold) Hud_DrawLargeValue = { float c; float len; @@ -77,7 +77,7 @@ void Hud_DrawLargeValue(vector pos, float value, float threshhold) } }; -void Hud_DrawAmmoCount(float type, vector pos, float drawback) +void(float type, vector pos, float drawback) Hud_DrawAmmoCount = { string s; float value; @@ -110,11 +110,11 @@ string weaponnames[7] = { "inv_srlaunch", "inv_lightng" }; -void Hud_DrawWeapon(float num, vector pos) +void(float num, vector pos) Hud_DrawWeapon { drawpic(pos, weaponnames[num], '24 16 0', '1 1 1', 1, 0); }; -void Hud_DrawWeaponWide(float num, vector pos) //for LG +void(float num, vector pos) Hud_DrawWeaponWide //for LG { drawpic(pos, weaponnames[num], '48 16 0', '1 1 1', 1, 0); }; @@ -131,7 +131,7 @@ string(float f, float chars, string lead) FormatFloat return s; }; -void() Hud_CoopScores_SBar = +void(vector pos) Hud_CoopScores_SBar = { string s; float secs; @@ -141,57 +141,53 @@ void() Hud_CoopScores_SBar = drawpic(sbar, "scorebar", '320 24 0', '1 1 1', 0.333, 0); s = strcat("Monsters:", FormatFloat(getstati(STAT_KILLEDMONSTERS), 3, " "), "/", FormatFloat(getstati(STAT_TOTALMONSTERS), 3, " ")); - drawstring(sbar + '8 4', s, '8 8 8', '1 1 1', 1, 0); + drawstring(sbar + '8 4', s, '8 8 8', 1, 0); s = strcat("Secrets :", FormatFloat(getstati(STAT_FOUNDSECRETS), 3, " "), "/", FormatFloat(getstati(STAT_TOTALSECRETS), 3, " ")); - drawstring(sbar + '8 12', s, '8 8 8', '1 1 1', 1, 0); + drawstring(sbar + '8 12', s, '8 8 8', 1, 0); mins = floor(time/60); secs = floor(time - mins*60); s = strcat("Time :", FormatFloat(mins, 3, " "), ":", FormatFloat(secs, 2, "0")); - drawstring(sbar + '184 4', s, '8 8 8', '1 1 1', 1, 0); + drawstring(sbar + '184 4', s, '8 8 8', 1, 0); - drawstring(sbar + '232 12' - strlen(levelname)*'4 0', levelname, '8 8 8', '1 1 1', 1, 0); + drawstring(sbar + '232 12' - strlen(levelname)*'4 0', levelname, '8 8 8', 1, 0); }; -void Hud_DrawSBar(void) +void Hud_DrawSBar(vector pos) { - vector sbar; - sbar = screensize_y * ' 0 1 0' - '0 24 0'; - drawpic(sbar, "sbar", '320 24 0', '1 1 1', 0.333, 0); + drawpic(pos, "sbar", '320 24 0', '1 1 1', 0.333, 0); if (items & IT_INVULNERABILITY) { - drawpic(sbar, "disc", '24 24 0', '1 1 1', 1, 0); - Hud_DrawLargeValue(sbar+'24 0 0', 999, 25); + drawpic(pos, "disc", '24 24 0', '1 1 1', 1, 0); + Hud_DrawLargeValue(pos+'24 0 0', 999, 25); } else { - Hud_DrawLargeValue(sbar+'24 0 0', getstati(STAT_ARMOR), 25); + Hud_DrawLargeValue(pos+'24 0 0', getstati(STAT_ARMOR), 25); if (items & IT_ARMOR3) - drawpic(sbar, "sb_armor3", '24 24 0', '1 1 1', 1, 0); + drawpic(pos, "sb_armor3", '24 24 0', '1 1 1', 1, 0); else if (items & IT_ARMOR2) - drawpic(sbar, "sb_armor2", '24 24 0', '1 1 1', 1, 0); + drawpic(pos, "sb_armor2", '24 24 0', '1 1 1', 1, 0); else if (items & IT_ARMOR1) - drawpic(sbar, "sb_armor1", '24 24 0', '1 1 1', 1, 0); + drawpic(pos, "sb_armor1", '24 24 0', '1 1 1', 1, 0); } - Hud_DrawLargeValue(sbar+'136 0 0', getstati(STAT_HEALTH), 25); + Hud_DrawLargeValue(pos+'136 0 0', getstati(STAT_HEALTH), 25); if (items & IT_SHELLS) - drawpic(sbar+'224 0 0', "sb_shells", '24 24 0', '1 1 1', 1, 0); + drawpic(pos+'224 0 0', "sb_shells", '24 24 0', '1 1 1', 1, 0); else if (items & IT_NAILS) - drawpic(sbar+'224 0 0', "sb_nails", '24 24 0', '1 1 1', 1, 0); + drawpic(pos+'224 0 0', "sb_nails", '24 24 0', '1 1 1', 1, 0); else if (items & IT_ROCKETS) - drawpic(sbar+'224 0 0', "sb_rocket", '24 24 0', '1 1 1', 1, 0); + drawpic(pos+'224 0 0', "sb_rocket", '24 24 0', '1 1 1', 1, 0); else if (items & IT_CELLS) - drawpic(sbar+'224 0 0', "sb_cells", '24 24 0', '1 1 1', 1, 0); - Hud_DrawLargeValue(sbar+'248 0 0', getstati(STAT_AMMO), 10); + drawpic(pos+'224 0 0', "sb_cells", '24 24 0', '1 1 1', 1, 0); + Hud_DrawLargeValue(pos+'248 0 0', getstati(STAT_AMMO), 10); }; -void Hud_DrawIBar(void) +void Hud_DrawIBar(vector pos) { - vector pos; - pos= screensize_y * ' 0 1 0' - '0 48 0'; drawpic(pos, "ibar", '320 24 0', '1 1 1', 0.333, 0); if (items & IT_SHOTGUN) @@ -209,10 +205,10 @@ void Hud_DrawIBar(void) if (items & IT_LIGHTNING) Hud_DrawWeaponWide(6, pos+'144 8 0'); - Hud_DrawAmmoCount(0, pos + '6 0 0', false); - Hud_DrawAmmoCount(1, pos + '54 0 0', false); - Hud_DrawAmmoCount(2, pos + '102 0 0', false); - Hud_DrawAmmoCount(3, pos + '150 0 0', false); + Hud_DrawAmmoCount(0, pos + '10 0 0', false); + Hud_DrawAmmoCount(1, pos + '58 0 0', false); + Hud_DrawAmmoCount(2, pos + '106 0 0', false); + Hud_DrawAmmoCount(3, pos + '154 0 0', false); if (items & IT_KEY1) drawpic(pos+'192 8 0', "sb_key1", '16 16 0', '1 1 1', 1, 0); @@ -343,26 +339,27 @@ void Hud_DrawQ3Head(vector topleft, vector sz, string skinname, vector ang) hud3ditem.skin = 0; } -void Hud_Q3(void) +void Hud_Q3(vector pos) { - vector sbar; - sbar = screensize_y * ' 0 1 0' - '0 24 0'; + Hud_Draw3dItem(pos+'224 0', '24 24', "models/powerups/ammo/rocketam.md3", '70 0 0', '0 90 0' + ('0 1 0'*20)*sin(time)); + Hud_Draw3dItem(pos+'0 0', '24 24', "models/powerups/armor/armor_red.md3", '80 0 -10', '0 1 0'*360*(time/6)); + Hud_DrawQ3Head(pos+'112 0', '24 24', cvar_string("cg_forceskin"), '0 180 0'+'0 20 0'*sin(time)); - Hud_Draw3dItem(sbar+'224 0', '24 24', "models/powerups/ammo/rocketam.md3", '70 0 0', '0 90 0' + ('0 1 0'*20)*sin(time)); - Hud_Draw3dItem(sbar+'0 0', '24 24', "models/powerups/armor/armor_red.md3", '80 0 -10', '0 1 0'*360*(time/6)); - Hud_DrawQ3Head(sbar+'112 0', '24 24', cvar_string("cg_forceskin"), '0 180 0'+'0 20 0'*sin(time)); - - Hud_DrawQ3Number(sbar+'24 0 0', getstati(STAT_ARMOR), '1 1 1'); - Hud_DrawQ3Number(sbar+'136 0 0', getstati(STAT_HEALTH), '1 1 1'); - Hud_DrawQ3Number(sbar+'248 0 0', getstati(STAT_AMMO), '1 1 1'); + Hud_DrawQ3Number(pos+'24 0 0', getstati(STAT_ARMOR), '1 1 1'); + Hud_DrawQ3Number(pos+'136 0 0', getstati(STAT_HEALTH), '1 1 1'); + Hud_DrawQ3Number(pos+'248 0 0', getstati(STAT_AMMO), '1 1 1'); } nonstatic void Hud_Draw(float hudtype, float scoreboard, float width, float height) { + vector pos; screensize_x = width; screensize_y = height; screensize_z = 0; + pos_x = (screensize_x-320)/2; + pos_y = screensize_y; + items = getstatbits(STAT_ITEMS, 0, 23); items2 = getstatbits(STAT_ITEMS, 23, 9); @@ -376,12 +373,12 @@ nonstatic void Hud_Draw(float hudtype, float scoreboard, float width, float heig { if (scoreboard) { - Hud_CoopScores_SBar(); + Hud_CoopScores_SBar(pos - '0 24 0'); } else { - Hud_DrawSBar(); + Hud_DrawSBar(pos - '0 24 0'); } - Hud_DrawIBar(); + Hud_DrawIBar(pos - '0 48 0'); } }; diff --git a/quakec/csqctest/src/cs/prediction.qc b/quakec/csqctest/src/cs/prediction.qc index b6c6381d9..c479dca1b 100644 --- a/quakec/csqctest/src/cs/prediction.qc +++ b/quakec/csqctest/src/cs/prediction.qc @@ -181,7 +181,7 @@ nonstatic void(entity ent) Pred_UpdateLocalMovement = Pred_RunMovement(ent, clientcommandframe); - if (ent.origin_z > pmove_step_oldz+8 && ent.origin_z < pmove_step_oldz+24 && pmove_vel_z == 0) + if (ent.origin_z > pmove_step_oldz+8 && ent.origin_z < pmove_step_oldz+24 && ent.velocity_z == 0) { //evaluate out the remaining old step if (pmove_steptime - time > 0) diff --git a/quakec/csqctest/src/cs/system.qc b/quakec/csqctest/src/cs/system.qc index ff5f80c86..1f9fcf683 100644 --- a/quakec/csqctest/src/cs/system.qc +++ b/quakec/csqctest/src/cs/system.qc @@ -15,7 +15,9 @@ #define CSQC 1 #endif -#pragma noref 1 +#ifdef FTEQCC +#pragma noref 1 //remove warnings about unreferenced variables. +#endif /* ============================================================================== @@ -32,6 +34,7 @@ entity self; entity other; entity world; float time; +float cltime; float frametime; float player_localentnum; //the entnum @@ -51,6 +54,9 @@ float intermission; //non-zero if the server sent an svc_intermission. // global variables set by built in functions // vector v_forward, v_up, v_right; // set by makevectors() +#ifndef WORKINDP +vector view_angles; +#endif // set by traceline / tracebox float trace_allsolid; @@ -69,19 +75,22 @@ void() CSQC_Shutdown; float(float f, float t, float n) CSQC_InputEvent; void(float width, float height, float do2d) CSQC_UpdateView; float(string s) CSQC_ConsoleCommand; -#endif //these fields are read and set by the default player physics vector pmove_org; vector pmove_vel; vector pmove_mins; vector pmove_maxs; +#endif + //retrieved from the current movement commands (read by player physics) float input_timelength; vector input_angles; vector input_movevalues; //forwards, right, up. float input_buttons; //attack, use, jump (default physics only uses jump) +float input_impulse; +#ifdef WORKINDP float movevar_gravity; float movevar_stopspeed; float movevar_maxspeed; @@ -92,6 +101,7 @@ float movevar_wateraccelerate; float movevar_friction; float movevar_waterfriction; float movevar_entgravity; //the local player's gravity field. Is a multiple (1 is the normal value) +#endif //================================================ void end_sys_globals; // flag for structure dumping @@ -123,6 +133,9 @@ void end_sys_globals; // flag for structure dumping .vector velocity; .vector angles; .vector avelocity; +#ifndef WORKINDP +.float pmove_flags; +#endif .string classname; // spawn function @@ -132,20 +145,22 @@ void end_sys_globals; // flag for structure dumping .string model; .float frame; #ifndef WORKINDP +.float frame1time; //for automatic framegroups. .float frame2; +.float frame2time; .float lerpfrac; //the ammount of frame2 to use. #endif .float skin; -#ifdef WORKINDP .float effects; -#endif .vector mins, maxs; // bounding box extents reletive to origin .vector size; // maxs - mins .void() touch; +#ifdef WORKINDP .void() use; +#endif .void() think; .void() blocked; // for doors or plats, called when can't push other @@ -157,7 +172,7 @@ void end_sys_globals; // flag for structure dumping .string netname; #endif -.entity enemy; +.entity enemy; .float flags; @@ -169,24 +184,23 @@ void end_sys_globals; // flag for structure dumping void end_sys_fields; // flag for structure dumping //================================================ -#ifdef WORKINDP -.float frame2; -.float renderflags; -.float lerpfrac; +#ifdef FTEQCC +#pragma noref 0 #endif + +#ifdef WORKINDP +.float frame2; +.float frame1time; +.float frame2time; +.float renderflags; +.float lerpfrac; + vector view_angles; +#endif //optional extras .float alpha; .float scale; .float forceshader; //an fte extension, to force a q3 shader upon a model .float fatness; //an fte feature, to expand alias models along thier normals. - -float pmove_jump_held; -float pmove_waterjumptime; - -.float frame1time; //for automatic framegroups. -.float frame2time; - -#pragma noref 0 \ No newline at end of file diff --git a/quakec/csqctest/src/optscsqc.qc b/quakec/csqctest/src/optscsqc.qc index 97eda0c2c..376bac4da 100644 --- a/quakec/csqctest/src/optscsqc.qc +++ b/quakec/csqctest/src/optscsqc.qc @@ -1 +1,2 @@ -#define CSQC \ No newline at end of file +#define CSQC +//#pragma compress 1 diff --git a/quakec/csqctest/src/progs.src b/quakec/csqctest/src/progs.src new file mode 100644 index 000000000..987e498af --- /dev/null +++ b/quakec/csqctest/src/progs.src @@ -0,0 +1,2 @@ +#pragma sourcefile csprogs.src +#pragma sourcefile ssqc.src \ No newline at end of file diff --git a/quakec/csqctest/src/ss/ai.qc b/quakec/csqctest/src/ss/ai.qc index e0b2b8bf5..390f1f2d6 100644 --- a/quakec/csqctest/src/ss/ai.qc +++ b/quakec/csqctest/src/ss/ai.qc @@ -440,7 +440,7 @@ stagger back a bit */ void(float dist) ai_pain = { - self.Version++; //if nothing else happened, we animated. + self.SendFlags = FULLSEND; //if nothing else happened, we animated. ai_back (dist); /* @@ -462,7 +462,7 @@ stagger back a bit */ void(float dist) ai_painforward = { - self.Version++; //if nothing else happened, we animated. + self.SendFlags = FULLSEND; //if nothing else happened, we animated. walkmove (self.ideal_yaw, dist); }; @@ -476,7 +476,7 @@ The monster is walking it's beat */ void(float dist) ai_walk = { - self.Version++; //if nothing else happened, we animated. + self.SendFlags = FULLSEND; //if nothing else happened, we animated. movedist = dist; @@ -502,7 +502,7 @@ The monster is staying in one place for a while, with slight angle turns */ void() ai_stand = { - self.Version++; //if nothing else happened, we animated. + self.SendFlags = FULLSEND; //if nothing else happened, we animated. if (FindTarget ()) return; @@ -681,7 +681,7 @@ The monster has an enemy it is trying to kill */ void(float dist) ai_run = { - self.Version++; //if nothing else happened, we animated. + self.SendFlags = FULLSEND; //if nothing else happened, we animated. movedist = dist; // see if the enemy is dead diff --git a/quakec/csqctest/src/ss/client.qc b/quakec/csqctest/src/ss/client.qc index 72037b7ce..2d9203646 100644 --- a/quakec/csqctest/src/ss/client.qc +++ b/quakec/csqctest/src/ss/client.qc @@ -546,7 +546,7 @@ void() PutClientInServer = if (serverusingcsqc) { self.SendEntity = SendPlayer; - self.Version = self.Version+1; + self.SendFlags = FULLSEND; } DecodeLevelParms (); @@ -960,7 +960,7 @@ void() PlayerPreThink = if (self.view_ofs == '0 0 0') return; // intermission or finale - self.Version++; + self.SendFlags = FULLSEND; makevectors (self.v_angle); // is this still used diff --git a/quakec/csqctest/src/ss/defs.qc b/quakec/csqctest/src/ss/defs.qc index 9f5fdcd2f..69649ac92 100644 --- a/quakec/csqctest/src/ss/defs.qc +++ b/quakec/csqctest/src/ss/defs.qc @@ -503,5 +503,6 @@ float(entity targ, entity inflictor) CanDamage; float serverusingcsqc; .float(entity to) SendEntity; -.float Version; +.float SendFlags; +#define FULLSEND 0xffffff float MSG_ENTITY = 5; \ No newline at end of file diff --git a/quakec/csqctest/src/ss/player.qc b/quakec/csqctest/src/ss/player.qc index 204c46875..a658baffa 100644 --- a/quakec/csqctest/src/ss/player.qc +++ b/quakec/csqctest/src/ss/player.qc @@ -515,7 +515,7 @@ float(entity ent) WriteGibs = void(float type) ThrowCSQCGibs = { self.cnt = type; - self.Version = self.Version+1; + self.SendFlags = FULLSEND; self.SendEntity = WriteGibs; if (type != GIB_PLAYER) { //schedule removal after a second. diff --git a/quakec/csqctest/src/ss/weapons.qc b/quakec/csqctest/src/ss/weapons.qc index 120d864e1..d9881b950 100644 --- a/quakec/csqctest/src/ss/weapons.qc +++ b/quakec/csqctest/src/ss/weapons.qc @@ -370,7 +370,17 @@ void() BecomeExplosion = self.dimension_seen = 2; dimension_send = 2; + +#if 1 + WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); + WriteByte (MSG_BROADCAST, TE_EXPLOSION); + WriteCoord (MSG_BROADCAST, self.origin_x); + WriteCoord (MSG_BROADCAST, self.origin_y); + WriteCoord (MSG_BROADCAST, self.origin_z); +#else te_explosion(self.origin); +#endif + sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM); self.dimension_seen = 3; dimension_send = 3; @@ -382,7 +392,7 @@ void() BecomeExplosion = self.source = self.origin; self.SendEntity = SendExplosion; self.starttime = time; - self.Version+=1; + self.SendFlags = FULLSEND; }; void() T_MissileTouch = @@ -458,7 +468,7 @@ void() W_FireRocket = missile.source = missile.origin; missile.SendEntity = SendRocket; missile.starttime = time; - missile.Version+=1; + missile.SendFlags = FULLSEND; }; /* @@ -680,7 +690,7 @@ void(vector org, vector dir) launch_spike = newmis.velocity = dir * 1000; newmis.SendEntity = SendNail; - newmis.Version++; + newmis.SendFlags = FULLSEND; newmis.source = newmis.origin; newmis.starttime = time; };