//////////////////////////////////////////////////////////////////////////////
#include <acknex.h>
#include <default.c>
//////////////////////////////////////////////////////////////////////////////
//STRING* start_wmb = "start.wmb";
//////////////////////////////////////////////////////////////////////////////
//SOUND* beep_sound = "beep.wav";
//////////////////////////////////////////////////////////////////////////////
function trace_below();
//////////////////////////////////////////////////////////////////////////////
ENTITY* tile1;
ENTITY* tile2;
ENTITY* tile3;
ENTITY* tile4;
ENTITY* tile5;
ENTITY* tile6;
ENTITY* tile7;
ENTITY* tile8;
ENTITY* tile9;
//////////////////////////////////////////////////////////////////////////////
action car()
{
// while (player == NULL) {wait (1);}
var car_speed;
while ((tile1 == NULL) || (tile1 == NULL) || (tile3 == NULL) || (tile4 == NULL) || (tile5 == NULL)
|| (tile6 == NULL) || (tile7 == NULL) || (tile8 == NULL) || (tile9 == NULL)) {wait (1);}
player = me;
while (1)
{
if (car_speed != 0) // can't rotate the car if it isn't moving
{
my.pan -= 0.2 * (key_a-key_d) * car_speed * time_step;
}
car_speed = 3 * (key_w-key_s) * time_step + maxv (1 - time_step * 0.2, 0) * car_speed; // use the arrow keys, press and hold shift to double the speed
c_move(my,car_speed,nullvector,IGNORE_PASSABLE | GLIDE);
vec_set(camera.x,my.x);//couldnt get it to merge with the player object so this helped at the time
if (key_t == 0) // normal 3rd person camera view
{
camera.x = player.x - 300 * cos(player.pan);
camera.y = player.y - 300 * sin(player.pan);
camera.z = player.z + 100;
camera.pan += 0.2 * ang (player.pan - camera.pan);
camera.tilt = -10;
}
else // press and hold "T" to get a top view
{
camera.x = player.x;
camera.y = player.y;
camera.z = 8000;
camera.pan = player.pan;
camera.tilt = -90;
}
if (total_frames % 31) // trace twice a second, starting with the 1st frame
{
trace_below(); // trace the name of the texture below the car
}
wait (1);
}
}
action sky_sphere()
{
// my.nofog = on; // remove the comment to display the skybox even if the fog is on
set(my,PASSABLE); // don't stop the entities that use ignore_passable with ent_move
while (player == NULL) {wait (1);} // wait for the player (the car) to be created
while (1)
{
// move the sky together with the player to give the illusion of a huge level
my.x = player.x;
my.y = player.y;
wait (1);
}
}
action tile_1() // just name these level tiles
{
tile1 = me;
}
action tile_2()
{
tile2 = me;
}
action tile_3()
{
tile3 = me;
}
action tile_4()
{
tile4 = me;
}
action tile_5()
{
tile5 = me;
}
action tile_6()
{
tile6 = me;
}
action tile_7()
{
tile7 = me;
}
action tile_8()
{
tile8 = me;
}
action tile_9()
{
tile9 = me;
}
function trace_below()
{
c_trace(my.x,vector(my.x,my.y,my.z-10000),IGNORE_ME|IGNORE_PASSABLE|SCAN_TEXTURE);//didnt know if it needs more..
if (str_cmpi ("one", tex_name)) // if the texture below the car is named "one" in wad
{
tile2.x = tile1.x;
tile2.y = tile1.y - 2048;
tile3.x = tile1.x - 2048;
tile3.y = tile1.y - 2048;
tile4.x = tile1.x + 2048;
tile4.y = tile1.y;
tile5.x = tile1.x + 2048;
tile5.y = tile1.y - 2048;
tile6.x = tile1.x - 2048;
tile6.y = tile1.y;
tile7.x = tile1.x + 2048;
tile7.y = tile1.y + 2048;
tile8.x = tile1.x;
tile8.y = tile1.y + 2048;
tile9.x = tile1.x - 2048;
tile9.y = tile1.y + 2048;
}
if (str_cmpi ("two", tex_name)) // if the texture below the car is named "two" in wad
{
tile1.x = tile2.x;
tile1.y = tile2.y + 2048;
tile3.x = tile2.x;
tile3.y = tile2.y - 2048;
tile4.x = tile2.x + 2048;
tile4.y = tile2.y + 2048;
tile5.x = tile2.x + 2048;
tile5.y = tile2.y;
tile6.x = tile2.x + 2048;
tile6.y = tile2.y - 2048;
tile7.x = tile2.x - 2048;
tile7.y = tile2.y + 2048;
tile8.x = tile2.x - 2048;
tile8.y = tile2.y;
tile9.x = tile2.x - 2048;
tile9.y = tile2.y - 2048;
}
if (str_cmpi ("three", tex_name)) // if the texture below the car is named "three" in wad
{
tile1.x = tile3.x - 2048;
tile1.y = tile3.y + 2048;
tile2.x = tile3.x;
tile2.y = tile3.y + 2048;
tile4.x = tile3.x - 2048;
tile4.y = tile3.y;
tile5.x = tile3.x + 2048;
tile5.y = tile3.y + 2048;
tile6.x = tile3.x + 2048;
tile6.y = tile3.y;
tile7.x = tile3.x - 2048;
tile7.y = tile3.y - 2048;
tile8.x = tile3.x;
tile8.y = tile3.y - 2048;
tile9.x = tile3.x + 2048;
tile9.y = tile3.y - 2048;
}
if (str_cmpi ("four", tex_name)) // if the texture below the car is named "four" in wad
{
tile1.x = tile4.x - 2048;
tile1.y = tile4.y;
tile2.x = tile4.x - 2048;
tile2.y = tile4.y - 2048;
tile3.x = tile4.x - 2048;
tile3.y = tile4.y + 2048;
tile5.x = tile4.x;
tile5.y = tile4.y - 2048;
tile6.x = tile4.x;
tile6.y = tile4.y + 2048;
tile7.x = tile4.x + 2048;
tile7.y = tile4.y;
tile8.x = tile4.x + 2048;
tile8.y = tile4.y - 2048;
tile9.x = tile4.x + 2048;
tile9.y = tile4.y + 2048;
}
if (str_cmpi ("five", tex_name)) // if the texture below the car is named "five" in wad
{
tile1.x = tile5.x - 2048;
tile1.y = tile5.y + 2048;
tile2.x = tile5.x - 2048;
tile2.y = tile5.y;
tile3.x = tile5.x - 2048;
tile3.y = tile5.y - 2048;
tile4.x = tile5.x;
tile4.y = tile5.y + 2048;
tile6.x = tile5.x;
tile6.y = tile5.y - 2048;
tile7.x = tile5.x + 2048;
tile7.y = tile5.y + 2048;
tile8.x = tile5.x + 2048;
tile8.y = tile5.y;
tile9.x = tile5.x + 2048;
tile9.y = tile5.y - 2048;
}
if (str_cmpi ("six", tex_name)) // if the texture below the car is named "six" in wad
{
tile1.x = tile6.x - 2048;
tile1.y = tile6.y - 2048;
tile2.x = tile6.x - 2048;
tile2.y = tile6.y + 2048;
tile3.x = tile6.x - 2048;
tile3.y = tile6.y;
tile4.x = tile6.x;
tile4.y = tile6.y - 2048;
tile5.x = tile6.x;
tile5.y = tile6.y + 2048;
tile7.x = tile6.x + 2048;
tile7.y = tile6.y - 2048;
tile8.x = tile6.x + 2048;
tile8.y = tile6.y + 2048;
tile9.x = tile6.x + 2048;
tile9.y = tile6.y;
}
if (str_cmpi ("seven", tex_name)) // if the texture below the car is named "seven" in wad
{
tile1.x = tile7.x - 2048;
tile1.y = tile7.y + 2048;
tile2.x = tile7.x;
tile2.y = tile7.y + 2048;
tile3.x = tile7.x + 2048;
tile3.y = tile7.y + 2048;
tile4.x = tile7.x - 2048;
tile4.y = tile7.y;
tile5.x = tile7.x - 2048;
tile5.y = tile7.y - 2048;
tile6.x = tile7.x + 2048;
tile6.y = tile7.y;
tile8.x = tile7.x;
tile8.y = tile7.y - 2048;
tile9.x = tile7.x + 2048;
tile9.y = tile7.y - 2048;
}
if (str_cmpi ("eight", tex_name)) // if the texture below the car is named "eight" in wad
{
tile1.x = tile8.x + 2048;
tile1.y = tile8.y + 2048;
tile2.x = tile8.x + 2048;
tile2.y = tile8.y;
tile3.x = tile8.x + 2048;
tile3.y = tile8.y - 2048;
tile4.x = tile8.x - 2048;
tile4.y = tile8.y + 2048;
tile5.x = tile8.x - 2048;
tile5.y = tile8.y;
tile6.x = tile8.x - 2048;
tile6.y = tile8.y - 2048;
tile7.x = tile8.x;
tile7.y = tile8.y + 2048;
tile9.x = tile8.x;
tile9.y = tile8.y - 2048;
}
if (str_cmpi ("nine", tex_name)) // if the texture below the car is named "nine" in wad
{
tile1.x = tile9.x + 2048;
tile1.y = tile9.y - 2048;
tile2.x = tile9.x;
tile2.y = tile9.y - 2048;
tile3.x = tile9.x - 2048;
tile3.y = tile9.y - 2048;
tile4.x = tile9.x + 2048;
tile4.y = tile9.y;
tile5.x = tile9.x - 2048;
tile5.y = tile9.y + 2048;
tile6.x = tile9.x - 2048;
tile6.y = tile9.y;
tile7.x = tile9.x + 2048;
tile7.y = tile9.y + 2048;
tile8.x = tile9.x;
tile8.y = tile9.y + 2048;
}
}
void main()
{
var video_screen = 2;
video_switch(6,32,2);//used in conjunction with video_window
// video_window(nullvector,nullvector,112,"Care to take a chance with me?");
video_window(vector(200,200,0),vector(800,400,0),48,"Deadly Ducks - The Avenger!");
level_load("start.wmb");
wait(3);
camera.clip_far = 15000;//clipfar. If you've made too big level and it lags, reduce it
camera.clip_near = 0;//since camera can go very close to walls, we set it to 0
camera.arc = 70;//makes it look more unique ;)
move_friction = 0;//gliding requires this one
ent_create("rallycar.mdl",vector(0,0,50),car);//and finaly, create the player entity
ent_createlayer("scifi1b+6.tga", SKY | CUBE | VISIBLE, 0);
fps_max = 60;
fog_color = (fog_color == 0); // set fog_color to 0 (no fog) or 1
camera.fog_start = 500; // the fog starts at 500 quants
camera.fog_end = 2500; // and ends at 2500 quants
}