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