#ifdef SVQC
// TODO add a way to do looped sounds with sound(); then complete this entity
-void target_speaker_use_off();
-void target_speaker_use_activator()
-{SELFPARAM();
- if (!IS_REAL_CLIENT(activator))
+void target_speaker_use_off(entity this, entity actor, entity trigger);
+void target_speaker_use_activator(entity this, entity actor, entity trigger)
+{
+ if (!IS_REAL_CLIENT(actor))
return;
string snd;
- if(substring(self.noise, 0, 1) == "*")
+ if(substring(this.noise, 0, 1) == "*")
{
- var .string sample = GetVoiceMessageSampleField(substring(self.noise, 1, -1));
+ var .string sample = GetVoiceMessageSampleField(substring(this.noise, 1, -1));
if(GetPlayerSoundSampleField_notFound)
snd = SND(Null);
- else if(activator.(sample) == "")
+ else if(actor.(sample) == "")
snd = SND(Null);
else
{
- tokenize_console(activator.(sample));
+ tokenize_console(actor.(sample));
float n;
n = stof(argv(1));
if(n > 0)
}
}
else
- snd = self.noise;
- msg_entity = activator;
- soundto(MSG_ONE, self, CH_TRIGGER, snd, VOL_BASE * self.volume, self.atten);
+ snd = this.noise;
+ msg_entity = actor;
+ soundto(MSG_ONE, this, CH_TRIGGER, snd, VOL_BASE * this.volume, this.atten);
}
-void target_speaker_use_on()
-{SELFPARAM();
+void target_speaker_use_on(entity this, entity actor, entity trigger)
+{
string snd;
- if(substring(self.noise, 0, 1) == "*")
+ if(substring(this.noise, 0, 1) == "*")
{
- var .string sample = GetVoiceMessageSampleField(substring(self.noise, 1, -1));
+ var .string sample = GetVoiceMessageSampleField(substring(this.noise, 1, -1));
if(GetPlayerSoundSampleField_notFound)
snd = SND(Null);
- else if(activator.(sample) == "")
+ else if(actor.(sample) == "")
snd = SND(Null);
else
{
- tokenize_console(activator.(sample));
+ tokenize_console(actor.(sample));
float n;
n = stof(argv(1));
if(n > 0)
}
}
else
- snd = self.noise;
- _sound(self, CH_TRIGGER_SINGLE, snd, VOL_BASE * self.volume, self.atten);
- if(self.spawnflags & 3)
- self.use = target_speaker_use_off;
+ snd = this.noise;
+ _sound(this, CH_TRIGGER_SINGLE, snd, VOL_BASE * this.volume, this.atten);
+ if(this.spawnflags & 3)
+ this.use = target_speaker_use_off;
}
-void target_speaker_use_off()
-{SELFPARAM();
- sound(self, CH_TRIGGER_SINGLE, SND_Null, VOL_BASE * self.volume, self.atten);
- self.use = target_speaker_use_on;
+void target_speaker_use_off(entity this, entity actor, entity trigger)
+{
+ sound(this, CH_TRIGGER_SINGLE, SND_Null, VOL_BASE * this.volume, this.atten);
+ this.use = target_speaker_use_on;
}
-void target_speaker_reset()
-{SELFPARAM();
- if(self.spawnflags & 1) // LOOPED_ON
+void target_speaker_reset(entity this)
+{
+ if(this.spawnflags & 1) // LOOPED_ON
{
- if(self.use == target_speaker_use_on)
- target_speaker_use_on();
+ if(this.use == target_speaker_use_on)
+ target_speaker_use_on(this, NULL, NULL);
}
- else if(self.spawnflags & 2)
+ else if(this.spawnflags & 2)
{
- if(self.use == target_speaker_use_off)
- target_speaker_use_off();
+ if(this.use == target_speaker_use_off)
+ target_speaker_use_off(this, NULL, NULL);
}
}
-void spawnfunc_target_speaker()
-{SELFPARAM();
+spawnfunc(target_speaker)
+{
// TODO: "*" prefix to sound file name
// TODO: wait and random (just, HOW? random is not a field)
if(self.noise)
self.use = target_speaker_use_activator;
else if(self.spawnflags & 1) // LOOPED_ON
{
- target_speaker_use_on();
+ target_speaker_use_on(self, NULL, NULL);
self.reset = target_speaker_reset;
}
else if(self.spawnflags & 2) // LOOPED_OFF