Gamestudio Links
Zorro Links
Newest Posts
Executing Trades on Next Bar Open
by Zheka. 06/20/24 14:26
Lapsa's very own thread
by rki. 06/19/24 11:27
A simple game ...
by VoroneTZ. 06/18/24 10:50
Face player all the time ...
by bbn1982. 06/18/24 10:25
Zorro Beta 2.61: PyTorch
by jcl. 06/10/24 14:42
New FXCM FIX Plugin
by flink. 06/04/24 07:30
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 692 guests, and 1 spider.
Key: Admin, Global Mod, Mod
Newest Members
Mino, squik, AemStones, LucasJoshua, Baklazhan
19061 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
newton custom car script #122644
04/10/07 09:07
04/10/07 09:07
Joined: Dec 2006
Posts: 65
A
andy_1984 Offline OP
Junior Member
andy_1984  Offline OP
Junior Member
A

Joined: Dec 2006
Posts: 65
this is my real first big attempt in months at trying to do somthing, spent a good few hours on this last night and i know its not the best. the steering is prety bad with a steering wheel were it turns realy fast and cant get a nice smooth motion and turning faster the more the wheel is turned which im updating tonight and theres some weird bug that makes a6 crash when i change from a higher gear into gear 0 "Neutral". other than that im prety proud and have a better understanding of scripting, watch out for me alot of code borrowed from elsewhere and credit will be given i just cant remember who but ill find out.

Replace newtons Vehicle_playground wdl with code below

modifications:
1. rear View mirror
2. simple gear system (maths needs tweaking)
3. engine sounds
4. braking sounds when at high speeds no sound at lower speeds
5. brake now does not reverse you must select reverse gear and use accelerator
6. simple steering wheel intigration (steering needs refined)
7. 1st person camera (cockpit cam)

Todo:
1. driver and passanger side mirrors
2. virtual steering wheel
3. better steering with steering wheel
4. better internal camera
5. better gear and speedo display
6. map gear change to shifters on steering wheel or buttons
Quote:



var video_mode=8;
var video_depth=32;

entity* p_vehicle;

include <sky.wdl>;
include <newton.wdl>;
include <newtonScript2.wdl>;
include <newtonVehicle.wdl>;

var d3d_alphadepth=32;
var d3d_anisotropy=4;
var clip_size=0;
var enginenoise;
var screech;
var Gtorque=0; // 0 - neutral
var gear_num;
var omega;
var resistance;
var steer;
var torque;
var throttle;
var steer_x;
string s_level=<vehicle_playground.wmb>;
string s_levelcls=<vehicle_playground.cls>;
string newtonLevel_cls=s_levelcls;

font Myfont, <ackfont.pcx>, 6,9; //The Font
sound engine_wav = <engine.wav>;
sound tire_screech = <tire_screech.wav>;
////////////////////////////////////////////////////////////////////////////////////////////
panel steeringwheel_display
{

pos_x = 640;
pos_y = 380;
layer = 10;
digits = 120,15,8,myfont,1,steer_x;
flags = overlay, refresh, visible;
}

panel gear_display
{

pos_x = 640;
pos_y = 370;
layer = 10;
digits = 120,15,8,myfont,1,gear_num;
flags = overlay, refresh, visible;
}

panel torque_display
{

pos_x = 640;
pos_y = 360;
layer = 10;
digits = 120,15,8,myfont,1,torque;
flags = overlay, refresh, visible;
}

panel speed_display
{

pos_x = 640;
pos_y = 350;
layer = 10;
digits = 120,15,8,myfont,1,omega;
flags = overlay, refresh, visible;
}

panel throttle_display
{

pos_x = 640;
pos_y = 340;
layer = 10;
digits = 120,15,8,myfont,1,throttle;
flags = overlay, refresh, visible;
}

view rear_view
{
layer = 1;
pos_x = 400;
pos_y = 0;
size_x = 400;
size_y = 100;
arc = 45;
aspect = 1;
offset_x = 0;
offset_y = 0;
ambient = 10;
fog = 10;
flags = visible;
}

function update_views()
{
rear_view.genius = my;
rear_view.arc = -80;
rear_view.x = my.x;
rear_view.y = my.y;
rear_view.z = my.z;
rear_view.pan = my.pan + 180;
rear_view.roll = -my.roll;
rear_view.tilt = -my.tilt +6;
}

starter move_camera()
{
// camera.arc=70;
camera.clip_near=20;
camera.clip_far=24000;

while(!p_vehicle){wait(1);}

while(1)
{
//trying proc late to see if it resovles camera lag
proc_late(); //havnt tested with this function yet
camera.x = p_vehicle.x - 10 * cos(p_vehicle.pan);
camera.y = p_vehicle.y - 10 * sin(p_vehicle.pan);
camera.z = p_vehicle.z + 18;
camera.pan = p_vehicle.pan;
camera.tilt = p_vehicle.tilt;
camera.roll = p_vehicle.roll;
wait(1);
}
}


function VehicleBeginEvent(vehicleConst)
{
var p;
p = 0;
}

// use this function to apply feeback to GS
// you could play a sound effect base on the max tyre slide value
// you could also play the engine sound, etc
function VehicleEndEvent(vehicleConst)
{
var p;
p = 0;
}


// use the function to control the tyre handling
// basically this function apply torque to the tyre, and set the eteering angle.
function VehicleTireEvent(vehicleConst, tyreIndex)
{
// set the steer angle
steer = NewtonGetTyreSteerParam (vehicleConst, tyreIndex);
steer = steer + (my.carSteerTorque - steer) * 0.1;
NewtonSetTyreSteerParam (vehicleConst, tyreIndex, steer);

// coeficienty of friction contant for arcade type of game
// play with this to change the vihaviuor of the car
NewtonSetTyreLateralFrictionCoef (vehicleConst, tyreIndex, 0.7);
NewtonSetTyreLongituFrictionCoef (vehicleConst, tyreIndex, 0.8);

// if (you.is_PoweredWheel) {
torque = my.carEngineTorque;
if (torque != 0) {
resistance = my.car_maxToque * NewtonGetTyreRadius (vehicleConst, tyreIndex) / my.car_topSpeed;
} else {

if(throttle > 2) || (key_s)
{

resistance = 0.15 * NewtonGetTyreInertia (vehicleConst, tyreIndex);

if(omega>=35) // change this so that its sensitive to pedal, fully pressed for emergency stop
{
screech = ent_playsound (p_vehicle, tire_screech, 30);
}
}
else{
resistance = 0.002 * NewtonGetTyreInertia (vehicleConst, tyreIndex);
}

}

omega = NewtonGetTyreOmega (vehicleConst, tyreIndex);
torque = torque - resistance * omega;
NewtonSetTyreTorque (vehicleConst, tyreIndex, torque);
// }
}

function VehicleForceEvent(body)
{
// apply the gravity force
ApplyGravityForceEvent(body);

// vehicle are always active
NewtonSetBodyAutoActiveState (body, 0);
}


action NewtonVehicle
{
var car;
p_vehicle = my;
NewtonCreateVehicle (wood_material, VehicleTireEvent, VehicleBeginEvent, VehicleEndEvent);
dll_handle = newtonHandle;
car = NewtonGetBody (my);
NewtonSetBodyAutoActiveState (car, 0);
NewtonSetBodyActiveState (car, 1);
NewtonSetBodyForceAndTorque (car, VehicleForceEvent);

enginenoise = ent_playloop (p_vehicle, engine_wav, 30);

while (1) {

snd_tune (enginenoise, 50, omega + 30, 0);
my.carEngineTorque = 0.0;
my.carSteerTorque = 0.0;
throttle = joy_raw.y+2;

if(throttle < 0) && (gear_num > 0 )
{
my.carEngineTorque = -throttle; //minus because the pedals appear reversed relative to real pedals
}
else{
if(gear_num==-1) && (throttle < 0)
{
my.carEngineTorque = throttle;
}
}


steer_x = int(-joy_raw.x/10-0); //played with this, still same effect no matter how large

my.carSteerTorque = steer_x; //same as above (organized)

if(key_r)
{
gear_num = -1;
}

if(key_0)
{
Gtorque = 0;
my.car_topSpeed = 0;
gear_num = 0;

}

if(key_1)
{
Gtorque = 500;
gear_num=1;
my.car_topSpeed = 700;
}
if(key_2)
{
Gtorque = 500;
gear_num=2;
my.car_topSpeed = 800;
}
if(key_3)
{
Gtorque = 600;
gear_num=3;
my.car_topSpeed = 900;
}
if(key_4)
{
Gtorque = 700;
gear_num=4;
my.car_topSpeed = 1000;
}
if(key_5)
{
Gtorque = 800;
gear_num=5;
my.car_topSpeed = 1100;
}

//Keyboard Control
if(key_a)
{

my.carSteerTorque = 1.0;
}

if(key_d)
{
my.carSteerTorque = -1.0;
}
if(key_w)
{

if(gear_num==0)
{

snd_tune (enginenoise, 50, 200, 0); // tune the engine sound
}

if(gear_num == -1)
{
my.carEngineTorque = -my.car_maxToque * 0.5; //i wanted to keep reverse speed realy slow
}else{
my.carEngineTorque = Gtorque; //my.car_maxToque;
}


}
//key_s (brake/reverse changed to just brake under function VehicleTireEvent)

update_views();
wait(1);
}
}


function main()
{
mat_model.albedo=15;
wait(3);
level_load(s_level);
wait(1);

dll_handle=newtonHandle;
NewtonAddMap(s_level,0);
}






Last edited by andy_1984; 04/10/07 10:24.
Re: newton custom car script [Re: andy_1984] #122645
04/10/07 10:13
04/10/07 10:13
Joined: Aug 2006
Posts: 652
Netherlands
bstudio Offline
User
bstudio  Offline
User

Joined: Aug 2006
Posts: 652
Netherlands
I'll test it when i'm at home


BASIC programmers never die, they GOSUB and don't RETURN.
Re: newton custom car script [Re: bstudio] #122646
04/10/07 10:15
04/10/07 10:15
Joined: May 2006
Posts: 398
Bot190 Offline
Senior Member
Bot190  Offline
Senior Member

Joined: May 2006
Posts: 398
it sounds cool! but do you happen to have all the panel graphics and sounds? cause its a pan to go through and make your on sounds, panels are better but still.


Wait, there isn't a "Make My Game Now" button?
Re: newton custom car script [Re: Bot190] #122647
04/10/07 10:23
04/10/07 10:23
Joined: Dec 2006
Posts: 65
A
andy_1984 Offline OP
Junior Member
andy_1984  Offline OP
Junior Member
A

Joined: Dec 2006
Posts: 65
sounds can be got from the movecar demo by Bill Mc Gonigal

http://www.coniserver.net/coni_users/web_users/pirvu/au/scripts/movecar.zip

there are no graphical panels just the font which uses ackfont that can be found somewhere in your 3dgs folder.

i would have uploaded a more complete contribution but because im at work im limited to what i can do without being seen

Last edited by andy_1984; 04/10/07 10:28.
Re: newton custom car script [Re: andy_1984] #122648
04/10/07 10:39
04/10/07 10:39
Joined: May 2006
Posts: 398
Bot190 Offline
Senior Member
Bot190  Offline
Senior Member

Joined: May 2006
Posts: 398
ok i waasn't sure if it used panels or not, casue i say some stuff used to define panels, i didn't look to closely to see if it needed a graphic or not.


Wait, there isn't a "Make My Game Now" button?

Moderated by  adoado, checkbutton, mk_1, Perro 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1