[Tutorial] Zerstörbare Fenster *

yoda
Vorlage von Marshall/Zeroy auf itoeunited.net

Danke an OLD MAN WITH GUN und Verni@hter für´s Testen!

Hi all!

Hier ist ein kleines Script, das -=FD=- geschrieben hat und mit dem man Fenster erstellen kann, die nach einer gewissen Beschädigung zerbrechen. Das Script folgt nach den Instruktionen. Bitte dran denken, das Script als _breakable_windows.gsc zu speichern.

Hier also nun, wie man das Ganze verwendet:

Wie man es einsetzt...

Erstelle einen trigger_damage-Brush in der selben Größe und Breite wie Dein Fenster, aber 1 Unit tiefer an der Vorder- und Rückseite.

Gib dem Trigger im Entity-Fenster (Taste "N") diese Werte:
Key: targetname
Value: windtrig

Erstelle Dein Fenster in seiner UNZERBROCHENEN Version und verwandle es in ein script_brushmodel.
Eine gute Textur dafür wäre "com_glass_clear"

Erstelle Dein Fenster nun in seiner ZERBROCHENEN Version und verwandle es in ein script_brushmodel.
Eine gute Textur dafür wäre "com_glass_shattered_inside_fb"

Drücke ESC, damit nichts mehr selektiert ist.

Markiere den Trigger und anschließend das UNZERBROCHENE Fenster und drücke die Taste "W" um beides miteinander zu verknüpfen. Drücke anschließend die Taste ESC um die Selektion wieder aufzuheben.

Markiere nun das UNZERBROCHENE Fenster und dann das ZERBROCHENE Fenster und drücke die Taste "W", um beides miteinander zu verknüpfen. Drücke anschließend die Taste ESC um die Selektion wieder aufzuheben.

Markiere das ZERBROCHENE Fenster und dann eins der kaputten Teile und drücke die Taste "W", um beides miteinander zu verknüpfen. Drücke anschließend die Taste ESC um die Selektion wieder aufzuheben.

Schiebe nun alle Brushes übereinander, so dass alle Fenster-Teile und der Trigger aufeinander liegen.

Damit ist die Arbeit mit den Brushes erledigt!

Kopiere dieses Script unter dem Namen _breakable_windows.gsc in Deinen Ordner "/raw/maps/mp".

Füge die Dateien "rawfile,maps/mp/_breakable_windows.gsc" und "fx,props/car_glass_large" in Deine Zone-File ein.

Füge die Zeile

maps/mp/_breakable_windows::main();

in Deine Map-GSC-Datei ein.

Möchtest Du einen Sound-FX dazu, musst Du eine soundalias-Datei für Deine Map erstellen.

Wenn Du keinen Sound-FX möchtest (oder keine soundalias-Datei erstellen kannst) dann kommentiere diese Zeile aus (also // davor setzen):

self PlaySound("glass_break");

Das sollte so nun ok sein.

Man kann so viele Fenster einbauen, wie man möchte (getestet mit 70+), ohne daß man irgendwelche Nummern etc. anpassen muss.

Viel Spass!

Bitte immer Credit geben dort, wo es angebracht ist.

-=FD=-


Zerstörbare Fenster-Script:

// ---------------------------------------
// Zerstörbare Fenster Version 1.1 by -=FD=-
// Letztes Update: Freitag, 22. Februar 2008
// ---------------------------------------
//
// Dieses Script ermöglicht den Einbau von Fenstern, die nach einer gewissen beschädigung zerbrechen
// Ich habe versucht es so einfach wie möglich zu halten um die Nutzung zu vereinfachen.
// Es enthält einen “Zerbrochen”-Status für das Fenster (wie z. B. bei den Autos!)

// Man kann allerdings NOCH keine Granaten durch das Fenster werfen, um es zu zerbrechen…
// Um die Höhe der Beschädigung zu ändern, die das Fenster vertragen kann, musst Du den Wert bei 'targetdamage' anpassen.
// Credit an: Tally, der mir beim Einstieg ins Scripten geholfen hat.
// Credit an: noobCODmapper und Ghost Death für das Script auf modsonline.com, das mich hierzu inspiriert hat.
// Credit an: IW für dieses großartige Game und die Freigabe der Tools, so dass wir überhaupt damit arbeiten können!


main()
{
windfx = loadfx ("props/car_glass_large");
windtrigs = getentarray("windtrig","targetname");
for(i=0;i<windtrigs.size;i++)
{
windtrigs[i] thread dowindow(windfx);
}
}

dowindow(windfx)
{
targetdamage=80;
totaldamage=0;
WindowShattered=false;
WindowBroken=false;
self enablegrenadetouchdamage();
NormalState = getent(self.target,"targetname");
ShatteredState = getent(NormalState.target,"targetname");ShatteredState hide();
BrokenState = getent(shatteredState.target,"targetname");BrokenState hide();
while(!windowbroken)
{
self waittill ("damage", amount,attacker, direction_vec, point, type);
totaldamage+=amount;
if(totaldamage>targetdamage || getdamagetype(type)=="melee")
{
WindowBroken=true;
}
if(!WindowShattered)
{
NormalState delete();
ShatteredState show();
WindowShattered=true;
}
}
BrokenState show();
//self playsound("glass_break");
PlayFX(windfx, BrokenState.origin );
ShatteredState delete();
self delete();
}

getDamageType(type)
{
if(!isdefined(type)){return "unknown";}
type = tolower(type);
switch(type)
{
case "mod_melee":
case "mod_crush":
case "melee":
return "melee";
default:
return "other";
}
}


---

Direkt verlinken:
https://www.opferlamm-clan.de/wbb2/thread.php?threadid=10482

---
Fussel
hmmm hab das mal gemacht aber funz irgen wie net bei mir

hab den trigger_damage erstellt so groß wie das fenster aber da verstehe ich nicht was mit dem
aber 1 Unit tiefer an der Vorder- und Rückseite.

muss das aus dem fenster raus sein oder muss das im fenster selber drin sein


naja schön und gut hab das mal in verschieden version gemacht und was ich am tut nicht brauch is das ZERBROCHENE fenster wie unten steht


ich hab nur den trigger und script brush erstellt


und wenn ich die Gsc erstellt zeigt er mit fehler
bangingbernie
Ich hab's noch nicht ausprobiert, aber da steht doch 1 Unit tiefer (also rein in's Fenster Augenzwinkern ) auf Vorder- und Rückseite.

Und was heist das???

Zitat:

...und weiss ich am tut nicht brauch is das ZERBROCHENE fenster...


.....

Zitat:

und wenn ich die Gsc erstellt zeigt er mit fehler


Welche?
Fussel
das fenster soll dann kaputt wech sein loch drin ^^

der sagt mit da irgen wie main()
BadMan
hier is ma nen beispiel
Fussel
danke schön werde mal schauen ob ich das irgen wie hin bekomme in meine map brauch eigenlich nur die scheibe


habs grad mal aus probiert funz net geht ent kaputt hab den ram wech gemacht nur die scheibe da gelassen will net kaputt gehen Heul
-tiger-
@Fussel,

Vielleicht hast du zuviel gelöscht, die Beispiel-Map funktioniert bei mir. Es gibt noch eine andere Möglichkeit Zerstörbare Fenster zu erstellen und zwar über script_exploder .

script_exploder beispiel

edit:

Wenn ein sound abgespielt werden soll, muss man in das fx-model folgende werte eintragen :
  1. key: script_soundalias
  2. value: glass_break
yoda
Fussel, sorry, nix für ungut, aber könntest Du bitte etwas deutlicher schreiben und ab und an mal ´nen Punkt oder Komma setzen? Ist kein Spaß sich Deine Beiträge durchzulesen, würde es den Leuten hier ein kleines bißchen einfacher machen, Dir zu helfen... Augenzwinkern

Und wenn Du ´nen Fehler bekommst, wär´s hilfreich die KOMPLETTE und AUSFÜHRLICHE Meldung zu posten, damit man Deinen Fehler eingrenzen kann.
Matrixpro
Hi also ich habe es auch so gemacht nur leider geht mein fenster auch nicht in dut,

ich habe eigentllich auch alles verstanden bis auf
Markiere das ZERBROCHENE Fenster und dann eins der kaputten Teile und drücke die Taste "W", um beides miteinander zu verknüpfen. Drücke anschließend die Taste ESC um die Selektion wieder aufzuheben.

was denn wie kaputte teile?

also im spiel habe ich nun die ansicht einer kaputten fensters. cu
steinacker
bei mir hats auch nich funktioniert, deshalb habe ich das so wie in yoda's anleitung mit der zerstörbaren tür gemacht: tür wegsprengen
Team.Rlx|Nobody
tach zusammen, ich habe mich an die anleitung gehalten bis auf die kaputten teile, die hab ich weggelassen, vielleicht bekomme ich ja deshalb die fehlermeldung: siehe screen.

im script ist nix geändert, hab es so übernommen.

kann jemand helfen?

p.s. ich habe 2 von bad man´s beispielfenster in der map, funktioniert wunderbar, nur wenn ich ein eigenes ohne "kaputte Stücke" mache geht es nicht.

OLD MAN WITH GUN

Zitat:

Original von Team.Rlx|Nobody
p.s. ich habe 2 von bad man´s beispielfenster in der map, funktioniert wunderbar, nur wenn ich ein eigenes ohne "kaputte Stücke" mache geht es nicht.


Die kaputten Stücke müssen schon sein (die sucht der Script sonst vergebens, was zu deiner Fehlermeldung führt).
Team.Rlx|Nobody
dachte ich mir fast, vielen dank für die schnelle antwort
Trudel
Hallo,
kann mir noch mal wer helfen ?
Bei mir klappt es nicht unglücklich
Also ich glaube das mit dem Bauen des Fenster habe ich soweit richtig gemacht.Ich vermute das mein Fehler in dieser Zeile liegt, bin mir aber nicht ganz sicher:

Zitat:

Füge die Dateien "rawfile,maps/mp/_breakable_windows.gsc" und "fx,props/car_glass_large" in Deine Zone-File ein.


Was ist mit Zone-File gemeint ?
Ich habe die beiden Datein in /Zone/Files kopiert liegen die da richtig oder ist ein andere "Zone-File"o ordner gemeint ?

gruß Trudel
bangingbernie
Siehe Punkt 4: Update Zone File

Trudel
Ah...das "Datei" hat mich ein wenig irritiert. Allerdings klappt es immer noch nicht. Es ist mir ein Rätzel ansonsten habe ich eigentlich alles so gemacht wie es oben steht.
Ich bekomme jetzt beim Compilieren der Reflection einen Syntaxfehler.
Ich werde morgen mal ein kleines Video von meinem Ablauf, wie ich vorgegangen bin machen. Dann sieht man sicher schneller was Falsch ist.

gruß Trudel
Trudel
So habe jetzt mal ein Video davon geamcht, wie ich vorgegangen bin hoffe ihr erkennt was ich falsch mache.
http://www.myvideo.de/watch/6019565
Marvin
@Trudel. Hab ne PN abgeschikt! Guck mal in die PN-Box

mfg Marvin
bangingbernie

Zitat:

Original von Marvin
@Trudel. Hab ne PN abgeschikt! Guck mal in die PN-Box

mfg Marvin


Das Board lebt davon, dass man Tips oder Fehlerbehebung mit allen teilt. Daher bitte zukünftig die Lösung posten.
Marvin
Nagut, er hat diese ganze Erklärung da mit kopiert. Das ist die Lösung. Okay?