|
 |
[Tutorial] Teleporter einbauen + Sound + Effekt      |
yoda
Böser Admin
Dabei seit: 21.01.2004
Beiträge: 12.269

|
|
[Tutorial] Teleporter einbauen + Sound + Effekt |
 |
Grundlage sind die Anleitung und das Script von Dad of Azz und cybershot in ihrer CoD2-Anleitung auf modsonline.com
Danke an OLD MAN WITH GUN für die Überarbeitung und Verbesserungen!
Danke an Verni@hter und OLD MAN WITH GUN für´s Testen!
Teleporter einbauen
Als Beispiel hier mal ein Vorschlag für einen Start- und Ziel-Bereich - der Spieler soll bei Betreten das Start-Bereiches zum Ziel teleportiert werden:

Erstelle Deinen Start-Bereich und platziere einen Brush mit der Trigger-Textur an der Stelle, von der aus der Spieler teleportiert werden soll - dieser Brush sollte sicherheitshalber mindestens in der Größe einer Spielfigur gesetzt werden:

Lass den Trigger-Brush markiert, wechsle in die 2D-Ansicht, drücke die rechte Maustaste und wähle dann
-> trigger -> multiple

Lass den Trigger-Brush weiterhin markiert und öffne nun das Entity-Fenster mit der Taste "N" - im Entity-Fenster musst Du nun folgenden Key und Value vergeben:
Key: targetname
Value: enter
Erklärung:
targetname - enter
Dies ist für die "Auslösung" des Transporters im Script, welches später noch in die gsc-Datei geschrieben werden muss. Dieser Wert muss auch bei mehreren eingebauten Teleportern gleich bleiben, damit das Script diese Stelle als Teleporter interpretieren kann.
In diesem Beispiel sollte es nun so aussehen:

Das war es nun für den Start-Bereich - schließe das Entity-Fenster mit der Taste "N" und löse die Markierung des Trigger-Brushes mit der Taste ESC.
Wechsle nun zum Ziel-Bereich - klicke mit der rechten Maustaste in die 2D-Ansicht und wähle dann
-> script -> origin

Es wird nun ein kleiner, roter Würfel eingeblendet - diesen positionierst Du nun ein kleines bisschen über der Stelle, an der der Spieler nach Betreten des Teleporters erscheinen soll - achte darauf, dass das script_origin keinen Kontakt zu anderen Brushes hat!
Mit der ROTATE-Funktion solltest Du außerdem noch die Blickrichtung des Spielers festlegen, wenn er wieder "materialisiert" wurde - der Pfeil des script_origins entspricht dabei der Vorwärtsbewegung des Spielers. Denk daran, die ROTATE-Funktion anschließend wieder auszuschalten!
Ok, das script_origin wurde nun also am Zielort platziert:

Löse nun die Markierung vom script_origin (ESC-Taste) und markiere nun zuerst den trigger_multiple (unseren Startpunkt) und dann wieder das script_origin (unseren Zielpunkt) - also so, daß BEIDE GLEICHZEITIG markiert sind.
!!!Wichtig: Reihenfolge genau beachten!!!
Nachdem nun der trigger_multiple und das script_origin gleichzeitig markiert sind, drücke die Taste "W" - damit wird nun der trigger_multiple mit dem script_origin "verbunden".
Drücke nun nochmals die ESC-Taste um die Markierungen der beiden wieder zu lösen. Sollte alles geklappt haben wie geplant, sollten der Start- und der Ziel-Bereich nun mit einer roten Linie "verbunden" sein:

So, das war´s nun im Radianten, nun geht es an´s zugehörige Script - keine Sorge, halb so wild!
Das folgende Script musst Du als .gsc-Datei unter dem Namen "teleporter.gsc" in Deinem zum Mappen genutzten CoD4-Verzeichnis unter \raw\maps\mp abspeichern:
teleporter()
{
entTransporter = getentarray("enter","targetname");
if(isdefined(entTransporter))
{
for(lp=0;lp<entTransporter.size;lp++)
entTransporter[lp] thread Transporter();
}
}
Transporter()
{
while(true)
{
self waittill("trigger",other);
entTarget = getent(self.target, "targetname");
wait(0.10);
other setorigin(entTarget.origin);
other setplayerangles(entTarget.angles);
//iprintlnbold ("You have been teleported !!!");
wait(0.10);
}
}
Um das Script lauffähig zu machen, musst Du außerdem einen Eintrag in die mapname.gsc Deiner eigenen Map vornehmen:
unter die Zeile
maps\mp\_load::main();
fügst Du einfach die Zeile
thread maps\mp\teleporter::teleporter();
ein und speicherst die Änderung natürlich auch.
Und zu guter letzt musst Du noch Deine Zone-Datei auf den aktuellen Stand bringen - in den Compile Tools also unter
-> Level Compiling -> 4. Update Zone File
wählen und auf der rechten Seite den Eintrag
rawfile,maps/mp/teleporter.gsc
vornehmen - Speichern (unten auf SAVE klicken) natürlich nicht vergessen - könnte dann z. B. so aussehen:

Tja, das war´s auch schon, Beam me up, Scotty!
***
Direkt verlinken:
https://www.opferlamm-clan.de/wbb2/thread.php?threadid=10964
***
|
|
|
|
|
yoda
Böser Admin
Dabei seit: 21.01.2004
Beiträge: 12.269

|
|
Teleporter Teil 2 - Sound & Effekt hinzufügen |
 |
Teleporter Teil 2 - Sound & Effekt hinzufügen
Tutorial by OLD MAN WITH GUN - danke schön für die Mühe!
Teleporter - Sound hinzufügen
Um die ganze Sache ein wenig zu vereinfachen, habe ich ein kleines Paket zusammen geschnürt, in dem alle benötigten Dateien als Vorlage enthalten sind und die Du an Deine Bedürfnisse anpassen Kannst. Des weiteren ist auch eine komplette Beispiel-Map enthalten.
Download Teleporter Sound & Effekt
Ok, legen wir los!
Du benötigst als erstes zwei Sound-Dateien: der eine Sound wird beim Betreten des Teleporters abgespielt, der andere beim Verlassen des Teleporters.
Im Beispielprojekt sind entsprechende Soundfiles vorhanden (im Ordner /raw/sound/teleporter).
Diese kopierst Du am besten erst einmal in Dein Call of Duty 4-Mapping-Verzeichnis (dort muss dann also ebenfalls der Ordner /raw/sound/teleporter vorhanden sein).
Nun benötigst Du noch eine "soundaliases"- Datei, in der die entsprechenden Sounds für das Spiel definiert werden.
Diese soundaliases-Datei (sofern noch nicht vorhanden) erstellst Du im Ordner (die Vermutung liegt nahe) /raw/soundaliases.
Geh also in den Ordner /raw/soundaliases und erstelle dort eine neue Textdatei, der Du den gleichen Namen gibst wie
Deiner Map nur mit der Dateiendung .csv (also z.B. mp_deinmapname.csv) - natürlich kannst Du auch die vorgefertigte Datei aus dem Beispielprojekt verwenden, benenne sie dann eben einfach um, so dass sie den Namen Deiner Map trägt.
In diese csv-Datei kommt nun folgendes hinein:
name,sequence,file,vol_min,vol_max,vol_mod,pitch_min,pitch_max,dist_min,dis
t_max,channel,type,probability,loop,masterslave,loadspec,subtitle,compressi
on,secondaryaliasname,volumefalloffcurve,startdelay,speakermap,reverb,lfe percentage,center percentage,platform,envelop_min,envelop_max,envelop percentage
teleport_start,,teleporter/teleport_start.wav,1,1,na,0.95,1.05,,600,,,,,,mp_deinmapname,,,,,,,,
teleport_dest,,teleporter/teleport_dest.wav,1,1,na,0.95,1.05,,600,,,,,,mp_deinmapname,,,,,,,,
WICHTIG:
Das mp_deinmapname musst Du natürlich mit dem Namen Deiner Map ersetzen - dies muss Du auch tun, falls Du die csv-Datei aus dem Beispielprojekt benutzt!
Nachdem Du diese Datei dann gespeichert hast, erweiterst Du als nächstes die Datei teleporter.gsc aus dem Ordner /raw/maps/mp.
Dafür musst Du die rot gekennzeichneten Zeilen hinzufügen:
teleporter()
{
level.scr_sound["teleport_start"] = "teleport_start";
level.scr_sound["teleport_dest"] = "teleport_dest";
entTransporter = getentarray("enter","targetname");
if(isdefined(entTransporter))
{
for(lp=0;lp<entTransporter.size;lp++)
entTransporter[lp] thread Transporter();
}
}
Transporter()
{
while(true)
{
self waittill("trigger",other);
entTarget = getent(self.target, "targetname");
other playsound("teleport_start");
wait(0.30); //hier die Zeit etwas höher setzen (von 0.1 auf 0.3)
other setorigin(entTarget.origin);
other setplayerangles(entTarget.angles);
//iprintlnbold ("You have been teleported !!!");
wait(0.10);
other playsound("teleport_dest");
}
}
Diese Anpassungen speicherst Du dann natürlich wieder.
Nun trägst Du noch folgende Zeile in das Zone File Deiner Map ein (über die Compile Tools -> Level Compilinng -> Deine Map-Datei wählen -> 4. Update Zone File):
sound,mp_deinmapname,mp_deinmapname,!all_mp
WICHTIG:
mp_deinmapname musst Du an beiden Stellen wieder durch den Namen Deiner eigenen Map ersetzen!
Jetzt noch ein neues Fast File erzeugen (Compile Tools -> Level Compilinng -> Deine Map-Datei wählen -> 3. Build Fast File) und beim Betreten und Verlassen des Teleporters solltest Du jetzt jeweils einen Sound hören.
***
Tja, man kann allerdings noch ein bißchen mehr damit anstellen...
Jetzt noch einen Effekt zum Teleportieren einbauen:
Dafür kopierst Du zuerst einmal aus dem Beispielprojekt aus dem Ordner /raw/fx den dort befindlichen
Ordner "teleporter" (und somit gleichzeitig die darin enthaltene Effekt-Datei) in den gleichnamigen Ordner in Deinem Call of Duty 4-Mapping-Verzeichnis (also nach /raw/fx) - d. h. also in Deinem Mapping-Verzeichnis muss sich anschließend der Ordner /raw/fx/teleporter befinden.
Anschließend öffnest du wieder die teleporter.gsc und trägst dort nun die hier rot gekennzeichneten Zeilen ein (Achtung - hier sind auch die Teleporter-Sounds aus dem vorhergegangenen Beispiel bereits integirert):
teleporter()
{
level._effect[ "teleporter" ] = loadfx( "teleporter/teleport_red" );
level.scr_sound["teleport_start"] = "teleport_start";
level.scr_sound["teleport_dest"] = "teleport_dest";
entTransporter = getentarray("enter","targetname");
if(isdefined(entTransporter))
{
for(lp=0;lp<entTransporter.size;lp++)
entTransporter[lp] thread Transporter();
}
}
Transporter()
{
maps\mp\_fx::loopfx("teleporter", (self.origin), 3, (self.origin) + (0, 0, 270));
while(true)
{
self waittill("trigger",other);
entTarget = getent(self.target, "targetname");
other playsound("teleport_start");
wait(0.30); //hier die Zeit etwas höher setzen (von 0.1 auf 0.3)
other setorigin(entTarget.origin);
other setplayerangles(entTarget.angles);
//iprintlnbold ("You have been teleported !!!");
wait(0.10);
other playsound("teleport_dest");
}
}
Nun die Datei wieder speichern.
Danach fügst Du noch diese Zeile in Deine Zone File ein (Compile Tools -> Level Compilinng -> Deine Map-Datei wählen -> 4. Update Zone File):
fx,teleporter/teleport_red
Danach wieder ein neues Fast File erzeugen (Compile Tools -> Level Compilinng -> Deine Map-Datei wählen -> 3. Build Fast File) und Scotty seinen Job mit dem dazu passenden Sound und Effekt tun lassen.
Wenn Du Deine Map jetzt startest, sollte an den Startpunkten ein Effekt zu sehen sein.
***
Direkt verlinken:
https://www.opferlamm-clan.de/wbb2/thread.php?postid=103236#post103236
***
|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
servus,
hab mal den teleporter ausprobiert, funzt ganz gut soweit, nur fehlt da noch ein sound -finde ich-
deshalb hab ich mir mal das script von der map mp_uo_voyager angeschaut, und die dem entsprechenden zeilen hier noch eingefügt
nur kommt da bei mir kein sound und ich bekomme im game auch keine fehlermeldung angezeigt
hier mal ein teil vom script mit den soundzeilen
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:
|
Transporter()
{
while(true)
{
self waittill("trigger",other);
entTarget = getent(self.target, "targetname");
other playsound("TransportOut");
wait(0.10);
other setorigin(entTarget.origin);
other setplayerangles(entTarget.angles);
// iprintlnbold ("You have been teleported !!!");
wait(0.10);
other playsound("TransportIn");
}
}
|
|
und hier die soundalias dazu
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
|
#teleport
TransportIn,,misc/transin.wav,1.00,1.00,,,100,500,,,,,,,,,,,,,,,,,50,100,0.55
TransportOut,,misc/transout.wav,1.00,1.00,,,100,500,,,,,,,,,,,,,,,,,50,100,0.55
|
|
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von steinacker: 04.05.2008 21:43.
|
|
|
|
|
|
|
Da fehlt wohl noch das "all_mp" könnt ich mir denken, wie hier:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
|
jumppad,,mp_jumppad/jumppad.wav,0.5,1,na,,,50,150,,,,,,all_mp,,,,,,,,,,,50,100,0.55 |
|
ToM
__________________

|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
Original von Nightwing
Da fehlt wohl noch das "all_mp" könnt ich mir denken, wie hier:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
|
jumppad,,mp_jumppad/jumppad.wav,0.5,1,na,,,50,150,,,,,,all_mp,,,,,,,,,,,50,100,0.55 |
|
ToM
ok probier ich mal, hab das aber bei den anderen alias zeilen auch rausgelassen (tür und aufzug sound)
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
moin,
hab jetz mal das tut hier von vorne bis hinten durchprobiert...
funzt alles soweit, nur ein kleines problem hab ich noch.
bei mir iss der kreis vom teleporter effect nich aufm boden und der effect iss auch die ganze zeit zu sehen, also auch wenn der teleporter nicht aktiviert ist

ist das so gewollt, oder sollte der effect erst beim "transport" erscheinen
hab da jetzt im scripting schon alles mögliche versucht, aber ich kann den effect jeweils nur um 90° drehen und entweder isser da oder nich da
z.b.
maps\mp\_fx::loopfx("teleporter", (self.origin), 3, (self.origin) + (0, 0, 0));-->kreis ist weg
(0,0,1)-->kreis ist an der gleichen stelle wie bei (0,0,270)
ein - (minus) davor
(0,0,-180) oder (0,0,-90)--> kreis ist von unten zu sehen, gleiche höhe
und bei
maps\mp\_fx::loopfx("teleporter", (self.origin), 3);
ist der effect um 90° nach links verdreht
die "leuchtpunkte" sind immer da
und wenn ich den "loopfx" in die while-schleife einbau, dann ist der effect garnicht zu sehen
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:
|
transporter()
{
while (1)
{
self waittill("trigger",other);
maps\mp\_fx::loopfx("teleporter", (self.origin), 3, (self.origin) + (0, 0, 270));
entTarget = getent(self.target, "targetname");
other playsound("teleport_start");
wait(0.40);
other setorigin(entTarget.origin);
other setplayerangles(entTarget.angles);
// iprintlnbold ("You have been teleported !!!");
wait(0.10);
other playsound("teleport_dest");
}
} |
|
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
|
|
Original von steinacker
funzt alles soweit, nur ein kleines problem hab ich noch.
bei mir iss der kreis vom teleporter effect nich aufm boden und der effect iss auch die ganze zeit zu sehen, also auch wenn der teleporter nicht aktiviert ist
Du müsstest beim starttrigger (enter) entweder noch einen origin brush hinzufügen (der definiert den Basispunkt des Triggers und der sollte dann so platziert sein, dass das Zentrum des origin brushes genau den Boden berührt), oder mach es einfacher, ersetze den trigger_multiple durch einen trigger_radius (der hat einen origin direkt am Boden). Schau dazu auch mal in die Beispielmap, die im Download dabei ist. Der Effekt wird ohne origin im Zentrum des Triggers abgespielt.
Und das der Effekt die ganze Zeit abgespielt wird, ist so gewollt (damit man die Teleporter besser orten kann). Und die fliegenden Partikel sind viel zu langsam (die brauchen mehrere Sekunden, bis die mal an höhe gewonnen haben, da wäre also aufgrund des schnellen Transports außer dem Kreis am Boden überhaupt nichts zu sehen). Beim Mapstart fällt das nicht auf.
__________________
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: 07.05.2008 00:20.
|
|
|
|
|
|
|
Original von steinacker
man sollte vielleicht noch erwähnen, wie ein trigger_radius erstellt wird, ich hab das erst mit der trigger texture probiert - geht nicht-
einfach im 2d fenster RM-->trigger-->radius
auswählen, am besten in der draufsicht, ohne vorher einen brush zu erstellen
Das geht übrigens bei allen Triggern so (ich mach die nie anders). Auch bei z.B. einem trigger_multiple oder trigger_damage usw. ist es unnötig vorher einen brush zu erstellen und diesen mit der trigger Textur zu belegen (es wird automatisch ein brush mit trigger textur erzeugt). Es ist zwar nicht verkehrt, aber halt zwei unnötige Schritte.
__________________
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: 07.05.2008 18:23.
|
|
|
|
|
yoda
Böser Admin
Dabei seit: 21.01.2004
Beiträge: 12.269

|
|
Kann man diesen roten "Kreis" eigentlich auch ganz verschwinden lassen, so dass nur die roten Partikel übrig bleiben?
__________________ "Fürs Internet sollte das Baumhaus-Prinzip gelten:
Wer zu alt ist, um ohne Hilfe reinzukommen, soll uns darin auch keine Vorschriften machen."
Diskutiere nie mit einem Idioten - zuerst zwingt er Dich auf sein Niveau herab und dann schlägt er Dich mit Erfahrung...
|
|
|
|
|
steinacker
Milupa-Fan
  
Dabei seit: 13.03.2008
Beiträge: 662

|
|
maps\mp\_fx::loopfx("teleporter", (self.origin), 3, (self.origin) + (0, 0, 0));-->kreis ist weg
da habe ich bei meinem teleporter zumindest keinen kreis gesehen
am einfachsten, würde ich mal sagen, einfach das zentrum 1-2 einheiten unter den boden legen, dann wird zwar der kreis noch "abgespielt" in der map, da der aber unter dem boden ist, isser nich zu sehen
oder den effect im effects editor umbauen
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
yoda
Böser Admin
Dabei seit: 21.01.2004
Beiträge: 12.269

|
|
Danke erst mal wieder!
Den Effects Editor hab ich mir bisher kaum angeschaut muss ich gestehen...
@steinacker:
[Tutorial] Effekte einfügen (Wetter, Rauch, usw.) *
Sonst hab ich dazu leider auch nicht viel gesehen...
__________________ "Fürs Internet sollte das Baumhaus-Prinzip gelten:
Wer zu alt ist, um ohne Hilfe reinzukommen, soll uns darin auch keine Vorschriften machen."
Diskutiere nie mit einem Idioten - zuerst zwingt er Dich auf sein Niveau herab und dann schlägt er Dich mit Erfahrung...
|
|
|
|
|
|
|
Original von steinacker
gibts eigentlich irgendwo ein tut zum effects editor, ich hab von dem teil ka plan
oder ne kleine einleitung, starthilfe etc.
Tutorials für den EffectEditor kenne ich auch keine, was wohl auch daran liegen dürfte, das nur sehr wenige überhaupt eigene Effekte basteln und das wiederum, weil der EffectEditor wohl das komplizierteste Programm aus den ganzen Mod-Tools ist.
Da kann man (so wie ich) nur schon vorhandene Effkte öffnen, sie im EffectEditor starten und dann mit den verschiedenen Parametern herumspielen um zu sehen was passiert.
__________________
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: 08.05.2008 15:19.
|
|
|
|
|
DuST
Weichei
Dabei seit: 18.11.2016
Beiträge: 1

|
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|