Türen, leidiges Thema

Sorkan
Ich hab noch ne Frage. Ich weiß jeder sagt, man macht die Tür gleich bei der Mauererstellung, is einfacher. Aber ich habs nun mal nich so gemacht, sondern ausgeschnitten. Dummerweise kann ich jetzt nicht durch diesen entstandenen Freiraum gehen? Wenn ich das mit einer Tür für 2 Räume mache, klappts. Sobald ich aber eine Tür schnippel, die es mir erlauben soll ins Freie auf den Hof zu gehen, gehts net. Muss ich da noch was anderes einstellen, wie: Lass diesen Durchgang für den Spieler passierbar sein. Wenn ja, wo mach ich des?

Thx
[GoD]EVIL
würd mich auch interessieren.

BTW: Wie hast du das mit dem auschneiden gemacht ?
CCL_DESTROYER
die tür muss schon irgendwie geöffnet sein damit man durchgehen kann, damit der spieler sie öffnen kann geht nur per script...
Private Grob
Eigentlich war ich überzeugt im neuen Radianten kann man nicht mehr "schnippeln" sprich GSC Subract ist nicht mehr dabei. Wie auch immer, mach so etwas nicht, bau Türen, Rahmen und die Durchgänge immer von Hand, wie du siehst führt eine andere Lösung nur zu Problemen.

Grüße
Private Grob
(Micka)
Sorkan
@ Godevil

Hab mir bei modsonline.com nen Videotutorial für Cod1 runtergeladen. Da wird gezeigt, wie man es macht. Der schnippelt nämlich auch Türen und Fenster aus. Aber er entfernt sie nicht und benutzt sie auch nicht als Durchgang. Werd wohl auf Private hören müssen. Augenzwinkern
CCL_DESTROYER
gut dass ich nicht ma weiß wo der button für csg subtract ist^^.
ihr wisst ja das ihr auch gebäube-prefabs habt, die könnt ihr dann in eure map einsetzen und braucht keine türen machen.
Ich persönlich benutze keine prefabs(ausser für sd-ziele und ctf-flaggen), aber für anfänger sehr nützlich um sich den aufbau der gebäude anzusehen.
Ihr könnt die prefabs aber nicht sofort editieren, sondern müsst den prefab zuerst selektieren und dann rechtsklick in der 2D-Ansicht und dann auf enter prefab klicken.
edit: um einen prefab einzusetzen müsst ihr rechtsklick in der 2D-Ansicht machen und dann unter misc->prefab, dort findet ihr einen button mit dem sich ein fenster öffnet in dem ihr ein prefab aussuchen könnt.
[GoD]EVIL
@Sorkan: Jau, werd mich auch dann lieber an das halten, was Private Grob sagte - danke für die rückinfo Augenzwinkern

@Destroyer: Jau, hab mir auch schon ein paar Prefabs mal angeschaut - kann man sich ne menge abkucken. Augenzwinkern
ralf221
HI CCL DESTROYER!

Würdest Du btte einem unwissenden sagen wie das mit dem Script für die Turen funtzt?Mit Trigger damit ab einer bestimmten Entfernung die Tür alleine aufgeht!Danke!Gruss Ralf
CCL_DESTROYER
Ich kann morgen(eigentlich ja schon heute) ein kleines tutorial schreiben wenn ihr wollt(so gegen 17/18 uhr).
jetzt bin ich zu müde.
bis dann
edit: wenn private grob bis dahin mal zeit hat kann er es ja schon mal kurz erklären
ralf221
Hi ccl destroyer!
sooooooooo laaaaaaange warten!! grosses Grinsen geschockt
na gut! Augen rollen

mal im ernst danke!wäre nett! gruss ralf
CCL_DESTROYER
Hallihallo,
hier ist dann jetzt das gewünschte tut+beispielmap
sorry dass es etwas lnger gedauert hat aber mein pc hat gesponnen-> neuinstallation -.-
wie auch immer hier ist es:

Öffenbare Türen.
zuerst machen wir mal ne Tür, dazu ziehn wir einfach nen brush und packen ne Türen texture drauf(die seiten mit ner holztexture verzieren).
dann brauchen wir ne achse, also die "Schaniere" in der die tür sich nachher öffnen soll, dazu ziehn wir wieder einmacl einen brush der ungefähr 4x4x[höhe der tür] hat und packen die Texture "Origin" drauf(ist bei den tools-texturen zu finden).
jetzt markieren wir den origin und den türbrush, RMT in der 2d-Ansicht und dann script->brushmodel.
dann drücken wir bei markiertem brushmodel N und geben bei key "Targetname" und bei value "door"(der ist bfrei bestimmbar muss aber nachher in der gsc richtig angepasst werden)ein.
dann brauchen wir noch den auslöser, hierzu stehen uns mehrer varianten zur verfügung:
-trigger_use (tür mit "F" öffnen)
-trigger_use_touch (sollte eigentlich beim behrühren öffnen hat bei mir aber nicht gefuntzt, dafür habe ich den triger_radius genommen, ist zwar rund erfüllt aber seine arbeit genau so gut)
-trigger_radius(gleiche funktion wie use_toucj haben sollte)
-trigger_damage(tür öffnet sich bei drauf schiessen)

Nun kann man 2 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 2 benutzen)

dann gehts an's script:
in der mp_meinemap.gsc fügen wir folgendes bei

Zitat:

maps\mp\mp_meinemap_door::main();
(muss an den mapnamen angepasst werden)

dann erstellen wir eine neue gsc und nennen sie mp_meinemap_door.gsc
hierein kommt das eigentliche script:
-beispiel 1xtrigger:

Zitat:


main()
{
thread door();
}

door()
{
door = getent ("door","targetname");
doortrigger = getent ("doortrigger","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
}
}

-beispiel 2x trigger:

Zitat:

geändert siehe tutorial

das mit den 2 triggern funtzt 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, hoffe ich hab mich klar genug ausgedrückt, fall's nicht könnt ihr euch die testmap mal anschaun(auch wenn ihr alles kapiert habt schadets nichtAugenzwinkern )
zum tut
ralf221
hi!
danke!gruss ralf Gute Nacht!
Zordiac

Zitat:


main()
{
thread door();
}

door()
{
door = getent ("door","targetname");
doortrigger = getent ("doortrigger","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
}
}


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:


main()
{
thread door();
}

door()
{
door = getent ("door","targetname");
doortrigger = getent ("doortrigger","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;
}
}
yoda
Thx, hab das mal dem Tutorial hinzugefügt:
Türen zum Öffnen per Script
Zordiac
Sorry, es hat sich ein Fehler eingeschlichen. Es muss heißen:

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;
}
yoda
Dann schau mal bitte, ob es so richtig ist:
Türen zum Öffnen per Script
Zordiac
die letzte Klammer "}" muß noch weg aber sonst i.O..

Ich finde es nur wichtig, dass die Scripts auch stimmen. Sonst kommen nur unnötige Fragen auf, wenn es jemand abschreibt und dann Fehlermeldungen bekommt.

und oben hab ich einmal doortrig anstatt doortrigger geschrieben.
ralf221
hi!also ich kämpfe mit den tür script!danke nochmal für das tut!aber ich kriege prinzipiell ne fehlermeldung wegen meiner tür!

mal die ganze gsc

main()
{
thread door_auto();
thread tür1();
}

door_auto()
{
door_auto = getent ("door_auto","targetname");
door_auto_trigger = getent ("door_auto_trigger","targetname");
while (1)
{
door_auto_trigger waittill ("trigger");
door_auto rotateyaw (90,2);
door_auto waittill ("rotatedone");
wait 5;
door_auto rotateyaw (-90,2);
door_auto waittill ("rotatedone");
}
}

thread tür1()
{
tür1 = getent ("tür1","targetname");
tür1_trigger= getent ("tür1_trigger",targetname");
wihle(1)
{
tür1_trigger waittill ("trigger");
tür1 rotateyaw (90,2);
tür1 waittill ("rotatedone");
wait2;
tür1 rotateyaw (-90,2);
tür1 waittill ("rotatedone);
}
}


wäre nett wenn mir jemand sagen was falsch ist!das 1.ist das orginal von ccl!danke gruss ralf
Zordiac
Was für eine Fehlermeldung bekommst Du denn?

PS: beim Scripten nie Umlaute benutzen wie ü,ä,ö, usw.

COD2 könnte damit Probleme haben.

Also schreib mal Tuer und nicht Tür. Muss natürlich auch in der Map geändert werden.
CCL_DESTROYER
vielleicht nen targetname vergessen bei ner tuer, dann gibts auch ne fehlermeldung á la "undefined is not an object" oder so...
der fehler muss nicht immer im script liegen, das mit den umlauten könnte es aber auch sein

@Zordiac:
gute regänzung, hatte nicht mal daran gedacht.(meine variante kommt mit der in uo gleich, ich kapier eigentlich nichtmal warum iw die fertige funktion rausgenommen haben)

p.s. wenn du die variante von zordiac benutzt brauchst du auch die sounds oder du löschst sie....
edit: hab noch nen fehlr gefunden : es heist while und nicht wihle (->tür1);-)