Ich habe in meiner Map einige kleine Eisflächen die beim draufschiessen verschwinden und einen sound vom zerbrechlichen Glas abspielen sollen.
Was muß ich mit den Eisflächen im Radianten machen und was muß in die gsc.file rein.Habe schon mehrere Tutorials durch, aber nichts passendes gefunden.
Habe dieses CODUO Tut bei Level Designer gefunden.
Kann ich das für COD2 benutzen? und wenn ja,was muß ich daran ändern, habe schon ein wenig probiert bekomme es aber nicht hin mit dem Negativ.
Bospers Tutorial für alles was BUMM macht Wink
So ich hab mich mal hingesetzt und mich gefragt wie das wohl gehen mag mit dem In die Luft sprengen von Wänden und so.
Erster Ansatzpunkt war natürlich das Video-Tut von davinci. Hmm aber der benutzt ja ne Bombe die man legen muss um seine Wand hochzujagen. Neee das is ja uncool! Wenn will ich, dass die bei Beschuss auseinander fliegt! Also weiter überlegt.
Zweiter Ansatz war dann mp_foy da man hier ja den Kirchturm zerstören kann. Also Graydiant gestartet und mp_foy geladen.
Nach ca. 2 Std hatte ich dann meine erste kleine Map mit einer sprengbaren Mauer fertig. Und daran möchte ich euch jetzt Teilhaben lassen. Erfahrene Scripter werden das wahrscheinlich schon alles kennen aber kann ja trotzdem net schaden oder? also auf ans Werk...
1. Schritt: Was brauch ich im Graydiant?
Eigentlich net viel, na ja kommt auf die Größe des zu sprengenden Objektes an.
1. Das Objekt was gesprengt werden soll.
1.1 Das beste ist hier wenn ihr euch einfach ein paar "Stäbe" aus mehreren Brushes baut um somit die Fläche abzudecken die ich "verändern" wollt. Diese Stäbe teilt ihr dann jeweils in zwei Teile und Baut daraus die Kontur eures "Loches". Wie ihr das macht ist eigentlich egal Hauptsache ihr habt euer Loch.
1.2 In dieses Loch baut ihr nun, genau wie vorher, sozusagen das Negativ ein. Das heißt: Ihr schließt das grade gebaute Loch wieder!
So der Großteil der Arbeit ist damit getan. Also weiter:
2. Das Objekt sprengbar machen
2.1 Jetzt Selektiert ihr das komplette Negativ und klickt im 2D Fenster einmal mit der rechten Maustaste. Dann geht ihr auf script->Brushmodel. Im Entity-Menü gebt ihr dann folgendes ein:
key: "script_exploder" Value: "2"
key: "Targetname" Value: "delete"
2.2 Vielleicht habt ihr es euch schon gedacht: Natürlich brauchen wir auch einen Trigger der die ganze sache ins rollen bringt! Also fix einen Brush um unser negativ gezogen (oder um den Bereich wo es möglich sein soll die Zerstörung auszulösen. Der Trigger muss glaube ich aber das oder die script_brushmodel(s) einschließen) und ihm schnell die Textur common\trig zugewiesen. Wieder rechtsklick in der 2D Ansicht aber dieses mal trigger->damage Im Entity-Menü gebt ihr dann folgendes ein:
key: "script_exploder" Value: "2"
key: "spawnflags" Value: "115"
key: "targetname" Value: "belltower_damage" (das könnt ihr auch anders nennen, ich habs zum Testen so übernommen wie es in foy ist)
Da wir auch ein wenig Effekt verwöhnt sind kommen wir zu
2.3 Rechtsklick->script->script_model. Im Entity-Menü:
key: "model" Value: "xmodel/fx"
key: "script_delay" Value: "0.4" (oder wie lange eure Verzögerung dauern soll)
key: "script_exploder" Value: "2"
key: "script_fxid" Value: "bell_tower_exp"
So damit wäre die Arbeit im Graydianten getan. Wenden wir uns nun den scripts zu. Hierzu erstellt ihr die berühmte
deine_map.gsc und eine deine_map_fx.gsc. In erstere kommt das hier rein:
Code:
main()
{
level thread maps\mp\mp_foy_fx::main();
maps\mp\_load::main();
// Set up the effects used for explosion
level._effect["bell_tower_exp"] = loadfx ("fx/map_mp/mp_belltower_exp.efx");
// Run the function that does the explosion
level thread belltower_damage();
}
und das war’s!! Die beiden .gsc’s noch in den maps/mp Ordner, die Map kompilieren und fertig ist eure Sprengbare Wand oder
was auch immer. Hab leider noch nicht herausgefunden warum die Häkchen beim Trigger_damage keine Wirkung haben aber kommt
sicher noch.
Ach ja und sollte im Spiel euer Negativ in der Wand zu sehen sein, baut einfach einen Brush, der das gesamte Loch abdeckt
und gebt ihm die Textur shadow_cast (oder so ähnlich), damit ist das Problem auch behoben.
So ich hoffe ich konnte allen Script-Anfängern damit ein wenig helfen und dem einen oder anderen Profi vielleicht auch Wink
so long
Bosper
_________________
Diplomatie ist die Kunst, mit hundert Worten zu verschweigen was man mit einem Wort sagen könnte.
Kann mir vielleicht einer bei dem CODUO Tut helfen, habe es ausprobiert aber es funzt natürlich auch wieder nicht.
Diese Funktion ist z.B. für Falltüren geeignet, wenn man den Spieler leicht "foppen" möchte Wink.
1. erstelle dein Brush-Modell im Editor
2. mache ein script_brushmodel daraus (rechter Mausklick in 2D-Ansicht)
3. im Entity Editor (Taste N) gibst du deinem script_brushmodel den key targetname mit dem value mybrushmodel1
4. baue einen Brush mit der Textur common/trigger
5. mache ihn zum trigger_damage (rechter Mausklick)
6. im Entity Editor gibst du diesem Trigger den key targetname mit dem value mytrigger1 und setzte eventuelle flags wie pistol, etc.)
7. speichere und kompiliere deine map
8. erstelle mit notepad eine neue datei mit folgendem inhalt [EDIT:gefixt!]:
Code:
9. speichere die Datei als deinmapname_brush.gsc in maps bei Singleplayer- oder maps\mp bei Multiplayer-Maps. Alternativ schreibst du den Code der Sektion "delete_brush1" ans Ende deiner Haupt-GSC. Der Aufruf "thread delete_brush1();" steht dann oben in der Main-Sektion.
Wenn du nun im Spiel diesen Trigger triggerst, indem du ihn z.b. beschießst, wird das script_brushmodel gelöscht. Stehst du gerade zufälligerweise auf diesem Brush drauf... tja Yeah
In der roten Zeile habe ich statt { ein ; gesetzt. kontrolliere das mal.
Ausserdem würde ich deine Targetnamen vereinfachen da sich dort auch Fehler einschleichen können zb.: mybrushmodle1 sollte wahrscheinlich mybrushmodel1 heissen.
ciao
__________________
Wie habe ich gemerkt, dass ich Gott bin:
Ich habe gebetet und stellte fest, dass ich Selbstgespräche führe.
Das löschen des brushes funzt jetzt,aber kann es leider nicht kopieren.Was muß ich im script und im radianten ändern damit ich es so oft kopieren kann wie ich will ? Habe nämlich mehrere flächen von dieser art in der map.
Naja, dies wird ein wenig aufwendiger.
Fangen wir mit den Eisflächen an.
Du erstellst also deine Eisflächen und machst aus jeder einen script_brushmodel (du brauchst bei ihnen nichts weiter einstellen).
Als nächstes setzt du über jede Eisfläche einen trigger_damage.
Jedem dieser Trigger gibst du nun folgende Werte: Key: targetname Value: trigger_ice
Anschließend markierst du immer einen Trigger und die darunterliegende Eisfläche und drückst 'w' (somit zielt immer einer der Trigger auf die darunterliegende Eisfläche).
Das war es eigentlich im Radianten.
So nun zum Scripting.
Du erstellst einen neue Textdatei und nennst diese z.B. ice.gsc
Dort kommt folgendes hinein:
Dann öffnest du noch deine gsc-Datei deiner Map und machst oben noch den Eintrag: maps\mp\ice::main();
(dort, wo auch die Zeile maps\mp\_load::main(); steht).
Wenn du nachträglich noch mehr Eisflächen einbauen willst, brauchst du nur die jeweilige Eisfläche wieder als script_brushmodel in die Map einzufügen, einen weiteren trigger_damage darüber zu setzten, diesem die bereits oben erwähnten Einträge für Key und Value zu geben und den Trigger mit 'w' mit der Eisfläche zu verbinden. Der Script funktioniert dann auch bei diesem, ohne eine Änderung vorzunehmen.
__________________ 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: 29.10.2006 13:17.
Funzt jetzt alles super mit den eisflächen,aber kann ich auch das script so erweitern das sich ein sound abspielt wenn es zerbricht ? z.b.zerbrechendes glas.
Original von schnuller
Funzt jetzt alles super mit den eisflächen,aber kann ich auch das script so erweitern das sich ein sound abspielt wenn es zerbricht ? z.b.zerbrechendes glas.
Sicher, das Script ist ja nur eine Art Grundversion.
__________________ 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.
Original von schnuller
Funzt jetzt alles super mit den eisflächen,aber kann ich auch das script so erweitern das sich ein sound abspielt wenn es zerbricht ? z.b.zerbrechendes glas.
Sicher, das Script ist ja nur eine Art Grundversion.
Klappt alles wie es soll danke.Nur noch der sound fehlt.