r2288 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Wed Apr 4 03:58:01 EDT 2007


Author: div0
Date: 2007-04-04 03:57:55 -0400 (Wed, 04 Apr 2007)
New Revision: 2288

Modified:
   trunk/data/qcsrc/server/builtins.qh
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/constants.qh
   trunk/data/qcsrc/server/defs.qh
   trunk/data/qcsrc/server/g_world.qc
   trunk/data/qcsrc/server/miscfunctions.qc
Log:
Q1 map support; ctf1 now works!


Modified: trunk/data/qcsrc/server/builtins.qh
===================================================================
--- trunk/data/qcsrc/server/builtins.qh	2007-04-04 06:25:03 UTC (rev 2287)
+++ trunk/data/qcsrc/server/builtins.qh	2007-04-04 07:57:55 UTC (rev 2288)
@@ -2,7 +2,7 @@
 void	makevectors (vector ang)							= #1;
 void	setorigin (entity e, vector o)							= #2;
 void	setmodel (entity e, string m)							= #3;
-void	setsize (entity e, vector min, vector max)					= #4;
+void	setsize_builtin (entity e, vector min, vector max)					= #4;
 
 void	crash (void)									= #6;
 float	random (void)									= #7;

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2007-04-04 06:25:03 UTC (rev 2287)
+++ trunk/data/qcsrc/server/cl_client.qc	2007-04-04 07:57:55 UTC (rev 2288)
@@ -413,6 +413,8 @@
 		self.takedamage = DAMAGE_AIM;
 		self.effects = 0;
 		self.health = cvar("g_balance_health_start");
+		self.air_finished = time + 12;
+		self.dmg = 2;
 		self.armorvalue = cvar("g_balance_armor_start");
 		self.spawnshieldtime = time + cvar("g_spawnshieldtime");
 		self.pauserotarmor_finished = time + cvar("g_balance_pause_armor_rot_spawn");
@@ -424,7 +426,9 @@
 		self.dead_frame = 0;
 		self.die_frame = 0;
 		self.alpha = 0;
-		self.scale = 0;
+		self.scale = 1;
+		if(maptype == MAPTYPE_Q1BSP)
+			self.scale = 0.85;
 		self.fade_time = 0;
 		self.pain_frame = 0;
 		self.pain_finished = 0;
@@ -473,8 +477,8 @@
 		}
 
 		self.crouch = FALSE;
-		self.view_ofs = PL_VIEW_OFS;
-		setsize (self, PL_MIN, PL_MAX);
+		self.view_ofs = PL_VIEW_OFS * self.scale;
+		setsize (self, PL_MIN * self.scale, PL_MAX * self.scale);
 		self.spawnorigin = spot.origin;
 		setorigin (self, spot.origin + '0 0 1' * (1 - self.mins_z - 24));
 		// don't reset back to last position, even if new position is stuck in solid
@@ -1376,20 +1380,20 @@
 			if (!self.crouch)
 			{
 				self.crouch = TRUE;
-				self.view_ofs = PL_CROUCH_VIEW_OFS;
-				setsize (self, PL_CROUCH_MIN, PL_CROUCH_MAX);
+				self.view_ofs = PL_CROUCH_VIEW_OFS * self.scale;
+				setsize (self, PL_CROUCH_MIN * self.scale, PL_CROUCH_MAX * self.scale);
 			}
 		}
 		else
 		{
 			if (self.crouch)
 			{
-				tracebox(self.origin, PL_MIN, PL_MAX, self.origin, FALSE, self);
+				tracebox(self.origin, PL_MIN * self.scale, PL_MAX * self.scale, self.origin, FALSE, self);
 				if (!trace_startsolid)
 				{
 					self.crouch = FALSE;
-					self.view_ofs = PL_VIEW_OFS;
-					setsize (self, PL_MIN, PL_MAX);
+					self.view_ofs = PL_VIEW_OFS * self.scale;
+					setsize (self, PL_MIN * self.scale, PL_MAX * self.scale);
 				}
 			}
 		}

Modified: trunk/data/qcsrc/server/constants.qh
===================================================================
--- trunk/data/qcsrc/server/constants.qh	2007-04-04 06:25:03 UTC (rev 2287)
+++ trunk/data/qcsrc/server/constants.qh	2007-04-04 07:57:55 UTC (rev 2288)
@@ -224,3 +224,7 @@
 float COLOR_TEAM4	= 13; // yellow
 
 float NUM_PLAYERSKINS_TEAMPLAY = 3;
+
+float MAPTYPE_Q1BSP = 100;
+float MAPTYPE_HLBSP = 150;
+float MAPTYPE_Q3BSP = 300;

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2007-04-04 06:25:03 UTC (rev 2287)
+++ trunk/data/qcsrc/server/defs.qh	2007-04-04 07:57:55 UTC (rev 2288)
@@ -1,5 +1,7 @@
 // Globals
 
+float maptype;
+
 entity	activator;
 string	string_null;
 

Modified: trunk/data/qcsrc/server/g_world.qc
===================================================================
--- trunk/data/qcsrc/server/g_world.qc	2007-04-04 06:25:03 UTC (rev 2287)
+++ trunk/data/qcsrc/server/g_world.qc	2007-04-04 07:57:55 UTC (rev 2288)
@@ -71,9 +71,32 @@
 float world_already_spawned;
 void worldspawn (void)
 {
+	string str;
+
 	if(world_already_spawned)
 		error("world already spawned - you may have EXACTLY ONE worldspawn!");
 	world_already_spawned = TRUE;
+
+	// first detect the map type
+	if(cvar("halflifebsp"))
+	{
+		maptype = MAPTYPE_HLBSP;
+	}
+	else
+	{
+		str = getsurfacetexture(world, 0);
+		dprint("maptype test texture string = ", str, "\n");
+		if(strstr(str, "/", 0) >= 0)
+			maptype = MAPTYPE_Q3BSP;
+		else if(str == "NULL") // GtkRadiant-ism
+			maptype = MAPTYPE_Q3BSP;
+		else if(str == "notexture") // q3map2-ism
+			maptype = MAPTYPE_Q3BSP;
+		else
+			maptype = MAPTYPE_Q1BSP;
+	}
+	dprint("Detected map type: ", ftos(maptype), "\n");
+
 	// Precache all player models
 	// Workaround for "invisible players"
 	precache_model("models/player/carni.zym");

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2007-04-04 06:25:03 UTC (rev 2287)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2007-04-04 07:57:55 UTC (rev 2288)
@@ -552,3 +552,53 @@
 	else
 		return p.netname;
 }
+
+void setsize(entity e, vector boxmin, vector boxmax)
+{
+	float needhull;
+	vector boxsize;
+	vector boxdiff, hullsize;
+
+	needhull = FALSE;
+	boxsize = boxmax - boxmin;
+
+	if(maptype == MAPTYPE_Q1BSP)
+	{
+		needhull = TRUE;
+		if(boxsize_x < 3)
+			hullsize = '0 0 0';
+		else if(boxsize_x < 32.1)
+			hullsize = '32 32 56';
+		else
+			hullsize = '64 64 88';
+	}
+	else if(maptype == MAPTYPE_HLBSP)
+	{
+		needhull = TRUE;
+		if(boxsize_x < 3)
+			hullsize = '0 0 0';
+		else if(boxsize_x < 32.1)
+		{
+			if(boxsize_z < 54)
+				hullsize = '32 32 36';
+			else
+				hullsize = '32 32 72';
+		}
+		else
+			hullsize = '64 64 64';
+	}
+
+	if(needhull)
+	{
+		boxdiff = hullsize - boxsize;
+		//dprint("Adjusted size from ");
+		//dprint(vtos(boxmin), "-");
+		//dprint(vtos(boxmax), " to ");
+		boxmin = '0.5 0 0' * (boxmin_x + boxmax_x - hullsize_x) + '0 0.5 0' * (boxmin_y + boxmax_y - hullsize_y) + '0 0 1' * boxmin_z;
+		boxmax = boxmin + hullsize;
+		//dprint(vtos(boxmin), "-");
+		//dprint(vtos(boxmax), "\n");
+	}
+
+	setsize_builtin(e, boxmin, boxmax);
+}




More information about the nexuiz-commits mailing list