undefined is not an object

Schulzi
Ich hab ein Problem, welches mich tierisch aufregt.
Ich wollte eine Tür erstellen, welche man auf und zu machen kann, aber dann kam mir beim testen dieser Error:
______________________________________________________________
******* script runtime error *******
undefined is not an object: (file 'maps/mp/mp_test2_doors.gsc', line 12)
door1_trig waittill ("trigger");
*
called from:
(file 'maps/mp/mp_test2_doors.gsc', line 3)
thread door1_rotate();
*
called from:
(file 'maps/mp/mp_test2.gsc', line 8)
maps\mp\mp_test2_doors::main();
*
started from:
(file 'maps/mp/mp_test2.gsc', line 1)
main()
*
************************************
writing to: C:\Program Files\Activision\Call of Duty 2\servercache.dat
Error during initialization:
script runtime error
(see console for details)
(file 'maps/mp/mp_test2.gsc', line 1)
______________________________________________________________
Ich hab als Trigger den "use_touch" genommen und dem folgende Daten gegeben:
key: targetname
value: door1_trigger

Hier mein 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:
main()
{
	thread door1_rotate();
}

door1_rotate()
{
door1 = getent ("door1", "targetname");
door1_trig = getent("door1_trigger", "targetname");
while (1)
{
door1_trig waittill ("trigger");
door1 rotateYaw (-90, 1.5, 0.7, 0.7);
door1 waittill ("rotatedone");
wait 3;
door1 rotateYaw (90, 1.5, 0.7, 0.7);
door1 waittill ("rotatedone");
}
}


Dieser wird natürlich von der Haupt GSC so aufgerufen:

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

code:
1:
2:
3:
4:
5:
6:
main()
{
	maps\mp\_load::main();
	maps\mp\mp_test2_doors::main();
}



Ich weiß erlich gesagt nicht, woran der Fehler liegt :/.
Entweder bin ich blind oder einfach nur zu blöd.

Kann mir da jemand bitte helfen?
bangingbernie
Ich hatte in meiner Map auch entsprechende Türen - finde aber leider das Skript im Moment nicht.

Schau mal in diesen Thread: Türen zum Öffnen per Script

Eins noch: Deine Tür geht nur einmal auf....

Was am Ende fehlt:

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

code:
1:
2:
3:
self thread door1_rotate();
return;
}



Edit: Rufe in Deiner main.gsc mal das Türenscript vor map\mp\_load::main(); auf.

Edit2: O.K., habe mein Script gefunden. Das weicht natürlich stark von Deinem Skript ab. Es handelt sich um zwei Türen in der Map, die sich automatisch wieder schließen und von beiden Seiten zu öffnen sind (mit Sound).

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:
main()
{
thread door1();
thread door2();
}

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 playsound ("dooropen");
door1 waittill ("rotatedone");
wait 5;
door1 rotateyaw (90,2);
door1 playsound ("doorclose");
wait 2;
door1 playsound ("doorend");
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 playsound ("dooropen");
door1 waittill ("rotatedone");
wait 5;



Und so wird das in der main.gsc aufgerufen:

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:
main()
{
	maps\mp\mat_dusk_doors::main();
	maps\mp\mat_dusk_barrelsnew::barrelInit();
	maps\mp\mat_dusk_respawner::main();
	maps\mp\mp_mat_dusk_final2_fx::main();
	maps\mp\mat_dusk_planes::main();
	maps\mp\_load::main();
	ambientPlay("ambient_mp_mat_dusk_final2");

	setExpFog(0.0002, 0.5, 0.5, 0.5, 0);

	game["allies"] = "british";
	game["axis"] = "german";
	game["attackers"] = "allies";
	game["defenders"] = "axis";
	game["british_soldiertype"] = "africa";
	game["german_soldiertype"] = "africa";

	setcvar("r_glowbloomintensity0","1");
	setcvar("r_glowbloomintensity1","1");
	setcvar("r_glowskybleedintensity0",".25");

usw.

}	
}

bangingbernie
Probiere es mal so:

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:
main()
{
	thread door1_rotate();
}

door1_rotate()
{
door1 = getent ("door1", "targetname");
door1_trigger = getent("door1_trigger", "targetname");
while (1)
{
door1_trigger waittill ("trigger");
door1 rotateYaw (-90, 1.5, 0.7, 0.7);
door1 waittill ("rotatedone");
wait 3;
door1 rotateYaw (90, 1.5, 0.7, 0.7);
door1 waittill ("rotatedone");
}
}
self thread door1_rotate(); 
return; 
} 

Schulzi
Danke erst mal für deine Hilfe.

Ich habe es gestern nochmal (genau wie oben) auf einer anderen Map gemacht, und da hat es komischer Weise funktioniert.
Und dein Skript funktioniert leider auch nicht mit dem "self thread...", auch als ich deinen Fehler korrigiert habe (eine Klammer zu viel) Augenzwinkern .
Schulzi
Hmm, komisch.
Hab es jetzt nochmal neu ausprobiert (nach meinem Weg) und es funktioniert jetzt.
Keine Ahnung was da los war, aber egal.
Das Problem taucht jetzt nicht mehr auf.

Trotzdem danke für deine Hilfe bangingbernie Augenzwinkern .