Script Frage

Marvin
Hallo zusammen,

habe mal ne Frage zu den scripts:

Habe mich vor kurzem mal mit scripts befasst und eine sich öffnen lassende Tür erstellt und es hat glücklicherweise funktioniert. Jetzt habe ich eine Frage: Gibt es irgendwo eine script und eine Anleitung für eine Platte die per knopfdruck an eine andere stelle fährt? Wenn nicht kann mir es mir bitte jemand erklären und muss ich möglicherweise das _elevator script benutzen und umschreiben?

Würde mich über Hilfe sehr freuen

Lg Marvin
steinacker
da kannst du das aufzugs script dafür verwenden und anstatt movez, movex oder movey verwenden
in meiner mp_voyager4hab ich solche "moveplatten" und shuttles eingebaut
kannst dir die map ja mal downloaden
Marvin
Okay schon mal danke aber wenn ich jetzt die Map starte kommt ein script compielie error. Manno!!!
steinacker
script compile error kann mehrere gründe haben
kannst du den mal pousten
Marvin
Okay als erstes steht da:

script compiele error
unexpected end of file found
}
(see console for details)

uns in der großen konsole steht:

Error:
******* script compiele error *******
Error unexpected end of file found:
(file'maps/mp/elevator.gsc', line 40)
steinacker
so spontan gesagt, fehlt da eine klammer am ende }
kannst du dein verwendestes script noch dazu pousten
Marvin
Also mein elevator script sieht so aus:

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

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

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

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

if (level.elevatorDown) {

elevatormodel playsound ("elevator";);

elevatormodel movez (height, speed);
elevatormodel waittill ("movedone";);
level.elevatorDown = false;

}

else
{

elevatormodel playsound ("elevator";);

elevatormodel movez (height - (height * 2), speed);
elevatormodel waittill ("movedone";);
level.elevatorDown = true;
}
level.elevatorMoving = false;

und um es nicht zu vergessen hier noch meine mapdaten

main()
{
maps\mp\_door::main();
maps\mp\_load::main();

ambientPlay("ambient_backlot_ext");

game["allies"] = "marines";
game["axis"] = "opfor";
game["attackers"] = "axis";
game["defenders"] = "allies";
game["allies_soldiertype"] = "desert";
game["axis_soldiertype"] = "desert";

setdvar( "r_specularcolorscale", "1" );

setdvar("r_glowbloomintensity0",".25");
setdvar("r_glowbloomintensity1",".25");
setdvar("r_glowskybleedintensity0",".3");
setdvar("compassmaxrange","1800");

thread maps\mp\_door::main();
thread maps\mp\elevator::main();
}

dazu noch meine .csv:

ignore,code_post_gfx_mp
ignore,common_mp
ignore,localized_code_post_gfx_mp
ignore,localized_common_mp
col_map_mp,maps/mp/mp_jumptest.d3dbsp
rawfile,maps/mp/mp_jumptest.gsc
impactfx,mp_jumptest
sound,common,mp_jumptest,!all_mp
sound,generic,mp_jumptest,!all_mp
sound,voiceovers,mp_jumptest,!all_mp
sound,multiplayer,mp_jumptest,!all_mp

include,mptypes_desert

xmodel,weapon_saw_mg_setup

rawfile,maps/mp/_door.gsc
rawfile,maps/mp/elevator.gsc

Ich weis nicht was ich falsch gemacht habe.
Nightwing
In Zeile 41 fehlte eine }
Ausserdem war noch ein Klammerfehler drin, das else war ausserhalb der Klammer.

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:
main(){

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

elevator_start(){

	elevator = getentarray ("switch","targetname";);
	
	if ( isdefined(elevator) )
		for (i = 0; i < elevator.size; i++)
			elevator thread elevator_think();
}

elevator_think(){

	while (1){

		self waittill ("trigger";);
		if (!level.elevatorMoving)
		thread elevator_move();
	}
}

elevator_move(){

	elevatormodel = getent ("elevator", "targetname";);
	level.elevatorMoving = true;
	speed = 10;
	height =581;

	if (level.elevatorDown) {

		elevatormodel playsound ("elevator";);

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

	else{

		elevatormodel playsound ("elevator";);

		elevatormodel movez (height - (height * 2), speed);
		elevatormodel waittill ("movedone";);
		level.elevatorDown = true;
	}

	level.elevatorMoving = false;
}


ToM
Marvin
Okay habs jetzt mal geändert und jetzt kommt ein anderer Fehler:

script compile error
bad syntax
elevator = getentarry ("elevator","targetame";);
(see console for details)

Konsole:

Error:
******* script compile error*******
Error: bad syntax: (file'maps/mp/elevator.gsc',line 10)
steinacker
mach bei den runden klammern die semicolons raus
;); das semicolon davor ist zuviel

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

code:
1:
elevator = getentarray ("switch","targetname");


als beispiel
Marvin
Habe schon wieder einen neuen Fehler:

script runtime error
(see console for details)
arry is nor an object

Konsole:

Error: called from:
(file'maps/mp/elevator.gsc', line 14)
elevator thread elevator_think ();

Error: called from:
(file'maps/mp/elevator.gsc', line 5)

Error: called from:
(file'maps/mp/mp_jumptst.gsc', line 23)

Error: started from:
(file'maps/mp/mp_jumptest.gsc', line 1)
main()

Ich habe keine Ahnung was diese ganzen Errors immer verursacht
steinacker

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

elevator_start()
{
	elevator = getentarray ("switch","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");
	level.elevatorMoving = true;
	speed = 10;
	height =581;

	if (level.elevatorDown)
	{
		//elevatormodel playsound ("elevator");

		elevatormodel movez (height, speed);
		elevatormodel waittill ("movedone");
		level.elevatorDown = false;
	}
	else
	{

		//elevatormodel playsound ("elevator");

		elevatormodel movez (height - (height * 2), speed);
		elevatormodel waittill ("movedone");
		level.elevatorDown = true;
	}

	level.elevatorMoving = false;
}



elevator thread elevator_think ();
hier ist die variable elevator fehl am platz

elevator[i] thread elevator_think();
hier fehlt deine "zählvariable i in der eckigen klammer

und was die fehler in den beiden anderen dateien betrifft weiß ich nicht
mp_jumptst.gsc
mp_jumptest.gsc

ich würde aber an deiner stelle erst mal versuchen den aufzug zum laufen zu bekommen bevor du andere scripte noch verwendest

und wenn du damit eine platte oder so bewegen willst musst du movez in movey oder movex ändern, je nachdem, ob sich das teil in x oder in y richtung fahren soll
und die werte bei height und speed musst auch dem entsprechend ändern, wie weit (height) und wie schnell (speed) sich das teil bewegen soll - kleinerer wert bei speed = schneller
Marvin
Danke meine Map läuft wieder und die Platte bewegt sich. Allerdings bewegt sie sich nach oben also muss ich wohl noch eintragen was du gepoustet hast. Muss ich mal ausprobieren

Lg Marvin

Ps: Bei jumptst habe ich mich verschrieben das soll eigentlich auch jumptest heissen. Jumptest ist nähmlich der mapname von meiner Testmap.
Marvin
Okay habe jetzt movez in movey umgeändert. Nun bewegt sich die Platte wie gewollt in y Richtung. Allerdings gibt es nun zwei neue Probleme:

1. Die Platte fährt etwas zuweit in y Richtung. Sie fährt durch meine Wand durch. Kann man das ändern?

2. Wenn einer der Auslöser (Trigger) zum zweiten mal aktiviert wird fährt die Platte nach unten. Beim dritten mal wieder nach y. Beim vierten mal wieder nach unten etc.

Marvin
Nightwing

Zitat:

Original von steinacker

elevator thread elevator_think ();
hier ist die variable elevator fehl am platz

elevator[i] thread elevator_think();
hier fehlt deine "zählvariable i in der eckigen klammer


Marvin hatte das Script als Text hier reingestellt, nicht als Code.
Im Text bedeutet [i] Kursivschrift, daher hats das "verschluckt"
Ich hab mir das Script nicht sonderlich angesehn Augen rollen

ToM
steinacker

Zitat:

von mir:
und die werte bei height und speed musst auch dem entsprechend ändern, wie weit (height) und wie schnell (speed) sich das teil bewegen soll - kleinerer wert bei speed = schneller


2. du musst beide movez in movey ändern

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

code:
1:
2:
elevatormodel movey (height, speed);
elevatormodel movey (height - (height * 2), speed);

Marvin
Okay das hat schon mal geklappt nur habe ich jetzt ein neues problem:

Um so weniger ich bei Height eintrage um so langsamer fährt das Teil ich habe jetzt schon 1000 eingetragen hat aber nicht geklappt Manno!!!

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

code:
1:
2:
speed =1000;
height =110;

steinacker
wer lesen kann iss klar im vorteil...

und die werte bei height und speed musst auch dem entsprechend ändern, wie weit (height) und wie schnell (speed) sich das teil bewegen soll - kleinerer wert bei speed = schneller

height - höhe (strecke, die deine platte zurück legt)
vom aufzug her einfach belassen, du kannst die variable auch benennen wie du willst - aber lass besser mal so stehen

speed - geschwindigkeit
kleinerer wert bei speed = schneller
Marvin

Zitat:

Original von steinacker
wer lesen kann iss klar im vorteil...

Jo da hast du recht. Hat jetzt geklappt. Ich habs total übersehen Bin doof...

Danke an euch beide für die Hilfe Verneig mich!

Lg Marvin

Ps: Ich werd noch zum scripter Augen rollen