r4023 - in trunk/data: qcsrc/server sound/debug sound/misc sound/player

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Aug 5 02:16:54 EDT 2008


Author: div0
Date: 2008-08-05 02:16:54 -0400 (Tue, 05 Aug 2008)
New Revision: 4023

Added:
   trunk/data/sound/misc/metalfootstep01.wav
   trunk/data/sound/misc/metalfootstep02.wav
   trunk/data/sound/misc/metalfootstep03.wav
   trunk/data/sound/misc/metalfootstep04.wav
   trunk/data/sound/misc/metalfootstep05.wav
   trunk/data/sound/misc/metalfootstep06.wav
   trunk/data/sound/misc/metalhitground1.ogg
   trunk/data/sound/misc/metalhitground2.ogg
   trunk/data/sound/misc/metalhitground3.ogg
   trunk/data/sound/misc/metalhitground4.ogg
Removed:
   trunk/data/sound/debug/v_fall1.wav
   trunk/data/sound/debug/v_fall2.wav
   trunk/data/sound/debug/v_fall3.wav
Modified:
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_physics.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/defs.qh
   trunk/data/qcsrc/server/miscfunctions.qc
   trunk/data/qcsrc/server/sv_main.qc
   trunk/data/sound/player/default.sounds
Log:
add to the playersound system a globalsound system; make the footsteps and fall sounds global ones; add support for metalsteps and nosteps (although the sound files currently are identical)


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-08-05 06:16:54 UTC (rev 4023)
@@ -1248,6 +1248,8 @@
 	if(self.netname_previous)
 		strunzone(self.netname_previous);
 
+	ClearPlayerSounds();
+
 	// free cvars
 	GetCvars(-1);
 	self.playerid = 0;

Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/qcsrc/server/cl_physics.qc	2008-08-05 06:16:54 UTC (rev 4023)
@@ -233,6 +233,21 @@
 		self.angles_z = 0;
 	}
 
+	if(self.flags & FL_ONGROUND)
+		if not(self.lastflags & FL_ONGROUND)
+		{
+			self.nextstep = time + 0.3 + random() * 0.1;
+			trace_dphitq3surfaceflags = 0;
+			tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+			if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
+			{
+				if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
+					GlobalSound(globalsound_metalfall, CHAN_AUTO, 0);
+				else
+					GlobalSound(globalsound_fall, CHAN_AUTO, 0);
+			}
+		}
+
 	if(self.classname == "player")
 	{
 		if(sv_doublejump)
@@ -456,9 +471,5 @@
 	if(self.flags & FL_ONGROUND)
 		self.lastground = time;
 
-	if(self.flags & FL_ONGROUND)
-		if not(self.lastflags & FL_ONGROUND)
-			PlayerSound(playersound_fall, CHAN_AUTO, 0);
-
 	self.lastflags = self.flags;
 };

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/qcsrc/server/cl_player.qc	2008-08-05 06:16:54 UTC (rev 4023)
@@ -763,9 +763,11 @@
 
 string allvoicesamples = "attack attackinfive coverme defend freelance incoming meet needhelp seenflag taunt teamshoot";
 float GetPlayerSoundSampleField_notFound;
+float GetPlayerSoundSampleField_fixed;
 .string GetVoiceMessageSampleField(string type)
 {
 	GetPlayerSoundSampleField_notFound = 0;
+	GetPlayerSoundSampleField_fixed = 0;
 	switch(type)
 	{
 		case "attack":       return playersound_attack;
@@ -787,11 +789,11 @@
 .string GetPlayerSoundSampleField(string type)
 {
 	GetPlayerSoundSampleField_notFound = 0;
+	GetPlayerSoundSampleField_fixed = 0;
 	switch(type)
 	{
 		case "death":        return playersound_death;
 		case "drown":        return playersound_drown;
-		case "fall":         return playersound_fall;
 		case "falling":      return playersound_falling;
 		case "gasp":         return playersound_gasp;
 		case "jump":         return playersound_jump;
@@ -804,10 +806,25 @@
 	return playersound_taunt;
 }
 
+void PrecacheGlobalSound(string samplestring)
+{
+	float n, i;
+	tokenize(samplestring);
+	n = stof(argv(1));
+	if(n > 0)
+	{
+		for(i = 1; i <= n; ++i)
+			precache_sound(strcat(argv(0), ftos(i), ".wav"));
+	}
+	else
+	{
+		precache_sound(strcat(argv(0), ".wav"));
+	}
+}
+
 void PrecachePlayerSounds(string f)
 {
 	float fh;
-	float i, n;
 	string s;
 	fh = fopen(f, FILE_READ);
 	if(fh < 0)
@@ -819,22 +836,37 @@
 			dprint("Invalid sound info line: ", s, "\n");
 			continue;
 		}
-		n = stof(argv(2));
-		if(n > 0)
-		{
-			for(i = 1; i <= n; ++i)
-				precache_sound(strcat(argv(1), ftos(i), ".wav"));
-		}
-		else
-		{
-			precache_sound(strcat(argv(1), ".wav"));
-		}
+		PrecacheGlobalSound(strcat(argv(1), " ", argv(2)));
 	}
 	fclose(fh);
 }
 
-void LoadPlayerSounds(string f)
+void ClearPlayerSounds()
 {
+	if(self.playersound_attack      ) { strunzone(self.playersound_attack      ); self.playersound_attack = string_null; }
+	if(self.playersound_attackinfive) { strunzone(self.playersound_attackinfive); self.playersound_attackinfive = string_null; }
+	if(self.playersound_coverme     ) { strunzone(self.playersound_coverme     ); self.playersound_coverme = string_null; }
+	if(self.playersound_defend      ) { strunzone(self.playersound_defend      ); self.playersound_defend = string_null; }
+	if(self.playersound_freelance   ) { strunzone(self.playersound_freelance   ); self.playersound_freelance = string_null; }
+	if(self.playersound_incoming    ) { strunzone(self.playersound_incoming    ); self.playersound_incoming = string_null; }
+	if(self.playersound_meet        ) { strunzone(self.playersound_meet        ); self.playersound_meet = string_null; }
+	if(self.playersound_needhelp    ) { strunzone(self.playersound_needhelp    ); self.playersound_needhelp = string_null; }
+	if(self.playersound_seenflag    ) { strunzone(self.playersound_seenflag    ); self.playersound_seenflag = string_null; }
+	if(self.playersound_taunt       ) { strunzone(self.playersound_taunt       ); self.playersound_taunt = string_null; }
+	if(self.playersound_teamshoot   ) { strunzone(self.playersound_teamshoot   ); self.playersound_teamshoot = string_null; }
+	if(self.playersound_death       ) { strunzone(self.playersound_death       ); self.playersound_death = string_null; }
+	if(self.playersound_drown       ) { strunzone(self.playersound_drown       ); self.playersound_drown = string_null; }
+	if(self.playersound_falling     ) { strunzone(self.playersound_falling     ); self.playersound_falling = string_null; }
+	if(self.playersound_gasp        ) { strunzone(self.playersound_gasp        ); self.playersound_gasp = string_null; }
+	if(self.playersound_jump        ) { strunzone(self.playersound_jump        ); self.playersound_jump = string_null; }
+	if(self.playersound_pain25      ) { strunzone(self.playersound_pain25      ); self.playersound_pain25 = string_null; }
+	if(self.playersound_pain50      ) { strunzone(self.playersound_pain50      ); self.playersound_pain50 = string_null; }
+	if(self.playersound_pain75      ) { strunzone(self.playersound_pain75      ); self.playersound_pain75 = string_null; }
+	if(self.playersound_pain100     ) { strunzone(self.playersound_pain100     ); self.playersound_pain100 = string_null; }
+}
+
+void LoadPlayerSounds(string f, float first)
+{
 	float fh;
 	string s;
 	var .string field;
@@ -850,6 +882,9 @@
 			field = GetVoiceMessageSampleField(argv(0));
 		if(GetPlayerSoundSampleField_notFound)
 			continue;
+		if not(GetPlayerSoundSampleField_fixed)
+			if not(first)
+				continue;
 		if(self.field)
 			strunzone(self.field);
 		self.field = strzone(strcat(argv(1), " ", argv(2)));
@@ -863,16 +898,14 @@
 	if(self.modelindex == self.modelindex_for_playersound)
 		return;
 	self.modelindex_for_playersound = self.modelindex;
-	LoadPlayerSounds("sound/player/default.sounds");
-	LoadPlayerSounds(strcat(self.model, ".sounds"));
+	ClearPlayerSounds();
+	LoadPlayerSounds("sound/player/default.sounds", 1);
+	LoadPlayerSounds(strcat(self.model, ".sounds"), 0);
 }
 
-void PlayerSound(.string samplefield, float chan, float teamsay)
+void GlobalSound(string sample, float chan, float teamsay)
 {
-	// TODO precache voice messages?
 	float n;
-	string sample;
-	sample = self.samplefield;
 
 	if(sample == "")
 		return;
@@ -908,6 +941,13 @@
 	}
 }
 
+void PlayerSound(.string samplefield, float chan, float teamsay)
+{
+	string sample;
+	sample = self.samplefield;
+	GlobalSound(sample, chan, teamsay);
+}
+
 void VoiceMessage(string type)
 {
 	var .string sample;

Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/qcsrc/server/defs.qh	2008-08-05 06:16:54 UTC (rev 4023)
@@ -459,7 +459,6 @@
 .string playersound_teamshoot;
 .string playersound_death;
 .string playersound_drown;
-.string playersound_fall; // known broken, FIXME
 .string playersound_falling; // not yet implemented, FIXME
 .string playersound_gasp;
 .string playersound_jump;
@@ -467,8 +466,14 @@
 .string playersound_pain50;
 .string playersound_pain75;
 .string playersound_pain100;
+string globalsound_fall;
+string globalsound_metalfall;
+string globalsound_step;
+string globalsound_metalstep;
 void PrecachePlayerSounds(string f);
-void LoadPlayerSounds(string f);
+void PrecacheGlobalSound(string samplestring);
 void UpdatePlayerSounds();
+void ClearPlayerSounds();
 void PlayerSound(.string samplefield, float channel, float teamsay); // 0 is normal, 1 is team, 2 is last attacker
+void GlobalSound(string samplestring, float channel, float teamsay); // 0 is normal, 1 is team, 2 is last attacker
 void VoiceMessage(string type);

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2008-08-05 06:16:54 UTC (rev 4023)
@@ -1002,12 +1002,8 @@
 
 	if (g_footsteps)
 	{
-		precache_sound ("misc/footstep01.wav");
-		precache_sound ("misc/footstep02.wav");
-		precache_sound ("misc/footstep03.wav");
-		precache_sound ("misc/footstep04.wav");
-		precache_sound ("misc/footstep05.wav");
-		precache_sound ("misc/footstep06.wav");
+		PrecacheGlobalSound((globalsound_step = "misc/footstep0 6"));
+		PrecacheGlobalSound((globalsound_metalstep = "misc/metalfootstep0 6"));
 	}
 
 	// gore and miscellaneous sounds
@@ -1036,10 +1032,8 @@
 	precache_sound ("misc/gib_splat03.wav");
 	precache_sound ("misc/gib_splat04.wav");
 	precache_sound ("misc/hit.wav");
-	precache_sound ("misc/hitground1.wav");
-	precache_sound ("misc/hitground2.wav");
-	precache_sound ("misc/hitground3.wav");
-	precache_sound ("misc/hitground4.wav");
+	PrecacheGlobalSound((globalsound_fall = "misc/hitground 4"));
+	PrecacheGlobalSound((globalsound_metalfall = "misc/metalhitground 4"));
 	precache_sound ("misc/null.wav");
 	precache_sound ("misc/spawn.wav");
 	precache_sound ("misc/talk.wav");

Modified: trunk/data/qcsrc/server/sv_main.qc
===================================================================
--- trunk/data/qcsrc/server/sv_main.qc	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/qcsrc/server/sv_main.qc	2008-08-05 06:16:54 UTC (rev 4023)
@@ -75,13 +75,15 @@
 			// check for falling damage
 			if(!self.hook.state)
 			{
-				dm = vlen(self.oldvelocity) - vlen(self.velocity); // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound.
+				dm = vlen(self.oldvelocity) - vlen(self.velocity); // dm is now the velocity DECREASE. Velocity INCREASE should never cause a sound or any damage.
 				if (self.deadflag)
 					dm = (dm - cvar("g_balance_falldamage_deadminspeed")) * cvar("g_balance_falldamage_factor");
 				else
 					dm = min((dm - cvar("g_balance_falldamage_minspeed")) * cvar("g_balance_falldamage_factor"), cvar("g_balance_falldamage_maxdamage"));
 				if (dm > 0)
+				{
 					Damage (self, world, world, dm, DEATH_FALL, self.origin, '0 0 0');
+				}
 				else if(vlen(self.velocity) > 100000 && cvar("developer"))
 				{
 					dprint(strcat(self.netname, " became too fast, please investigate: ", vtos(self.spawnorigin), "\n"));
@@ -95,24 +97,24 @@
 			if (self.flags & FL_ONGROUND)
 			if (vlen(self.velocity) > sv_maxspeed * 0.6)
 			if (!self.deadflag)
+			if (time < self.lastground + 0.2)
 			{
 				if((time > self.nextstep) || (time < (self.nextstep - 10.0)))
 				{
-					local float steprandom;
 					self.nextstep = time + 0.3 + random() * 0.1;
-					steprandom = random() * 6;
-					if (steprandom < 1)
-						sound (self, CHAN_BODY, "misc/footstep01.wav", 1, ATTN_NORM);
-					else if (steprandom < 2)
-						sound (self, CHAN_BODY, "misc/footstep02.wav", 1, ATTN_NORM);
-					else if (steprandom < 3)
-						sound (self, CHAN_BODY, "misc/footstep03.wav", 1, ATTN_NORM);
-					else if (steprandom < 4)
-						sound (self, CHAN_BODY, "misc/footstep04.wav", 1, ATTN_NORM);
-					else if (steprandom < 5)
-						sound (self, CHAN_BODY, "misc/footstep05.wav", 1, ATTN_NORM);
-					else if (steprandom <= 6)
-						sound (self, CHAN_BODY, "misc/footstep06.wav", 1, ATTN_NORM);
+					trace_dphitq3surfaceflags = 0;
+					tracebox(self.origin, self.mins, self.maxs, self.origin - '0 0 1', MOVE_NOMONSTERS, self);
+					if(trace_fraction == 1)
+						print("nohit\n");
+					else
+						print(ftos(trace_dphitq3surfaceflags), "\n");
+					if not(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOSTEPS)
+					{
+						if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)
+							GlobalSound(globalsound_metalstep, CHAN_AUTO, 0);
+						else
+							GlobalSound(globalsound_step, CHAN_AUTO, 0);
+					}
 				}
 			}
 			self.oldvelocity = self.velocity;

Deleted: trunk/data/sound/debug/v_fall1.wav
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/debug/v_fall2.wav
===================================================================
(Binary files differ)

Deleted: trunk/data/sound/debug/v_fall3.wav
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalfootstep01.wav (from rev 4022, trunk/data/sound/misc/footstep01.wav)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalfootstep02.wav (from rev 4022, trunk/data/sound/misc/footstep02.wav)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalfootstep03.wav (from rev 4022, trunk/data/sound/misc/footstep03.wav)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalfootstep04.wav (from rev 4022, trunk/data/sound/misc/footstep04.wav)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalfootstep05.wav (from rev 4022, trunk/data/sound/misc/footstep05.wav)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalfootstep06.wav (from rev 4022, trunk/data/sound/misc/footstep06.wav)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalhitground1.ogg (from rev 4022, trunk/data/sound/misc/hitground1.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalhitground2.ogg (from rev 4022, trunk/data/sound/misc/hitground2.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalhitground3.ogg (from rev 4022, trunk/data/sound/misc/hitground3.ogg)
===================================================================
(Binary files differ)

Copied: trunk/data/sound/misc/metalhitground4.ogg (from rev 4022, trunk/data/sound/misc/hitground4.ogg)
===================================================================
(Binary files differ)

Modified: trunk/data/sound/player/default.sounds
===================================================================
--- trunk/data/sound/player/default.sounds	2008-08-04 15:54:52 UTC (rev 4022)
+++ trunk/data/sound/player/default.sounds	2008-08-05 06:16:54 UTC (rev 4023)
@@ -11,8 +11,6 @@
 //teamshoot sound/player/voice/teamshoot 5
 death sound/debug/v_death 0
 drown sound/debug/v_drown 0
-fall sound/debug/v_fall 3
-//fall misc/hitground 4
 falling sound/debug/v_falling 0
 gasp sound/debug/v_gasp 0
 jump sound/debug/v_jump 0




More information about the nexuiz-commits mailing list