Sound an script_brush binden

valavexo
Hey, ich bins noch mal Augenzwinkern

Also, folgendes Problem: Ich habe eine Gondel, bzw. einen Fahrkorb, der sich auf Kommando auch brav bewegt.

Nun wollte ich ihn noch mit einem Sound belegen, also ich will, dass während der Fahrt ein Sound abgespielt wird (ist sowas wie ne Fahrstuhl Musik, mit Gong am Ende und Gong am anfang).

Das funktioniert auch, aber leider nur soweit, dass der Sound zwar abgespielt wird, aber nur an der Stelle, wo der Spiele F gedrückt hat. Er bewegt sich also nicht mit dem Script_Brush mit.
Bei einer Tür o.ä. ist das ja kein Problem, die ändert ihren Aufenthaltsort ja nur in sofern, dass sie sich dreht, hier werden aber ca. 1000 Units zurückgelegt...

Wie bringe ich den Sound dazu an dem Script-brush_model zu "kleben" ?

Hier mein script:

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:
34:
35:
36:
37:
38:
main() 
{ 
level.scr_sound["ipanema"] = "ipanema"; 
korbtriggers = getentarray("korbtrig","targetname");  
for(i = 0; i < korbtriggers.size; i++) korbtriggers[i] thread korb_think(); 
}  

korb_think() 
{ 
self.korbmoving = false; 
self.korbpos = true; 
self.korbmodel = getent(self.target,"targetname");  
while (1) 
   { 
   self waittill("trigger"); 
   if(!self.korbmoving) self thread korb_move();	 
   } 
}  

korb_move() 
{ 
self.korbmoving = true; 
if(self.korbpos) 
  { 
  self.korbmodel playsound("ipanema"); 
  self.korbmodel movex(-1244,5.25);  
  self.korbmodel waittill("movedone");
  self.korbpos = false; 
  } 
else 
  { 
  self.korbmodel playsound("ipanema"); 
  self.korbmodel movex(1244,5.25); 
  self.korbmodel waittill("movedone"); 
  self.korbpos = true;
  } 
self.korbmoving = false; 
} 



Wie gesagt, script selbst ist fehlerfrei, habs nur der vollständigkeit wegen gepostet.
bangingbernie
Marvin
nein das kann er ja, er meint dass sich der sound nicht mit der gondel mit bewegt und am trigger kleben bleibt. Augenzwinkern

mfg Marvin
valavexo

Zitat:

Original von Marvin
er meint dass sich der sound nicht mit der gondel mit bewegt und am trigger kleben bleibt. Augenzwinkern


Jein... Also der Sound bewegt sich nicht mit der Gondel, richtig,
aber er bleibt leider auch nicht am Trigger kleben, sonst könnte ich das ja mit

self enableLinkTo();
self linkto(self.korbmodel);

lösen (also den Trigger an das brush_model kleben)

Der Sound bleibt einfach an der Stelle wo er aktiviert wurde, egal ob sich drumrum alles bewegt oder nicht...

Ich glaube als Kernfrage kann ich das so formulieren:
Wie knüpfe ich einen Sound an ein sich bewegendes Objekt?
valavexo
Ich hab mich eben nochmal durch diescript documentation gewühlt.
Ich finde zwar viele verschiedene Möglichkeiten den Sound auszuführen (z.b. PlaySoundToPlayer)

aber so richtig funktionieren will davon auch nichts.... entweder eine Fehlermeldung oder kein erwünschter Effekt. Gibt es üebrhaupt eine Möglichkeit dafür? (Langsam gehen mir die Ideen aus).

Aber prinzipiell müsste es doch gehen, ich meine bei Fahrzeugen (z.b. im Singleplayer) oder dem Heli im Multiplayer bewegt sich der Sound doch auch mit dem script_brush mit. Oder ist das was anderes?

Hat noch irgendwer irgendeine Idee?
Dankeschön grosses Grinsen
Nightwing
Ich hab Dein Script mal etwas gepimpt.
Da ich des Radiants nicht mächtig bin, kann ich es leider nicht testen.
Wie Du nun was einbaust, hab ich grad mal im TS nachgefragt:

Du musst alle Brushes mit dem targetname "korb" anwählen, rechte Maustaste --> ungroup entity
Alles angewählt lassen, rechte Maustaste --> targetname "korb" (für alle Teile des Korbs) eingeben.

Hier mal das Script:

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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
main(){

	level.korbDown = true;
	level.korbMoving = false;
	
	thread korb_start();
}

korb_start(){

	korb = getentarray ("korbtrig","targetname");
	
	if(isdefined(korb))
		for (i = 0; i < korb.size; i++)
			korbtriggers[i] thread korb_think();
}

korb_think(){

	while (1){
	
		self waittill ("trigger");
		
		if (!level.korbMoving)
			thread korb_move();
	}
}

korb_move(){

	korb = getentarray ("korbtrig","targetname");
	korbmodel = getent ("korb", "targetname");
	
	level.korbMoving = true;
	
	speed = 5;
	distance = 5600;
	
	if (level.korbDown){
	
		korbmodel playloopsound ("korb_move");
		korbmodel movex (distance, speed);
		korbmodel waittill ("movedone");
		korbmodel stoploopsound();
		level.korbDown = false;
	}

	else{
	
		korbmodel playloopsound ("korb_move");
		korbmodel movex (distance - (distance * 2), speed);
		korbmodel waittill ("movedone");
		korbmodel stoploopsound();
		level.korbDown = true;
	}
	
	level.korbMoving = false;
}


Wenns klappt, musst Dich bei Graves bedanken. Zunge raus

ToM
valavexo
Funktioniert alles wunderbar,
hab nur noch die Distance und den Soundnamen entsprechend angepasst, und in der Zeile

korbtriggers[i] thread korb_think();
korbtriggers in korb umbenannt,
weil es korbtriggers jetzt ja nicht mehr gab.
(Nur der Vollständigkeit halber)...


Danke Graves, danke Nightwing, ich war echt drann aufzugeben^^.