|
 |
Hilfe bei Cod4 Script (Jump Pads) |
Saladir
Weichei
Dabei seit: 03.01.2013
Beiträge: 5

|
|
| Hilfe bei Cod4 Script (Jump Pads) |
 |
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
Das Script:
Code 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 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 helfen
mfg
|
|
|
|
|
Saladir
Weichei
Dabei seit: 03.01.2013
Beiträge: 5

|
|
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...
|
|
|
|
|
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
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 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;
}
|
|
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nightwing: 05.01.2013 11:12.
|
|
|
|
|
Saladir
Weichei
Dabei seit: 03.01.2013
Beiträge: 5

|
|
Also habs mal mit deinem Script Versucht und bin etwas weiter gekommen
btw: Dein Script hat nen Schreibfehler ^^
speed = ( speed * 9 ) - 3000 );
///////////////
speed = (( speed * 9 ) - 3000 );
Jedoch bekomme ich nun ne Meldung
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 12
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 12
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
Weichei
Dabei seit: 03.01.2013
Beiträge: 5

|
|
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
mfg
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Saladir: 04.01.2013 21:40.
|
|
|
|
|
serthy
Codemeister
  
Dabei seit: 29.07.2010
Beiträge: 628

|
|
Code 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
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von Nightwing: 05.01.2013 11:13.
|
|
|
|
|
Saladir
Weichei
Dabei seit: 03.01.2013
Beiträge: 5

|
|
Original von serthy
Code 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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Saladir: 05.01.2013 23:56.
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|