Inaczej. Skrypt wykorzystuje tylko dofy w których jest grafika każdego biegu. Wykresy są obsługiwane przez car.ini.
Kod:
rcar $car = get scriptowner car
float $rpm = 0
float $alive = 0
float $gear = 0
shared int $select = 0
shared int $gearbox = 0
shared int $mode = 0
rcarmodel $display1 = get generic model 27 of $car
set $display1 scriptcontrolled 1
rcarmodel $display2 = get generic model 28 of $car
set $display2 scriptcontrolled 1
rcarmodel $display3 = get generic model 29 of $car
set $display3 scriptcontrolled 1
rcarmodel $indicator = get generic model 26 of $car
set $indicator scriptcontrolled 1
rcarmodel $d1 = get generic model 30 of $car
set $d1 scriptcontrolled 1
rcarmodel $d2 = get generic model 31 of $car
set $d2 scriptcontrolled 1
rcarmodel $d3 = get generic model 32 of $car
set $d3 scriptcontrolled 1
rcarmodel $d4 = get generic model 33 of $car
set $d4 scriptcontrolled 1
rcarmodel $d5 = get generic model 34 of $car
set $d5 scriptcontrolled 1
rcarmodel $d6 = get generic model 35 of $car
set $d6 scriptcontrolled 1
rcarmodel $d7 = get generic model 36 of $car
set $d7 scriptcontrolled 1
rcarmodel $1 = get generic model 37 of $car
set $1 scriptcontrolled 1
rcarmodel $2 = get generic model 38 of $car
set $2 scriptcontrolled 1
rcarmodel $3 = get generic model 39 of $car
set $3 scriptcontrolled 1
rcarmodel $4 = get generic model 40 of $car
set $4 scriptcontrolled 1
rcarmodel $5 = get generic model 41 of $car
set $5 scriptcontrolled 1
rcarmodel $6 = get generic model 42 of $car
set $6 scriptcontrolled 1
rcarmodel $7 = get generic model 43 of $car
set $7 scriptcontrolled 1
func void Display()
{
$rpm = get $car rpm
if $rpm > 500
{
$alive = 1
}
else
{
$alive = 0
}
if $alive == 0 // Engine off
{
set $display1 position float[3]{0,0,0}
}
else
{
set $display1 position float[3]{0,-10,0}
}
if $alive == 1
{
if $mode > -1 // Engine ON Automatic
{
set $display2 position float[3]{0,0,0}
}
else
{
set $display2 position float[3]{0,-10,0}
}
if $mode == -1 // Engine ON Manual
{
set $display3 position float[3]{0,0,0}
}
else
{
set $display3 position float[3]{0,-10,0}
}
}
}
func void Drive()
{
if $alive == 1
{
if $gearbox == 0
{
if $select == 0 // Parking
{
set $indicator position float[3]{0,0,0}
}
}
if $gearbox == 1
{
if $select == 0 // Neutral
{
set $indicator position float[3]{0.007,0,0}
}
if $select == -1 // Reverse
{
set $indicator position float[3]{0.007,0.0062,0.0022}
}
if $select == 1 // Drive
{
set $indicator position float[3]{0,-10,0}
}
}
}
else
{
set $indicator position float[3]{0,-10,0}
}
}
func void Automatic()
{
$gear = get $car gear
if $alive == 1
{
if $gearbox == 1
{
if $mode == 1
{
if $gear == 2
{
set $d1 position float[3]{0,0,0}
}
else
{
set $d1 position float[3]{0,-10,0}
}
if $gear == 3
{
set $d2 position float[3]{0,0,0}
}
else
{
set $d2 position float[3]{0,-10,0}
}
if $gear == 4
{
set $d3 position float[3]{0,0,0}
}
else
{
set $d3 position float[3]{0,-10,0}
}
if $gear == 5
{
set $d4 position float[3]{0,0,0}
}
else
{
set $d4 position float[3]{0,-10,0}
}
if $gear == 6
{
set $d5 position float[3]{0,0,0}
}
else
{
set $d5 position float[3]{0,-10,0}
}
if $gear == 7
{
set $d6 position float[3]{0,0,0}
}
else
{
set $d6 position float[3]{0,-10,0}
}
if $gear == 8
{
set $d7 position float[3]{0,0,0}
}
else
{
set $d7 position float[3]{0,-10,0}
}
}
else
{
set $d1 position float[3]{0,-10,0}
set $d2 position float[3]{0,-10,0}
set $d3 position float[3]{0,-10,0}
set $d4 position float[3]{0,-10,0}
set $d5 position float[3]{0,-10,0}
set $d6 position float[3]{0,-10,0}
set $d7 position float[3]{0,-10,0}
}
}
else
{
set $d1 position float[3]{0,-10,0}
set $d2 position float[3]{0,-10,0}
set $d3 position float[3]{0,-10,0}
set $d4 position float[3]{0,-10,0}
set $d5 position float[3]{0,-10,0}
set $d6 position float[3]{0,-10,0}
set $d7 position float[3]{0,-10,0}
}
}
else
{
set $d1 position float[3]{0,-10,0}
set $d2 position float[3]{0,-10,0}
set $d3 position float[3]{0,-10,0}
set $d4 position float[3]{0,-10,0}
set $d5 position float[3]{0,-10,0}
set $d6 position float[3]{0,-10,0}
set $d7 position float[3]{0,-10,0}
}
}
func void Manual()
{
$gear = get $car gear
if $alive == 1
{
if $gearbox == 1
{
if $mode == -1
{
if $gear == 2
{
set $1 position float[3]{0,0,0}
}
else
{
set $1 position float[3]{0,-10,0}
}
if $gear == 3
{
set $2 position float[3]{0,0,0}
}
else
{
set $2 position float[3]{0,-10,0}
}
if $gear == 4
{
set $3 position float[3]{0,0,0}
}
else
{
set $3 position float[3]{0,-10,0}
}
if $gear == 5
{
set $4 position float[3]{0,0,0}
}
else
{
set $4 position float[3]{0,-10,0}
}
if $gear == 6
{
set $5 position float[3]{0,0,0}
}
else
{
set $5 position float[3]{0,-10,0}
}
if $gear == 7
{
set $6 position float[3]{0,0,0}
}
else
{
set $6 position float[3]{0,-10,0}
}
if $gear == 8
{
set $7 position float[3]{0,0,0}
}
else
{
set $7 position float[3]{0,-10,0}
}
}
else
{
set $1 position float[3]{0,-10,0}
set $2 position float[3]{0,-10,0}
set $3 position float[3]{0,-10,0}
set $4 position float[3]{0,-10,0}
set $5 position float[3]{0,-10,0}
set $6 position float[3]{0,-10,0}
set $7 position float[3]{0,-10,0}
}
}
else
{
set $1 position float[3]{0,-10,0}
set $2 position float[3]{0,-10,0}
set $3 position float[3]{0,-10,0}
set $4 position float[3]{0,-10,0}
set $5 position float[3]{0,-10,0}
set $6 position float[3]{0,-10,0}
set $7 position float[3]{0,-10,0}
}
}
else
{
set $1 position float[3]{0,-10,0}
set $2 position float[3]{0,-10,0}
set $3 position float[3]{0,-10,0}
set $4 position float[3]{0,-10,0}
set $5 position float[3]{0,-10,0}
set $6 position float[3]{0,-10,0}
set $7 position float[3]{0,-10,0}
}
}
while 1
{
Display()
Drive()
Automatic()
Manual()
interrupt
}
Pisałem go sam w oparciu o dokumentacje. O aktualnym trybie/biegu skrypt bierze informacje ze skryptu, który wybiera biegi. Same biegi natomiast zmieniane są poprzez car.ini. Każdy bieg ma osobny wykres na redukcje i wbicie wyższego. Takie masło maślane trochę, ale wbrew pozorom nie jest jakieś to trudne do ogarnięcia. Chyba zacznę powoli wydawać te skrypty, bo po co mam je tylko dla siebie trzymać