Oi!mel
Hallo Leute,
Hat jemand eine kurze Anleitung für mich wie ich folgendes Objekt erstellen kann:
Eine brennende Fackel mit einem flackernden Licht Effekt und einem leisen Sound. Da ich die Fackel öfter in der Map nutzen will, möchte ich das ganze in ein prefab bringen um es ohne Stress aufrufen zu können und nicht für jede Fackel den Effekt neu mit Koordinaten angeben muss.
Dankeschön
OLD MAN WITH GUN
Erstelle zuerst deine deine Fackel im Radiant, dann setz ein Licht drüber (flackern kannst du dir da abschminken) und gib dem Licht eine Farbe und einen Radius deiner Wahl. Dann setze noch ein script_struct an die Strelle, wo das Feuer an der Fackel sein soll (das Zentrum, des script_struct ist maßgeblich). Gib diesem script_struct dann noch nen targetname (z.b. torch_fx). Das Ganze specherst du dann in deinem prefab-Ordner.
Dieses Prefab kannst du jetzt in deiner Map mehrfach platzieren.
Jetzt brauchst du nur noch in deiner Map gsc-Datei die torch_fx alle einsammeln und den Effekt und den Sound dort abspielen zu lassen.
z.B.
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
torch = getentarray("torch_fx","targetname");
for( i = 0 ; i < torch.size ; i++ )
torch[i] thread torch_fx_and_sound();
torch_fx_and_sound()
{
hier jetzt fx und sound an self.origin abspielen lassen
} |
|
Banana2077
Original von OLD MAN WITH GUN
Erstelle zuerst deine deine Fackel im Radiant, dann setz ein Licht drüber (flackern kannst du dir da abschminken)
}[/code]
Wie kann man eigentlich ein licht flackern lassen?
Jeremin
meines wissens gar nicht, da das licht fest in die map compiliert wird.
was wie ein flackern aussieht, ist fx...
->STUEBI<-
könnte man nicht einfach das prinzip vom lichtschalter nehmen und es immer an und abschalten??
Banana2077
Da man Licht scripten kann ist das möglich!
Oi!mel
aber das Licht wird ja beim Compiliren berechnet. Wenn man im nachinein ein Licht aufleuchten lässt ist das zwar rein technisch vorhanden, aber es leuchtet nicht. Glaub ich zumindest.
OLD MAN WITH GUN
Original von Banana2077
Da man Licht scripten kann ist das möglich!
Wäre aber der Mühe nicht wert.
Aber ein wenig in Richtung Flackern kann man mit Effekten erzielen.
Oi!mel
Ich glaub mein script ist nicht ganz richtig, es wird werder sound abgespielt noch ist ein Effekt zu sehen.
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
torch = getentarray("torch_fx","targetname");
for( i = 0 ; i < torch.size ; i++ )
torch[i] thread fackel();
fackel()
{
level.scr_sound["feuer_snd"] = "feuer_snd";
level._effect[ "feuer_efx" ] = loadfx( "fire/fire_barrel_fragm_a" );
mapsmp_fx::loopfx("feuer_efx", (self.struct), 4, (self.struct) + (0, 0, 270));
self playsound("feuer_snd");
} |
|
Kann mir jemand bite helfen?
Jeremin
ich weiss jetzt nicht, inwiefern das dies hier bei quakeC zutrifft, aber zumindest bei C++ würde es in zeile 2 torch.size() heissen.
aber es kann in quakeC auch falsch sein
gruss
jeremin
Nightwing
Zeile 11 fehlen die "\"
maps\mp\_fx::
ToM
Oi!mel
@Nightwing
Irgendwie verschwiedet mein Backslash wenn ich hier poste, im Script sind sie vorhanden
@Jeremin
Kommen () nicht hinter eine Function? Ich kenn mich zwar nicht viel mit C++ aus, aber soweit ich weiß is das torch ein structure, an diesen können durch den Punktoperator weitere Elemente angehängt werden. Ist dann übersichtlicher. Berichtigt mich wenns falsch ist.
Nightwing
Original von Oi!mel
Irgendwie verschwiedet mein Backslash wenn ich hier poste, im Script sind sie vorhanden
Merkwürdig, passiert mir nie:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
torch = getentarray( "torch_fx", "targetname" );
for( i = 0 ; i < torch.size ; i++ )
torch[i] thread fackel();
fackel()
{
level.scr_sound[ "feuer_snd" ] = "feuer_snd";
level._effect[ "feuer_efx" ] = loadfx( "fire/fire_barrel_fragm_a" );
maps\mp\_fx::loopfx( "feuer_efx", ( self.struct ), 4, ( self.struct ) + ( 0, 0, 270 ) );
self playsound( "feuer_snd" );
} |
|
Welches Programm nutzt Du zur Bearbeitung? Ich empfehle
Programmer's Notepad.
ToM
Oi!mel
Ich benutze Notepad++
Oi!mel
Es ist zwar schon etwas länger her dass ich dieses Thema eröffnet habe, das Problem habe ich aber immer noch nicht gelöst. Mir wird kein Effekt oder Sound abgespielt. Hier ist meine komplette map.gsc
Code 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:
|
main()
{
//maps\mp\mp_hill_fx::main();
maps\mp\_load::main();
//maps\mp\_compass::setupMiniMap("compass_map_mp_hill");
//VisionSetNaked( "mp_hill" );
ambientPlay("ambient_hill");
torch = getentarray("torch_fx","targetname");
for( i = 0 ; i < torch.size ; i++ )
torch[i] thread fackel();
game["allies"] = "marines";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "desert";
game["axis_soldiertype"] = "desert";
setdvar( "r_specularcolorscale", "1" );
setdvar("compassmaxrange","1800");
}
fackel()
{
level.scr_sound[ "feuer_snd" ] = "feuer_snd";
level._effect[ "feuer_efx" ] = loadfx( "fire/fire_barrel_fragm_a" );
maps\mp\_fx::loopfx( "feuer_efx", ( self.struct ), 4, ( self.struct ) + ( 0, 0, 270 ) );
self playsound( "feuer_snd" );
} |
|
Vielleicht entdeckt ja noch jemand einen Fehler.
BadMan
Probiere es mal so
Code 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:
|
main()
{
//maps\mp\mp_hill_fx::main();
maps\mp\_load::main();
thread fackel();
//maps\mp\_compass::setupMiniMap("compass_map_mp_hill");
//VisionSetNaked( "mp_hill" );
ambientPlay("ambient_hill");
game["allies"] = "marines";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "desert";
game["axis_soldiertype"] = "desert";
setdvar( "r_specularcolorscale", "1" );
setdvar("compassmaxrange","1800");
}
fackel()
{
fx = loadfx( "fire/fire_barrel_fragm_a" );
sound = "feuer_snd";
torch = getentarray("torch_fx","targetname");
for( i = 0 ; i < torch.size ; i++ )
torch[i] thread fackel_start(fx, sound);
}
fackel_start(fx, sound)
{
maps\mp\_fx::loopfx(fx, (self.origin), 4, (self.origin) + (0, 0, 270));
self PlayLoopSound ( sound );
} |
|
Oi!mel
Danke, jetzt schreibt er mir aber
BadMan
Habs oben mal ediert, müsste so klppen
Oi!mel
Danke, jetzt bekomm ich keine Fehlermeldung mehr. Funktionieren tut es allerdings auch noch nicht. Kann es sein dass ich vielleicht was im Radiant falsch gemacht hab?
Ein
script_struct mit dem targetname
torch_fx und einem Licht etwas versetzt davon.
Oi!mel
hmm... Was könnt ich den sonst noch falsch gemacht haben? Den Efffekt brauch ich ja nicht in die Zone Files eintragen, da es ja ein mitgelieferter Effekt ist. In meiner Config habe ich Effekte auch aktiviert. Weiß nicht irgendwer noch ne potentielle Fehlerquelle?