r5580 - in trunk/data/qcsrc: client common server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Jan 16 15:22:52 EST 2009


Author: div0
Date: 2009-01-16 15:22:51 -0500 (Fri, 16 Jan 2009)
New Revision: 5580

Modified:
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/client/projectile.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/csqcprojectile.qc
   trunk/data/qcsrc/server/w_crylink.qc
Log:
fix some projectile issues, and send less bytes per csqc projectile


Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2009-01-16 20:10:48 UTC (rev 5579)
+++ trunk/data/qcsrc/client/Main.qc	2009-01-16 20:22:51 UTC (rev 5580)
@@ -131,6 +131,8 @@
 		cs_project_is_b0rked = FALSE;
 
 	WaypointSprite_Load();
+
+	Projectile_Precache();
 }
 
 // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)

Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc	2009-01-16 20:10:48 UTC (rev 5579)
+++ trunk/data/qcsrc/client/projectile.qc	2009-01-16 20:22:51 UTC (rev 5580)
@@ -83,7 +83,7 @@
 	// projectiles don't send angles, because they always follow the velocity
 	
 	f = ReadByte();
-	self.count = (f & 0xC0);
+	self.count = (f & 0x80);
 	self.iflags = IFLAG_AUTOANGLES | IFLAG_ANGLES;
 	self.move_flags &~= FL_ONGROUND;
 	self.solid = SOLID_TRIGGER;
@@ -116,15 +116,26 @@
 
 	if(f & 2)
 	{
-		self.modelindex = ReadShort();
+		self.cnt = ReadByte();
 
-		if(f & 0x40)
-			self.scale = ReadByte() / 16.0;
-		else
-			self.scale = 1;
+		switch(self.cnt)
+		{
+			case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl"); break;
+			case PROJECTILE_ROCKET: setmodel(self, "models/rocket.md3"); break;
+			case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); break;
+			case PROJECTILE_BULLET: setmodel(self, "models/tracer.mdl"); break;
+			case PROJECTILE_CRYLINK: setmodel(self, "models/plasmatrail.mdl"); break;
+			case PROJECTILE_ELECTRO_BEAM: setmodel(self, "models/elaser.mdl"); break;
+			case PROJECTILE_GRENADE: setmodel(self, "models/grenademodel.md3"); break;
+			case PROJECTILE_GRENADE_BOUNCING: setmodel(self, "models/grenademodel.md3"); break;
+			case PROJECTILE_LASER: setmodel(self, "models/laser.mdl"); break;
+			case PROJECTILE_HLAC: setmodel(self, "models/hlac_bullet.md3"); break;
+			default:
+				error("Received invalid CSQC projectile, can't work with this!");
+				break;
+		}
 
-		self.cnt = ReadByte();
-
+		self.scale = 1;
 		self.mins = '0 0 0';
 		self.maxs = '0 0 0';
 		self.move_movetype = MOVETYPE_TOSS;
@@ -170,3 +181,17 @@
 	
 	self.draw = Projectile_Draw;
 }
+
+void Projectile_Precache()
+{
+	precache_model("models/ebomb.mdl");
+	precache_model("models/rocket.md3");
+	precache_model("models/laser.mdl");
+	precache_model("models/tracer.mdl");
+	precache_model("models/plasmatrail.mdl");
+	precache_model("models/elaser.mdl");
+	precache_model("models/grenademodel.md3");
+	precache_model("models/grenademodel.md3");
+	precache_model("models/laser.mdl");
+	precache_model("models/hlac_bullet.md3");
+}

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-01-16 20:10:48 UTC (rev 5579)
+++ trunk/data/qcsrc/common/constants.qh	2009-01-16 20:22:51 UTC (rev 5580)
@@ -362,3 +362,5 @@
 float PROJECTILE_ELECTRO_BEAM = 6;
 float PROJECTILE_GRENADE = 7;
 float PROJECTILE_GRENADE_BOUNCING = 8;
+float PROJECTILE_LASER = 9;
+float PROJECTILE_HLAC = 10;

Modified: trunk/data/qcsrc/server/csqcprojectile.qc
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-16 20:10:48 UTC (rev 5579)
+++ trunk/data/qcsrc/server/csqcprojectile.qc	2009-01-16 20:22:51 UTC (rev 5580)
@@ -7,9 +7,6 @@
 	if(self.csqcprojectile_clientanimate)
 		sf |= 0x80; // client animated, not interpolated
 
-	if(self.scale != 0 && self.scale != 1)
-		sf |= 0x40; // scale used
-
 	WriteByte(MSG_ENTITY, ENT_CLIENT_PROJECTILE);
 	WriteByte(MSG_ENTITY, sf);
 
@@ -29,12 +26,7 @@
 	}
 
 	if(sf & 2)
-	{
-		WriteShort(MSG_ENTITY, self.modelindex);
-		if(sf & 0x40)
-			WriteByte(MSG_ENTITY, bound(0, self.scale / 16.0, 255));
-		WriteByte(MSG_ENTITY, self.csqcprojectile_type);
-	}
+		WriteByte(MSG_ENTITY, self.csqcprojectile_type); // TODO maybe put this into sf?
 
 	return 1;
 }

Modified: trunk/data/qcsrc/server/w_crylink.qc
===================================================================
--- trunk/data/qcsrc/server/w_crylink.qc	2009-01-16 20:10:48 UTC (rev 5579)
+++ trunk/data/qcsrc/server/w_crylink.qc	2009-01-16 20:22:51 UTC (rev 5580)
@@ -116,7 +116,7 @@
 		else
 			SUB_SetFade(proj, time + cvar("g_balance_crylink_primary_other_lifetime"), cvar("g_balance_crylink_primary_other_fadetime"));
 		proj.cnt = cvar("g_balance_crylink_primary_bounces");
-		proj.scale = 1 + 1 * proj.cnt;
+		//proj.scale = 1 + 1 * proj.cnt;
 
 		proj.angles = vectoangles (proj.velocity);
 
@@ -168,7 +168,7 @@
 		else
 			SUB_SetFade(proj, time + cvar("g_balance_crylink_secondary_line_lifetime"), cvar("g_balance_crylink_secondary_line_fadetime"));
 		proj.cnt = cvar("g_balance_crylink_secondary_bounces");
-		proj.scale = 1 + 1 * proj.cnt;
+		//proj.scale = 1 + 1 * proj.cnt;
 
 		proj.angles = vectoangles (proj.velocity);
 




More information about the nexuiz-commits mailing list