Hi,I'am using 3D Gamestudio A7,I have a vechile.wdl script which i got when i downloaded GTA Streatham hill.I wanted to use this script in my GTA Game,but when i run my map it always gives several warning messages before it says startup failure.What should i do to make it work.Here is the script,Can someone tell me what should i do to fix it.

entity* vehicle_entity;
var vehicle_speed;
var trace_dist = 0;
var max_height = 0;
var func_vehicle;
var vehicle_dist[3];
var vehicle_force[3];
var headlight_pos[3] 180, 0, 310;
var freq;
var wheel_speed;
// Camera offsets
var vehicle_viewOffset[3]= -600,0,420; // where camera will be located relative to chassis center (cockpit) -600,90,420
var vehicle_viewAngle[3] = 0,550,0;
var vehicle_entity_exitVec[3] = 400,180,2;
var engine_sound; //handle for soundloop
var car_hit = 10;
var friction;
var v_angle;
var v_floornormal[3];
var spark_pos[3] = 180, 0, 310;
entity* dummy_car;



define vehicle_id = vehicle_entity;

bmap bmap_AudiR8 = <audir8.bmp>;

panel AudiR8_pan{
pos_x = 980;
pos_y = 730;
layer = 2;
bmap = bmap_AudiR8;
flags = refresh, d3d, overlay, transparent;

}
bmap bmap_car_enter = <car_enter.bmp>;

panel car_enter_pan{
pos_x = 5;
pos_y = 200;
layer = 2;
bmap = bmap_car_enter;
flags = refresh, d3d, overlay, transparent;

}



material BreakLightON
{
ambient_red = 255;
ambient_blue = 255;
ambient_green = 255;
diffuse_red = 255;
diffuse_blue = 50;
diffuse_green = 50;
emissive_red = 255;
emissive_blue = 50;
emissive_green = 50;
}


material BreakLightOff
{
ambient_red = 50;
ambient_blue = 50;
ambient_green = 50;
diffuse_red = 50;
diffuse_blue = 50;
diffuse_green = 50;
emissive_red = 50;
emissive_blue = 50;
emissive_green = 50;
}





material RevLightOn
{
ambient_red = 255;
ambient_blue = 255;
ambient_green = 255;
diffuse_red = 50;
diffuse_blue = 50;
diffuse_green = 50;
emissive_red = 255;
emissive_blue = 255;
emissive_green = 255;
}

material Blue_colour
{
ambient_red = 0;
ambient_blue = 40;
ambient_green = 0;
diffuse_red = 0;
diffuse_blue = 0;
diffuse_green = 0;
emissive_red = 0;
emissive_blue = 0;
emissive_green = 0;
}

material Green_colour
{
ambient_red = 1;
ambient_blue = 1;
ambient_green = 40;
diffuse_red = 0;
diffuse_blue = 0;
diffuse_green = 0;
emissive_red = 0;
emissive_blue = 0;
emissive_green = 0;
}

material Yellow_colour
{
ambient_red = 55;
ambient_blue = 0;
ambient_green = 55;
diffuse_red = 0;
diffuse_blue = 0;
diffuse_green = 0;
emissive_red = 0;
emissive_blue = 0;
emissive_green = 0;
}

material Purple_colour
{
ambient_red = 12;
ambient_blue = 34;
ambient_green = 0;
diffuse_red = 0;
diffuse_blue = 0;
diffuse_green = 0;
emissive_red = 0;
emissive_blue = 0;
emissive_green = 0;
}
material White_colour
{
ambient_red = 70;
ambient_blue = 70;
ambient_green = 70;
diffuse_red = 0;
diffuse_blue = 0;
diffuse_green = 0;
emissive_red = 0;
emissive_blue = 0;
emissive_green = 0;
}

bmap bcube=<t_day_sky+6.tga>;

function mtl_envmap_view()
{
mat_set(mtl.matrix,matViewInv);
mtl.matrix41=0;
mtl.matrix42=0;
mtl.matrix43=0;
}

function mtl_envmap_init()
{
//...maybe you should copy the mat_model properties here...
bmap_to_cubemap(mtl.skin1);
mtl.event=mtl_envmap_view;
mtl.enable_view=on;
}

material mtl_envmap
{
skin1=bcube;
event=mtl_envmap_init;

effect=
" texture entSkin1;
texture mtlSkin1;
matrix matMtl;
technique envmap
{
pass p0
{
texture[0]=<entSkin1>;
texture[1]=<mtlSkin1>;

zWriteEnable=true;
alphaBlendEnable=false;

colorArg1[0]=Texture;
colorOp[0]=Modulate2x;
colorArg2[0]=Diffuse;

colorArg1[1]=Texture;
colorOp[1]=blendCurrentAlpha;
addressU[1]=Clamp;
addressV[1]=Clamp;
texCoordIndex[1]=cameraSpaceReflectionVector;
textureTransformFlags[1]=Count3;
textureTransform[1]=<matMtl>; // transform camera space back to world space
}
}
";
}


function my_headlight()

{

my.invisible = off;

my.flare = on;
my.passable = on;
my.bright = on;
my.light = on;
my.translucent = on;
my.alpha = 20;
my.lightrange = 1156; //1656
my.overlay = on;
my.red = 235;
my.green = 235;
my.blue = 235;
my.decal = on;
my.scale_x*=1.6;
my.scale_y*=5;
my.scale_z*=1;
my.tilt = 85;

while(1)
{
// play with the numerical values, they set the position of the headlight (x, y, z)

vec_set (my.x, vector (950, 110, 30));

vec_rotate (my.x, you.pan);

vec_add (my.x, you.x);

my.pan = you.pan;

wait (1);

}

if( time_day >= 0600 && time_day < 1000 ) // morning
{
ent_remove(me);
wait(1);
return;
}

wait(1);

}


}

function sec_headlight()

{

my.invisible = off;

my.flare = on;
my.passable = on;
my.bright = on;
my.light = on;
my.translucent = on;
my.alpha = 20;
my.lightrange = 1156; //1656
my.overlay = on;
my.red = 235;
my.green = 235;
my.blue = 235;
my.decal = on;
my.scale_x*=1.6;
my.scale_y*=5;
my.scale_z*=1;
my.tilt = 85;

while(1)
{
// play with the numerical values, they set the position of the headlight (x, y, z)

vec_set (my.x, vector (950, -110, 30));

vec_rotate (my.x, you.pan);

vec_add (my.x, you.x);

my.pan = you.pan;

wait (1);

}

if( time_day >= 0600 && time_day < 1000 ) // morning
{
ent_remove(me);
wait(1);
return;
}

wait(1);

}


}

entity* breaklight;

function break_light()

{

breaklight = me;


my.flare = on;
my.passable = on;
my.bright = on;
my.light = on;
my.translucent = on;
my.alpha = 16;
//my.lightrange = 456; //1656
my.overlay = on;
my.red = 235;
my.green = 50;
my.blue = 20;
//my.decal = on;
my.scale_x*=0.5;
my.scale_y*=0.5;
my.scale_z*=0.5;
my.pan = 180;

while(1)
{
// play with the numerical values, they set the position of the headlight (x, y, z)

vec_set (my.x, vector (-855, 0, 145));

vec_rotate (my.x, you.pan);

vec_add (my.x, you.x);

my.pan = you.pan;

wait(1);

}

}

function car_door()
{
ent_animate(my, "open", my.skill10, anm_cycle); // play the "walk" animation
media_play("CarOpen.wav", null, 100);
wait(-2);
ent_animate(my, "close", my.skill10, anm_cycle); // play the "walk" animation
media_play("CarClose.wav", null, 100);
wait(-5);
ent_animate(my, "exit", my.skill10, anm_skip); // play the "walk" animation
wait(-2);
wait(1);
return;
}

function car_enter()
{
car_enter_pan.visible = on;
wait(-3);
car_enter_pan.visible = off;
}
var cam_broke;

function display_info()
{
wait(-5);
carinfo_pan.visible = on;
wait(-15);
carinfo_pan.visible = off;
}
function vehicle_drive()
{
while (vehicle_entity._old_entity_handle == plSelect_curr_model) { wait(1); }
if((YOU == plBiped01_entity) && (plSelect_curr_model != vehicle_entity))
{
if (event_type == event_scan)
{
car_enter();
{
if(event_type == event_scan && key_enter == on) && (cam_broke == 0)
{


car_door();
rain_on = 0;
plBiped01_entity.invisible = on;
//wait(3);
// save the old entity / model
vehicle_entity._old_entity_handle = handle(plSelect_curr_ent);
vehicle_entity._old_model = plSelect_curr_model;

// make us the active model
plSelect_curr_model = vehicle_entity;
car_camera();
wait(-2);


plBiped01_entity.invisible = on;

activate_vehicle();

AudiR8_pan.visible = ON;
headlightON();
display_info();
engine_sound = snd_loop(plCar01_engine_wav, 50,0); // play the engine sound in a loop
snd_tune(engine_sound, 100, 50, 0); //80% of real frequency

v_angle.x = 0;
v_angle.y = 0;
v_angle.z = 0;

v_floornormal.x = normal.x; // set my_floornormal to the normal of the surface
v_floornormal.y = normal.y;
v_floornormal.z = normal.z;

v_angle.tilt = 0;
v_angle.roll = 0;
if((v_floornormal.x != 0) || (v_floornormal.y != 0))

{ // on a slope?
// rotate the floor normal relative to the car
v_angle.pan = -my.pan;
vec_rotate(v_floornormal,my_angle);
// calculate the destination tilt and roll angles
v_angle.tilt = -asin(v_floornormal.x);
v_angle.roll = -asin(v_floornormal.y);
}

vehicle_force.x = vehicle_speed; // forward movement
vehicle_force.y = 0; // no side movement
vehicle_force.z = 1300; // no gravity

wheel_speed += vehicle_speed; // increase anim_percent by the value in drive_dist
if( wheel_speed > 100 ) { wheel_speed -= 100; } // if anim_percent maxes out, subtract 100 from it
if( wheel_speed < 0 ) { wheel_speed += 100; } // if anim_percent goes below zero, add 100 to it






while(plSelect_curr_ent == vehicle_entity)
{
ent_animate(my, "drive", my.skill10, anm_cycle);
plBiped01_entity.invisible = on;
c_move(me,vector(0,0,-10),nullvector,GLIDE);
//vehicle_force.z += accelerate(my._gid01_vel_z,-bipedPhy01_gravity,0);
if (key_cuu == on )
{

vehicle_speed += 12*time_step;
c_move(me,vector(vehicle_speed,0,0),nullvector,GLIDE);
ent_mtlset(me,BreakLightOff,8);
//breaklight.invisible = on;
ent_animate(my, "drive", my.skill10, anm_cycle); // play the "walk" animation

// 25/32 controls the animation speed, 25 = desired frame rate, 32 = the number of "walk" animation frames

my.skill10 += 1/ 10 * (vehicle_speed/2);

my.skill10 %= 100;
snd_tune(engine_sound, 50, freq+40, 0); //80% of real frequency
}
if (key_cuu == off)
{
vehicle_speed -= 20*time_step;
c_move(me,vector(vehicle_speed,0,0),nullvector,GLIDE);
ent_mtlset(me,BreakLightOn,8);
//breaklight.invisible = off;
snd_tune(engine_sound, 50, freq-40, 0); //80% of real frequency
}
if (key_cud == on)
{
vehicle_speed -= 3*time_step;
c_move(me,vector(vehicle_speed,0,0),nullvector,GLIDE);
ent_mtlset(me,RevLightOn,9);
snd_tune(engine_sound, 50, 200, 0); //80% of real frequency
}

if (key_cul == on && vehicle_speed > 0)
{

my.pan += 3.5 * time; //3.5

}
if (key_cur == on && vehicle_speed > 0)
{

my.pan -= 3.5 * time; //3.5

}

if(key_space == on)
{
vehicle_speed = 0;

}


if(vehicle_speed >= 200) //don't let speed get higher than 200
{
vehicle_speed = 200;
ent_mtlset(me,BreakLightOff,8);
}

if(vehicle_speed <= 0)
{

ent_mtlset(me,BreakLightOn,8);
//breaklight.invisible = off;
vehicle_speed += 20*time_step;
c_move(me,vector(vehicle_speed,0,0),nullvector,GLIDE);
snd_tune(engine_sound, 50, 40, 0); //80% of real frequency
}

freq=vehicle_speed;

if(vehicle_speed <= 40)
{
snd_tune(engine_sound, 50, 40, 0); //80% of real frequency
}
if(event_type == EVENT_ENTITY)
{

if(YOU == dummy_car)
{
ent_create( null, spark_pos, WeaponFX00_Spark_FX);
}
}


if(event_type == EVENT_IMPACT)
{
car_hit -= 1;
}

if (event_type == EVENT_BLOCK)
{
car_hit -= 1;
}



wait(1);
}


}


}


AudiR8_pan.TRANSLUCENT = ON;AudiR8_pan.alpha = 0;
while (AudiR8_pan.alpha < 100){
AudiR8_pan.alpha += 5*time_step;
wait(1);
}
wait(-3);
while (AudiR8_pan.alpha > 0){
AudiR8_pan.alpha -= 5*time_step;
wait(1);
AudiR8_pan.visible = OFF;

}


return;
}


}
// Desc: deactivate the car model
function vehicle_Deactivate()
{
// hide the player car
// plCar01_entity.visible = off;

temp=temp;
snd_stop(engine_sound);


//++ToDo: make this optional
}


function vehicle_EventExit()
{
while(plSelect_curr_ent == vehicle_entity)
{


// set YOU to the car
YOU = vehicle_entity;

// set ME to the old entity
ME = ptr_for_handle(vehicle_entity._old_entity_handle);



car_door();

vec_set(my.x,YOU.x);

// Try to move outside the car
vec_set(temp,vehicle_entity_exitVec);
vec_rotate(temp,vehicle_entity.pan);
move_mode = ignore_you + ignore_passable + ignore_passents + ignore_push + glide + use_box;
c_move(my,nullvector,temp,move_mode);
if(in_solid == 1) { return(-3); } // we couldn't exit the car

vehicle_Deactivate();


// switch the current entity to the old entity
PlSelect_Switch(vehicle_entity._old_model);
vehicle_entity._old_model = 0;
media_stop(track_handle);

//anim_percent = 100;
media_loop("city.ogg", null, 80);

wait(1);
}

wait(1);
}

}


function headlightON()
{

if( time_day >= 2100 || time_day < 0600 ) // night
{

ent_create("light.bmp", nullvector, my_headlight); // create a tiny headlight model
//ent_create("brakelight.bmp", nullvector, break_light);
ent_create("light.bmp", nullvector, sec_headlight); // create a tiny headlight model

wait(1);
return;

}




}

function car_camera()
{

while(1)
{
cameraTarget_pos_vec.x += -4;
cameraTarget_ang_vec.pan += 0.8;

wait(1);
}

wait(-2);

return;

}

function activate_vehicle()
{

while (vehicle_entity == NULL) {ent_animate(my, "exit", my.skill10, anm_skip); wait(1); }
// set the player select current entity to this biped entity
plSelect_curr_ent = vehicle_entity;
//ent_animate(my, "close", my.skill10, anm_skip); // play the "walk" animation
//media_play("CarClose.wav", null, 100);
//wait(-4);



// make sure they are visible
vehicle_entity.invisible = off;

// make this the active player model
PlSelect_Switch(vehicle_entity);
plBiped01_entity.visible = off;



radio();

on_r = toggle_radio;
on_x = vehicle_EventExit;
on_joy4 = vehicle_EventExit;
if(cam_broke == 1)
{
cameraTarget_ang_vec.pan += 90;
}

while(vehicle_entity == plSelect_curr_model)
{
plSelect_state = plSelect_state_active; // player is active

// Update the camera target
cameraTarget_ent = vehicle_entity;
vec_set(cameraTarget_pos_vec,vehicle_viewOffset);
vec_rotate(cameraTarget_pos_vec,vehicle_entity.pan);
vec_add(cameraTarget_pos_vec,vehicle_entity.x);
vec_set(cameraTarget_ang_vec,vehicle_entity.pan);
vec_add(cameraTarget_ang_vec,vehicle_viewAngle);

wait(1);




}

}
bmap bmap_paynspray = <paynspray.bmp>;
panel paynspray_pan{
pos_x = 0;
pos_y = 0;
layer = 1000;
bmap = bmap_paynspray;
flags = refresh, d3d, overlay;
}


function random_colour()
{
var colour_handle;
var colour_number;
randomize();
colour_number = int(random(5))+1; // use 5 sound tracks in this example

{

if (colour_number == 1)

{

ent_mtlset(me,Blue_colour,17);
}

if (colour_number == 2)

{

ent_mtlset(me,White_colour,17);
}

if (colour_number == 3)

{

ent_mtlset(me,Yellow_colour,17);

}

if (colour_number == 4)

{

ent_mtlset(me,Purple_colour,17);
}
if (colour_number == 5)

{

ent_mtlset(me,Green_colour,17);
}
}




function colour_change()
{

if(screen_size.y == 900)
{
paynspray_pan.pos_x = 90;
paynspray_pan.pos_y = -80;
}

if(screen_size.y == 1050)
{
paynspray_pan.pos_x = 190;
paynspray_pan.pos_y = -15;
}



wait(-5);
paynspray_pan.visible = ON;
random_colour();
balance -= 25;
wait(-3);
paynspray_pan.visible = OFF;

}





action vehicle
{

if(screen_size.y == 800)
{
AudiR8_pan.pos_y = 506;

}
if(screen_size.y == 900)
{

AudiR8_pan.pos_x = 1140;
}


if(screen_size.y == 1050)
{
AudiR8_pan.pos_y = 856;
AudiR8_pan.pos_x = 1360;
}
vehicle_entity = my;
c_setminmax(me);
my.event = vehicle_drive;
my.fat = on;
my.ENABLE_IMPACT = ON;
my.enable_scan = on;
my.enable_detect = on;
my.enable_impact = on;
my.ENABLE_TRIGGER = ON;
my.enable_entity = on; // sensitive to crashes
my.enable_shoot = on;
my.enable_block = on;
my.POLYGON = on;
my.push = 1000;

while (plSelect_curr_ent == null) {wait (1);}
// wait until the player has come closer than 50 quants to the switch
while(1)
{
while (vec_dist (garage.x, my.x) > 600) {wait (1);}
vehicle_speed = 0.01;
colour_change();
wait(-20);
wait(1);
}


my.metal = on;
my.ambient = 50;
my.albedo = 50;
my.shadow = on;
my.cast = on;
ph_setgravity(nullvector);
phent_setmass(my,10, PH_BOX);
phent_setdamping(my,0, 0);



}

var hit_speed;


action physics_action

{

my.passable = off;

my.fat = on;

//my.invisible = on;

ph_setgravity (vector(0, 0, -3000)); //386 -2886

my.shadow = on;

phent_settype (my, ph_rigid, ph_box);

phent_setmass (my, 1, ph_box); //20

phent_setfriction (my, 10); //50

phent_setdamping (my, 50, 50); //50, 50

phent_setelasticity (my, 10, 10); // 30, 30

while (vehicle_entity) {wait (1);} // make sure to use your own player pointer name everywhere in this action

while (1)

{

if(key_l == 1)
{
health = 0;
}
hit_speed.x = 25; // kick speed

hit_speed.y = 0;

hit_speed.z = 5; // make it jump up a bit as well

vec_rotate(hit_speed, vehicle_entity.pan); // kick it depending on player's angle

if (vec_dist (vehicle_entity.x, my.x) < 300) // 70 is the distance that triggers the kicking

{

phent_addvelcentral(my, hit_speed); // kick the box

}

wait (1);

}
}

Last edited by Emad1000; 09/11/12 12:07.