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