Schneller Kriechen bei Trigger

Nightwing
Hallo, habe ein kleines Problem:

Ich möchte, das Player an einem Rohr, wo sie hindurchkriechen müssen, schneller Kriechen können. Das Rohr ist von trigger_multiple umgeben, hier ein Screen:



Man möge mir verzeihen, das ich crouch für Kriechen hielt, die Uhrzeit machts möglich Augen rollen

Ich weiss noch nicht, wie ich das Kriechen abfragen soll, um überhaupt mal einen Ansatz zu haben, hab ich es mit der Abfrage if(self getstance() == "crouch") versucht. Logisch, das ich da diese Fehlermeldung bekomme:

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

code:
1:
2:
3:
******* script runtime error *******
GetStance is only defined for players.: (file 'maps/mp/_fastcrouch.gsc', line 20)



Ich weiss nicht, ob ich die Funktion setspeed da richtig verwende, es gibt recht viele Funktionen in den Rawfiles...

Und hier das, was evtl mal ein Script werden könnte:


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:
main(){	
	
	areas = getentarray ("fastcrouch","targetname");	
	
	if(isdefined(areas)){
	
		for(i=0;i<areas.size;i++){
		
			areas[i] thread Player_fastcrouch();
		}
	}
	
	level.player_fastcrouch = false;
}

Player_fastcrouch(){

	while(1){
	
		if(self getstance() == "prone"){
		
			if(isDefined(level.player_fastcrouch))
				return;
				
			level.player_fastcrouch = true;
			
			self waittill ("trigger");
			self setSpeed(2, 200);
		//	iprintln("^2fast active");
			
			wait 0.1;
			
			level.player_fastcrouch = false;
		//	iprintln("^1fast inactive");
		}
	}
}



Danke

ToM
OLD MAN WITH GUN
Soll das eine Single- oder Multiplayer-Map werden (das wäre aufgrund verschiedener Funktionen, die jeweils nur im Single oder Multiplayer funktionieren schon wichtig zu wissen)?
Vorab aber schon mal folgendes:
Punkt 1: Setspeed funktioniert nur für vehicle.
Punkt 2: Im Multiplayer lässt sich die Geschwindigkeit eines einzigen Spielers nur verlangsamen (mit einem shock-file) aber nicht verschnellern (das würde immer gleichzeitig alle Spieler betreffen), das geht nur im Singleplayer mit z.B. verändern von g_speed.

Die einzige Möglichkeit, die dir da bleibt, um überhaupt was in der Richtung hin zu bekommen, wäre wohl ein Teleporter.
Nightwing

Zitat:

Original von OLD MAN WITH GUN
Soll das eine Single- oder Multiplayer-Map werden (das wäre aufgrund verschiedener Funktionen, die jeweils nur im Single oder Multiplayer funktionieren schon wichtig zu wissen)?

MP, die Idee kam einem mir bekannten Mapper, daraufhin meine Neugier und die Bastelei + Frage

Zitat:

Original von OLD MAN WITH GUN
Vorab aber schon mal folgendes:
Punkt 1: Setspeed funktioniert nur für vehicle.
Punkt 2: Im Multiplayer lässt sich die Geschwindigkeit eines einzigen Spielers nur verlangsamen (mit einem shock-file) aber nicht verschnellern (das würde immer gleichzeitig alle Spieler betreffen), das geht nur im Singleplayer mit z.B. verändern von g_speed.

Danke, sehr gut zu Wissen.

Zitat:

Original von OLD MAN WITH GUN
Die einzige Möglichkeit, die dir da bleibt, um überhaupt was in der Richtung hin zu bekommen, wäre wohl ein Teleporter.


Klingt nach obiger Info logisch.

Danke vielmals OMWG

ToM
yoda
Könnte man das evt. mit dem Script vom JumpPad lösen? Da kann man ja auch die Geschwindigkeit vorgeben, vielleicht ginge es ja so, daß die Bewegung nicht nach oben sondern eben nach vorne ausgelöst würde?
Nightwing
Das werd ich die Woche über mal testen, klingt interessant.

ToM
OLD MAN WITH GUN

Zitat:

Original von yoda
Könnte man das evt. mit dem Script vom JumpPad lösen? Da kann man ja auch die Geschwindigkeit vorgeben, vielleicht ginge es ja so, daß die Bewegung nicht nach oben sondern eben nach vorne ausgelöst würde?
Stimmt, sollte auch funktionieren.
Nightwing
So, BadMan hat mir ne schnelle Testmap gebaut, Danke!

Darin ist der Jump vom Boden auf ne Plattform, funzt feini. Und das ominöse Rohr, jeweils ein Jumppad an der Öffnung.

Problem: Der Player geht durchs erste Rohrjumppad und wird bewegt, kommt zum zweiten und wird zurückbewegt oder bleibt stecken. Wie könnte ich dem Script sagen, das nur das erste Jumppad zählt?

Hier mal 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:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
main(){

	thread jumper();
	thread jumper1();
	thread jumper2();
	
	maps\mp\_load::main();
	
	maps\mp\_compass::setupMiniMap("compass_map_mp_jumppad");
	
	setExpFog(300, 1400, 0.5, 0.5, 0.5, 0);
	
	VisionSetNaked("mp_jumppad");
	
	game["allies"] = "marines";
	game["axis"] = "opfor";
	game["attackers"] = "allies";
	game["defenders"] = "axis";
	game["allies_soldiertype"] = "desert";
	game["axis_soldiertype"] = "desert";
	
	setdvar( "r_specularcolorscale", "3" );
	
	setdvar("compassmaxrange","1800");

}

jumper(){

	jumpx = getent ("jump","targetname");
	glow = getent ("glow","targetname");
	air1 = getent ("air1","targetname");
	air2 = getent ("air2","targetname");
	air3 = getent ("air3","targetname");
	air4 = getent ("air4","targetname");

	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));

	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
			
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
		
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
			
			time = 1;
			
			air moveto (air1.origin, 1);
			wait 1;
			
			air moveto (air2.origin, 1);
			wait .5;
			
			air moveto (air3.origin, 1);
			wait .5;
			
			air moveto (air4.origin, 1);
		
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			wait 1;
			
			user unlink();
			
			wait 1;
		}
	}
}


jumper1(){

	jumpx = getent ("jump1","targetname");
	glow = getent ("glow1","targetname");
	air11 = getent ("air11","targetname");
	air12 = getent ("air12","targetname");
	air13 = getent ("air13","targetname");
	air14 = getent ("air14","targetname");


	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));


	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
		
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
	
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
			
			time = 1;
			
			air moveto (air11.origin, 1);
			wait 1;
			
			air moveto (air12.origin, 1);
			wait .5;
			
			air moveto (air13.origin, 1);
			wait .5;
			
			air moveto (air14.origin, 1);
	
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			wait 1;
			
			user unlink();
			
			wait 1;
		}
	}
}


jumper2(){

	jumpx = getent ("jump2","targetname");
	glow = getent ("glow2","targetname");
	air21 = getent ("air21","targetname");
	air22 = getent ("air22","targetname");
	air23 = getent ("air23","targetname");
	air24 = getent ("air24","targetname");


	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));

	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
		
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
	
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
			
			time = 1;
			
			air moveto (air21.origin, 1);
			wait 1;
			
			air moveto (air22.origin, 1);
			wait .5;
			
			air moveto (air23.origin, 1);
			wait .5;
			
			air moveto (air24.origin, 1);
	
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			wait 1;
			
			user unlink();
			
			wait 1;
		}
	}
}



Schonmal vielen Dank im vorraus, OMWG Augenzwinkern

ToM
OLD MAN WITH GUN
Eine Möglichkeit wäre, wenn sich der Player am script_origin air13 bzw. air23 befindet, den Trigger am Ausgang abzuschalten, und wenn er dann am script_origin air14 bzw. air24 ist, wieder einzuschalten. Dabei muss man natürlich noch darauf achten, dass die script_origins air14 und air24 weiter draußen befinden als die Trigger, damit man nicht direkt in die Trigger am Ausgang kriecht und zurückgeschickt wird.
Also so: (Beide Wege mal übereinander dargestellt)
T = trigger, o = script_origin
_To--o--o--o--o
o--o--o--o--oT

Nun zum eigentlichen Ein- und Ausschalten eines Triggers:
Füge zuerst diese Zeile ganz oben als erste Zeile in deine gsc Datei ein.
#include maps\mp\utility;

nun kannst du einen Trigger folgendermaßen ausschalten (am Beispiel von jump2):
jump2 TriggerOff();

und so wieder einschalten:
jump2 TriggerOn();
steinacker

Zitat:

Original von OLD MAN WITH GUN

Füge zuerst diese Zeile ganz oben als erste Zeile in deine gsc Datei ein.
#include maps\mp\utility;


sollte das nicht:
#include maps\mp\_utility;
heissen ???

denn die datei utility.gsc befindet sich in: common_scripts

und die datei _utility.gsc befindet sich in: maps\mp\

und deshalb den _ (unterstrich) nicht vergessen
OLD MAN WITH GUN

Zitat:

Original von steinacker
sollte das nicht:
#include maps\mp\_utility;
heissen ???
Stimmt, kleiner Tippfehler.
Nightwing
Was mich grade etwas verunsichert: Wo genau kommen die beiden von Dir genannten Aufrufe rein? Bitte korrigieren, wenn falsch (wovon ich ausgehe)

Hier? :

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

	jumpx = getent ("jump2","targetname");
	glow = getent ("glow2","targetname");
	air21 = getent ("air21","targetname");
	air22 = getent ("air22","targetname");
	air23 = getent ("air23","targetname");
	air24 = getent ("air24","targetname");


	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));

	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
		
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
	
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
			
			jump2 TriggerOff();
			
			time = 1;
			
			air moveto (air21.origin, 1);
			wait 1;
			
			air moveto (air22.origin, 1);
			wait .5;
			
			air moveto (air23.origin, 1);
			wait .5;
			
			air moveto (air24.origin, 1);
	
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			wait 1;
			
			user unlink();
			
			jump2 TriggerOn();
			
			wait 1;
		}
	}
}



ToM

Nachtrag: Wird getestet, sobald ich ne neue Testmap habe.
steinacker
include's
kommen immer ganz an den anfang

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

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
#include maps\mp\_utility;

main()
{
thread jumper();
thread jumper1();
thread jumper2();
.......



}

Nightwing
Danke, schon klar. Ich meinte diese beiden Aufrufe hier:

Zitat:

Original von OLD MAN WITH GUN
nun kannst du einen Trigger folgendermaßen ausschalten (am Beispiel von jump2):
jump2 TriggerOff();

und so wieder einschalten:
jump2 TriggerOn();


ToM
OLD MAN WITH GUN
jump2 TriggerOn(); ist schon gut platziert.
jump2 TriggerOff(); kannst du da auch lassen. Wenn du den Triiger allerdings kürzer abschalten willst, schreibst du das jump2 TriggerOff(); einfach zwischen die Zeilen air moveto (air24.origin, 1); und dem nachfolgenden wait 1; (also dann, wenn sich der Player auf dem Weg zum letzten script_origin macht).
Sähe dann so aus:
...
air moveto (air24.origin, 1);
jump2 TriggerOff();
wait 1;
user unlink();
jump2 TriggerOn();
...
Nightwing
Dann lag ich ja doch net so falsch und habs richtig verstanden Freude Danke OMWG!

Sag mal, was bedeutet das #include? Heisst das soviel, das das dort angegebene File wie soll ich sagen berücksichtigt wird bei Ausführung des Scripts?

ToM
OLD MAN WITH GUN

Zitat:

Original von Nightwing
Sag mal, was bedeutet das #include? Heisst das soviel, das das dort angegebene File wie soll ich sagen berücksichtigt wird bei Ausführung des Scripts?
So kann man das in etwa ausdrücken. Bei gsc-Dateien, die per #include eingebunden werden hat man den Vorteil, das man die darin enthaltenen Funktionen direkt aufrufen kann (ohne jedes Mal den ganzen Pfad davor zu schreiben).

Im Grunde genommen ist das:
jump2 maps\mp\_utility::TriggerOn();

und das:
#include maps\mp\_utility; //ganz am Anfang der gsc-Datei
jump2 TriggerOn();

das Gleiche:

Wenn man #include verwendet, benutzt man die Funktionen also so, als ob die Funktion direkt in der eigenen gsc-Datei wäre.
Diese Vorgehensweise macht aber nur bei solchen gsc-Dateien Sinn, in denen zahlreiche Funktionen vorhanden sind (wie eben der _utility.gsc). Bei eigenen gsc-Dateien (z.B. dem Türscript) den man als eigenständige gsc-Datei erstellt, der dann aber nur eine Funktion enthält die man von extern aufruft, macht das wenig Sinn.
Nightwing
Sehr schön erklärt, dank Dir!
BadMan


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:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
#include maps\mp\_utility;

main(){


	thread jumper();
	thread jumper1();
	thread jumper2();
	
	maps\mp\_load::main();
	
	maps\mp\_compass::setupMiniMap("compass_map_mp_jumppad");
	
	setExpFog(300, 1400, 0.5, 0.5, 0.5, 0);


	
	VisionSetNaked("mp_jumppad");
	
	game["allies"] = "marines";
	game["axis"] = "opfor";
	game["attackers"] = "allies";
	game["defenders"] = "axis";
	game["allies_soldiertype"] = "desert";
	game["axis_soldiertype"] = "desert";
	
	setdvar( "r_specularcolorscale", "3" );
	
	setdvar("compassmaxrange","1800");

}

jumper(){

	jumpx = getent ("jump","targetname");
	glow = getent ("glow","targetname");
	air1 = getent ("air1","targetname");
	air2 = getent ("air2","targetname");
	air3 = getent ("air3","targetname");
	air4 = getent ("air4","targetname");

	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));

	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
			
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
		
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
			
			time = 1;
			
			air moveto (air1.origin, 1);
			wait 1;
			
			air moveto (air2.origin, 1);
			wait .5;
			
			air moveto (air3.origin, 1);
			wait .5;
			
			air moveto (air4.origin, 1);
		
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			wait 1;
			
			user unlink();
			
			wait 1;
		}
	}
}


jumper1(){

	jumpx = getent ("jump1","targetname");
	glow = getent ("glow1","targetname");
	air11 = getent ("air11","targetname");
	air12 = getent ("air12","targetname");
	air13 = getent ("air13","targetname");
	air14 = getent ("air14","targetname");


	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));


	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
		
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
	
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
			
			time = 1;
			
			air moveto (air11.origin, 1);
			wait 1;
			
			air moveto (air12.origin, 1);
			wait .5;
			
			air moveto (air13.origin, 1);
			wait .5;
			
			air moveto (air14.origin, 1);
			
			jump1 TriggerOff();
	
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			
			wait 1;
			
			user unlink();
			
			jump1 TriggerOn();
			
			wait 1;
		}
	}
}


jumper2(){

	jumpx = getent ("jump2","targetname");
	glow = getent ("glow2","targetname");
	air21 = getent ("air21","targetname");
	air22 = getent ("air22","targetname");
	air23 = getent ("air23","targetname");
	air24 = getent ("air24","targetname");


	level._effect[ "beacon_glow" ] = loadfx( "misc/ui_pickup_available" );
	maps\mp\_fx::loopfx("beacon_glow", (glow.origin), 3, (glow.origin) + (0, 0, 90));

	while (1){
	
		jumpx waittill ("trigger",user);
		
		if (user istouching(jumpx)){
		
			//throw = user.origin + (100, 100, 0);
			air = spawn ("script_model",(0,0,0));
	
			air.origin = user.origin;
			air.angles = user.angles;
			
			user linkto (air);
						
			time = 1;
			
			air moveto (air21.origin, 1);
			wait 1;
			
			air moveto (air22.origin, 1);
			wait .5;
			
			air moveto (air23.origin, 1);
			wait .5;
			
			air moveto (air24.origin, 1);
			
			jump2 TriggerOff();
	
			//air moveto (throw, time, 0.5,0.5);
			//air moveto (throw, time, 0.5,0.5);
			
			wait 1;
			
			user unlink();
			
			jump2 TriggerOn();
			
			wait 1;
		}
	}
}



so sind jetzt die datein
und das der fehler

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

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
******* script compile error *******
Error: uninitialised variable 'jump1': (file 'maps/mp/mp_jumppad.gsc', line 123)
******* script compile error *******
Error: uninitialised variable 'jump1': (file 'maps/mp/mp_jumppad.gsc', line 123)
   jump1 TriggerOff();
   *
************************************
********************
ERROR: script compile error
uninitialised variable 'jump1'
   jump1 TriggerOff();
(see console for details)

OLD MAN WITH GUN

Zitat:

Original von BadMan
und das der fehler

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

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
******* script compile error *******
Error: uninitialised variable 'jump1': (file 'maps/mp/mp_jumppad.gsc', line 123)
******* script compile error *******
Error: uninitialised variable 'jump1': (file 'maps/mp/mp_jumppad.gsc', line 123)
   jump1 TriggerOff();
   *
************************************
********************
ERROR: script compile error
uninitialised variable 'jump1'
   jump1 TriggerOff();
(see console for details)

Das liegt daran, das du am Anfang einer jeder jump-Funktion dem Trigger den Namen jumpx gibst
...
jumper1(){
jumpx = getent ("jump1","targetname");
...

Dann musst du weiter unten im Script auch jumpx an- und ausschalten (jump1 oder jump2 hast du ja nicht definiert).
BadMan
Also irgendwie will das alles nicht der deaktiviert den Trigger nicht hab einfach ma die Datei vom Jumppad hoch geladen vielleicht findest du ja den Fehler.

Der thread jumper(); funktioniert einwandfrei ist das normale Jumppad

DL Link entfernt