|
|
[Tutorial] Effekte (FX) erstellen |
|
[Tutorial] Effekte (FX) erstellen |
|
Habe jetzt unter vielen FX Anleitungen die erste funktionierende gefunden. Funktioniert mit meiner deutschen Version. Woher das Tutorial kommt kann ich leider nicht mehr sagen, habe mir so viele gesaugt und den Überblick verloren.....
1. Erstelle eine "mp_yourmapname_fx.gsc" mit diesem Inhalt (x y und z euren Koordinaten anpassen):
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() {
level._effect["fx_sand_blowing_lg_w"] = loadfx("env/dirt/fx_sand_blowing_lg_w");
createFX("oneshotfx", (x, y, z), (270, 0, 0), level._effect["fx_sand_blowing_lg_w"], 0.1);
}
createFX(type, origin, angles, FXid, delay) {
FX_ent = spawnstruct();
FX_ent.v["origin"] = origin;
FX_ent.v["angles"] = angles;
FX_ent.v["up"] = anglestoup(FX_ent.v["angles"]);
FX_ent.v["forward"] = anglestoforward(FX_ent.v["angles"]);
FX_ent.v["FXid"] = FXid;
FX_ent.v["delay"] = delay;
FX_ent.v["type"] = type;
if (FX_ent.v["type"] == "loopfx") {
FX_ent thread loopfxthread();
}
if (FX_ent.v["type"] == "oneshotfx") {
FX_ent thread oneshotfxthread();
}
}
loopfxthread() {
PlayLoopedFX(self.v["FXid"], self.v["delay"], self.v["origin"]);
}
oneshotfxthread() {
self.looper = spawnFx(self.v["FXid"], self.v["origin"]);
triggerFx(self.looper, self.v["delay"]);
}
|
|
Speichern unter (Meine Pfade):
D:\Programme\Activision\Call of Duty - World at War\raw\maps\mp
2. Update "zone_source" mit diesem Inhalt (Pfad bei mir D:\Programme\Activision\Call of Duty - World at War\zone_source):
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
|
rawfile,maps/mp/mp_yourmapname_fx.gsc
fx,env/dirt/fx_sand_blowing_lg_w |
|
3. Update "mp_yourmapname.gsc" (Pfad bei mir D:\Programme\Activision\Call of Duty - World at War\raw\maps\mp) ÜBER(!!!) dem Eintrag (maps/mp/_load::main();) mit:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
|
maps\mp\mp_yourmapname_fx::main(); |
|
Was soll ich sagen, bei mir funktioniert es. Es ist ein Sandsturm zu sehen. Werde mal weitere Effekte testen.
Ich hoffe das hilft euch auch weiter!
Grüße
Private Grob
|
|
|
|
|
|
Und weiter geht es. Habe den Sandsturm mit 2 Koordinaten getestet. Funktioniert! Dann habe ich noch zusätzlich einen Feuer Effekt getestet. Funktioniert auch!
Hier das Bild, der Sandsturm links ist schwer zu erkennen, das Feuer rechts dürfte keine Nachfrage ergeben.....
Hier der Code der "mp_yourmapname_fx.gsc" (bei mir unter "D:\Programme\Activision\Call of Duty - World at War\raw\maps\mp") (x,y,z) wieder anpassen):
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:
|
main() {
level._effect["fx_sand_blowing_lg_w"] = loadfx("env/dirt/fx_sand_blowing_lg_w");
createFX("oneshotfx", (x,y,z), (270, 0, 0), level._effect["fx_sand_blowing_lg_w"], 0.1);
level._effect["fx_sand_blowing_lg_w"] = loadfx("env/dirt/fx_sand_blowing_lg_w");
createFX("oneshotfx", (x,y,z), (270, 0, 0), level._effect["fx_sand_blowing_lg_w"], 0.1);
level._effect["fx_fire_oil_lg"] = loadfx("env/fire/fx_fire_oil_lg");
createFX("oneshotfx", (x,y,z), (270, 0, 0), level._effect["fx_fire_oil_lg"], 0.1);
}
createFX(type, origin, angles, FXid, delay) {
FX_ent = spawnstruct();
FX_ent.v["origin"] = origin;
FX_ent.v["angles"] = angles;
FX_ent.v["up"] = anglestoup(FX_ent.v["angles"]);
FX_ent.v["forward"] = anglestoforward(FX_ent.v["angles"]);
FX_ent.v["FXid"] = FXid;
FX_ent.v["delay"] = delay;
FX_ent.v["type"] = type;
if (FX_ent.v["type"] == "loopfx") {
FX_ent thread loopfxthread();
}
if (FX_ent.v["type"] == "oneshotfx") {
FX_ent thread oneshotfxthread();
}
}
loopfxthread() {
PlayLoopedFX(self.v["FXid"], self.v["delay"], self.v["origin"]);
}
oneshotfxthread() {
self.looper = spawnFx(self.v["FXid"], self.v["origin"]);
triggerFx(self.looper, self.v["delay"]);
}
|
|
Grüße
Private Grob
|
|
|
|
|
BadMan
Turnbeutelvergesser
Dabei seit: 31.01.2008
Beiträge: 278
|
|
Dank dir kanns betätigen läuft.
Ich nutze die englische Version, das mit den script_strukt hatte nicht gefunst das hier schon.
@Private Grob
Hast du das auch schon mal mit Sound probiert? Bei mir will das noch nicht, habe aber auch keine Ahnung wieso. Fehler kommen nicht habe es bislang auch nur mit Sounds aus dem Spiel versucht.
Hier mal das Skript
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:
|
main()
{
level._effect["fx_fire_oil_lg"] = loadfx("env/fire/fx_fire_oil_lg");
createFX("oneshotfx", (x, y, z), (270, 0, 0), level._effect["fx_fire_oil_lg"], 0.1, "glass_pane_break");
}
createFX(type, origin, angles, FXid, delay, soundalias) {
FX_ent = spawnstruct();
FX_ent.v["origin"] = origin;
FX_ent.v["angles"] = angles;
FX_ent.v["up"] = anglestoup(FX_ent.v["angles"]);
FX_ent.v["forward"] = anglestoforward(FX_ent.v["angles"]);
FX_ent.v["FXid"] = FXid;
FX_ent.v["delay"] = delay;
FX_ent.v["type"] = type;
if (FX_ent.v["type"] == "loopfx") {
FX_ent thread loopfxthread();
}
if (FX_ent.v["type"] == "oneshotfx") {
FX_ent thread oneshotfxthread();
}
if ( isdefined( soundalias ) )
{
FX_ent.v[ "soundalias" ] = soundalias;
}
}
loopfxthread() {
PlayLoopedFX(self.v["FXid"], self.v["delay"], self.v["origin"]);
}
oneshotfxthread() {
self.looper = spawnFx(self.v["FXid"], self.v["origin"]);
triggerFx(self.looper, self.v["delay"]);
}
|
|
Da ist jetzt allerdings ein Sound von zerbrechendem Glass drinnen, Ich habe auch schon andere getestet bei dem bin ich mir aber sicher das er läuft und zum Testen isses ja eh Wurscht was fürn Sound kommt.
|
|
|
|
|
|
Mit Sounds habe ich auch noch kein Glück gehabt. Das ist aber jetzt die nächste Sache, die ich versuchen werde ans laufen zu bekommen...
Grüße
Private Grob
|
|
|
|
|
Verni@hter
*bM.Verni@hter~
Dabei seit: 24.01.2006
Beiträge: 1.461
|
|
|
|
|
|
|
"Infonull" nehme ich auch immer zur Ermittlung der Koordinaten
Aber schön das es bei dir jetzt auch klappt.
Grüße
Private Grob
|
|
|
|
|
Verni@hter
*bM.Verni@hter~
Dabei seit: 24.01.2006
Beiträge: 1.461
|
|
Tachchen,
wieviele fx habt ihr denn bis jetzt schon verbaut?
in meiner csv steht bisher nur das:
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:
|
// NOTE: If you add a comment, put a space after the double forward slash or you will get issues
col_map_mp,maps/mp/mp_fx.d3dbsp
rawfile,maps/mp/mp_fx.gsc
rawfile,maps/mp/_interactive_objects.gsc
rawfile,vision/mp_fx.vision
rawfile,sun/mp_fx.sun
rawfile,maps/mp/mp_fx_fx.gsc
fx,destructibles/fx_barrelexp_mp
fx,destructibles/fx_barrel_ignite
fx,destructibles/fx_barrel_fire_top
//Fire
fx,env/fire/fx_fire_barrel_small
fx,env/fire/fx_fire_barrel_pm
fx,env/fire/fx_fire_barrel_small
fx,env/fire/fx_fire_bookshelf_wide
fx,env/smoke/fx_battlefield_smokebank_ling_sm_w
fx,env/smoke/fx_smk_column_lg_blk
fx,env/smoke/fx_smoke_crater
xmodel,skybox_oki2
xmodel,exploding_barrel_test_d
include,mptypes_german
material,sun
material,sun_flare
impactfx,mp_fx
sound,common,mp_fx,!all_mp
sound,generic,mp_fx,!all_mp
sound,voiceovers,mp_fx,!all_mp
sound,multiplayer,mp_fx,!all_mp
sound,vehicles,veh_mp,all_mp |
|
Meine mp_mapname_fx.gsc schaut so aus:
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:
|
main() {
level._effect["fx_smk_column_lg_blk"] = loadfx("env/smoke/fx_smk_column_lg_blk");
level._effect["fx_fire_bookshelf_wide"] = loadfx("env/fire/fx_fire_bookshelf_wide");
level._effect["fx_smoke_crater"] = loadfx("env/smoke/fx_smoke_crater");
createFX("oneshotfx", (1424, -2576, 787), (-90, 0, 0), level._effect["fx_smk_column_lg_blk"], 0.1);
createFX("oneshotfx", (-795.757, -4075.94, 209.153), (-90, 0, 0), level._effect["fx_smk_column_lg_blk"], 0.1);
createFX("oneshotfx", (-795.757, -4075.94, 209.153), (-90, 0, 0), level._effect["fx_fire_bookshelf_wide"], 0.1);
createFX("oneshotfx", (3919.5, -7798, 723.528), (-90, 0, 0), level._effect["fx_smk_column_lg_blk"], 0.1);
createFX("oneshotfx", (-2418, -2203, -15), (-90, 0, 0), level._effect["fx_smoke_crater"], 0.1);
}
createFX(type, origin, angles, FXid, delay) {
FX_ent = spawnstruct();
FX_ent.v["origin"] = origin;
FX_ent.v["angles"] = angles;
FX_ent.v["up"] = anglestoup(FX_ent.v["angles"]);
FX_ent.v["forward"] = anglestoforward(FX_ent.v["angles"]);
FX_ent.v["FXid"] = FXid;
FX_ent.v["delay"] = delay;
FX_ent.v["type"] = type;
if (FX_ent.v["type"] == "loopfx") {
FX_ent thread loopfxthread();
}
if (FX_ent.v["type"] == "oneshotfx") {
FX_ent thread oneshotfxthread();
}
}
loopfxthread() {
PlayLoopedFX(self.v["FXid"], self.v["delay"], self.v["origin"]);
}
oneshotfxthread() {
self.looper = spawnFx(self.v["FXid"], self.v["origin"]);
triggerFx(self.looper, self.v["delay"]);
} |
|
Bis hierher funktioniert alles!
So, nun wollt ich einen Wasserfall einbauen und bekomme beim starten der Map eine Meldung: Exceeded Limits of 400 assets oder so ähnlich. Wie schauts bei euch aus?
__________________
Frauen sind wie Signaturen, haste keine willste eine, haste eine willste ne andere.
My Facebook
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Verni@hter: 10.01.2009 18:50.
|
|
|
|
|
Verni@hter
*bM.Verni@hter~
Dabei seit: 24.01.2006
Beiträge: 1.461
|
|
Very Nice!
Funktioniert. Danke
PS: hab dir auch was bei ModsOnline geschrieben^^
__________________
Frauen sind wie Signaturen, haste keine willste eine, haste eine willste ne andere.
My Facebook
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Verni@hter: 20.01.2009 17:35.
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|