frankh1106
ich arbeite gerade an einer map.
dort möchte ich an einer bestimmten position mit playfx einen bestimmten effekt abspielen lassen - einmal und bei bedarf neu aufrufen.
den effekt habe ich in mp_map_fx.gsc definiert.
mein script liest mit getorigin die position meines script_origin aus, an welcher position der effekt gespielt werden soll.
die sounds zum effekt werden anstandslos gespielt und das script verursacht keine fehlermeldung. ich nehme an, daß ich irgendwas im radianten vergessen hab. was muß ich alles im radiant haben um an einer bestimmten position einen effekt zu spielen?
OLD MAN WITH GUN
Wie hast du die Position in der Map festgelegt (edit: überlesen, hast ja geschrieben script_origin) und wie sieht dein Script zu abspielen des Effektes aus?
Edit:
Hast du es mal so versucht (sollte eigentlich funktionieren)
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
|
ent = getent ("play_fx_here","targetname"); // script_origin holen
playfx(level._effekt["my_effect"], ent.origin); // Effekt am origin von ent abspielen |
|
frankh1106
stimmt. genauso hab ich es gemacht.
in meiner ...fx.gsc steht folgendes:
level._effect["bsmrk_cannon"] = loadfx ("fx/explosions/flak_puff.efx ");
und im script welches den effekt aufrufen soll:
cannon1 = getent ("bsmrk_can_1","targetname");
canfx1 = getent ("eff_1","targetname");
origin1 = canfx1 getorigin();
canfx1 enablelinkto();
canfx1 linkto(cannon1);
...
...
canfx1 playsound("firing");
playfx (level._effect["bsmrk_cannon"], canfx1.origin);
"eff_1" ist mein script_origin, welches vorn an einer kanone positioniert ist.
ich habe es gelinkt weil die kanone sich drehen soll.
OLD MAN WITH GUN
Hmm, ich weiss jetzt nicht, ob du wirklich an die origin Werte des script_origin kommst, solange es an was anderes gelinkt ist.
Desshalb mein Vorschlag, nimm mal nicht das script_origin, sondern das xmodel tag_origin (dieses besitzt zusätzlich auch einen "tag" mit dem Namen "tag_origin" wo man mit playfxontag einen Effekt abspielen kann).
Ersetze also mal in deiner Map das script_origin mit dem xmodel tag_origin (als script_model). Targetname kannst du ja beibehalten. Das xmodel ist ein winzig kleines Dreieck.
Ändere dann mal folgende Zeile in deinem Script.
playfx (level._effect["bsmrk_cannon"], canfx1.origin);
in
playfxontag(level._effect["bsmrk_cannon"], canfx1, "tag_origin");
Das dürfte dann eigentlich funktionieren.
frankh1106
ok. ich danke dir. ich werd das gleich mal probieren ;-)
frankh1106
habs jetzt mit dem tag_origin versucht. klappt auch nicht.
hab im radiant ein script_model genommen und dort als model tag_origin eingetragen. war doch richtig so?
OLD MAN WITH GUN
Original von frankh1106
hab im radiant ein script_model genommen und dort als model tag_origin eingetragen. war doch richtig so?
Ja.
Was passiert denn, wenn du, bevor du den effekt abspielen lässt, das tag_origin xmodels unlinkst und danach direkt wieder linkst (obwohl ich der Meinung bin, das der tag auch funktionieren müsste, wenn das xmodel gelinkt ist).
Aber der Effekt funktioniert schon, oder?
Hast du den mal einfach so in der Map abspielen lassen (mit festen Koordinaten), zumal Effekte im Effect-Editor meistens anders aussehen als im Spiel selber (gerade, was die Abspieldauer betrifft)?
frankh1106
es ist ein effekt der beim spiel dabei war (fx/explosions/flak_puff.efx) - sollte doch eigentlich funtionieren
ich versuch mal das mit dem unlinken.
OLD MAN WITH GUN
Hmm, habe gerade eine Minimap gebaut.
Da funktioniert es auch, wenn das tag_origin (script_model) an das Rohr (script_brushmodel) gelinkt ist. Daran liegt es also nicht. Mein Effekt wird immer am Rohrende abgespielt, egal wohin das Rohr auch zeigt.
Als Effekt habe ich "fx/muzzleflashes/flak_flash.efx" benutzt.
frankh1106
mit unlink und danach wieder linkto klappts auch nicht.
ich hab ihn auch versucht an einer festen position spielen zu lassen (playfx(level._effect["bsmrk_cannon"], (-1402, -3350, 20))
- klappt auch nicht.
frankh1106
ich hab jetzt auch mal den von dir verwendeten effekt versucht - geht auch nicht.
OLD MAN WITH GUN
Original von frankh1106
ich hab jetzt auch mal den von dir verwendeten effekt versucht - geht auch nicht.
Zumal ich deinen gerade bei mir getestet habe
und bei mir funktioniert er anstandslos.
Edit: Wenn der Effekt bei dir schon mit festen Koordinaten nicht abgespielt wird, muss doch mit der Einbindung des Effektes was faul sein.
frankh1106
ich denke dein script dazu ist kleiner als meins. kannst du es mal posten damit ich einen vergleich habe? ich weiß nicht weiter.
OLD MAN WITH GUN
Klar.
Die _fx-Datei
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
main()
{
precacheFX();
ambientFX();
level.scr_sound["flak_fire"] = "flak_fire";
}
precacheFX()
{
level._effect["flak_flash"] = loadfx ("fx/explosions/flak_puff.efx");
}
ambientFX()
{
}
|
|
und die eigentliche gsc-Datei
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:
|
main()
{
maps\mp\mp_effekt_fx::main();
maps\mp\_load::main();
thread gun();
}
gun()
{
turret = getent("gun","targetname");
fx_point = getent("flash","targetname");
fx_point linkto(turret);
while(1)
{
y_turret = randomfloat(360);
turnangles = turret.angles[1] - y_turret;
if (turnangles < 0)
{
y1_turret = y_turret - turret.angles[1];
turnangles = y1_turret;
}
turntime = (turnangles / 30) + 3;
turret rotateto((0,y_turret,0), turntime, 1.5, 1.5);
turret waittill("rotatedone");
playfxontag (level._effect["flak_flash"], fx_point , "tag_origin");
fx_point playsound("flak_fire");
wait 2;
}
}
|
|
frankh1106
kann es sein daß es mit meinem sound zusammenhängt? ich spiele einen sound, den ich in der soundaliases.csv festgelegt habe und du einen aus der fx.gsc
frankh1106
ich werd bekloppt. sowas blödes. ich hatte in der haupt.gsc die fx.gsc nicht aufgerufen ;-)
jetzt gehts. sorry für die mühe.
OLD MAN WITH GUN
Original von frankh1106
ich werd bekloppt. sowas blödes. ich hatte in der haupt.gsc die fx.gsc nicht aufgerufen ;-)
Tja, kleine Ursache, große Wirkung