Marvin
Turnbeutelvergesser
Dabei seit: 08.02.2009
Beiträge: 455
|
|
[Tutorial] Drehtür einbauen |
|
Habe heute herausgefunden wie man eine Drehtür in seine Map einbaut.
Es funktioniert fast genauso wie eine Normale Tür.
Nachteile: Es dreht sich nur wenn ein Player im Trigger steht.
Anmerkung von steinacker:
Original von steinacker
wenn die türe sich ständig drehen soll, wie das bei manchen kaufhäusern usw. der fall ist, dann kannst du auch das script vom ventilator dafür nehmen
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
main()
{
fan1 = getEnt( "door1" , "targetname" ); //türe1
fan2 = getEnt( "door2" , "targetname" ); //türe2
while (1)
{
fan1 rotateyaw( 360, 5, 0, 0 );
fan2 rotateyaw( 360, 5, 0, 0 );
wait 4.9;
}
}
|
|
den trigger zum auslösen lässt du weg (wird nicht benötigt) und der türe gibst du den targetname door1
2. türe: door2
3. türe: door3
usw. (script dann jeweils erweitern)
Legen wir mal los.
Schritt 1:
Macht eine Neue Map und baut eine Drehtür mit Vier Blättern. Macht sie Breit genug damit der Player dort reinpasst.
Das könnte dann in etwa so aussehen. Die Drehtür habe ich rot markiert:
(klick mich)
Lasse alle Teile deiner Tür markiert und mache einen rechtsklick ins 2d Fenster.
Nun wählst du script --> brushmodel. Wähle die Tür mit ESC ab und baue einen großen Brush um die Drehtür.
Mache einen rechtsklick in die 2d Ansicht und wähle trigger --> multiple; Nun wird der Brush die Trigger-Textur annehmen.
Öffne das entity Menü mit der Taste "N" und vergib diesen Wert:
Key: targetname
Value: activator
Nun wählst du zu erst deinen Trigger aus und dann ein Teil von deiner Tür. Drücke die Taste "W" und die
gesammte Tür wird ausgewählt. Sie ist nun mit deinem Trigger verknüpft. Das ganze sollte dann ungefähr so aussehen:
(klick mich)
Verbindung und Eintrag sind rot gekennzeichnet.
Speichert die Map im Ordner: cod4mod/map_sorce/Prefabs/misc_models unter dem Namen dreh_tuer ab.
Schritt 2:
Öffne deine Map und mache einen rechtsklick in der 2d Ansicht wo die Drehtür hin soll.
Nun wählst du misc --> prefab und gehst in den Ordner misc_models. Gebt in der Suchleiste ein: dreh_tuer.map und drücke auf öffnen.
Nun sollte die Tür erscheinen. Ziehe sie an die richtige Stelle und speichere deine Map.
Nun zum scriptteil. Erzeuge im Ordner cod4mod/raw/maps/mp ein neues Textdokument. Nenn es dann. _dreh_tuer.gsc;
Öffne die _dreh_tuer.gsc mit dem Editor und füge das _doorscript hier ein. Ich habe noch einiges abgeändert sodass
es sich an die Drehtür anpasst:
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:
|
main(){
doortriggers = getentarray("activator","targetname");
for(i = 0; i < doortriggers.size; i++)
doortriggers[i] thread door_think();
}
door_think(){
self.doormoving = false;
self.doorclosed = true;
self.doormodel = getent(self.target, "targetname");
while (1){
self waittill("trigger");
if(!self.doormoving)
self thread door_move();
}
}
door_move(){
self.doormoving = true;
if(self.doorclosed){
self.doormodel rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = false;
}
else{
self.doormodel rotateyaw(-90,1,0.5,0.5);
self.doormodel waittill("rotatedone");
self.doorclosed = true;
}
self.doormoving = false;
}
|
|
Speichere es ab und füge diesen Eintrag in die Mapname.gsc ein:
maps\mp\_dreh_tuer::main();
Und zwar über der Zeile:
maps\mp\_load::main();
Das ganze sollte dann ungefähr so aussehen:
main()
{
maps\mp\_dreh_tuer::main();
maps\mp\_load::main();
ambientPlay("ambient_backlot_ext");
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "allies";
game["defenders"] = "axis";
game["allies_soldiertype"] = "urban";
game["axis_soldiertype"] = "woodland";
setdvar( "r_specularcolorscale", "1" );
setdvar("r_glowbloomintensity0",".25");
setdvar("r_glowbloomintensity1",".25");
setdvar("r_glowskybleedintensity0",".3");
setdvar("compassmaxrange","1800");
}
Gehe nun auf Compile Tools/ Level Compiling wähle deine Map und mache Update Zone File. Trage das auf der rechten Seite ein:
rawfile,maps/mp_dreh_tuer.gsc
Drücke unten auf save und führe diese Schritte aus:
"Compile BSP" , "Build Fast File" und "Run selected Map"
Fertig. Die Drehtür sollte sich drehen
Viel Spaß damit, wünscht euch: Marvin
__________________ Wenn ihr Lust habt schaut mal auf meinem YouTube Channel vorbei, dort werden vorallem Gaming Videos hochgeladen:
http://www.youtube.com/user/PackyGames?feature=mhee
Ich freue mich auf euere Kommentare und / oder Feedback.
Wenns euch gefällt lasst ein Abo da
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Marvin: 25.03.2009 18:01.
|
|
|
|
|
steinacker
Milupa-Fan
Dabei seit: 13.03.2008
Beiträge: 662
|
|
wenn die türe sich ständig drehen soll, wie das bei manchen kaufhäusern usw. der fall ist, dann kannst du auch das script vom ventilator dafür nehmen
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
|
main()
{
fan1 = getEnt( "door1" , "targetname" ); //türe1
fan2 = getEnt( "door2" , "targetname" ); //türe2
while (1)
{
fan1 rotateyaw( 360, 5, 0, 0 );
fan2 rotateyaw( 360, 5, 0, 0 );
wait 4.9;
}
} |
|
den trigger zum auslösen lässt du weg (wird nicht benötigt) und der türe gibst du den targetname door1
2. türe: door2
3. türe: door3
usw. (script dann jeweils erweitern)
__________________ Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende
|
|
|
|
|
| |
| |
| |
|
Marvin
Turnbeutelvergesser
Dabei seit: 08.02.2009
Beiträge: 455
|
|
Danke, hab's jetzt dierekt in die mapname.gsc gemacht. Nun bin ich mir aber nicht sicher
ob das so richtig ist wenn ich zwei Drehtüren haben möchte:
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:
|
main()
{
maps\mp\_breakable_windows::main();
maps\mp\_move_sensor::main();
maps\mp\_rolldoor::main();
maps\mp\_leak::main();
maps\mp\mp_mfc_mastermap_01_door_02::main();
maps\mp\mp_mfc_mastermap_01_door_01::main();
maps\mp\mp_mfc_mastermap_01_fx::main();
maps\mp\_light_move::main();
maps\mp\_explosive_barrels::main();
maps\mp\_load::main();
ambientPlay("ambient_cargoshipmp_ext");
game["allies"] = "sas";
game["axis"] = "russian";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "urban";
game["axis_soldiertype"] = "woodland";
setdvar( "r_specularcolorscale", "1" );
setdvar("r_glowbloomintensity0",".25");
setdvar("r_glowbloomintensity1",".25");
setdvar("r_glowskybleedintensity0",".3");
setdvar("compassmaxrange","1800");
thread revolving_door();
}
revolving_door()
{
fan2 = getEnt( "door2" , "targetname" );
fan1 = getEnt( "door1" , "targetname" );
while (1)
{
fan2 rotateyaw( 360, 8, 0, 0 );
fan1 rotateyaw( 360, 8, 0, 0 );
wait 4.9;
}
}
|
|
Edit: Okay ist so richtig hat fnktioniert, aber habe was lustiges entdeckt: Bei der Drehtür für
den Ausgang habe ich eine Scheibe vergessen.
__________________ Wenn ihr Lust habt schaut mal auf meinem YouTube Channel vorbei, dort werden vorallem Gaming Videos hochgeladen:
http://www.youtube.com/user/PackyGames?feature=mhee
Ich freue mich auf euere Kommentare und / oder Feedback.
Wenns euch gefällt lasst ein Abo da
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Marvin: 25.03.2009 20:23.
|
|
|
|
|
Dr. jekyll
Weichei
Dabei seit: 07.03.2009
Beiträge: 8
|
|
hi,
ich habe schon alles versucht, aber ich krieg es trotzdem nicht hin!
ich habe das Tutorial so wie beschrieben befolgt, nur anstatt drehtuer habe ich revolving_door benutzt.
Nun kommt bei mir die Fehlermeldung:
Script runtime error
(see console for details*)
undefined is not an entity
Was mache is falsch oder habe ich vergessen?
ps: * wie kann ich die details sehen?
|
|
|
|
|
klinter
Ha Ho He Hertha BSC
Dabei seit: 27.06.2008
Beiträge: 235
|
|
wie kann ich die details sehen?
shift + ^ drücken
mfg klinter
|
|
|
|
|
Dr. jekyll
Weichei
Dabei seit: 07.03.2009
Beiträge: 8
|
|
ich habe diesen script hier benutzt und so umgeschrieben:
main()
{
fan1 = getEnt( "revolving_ door1" , "targetname" );
while (1)
{
fan1 rotateyaw( 360, 8, 0, 0 );
wait 4.9;
}
}
und denn trigger im radianten habe ich auch revolving_door1 genannt. oder muss ich das script_brushmodel auch revolving_door nennen?
|
|
|
|
|
Dr. jekyll
Weichei
Dabei seit: 07.03.2009
Beiträge: 8
|
|
Endlich. Es funktioniert auch bei mir. Ein Fehler war, dass ich noch den Trigger drinne hatte und der andere Fehler war, dass ich die Drehtür wie oben beschreiben, als Prefab gebaut habe. Ich habe einfach ohne das Prefab die Drehtuer eingesetzt.
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|