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 2 » Call of Duty 2 - Mapping » CoD2-Mapping-Tutorials » Türen zum Öffnen per Script » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Thema ist geschlossen
Zum Ende der Seite springen Türen zum Öffnen per Script
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
yoda yoda ist männlich
Böser Admin

images/avatars/avatar-12.jpg


Dabei seit: 21.01.2004
Beiträge: 12.269


Text Türen zum Öffnen per Script Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von CCL_DESTROYER

Hallihallo,

hier ist dann jetzt das gewünschte Tutorial + Beispielmap

Sorry, dass es etwas länger gedauert hat, aber mein PC hat gesponnen -> Neuinstallation -.-

Wie auch immer, hier ist es:

---

Öffenbare Türen

Zuerst machen wir mal eine Tür:
Dazu ziehen wir einfach einen Brush und packen eine Türen-Textur drauf (die Seiten mit ner Holz-Textur verzieren).

Dann brauchen wir eine Achse, also die "Scharniere" in der die Tür sich nachher öffnen soll - dazu ziehen wir wieder einmal einen Brush, der ungefähr 4x4x[Höhe der Tür] groß ist und packen die Textur "Origin" drauf (ist bei den Tools-Texturen zu finden).

Jetzt markieren wir den "Origin" und den Tür-Brush, Rechte Maustaste in der 2d-Ansicht und dann script -> brushmodel.

Nun drücken wir bei markiertem Brushmodel die Taste N und geben bei Key ->"targetname" und bei Value "door" (der ist frei bestimmbar, muss aber nachher in der gsc richtig angepasst werden) ein.

Als nächstes brauchen wir noch den Auslöser, hierzu stehen uns mehrere Varianten zur Verfügung:

-trigger_use (Tür mit "F" ( = Benutzen) öffnen)

-trigger_use_touch (sollte eigentlich beim Berühren öffnen - hat bei mir aber nicht gefunzt, dafür habe ich den trigger_radius genommen, ist zwar rund, erfüllt aber seine Arbeit genau so gut)

-trigger_radius (gleiche Funktion, die use_touch haben sollte)

-trigger_damage (Tür öffnet sich beim Drauf-Schiessen)

Nun kann man zwei "trigger" benutzen, um die Tür in beide Richtungen zu öffnen, oder aber nur einen, um die Tür nur in eine Richtung öffenbar zu machen.

Ihm/ihnen geben wir den "targetname" "door_trigger" (oder "door_trigger_left" und "door_trigger_right" wenn wir zwei benutzen).

Dann gehts an's Script:

in der mp_meinemap.gsc fügen wir folgendes ein:

Zitat:

maps\mp\mp_meinemap_door::main();

(muss an den Map-Namen angepasst werden)

Dann erstellen wir eine neue [color=darkblue]gsc und nennen sie mp_meinemap_door.gsc

Hierein kommt das eigentliche Script:

Beispiel 1 x "trigger":

Zitat:


main()
{
thread door();
}

door()
{
door = getent ("door","targetname");
doortrigger = getent ("door_trigger","targetname");//wir sagen dem script die namen der tür und des/der trigger
while (1) //begin der funktion
{
doortrigger waittill ("trigger");//wenn der trigger ausglöst wird...
door rotateyaw (90,2);//...dreht sich die tür um 90° in 2 sekunden
door waittill ("rotatedone");//trigger wartet bis die bewegung fertig ist
wait 5;//die tür bleibt 5 sekunden lang geöffnet
door rotateyaw (-90,2);//wir bewegen die tür wieder in die ausgangsposition zurück(-90°)
door waittill ("rotatedone");//trigger wartet bis die bewegung zu ende ist und ist danach wieder funktionstüchtig
}
self thread door();
return;
}


---


Beispiel 2 x "trigger":

Zitat:


main()
{
thread door1();
}

door1()
{
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
}

door1_trigger_right()
{
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("door1_trigger_right","targetname");
while (1)
{
door1_trigger_right waittill ("trigger");
if (level.door1_open == true)
{
thread door1_trigger_left();
return;
}
else if (level.door1_open == false)
{
level.door1_open = true;
door1 rotateyaw (-90,2);
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw (90,2);
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_right();
thread door1_trigger_left();
return;
}
}
}

door1_trigger_left()
{
door1 = getent ("door1","targetname");
door1_trigger_left = getent ("door1_trigger_left","targetname");
while (1)
{
door1_trigger_left waittill ("trigger");
if (level.door1_open == true)
{
thread door1_trigger_right();
return;
}
else if (level.door1_open == false)
{
level.door1_open = true;
door1 rotateyaw (90,2);
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw (-90,2);
door1 waittill ("rotatedone");
level.door1_open = false;
thread door1_trigger_left();
thread door1_trigger_right();
return;
}
}
}


---

Das mit den zwei "triggern" funktioniert genau gleich wie mit einem - nur dass wir ihm sagen, dass, wenn der 1."trigger" betätigt wird, die Tür zuerst nach rechts und dann nach links bewegt wird und bei dem 2. "trigger" in der umgekehrten Reihenfolge.

So, das war's dann auch schon, ich hoffe, ich hab mich klar genug ausgedrückt, fall's nicht, könnt ihr euch die testmap mal anschauen (auch wenn ihr alles kapiert habt schadet´s nicht Augenzwinkern )

Download:
http://ccldestroyer.cc.funpic.de/cod2-do...l_reloaded2.zip

Alternativ:
Türenbeispiel.zip


__________________
"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...
yoda ist offline Homepage von yoda Beiträge von yoda suchen Nehmen Sie yoda in Ihre Freundesliste auf
yoda yoda ist männlich
Böser Admin

images/avatars/avatar-12.jpg


Dabei seit: 21.01.2004
Beiträge: 12.269


Ergänzung: Türen zum Öffnen per Script Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von Zordiac

Als Ergänzung, wenn man nicht möchte, dass die Türen sich nach 5 sec. automatisch schließen (was sie in Echt ja auch nicht machen), geht nocht folgendes:

Zitat:


door()
{
door = getent ("door","targetname");
doortrig = getent ("doortrig","targetname");
while (1)
{
doortrigger waittill ("trigger");
door rotateyaw (90,1.3);
door playsound ("dooropen");
door waittill ("rotatedone");
{
doortrigger waittill ("trigger");
door rotateyaw (-90,1.3);
door playsound ("doorclose");
door waittill ("rotatedone");
}
}
self thread door();
return;
}


__________________
"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...
yoda ist offline Homepage von yoda Beiträge von yoda suchen Nehmen Sie yoda in Ihre Freundesliste auf
yoda yoda ist männlich
Böser Admin

images/avatars/avatar-12.jpg


Dabei seit: 21.01.2004
Beiträge: 12.269


Ergänzung: Türen zum Öffnen per Script Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von CCL_DESTROYER

So, hier ist nun das angepasste Script.

Hiermit lassen sich die Türen beidseitig öffnen und schliessen sich nichtmehr von selber.
Wem das vorige Script gefallen hat, der wird das hier lieben:

Zitat:

main()
{
thread door1();
}

door1()
{
level.door1_open = false;
level.door1_moving = false;
level.door1_direction = false;
thread door1_trigger_right();
thread door1_trigger_left();
}

door1_trigger_right()
{
door1 = getent ("door1","targetname");
door1_trigger_right = getent ("door1_trigger_right","targetname");
while (1)
{
door1_trigger_right waittill ("trigger");
if (level.door1_open == false)
{
if(level.door1_moving == false)
{
level.door1_moving = true;
level.door1_open = true;
level.door1_dierection = true;
door1 rotateyaw (90,2);
door1 waittill ("rotatedone");
level.door1_moving = false;
thread door1_trigger_right();
return;
}
else if (level.door1_moving == true)
{
thread door1_trigger_right();
return;
}
}
else if(level.door1_open == true)
{
if(level.door1_moving == false)
{
if (level.door1_dierection == true)
{
level.door1_moving = true;
door1 rotateyaw (-90,2);
door1 waittill ("rotatedone");
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_right();
return;
}
else if (level.door1_dierection == false)
{
level.door1_moving = true;
door1 rotateyaw (90,2);
door1 waittill ("rotatedone");
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_right();
return;
}
}
else if (level.door1_moving == true)
{
thread door1_trigger_right();
return;
}
}
}
}

door1_trigger_left()
{
door1 = getent ("door1","targetname");
door1_trigger_left = getent ("door1_trigger_left","targetname");
while (1)
{
door1_trigger_left waittill ("trigger");
if (level.door1_open == false)
{
if(level.door1_moving == false)
{
level.door1_moving = true;
level.door1_open = true;
level.door1_dierection = false;
door1 rotateyaw (-90,2);
door1 waittill ("rotatedone");
level.door1_moving = false;
thread door1_trigger_left();
return;
}
else if (level.door1_moving == true)
{
thread door1_trigger_left();
return;
}
}
else if(level.door1_open == true)
{
if(level.door1_moving == false)
{
if (level.door1_dierection == true)
{
level.door1_moving = true;
door1 rotateyaw (-90,2);
door1 waittill ("rotatedone");
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_left();
return;
}
else if (level.door1_dierection == false)
{
level.door1_moving = true;
door1 rotateyaw (90,2);
door1 waittill ("rotatedone");
level.door1_open = false;
level.door1_moving = false;
thread door1_trigger_left();
return;
}
}
else if (level.door1_moving == true)
{
thread door1_trigger_left();
return;
}
}
}
}



---

Sollte man auch zum Tut hinzufügen
(Hiermit erledigt Augenzwinkern )

Edit:
Wer ´ne Erklärung will muss bis zu meinen Ferien warten, jetzt bin ich mal froh, dass es läuft^^


__________________
"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...
yoda ist offline Homepage von yoda Beiträge von yoda suchen Nehmen Sie yoda in Ihre Freundesliste auf
yoda yoda ist männlich
Böser Admin

images/avatars/avatar-12.jpg


Dabei seit: 21.01.2004
Beiträge: 12.269


Ergänzung: Türen zum Öffnen per Script Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bei Problemen und Fragen bitte in diesem Thread posten:

Türen, leidiges Thema

__________________
"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...
yoda ist offline Homepage von yoda Beiträge von yoda suchen Nehmen Sie yoda in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Thema ist geschlossen
Opferlamm-Clan Board » Call of Duty 2 » Call of Duty 2 - Mapping » CoD2-Mapping-Tutorials » Türen zum Öffnen per Script

Impressum ||Datenschutzerklärung

Forensoftware: Wbb - WoltLab GmbH || zum Archiv