r3042 - in trunk/data: qcsrc/server sound/player sound/player/voice

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Dec 21 08:59:45 EST 2007


Author: div0
Date: 2007-12-21 08:59:44 -0500 (Fri, 21 Dec 2007)
New Revision: 3042

Added:
   trunk/data/sound/player/voice/
   trunk/data/sound/player/voice/attack1.ogg
   trunk/data/sound/player/voice/attackinfive1.ogg
   trunk/data/sound/player/voice/coverme1.ogg
   trunk/data/sound/player/voice/default.voice
   trunk/data/sound/player/voice/defend1.ogg
   trunk/data/sound/player/voice/freelance1.ogg
   trunk/data/sound/player/voice/incoming1.ogg
   trunk/data/sound/player/voice/meet1.ogg
   trunk/data/sound/player/voice/needhelp1.ogg
   trunk/data/sound/player/voice/seenflag1.ogg
   trunk/data/sound/player/voice/seenflag2.ogg
   trunk/data/sound/player/voice/taunt1.ogg
   trunk/data/sound/player/voice/taunt2.ogg
   trunk/data/sound/player/voice/taunt3.ogg
   trunk/data/sound/player/voice/taunt4.ogg
   trunk/data/sound/player/voice/taunt5.ogg
   trunk/data/sound/player/voice/taunt6.ogg
   trunk/data/sound/player/voice/taunt7.ogg
   trunk/data/sound/player/voice/taunt8.ogg
   trunk/data/sound/player/voice/taunt9.ogg
   trunk/data/sound/player/voice/teamshoot1.ogg
   trunk/data/sound/player/voice/teamshoot2.ogg
   trunk/data/sound/player/voice/teamshoot3.ogg
   trunk/data/sound/player/voice/teamshoot4.ogg
   trunk/data/sound/player/voice/teamshoot5.ogg
Modified:
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_player.qc
   trunk/data/qcsrc/server/clientcommands.qc
   trunk/data/qcsrc/server/miscfunctions.qc
Log:
start of a voice message system... PLEASE REPLACE sound/player/voice/*.ogg ASAP


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2007-12-21 02:55:13 UTC (rev 3041)
+++ trunk/data/qcsrc/server/cl_client.qc	2007-12-21 13:59:44 UTC (rev 3042)
@@ -246,6 +246,7 @@
 	return TRUE;
 }
 
+void UpdateVoiceMessages();
 void setmodel_lod(entity e, string modelname)
 {
 #ifdef ALLOW_VARIABLE_LOD
@@ -286,6 +287,7 @@
 	setmodel(e, modelname); // players have high precision
 #endif
 	player_setupanimsformodel();
+	UpdateVoiceMessages();
 }
 
 /*

Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc	2007-12-21 02:55:13 UTC (rev 3041)
+++ trunk/data/qcsrc/server/cl_player.qc	2007-12-21 13:59:44 UTC (rev 3042)
@@ -664,3 +664,164 @@
 	if(self.selected_player)
 		self.last_selected_player = self.selected_player;
 }
+
+.string voice_attack;
+.string voice_attackinfive;
+.string voice_coverme;
+.string voice_defend;
+.string voice_freelance;
+.string voice_incoming;
+.string voice_meet;
+.string voice_needhelp;
+.string voice_seenflag;
+.string voice_taunt;
+.string voice_teamshoot;
+.float modelindex_for_voice;
+
+float GetVoiceMessageTeamsayType(string type)
+{
+	if(type == "taunt")
+		return 0;
+	if(type == "teamshoot")
+		return 2;
+	return 1;
+}
+
+string allvoicesamples = "attack attackinfive coverme defend freelance incoming meet needhelp seenflag taunt teamshoot";
+float GetVoiceMessageSampleField_notFound;
+.string GetVoiceMessageSampleField(string type)
+{
+	GetVoiceMessageSampleField_notFound = 0;
+	switch(type)
+	{
+		case "attack":       return voice_attack;
+		case "attackinfive": return voice_attackinfive;
+		case "coverme":      return voice_coverme;
+		case "defend":       return voice_defend;
+		case "freelance":    return voice_freelance;
+		case "incoming":     return voice_incoming;
+		case "meet":         return voice_meet;
+		case "needhelp":     return voice_needhelp;
+		case "seenflag":     return voice_seenflag;
+		case "taunt":        return voice_taunt;
+		case "teamshoot":    return voice_teamshoot;
+	}
+	GetVoiceMessageSampleField_notFound = 1;
+	return voice_taunt;
+}
+
+void PrecacheVoiceMessages(string f)
+{
+	float fh;
+	float i, n;
+	string s;
+	fh = fopen(f, FILE_READ);
+	if(fh < 0)
+		return;
+	while((s = fgets(fh)))
+	{
+		if(tokenize(s) != 3)
+		{
+			dprint("Invalid sound info line: ", s, "\n");
+			continue;
+		}
+		n = stof(argv(2));
+		for(i = 1; i <= n; ++i)
+			precache_sound(strcat(argv(1), ftos(i), ".wav"));
+	}
+	fclose(fh);
+}
+
+void LoadVoiceMessages(string f)
+{
+	float fh;
+	string s;
+	var .string field;
+	fh = fopen(f, FILE_READ);
+	if(fh < 0)
+		return;
+	while((s = fgets(fh)))
+	{
+		if(tokenize(s) != 3)
+			continue;
+		field = GetVoiceMessageSampleField(argv(0));
+		if(GetVoiceMessageSampleField_notFound)
+			continue;
+		if(self.field)
+			strunzone(self.field);
+		self.field = strzone(strcat(argv(1), " ", argv(2)));
+	}
+	fclose(fh);
+}
+
+void UpdateVoiceMessages()
+{
+	if(self.modelindex == self.modelindex_for_voice)
+		return;
+	self.modelindex_for_voice = self.modelindex;
+	LoadVoiceMessages("sound/player/voice/default.voice");
+	LoadVoiceMessages(strcat(self.model, ".voice"));
+}
+
+float precache_sound_index (string s) = #19;
+void soundto(entity e, entity sounddest, float chan, string samp, float vol, float atten)
+{
+	vector o;
+	o = e.origin + 0.5 * (e.mins + e.maxs);
+	msg_entity = sounddest;
+	WriteByte(MSG_ONE, 6);
+	WriteByte(MSG_ONE, 27); // all bits except SND_LOOPING
+	WriteByte(MSG_ONE, vol * 255);
+	WriteByte(MSG_ONE, atten * 64);
+	WriteEntity(MSG_ONE, e);
+	WriteByte(MSG_ONE, chan);
+	WriteShort(MSG_ONE, precache_sound_index(samp));
+	WriteCoord(MSG_ONE, o_x);
+	WriteCoord(MSG_ONE, o_y);
+	WriteCoord(MSG_ONE, o_z);
+}
+
+void VoiceMessage(string type)
+{
+	// TODO precache voice messages?
+	var string sample;
+	var float teamsay;
+	sample = self.(GetVoiceMessageSampleField(type));
+
+	if(GetVoiceMessageSampleField_notFound)
+	{
+		sprint(self, strcat("Invalid voice. Use one of: ", allvoicesamples, "\n"));
+		return;
+	}
+
+	if(!sample)
+		return;
+
+	teamsay = GetVoiceMessageTeamsayType(type);
+
+	tokenize(sample);
+	sample = strcat(argv(0), ftos(ceil(random() * stof(argv(1)))), ".wav"); // randomization
+
+	if(teamsay == 2)
+	{
+		if(teams_matter)
+			if(self.pusher)
+				if(self.pusher.team == self.team)
+				{
+					soundto(self, self.pusher, CHAN_VOICE, sample, 1, ATTN_NONE);
+					soundto(self, self, CHAN_VOICE, sample, 1, ATTN_NONE);
+				}
+	}
+	else if(teamsay == 0 || !teams_matter)
+	{
+		// broadcast the sound, but it's directional
+		sound(self, CHAN_VOICE, sample, 1, ATTN_NORM);
+	}
+	else if(teamsay == 1)
+	{
+		entity e;
+		FOR_EACH_CLIENT(e)
+			if(e.team == self.team)
+				soundto(self, e, CHAN_VOICE, sample, 1, ATTN_NONE);
+	}
+}

Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc	2007-12-21 02:55:13 UTC (rev 3041)
+++ trunk/data/qcsrc/server/clientcommands.qc	2007-12-21 13:59:44 UTC (rev 3042)
@@ -452,6 +452,8 @@
 		sprint(self, "\n");
 	} else if(argv(0) == "teamstatus") {
 		PrintScoreboard(self);
+	} else if(argv(0) == "voice") {
+		VoiceMessage(argv(1));
 	} else if(argv(0) == "say") {
 		Say(self, FALSE, substring(s, 4, strlen(s) - 4));
 		//clientcommand(self, formatmessage(s));

Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc	2007-12-21 02:55:13 UTC (rev 3041)
+++ trunk/data/qcsrc/server/miscfunctions.qc	2007-12-21 13:59:44 UTC (rev 3042)
@@ -875,16 +875,20 @@
 	}
 }
 
+void PrecacheVoiceMessages(string f);
 void precache_all_models(string pattern)
 {
 	float globhandle, i, n;
+	string f;
 
 	globhandle = search_begin(pattern, TRUE, FALSE);
 	n = search_getsize(globhandle);
 	for(i = 0; i < n; ++i)
 	{
 		//print(search_getfilename(globhandle, i), "\n");
-		precache_model(search_getfilename(globhandle, i));
+		f = search_getfilename(globhandle, i);
+		precache_model(f);
+		PrecacheVoiceMessages(strcat(f, ".voice"));
 	}
 	search_end(globhandle);
 }
@@ -903,6 +907,7 @@
 	// Precache all player models if desired
 	if (cvar("sv_precacheplayermodels"))
 	{
+		PrecacheVoiceMessages("sound/player/voice/default.voice");
 		precache_all_models("models/player/*.zym");
 		precache_all_models("models/player/*.dpm");
 		precache_all_models("models/player/*.md3");

Added: trunk/data/sound/player/voice/attack1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/attack1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/attackinfive1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/attackinfive1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/coverme1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/coverme1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/default.voice
===================================================================
--- trunk/data/sound/player/voice/default.voice	                        (rev 0)
+++ trunk/data/sound/player/voice/default.voice	2007-12-21 13:59:44 UTC (rev 3042)
@@ -0,0 +1,11 @@
+attack sound/player/voice/attack 1
+attackinfive sound/player/voice/attackingive 1
+coverme sound/player/voice/coverme 1
+defend sound/player/voice/defend 1
+freelance sound/player/voice/freelance 1
+incoming sound/player/voice/incoming 1
+meet sound/player/voice/meet 1
+needhelp sound/player/voice/needhelp 1
+seenflag sound/player/voice/seenflag 2
+taunt sound/player/voice/taunt 9
+teamshoot sound/player/voice/teamshoot 5

Added: trunk/data/sound/player/voice/defend1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/defend1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/freelance1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/freelance1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/incoming1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/incoming1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/meet1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/meet1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/needhelp1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/needhelp1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/seenflag1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/seenflag1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/seenflag2.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/seenflag2.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt2.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt2.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt3.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt3.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt4.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt4.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt5.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt5.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt6.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt6.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt7.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt7.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt8.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt8.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/taunt9.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/taunt9.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/teamshoot1.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/teamshoot1.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/teamshoot2.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/teamshoot2.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/teamshoot3.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/teamshoot3.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/teamshoot4.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/teamshoot4.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/data/sound/player/voice/teamshoot5.ogg
===================================================================
(Binary files differ)


Property changes on: trunk/data/sound/player/voice/teamshoot5.ogg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the nexuiz-commits mailing list