Hilfe bei Cod4 Script (Jump Pads)

Saladir
Hallo zusammen,

da ich nicht mehr weiter weiss, suche ich nun Hifle in eurem Board (extra dafür Angemeldet^^)

Ich habe hier ein Cod4 Script welches den Spieler in die Luft Springen lässt (wie bei Sonic diese Sprungfedern)

Jedoch bekomme ich es nicht hin das Script einzubauen. Hab schon alles versucht doch sobald ich auf den besagten Trigger Springe/laufe etc passiert nichts. kein Console Error garnichts.

Hoffe jemand kann mir helfen und vllt ne kleine Anleitung dazu wie ichs genau in die Map einbauen muss, bin am verzweifeln unglücklich

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:
speed( trigger )
{
if( !isDefined( trigger ) )
return;

while(1)
{
trigger waittill( "trigger", player );
iPrintLnBold("^1JUUUMMMPPP");
if( isDefined( player.speed ) )
continue;
player thread PushPlayer( trigger );
}
}

PushPlayer( trigger )
{
self endon("disconnect");

self.speed = true;

if(distance(trigger.origin, self.origin) > 400)
{
self freezeControls(true);
wait 0.1;
self freezeControls(false);
}

else
{
target = getEnt(trigger.target, "origin_speed");
speed = int(strTok(trigger.script_noteworthy, ",")[0]);

self.health = 1000000;
self.maxhealth = 1000000;

self thread adminOff(); //Ignorieren
setDvar("g_knockback", (speed*9)-3000);
self finishPlayerDamage(self, self, (speed*9)-3000, 0, "MOD_FALLING", "deserteaglegold_mp", trigger.origin, (trigger.origin - target.origin), "head", 0);
wait 0.05;
setDvar("g_knockback", level.knockback);

trigger playSound(strTok(trigger.script_noteworthy, ",")[1]);

self notify("admin_on");

self.health = 100;
self.maxhealth = 100;
}

while(self isTouching(trigger))
wait 0.05;

self.speed = undefined;
}



Der Trigger: (wird weiter oben in meiner gsc angesprchen daher nutze ich ihn nicht als eigenen Thread)

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

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
speed = getentarray("speed1","targetname");

if(isdefined(speed))
{
for(i = 0;i < speed.size;i++)
{
speed thread speed();
}
}



Hoffe jemand kann helfenunglücklich

mfg
bangingbernie
Saladir
Nicht wirklich da mein Script komplexer ist als nur Origin Punkten nach zu fliegen

beim Normalen Jump Pad "fliegt" man ja die Origin Punkte ab welche man eingebaut hat, bei meinem Script Springt man und kann entscheiden wohin man fliegt bzw landet (also Freie wahl als würde man normal auf "leertaste" springen). Hab auch weiter versucht aber scheitere einfach...unglücklich
serthy
habs für mich mal etwas übersichtlicher geschrieben

füge einfach ein paar iprintln's zum testen ein, z.B. wird die jetzt "trigger undefined" angezeigt, wenn ein trigger fehlt

kannst auch bei deinem aufruf das so machen:
foreach( trigger in triggerarray )
level.players[0] setOrigin( trigger.origin );

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:
speed( trigger )
{
	while( isDefined( trigger ) )
	{
		trigger waittill( "trigger" , player );

		iPrintLnBold("^1JUUUMMMPPP");

		if( isDefined( player.speed ) )
			continue;

		player thread PushPlayer( trigger );
	}

	iPrintLn( "trigger undefined!" );
}
 
PushPlayer( trigger )
{
	self endon( "disconnect" );
 
	self.speed = true;
 
	if( distanceSquared( trigger.origin , self.origin ) > 400 * 400 )
	{
		self freezeControls( true );

		wait( 0.1 );

		self freezeControls( false );
	}
	else
	{
		target = getEnt( trigger.target , "origin_speed" );
		speed = 3000;

		if( isDefined( trigger.script_noteworthy ) )
		{
			tok = strTok( trigger.script_noteworthy , "," );
			speed = int( tok[0] );
		}

		speed = ( speed * 9 ) - 3000 );

		self.health = 1000000;
		self.maxhealth = 1000000;
 
		self thread adminOff(); //Ignorieren

		setDvar( "g_knockback" , speed );
		self finishPlayerDamage( self , self , speed , 0 , "MOD_FALLING" , "deserteaglegold_mp" , trigger.origin , ( trigger.origin - target.origin ) , "head" , 0 );
		
		wait( 0.05 );

		setDvar( "g_knockback" , level.knockback );
 
		if( isDefined( trigger.script_noteworthy ) )
		{
			tok = strTok( trigger.script_noteworthy , "," );
			trigger playSound( tok[0] );
		}

		self notify( "admin_on" );
 
		self.health = 100;
		self.maxhealth = 100;
	}
 
	while( isDefined( self ) && self.sessionstate == "playing" )
	{
		if( !self isTouching( trigger ) )
			break;

		wait( 0.05 );
	}
 
	self.speed = undefined;
}

Saladir
Also habs mal mit deinem Script Versucht und bin etwas weiter gekommen

btw: Dein Script hat nen Schreibfehler ^^

Zitat:

speed = ( speed * 9 ) - 3000 );

///////////////
speed = (( speed * 9 ) - 3000 );



Jedoch bekomme ich nun ne Meldung

Zitat:

dvar set g_knockback 24000

******* script runtime error *******
undefined is not a field object: (file 'maps/mp/mp_dr_sonic.gsc', line 165)
player finishPlayerDamage( player , player , speed , 0 , "MOD_FALLING" , "" , trigger.origin , ( trigger.origin - target.origin ) , "" , 0 );
*
Error: called from:
(file 'maps/mp/mp_dr_sonic.gsc', line 12cool
player thread speed(trigger, player);
*
Error: started from:
(file 'maps/mp/mp_dr_sonic.gsc', line 125)
trigger waittill("trigger", player);
*
Error: ************************************
dvar set com_errorTitle Fehler
dvar set com_errorMessage script runtime error
(see console for details)
undefined is not a field object
Could not find menu 'main'

******* script runtime error *******
pair '(-1743, -2461, -1006)' and 'undefined' has unmatching types 'vector' and 'undefined': (file 'maps/mp/mp_dr_sonic.gsc', line 165)
player finishPlayerDamage( player , player , speed , 0 , "MOD_FALLING" , "" , trigger.origin , ( trigger.origin - target.origin ) , "" , 0 );
*
Error: called from:
(file 'maps/mp/mp_dr_sonic.gsc', line 12cool
player thread speed(trigger, player);
*
Error: started from:
(file 'maps/mp/mp_dr_sonic.gsc', line 125)
trigger waittill("trigger", player);
*
Error: ************************************
dvar set com_errorTitle Fehler
dvar set com_errorMessage script runtime error
(see console for details)
pair '(-1743, -2461, -1006)' and 'undefined' has unmatching types 'vector' and 'undefined'
Could not find menu 'main'
dvar set ui_healthbar 0.981
dvar set g_knockback 1000
dvar set com_errorMessage
dvar set com_errorMessage
dvar set com_isNotice 0
Could not find menu 'main'
quitting...
----- CL_Shutdown -----


Hoffe jemand kann helfen, oder mach ich grundsätzlich was bei den trigger targetnames falsch?

Hier mal wie ich vorgehe

trigger_multipl > "targetname" "speed1"

dann erstelle ich nen script origin und platziere den etwas weiter über den trigger und verbinde ihn mit dem trigger "w"

Das wars doch schon oder irre ich mich da oO?

mfg
Saladir
Weiß den niemand rat....solange ich das net hinbekomm kann ich die map net fertig machen und würde es doch so gerne noch bis zum Montag* fertig machen unglücklich

mfg
serthy

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

	if( isDefined( level.jumppads ) && level.jumppads.size )
	{
		for( i = 0 ; i < level.jumppads.size ; i++ )
		{
			pad = level.jumppads[i];

			if( !isDefined( pad ) )
				continue;

			spawnJumppad( pad.origin , pad.angles , pad.height , pad.radius , pad.dirPos , pad.model , pad.power , pad.sound );
		}
	}

	jumppads = getEntArray( "jumppad" , "targetname" );

	if( isDefined( jumppads ) && jumppads.size )
	{
		for( i = 0 ; i < jumppads.size ; i++ )
		{
			pad = jumppads[i];

			if( !isDefined( pad ) )
				continue;

			pad thread monitorUsage();
		}
	}
}

setupJumppads() //3 als beispiel
{
	precacheModel( "xmodel/serthy_buildzone" );							//falls model erwünscht, unbeding precachen! sonst crasht der server

	level.jumppads = [];											// ganz wichtig! muss zuerst stehen!

	level.jumppads[level.jumppads.size] = spawnStruct();						//muss immer zuerst stehen bei jedem neuen jumppad
	level.jumppads[level.jumppads.size - 1].origin = ( -1993 , 2939 , 100 );		//wo?
	level.jumppads[level.jumppads.size - 1].angles = ( 0 , 0 , 0 );				//winkel?
	level.jumppads[level.jumppads.size - 1].height = 32;						//trigger höhe
	level.jumppads[level.jumppads.size - 1].radius = 64;						//trigger radius
	level.jumppads[level.jumppads.size - 1].dirPos = ( -2001 , 292 , 132 );			//richtung, sollte im bereich von +/- 50 neben dem origin sich befinden: origin + ( 50 , -30 , 32 )
	level.jumppads[level.jumppads.size - 1].model = "xmodel/serthy_buildzone";		//damit man es erkennt? muss precached werden!!!
	level.jumppads[level.jumppads.size - 1].power = 2;						//wie stark das jumppad ist
	level.jumppads[level.jumppads.size - 1].sound = "minefield_click";			//sound welcher abgespielt wird

	level.jumppads[level.jumppads.size] = spawnStruct();						//minimale anforderungen
	level.jumppads[level.jumppads.size - 1].origin = ( 2342 , 123 , 73 );			//minimale anforderungen

	level.jumppads[level.jumppads.size] = spawnStruct();						//minimale anforderungen
	level.jumppads[level.jumppads.size - 1].origin = ( 3434 , 32 , -17 );			//minimale anforderungen
}

spawnJumppad( origin , angles , height , radius , dirPos , model , power , sound )
{
	if( !isDefined( radius ) )		radius = 64;
	if( !isDefined( height ) )		height = 32;
	if( !isDefined( angles ) )		angles = ( 0 , 0 , 0 );

	jumppad = spawn( "trigger_radius" , origin , 0 , radius , height );
	jumppad.angles = angles;
	jumppad.targetname = "jumppad";
	jumppad.jumpSound = sound;
	jumppad.power = power;

	if( isDefined( model ) )
	{
		jumppad.vis = spawn( "script_model" , origin );
		jumppad.vis setmodel( model );
	}

	if( isDefined( dirPos ) )
		jumppad.dir = vectorNormalize( dirPos - origin );
}

monitorUsage()
{
	if( isDefined( self.target ) )
	{
		target = getEnt( self.target , "targetname" );

		if( isDefined( target ) )
		{
			self.dir = vectorNormalize( self.target.origin - self.origin );
			self.target delete();
		}
	}

	if( isDefined( self.script_noteworthy ) )
	{
		tokens = strTok( self.script_noteworthy , "," );
		self.power = tokens[0];
		self.jumpSound = tokens[1];
	}

	while( isDefined( self ) )
	{
		wait( 0.05 );

		self waittill( "trigger" , player );

		if( !isDefined( player.isOnJumppad ) )
			self bouncePlayer( player , self.power , self.dir );
	}
}

bouncePlayer( player , power , dir )
{
	player endon( "disconnect" );

	player.isOnJumppad = undefined;

	if( isDefined( self.jumpSound ) && self.jumpSound != "" )
		self playSound( self.jumpSound );

	if( !isDefined( dir ) )
		dir = ( 0 , 0 , 1 );

	if( !isDefined( power ) )
		power = 1;

	player iPrintLnBold( "Yippieeeh!" );

	while( isDefined( self ) && isDefined( player ) )
	{
		if( player.sessionstate != "playing" )
			break;
		else if( !player isTouching( self ) )
			break;

		power = int( player.maxhealth * power );
		health = player.health;
		player.health += power;

		player finishPlayerDamage( self , self , power , 0 , "MOD_PROJECTILE" , "none" , self.origin , dir , "none" , 0 );

		player.health = health;

		wait( 0.05 );
	}

	player.isOnJumppad = undefined;
}



entweder jumppads per hand einfügen wie im beispiel (setupJumppads()-funktion) oder im radiant:
trigger erstellen
K/V: targetname/jumppad
K/V: script_noteworthy/<power>,<sound>
script_origin erstellen
trigger auswählen, script_origin auswählen >>> W

sieht dann so aus:
>>>Klick mich<<<

wobei der teddy nur da ist um zu sehen in welche richtung man springt
Hippie

Zitat:

Original von Saladir
Weiß den niemand rat....solange ich das net hinbekomm kann ich die map net fertig machen und würde es doch so gerne noch bis zum Montag* fertig machen unglücklich


Da du derjenige bist der auf Antworten hofft, darfst du etwas mehr Geduld aufbringen.
Die Leute hier hocken nicht alle halbe Stunde an den Rechner um dir zu posten Augenzwinkern

Grüße
Saladir

Zitat:

Original von serthy

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

	if( isDefined( level.jumppads ) && level.jumppads.size )
	{
		for( i = 0 ; i < level.jumppads.size ; i++ )
		{
			pad = level.jumppads[i];

			if( !isDefined( pad ) )
				continue;

			spawnJumppad( pad.origin , pad.angles , pad.height , pad.radius , pad.dirPos , pad.model , pad.power , pad.sound );
		}
	}

	jumppads = getEntArray( "jumppad" , "targetname" );

	if( isDefined( jumppads ) && jumppads.size )
	{
		for( i = 0 ; i < jumppads.size ; i++ )
		{
			pad = jumppads[i];

			if( !isDefined( pad ) )
				continue;

			pad thread monitorUsage();
		}
	}
}

setupJumppads() //3 als beispiel
{
	precacheModel( "xmodel/serthy_buildzone" );							//falls model erwünscht, unbeding precachen! sonst crasht der server

	level.jumppads = [];											// ganz wichtig! muss zuerst stehen!

	level.jumppads[level.jumppads.size] = spawnStruct();						//muss immer zuerst stehen bei jedem neuen jumppad
	level.jumppads[level.jumppads.size - 1].origin = ( -1993 , 2939 , 100 );		//wo?
	level.jumppads[level.jumppads.size - 1].angles = ( 0 , 0 , 0 );				//winkel?
	level.jumppads[level.jumppads.size - 1].height = 32;						//trigger höhe
	level.jumppads[level.jumppads.size - 1].radius = 64;						//trigger radius
	level.jumppads[level.jumppads.size - 1].dirPos = ( -2001 , 292 , 132 );			//richtung, sollte im bereich von +/- 50 neben dem origin sich befinden: origin + ( 50 , -30 , 32 )
	level.jumppads[level.jumppads.size - 1].model = "xmodel/serthy_buildzone";		//damit man es erkennt? muss precached werden!!!
	level.jumppads[level.jumppads.size - 1].power = 2;						//wie stark das jumppad ist
	level.jumppads[level.jumppads.size - 1].sound = "minefield_click";			//sound welcher abgespielt wird

	level.jumppads[level.jumppads.size] = spawnStruct();						//minimale anforderungen
	level.jumppads[level.jumppads.size - 1].origin = ( 2342 , 123 , 73 );			//minimale anforderungen

	level.jumppads[level.jumppads.size] = spawnStruct();						//minimale anforderungen
	level.jumppads[level.jumppads.size - 1].origin = ( 3434 , 32 , -17 );			//minimale anforderungen
}

spawnJumppad( origin , angles , height , radius , dirPos , model , power , sound )
{
	if( !isDefined( radius ) )		radius = 64;
	if( !isDefined( height ) )		height = 32;
	if( !isDefined( angles ) )		angles = ( 0 , 0 , 0 );

	jumppad = spawn( "trigger_radius" , origin , 0 , radius , height );
	jumppad.angles = angles;
	jumppad.targetname = "jumppad";
	jumppad.jumpSound = sound;
	jumppad.power = power;

	if( isDefined( model ) )
	{
		jumppad.vis = spawn( "script_model" , origin );
		jumppad.vis setmodel( model );
	}

	if( isDefined( dirPos ) )
		jumppad.dir = vectorNormalize( dirPos - origin );
}

monitorUsage()
{
	if( isDefined( self.target ) )
	{
		target = getEnt( self.target , "targetname" );

		if( isDefined( target ) )
		{
			self.dir = vectorNormalize( self.target.origin - self.origin );
			self.target delete();
		}
	}

	if( isDefined( self.script_noteworthy ) )
	{
		tokens = strTok( self.script_noteworthy , "," );
		self.power = tokens[0];
		self.jumpSound = tokens[1];
	}

	while( isDefined( self ) )
	{
		wait( 0.05 );

		self waittill( "trigger" , player );

		if( !isDefined( player.isOnJumppad ) )
			self bouncePlayer( player , self.power , self.dir );
	}
}

bouncePlayer( player , power , dir )
{
	player endon( "disconnect" );

	player.isOnJumppad = undefined;

	if( isDefined( self.jumpSound ) && self.jumpSound != "" )
		self playSound( self.jumpSound );

	if( !isDefined( dir ) )
		dir = ( 0 , 0 , 1 );

	if( !isDefined( power ) )
		power = 1;

	player iPrintLnBold( "Yippieeeh!" );

	while( isDefined( self ) && isDefined( player ) )
	{
		if( player.sessionstate != "playing" )
			break;
		else if( !player isTouching( self ) )
			break;

		power = int( player.maxhealth * power );
		health = player.health;
		player.health += power;

		player finishPlayerDamage( self , self , power , 0 , "MOD_PROJECTILE" , "none" , self.origin , dir , "none" , 0 );

		player.health = health;

		wait( 0.05 );
	}

	player.isOnJumppad = undefined;
}



entweder jumppads per hand einfügen wie im beispiel (setupJumppads()-funktion) oder im radiant:
trigger erstellen
K/V: targetname/jumppad
K/V: script_noteworthy/<power>,<sound>
script_origin erstellen
trigger auswählen, script_origin auswählen >>> W

sieht dann so aus:
>>>Klick mich<<<

wobei der teddy nur da ist um zu sehen in welche richtung man springt


Perfekt! Genau sowas habe ich gesucht und werde es umgehend Testen. Vielen Vielen Dank <3