X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Ftarget_music.qc;h=12ee04ad22ba1567f1281360ac04002f285b3b24;hb=6f37a8f8076a572097afb13de2c367a72717c927;hp=c5b7d181ed4481a43de310336816bf5b15e01f3c;hpb=9568479ea0e67dd537babf23d9cc585617a96182;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/target_music.qc b/qcsrc/server/target_music.qc index c5b7d181e..12ee04ad2 100644 --- a/qcsrc/server/target_music.qc +++ b/qcsrc/server/target_music.qc @@ -1,40 +1,64 @@ +#include "_.qh" + +.float volume; +.float lifetime; // values: // volume // noise // targetname -// timeout +// lifetime // fade_time -// when triggered, the music is overridden for activator until timeout (or forever, if timeout is 0) +// fade_rate +// when triggered, the music is overridden for activator until lifetime (or forever, if lifetime is 0) // when targetname is not set, THIS ONE is default -void target_music_sendto(float to) +void target_music_sendto(float to, float is) { + WriteByte(to, SVC_TEMPENTITY); WriteByte(to, TE_CSQC_TARGET_MUSIC); - WriteByte(to, self.volume * 255.0); + WriteShort(to, num_for_edict(self)); + WriteByte(to, self.volume * 255.0 * is); WriteByte(to, self.fade_time * 16.0); - WriteByte(to, self.timeout); + WriteByte(to, self.fade_rate * 16.0); + WriteByte(to, self.lifetime); WriteString(to, self.noise); } void target_music_reset() { if(self.targetname == "") - target_music_sendto(MSG_ALL); + target_music_sendto(MSG_ALL, 1); } void target_music_use() { if(!activator) return; - msg_entity = activator; - target_music_sendto(MSG_ONE); + if(IS_REAL_CLIENT(activator)) + { + msg_entity = activator; + target_music_sendto(MSG_ONE, 1); + } + entity head; + FOR_EACH_SPEC(head) if(head.enemy == activator) { msg_entity = head; target_music_sendto(MSG_ONE, 1); } } void spawnfunc_target_music() { self.use = target_music_use; self.reset = target_music_reset; - precache_sound(self.noise); if(!self.volume) self.volume = 1; if(self.targetname == "") - target_music_sendto(MSG_INIT); + target_music_sendto(MSG_INIT, 1); + else + target_music_sendto(MSG_INIT, 0); +} +void TargetMusic_RestoreGame() +{ + for(self = world; (self = find(self, classname, "target_music")); ) + { + if(self.targetname == "") + target_music_sendto(MSG_INIT, 1); + else + target_music_sendto(MSG_INIT, 0); + } } // values: // volume @@ -44,40 +68,41 @@ void spawnfunc_target_music() // spawnflags: // 1 = START_OFF // when triggered, it is disabled/enabled for everyone -float trigger_music_SendEntity(entity to, float sf) +float trigger_music_SendEntity(entity to, int sf) { - WriteByte(MSG_ENTITY, TE_CSQC_TARGET_MUSIC); - sf &~= 0x80; + WriteByte(MSG_ENTITY, ENT_CLIENT_TRIGGER_MUSIC); + sf &= ~0x80; if(self.cnt) sf |= 0x80; WriteByte(MSG_ENTITY, sf); if(sf & 4) { - WriteCoord(MSG_ENTITY, self.origin_x); - WriteCoord(MSG_ENTITY, self.origin_y); - WriteCoord(MSG_ENTITY, self.origin_z); + WriteCoord(MSG_ENTITY, self.origin.x); + WriteCoord(MSG_ENTITY, self.origin.y); + WriteCoord(MSG_ENTITY, self.origin.z); } if(sf & 1) { if(self.model != "null") { WriteShort(MSG_ENTITY, self.modelindex); - WriteCoord(MSG_ENTITY, self.mins_x); - WriteCoord(MSG_ENTITY, self.mins_y); - WriteCoord(MSG_ENTITY, self.mins_z); - WriteCoord(MSG_ENTITY, self.maxs_x); - WriteCoord(MSG_ENTITY, self.maxs_y); - WriteCoord(MSG_ENTITY, self.maxs_z); + WriteCoord(MSG_ENTITY, self.mins.x); + WriteCoord(MSG_ENTITY, self.mins.y); + WriteCoord(MSG_ENTITY, self.mins.z); + WriteCoord(MSG_ENTITY, self.maxs.x); + WriteCoord(MSG_ENTITY, self.maxs.y); + WriteCoord(MSG_ENTITY, self.maxs.z); } else { WriteShort(MSG_ENTITY, 0); - WriteCoord(MSG_ENTITY, self.maxs_x); - WriteCoord(MSG_ENTITY, self.maxs_y); - WriteCoord(MSG_ENTITY, self.maxs_z); + WriteCoord(MSG_ENTITY, self.maxs.x); + WriteCoord(MSG_ENTITY, self.maxs.y); + WriteCoord(MSG_ENTITY, self.maxs.z); } WriteByte(MSG_ENTITY, self.volume * 255.0); WriteByte(MSG_ENTITY, self.fade_time * 16.0); + WriteByte(MSG_ENTITY, self.fade_rate * 16.0); WriteString(MSG_ENTITY, self.noise); } return 1; @@ -96,7 +121,6 @@ void spawnfunc_trigger_music() { if(self.model != "") setmodel(self, self.model); - precache_sound (self.noise); if(!self.volume) self.volume = 1; if(!self.modelindex) @@ -109,5 +133,5 @@ void spawnfunc_trigger_music() self.use = trigger_music_use; self.reset = trigger_music_reset; - Net_LinkEntity(self, FALSE, 0, trigger_music_SendEntity); + Net_LinkEntity(self, false, 0, trigger_music_SendEntity); }