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:
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.

Last edited by TheShooter; 09/27/12 17:53.

Staub ist das neue Prime!!

Programming is like sex:
One mistake and you have to support it for the rest of your life.

Aktuelles Projekt: http://thisiswargame.bplaced.net/index.html

A8 Commercial *freu*