function reload_timer()
{
if (var_reload_timer_check == 1)
{
return;
}
var_reload_timer_check = 1;
while(1)
{
var_reload_timer -= time_step/16;
if (var_reload_timer <= 0)
{
var_reload_timer_check = 0;
return;
}
wait(1); ;
}
}
function move_players()
{
while (1)
{
c_move(my,vector(my.skill1 * time_step,0,0),nullvector,IGNORE_SPRITES|GLIDE);
c_rotate(my,vector((my.skill2 * time_step),0,0),USE_AABB);
ent_sendnow(my);
wait (1);
}
}
function players_fired()
{
if (connection == 2)
{
if (var_reload_timer <= 0)
{
client_fired = 1;
var_reload_timer = my.skill10;
}
wait (1);
client_fired = 0;
reload_timer();
}
if (connection == 3)
{
server_fired = 1;
wait (1);
reload_timer();
server_fired = 0;
}
}
function remove_bullets() // this function runs when the bullet collides with something
{
wait (1); // wait a frame to be sure (don't trigger engine warnings)
ent_remove (my); // and then remove the bullet
}
function move_bullets()
{
var bullet_speed[3];
my.event = remove_bullets;
my.pan = bullet_pan;
bullet_speed.x = 10 * time_step;
bullet_speed.y = 0; // the bullet doesn't move sideways
bullet_speed.z = 0; // or up / down on the z axis
while (my)
{
my.ENABLE_IMPACT = ON;
my.ENABLE_ENTITY = ON;
my.ENABLE_BLOCK = ON;
wait(1);
c_setminmax(me);
c_move (my, bullet_speed, nullvector, IGNORE_PASSABLE | IGNORE_YOU);
ent_sendnow(my);
wait (1);
}
}
function main()
{
fps_max = 60;
camera.z = 5000;
camera.tilt = -90;
ifdef client;
while(connection== 0) {wait(1);} // wait until level loaded and connection set
endif;
level_load(world_str); // load level
sleep(.5); // make sure level is loadedif (!connection)
// on_mouse_left = players_fired;
display_info();
if (connection == 2)
{
my = ent_create (str_jeepmdl_mg, vector (0,20,0), move_players);
wait (-0.5);
my.enable_impact = on;
client_ent = handle(my);
send_var (client_ent);
my.skill10 = 2;
my.skill5 = 5; // Skill5 == Driverskill
my.skill3 = 10; // Maximum Speed
on_mouse_left = players_fired;// display_info();
while (1)
{
on_mouse_left = players_fired;
var_reload_timer_display = int(var_reload_timer * 60);
if (key_w == on) && (my.skill1 < my.skill3)
{
my.skill1 +=1 * time_step;
}
if (key_s == on) && ((my.skill1) > ((my.skill3 / 2) * -1))
{
my.skill1 -=1 * time_step;
}
if (key_a - key_d == 0)
{
my.skill2 = 0 * time_step;
}
if (key_a - key_d != 0) && (my.skill1 < 0)
{
my.skill2 = ((key_d - key_a)*(12 - my.skill5)) * time_step;
}
if (my.skill1 > 0) && (key_a - key_d != 0)
{
my.skill2 = ((key_a - key_d)*(12 - my.skill5)) * time_step;
}
if (my.skill1 == 0) && (key_a - key_d != 0)
{
my.skill2 = 0;
}
if (key_space == on)
{
my.skill1 = 0;
}
send_skill (my.skill1, SEND_VEC);
if (client_fired == 1) && (var_reload_timer <= 0)
{
var_reload_timer = my.skill10;
}
send_var (client_fired);// send client_fired to the server
// beep;
// var_reload_timer = my.skill10;
// }
wait (1);
}
}
if (connection == 3)
{
my = ent_create (str_jeepmdl_srm, vector (100, 80, 0), move_players);
wait (-0.5);
var my_rocket_launch_points_array[1] = 208, 256;
on_mouse_left = players_fired;
my.skill10 = 5; // == Fire_lag (relaod time in seconds)
my.skill5 = -4; // Skill5 == driver-Skill
my.skill3 = 10; // Maximum Speed
var bullet_pos[3];
while (1)
{
var_reload_timer_display = int(var_reload_timer * 31);
on_mouse_left = players_fired;
if (key_w == on) && (my.skill1 < my.skill3)
{
my.skill1 +=1 * time_step;
}
if (key_s == on) && ((my.skill1) > ((my.skill3 / 2) * -1))
{
my.skill1 -=1 * time_step;
}
if (key_a - key_d == 0)
{
my.skill2 = 0 * time_step;
}
if (key_a - key_d != 0) && (my.skill1 < 0)
{
my.skill2 = ((key_d - key_a)*(12 - my.skill5)) * time_step;
}
if (my.skill1 > 0) && (key_a - key_d != 0)
{
my.skill2 = ((key_a - key_d)*(12 - my.skill5)) * time_step;
}
if (my.skill1 == 0) && (key_a - key_d != 0)
{
my.skill2 = 0;
}
if (key_space == on)
{
my.skill1 = 0;
}
if ((server_fired) && (var_reload_timer <= 0))
{
vec_for_vertex (bullet_pos,my,my_rocket_launch_points_array[0]);
bullet_pan = my.pan;
ent_create(str_SRMRocket,vector(bullet_pos.x,bullet_pos.y,bullet_pos.z), move_bullets);
vec_for_vertex (bullet_pos,my,my_rocket_launch_points_array[1]);
bullet_pan = my.pan;
ent_create(str_SRMRocket,vector(bullet_pos.x,bullet_pos.y,bullet_pos.z), move_bullets);
var_reload_timer = my.skill10;
}
if (client_fired)
{
you = ptr_for_handle(client_ent);
vec_for_vertex (bullet_pos,you,10);
bullet_pan = you.pan;
ent_create(str_BulletMG,vector(bullet_pos.x,bullet_pos.y,bullet_pos.z), move_bullets);
}
wait(1);
}
wait (1);
}
}