Frage zum Fahrstuhl

sefeschnut
hi,habe mir ein Fahrstuhl gebaut und auf der Platte vom Aufzug steht ein Truck ich möchte das der mit runter fährt.
Wie mache ich das verwirrt


siehe das kurze Video

klick
serthy
truck auswählen > RMT in 2D fenster > script > script_model
platte auswählen > RMT in 2D fenster > script > script_brushmodel
alles was sich bewegen soll auswählen > [N] > key:targetname value:fahrstuhl
sefeschnut
hm, irgendwas stimmt da nicht sobald ich f drücke stürzt das Spieil ab und es kommt diese Meldung

script runtime error *******
getent used with more than one entity: (file 'maps/mp/elevator.gsc', line 28)
elevatormodel = getent ("aufzug", "targetname");
*
called from:
(file 'maps/mp/elevator.gsc', line 22)
thread elevator_move();
*
started from:
(file 'maps/mp/elevator.gsc', line 20)
self waittill ("trigger");
*
************************************
dvar set com_errorTitle Fehler
dvar set com_errorMessage script runtime error
(see console for details)
getent used with more than one entity
dvar set ui_playerProfileCount 1

******* script runtime error *******
undefined is not an entity: (file 'maps/mp/elevator.gsc', line 35)
elevatormodel playsound ("elevator");
*
called from:
(file 'maps/mp/elevator.gsc', line 22)
thread elevator_move();
*
started from:
(file 'maps/mp/elevator.gsc', line 20)
self waittill ("trigger");
*
************************************

******* script runtime error *******
undefined is not an entity: (file 'maps/mp/elevator.gsc', line 37)
elevatormodel movez (-368,10);
*
called from:
(file 'maps/mp/elevator.gsc', line 22)
thread elevator_move();
*
started from:
(file 'maps/mp/elevator.gsc', line 20)
self waittill ("trigger");
*
************************************

******* script runtime error *******
undefined is not an object: (file 'maps/mp/elevator.gsc', line 38)
elevatormodel waittill ("movedone");
*
called from:
(file 'maps/mp/elevator.gsc', line 22)
thread elevator_move();
*
started from:
(file 'maps/mp/elevator.gsc', line 20)
self waittill ("trigger");
serthy
du hast ja jetzt mehr als ein einzelnes bauteil als fahrstuhl, nimm statt 'getent' 'getentArray'

dann fügst du darunter ein:

if( !isDefined( elevatormodel ) || !elevatormodel.size )
return;

so sollte es erstmal (hoffentlich) kein error geben

am besten du postest mal dein ganzes script hier
sefeschnut
hier ist es


main()
{
level.elevatorDown = true;
level.elevatorMoving = false;
thread elevator_start();
}

elevator_start()
{
elevator = getentarray ("aufzug_trigger","targetname");
if ( isdefined(elevator) )
for (i = 0; i < elevator.size; i++)
elevator[i] thread elevator_think();
}

elevator_think()
{
while (1)
{
self waittill ("trigger");
if (!level.elevatorMoving)
thread elevator_move();
}
}

elevator_move()
{
elevatormodel = getent ("aufzug", "targetname");
level.elevatorMoving = true;
speed = 10;
height = 1456;

if (level.elevatorDown) {

elevatormodel playsound ("elevator");

elevatormodel movez (-288,10);
elevatormodel waittill ("movedone");
level.elevatorDown = false;

}

else
{

elevatormodel playsound ("elevator");

elevatormodel movez (288,10);
elevatormodel waittill ("movedone");
level.elevatorDown = true;
}
level.elevatorMoving = false;
}
sefeschnut
So ich haben es jetzt hin bekommen das der Truck mit runter Fährt habe aber auch zugleich ein neues Problem.

Ich kann den Fahrstuhl nur von unten aktivieren also der Fahrstuhl ist oben und fährt dann nach unten aber nicht mehr hoch und von oben kann ich ihn auch nicht aktivieren verwirrt

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:
main() 
{ 
	level.elevatorDown = true; 
	level.elevatorMoving = false; 
	thread elevator_start(); 
} 

elevator_start() 
{ 
	elevator = getentarray ("elevator_trigger","targetname"); 
	if ( isdefined(elevator) ) 
	for (i = 0; i < elevator.size; i++) 
	elevator[i] thread elevator_think(); 
} 

elevator_think() 
{ 
	while (1) 
		{ 
		self waittill ("trigger"); 
		if (!level.elevatorMoving) 
		thread elevator_move(); 
		} 
} 

elevator_move() 
{ 
	elevatormodel = getent ("elevator","targetname"); 
	truckmodel = getent ("truckmodel","targetname");
	clipfortruck = getent ("clipfortruck","targetname"); 
	level.elevatorMoving = true; 
	speed = 10; 
	height = 272; 

	if (level.elevatorDown) { 

		elevatormodel playsound ("elevator"); 

		elevatormodel movez (height - (height * 2), speed); 
		truckmodel movez (height - (height * 2), speed); 
		clipfortruck  movez (height - (height * 2), speed); 
		elevatormodel waittill ("movedone"); 
		truckmodel waittill ("movedone"); 
		clipfortruck waittill ("movedone");  
		level.elevatorDown = false; 

		} 

	else 
		{ 

		elevatormodel playsound ("elevator"); 

		elevatormodel movez (height, speed); 
		truckmodel movez (height, speed); 
		clipfortruck movez (height, speed); 
		elevatormodel waittill ("movedone"); 
		truckmodel waittill ("movedone"); 
		clipfortruck waittill ("movedone"); 
		level.elevatorDown = true; 
		} 
	level.elevatorMoving = false; 
}



kann mir da einer weiter helfen weil vorher ging der Fahrstuhl ja nach oben und unten sieht man ja oben auf dem Video nur seit ich truckmodel und clipfortruck eingefügt habe nicht mehr verwirrt


merci
serthy
lösche die zeilen:

truckmodel waittill ("movedone");
clipfortruck waittill ("movedone");

jeweils 2x
sefeschnut
Endlich jetzt funktioniert es ,den Fehler wieso ich den Fahrstuhl nicht von oben aktivieren könnte war weil ich den trigger nicht hoch genug über der Platte hatte.(ich Hirn..lol)

Danke serthy
sefeschnut
Hi, ich habe wieder ne map angefangen und will da auch wieder ein Fahrstuhl mit Truck auf der Platte haben.
Habe mein script vom Fahrstuhl genommen was damals funkt. hatte habe alles so wie hier oben im Post gemacht und dennoch bekomme ich wieder die selbe Meldung wie vom ersten Post
:getent used with more than one entity: (file 'maps/mp/elevator.gsc', line 28
verwirrt verwirrt
Habe kein Plan warum das alte script jetzt nicht funktioniert.
serthy
Hey, ich denke Dein Fehler liegt daran, dass du mit getEnt() versuchst zB deinen Fahrstuhl anzusprechen, aber CoD2 findet mehrere Fahrstuhl-Objekte, nicht nur ein einzelnes

versuch es mal damit:

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:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
// Diese Datei (elevator.gsc) kommt in den maps\mp\gametypes-Ordner neben die mp_mapname.gsc
// Und wird in deiner mp_mapname.gsc main()-Funktion so aufgerufen:
// level thread maps\mp\gametypes\elevator::init();

init()
{
	// Beispiel 1: Mindestanforderungen
	setupElevator( "fahrstuhl_1" , "fahrstuhl_1_trig" , ( -1000 , 3424 , 63 ) , 5.5 );
	// Beispiel 2
	setupElevator( "fahrstuhl_2" , "fahrstuhl_2_trig" , ( -1000 , 3424 , 63 ) , 5.5 , 1.0 , 1.0 );
	// Beispiel 3
	setupElevator( "fahrstuhl_3" , "fahrstuhl_3_trig" , ( -1000 , 3424 , 63 ) , 5.5 , 2.0 , 2.0 , false );
}

setupElevator( elevatorName , triggerName , targetPosition , moveTime , accelTime , decelTime , moveTimeout , moveBack )
{
	// Ein paar Fehlermeldungen
	if( !isDefined( elevatorName ) )			return iPrintLn( "elevatorName undefined!" );
	else if( !isDefined( triggerName ) )		return iPrintLn( "triggerName undefined!" );
	else if( !isDefined( targetPosition ) )		return iPrintLn( "targetPosition undefined!" );
	else if( !isDefined( moveTime ) )			return iPrintLn( "moveTime undefined!" );

	// Ein paar Standardwerte
	if( !isDefined( accelTime ) )		accelTime = 0.0;		// Beschleunigungszeit
	if( !isDefined( decelTime ) )		decelTime = 0.0;		// Bremszeit
	if( !isDefined( moveTimeout ) )		moveTimeout = 0.0;		// Solange kann der Fahrstuhl dann nicht mehr bewegt werden
	if( !isDefined( moveBack ) )		moveBack = true;		// Faehrt alleine zurueck

	// Hier alle wichtigen Teile aus der Map fischen
	elevatorParts = [];
	triggerParts = [];

	ents = getEntArray();

	for( i = 0 ; i < ents.size ; i++ )
	{
		if( !isDefined( ents[i].targetname ) )
			continue;

		if( ents[i].targetname == elevatorName )
			elevatorParts[elevatorParts.size] = ents[i];
		else if( ents[i].targetname == triggerName )
			triggerParts[triggerParts.size] = ents[i];
	}

	// Wenn etwas fehlt -> Fehler
	if( !elevatorParts.size )		return iPrintLn( "elevator " + elevatorName + " not found!" );
	else if( triggerParts.size )	return iPrintLn( "trigger " + triggerName + " not found!" );

	for( i = 0 ; i < triggerParts.size ; i++ )
	{
		triggerParts[i] thread waitForActivation( elevatorName );
	}

	for( i = 0 ; i < elevatorParts.size ; i++ )
	{
		elevatorParts[i] thread waitForTrigger( elevatorName , moveTime , accelTime , decelTime , moveTimeout , moveBack );
	}
}

// Wartet auf Spieler
waitForActivation( elevatorName )
{
	while( isDefined( self ) )
	{
		self waittill( "trigger" , player );

		level notify( elevatorName );
	}
}

// Wartet auf Trigger
waitForTrigger( elevatorName , moveTime , accelTime , decelTime , moveTimeout , moveBack )
{
	startPos = self.origin;

	while( isDefined( self ) )
	{
		level waittill( elevatorName );

		self moveTo( targetPosition , moveTime , accelTime , decelTime );

		wait( moveTime + moveTimeout );

		if( !moveBack )
			level waittill( elevatorName );

		self moveTo( targetPosition , moveTime , accelTime , decelTime );

		wait( moveTime + moveTimeout );
	}
}



ich hoffe es klappt, habe das eben mit einem Netbook aus einem Fernreisebus geseschrieben, die haben sogar Wlan drin, ich bin immer wieder begeistert^^
sefeschnut
Danke Serthy für deine mühe aber irgendwie haut das nicht hin bekomme immer script Fehler.
Vielleicht habe ich auch ein Fehler gemacht aber ich verstehe nicht warum das alte script jetzt nicht mehr funk. bei der letzten map hat es mit dem Fahrstuhl und dem truck super funk. mit dem Hoch und runter fahren. verwirrt
sefeschnut
So jetzt funk, der Fahrstuhl mit dem Truck wieder

Habe dem Truck folgendes zugeordnet

key:targetname
value:truckmodel
und
key:target
value:elevator

und dem Clip folgendes

key:targetname
value:clipfortruck
und
key:target
value:elevator

nur der playsound ist nicht zuhören obwohl ich den sound im sound/misc Ordner habe sowie in der soundaliases csv :
elevator,,misc/elevator.mp3,0.5,,,,,,3000,voice,streamed,,,,mp_oran

man warum ist das immer so schwierig die Geburt
Hippie

Zitat:

man warum ist das immer so schwierig die Geburt

Na einfach kann Jeder Augenzwinkern
sefeschnut
Hi,habe jetzt noch ein weiteren Aufzug eingebaut und auch wieder ein Problem wenn der eine runter fährt ,fährt der andere nach oben verwirrt verwirrt

Video hier
und warum ist beim Flugzeug der playsound zuhören und beim Truck nicht


Das script

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:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
main() 
{ 
	level.elevatorDown = true; 
	level.elevatorMoving = false; 
	thread elevator_start(); 
	thread elevator1_start();
} 

elevator_start() 
{ 
	elevator = getentarray ("elevator_trigger","targetname"); 
	if ( isdefined(elevator) ) 
	for (i = 0; i < elevator.size; i++) 
	elevator[i] thread elevator_think(); 
} 

elevator_think() 
{ 
	while (1) 
		{ 
		self waittill ("trigger"); 
		if (!level.elevatorMoving) 
		thread elevator_move(); 
		} 
} 

elevator_move() 
{ 
	elevatormodel = getent ("elevator","targetname"); 
	truckmodel = getent ("truckmodel","targetname");  
	clipfortruck = getent ("clipfortruck","targetname");
	level.elevatorMoving = true; 
	speed = 10; 
	height = 280; 

	if (level.elevatorDown) { 

		elevatormodel playsound ("elevator"); 
		wait (1);
		elevatormodel movez (height - (height * 2), speed); 
		truckmodel movez (height - (height * 2), speed); 
		clipfortruck movez (height - (height * 2), speed);
		elevatormodel waittill ("movedone");  
		level.elevatorDown = false; 

		} 

	else 
		{ 

		elevatormodel playsound ("elevator"); 
		wait (1);
		elevatormodel movez (height, speed); 
		truckmodel movez (height, speed); 
		clipfortruck movez (height, speed);
		elevatormodel waittill ("movedone");  
		level.elevatorDown = true; 
		} 
	level.elevatorMoving = false; 
} 

elevator1_start() 

{ 
	elevator1 = getentarray ("elevator1_trigger","targetname"); 
	if ( isdefined(elevator1) ) 
	for (i = 0; i < elevator1.size; i++) 
	elevator1[i] thread elevator1_think(); 
} 

elevator1_think() 
{ 
	while (1) 
		{ 
		self waittill ("trigger"); 
		if (!level.elevator1Moving) 
		thread elevator1_move(); 
		} 
} 

elevator1_move() 
{ 
	elevatormodel = getent ("elevator1","targetname"); 
	planemodel = getent ("planemodel","targetname");  
	//clipfortruck = getent ("clipfortruck","targetname");
	level.elevator1Moving = true; 
	speed = 10; 
	height = 280; 

	if (level.elevator1Down) { 

		elevatormodel playsound ("elevator"); 
		wait (1);
		elevatormodel movez (height - (height * 2), speed); 
		planemodel movez (height - (height * 2), speed); 
		//clipfortruck movez (height - (height * 2), speed);
		elevatormodel waittill ("movedone");   
		level.elevator1Down = false; 

		} 

	else 
		{ 

		elevatormodel playsound ("elevator"); 
		wait (1);
		elevatormodel movez (height, speed); 
		planemodel movez (height, speed); 
		//clipfortruck movez (height, speed);
		elevatormodel waittill ("movedone");  
		level.elevator1Down = true; 
		} 
	level.elevator1Moving = false; 
}



Das Script hier funktioniert jetzt Danke Serthy



--- Edit by Nightwing: Zum wiederholten Mal einen Code Tag eingefügt ---
serthy
Deine 2 verschiedenen Fahrstühle (und Trigger) dürfen NICHT die identische targetname's haben.
Das Problem bei deinem Script ist, das es außerdem globale Variablen verwendet (level.elevator), die von beiden Fahrstühlen verwendet werden.
Du könntest um es ganz einfach zu amchen das komplette script kopieren und alle level.elevator zu level.elevator2 umbenennen, vll reicht das ja auch schon aus.

Das mit den Sounds hab ich auch noch nicht komplett kapiert, hab ich auch immer nur durch probieren angepasst bis es irgendwann klappte..

Wenn ich hier Code-Tags einfüge klicke ich auf das Symbol (glaube ein #) und dann öffnet sich eine kleine Dialogbox.
Da einfach ein Leerzeichen einfügen und OK klicken. Dann im Editierfeld zwischen den [C0DE][/C0DE] feldern das Leerzeichen löschen und dein code einfügen Augenzwinkern
sefeschnut
Danke Serthy ,du hattest mal wieder Recht habe nach jedem elevator ne 1 = elevator1 gesetzt Funktioniert jetzt wunderbar Augenzwinkern

siehe Script oben
Danke auch für die Erklärung mit dem code text jetzt hab ich es endlich geschnallt wie es geht Freude Freude