r6111 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Mar 12 02:52:05 EDT 2009


Author: lordhavoc
Date: 2009-03-12 02:52:05 -0400 (Thu, 12 Mar 2009)
New Revision: 6111

Modified:
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_weaponsystem.qc
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/w_rocketlauncher.qc
   trunk/data/qcsrc/server/w_shotgun.qc
   trunk/data/qcsrc/server/w_uzi.qc
Log:
fixed muzzleflashes with sv_qcweaponanimation mode
implemented support for models/weapons/h_name.dpm (and .animinfo)


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2009-03-12 05:21:34 UTC (rev 6110)
+++ trunk/data/qcsrc/server/cl_client.qc	2009-03-12 06:52:05 UTC (rev 6111)
@@ -556,6 +556,7 @@
 	self.weapon = 0;
 	self.weaponmodel = "";
 	self.weaponentity = world;
+	self.exteriorweaponentity = world;
 	self.killcount = -666;
 	self.velocity = '0 0 0';
 	self.avelocity = '0 0 0';

Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2009-03-12 05:21:34 UTC (rev 6110)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2009-03-12 06:52:05 UTC (rev 6111)
@@ -280,12 +280,16 @@
 		self.frame = self.anim_idle_x;
 	if (self.owner.weaponentity != self)
 	{
+		if (self.weaponentity)
+			remove(self.weaponentity);
 		remove(self);
 		return;
 	}
 	if (self.owner.deadflag != DEAD_NO)
 	{
 		self.model = "";
+		if (self.weaponentity)
+			self.weaponentity.model = "";
 		return;
 	}
 	if (self.cnt != self.owner.weapon || self.dmg != self.owner.modelindex || self.deadflag != self.owner.deadflag)
@@ -298,14 +302,32 @@
 		float animfile;
 		if (self.owner.weaponname != "")
 		{
+			// if there is a child entity, hide it until we're sure we use it
+			if (self.weaponentity)
+				self.weaponentity.model = "";
 			if (qcweaponanimation)
 				setmodel(self, strcat("models/weapons/v_", self.owner.weaponname, ".md3")); // precision set below
 			else
 			{
-				animfilename = strcat("models/weapons/w_", self.owner.weaponname, ".dpm.animinfo");
+				animfilename = strcat("models/weapons/h_", self.owner.weaponname, ".dpm.animinfo");
 				animfile = fopen(animfilename, FILE_READ);
 				if (animfile >= 0)
 				{
+					if (!self.weaponentity)
+						self.weaponentity = spawn();
+					setmodel(self, strcat("models/weapons/h_", self.owner.weaponname, ".dpm")); // precision set below
+					setmodel(self.weaponentity, strcat("models/weapons/v_", self.owner.weaponname, ".md3")); // precision does not matter
+					setattachment(self.weaponentity, self, "weapon");
+				}
+				else
+				{
+					animfilename = strcat("models/weapons/w_", self.owner.weaponname, ".dpm.animinfo");
+					animfile = fopen(animfilename, FILE_READ);
+					if (animfile >= 0)
+						setmodel(self, strcat("models/weapons/w_", self.owner.weaponname, ".dpm")); // precision set below
+				}
+				if (animfile >= 0)
+				{
 					animparseerror = FALSE;
 					self.anim_fire1  = animparseline(animfile);
 					self.anim_fire2  = animparseline(animfile);
@@ -314,7 +336,6 @@
 					fclose(animfile);
 					if (animparseerror)
 						print("Parse error in ", animfilename, ", some player animations are broken\n");
-					setmodel(self, strcat("models/weapons/w_", self.owner.weaponname, ".dpm")); // precision set below
 				}
 				else
 				{
@@ -340,7 +361,9 @@
 			e.modelindex = self.modelindex;
 			float idx;
 			vector v;
-			idx = gettagindex(e, "bone02");
+			idx = gettagindex(e, "shot");
+			if (!idx)
+				idx = gettagindex(e, "bone02");
 			if(idx)
 			{
 				v = gettaginfo(e, idx);
@@ -366,6 +389,12 @@
 		self.alpha = 1;
 	
 	self.colormap = self.owner.colormap;
+	if (self.weaponentity)
+	{
+		self.weaponentity.effects = self.effects & EF_ADDITIVE;
+		self.weaponentity.alpha = self.alpha;
+		self.weaponentity.colormap = self.colormap;
+	}
 
 	self.angles = '0 0 0';
 	local float f;
@@ -567,7 +596,6 @@
 	self.weaponentity.classname = "weaponentity";
 	self.weaponentity.solid = SOLID_NOT;
 	self.weaponentity.owner = self;
-	self.weaponentity.weaponentity = self.weaponentity;
 	setmodel(self.weaponentity, ""); // precision set when changed
 	self.weaponentity.origin = '0 0 0';
 	self.weaponentity.angles = '0 0 0';

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2009-03-12 05:21:34 UTC (rev 6110)
+++ trunk/data/qcsrc/server/g_world.qc	2009-03-12 06:52:05 UTC (rev 6111)
@@ -1243,7 +1243,11 @@
 		e.movetype = MOVETYPE_NONE;
 		e.takedamage = DAMAGE_NO;
 		if(e.weaponentity)
+		{
 			e.weaponentity.effects = EF_NODRAW;
+			if (e.weaponentity.weaponentity)
+				e.weaponentity.weaponentity.effects = EF_NODRAW;
+		}
 		if(clienttype(e) == CLIENTTYPE_REAL)
 		{
 			stuffcmd(e, "\nscr_printspeed 1000000\n");

Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc	2009-03-12 05:21:34 UTC (rev 6110)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc	2009-03-12 06:52:05 UTC (rev 6111)
@@ -246,7 +246,15 @@
 	flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient;
 	setorigin (flash, '5 0 0');
 	setmodel (flash, "models/flash.md3"); // precision set below
-	setattachment(flash, self.weaponentity, "bone02");
+	if (gettagindex(self.weaponentity, "shot"))
+		setattachment(flash, self.weaponentity, "shot");
+	else if (gettagindex(self.weaponentity, "bone02"))
+		setattachment(flash, self.weaponentity, "bone02");
+	else
+	{
+		setorigin(flash, '27 0 5');
+		setattachment(flash, self.weaponentity, "");
+	}
 	SUB_SetFade (flash, time, 0.1);
 
 	// muzzle flash for 3rd person view

Modified: trunk/data/qcsrc/server/w_shotgun.qc
===================================================================
--- trunk/data/qcsrc/server/w_shotgun.qc	2009-03-12 05:21:34 UTC (rev 6110)
+++ trunk/data/qcsrc/server/w_shotgun.qc	2009-03-12 06:52:05 UTC (rev 6111)
@@ -33,7 +33,15 @@
 	flash = spawn();
 	setorigin(flash, '5 0 0');
 	setmodel(flash, "models/uziflash.md3"); // precision set below
-	setattachment(flash, self.weaponentity, "bone02");
+	if (gettagindex(self.weaponentity, "shot"))
+		setattachment(flash, self.weaponentity, "shot");
+	else if (gettagindex(self.weaponentity, "bone02"))
+		setattachment(flash, self.weaponentity, "bone02");
+	else
+	{
+		setorigin(flash, '48 0 5');
+		setattachment(flash, self.weaponentity, "");
+	}
 	flash.owner = self;
 	flash.viewmodelforclient = self;
 	flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient;
@@ -78,7 +86,15 @@
 	flash = spawn();
 	setorigin(flash, '53 5 0');
 	setmodel(flash, "models/uziflash.md3"); // precision set below
-	setattachment(flash, self.weaponentity, "bone01");
+	if (gettagindex(self.weaponentity, "shot"))
+		setattachment(flash, self.weaponentity, "shot");
+	else if (gettagindex(self.weaponentity, "bone01"))
+		setattachment(flash, self.weaponentity, "bone01");
+	else
+	{
+		setorigin(flash, '48 0 5');
+		setattachment(flash, self.weaponentity, "");
+	}
 	flash.owner = self;
 	flash.viewmodelforclient = self;
 	flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient;

Modified: trunk/data/qcsrc/server/w_uzi.qc
===================================================================
--- trunk/data/qcsrc/server/w_uzi.qc	2009-03-12 05:21:34 UTC (rev 6110)
+++ trunk/data/qcsrc/server/w_uzi.qc	2009-03-12 06:52:05 UTC (rev 6111)
@@ -44,7 +44,15 @@
 	flash = spawn();
 	setorigin(flash, '5 0 0');
 	setmodel(flash, "models/uziflash.md3"); // precision set below
-	setattachment(flash, self.weaponentity, "bone02");
+	if (gettagindex(self.weaponentity, "shot"))
+		setattachment(flash, self.weaponentity, "shot");
+	else if (gettagindex(self.weaponentity, "bone02"))
+		setattachment(flash, self.weaponentity, "bone02");
+	else
+	{
+		setorigin(flash, '48 0 5');
+		setattachment(flash, self.weaponentity, "");
+	}
 	flash.owner = self;
 	flash.viewmodelforclient = self;
 	flash.customizeentityforclient = CL_Weaponentity_CustomizeEntityForClient;




More information about the nexuiz-commits mailing list