Opferlamm-Clan Board
www.opferlamm-clan.de
Verantwortlich für diese bösen Machenschaften: siehe Impressum

Registrierung Kalender Mitgliederliste Suche Häufig gestellte Fragen Zur Startseite

Opferlamm-Clan Board » Call of Duty: World at War » Call of Duty: World at War - Mapping » CoD5-Mapping-Tutorials » [Tutorial] Zerstörbare Fenster » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen [Tutorial] Zerstörbare Fenster 3 Bewertungen - Durchschnitt: 8,673 Bewertungen - Durchschnitt: 8,673 Bewertungen - Durchschnitt: 8,673 Bewertungen - Durchschnitt: 8,67
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
BadMan
Turnbeutelvergesser


images/avatars/avatar-1043.jpg


Dabei seit: 31.01.2008
Beiträge: 278


Text [Tutorial] Zerstörbare Fenster Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi,

so ich mach mal ein Tut für zerstörbare fenster welches bestimmt auch einige von CoD 4 kennen.

Wieso mache ich das eigentlich? Werden sich jetzt einige fragen. Naja zum einen habe ich ein paar Dinge geändert, außerdem werden sich einige Fragen wieso geht das da? Und so kann ich eventuell ja auch ein paar andere Mapper zum Tutorial schreiben anregen.

Also gut als erstes das Tut von CoD 4 funzt auch noch. Allerdings muss man Effekt und Sound anpassen. Link

Jetzt zum Tut



1. Das Skript

_breakable_windows.gsc

Code einblendenCode 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:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
 
// ---------------------------------------
// Zerstörbare Fenster Geänderte Version 1.1 by BadMan
// Letztes Update: Sonntag, 30. November 2008
// ---------------------------------------

// ---------------------------------------
// 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 ("maps/sniper/fx_glass_break");
windtrigs = getentarray("fenster","targetname");
for(i=0;i<windtrigs.size;i++)
{
windtrigs[i] thread dowindow(windfx);
}
}

dowindow(windfx)
{
targetdamage=80;
totaldamage=0;
WindowShattered=false;
WindowShatteredtwo=false;
WindowBroken=false;
self enablegrenadetouchdamage();
NormalState = getent(self.target,"targetname");
ShatteredState = getent(NormalState.target,"targetname");ShatteredState hide();
ShatteredStatetwo = getent(shatteredState.target,"targetname");ShatteredStatetwo hide();
BrokenState = getent(shatteredStatetwo.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;
}
else if(!WindowShatteredtwo)
{
ShatteredState delete();
ShatteredStatetwo show();
WindowShatteredtwo=true;
}
}
BrokenState show();
self playsound("glass_pane_break");
PlayFX(windfx, BrokenState.origin );
ShatteredState delete();
ShatteredStatetwo 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";
}
} 


Dieses kommt in den Ordner (raw\maps\mp\_breakable_windows.gsc)
Als nächstes fügt man in seine (mp_name der Map.gsc) folgende Zeile ein.

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
maps\mp\_breakable_windows::main();


Einfach über die zeile mit maps\mp\_load::main(); einfügen.

So das wars mit dem Skripten.



2. Update Zone File

Da es diese option im Luncher nicht oder noch nicht gibt, muss man halt alles selbst in die mp_name der map.csv einfügen.

Dazu öffnet man die Datei. Die Datei befindet sich im Ordner (zone_source).
Hier fügt man die folgenten zeilen hinzu.


Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
rawfile,maps/mp/_breakable_windows.gsc
fx,maps/sniper/fx_glass_break



Das dient dazu das das Skript und der Effekt mit in das FF File deiner Map geladen wird.



3. Der Radiant

Also ich gehe jetzt mal davon aus, das in deiner Map ein Haus oder sonst was ist mit Öffnung fürs Fenster ist.

Ich verwende Die XModels: breakable_window2_pristine und breakable_window2_brkn1 – brkn3.

So der einfachste Weg ist wohl wenn man erst mal das Model (breakable_window2_pristine) in die Map einfügt. Dazu rechtsklick im 2D Fenster und dort unter script/model das gewünschte Model wählen. Jetzt kann man die Öffnung dem Fenster anpassen beziehungsweise das Fenster der Öffnung.

Als nächstens kommt der Trigger. Dazu wieder rechtsklick im 2D Fenster und auf trigger/damage drücken. Den so erstellten Trigger der Fensteröffnung anpassen. Ich habe ihn genau so groß wie das Fenstermodel gemacht. Außerdem bekommt der Trigger noch einen Targetname, dazu markiert man nur den Trigger und drückt auf „N“. So gelangt man in den Entry Editor dort schreibt man bei Key targetname und bei Value fenster anschließend bestätigt man mit ENTER.

Jetzt fehlen noch die zerstörten Modelle und die Verbindung von model und Trigger.

Ich mache das dann so.

Ich stelle den Grid auf 32, so kann ich den Trigger und das Model bewegen aber auch sehr leicht wieder an die Ursprungsposition bringen.
So jetzt kann ich den Trigger aus der öffnung ziehen und das Model auch. Vom Model mache ich noch 3 Kopien (Model markieren und SPACE drücken) und ordne alles in einer Reihe an.

Jetzt habe ich eine Reihe Trigger – Fenster1 – Fenster2– Fenster3 – Fenster4.

Jetzt ändert man die modele von Fenster 2-4. Dazu Markiert man erst Fenster2 drückt auf „N“, jetzt kann man entweder auf Model… drücken und das gewünschte auswählen oder man ändert den model Name manuell.

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
4:
5:
6:
Fenster1 = breakable_window2_pristine
Fenster2 = breakable_window2_brkn1
Fenster3 = breakable_window2_brkn2
Fenster4 = breakable_window2_brkn3



So jetzt habe ich schon mal alles zusammen jetzt noch alles verbinden.
Dazu markiert man den Trigger dann Fenster1 und drückt auf „W“ jetzt sollte eine rote Linie zwischen Trigger und Fenster1 sein. Jetzt Fenster1 dann Fenster2 markieren und „W“ drücken, das gleiche noch mit Fenster2 – Fenster3 und mit Fenster3 – Fenster4.

Jetzt kommt alles übereinander wieder in die Fensteröffnung der Wand.
So jetzt kann man noch eine Clip Textur in den Fensterrahmen legen das man nicht durchlaufen kann.


Man kann auch die modele austauschen, wenn man nur 3 statt 4 modele verwenden will nimmt man das Skript von CoD 4.

So ich hoffe mal das alles so Einigermasen verständlich ist Fragen sind natürlich erwünscht und der Sound und der Effekt werden auch abgespielt.
Der Sound kommt übrigens aus der soundalias Datei (destructibles.csv) welche Sounds noch gehen kann ich nicht sagen aber der von mir verwendete geht.



Gruß
-BadMan-

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von BadMan: 30.11.2008 13:01.

BadMan ist offline E-Mail an BadMan senden Beiträge von BadMan suchen Nehmen Sie BadMan in Ihre Freundesliste auf
BadMan
Turnbeutelvergesser


images/avatars/avatar-1043.jpg


Dabei seit: 31.01.2008
Beiträge: 278


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi

Ich habe das ganze nochmal ein wenig bearbeitet und habe beim fenster mal jede scheibe einzeln eingefügt. Da das ganze etwas Arbeit ist hab ichs mal hochgeladen.

Fenster Prefab Download


Das ganze is im Prinzip das gleiche wie oben nur, dass ich den Fensterrahmen als normales model und halt jede scheibe einzeln als script_model eingefügt habe(so wie oben beschrieben).

Das Skript hab ich auch etwas angepasst.

Änderungen:
1. Effekt ausgetauscht (Der von oben ist etwas übertrieben)
2. Sound bei jedem Treffer


Den Effekt habe ich allerding auskommentiert da es mir ohne besser gefällt das kann aber jeder für sich entscheiden.


Skript:

Code einblendenCode 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:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
main()
{
windfx = loadfx ("misc/fx_glass_window_brk");
windtrigs = getentarray("fenster","targetname");
for(i=0;i<windtrigs.size;i++)
{
windtrigs[i] thread dowindow(windfx);
}
}

dowindow(windfx)
{
targetdamage=80;
totaldamage=0;
WindowShattered=false;
WindowShatteredtwo=false;
WindowBroken=false;
self enablegrenadetouchdamage();
NormalState = getent(self.target,"targetname");
ShatteredState = getent(NormalState.target,"targetname");ShatteredState hide();
ShatteredStatetwo = getent(shatteredState.target,"targetname");ShatteredStatetwo hide();
BrokenState = getent(shatteredStatetwo.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)
{
self playsound("glass_pane_break");
NormalState delete();
ShatteredState show();
WindowShattered=true;
}
else if(!WindowShatteredtwo)
{
self playsound("glass_pane_break");
ShatteredState delete();
ShatteredStatetwo show();
WindowShatteredtwo=true;
}
}
BrokenState show();
self playsound("glass_pane_break");
//PlayFX(windfx, BrokenState.origin );
ShatteredState delete();
ShatteredStatetwo 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";
}
}

BadMan ist offline E-Mail an BadMan senden Beiträge von BadMan suchen Nehmen Sie BadMan in Ihre Freundesliste auf
Matrixpro
Milupa-Fan


images/avatars/avatar-759.jpg


Dabei seit: 16.04.2006
Beiträge: 607


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hi super sache das heist man kann jetzt einfach nur das fenster prefab in die map laden und fertig?
Matrixpro ist offline E-Mail an Matrixpro senden Beiträge von Matrixpro suchen Nehmen Sie Matrixpro in Ihre Freundesliste auf
toto
Steuerzahler


Dabei seit: 06.07.2005
Beiträge: 156


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja und das alles ohne probläme

__________________
MfG
ToTo
toto ist offline E-Mail an toto senden Homepage von toto Beiträge von toto suchen Nehmen Sie toto in Ihre Freundesliste auf
Matrixpro
Milupa-Fan


images/avatars/avatar-759.jpg


Dabei seit: 16.04.2006
Beiträge: 607


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

geilomat smile cu
Matrixpro ist offline E-Mail an Matrixpro senden Beiträge von Matrixpro suchen Nehmen Sie Matrixpro in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Opferlamm-Clan Board » Call of Duty: World at War » Call of Duty: World at War - Mapping » CoD5-Mapping-Tutorials » [Tutorial] Zerstörbare Fenster

Impressum ||Datenschutzerklärung

Forensoftware: Wbb - WoltLab GmbH || zum Archiv