[Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
Beiträge zu diesem Thema |
Autor |
Datum |
[Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
BadMan |
18.02.2008 14:49 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
=OSZ=LoSt.BoY |
18.02.2008 15:31 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
-tiger- |
18.02.2008 18:10 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
BadMan |
08.04.2008 13:44 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
steinacker |
08.04.2008 17:06 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
Nightwing |
08.04.2008 17:19 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
steinacker |
08.04.2008 17:51 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
Nightwing |
08.04.2008 17:56 |
immer wieder fehler.:-( |
Wishmaster |
13.04.2008 11:38 |
RE: immer wieder fehler.:-( |
OLD MAN WITH GUN |
13.04.2008 13:18 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
Wishmaster |
14.04.2008 19:14 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
BadMan |
25.08.2008 17:01 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
steinacker |
14.09.2008 14:06 |
hallo |
ProAqua |
17.02.2011 08:28 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
BadMan |
17.02.2011 17:24 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
ProAqua |
17.02.2011 20:07 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
BadMan |
18.02.2011 10:01 |
RE: [Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
ProAqua |
18.02.2011 13:19 |
BadMan
Turnbeutelvergesser
Dabei seit: 31.01.2008
Beiträge: 278
|
|
[Tutorial] Effekte einfügen (Wetter, Rauch, usw.) * |
|
Hi!
Also, ich schreibe hier jetzt mal ein Tutorial über Effekte und wie man sie in seine Map bekommt.
Inhalt:
A Wettereffekte in die Map einbauen
B Sonne einbauen
C Effekt mit script origin einfügen
D Effekt mit script struct einfügen
E Bewegte Effekte einbauen
A Wettereffekte einbauen
1.Schritt
Ich nehme mal die Map mp_test1 - die ist eine Kopie der Map mp_test.
Dann erstellen wir die Dateien (mp_test1.gsc) und (mp_test1_fx.gsc) im Ordner (raw\maps\mp)
Inhalt von (mp_test1.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:
|
main()
{
maps\mp\_load::main();
maps\mp\mp_test1_fx::main();
maps\mp\_compass::setupMiniMap("compass_map_mp_test1");
ambientPlay("ambient_farm");
VisionSetNaked("mp_test1");
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";
setdvar( "r_specularcolorscale", "3" );
setdvar("compassmaxrange","1800");
}
|
|
Inhalt von (mp_test1_fx.gsc):
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
|
main()
{
}
|
|
2. Schritt
So, jetzt suchen wir uns einen Effekt aus - dazu öffnen wir über das "CoD4 Compile Tool" unter "Applications" den "Effects Editor"
Wenn der effect editor nicht geht “kann effekt nur im spielpfad öffnen“ einfach bei „edit – set Default Game Phat…“ und den Pfad neu angeben
(Klick mich)
3. Schritt
Wir wollen jetzt in die Map (mp_test1) Regen einfügen.
Dazu gehen wir auf "Öffnen"...
(Klick mich)
... und (die Effekte befinden sich im Ordner (raw\fx)) öffnen im Ordner (weather) die Datei (rain_mp_farm.efx)
(Klick mich)
Jetzt noch auf "Play" und wir sehen, wie es regnet:
(Klick mich)
4. Schritt
Also, jetzt haben wir den Effekt, den wir haben wollen, nur müssen wir diesen noch in der Map einfügen.
Dazu öffnen wir jetzt die Datei (mp_test1_fx.gsc) (mit Programmer's Notepad, Editor o. ä.).
Als erstes fügen wir den Effekt ein mit folgenden Befehl:
level._effect["rain"] = loadfx ("weather/rain_mp_farm");
(Klick mich)
Und nun die Koordinaten, wo der Effekt abgespielt wird:
maps\mp\_fx::loopfx("rain", (-192, -256, 64), 3);
Die Koordinaten erhalten wir, wenn wir im "Radiant" mit der Maus auf die Stelle der Map gehen, siehe Markierung auf dem Screenshot, dort kannst Du sie ablesen.
Habe sie hier mal plaziert:
(Klick mich)
(PS.: Hatte beim Erstellen des Tutorials das Problem, dass die Zeilen in die mp_test1.gsc mussten - bei einer anderen Map habe ich es allerdings so gemacht wie hier beschrieben - also einfach ausprobieren, ist halt übersichtlicher, wenn es in verschidenen Dateien ist...)
Hier nochmal die mp_test1.gsc mit Effekten:
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:
|
main()
{
maps\mp\_load::main();
level._effect["rain"] = loadfx ("weather/rain_mp_farm");
maps\mp\_fx::loopfx("rain", (-192, -256, 64), 3);
maps\mp\_compass::setupMiniMap("compass_map_mp_test1");
setExpFog(300, 1400, 0.5, 0.5, 0.5, 0);
ambientPlay("ambient_farm");
VisionSetNaked("mp_test1");
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";
setdvar( "r_specularcolorscale", "3" );
setdvar("compassmaxrange","1800");
}
|
|
)
5.Schritt
Jetzt starten wir die Map mal:
Dazu gehen wir ins "Compile Tool" auf "Level Compiling"
Da arbeiten wir diese Schritte ab:
1. 1.Compile BSP
2. 2. Compile Reflections
3. 3. Build Fast File
4. 5. Run Selected Map (Karte wieder schlissen)
5. 4. Update Zone File (Einträge rüber kopieren)
6. 3. Build Fast File
7. 5. Run Selected Map
Die Punkte 4 – 7 müssen eventuell wiederholt werden:
(Klick mich)
6. Schritt
Und jetzt noch ein bißchen Nebel, Rauch oder so...
Wir nehmen mal diesen...
level._effect["smoke"] = loadfx ("smoke/steam_large_vent");
... mit den gleichen Koordinaten
Also:
maps\mp\_fx::loopfx("smoke", (-192, -256, 64), 3);
In der mp_test1_fx.gsc sieht das dann so aus
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
main()
{
level._effect["rain"] = loadfx ("weather/rain_mp_farm");
maps\mp\_fx::loopfx("rain", (-192, -256, 64), 3);
level._effect["smoke"] = loadfx ("smoke/steam_large_vent");
maps\mp\_fx::loopfx("smoke", (-192, -256, 64), 3);
}
|
|
Man kann sich das Ganze auch im Effect Editor ansehen (im Ordner "smoke" die Datei „steam_large_vent.efx), wie ihr oben nachlesen könnt.
Dann Map starten, indem man Punkt 3-7 wiederholt:
(Klick mich)
7. Schritt
Ich will den Rauch jetzt aber in einer anderen Richtung haben, wie mache ich das jetzt?
Also geben wir jetzt dem Effekt noch eine Richtung an - läuft zur Zeit in der X-Richtung, wir wollen ihn aber in der Y-Richtung haben: also ändern wir die Position der Koordinaten und ergänzen ihn mit zusätzlichen Koordinaten, wobei sich die Y-Achse um 10 erhöht
maps\mp\_fx::loopfx("smoke", (-192, -256, 64), 3, (-192, -246, 64));
Im Ganzen:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
main()
{
level._effect["rain"] = loadfx ("weather/rain_mp_farm");
maps\mp\_fx::loopfx("rain", (-192, -256, 64), 3);
level._effect["smoke"] = loadfx ("smoke/steam_large_vent");
maps\mp\_fx::loopfx("smoke", (-192, -256, 64), 3, (-192, -246, 64));
}
|
|
Dann Map starten, indem man Punkt 6-7 wiederholt, da kein neuer Effekt dazu gekommen ist:
(Klick mich)
Also, das war´s erstmal, ich hoffe, dass ich dem einen oder anderen geholfen habe. Mit den anderen Effekten einfach ausprobieren - wichtig sind die zwei Zeilen für den Effekt und der Ort. Wenn ihr den Effekt mehrmals haben wollt, einfach die Zeile mit den Koordinaten kopieren und andere Koordinaten einfügen.
Hier nochmal die ganze Datei "mp_test1.gsc", wenn es in der Datei „mp_test1_fx.gsc“ nicht klappt:
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:
|
main()
{
maps\mp\_load::main();
level._effect["rain"] = loadfx ("weather/rain_mp_farm");
maps\mp\_fx::loopfx("rain", (-192, -256, 64), 3);
level._effect["smoke"] = loadfx ("smoke/steam_large_vent");
maps\mp\_fx::loopfx("smoke", (-192, -256, 64), 3, (-192, -246, 64));
maps\mp\_compass::setupMiniMap("compass_map_mp_test1");
setExpFog(300, 1400, 0.5, 0.5, 0.5, 0);
ambientPlay("ambient_farm");
VisionSetNaked("mp_test1");
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";
setdvar( "r_specularcolorscale", "3" );
setdvar("compassmaxrange","1800");
}
|
|
B Sonne einfügen
Eine sonne zu erstellen ist ganz einfach als erstes erstellt man im ordner „raw“ einen Ordner
Namens „sun“ im ordner sun erstelt man eine Text Datei und fügt folgendes ein
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:
|
r_sunsprite_shader "sun"
r_sunsprite_size "28.8433"
r_sunflare_shader "sun_flare_icbm"
r_sunflare_min_size "237.8"
r_sunflare_min_angle "40.869"
r_sunflare_max_size "669.9"
r_sunflare_max_angle "2.14669"
r_sunflare_max_alpha "0.62536"
r_sunflare_fadein "0.2604"
r_sunflare_fadeout "0.2992"
r_sunblind_min_angle "33.9543"
r_sunblind_max_angle "9.9647"
r_sunblind_max_darken "0.20934"
r_sunblind_fadein "0.5"
r_sunblind_fadeout "1"
r_sunglare_min_angle "10.6101"
r_sunglare_max_angle "48.2526"
r_sunglare_max_lighten "0.21569"
r_sunglare_fadein "2.263"
r_sunglare_fadeout "3"
r_sun_fx_position "X Y Z"
|
|
Bei "r_sunsprite_shader" und " r_sunflare_shader" kann man auch folgendes eintragen
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
sun_flare_rainbow
sun_flare_marksman
sun_flare_icbm
sun_flare_aftermath
sun_flare
sun
|
|
Bei "r_sun_fx_position" ersetzt man „XYZ“ durch die in den Worldspawn setings gegebene "sundirection" beispiel mp_backlot
"sundirection" "-43.5 25.11 0"
Also
r_sun_fx_position "-43.5 25.11 0"
Die Datei speichert man dann als mp_name der Map.sun
Als nächstes fügt man in das Zonefile
rawfile,sun/ mp_name der Map.sun
ein
C Effekt mit script origin einfügen
Man kann Effekte auch im radiant plazieren. Dies kann nützlich sein wenn man mehrere objekte mit festem effeckt z.B. Lampen macht dazu fügt man einfach ein skript-origin ein und plaziert ihn dort wo der effekt laufen soll. Als nächstes öffnet man mit „N“ das Entry Fenster und fügt Key: targetname und faule: effekt01 das ist der name mit dem das skript auf das skript-origin zugreift.
Als nächstes 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:
|
main()
{
fx = getent("fx1","targetname");
level._effect[ "feuer" ] = loadfx( "test_fx/meteor" );
maps\mp\_fx::loopfx("feuer", (glow.origin), 3, (glow.origin) + (0, 0, 90));
}
|
|
Bei dieser Methode muss man allerdings wenn man einen zweiten effekt einfügt einen neuen targetnamen vergeben.
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:
|
main()
{
Fx1 = getent("fx1","targetname");
fx2= getent("fx2","targetname");
level._effect[ "feuer" ] = loadfx( "test_fx/meteor" );
maps\mp\_fx::loopfx("feuer", (fx1.origin), 3, (fx1.origin) + (0, 0, 90));
maps\mp\_fx::loopfx("feuer", (fx2.origin), 3, (fx2.origin) + (0, 0, 90));
}
|
|
Was aber bei einer größeren anzahl doch etwas umständlich ist.
D Effekt mit script struct einfügen
Genau wie mit einem skript_origin kann man Effekte mit einem script_struct direkt im radiannt einfügen. Dazu fügt man ein script_struct ein und vergibt per Entry Fenster Key: targetname und faule: struct_effekt01 ( Bei dieser Methode kann man mehrere skript_struct mit gleichem targetname erstellen ) . Beim Skript gibt es zwei versionen einmal für Oneshot Effekte (_structFX_oneshot.gsc) und einmal für loop Effekte(_structFX_loop.gsc).
_structFX_oneshot.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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
|
#include common_scripts\utility;
#include maps\mp\_utility;
init()
{
randomStartDelay = randomfloatrange( -20, -15);
global_FX( " struct_effekt01", "funken", "test_fx/funken", randomStartDelay );
}
global_FX( targetname, fxName, fxFile, delay, soundalias )
{
// script_structs
ents = getstructarray(targetname,"targetname");
if ( !isdefined( ents ) )
return;
if ( ents.size <= 0 )
return;
for ( i = 0 ; i < ents.size ; i++ )
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );
}
global_FX_create( fxName, fxFile, delay, soundalias )
{
if ( !isdefined( level._effect ) )
level._effect = [];
if ( !isdefined( level._effect[ fxName ] ) )
level._effect[ fxName ] = loadfx( fxFile );
// default effect angles wenn keine vergeben wurden
if ( !isdefined( self.angles ) )
self.angles = ( 0, 0, 0 );
ent = createOneshotEffect( fxName );
ent.v[ "origin" ] = ( self.origin );
ent.v[ "angles" ] = ( self.angles );
ent.v[ "fxid" ] = fxName;
ent.v[ "delay" ] = delay;
if ( isdefined( soundalias ) )
{
ent.v[ "soundalias" ] = soundalias;
}
}
|
|
_structFX_loop.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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
|
#include common_scripts\utility;
#include maps\mp\_utility;
init()
{
global_FX( " struct_effekt01", "feuer", "test_fx/meteor", .1 );
}
global_FX( targetname, fxName, fxFile, delay, soundalias )
{
// script_structs
ents = getstructarray(targetname,"targetname");
if ( !isdefined( ents ) )
return;
if ( ents.size <= 0 )
return;
for ( i = 0 ; i < ents.size ; i++ )
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );
}
global_FX_create( fxName, fxFile, delay, soundalias )
{
if ( !isdefined( level._effect ) )
level._effect = [];
if ( !isdefined( level._effect[ fxName ] ) )
level._effect[ fxName ] = loadfx( fxFile );
// default effect angles wenn keine vergeben wurden
if ( !isdefined( self.angles ) )
self.angles = ( 0, 0, 0 );
ent = createLoopEffect( fxName );
ent.v[ "origin" ] = ( self.origin );
ent.v[ "angles" ] = ( self.angles );
ent.v[ "fxid" ] = fxName;
ent.v[ "delay" ] = delay;
if ( isdefined( soundalias ) )
{
ent.v[ "soundalias" ] = soundalias;
}
}
|
|
Bei beiden skrips ist der targetname gleich(und das darf so nicht sein), deshalb werde ich ab jetzt vor oneshot Effekte ose_effekt und vor Loop Effekte le_effekt schreiben das garantiert mir das es den targetname nur einmal gibt
Wenn ich jetzt einen zweiten Effekt hinzufügen möchte kann man den bestehenden script_struct einfach kopieren oder einen neuen erstellen und gleichen targetname verwenden.
Jetzt aber erstma eine Erklärung was wie wohin kommt also
global_FX( targetname, fxName, fxFile, delay, soundalias )
global_FX() ist immer gleich in die Klammer kommt mit Komma Trennung
targetname = Der Name der im Radiant dem script_struct gegeben wurde
fxname = Name für den Effekt kann frei gewählt werden muss aber einmalig in diesem Skript sein
fxfile = Ort an dem der Effekt gespeichert ist Ordner/Name des Effekts
delay = Bei Loop Effekten die Wiederholungsrate des Loops bei OneShot Effekten ?
soundalias = Name des Sound aus der Soundalias Datei
Beispiel: global_FX( " ose_feuer01", "feuer01", "test_fx/feuer01", randomStartDelay, "feuer01" );
Wenn man aber einen anderen Effekt einbinden will muss man nur eine Zeile dem jeweiligen Skript hinzufügen, ich nehme mal einen OneShotEffekt da ist das die zeile 9 jetzt beim neuen Zeile 9 und 10
_structFX_oneshot.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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
#include common_scripts\utility;
#include maps\mp\_utility;
init()
{
randomStartDelay = randomfloatrange( -20, -15);
global_FX( " ose_ funken 01", "funken01", "test_fx/funken01", randomStartDelay );
global_FX( " ose_feuer01", "feuer01", "test_fx/feuer01", randomStartDelay );
}
global_FX( targetname, fxName, fxFile, delay, soundalias )
{
// script_structs
ents = getstructarray(targetname,"targetname");
if ( !isdefined( ents ) )
return;
if ( ents.size <= 0 )
return;
for ( i = 0 ; i < ents.size ; i++ )
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );
}
global_FX_create( fxName, fxFile, delay, soundalias )
{
if ( !isdefined( level._effect ) )
level._effect = [];
if ( !isdefined( level._effect[ fxName ] ) )
level._effect[ fxName ] = loadfx( fxFile );
// default effect angles wenn keine vergeben wurden
if ( !isdefined( self.angles ) )
self.angles = ( 0, 0, 0 );
ent = createOneshotEffect( fxName );
ent.v[ "origin" ] = ( self.origin );
ent.v[ "angles" ] = ( self.angles );
ent.v[ "fxid" ] = fxName;
ent.v[ "delay" ] = delay;
if ( isdefined( soundalias ) )
{
ent.v[ "soundalias" ] = soundalias;
}
}
|
|
So jetzt habe ich 2 Effekte die ich per script_struct im Radiant verwenden kann.
Bei Loop Effekten kann man das genauso machen bis auf das die letzte zahl die widerholrate vorgibt die muss dann an den jeweiligen Effekt angepasst werden.
Man kann dem ganzen auch noch einen Sound hinzufügen man brauch dazu allerdings eine Soundalias Datei (Wie man diese erstellt findet man hier im OL Forum) .
Um den Sound einzubauen muss mal lediglich die Zeile im Skript mit dem in der Soundalias definierten Namen erweitern.
_structFX_oneshot.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:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
|
#include common_scripts\utility;
#include maps\mp\_utility;
init()
{
randomStartDelay = randomfloatrange( -20, -15);
global_FX( " ose_ funken 01", "funken01", "test_fx/funken01", randomStartDelay );
global_FX( " ose_feuer01", "feuer01", "test_fx/feuer01", randomStartDelay, "feuer01" );
}
global_FX( targetname, fxName, fxFile, delay, soundalias )
{
// script_structs
ents = getstructarray(targetname,"targetname");
if ( !isdefined( ents ) )
return;
if ( ents.size <= 0 )
return;
for ( i = 0 ; i < ents.size ; i++ )
ents[i] global_FX_create( fxName, fxFile, delay, soundalias );
}
global_FX_create( fxName, fxFile, delay, soundalias )
{
if ( !isdefined( level._effect ) )
level._effect = [];
if ( !isdefined( level._effect[ fxName ] ) )
level._effect[ fxName ] = loadfx( fxFile );
// default effect angles wenn keine vergeben wurden
if ( !isdefined( self.angles ) )
self.angles = ( 0, 0, 0 );
ent = createOneshotEffect( fxName );
ent.v[ "origin" ] = ( self.origin );
ent.v[ "angles" ] = ( self.angles );
ent.v[ "fxid" ] = fxName;
ent.v[ "delay" ] = delay;
if ( isdefined( soundalias ) )
{
ent.v[ "soundalias" ] = soundalias;
}
}
|
|
So jetzt habe ich in der Zeile 10 dem Effekt " ose_feuer01" den Sound „feuer01“ zugweisen der wird jetzt an jeder Stelle wo der Effekt abgespielt wird auch abgespielt.
Die zwei Skript kann man für jede Map benutzen da man nur den Effekt den man auch eingebaut hat mit ins FF File packen muss, nur die Soundalias Datei sollte neu erstellt werden um unnötige Sounds nicht immer mit einzubinden.
E Bewegte Effekte einbauen
Man kann effekte auch bewegen, dazu reicht es aber nicht einen Effekt per scriipt_origin oder _struct einzubauen und diesen per Skript zu bewegen.
Um einen Effekt zu bewegen Fügt man im Radiant ein script_model ein und zwar das Xmodel "tag_origin" und gibt ihm einen Targetname z.B. "FX01" das ist erstmal alles nun zum 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:
|
main()
{
fx1 = getent ("fx01","targetname");
level._effect[ "FX01" ] = loadfx( "test_fx/auf_on" );
fx1 thread fx1_effekt();
}
fx1_effekt()
{
while(1)
{
playfxontag (level._effect["FX01"], self , "tag_origin");
wait 0.1; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
}
|
|
So jetzt wird an der Spitze des tag_origin der Effekt abgespielt. Man muss allerdings einen oneshot Effekt nehmen da der Effekt z.B. oben alle 0.1sec erneut abgespielt wird und das bei Loop Effekten nichts aussieht. Wenn man allerdings einen Loop Effekt benutzen möchte kann man im Effekt Editor einen Loop Effekt in einen OneShot Effekt umwandeln und unter neuen Namen Speichern.
Nun aber wieder zur Bewegung. Der Effekt wird ja schon mal abgespielt nur bewegt er sich noch nicht da wir erst das Grund Skript haben also (Spiel auf dem tag_origin mit dem Targetname fx01 den Effekt FX01 ab).
Den tag_origin kann man auf die herkömmliche weise bewegen move, rotate…
z.B.
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:
|
main()
{
fx1 = getent ("fx01","targetname");
level._effect[ "FX01" ] = loadfx( "test_fx/auf_on" );
fx1 thread fx1_effekt();
while(1)
{
fx1 movez (10,1)
fx1 waittill ("movedone");
fx1 movez (-10,1)
fx1 waittill ("movedone");
}
}
fx1_effekt()
{
while(1)
{
playfxontag (level._effect["FX01"], self , "tag_origin");
wait 0.1; // muss dann der Effektdauer angepasst werden, damit es nach einem Loop aussieht
}
}
|
|
Das ist soweit alles habe in der Testmap noch ein paar weitere Beispiele wofür man bewegte Effekte verwenden kann.
Downloads:
Testmap als RAW Fils: Download
Testmap: Download
Zur Testmap:
1. Wer sich die rawfils runterläd muss bevor er die map läd erstmal in Asset Manager die skybox konvertieren einfach die datei mp_test_fx.gdt aus dem ordner source_data öffnen die skybox makieren und F10 drücken
2. Die map kann nur mit TDM gestartet werden
Also das wars erstma wenn jemand fragen hat oder etwas nicht ganz verstanden hat einfach fragen hoffe aber mal das der ein oder andere was dazulernt und viel Spaß beim Testen
BadMan
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von BadMan: 25.08.2008 16:58.
|
|
|
|
|
steinacker
Milupa-Fan
Dabei seit: 13.03.2008
Beiträge: 662
|
|
was muss ich eintragen, wenn es auf der ganzen map regen bzw. nebel geben soll
muss ich dazu die koordinaten leer lassen, oder so wie beim nebel, mehrere koordinaten eingeben
beispiel:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
|
level._effect["rain"] = loadfx ("weather/rain_mp_farm");
maps\mp\_fx::loopfx("rain", (-192, -256, 64), 3, (192, 256, 64), (-192, 256, 64), 192, -256, 64));
|
|
das müsste doch eigentlich ein quadrat sein, in dem der regen dann niederschlägt???
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
| |
| |
Wishmaster
Tele-Tubbie
Dabei seit: 10.04.2007
Beiträge: 135
|
|
Hi ich muß ja sagen das ich es ja gut finde das sich einer mal die mühe macht und das tut hir reinsetzt.
Mein problem ist es das ich immer und immer wieder script fehler bekomme und ich weis nicht woran es liegt!
Kann mir einer helfen??
hit meine GSC-Datein:
main()
{
maps\mp\_load::main();
maps\mp\mp_tunnel4_fx::main();
maps\mp\_compass::setupMiniMap("compass_map_mp_tunnel4");
//setExpFog(300, 1400, 0.5, 0.5, 0.5, 0);
//ambientPlay("ambient_farm");
VisionSetNaked("mp_tunnel4");
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "woodland";
game["axis_soldiertype"] = "woodland";
setdvar( "r_specularcolorscale", "3" );
setdvar("compassmaxrange","1800");
}
und meine fx-Datei:
main()
{
level._effect["fire"] = loadfx ("fire/firelp_med_pm.efx");
maps\mp\_fx::loopfx("fire", (-248 , -2896, 32), 3);
}
und ich weis nicht warum er es nicht machen will..
|
|
|
|
|
|
|
RE: immer wieder fehler.:-( |
|
Original von Wishmaster
und meine fx-Datei:
main()
{
level._effect["fire"] = loadfx ("fire/firelp_med_pm.efx");
maps\mp\_fx::loopfx("fire", (-248 , -2896, 32), 3);
}
Das rot makrierte gehört da nicht hin.
Und wenn du Script-Fehler bekommst, ist es hilfreich, wenn du die Fehler hier auch postest (aber aus der Console und nicht nur den Fehler, der dir im schwarzen Bildschirm angezeigt wird). Dann muss man nämlich nicht raten.
__________________
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 13.04.2008 13:18.
|
|
|
|
|
Wishmaster
Tele-Tubbie
Dabei seit: 10.04.2007
Beiträge: 135
|
|
ok danke mal für dein tip und hilfe aber es lag an einer datei die ich mit // ausschalten muste und einen ordenr namens creatfx muste ich machen...
Habe alles hir im foruum gefunde...
Jetzt geht alles
|
|
|
|
|
steinacker
Milupa-Fan
Dabei seit: 13.03.2008
Beiträge: 662
|
|
hab mir mal die verschieden versionen mit effekten einfügen etwas näher betrachtet und mit meiner version effekte und sounds
etwas kombiniert
@BadMan
von daher könntest du dein tut noch um einen punkt erweitern
ich hab in meiner datei createfx\mp_map_fx.gsc den effekt "fire"
so programmiert, wie das bei der map mp_village der fall ist
somit braucht man da im radiant kein struct oder sonst was einbauen und man kann sich das compilieren der map ersparen, wenn man den effekt um ein paar koordinaten verschiebt oder einen neuen einbaut, da reicht es dann aus, die ff-file neu zu builden.
maps\createfx\mp_moria_fx.gsc:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
Add_Fire
{
ent = maps\mp\_utility::createOneshotEffect( "fire" );
ent.v[ "origin" ] = ( -346, -800, 238 );
ent.v[ "angles" ] = ( 0, 180, 0 );
ent.v[ "fxid" ] = "fire";
ent.v[ "delay" ] = -1;
ent.v[ "soundalias" ] = "fire_wood_small";
} |
|
die letzte zeile mit der "soundalias" hab ich von BadMans tut, das fügt dann den gewünschten sound an gleicher stelle ein
somit kann ich mir, wie bei meinem tutorial effekte und sounds, die zweite script datei ersparen, mit der ich den sound einfüge
den effekt "fire" hab ich wie bei mp_village in der datei maps\mp\mp_moria_fx.gsc definiert
maps\mp\mp_moria_fx.gsc:
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
|
main
{
level._effect["fire"] = loadfx ("fire/firelp_barrel_pm");
} |
|
aufgerufen werden dann beide scripts in mp_map.gsc
mp_moria.gsc
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
|
main
{
maps\mp\mp_moria_fx::main();
thread maps\createfx\mp_moria_fx::Add_Fire();
} |
|
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|