//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
VECTOR force;
VECTOR dist;
VECTOR absdist;
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
var my_height;
var jump_time = 1;
var jump_height = 55;
var speed_z = 0;
var fallgeschwindigkeit = 0;
var distanz_zum_boden;
VECTOR vFuesse;
vec_for_min(vFuesse,me);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#define health skill1
function main()
{
fps_max = 75;
fps_lock = 1; // NEEDED FOR PROPER WORK
level_load("1.WMB");
wait(3);
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
function handle_camera()
{
camera.arc = 90;
vec_lerp(camera.x,camera.x,vector(my.x,my.y,my.z + 50),0.5);
my.pan = camera.pan;
camera.pan -= 10 * mouse_force.x * time_step;
camera.tilt += 10 * mouse_force.y * time_step;
camera.tilt = clamp(camera.tilt,-80,80);
}
function handle_jump()
{
proc_kill(1);
jump_time = 1;
while (jump_time > -1 && player.health > 0)
{
on_space = NULL;
absdist.z = jump_height * time_step * jump_time;
jump_time -= 0.2 * time_step;
wait (1);
}
while (my_height > 10) {wait (1);}
jump_time = 1;
}
function handle_movement()
{
if(my_height <= 10)
{
if(jump_time == 1){on_space = handle_jump;}
if(!key_shift)
{
force.x = 10 * (key_w - key_s) * time_step;
accelerate(dist.x,force.x,0.5);
force.y = 10 * (key_a - key_d) * time_step;
accelerate(dist.y,force.y,0.5);
}
else
{
force.x = 10 * (key_w - key_s) * time_step;
accelerate(dist.x,force.x,1);
force.y = 10 * (key_a - key_d) * time_step;
accelerate(dist.y,force.y,1);
}
}
}
function schwerkraft()
{
if (c_trace(my.x, vector(my.x,my.y,my.z-1000), IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON) >0)
distanz_zum_boden = my.z + vFuesse.z - target.z;
else
distanz_zum_boden = 0;
if (distanz_zum_boden > 0)
distanz_zum_boden = clamp(distanz_zum_boden,0,accelerate(fallgeschwindigkeit,5,0.1));
else
fallgeschwindigkeit = 0;
}
action hero()
{
player = my;
set(my,INVISIBLE);
my.health = 100; // SET PLAYERS HEALTH TO 100
while(my.health > 0)
{
handle_movement(); // MOVEMENT
c_move(my,dist,absdist,IGNORE_PASSABLE|GLIDE);
handle_camera(); // CAMERA
schwerkraft();
wait(1);
}
}