Radio ein & ausschalten

schnuller
HY

Kann man ein radio mit dem eigenem sound mit der F-taste ein und ausschalten ?????
OLD MAN WITH GUN
Ja, kann man.

1. Radio als script_model in die Map setzen.
2 einen trigger_use um das Radio platzieren und diesem folgende Werte für Key und Value geben:
Key: targetname
Value: trigger_radio
3. alles deselektieren, dann zuerst den Trigger und dann das Radio selektieren und mit der Taste 'w' verbinden.
Das war es auch schon im Radianten.

Nun erstellt man eine neue Textdatei im Ordner maps/mp mit z.B. dem Namen radio.gsc in die folgendes eingetragen wird:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
main()
{
  thread radio();
}

radio()
{
  level.radio_on = false;
  thread switch_radio();
}

switch_radio()
{
  trig_radio = getent("trigger_radio","targetname");
  radio = getent(trig_radio.target,"targetname");
	
  while(1)
  {
    trig_radio waittill("trigger");
		
    if(level.radio_on == false)
    {
      radio playloopsound("radio");
      level.radio_on = true;
    }
    else
    {
      radio stoploopsound();
      level.radio_on = false;
    }
  }
  thread switch_radio();
}


Hinten in den Klammern bei playloopsound natürlich den eigenen Soundnamen angeben, den man in seiner csv-Datei für sein Musikstück vergeben hat (wie das mit den eigenen Sounds geht findet man hier im Forum, desshalb gehe ich da jetzt hier nicht weiter drauf ein).

Dann noch in der in der gsc-Datei der eigenen Map unter die Zeile maps\mp\load::main(); folgende Zeile eintragen:
maps\mp\radio::main();
Die Map nur noch kompilieren und schon hat man ein Radio das sich ein- und ausschalten lässt.

Edit: kleinen Fehler im script beseitigt (war schon spät)
schnuller
Super


Danke für die schnelle hilfe. Grins 1 Grins 1 Grins 1
schnuller
Moin

Kann das radio leider nur ausschalten und nicht wieder einschalten.
Hier meine radio.gsc


main()
{
thread radio();
}

radio()
{
level.radio_on = false;
thread switch_radio();
}

switch_radio()
{
trig_radio = getent("trigger_radio","targetname");
radio = getent(trig_radio.target,"targetname");

while(1)
{
trig_radio waittill("trigger");

if(level.radio_on == false)
{
radio playloopsound("semmel.mp3");
level.radio_on = true;
}
else
{
radio stoploopsound();
level.radio_on = false;
}
}
thread switch_radio();
}

Kannst du mir nochmal helfen???
OLD MAN WITH GUN

Zitat:

Original von schnuller
Moin

Kann das radio leider nur ausschalten und nicht wieder einschalten.

Also die gsc-Datei sieht auf den ersten Blick in Ordnung aus, aber was meinst du damit, du kannst das Radio nur aussschalten, aber nicht ein?
Wenn die Map startet ist das Radio erst einmal aus und muss eingeschaltet werden. Hast du eventuell irgendwo in deiner gsc-Datei der Map noch einen Aufruf, der das Radio betrifft (z.B. von vorherigen Versuchen, wo das Radio dauernd spielte)?

Das sieht mir nicht allerdings nicht in Ordnung aus:

Zitat:

radio playloopsound("semmel.mp3");

Wie man Sounds richtig einbindet (also über einen Eintrag in einer .csv-Datei die den Namen deiner Map hat und sich im Ordner soundaliases befinden muss) weisst du aber schon, oder?
schnuller
Wenn die map startet spielt das radio einen eigenen song ab mit den namen semmel.mp3.

Meine mapname.csv im soundaliases ordner ist so aufgebaut.

name,sequence,file,vol_min,vol_max,vol_mod,pitch_min,pitch_max,dist_min,dis
t_max,channel,type,probability,loop,masterslave,loadspec,subtitle,compressi
on,secondaryaliasname,volumefalloffcurve,startdelay,speakermap,reverb,lfe percentage
#Ambiance
ambient_mp_berlinsballerbude,,ambient/amb_russia02_ext.mp3,0.63,,,,,,,local
,streamed,,looping,,mp_berlinsballerbude

barrel_explosion,,explosions/exp_armoredcar.wav,0.8,1,,,,50,1000,local,stre
amed,,,,mp_berlinsballerbude,,,,,,,,
barrel_explosion_imminent,,misc/metal_stress01.wav,0.6,1,,,,50,500,local,st
reamed,,,,mp_berlinsballerbude,,,,,,,,
barrel_fire,,fire/Fire_Sm_loop01.wav,0.01,1,,,,50,400,auto,streamed,,,,mp_b
erlinsballerbude,,,,,,,,



bbradio,,misc/semmel.mp3,1,,,,,,,voice,streamed,,looping,,mp_berlinsballerb
ude
dog,,misc/dog.wav,1,,,,,,,voice,loaded,,looping,,mp_berlinsballerbude


Hier meine haupt.gsc


main()
{
thread delete_brush1();
maps\mp\mp_exploder::main();
maps\mp\flaschen::main();
maps\mp\bb_barrels::barrelInit();
maps\mp\_load::main();
maps\mp\radio::main();
ambientPlay("ambient_mp_berlinsballerbude");
maps\mp\mp_berlinsballerbude_fx::main();
getent ("bbradio","targetname") playloopsound ("bbradio");
getent ("dog","targetname") playloopsound ("dog");

game["allies"] = "russian"; //Die Alliierten sind Russen
game["axis"] = "german"; //Die Achsenmächste sind Deutsche
game["attackers"] = "allies"; //Die Alliierten sind Angreifer
game["defenders"] = "axis"; //Die Achsenmächte müssen verteidigen
game["russian_soldiertype"] = "padded"; //Die Russen tragen Winteruniformen
game["german_soldiertype"] = "winterdark"; //Die Deutschen tragen dunkle Winteruniformen

if(getcvar("g_gametype") == "hq")
{
level.radio = [];
level.radio[0] = spawn("script_model", (97, -1185, -512));
level.radio[0].angles = (0, 180, 0);
level.radio[1] = spawn("script_model", (-735, -437, -1204));
level.radio[1].angles = (0, 90, 0);
level.radio[2] = spawn("script_model", (904, -2137, -120cool );
level.radio[2].angles = (0, 180, 0);
level.radio[3] = spawn("script_model", (-736, -1858, -1171));
level.radio[3].angles = (0, 180, 0);
level.radio[4] = spawn("script_model", (1067, -338, -1111));
level.radio[4].angles = (0, 90, 0);
level.radio[5] = spawn("script_model", (95, -1840, -114cool );
level.radio[5].angles = (0, 0, 0);
}

setCullFog (0, 6000, .42, .46, .50, 0);
}
delete_brush1() {
brushmodel1 = getent ("eis","targetname");
trigger1 = getent ("mytrigger1","targetname");
trigger1 waittill ("trigger", other);
brushmodel1 delete();
}
OLD MAN WITH GUN
Ich nehme mal an, das Radio, das bei dir den Targetnamen 'bbradio' hat, willst du ein- und ausschalten, richtig?
Also gehst du zuerst hin und setzt bei dem Radio einen trigger_use und gibst ihm als Key targetname und als Value trigger_radio. Dann wählst du sowohl den Trigger als auch das Radio an (Reihenfolge beachten) und drückst 'w'. Somit zielt der Trigger auf das Radio.
Dann wirfst du mal die Zeile "getent ("bbradio","targetname") playloopsound ("bbradio");" aus der gsc-Datei deiner Map.
Desweiteren ersetzt du in der Radio.gsc die Zeile "radio playloopsound("semmel.mp3");" mit "radio playloopsound("bbradio");" (so, wie du es ja auch in deiner csv-Datei angegeben hast).
Danach sollte das Radio eigentlich richtig funktioneren.
schnuller
Hat super funktioniert, dank dir OLD MAN WITH GUN

Danke Grins 1