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