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