CCL_DESTROYER
So hier ist nun das angepasste script.
Hiermit lassen sich die türen beideitig öffnen und schliessen sich nichtmehr vom selben.
Wem das vorige sript gefallen hat der wird das hier lieben:
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
edit: wer ne erklärung will muss bis zu meinen ferien warten, jetzt bin ich mal froh dass es läuft^^
Verni@hter
also das Script sieht jetzt bei mir so aus es ist für 1 Tür:
main()
{
thread door();
}
door()
{
door = getent ("door","targetname");
doortrigger = getent ("door_trigger","targetname");
while (1)
{
doortrigger waittill ("trigger");
door rotateyaw (-90,2);
door waittill ("rotatedone");
wait 7;
door rotateyaw (90,2);
door waittill ("rotatedone");
}
}
So jetzt habe ich aber eine 2. Tür eingebaut und habe als Beispiel der 2. Tür folgende angaben gemacht
targetname: door1
targetname: door_trigger1
wie wird das dann im Script geschrieben wenn man 2 Türen hat??? Würde auch noch gerne einen Sound abspielen lassen wenn ich die Türen öffne und schließe wenn ich mir aber die Scripte von euch kopiere und einfüge und anpasse bekomme ich immer einen Scriptfehler.
Zordiac
main()
{
thread door();
thread door1();
}
door()
{
door = getent ("door","targetname");
doortrigger = getent ("door_trigger","targetname");
while (1)
{
doortrigger waittill ("trigger");
door rotateyaw (-90,2);
door waittill ("rotatedone");
wait 7;
door rotateyaw (90,2);
door waittill ("rotatedone");
}
self thread door();
return;
}
door1()
{
door = getent ("door1","targetname");
doortrigger = getent ("door_trigger1","targetname");
while (1)
{
doortrigger waittill ("trigger");
door rotateyaw (-90,2);
door waittill ("rotatedone");
wait 7;
door rotateyaw (90,2);
door waittill ("rotatedone");
}
self thread door1();
return;
}
Dieses ist wohl die einfachste Variante. Es gibt zwar noch andere Möglichkeiten, aber dieses sollte erstmal reichen.
PS: tippe die roten Zeilen in Dein script mit ein, dann lässt sich die Tür beliebig oft öffnen.
Verni@hter
Ist das nicht witzig ich habe es schon vorher mal so geschrieben wie du es hier rein gepostet hast hab es bestimmt 20 mal probiert aber nix ging dann nehme ich dein Script und es geht auch nit ich bin bald durchgedreht und dann hatte ich den Fehler gefunden es lang am Radianten ich hab statt "door_trigger1" das hier geschrieben "door_tigger1" es hat also einfach nur ein r beim targetnamen gefehlt was für Nerven so ein "r" kosten kann ist Unglaublich. Aber danke nochmal für das Script hat funktioniert es lag also nur am r.
Zordiac
Ja, dass passiert mir auch ab und zu mal.
Es ist wirklich wichtig die Schreibweise "genau" zu kontrollieren.
Verni@hter
Ich trau mich garnit zu fragen es gibt hier genug Scripte nur weiß ich nicht welches ich hier nehmen soll und zwar gibt es folgendes Problem:
das Beispiel:
Ich stehe "vor" dem Haus die Tür soll sich nun mit "F" nach
"innen" öffnen lassen und soll sich nach ein paar Sekunden wieder schliessen wenn ich jetzt wieder genau vor dieser Tür stehe aber diesmal von "innen" soll sich die Tür mit "F" nach "aussen" öffnen lassen und sich wieder von allein schließen.
Jetzt weiß ich aber nicht welche targetnamen ich auf welches Teil geben soll damit dies möglich ist.
In dem Fall von "1ner" Tür habe ich der Tür den targetnamen "door" gegeben als Auslöser habe ich mich für "trigger_use_touch" entschieden ihm habe ich den targetnamen "door_trigger" gegeben ich müsste doch eigentlich 2 Auslöser nehmen oder verstehe ich das falsch.
Ich hoffe das ich mein Problem richtig beschrieben habe und das mir einer helfen kann.
Zordiac
Türen zum Öffnen per Script
Schau Dir mal dieses Tut an da hat der DESTROYER was zu geschrieben. Das Script ist allerdings etwas aufwendig. Wenn Du viele Türen hast, dann lass sie doch lieber in eine Richtung aufgehen.
CCL_DESTROYER
ja, ist das system mit 2x trigger, du kannst auch das script nehmen mit den türen die sich nicht wieder von selbst, aber in beide richtungen schliessen/öffnen lassen, aber das ist noch kompilzierter,
allerdings solltest du dir die türen alle in einzlne .gsc's(die du wenn möglich noch in nen eigenen ordner packst) schreiben und bindest sie anschliessend alle in der haupt-gsc ein.
du musst auch für jede tür eine eigene variable nehmen(level.[türname]_open = false; )
wenn du nicht klar kommst kannst du ruhig nachfragen
bis dann
edit: wenn die türe sich öffnet aber in die falsche richtungen musst du einfach nur die trigger umstellen, geht schneller als jedesmal das script anzupassen
PaRa
vielen dank für das erweiterte script @Destroyer, werde das heute abend mal checken ob ich das gebacken bekomme...hehe
mensch was war das einfach mit dem alten radianten und dem door_rotate...und jetzt muss man alles scripten und dann noch jede türe einzeln....ohgottogottogott...hehe...werden wohl nur "spezial Türen" sein die sich öffnen lassen werden in manchen maps , statt jeder.....*schlurz*...dieser ganze variablen-salat ist echt fürn pöter...hehe...ich hatte erst vor sogar die fensterläden zum öffnen und schliessen zu machen, aber da wirst ja bekloppt bei....aber für so ne versteckte spezial-tür ist das schon klasse das es überhaupt möglich türen öffnen und schliessen zu lassen ist in diesem gottverdammten cod2...die hansen von IW haben es zumindest in keiner einzigen standard-map geschafft...Respekt...hehe
gruss
PaRa
CCL_DESTROYER
ich vermisse die door_rotate funktion auch-.-
hm ok man kann sagen es sei viel arbeit... ich habe ca 14 türen in meiner map, davon eine beidseitig und der rest einseitig.
ich wurde auch halb beklopt als zum schluss jede tür ne eigene fehlermeldung produziert hat, habe jedesmal ein _ vergessen, so konnte ich die 24 türen nochmal überarbeiten'^^
ist aber eigentlich ganz einfach man muss nur die türen machen, script copy+paste und nachher ein paar zahlen anpassen....
bis dann
Verni@hter
So ich habe jetzt das 2. Script genommen was auf der 1. Seite war das mit 2 triggern hab es endlich hinbekommen und so bleibt es jetzt auch bei den anderen Scripten blicke ich überhaupt nicht mehr durch und da es ja meine erste Map ist reicht das ja auch.
Man kann ja nit alles auf einmal wissen und kann es ja noch ausbauen bei den nächsten Projekten.
Wenn man hier zu oft in das Forum schaut sieht man immer wieder was neues und will es gleich ausprobieren, ich glaub da werd ich nie fertig ist aber nit bös gemeint ist echt das beste Forum zu Scripten.
EDIT: schönen Männertag noch!!!
langer79
Hallo Leutz
Ich bin´s mal wieder.
Habe noch ein kleines Problem mit einem Script.
Ich habe eine Tür die ich von innen mit einem Trigger use öffnen und schließen will, von aussen mit einem trigger damage
nur öffnen danach die Tür nur noch von innen schließen...
Habe mit dem Script von CCL_DESTROYER (das lange Script) schon lange rumprobiert. Es funktioniert alles nur wenn ich die Tür von aussen auf stoße und ich sie dann von innen wieder schließen möchte dreht sie sich in die falsche Richtung. Da blick ich einfach nicht so gut durch....
Könnte mir jemand ein paar Tipps geben.
Gruß Langer
CCL_DESTROYER
Dann poste uns mal was du so in deinem script hast, wir finden den fehler vielleicht.
hast bestimmt nur was mit ner variable falsch gemacht.
bis dann
langer79
Alles klar werde ich heute mittag mal rein setzten....
Habe dein Script genommen und meine trigger und targetname angepasst. Genau das mit den Variablen wird es sein das kapier ich noch nicht so richtig.
Habe es doch gefunden auf meinem Stick:
main()
{
thread door();
}
door()
{
level.door_open = false;
level.door_moving = false;
level.door_direction = false;
thread door_trigger();
thread door_damage_trigger();
}
door_trigger()
{
door = getent ("door","targetname");
door_trigger = getent ("door_trigger","targetname");
while (1)
{
door_trigger waittill ("trigger");
if (level.door_open == false)
{
if(level.door_moving == false)
{
level.door_moving = true;
level.door_open = true;
level.door_dierection = true;
door rotateyaw (-90,2);
door waittill ("rotatedone");
level.door_moving = false;
thread door_trigger();
return;
}
else if (level.door_moving == true)
{
thread door_trigger();
return;
}
}
else if(level.door_open == true)
{
if(level.door_moving == false)
{
if (level.door_dierection == true)
{
level.door_moving = true;
door rotateyaw (90,2);
door waittill ("rotatedone");
level.door_open = false;
level.door_moving = false;
thread door_trigger();
return;
}
else if (level.door_dierection == false)
{
level.door_moving = true;
door rotateyaw (-90,2);
door waittill ("rotatedone");
level.door_open = false;
level.door_moving = false;
thread door_trigger();
return;
}
}
else if (level.door_moving == true)
{
thread door_trigger();
return;
}
}
}
}
door_damage_trigger()
{
door = getent ("door","targetname");
door_damage_trigger = getent ("door_damage_trigger","targetname");
while (1)
{
door_damage_trigger waittill ("trigger");
if (level.door_open == false)
{
if(level.door_moving == false)
{
level.door_moving = true;
level.door_open = true;
level.door_dierection = false;
door rotateyaw (90,2);
door waittill ("rotatedone");
leve.door_moving = false;
thread door_damage_trigger();
return;
}
else if (level.door1_moving == true)
{
thread door_damage_trigger();
return;
}
}
else if(level.door_open == true)
{
if(level.door_moving == false)
{
if (level.door_dierection == true)
{
level.door_moving = true;
door rotateyaw (-90,2);
door waittill ("rotatedone");
level.door_open = false;
level.door_moving = false;
thread door_trigger();
return;
}
thread door_damage_trigger();
return;
}
}
}
}
Der erste Teil des scripts funktioniert einwandfrei also der thread dorr_trigger
Der thread door_damage_trigger da stimmt was nicht
Wäre super wenn ihr da drüber schauen könntet.
Gruß Langer
ralf221
hi!
also ich bräuchte mal bitte wegen einer schiebe tür eine wenig hilfe mit rotateroll und rotatepitch wird es leider keine was muss da an der stelle rein?braucht man oben und unten eine origin dafür?gruss ralf
langer79
Hey Ralf
Habe bei mir auch eine Schiebetür aber nur von einer Seite zu öffnen deshalb nicht so schwer: Das movey ist die Richtung, also geht auch movez
main()
{
thread door_s();
}
door_s()
{
door_s = getent ("door_s","targetname");
door_s_trigger = getent ("door_s_trigger","targetname");
while (1)
{
door_s_trigger waittill ("trigger");
door_s movey (60, 1.5, 0, 0.5);
door_s waittill ("movedone");
{
door_s_trigger waittill ("trigger");
door_s movey (-60, 1.5, 0, 0.5);
door_s waittill ("movedone");
}
}
self thread door_s();
return;
}
Gruß Langer
ralf221
hi langer!
funtzt bestens!ich habe den auto trigger genommen!bin immer genervt von dem f drücken!danke!gruss ralf
das ganze für rauf und runter?
langer79
Das ganze für rauf und runter?
Musst du eigentlich nur movey mit movez auswechseln und die koordinaten anpassen.
ralf221
irgendwie sollte ich mal alles lesen hattest du ja vorhin schon geschrieben.naja ist das alter!

Danke!!!gruss ralf
langer79
Hey ralf kein Thema kommt vor
Das erinnert immer an einen Spruch:
Wer lesen kann ist klar im Vorteil
Gruß Langer