r4183 - in trunk/data: . qcsrc/client qcsrc/common qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Aug 26 03:32:19 EDT 2008
Author: div0
Date: 2008-08-26 03:32:17 -0400 (Tue, 26 Aug 2008)
New Revision: 4183
Modified:
trunk/data/effectinfo.txt
trunk/data/qcsrc/client/Main.qc
trunk/data/qcsrc/client/View.qc
trunk/data/qcsrc/client/csqc_builtins.qc
trunk/data/qcsrc/client/csqc_constants.qc
trunk/data/qcsrc/client/hook.qc
trunk/data/qcsrc/client/main.qh
trunk/data/qcsrc/client/progs.src
trunk/data/qcsrc/common/constants.qh
trunk/data/qcsrc/server/g_triggers.qc
Log:
CSQC handle func_sparks; more to come later (func_pointparticles planned); however, sparks are broken
Modified: trunk/data/effectinfo.txt
===================================================================
--- trunk/data/effectinfo.txt 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/effectinfo.txt 2008-08-26 07:32:17 UTC (rev 4183)
@@ -600,7 +600,7 @@
// sparks (quake effect)
effect TE_SPARK
-count 1
+count 1000
type spark
color 0x8f4333 0xfff31b
size 0.4 0.4
@@ -1512,780 +1512,3 @@
alpha 256 256 256
originjitter 20 20 20
velocityjitter 32 32 32
-
-
-
-effect crylink_muzzleflash
-count 1
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 128 128 256
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-effect crylink_muzzleflash
-count 10
-type spark
-tex 40 40
-color 0xA080C0 0xA080C0
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier 0.3
-airfriction 12
-
-
-
-// crylink impact effect
-// decal
-effect crylink_impact
-countabsolute 1
-type decal
-tex 47 47
-size 8 8
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 60
-//lightradiusfade 300
-//lightcolor 3.2 0.4 4
-// purple flare effect
-effect crylink_impact
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 8 8
-alpha 256 256 512
-// purple sparks
-effect crylink_impact
-count 20
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 4 4
-alpha 256 256 1024
-velocityjitter 256 256 256
-// purple splash
-effect crylink_impact
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 8 8
-alpha 256 256 512
-velocityjitter 8 8 8
-// purple splash
-effect crylink_impact
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 8 8
-alpha 256 256 1024
-velocityjitter 32 32 32
-
-
-
-effect nex_muzzleflash
-count 10
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 16 16
-alpha 128 128 192
-originjitter 4 4 4
-velocityjitter 24 24 24
-velocitymultiplier 0.02
-lightradius 200
-lightradiusfade 200
-lightcolor 2 2.5 3
-effect nex_muzzleflash
-count 150
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 9
-
-
-
-//// nex beam
-//effect nex_beam
-//countabsolute 1
-//type beam
-//tex 60 60
-//color 0xFFFFFF 0xFFFFFF
-//size 6 6
-//alpha 128 128 192
-// nex beam: ring smoke
-effect nex_beam
-trailspacing 32
-color 0x1680A0 0x1680A0
-size 4 4
-tex 32 32
-alpha 64 128 64
-airfriction 5
-sizeincrease 2
-type static
-// nex beam: drifting smoke
-effect nex_beam
-trailspacing 6
-color 0x5080A0 0x5080A0
-size 4 4
-tex 48 55
-alpha 32 64 32
-airfriction 9
-sizeincrease 4
-velocityjitter 64 64 64
-type static
-// nex beam: bright core
-effect nex_beam
-trailspacing 6
-color 0x80CDFF 0x80CDFF
-size 4 4
-//tex 48 55
-alpha 256 256 1280
-type static
-
-// nex impact
-// decal
-effect nex_impact
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 16 16 16
-lightradius 200
-lightradiusfade 250
-lightcolor 4 6 8
-// flare effect
-effect nex_impact
-countabsolute 1
-type static
-tex 37 37
-color 0x80C0FF 0x80C0FF
-size 8 8
-alpha 256 256 256
-// small sparks which form a sphere as they slow down
-//effect nex_impact
-//count 256
-//type spark
-//color 0x2030FF 0x80C0FF
-//size 1 2
-//alpha 256 256 512
-//bounce 2
-//airfriction 8
-//liquidfriction 8
-//velocityjitter 384 384 384
-// small sparks which glow brightly but live briefly
-effect nex_impact
-count 128
-type spark
-tex 41 41
-color 0xD9FDFF 0xD9FDFF
-size 4 4
-alpha 0 128 512
-bounce 2
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 9
-
-
-
-effect hagar_muzzleflash
-count 4
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 512
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 200
-lightradiusfade 2000
-lightcolor 2 1.5 0.2
-effect hagar_muzzleflash
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-effect hagar_bounce
-count 4
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 256
-originjitter 1.5 1.5 1.5
-velocityjitter 6 6 6
-velocitymultiplier 0.01
-lightradius 60
-lightradiusfade 300
-lightcolor 2 1.5 0.2
-effect hagar_bounce
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 256 256
-gravity 1
-bounce 1.5
-originjitter 1 1 1
-velocityjitter 600 600 600
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// decal
-effect hagar_explode
-countabsolute 1
-type decal
-tex 8 16
-size 48 48
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 250
-lightradiusfade 400
-lightcolor 8 4 1
-// flare effect
-effect hagar_explode
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 48 48
-alpha 192 192 64
-// fire effect which expands then slows
-effect hagar_explode
-notunderwater
-count 128
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 256 256 256
-// underwater bubbles
-effect hagar_explode
-underwater
-count 32
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 96 96 96
-// bouncing sparks
-effect hagar_explode
-notunderwater
-count 32
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 256 256 256
-
-
-
-effect rocketlauncher_muzzleflash
-count 5
-type smoke
-color 0x202020 0x404040
-tex 0 8
-size 5 5
-alpha 256 256 256
-airfriction 6
-originjitter 1.5 1.5 1.5
-velocityjitter 40 40 40
-velocitymultiplier 0.03
-//lightradius 200
-//lightradiusfade 2000
-//lightcolor 2 1.5 0.2
-effect rocketlauncher_muzzleflash
-count 30
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 3 3
-alpha 0 128 1024
-originjitter 1 1 1
-velocityjitter 300 300 300
-velocitymultiplier 0.5
-airfriction 12
-
-
-
-// rocket trail
-// smoke
-effect TR_ROCKET
-trailspacing 6
-type smoke
-color 0x303030 0x606060
-tex 0 8
-size 7 7
-alpha 32 32 32
-lightradius 150
-lighttime 0
-lightcolor 6 3 1
-// fire
-effect TR_ROCKET
-notunderwater
-trailspacing 6
-type static
-color 0x805010 0xFFA020
-tex 0 8
-size 6 6
-alpha 144 144 288
-airfriction 8
-velocityjitter 32 32 32
-velocitymultiplier -0.5
-// bubbles
-effect TR_ROCKET
-underwater
-trailspacing 8
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 1 1
-alpha 256 256 256
-gravity -0.125
-bounce 1.5
-liquidfriction 4
-velocityjitter 16 16 16
-// sparks
-effect TR_ROCKET
-trailspacing 10
-type spark
-tex 40 40
-color 0xFFFDD9 0xFFFDD9
-size 2 2
-alpha 444 512 1866
-gravity 1
-bounce 1
-velocityoffset 0 0 15
-airfriction 12
-originjitter 1 1 1
-velocityjitter 200 200 200
-velocitymultiplier -0.5
-
-
-
-// rocket explosion (bigger than mortar and hagar)
-// decal
-effect rocket_explode
-countabsolute 1
-type decal
-tex 8 16
-size 72 72
-alpha 256 256 0
-originjitter 40 40 40
-lightradius 400
-lightradiusfade 400
-lightcolor 8 4 1
-// flare effect
-effect rocket_explode
-countabsolute 1
-type static
-tex 35 37
-color 0x404040 0x404040
-size 72 72
-alpha 192 192 64
-// fire effect
-effect rocket_explode
-notunderwater
-count 256
-type static
-tex 48 55
-color 0x902010 0xFFD080
-size 16 16
-alpha 128 128 256
-bounce 1.5
-airfriction 4
-liquidfriction 4
-originjitter 8 8 8
-velocityjitter 512 512 512
-// underwater bubbles
-effect rocket_explode
-underwater
-count 64
-type bubble
-tex 62 62
-color 0x404040 0x808080
-size 3 3
-alpha 128 256 64
-gravity -0.125
-bounce 1.5
-liquidfriction 0.25
-originjitter 16 16 16
-velocityjitter 144 144 144
-// bouncing sparks
-effect rocket_explode
-notunderwater
-count 128
-type spark
-color 0x903010 0xFFD030
-size 2 2
-alpha 256 256 384
-gravity 1
-airfriction 0.2
-bounce 1.5
-liquidfriction 0.8
-velocityoffset 0 0 80
-velocityjitter 384 384 384
-
-
-
-effect grapple_muzzleflash
-lightradius 160
-lightradiusfade 800
-lightcolor 1 0 0
-
-
-
-effect grapple_impact
-lightradius 160
-lightradiusfade 800
-lightcolor 1 0 0
-
-
-
-effect misc_laser_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xff0000 0xff0000
-sizeincrease 1
-
-effect misc_laser_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-
-
-effect misc_laser_beam_fast
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 640
-color 0xff0000 0xff0000
-sizeincrease 0.1
-
-effect misc_laser_beam_fast_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-// additional laser colors (mike)
-effect misc_laser_green_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x00ff00 0x00ff00
-sizeincrease 1
-
-effect misc_laser_green_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_blue_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x0000ff 0x0000ff
-sizeincrease 1
-
-effect misc_laser_blue_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_yellow_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xffff00 0xffff00
-sizeincrease 1
-
-effect misc_laser_yellow_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_cyan_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x00ffff 0x00ffff
-sizeincrease 1
-
-effect misc_laser_cyan_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_magenta_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xff00ff 0xff00ff
-sizeincrease 1
-
-effect misc_laser_magenta_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_white_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xffffff 0xffffff
-sizeincrease 1
-
-effect misc_laser_white_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_black_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0x000000 0x000000
-sizeincrease 1
-
-effect misc_laser_black_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-effect misc_laser_orange_beam
-countabsolute 1
-type beam
-tex 60 60
-size 1 1
-alpha 256 256 64
-color 0xff6600 0xff6600
-sizeincrease 1
-
-effect misc_laser_orange_beam_end
-count 1
-type spark
-color 0x8f4333 0xfff31b
-size 0.4 0.4
-alpha 128 256 768
-gravity 1
-bounce -1
-velocityjitter 64 64 64
-velocitymultiplier 100
-
-
-
-
-// bigger crylink impact effect
-// decal
-effect crylink_impactbig
-countabsolute 1
-type decal
-tex 47 47
-size 24 24
-alpha 256 256 0
-originjitter 12 12 12
-//lightradius 200
-//lightradiusfade 800
-//lightcolor 3.2 0.4 4
-// purple flare effect
-effect crylink_impactbig
-countabsolute 1
-type static
-tex 39 39
-color 0x504060 0x504060
-size 24 24
-alpha 256 256 512
-// purple sparks
-effect crylink_impactbig
-count 80
-type spark
-tex 41 41
-color 0xA040C0 0xA040C0
-bounce 2
-size 6 6
-alpha 256 256 1024
-velocityjitter 512 512 512
-// purple splash
-effect crylink_impactbig
-count 3
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 512
-velocityjitter 32 32 32
-// purple splash
-effect crylink_impactbig
-count 6
-type static
-color 0xE070FF 0xE070FF
-size 16 16
-alpha 256 256 1024
-velocityjitter 256 256 256
-
-// Zero-violence effects
-
-// impact effect indicating damage
-effect damage_hit
-count 1
-type static
-color 0x20FF30 0x80FFC0
-size 1 1
-alpha 256 256 256
-gravity -0.4
-bounce 1.5
-airfriction 8
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 16 16 16
-
-// effect for removing player model
-// "teleport"
-effect damage_dissolve
-count 96
-type static
-color 0x66FF66 0xFFFFFF
-size 10 10
-alpha 64 128 128
-airfriction 1
-liquidfriction 4
-originoffset 0 0 28
-originjitter 16 16 28
-velocityjitter 0 0 256
-// flare
-effect damage_dissolve
-countabsolute 1
-type static
-tex 38 38
-color 0x00FF00 0x99FF99
-size 32 32
-alpha 256 256 196
-// large sparks
-effect damage_dissolve
-count 20
-type static
-color 0x00FF00 0x99FF99
-size 16 16
-alpha 256 256 256
-//gravity 1
-bounce 1.5
-airfriction 4
-liquidfriction 16
-//velocityoffset 0 0 120
-velocityjitter 512 512 512
-
-
Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/Main.qc 2008-08-26 07:32:17 UTC (rev 4183)
@@ -434,6 +434,8 @@
Ent_ReadPlayerScore();
else if(self.enttype == ENT_CLIENT_TEAMSCORES)
Ent_ReadTeamScore();
+ else if(self.enttype == ENT_CLIENT_POINTPARTICLES)
+ Ent_PointParticles();
else
error("unknown entity type in CSQC_Ent_Update\n");
Modified: trunk/data/qcsrc/client/View.qc
===================================================================
--- trunk/data/qcsrc/client/View.qc 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/View.qc 2008-08-26 07:32:17 UTC (rev 4183)
@@ -1,5 +1,7 @@
//include "main.qh"
+float drawtime;
+
void CSQC_common_hud(void);
void CSQC_kh_hud(void);
@@ -8,6 +10,11 @@
float Sbar_WouldDrawScoreboard ();
void CSQC_UpdateView(void)
{
+ entity e;
+
+ drawframetime = time - drawtime;
+ drawtime = time;
+
// watch for gametype changes here...
// in ParseStuffCMD the cmd isn't executed yet :/
// might even be better to add the gametype to TE_CSQC_INIT...?
@@ -52,7 +59,12 @@
R_AddEntities(MASK_NORMAL | MASK_ENGINE | MASK_ENGINEVIEWMODELS);
// Render the Scene
- Draw_GrapplingHook();
+
+ e = self;
+ for(self = world; (self = nextent(self)); )
+ if(self.draw)
+ self.draw();
+ self = e;
R_RenderScene();
// Draw the mouse cursor
Modified: trunk/data/qcsrc/client/csqc_builtins.qc
===================================================================
--- trunk/data/qcsrc/client/csqc_builtins.qc 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/csqc_builtins.qc 2008-08-26 07:32:17 UTC (rev 4183)
@@ -110,7 +110,7 @@
float(string efname) particleeffectnum = #335;
void(entity ent, float effectnum, vector start, vector end, ...) trailparticles = #336;
-void (float efnum, vector org, vector vel, float countmultiplier) pointparticles = #337;
+void (float efnum, vector org, vector vel, float countmultiplier, ...) pointparticles = #337;
void (string s, ...) cprint = #338;
void (string s, ...) print = #339;
Modified: trunk/data/qcsrc/client/csqc_constants.qc
===================================================================
--- trunk/data/qcsrc/client/csqc_constants.qc 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/csqc_constants.qc 2008-08-26 07:32:17 UTC (rev 4183)
@@ -187,3 +187,10 @@
const float DRAWFLAG_MODULATE = 2;
const float DRAWFLAG_2XMODULATE = 3;
const float DRAWFLAG_NUMFLAGS = 4;
+
+#define SOLID_NOT 0 // no interaction with other objects
+#define SOLID_TRIGGER 1 // touch on edge, but not blocking
+#define SOLID_BBOX 2 // touch on edge, block
+#define SOLID_SLIDEBOX 3 // touch on edge, but not an onground
+#define SOLID_BSP 4 // bsp clip, touch on edge, block
+#define SOLID_CORPSE 5 // same as SOLID_BBOX, except it behaves as SOLID_NOT against SOLID_SLIDEBOX objects (players/monsters)
Modified: trunk/data/qcsrc/client/hook.qc
===================================================================
--- trunk/data/qcsrc/client/hook.qc 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/hook.qc 2008-08-26 07:32:17 UTC (rev 4183)
@@ -1,33 +1,7 @@
.vector HookStart;
.vector HookEnd;
.float HookKillTime;
-void Net_GrapplingHook()
-{
- float i;
- vector start, end;
- entity p;
- i = ReadShort();
- end_x = ReadCoord();
- end_y = ReadCoord();
- end_z = ReadCoord();
- start_x = ReadCoord();
- start_y = ReadCoord();
- start_z = ReadCoord();
-
- if(i <= 0 || i >= 256) // not owned by a client
- return;
- --i;
-
- p = playerslots[i];
- if(!p)
- return;
-
- p.HookKillTime = time + 0.1;
- p.HookStart = start;
- p.HookEnd = end;
-}
-
void Draw_GrapplingHookLine(vector from, vector to, float thickness, vector org, vector view_forward, string texture, float aspect, vector rgb)
{
// I want to draw a quad...
@@ -61,55 +35,75 @@
void Draw_GrapplingHook()
{
- float i;
vector a, b, o;
- entity e;
string tex;
vector rgb;
o = pmove_org + '0 0 1' * getstati(STAT_VIEWHEIGHT);
makevectors(input_angles);
- for(i = 0; i < 255; ++i)
+ if(time >= self.HookKillTime)
+ return;
+ if(self.sv_entnum == player_localentnum - 1)
+ a = o + v_forward * 8 - v_right * 8 + v_up * -12;
+ else
+ a = self.HookStart;
+ b = self.HookEnd;
+ if(self.team == COLOR_TEAM1)
{
- e = playerslots[i];
- if(!e)
- continue;
- if(time >= e.HookKillTime)
- continue;
- if(i == player_localentnum - 1)
- a = o + v_forward * 8 - v_right * 8 + v_up * -12;
- else
- a = e.HookStart;
- b = e.HookEnd;
- if(e.team == COLOR_TEAM1)
- {
- tex = "particles/hook_red";
- rgb = '1 .3 .3';
- }
- else if(e.team == COLOR_TEAM2)
- {
- tex = "particles/hook_blue";
- rgb = '.3 .3 1';
- }
- else if(e.team == COLOR_TEAM3)
- {
- tex = "particles/hook_yellow";
- rgb = '1 1 .3';
- }
- else if(e.team == COLOR_TEAM4)
- {
- tex = "particles/hook_pink";
- rgb = '1 .3 1';
- }
- else
- {
- tex = "particles/hook_green";
- rgb = '.3 1 .3';
- }
- if(checkextension("DP_SV_WRITEPICTURE"))
- Draw_GrapplingHookLine(b, a, 8, o, v_forward, tex, 0.25, '1 1 1');
- else
- Draw_GrapplingHookLine(b, a, 1, o, v_forward, "", 0.25, rgb);
+ tex = "particles/hook_red";
+ rgb = '1 .3 .3';
}
+ else if(self.team == COLOR_TEAM2)
+ {
+ tex = "particles/hook_blue";
+ rgb = '.3 .3 1';
+ }
+ else if(self.team == COLOR_TEAM3)
+ {
+ tex = "particles/hook_yellow";
+ rgb = '1 1 .3';
+ }
+ else if(self.team == COLOR_TEAM4)
+ {
+ tex = "particles/hook_pink";
+ rgb = '1 .3 1';
+ }
+ else
+ {
+ tex = "particles/hook_green";
+ rgb = '.3 1 .3';
+ }
+ if(checkextension("DP_SV_WRITEPICTURE"))
+ Draw_GrapplingHookLine(b, a, 8, o, v_forward, tex, 0.25, '1 1 1');
+ else
+ Draw_GrapplingHookLine(b, a, 1, o, v_forward, "", 0.25, rgb);
}
+
+void Net_GrapplingHook()
+{
+ float i;
+ vector start, end;
+ entity p;
+
+ i = ReadShort();
+ end_x = ReadCoord();
+ end_y = ReadCoord();
+ end_z = ReadCoord();
+ start_x = ReadCoord();
+ start_y = ReadCoord();
+ start_z = ReadCoord();
+
+ if(i <= 0 || i >= 256) // not owned by a client
+ return;
+ --i;
+
+ p = playerslots[i];
+ if(!p)
+ return;
+
+ p.HookKillTime = time + 0.1;
+ p.HookStart = start;
+ p.HookEnd = end;
+ p.draw = Draw_GrapplingHook;
+}
Modified: trunk/data/qcsrc/client/main.qh
===================================================================
--- trunk/data/qcsrc/client/main.qh 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/main.qh 2008-08-26 07:32:17 UTC (rev 4183)
@@ -107,3 +107,6 @@
entity teamslots[17]; // 17 teams (including "spectator team")
.float gotscores;
.entity owner;
+
+.void(void) draw;
+float drawframetime;
Modified: trunk/data/qcsrc/client/progs.src
===================================================================
--- trunk/data/qcsrc/client/progs.src 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/client/progs.src 2008-08-26 07:32:17 UTC (rev 4183)
@@ -22,6 +22,7 @@
mapvoting.qc
hook.qc
+particles.qc
Main.qc
View.qc
Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/common/constants.qh 2008-08-26 07:32:17 UTC (rev 4183)
@@ -11,7 +11,8 @@
// Revision 10: scoreboard force
// Revision 11: scoreboard unforce; spectator support beginning
// Revision 12: smaller scores updates (SERVER: requires new engine)
-#define CSQC_REVISION 12
+// Revision 12: pointparticles
+#define CSQC_REVISION 13
// probably put these in common/
// so server/ and client/ can be synced better
@@ -38,6 +39,7 @@
const float ENT_CLIENT_SCORES_INFO = 3;
const float ENT_CLIENT_SCORES = 4;
const float ENT_CLIENT_TEAMSCORES = 5;
+const float ENT_CLIENT_POINTPARTICLES = 6;
///////////////////////////
// key constants
Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc 2008-08-26 05:54:07 UTC (rev 4182)
+++ trunk/data/qcsrc/server/g_triggers.qc 2008-08-26 07:32:17 UTC (rev 4183)
@@ -486,40 +486,59 @@
}
-/*
-void sparksthink()
+float pointparticles_SendEntity(entity to)
{
- self.nextthink = time + 0.1;
-
- if(random() < self.wait) {
- te_spark(self.origin,'0 0 -1',self.cnt);
- }
+ WriteByte(MSG_ENTITY, ENT_CLIENT_POINTPARTICLES);
+ WriteShort(MSG_ENTITY, self.modelindex);
+ WriteCoord(MSG_ENTITY, self.origin_x + self.mins_x);
+ WriteCoord(MSG_ENTITY, self.origin_y + self.mins_y);
+ WriteCoord(MSG_ENTITY, self.origin_z + self.mins_z);
+ WriteCoord(MSG_ENTITY, self.maxs_x - self.mins_x);
+ WriteCoord(MSG_ENTITY, self.maxs_y - self.mins_y);
+ WriteCoord(MSG_ENTITY, self.maxs_z - self.mins_z);
+ WriteShort(MSG_ENTITY, self.cnt);
+ WriteCoord(MSG_ENTITY, self.impulse);
+ WriteCoord(MSG_ENTITY, self.velocity_x);
+ WriteCoord(MSG_ENTITY, self.velocity_y);
+ WriteCoord(MSG_ENTITY, self.velocity_z);
+ WriteCoord(MSG_ENTITY, self.waterlevel);
+ WriteCoord(MSG_ENTITY, self.count);
+ WriteByte(MSG_ENTITY, self.glow_color);
+ WriteString(MSG_ENTITY, self.noise);
+ return 1;
}
-
-void func_sparks()
+void spawnfunc_func_sparks()
{
- self.think = sparksthink;
- self.nextthink = time + 0.2;
+ // self.cnt is the amount of sparks that one burst will spawn
+ if(self.cnt < 1) {
+ self.cnt = 25.0; // nice default value
+ }
- // self.cnt is the amount of sparks that one burst will spawn
- if(self.cnt < 1) {
- self.cnt = 25.0; // nice default value
- }
+ // self.wait is the probability that a sparkthink will spawn a spark shower
+ // range: 0 - 1, but 0 makes little sense, so...
+ if(self.wait < 0.05) {
+ self.wait = 0.25; // nice default value
+ }
- // self.wait is the probability that a sparkthink will spawn a spark shower
- // range: 0 - 1, but 0 makes little sense, so...
- if(self.wait < 0.05) {
- self.wait = 0.25; // nice default value
- }
+ // sound
+ if(self.noise)
+ precache_sound (self.noise);
- // sound
- if(self.noise) {
- precache_sound (self.noise);
- ambientsound (self.origin, self.noise, VOL_BASE, ATTN_STATIC);
- }
+ self.effects = EF_NODEPTHTEST;
+ self.SendEntity = pointparticles_SendEntity;
+ self.Version = 1;
+ self.modelindex = 1;
+ self.model = "net_entity";
+
+ self.count = self.cnt;
+ self.mins = '0 0 0';
+ self.maxs = '0 0 0';
+ self.velocity = '0 0 -1';
+ self.cnt = particleeffectnum("TE_SPARK");
+ self.impulse = 0.1 / self.wait;
}
-*/
+
void rain_think()
{
self.nextthink = time + 0.1;
More information about the nexuiz-commits
mailing list