|
 |
Hilfe zu playloopedfx |
|
|
Moin Moin
Ich habe folgendes Problem. Ich möchte einem Heli ab einem ScriptOrigin bis zu einem anderen ScriptOrigin einen Effekt zuweisen.
Dazu nutze ich folgendes Script:
heli1_flug()
{
level.heliSpeed = 3.5;
heli1 = getent ("heli1","targetname");
helipos1 = getent ("helipos1","targetname");
helipos2 = getent ("helipos2","targetname");
helipos3 = getent ("helipos3","targetname");
helipos4 = getent ("helipos4","targetname");
heli1.pos1 = helipos1.origin;
heli1.pos2 = helipos2.origin;
heli1.pos3 = helipos3.origin;
heli1.pos4 = helipos4.origin;
heli1.start = heli1.origin;
heli1 hide();
wait 30;
while (1)
{
heli1 thread heli1_move("apache");
wait 7200;
}
}
heli1_move(sound)
{
if (isdefined (sound))
self playsound (sound);
wait 7;
self show();
self moveto(self.pos1, level.heliSpeed);
wait level.heliSpeed;
self moveto(self.pos2, level.heliSpeed);
self playloopsound ("heli_shot");
playloopedfx(level._effect["helishot"], heli1.pos2);
wait level.heliSpeed;
self moveto(self.pos3, level.heliSpeed);
self stoploopsound("heli_shot");
self rotateto ((0,0,-25),2.2);
wait level.heliSpeed;
self moveto(self.pos4, level.heliSpeed);
wait level.heliSpeed;
self hide();
}
Wie man im Script sieht, fängt der Heli ab einem bestimmten Punkt an zu schiessen + Sound.
Nun möchte ich aber auch noch ein Mündungsfeuer Effekt ( level._effect["helishot"] = loadfx("explosions/ammo_cookoff_child"); ) dazu haben und das auch nur bis zum nächsten ScriptOrigin.
Die Zeile mit dem playloopedfx stimmt na klar so nicht. Das ist eins von meinen Experimenten das auch in die Hose ging.
Ich hoffe das mir da einer helfen kann. Schon mal ein DANKE im voraus.
|
|
|
|
|
|
|
| RE: Hilfe zu playloopedfx |
 |
Die Sache mit dem Effekt ist schon ein wenig komplizierter.
Erstens, einen Effekt, den man mit playloopedfx startet, kann man nicht mehr beenden.
Zweitens, der Effekt soll ja bestimmt nicht am Rotor abgespielt werden (dem origin des Helis) sondern vorne beim MG. Dazu musst du wissen, wie diese Position (Tag) beim Heli heißt. Dann kannst du dort den Effekt mit playfxontag abspielen.
playfxontag spielt allerdings den Effekt auch nicht in einer Schleife (ohne loop), sodass du dir da eine selber schreiben musst.
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
|
|
Danke das du mir da weiter hilfst!!!!
So, ich habe in dem Ordner xmodelparts 2 Files gefunden mit vehicle_apache. Da ich aber nicht weiß welcher nun meiner ist, habe ich mir beide angesehen. Die tags sind bei beiden gleich:
tag_origin, origin_animate_jnt, tag_body, body_animate_jnt, fron_wheel_lt_base, front_wheel_rt_base, main_rotor_jnt, tag_deathfx, tag_detach, tag_driver, tag_engin_right, tag_engine_left, tag_flash_11, tag_flash_2, tag_flash_22, tag_flash_3, tag_ground, tag_passenger, tag_player, tag_turret, tail_rotor_jnt, wheel_rear_base_jnt, front_wheel_lt, front_wheel_rt, turret_animate_jnt, wheel_rear_jnt, tag_barrel, barrel_animate_jnt, tag_flash
Meine playfxontag sieht jetzt so aus:
playfxontag(level._effect["helishot"], self, "tag_barrel" );
Die maps/mp/mp_meinemap_fx so:
main()
{
level._effect["helishot"] = loadfx("explosions/ammo_cookoff_child");
/#
if ( getdvar( "clientSideEffects" ) != "1" )
maps\createfx\mp_meinemap_fx::main();
#/
}
Die maps/createfx/mp_meinemap_fx so:
main()
{
level._effect["helishot"] = loadfx("explosions/ammo_cookoff_child");
/#
if ( getdvar( "clientSideEffects" ) != "1" )
maps\createfx\mp_meinemap_fx::main();
#/
}
Und in der zone_source/mp_meinemap.csv habe ich das eingefügt:
fx,explosions/ammo_cookoff_child
Wenn ich die Map so starte, bekomme ich keinen Fehler. Aber den Effekt sehe ich auch nicht!
Du hattest doch geschrieben das man einen playfxontag nicht mehr stoppen kann. Was ist wenn ich den nicht stoppe sondern einfach über bzw. unter die Map verschwinden lasse?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von [BST]Plagegeist: 09.03.2008 11:13.
|
|
|
|
|
|
|
Der Effekt wird doch abgespielt. Ich habe dazu einen anderen Effekt genommen der etwas größer ist. Das Problem ist aber das der Effekt nur einmal abgespielt wird und zwar dann wenn der Heli den ersten Schuß abgibt.
|
|
|
|
|
|
|
Da ich ja vom Scripten keine Ahnung habe, hatte ich die Schleife in deinem CoD2 Beitrag nicht erkannt.
Versuche gerade die Schleife in meinem Script anzupassen.
|
|
|
|
|
|
|
Ich habe zwar keinen auf, aber ich ziehe trotzdem meinen Hut vor dir. Klappt alles Wunderbar. Danke Danke
Hier ist das Script falls es jemand nutzen oder modifizieren will.
main()
{
level.heli1_move = false;
thread heli1_flug();
}
heli1_flug()
{
level.heliSpeed = 3.5;
heli1 = getent ("heli1","targetname");
heli1pos1 = getent ("heli1pos1","targetname");
heli1pos2 = getent ("heli1pos2","targetname");
heli1pos3 = getent ("heli1pos3","targetname");
heli1pos4 = getent ("heli1pos4","targetname");
heli1.pos1 = heli1pos1.origin;
heli1.pos2 = heli1pos2.origin;
heli1.pos3 = heli1pos3.origin;
heli1.pos4 = heli1pos4.origin;
heli1.start = heli1.origin;
heli1 hide();
wait 30;
while (1)
{
heli1 thread shot1();
heli1 thread heli1_move("apache");
wait 7200;
}
}
heli1_move(sound)
{
if (isdefined (sound))
self playsound (sound);
wait 7;
self show();
self moveto(self.pos1, level.heliSpeed);
wait level.heliSpeed;
self moveto(self.pos2, level.heliSpeed);
level.heli1_move = true;
self playloopsound ("heli_shot");
wait level.heliSpeed;
self moveto(self.pos3, level.heliSpeed);
level.heli1_move = false;
self stoploopsound("heli_shot");
wait level.heliSpeed;
self moveto(self.pos4, level.heliSpeed);
wait level.heliSpeed;
self hide();
}
shot1()
{
while(1)
{
while(level.heli1_move)
{
playfxontag(level._effect["helishot"], self, "tag_flash" );
playfxontag(level._effect["eject"], self, "tag_turret" );
wait .1;
}
wait 0.01;
}
}
In /maps/mp/mp_meinemap_fx.gsc und /maps/createfx/mp_meinemap_fx.gsc kommt dies:
main()
{
level._effect["helishot"] = loadfx("impacts/20mm_metal_impact");
level._effect["eject"] = loadfx("shellejects/20mm_mp");
/#
if ( getdvar( "clientSideEffects" ) != "1" )
maps\createfx\mp_meinemap_fx::main();
#/
}
In die meinesound.csv kommt dies:
apache,,vehicles/veh_cobra_move_loop_v3.wav,1,1,na,0.95,1.05,7,12000,effect
s1,,,,,mp_meinemap,,,,,,,,,,,,,
heli_shot,,vehicles/veh_hind_gatling_fireloop_1.wav,1,1,max,1.3,,7,12000,we
apon,streamed,,looping,0.8,mp_meinemap,,,,weapon2,,,,,,,,,
In die /zone_source/mp_meinemap.csv kommen die Einträge hinzu:
impacts/20mm_metal_impact
fx,shellejects/20mm_mp
Falls jemand dieses Script ändert, wäre das Super diese Änderung hier einzutragen. Damit JEDER das nutzen kann. Danke
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von [BST]Plagegeist: 09.03.2008 15:50.
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|