Posted By: TheShooter
Sprinten mit Ausdauer - Denkfehler ? - 09/27/12 17:47
Hi Leute,
in mein Script hat sich ein Denkfehler eingeschlichen. Ich möchte, dass mein Spieler nicht mehr sprinten kann, sobald die Ausdauervariable auf null fällt. Dies sollte sich dann natürlich wieder generieren. Geh- und Sprintsounds sollten auch funktionieren.
Mein Code bisher:
Ich habe wirklich schon alles versucht, jedoch komme ich auf keine Lösung.
MfG,
TheShooter
PS:
sprint_v ist zuständig für die Ausdauer
sprint_act dient als Schalter fürs Rennen/Nicht Rennen bei z.B. der Soundfunktion
Ich habe mal die Variablen während der Laufzeit anzeigen lassen, und sprint_v kommt nie unter 2 (wie auch), dabei springt sprint_act dauernd zwischen 0 und 1 hin und her.
in mein Script hat sich ein Denkfehler eingeschlichen. Ich möchte, dass mein Spieler nicht mehr sprinten kann, sobald die Ausdauervariable auf null fällt. Dies sollte sich dann natürlich wieder generieren. Geh- und Sprintsounds sollten auch funktionieren.
Mein Code bisher:
Code:
void moveplayer() { var speed_down; VECTOR vFeet; move_min_z = -1; while(1) { my.pan -= mouse_force.x *20 *time_step; camera.tilt += mouse_force.y *20 *time_step; camera.tilt = clamp(camera.tilt,-90,90); var dist_down; if (c_trace(my.x,vector(my.x,my.y,my.z-5000),IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON) > 0) dist_down = my.z + vFeet.z - target.z; else dist_down = 0; if(dist_down > 0) dist_down = clamp(dist_down,0,accelerate(speed_down,2,0.1)); else speed_down = 0; var dist_ahead = 1*(key_w-key_s)*time_step; var dist_side = 1*(key_a-key_d)*time_step; var dist_sprint = 2* (key_w && key_shift) *time_step; move_min_z = 500; c_move(me,vector(dist_ahead,dist_side,0),vector(0,0,0), IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON | GLIDE); c_move(me,vector(0,0,0),vector(0,0,-dist_down), IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON | GLIDE); if(sprint_v > 2 && c_move(me,vector(dist_sprint,0,0),vector(0,0,0), IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON | GLIDE)) { sprint_act = 1; sprint_v = sprint_v -0.7 *time_step; } else sprint_act = 0; if(sprint_act == 0) { sprint_v = clamp(sprint_v,0,100); sprint_v = sprint_v +0.3 *time_step; } wait(1); } } function walksound() { while(1) { while(sprint_act == 0 && key_w || key_a || key_s || key_d ) { snd_play(walk_leaves01_snd,100,50); wait(45); snd_play(walk_leaves02_snd,100,50); wait(35); } while(sprint_act == 1 && key_w && key_shift) { snd_play(walk_leaves01_snd,100,50); wait(22); snd_play(walk_leaves02_snd,100,50); wait(22); } wait(1); } }
Ich habe wirklich schon alles versucht, jedoch komme ich auf keine Lösung.
MfG,
TheShooter
PS:
sprint_v ist zuständig für die Ausdauer
sprint_act dient als Schalter fürs Rennen/Nicht Rennen bei z.B. der Soundfunktion
Ich habe mal die Variablen während der Laufzeit anzeigen lassen, und sprint_v kommt nie unter 2 (wie auch), dabei springt sprint_act dauernd zwischen 0 und 1 hin und her.