void bullet_create(VECTOR* vpos,VECTOR* vang,var speed, int demage)
{
var alive = 3000;
VECTOR pos,temp,vel;
vec_set(pos,vpos);
vec_set(vel,vector(speed,0,0));
vec_rotate(vel,vang);
while(alive > 0)
{
// calculate new position
vec_set(temp,vel);
vec_scale(temp,time_step);
vec_add(temp,pos);
c_trace(pos,temp,IGNORE_PASSABLE | USE_POLYGON); // optional: SCAN_TEXTURE
if(trace_hit)
{
if (you){
int i = 0;
while (i <= enemyCounter){
if (enemyName[i] == you){
if (enemyHelth[i] > 0){
enemyHelth[i] -= demage;
}else{
ent_remove(you);
}
}
i += 1;
}
}
alive = 0;
}
effect(p_bullet,1,pos,vel); // you may want to shorten vel on impact
vec_set(pos,temp); // move to new position
alive -= time_step;
wait(1);
}
}
function blockRocket(){
blockRocketBool = 1;
wait(60);
blockRocketBool = 0;
}
action setName(){
enemyName[enemyCounter] = me;
enemyHelth[enemyCounter] = 100;
enemyCounter += 1;
}
function main( )
{
initGame();
ent_create("rocket.mdl", vector(0,0,0), camera_follow);
ent_create("rocket.mdl", vector(200,200,0), setName);
ent_create("rocket.mdl", vector(100,300,0), setName);
while (1)
{
VECTOR move_speed;
while(1)
{
VECTOR temp;
vec_set(move_speed.x,nullvector);
move_speed.x = 100 * (key_w - key_s) * time_step;
move_speed.y = 5 * (key_a - key_d) * time_step;
c_move(car,move_speed.x, nullvector,GLIDE);
mouse_pos.x = mouse_cursor.x;
mouse_pos.y = mouse_cursor.y;
car.pan -= mouse_force.x;
car.tilt += mouse_force.y;
if(mouse_left)
{
if (mag_MG > 0){
vec_set(temp,vector(235,-20,-43));
vec_rotate(temp,camera.pan);
vec_add(temp,camera.x);
bullet_create(temp,camera.pan,500, 10);
wait(0.2);
vec_set(temp,vector(235,20,-43));
vec_rotate(temp,camera.pan);
vec_add(temp,camera.x);
bullet_create(temp,camera.pan,500, 10);
mag_MG -= 2;
}else{
if (rel_MG > 0){
relode();
}
}
}
if (key_r){
relode();
}
if (key_f && blockRocketBool == 0){
vec_set(temp,vector(210,0,-43));
vec_rotate(temp,camera.pan);
vec_add(temp,camera.x);
bullet_create(temp,camera.pan,500, 51);
blockRocket();
}
draw_text(str_printf(NULL,
"%d fps | %d | %d | %d",
(long)(16/time_frame),(long)mag_MG, (long)rel_MG, (long)youS),
5,5,COLOR_GREEN);
wait(1);
}
wait (1);
}
}