The online racing simulator
lolz yeaaaaaahhhhh :D
rofl that meter is gonna explode once it gets a few 5 minute / 3 million point drifts xD... aside from 420 Drift Wars and Fat Oil Drifting Ground servers, not many of the others have decent scoring lappers, or maybe they do but I haven't come across it yet. =]

Im gonna look into how the code works and how its injected into the game Bmx, then I can modify it, I've seen a lot of crazy sh*t that I never thought was possible in some of the servers. Im sure it can't be too hard. =]
u should come look at mine its nice
lawl
rofl, this stuff reminds me of JavaScript... xD JS isn't all that hard once you get used to the commands, variables, and whatnot. lawlyz.

Can someone check mine out to see if the syntax is proper, I used Sinanju's version of the LFSLapper V 5.844 script. Hopefully I did it correctly. =]


#### DRIFT METER
#### ==========
#### Version 2

#### For Lapper V5.844

#### by Sinanju / [DUB]Azzy

#### Original Drift Meter and re-coding by Sinanju
#### Messaging idea / some coding by [DUB]Azzy

#### Thanks to Gui-luron, Yisc[NL] and Tim[NL]
#### For Lapper program, coding, patience and perseverance

#####################################################


##################
#Drifting options#
##################
#
# IMPORTANT
# ==========
# Drift option on !GUI must be set to Yes
#

$DriftDatabase = "./DriftPB";

$MinimumDriftSpeed = 15; # Minimum speed in km/h to maintain. Driving below that speed will reset score (25kmph is approx 16MPH)
$MinimumDriftAngle = 5; # Minimum angel to maintain. When angle is below value, score is reset
$MaximumDriftAngle = 120; # Maximum angel to maintain. When angle is above value, score is reset
$GoodDriftScore = 10000; # Value to be reached to execute action on good drift score
$MinimumDriftScore = 100; # Minimum drift score required

Event OnGoodDrift() # Player event
IF( $GUI_drift == "yes" )

THEN
closePrivButton( "driftcomboboxtexttopmessage0&driftcomboboxtexttopmessage&driftcomboboxtexttopmessage1" );
globalMsg( langEngine( "%{main_ongooddrift}%" ,GetCurrentPlayerVar("Nickname"),GetCurrentPlayerVar("LastDriftScore") ) );
openPrivButton( "driftcomboboxtexttopmessage2",85,19,30,5,3,8,16,langEngine( "%{main_driftcomboboxtexttopmessage2}%") );
ENDIF

EndEvent



Event OnDriftLap() # Actions to do to when total lap drift score is higher or equal to MinimumDriftScore.
IF( $GUI_drift == "yes" )
THEN
globalMsg( langEngine( "%{main_driftlap}%" , GetCurrentPlayerVar("Nickname"), GetCurrentPlayerVar("DriftScore")));

ENDIF

EndEvent

Event OnDriftPB() # Actions to do on new personal best drift lap.
IF( $GUI_drift == "yes" )
THEN
PrivRcm( langEngine( "%{main_newdriftpb}%" , GetCurrentPlayerVar("Nickname"),GetCurrentPlayerVar("DriftScore")));
ENDIF
EndEvent


Event OnDriftScore() # This is the section for displaying the Drift Meter and Drift Messages

$AngleVelocity = GetCurrentPlayerVar( "AngleVelocity" );
$DriftScore = GetCurrentPlayerVar( "DriftScore" );
$LastDriftScore = GetCurrentPlayerVar( "LastDriftScore" );

IF( $GUI_drift == "yes" )

THEN
openPrivButton( "mylogo",5,138,22,3,1,-1,16,langEngine( "%{[LLM] Drift Division}%" ));
openPrivButton( "driftboxback",5,137,22,35,4,-1,32," ");
openPrivButton( "driftanglebox",6,146,10,20,4,-1,32," ");
openPrivButton( "driftcombbox",16,146,10,10,3,-1,32," ");
openPrivButton( "driftscorebox",16,156,10,10,3,-1,32," ");
openPrivButton( "driftangleboxtext",6,146,10,5,3,-1,0,langEngine( "%{main_driftangleboxtext}%" ));
openPrivButton( "driftcomboboxtext",16,146,10,5,3,-1,0,langEngine( "%{main_driftcomboboxtext}%" ));
openPrivButton( "driftscoreboxtext",16,156,10,5,3,-1,0,langEngine( "%{main_driftscoreboxtext}%" ));

openPrivButton( "TDSM",6,140,20,4,2,-1,16,langEngine( "%{main_TDSM}%" ) );

openPrivButton( "driftcomboboxtexttop",85,1,30,7,4,-1,96,langEngine( "%{main_driftcomboboxtexttop}%" , $DriftScore ) );

IF( $AngleVelocity < 0 )

THEN

$AngleVelocity = -$AngleVelocity ;

SetCurrentPlayerVar("Angle_Reverse",$AngleVelocity);

closePrivButton( "driftangle&driftzeroangleboxtext&driftzerocomboboxtext&driftzeroscoreboxtext&driftscoretext&driftcombotext&driftangleboxtextanglerev&driftangleboxtextangle");
openPrivButton( "driftangleboxtextanglerev",9,152,6,5,3,-1,0,langEngine( "%{main_driftangleboxtextangle}%" ));
openPrivButton( "driftanglerev",6,153,10,12,3,-1,64,langEngine( "%{main_driftanglerevbox}%" , GetCurrentPlayerVar( "Angle_Reverse")));
openPrivButton( "driftscoretextrev",16,160,9,5,3,-1,0,langEngine( "%{main_driftscoretext}%" , $LastDriftScore ) );
openPrivButton( "driftcombotextrev",17,150,9,7,3,-1,0,langEngine( "%{main_driftcombotext}%" , $DriftScore ) );

ELSE

closePrivButton( "driftanglerev&driftzeroangleboxtext&driftzerocomboboxtext&driftzeroscoreboxtext&driftscoretextrev&driftcombotextrev&driftangleboxtextanglerev&driftangleboxtextangle");
openPrivButton( "driftangleboxtextangle",11,152,5,5,3,-1,128,langEngine( "%{main_driftangleboxtextangle}%" ));
openPrivButton( "driftangle",6,154,10,12,3,-1,64,langEngine( "%{main_driftanglebox}%" , $AngleVelocity ));
openPrivButton( "driftscoretext",16,160,9,5,3,-1,0,langEngine( "%{main_driftscoretext}%" , $LastDriftScore ) );
openPrivButton( "driftcombotext",17,150,9,7,3,-1,0,langEngine( "%{main_driftcombotext}%" , $DriftScore ) );

ENDIF
ENDIF


############ This section is for the messages and symbols invoked depending on the individual scores you make, and appear on the Drift Meter at bottom of screen

## Scoring totals = message

## < 150 = Terrible!
## > 150 = No0blet
## > 300 = Ro0kie
## > 450 = So-So
## > 750 = Decent
## > 1200 = Good
## > 1950 = Cool
## > 3150 = Niiiice
## > 5100 = Professional

# numbers can be changed if you think too high or too low - NO need to change anything else, unless you want to change the message in the LANG section(s)



IF( $LastDriftScore > 150 )

THEN

closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSLR&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM2",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM2}%" ) );

openPrivButton( "TDS21",6,167,4,4,2,-1,16,langEngine( "%{main_TDS21}%" ) );
openPrivButton( "TDS22",10,167,4,4,2,-1,16,langEngine( "%{main_TDS22}%" ) );
openPrivButton( "TDS23",14,167,4,4,2,-1,16,langEngine( "%{main_TDS23}%" ) );
openPrivButton( "TDS24",18,167,4,4,2,-1,16,langEngine( "%{main_TDS24}%" ) );
openPrivButton( "TDS25",22,167,4,4,2,-1,16,langEngine( "%{main_TDS25}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 300 )

THEN

closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM3",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM3}%" ) );

openPrivButton( "TDS31",6,167,4,4,2,-1,16,langEngine( "%{main_TDS31}%" ) );
openPrivButton( "TDS32",10,167,4,4,2,-1,16,langEngine( "%{main_TDS32}%" ) );
openPrivButton( "TDS33",14,167,4,4,2,-1,16,langEngine( "%{main_TDS33}%" ) );
openPrivButton( "TDS34",18,167,4,4,2,-1,16,langEngine( "%{main_TDS34}%" ) );
openPrivButton( "TDS35",22,167,4,4,2,-1,16,langEngine( "%{main_TDS35}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 450 )

THEN

closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM4",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM4}%" ) );

openPrivButton( "TDS41",6,167,4,4,2,-1,16,langEngine( "%{main_TDS41}%" ) );
openPrivButton( "TDS42",10,167,4,4,2,-1,16,langEngine( "%{main_TDS42}%" ) );
openPrivButton( "TDS43",14,167,4,4,2,-1,16,langEngine( "%{main_TDS43}%" ) );
openPrivButton( "TDS44",18,167,4,4,2,-1,16,langEngine( "%{main_TDS44}%" ) );
openPrivButton( "TDS45",22,167,4,4,2,-1,16,langEngine( "%{main_TDS45}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 750 )

THEN

closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM5",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM5}%" ) );

openPrivButton( "TDS51",6,167,4,4,2,-1,16,langEngine( "%{main_TDS51}%" ) );
openPrivButton( "TDS52",10,167,4,4,2,-1,16,langEngine( "%{main_TDS52}%" ) );
openPrivButton( "TDS53",14,167,4,4,2,-1,16,langEngine( "%{main_TDS53}%" ) );
openPrivButton( "TDS54",18,167,4,4,2,-1,16,langEngine( "%{main_TDS54}%" ) );
openPrivButton( "TDS55",22,167,4,4,2,-1,16,langEngine( "%{main_TDS55}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 1200 )

THEN

closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM6",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM6}%" ) );

openPrivButton( "TDS61",6,167,4,4,2,-1,16,langEngine( "%{main_TDS61}%" ) );
openPrivButton( "TDS62",10,167,4,4,2,-1,16,langEngine( "%{main_TDS62}%" ) );
openPrivButton( "TDS63",14,167,4,4,2,-1,16,langEngine( "%{main_TDS63}%" ) );
openPrivButton( "TDS64",18,167,4,4,2,-1,16,langEngine( "%{main_TDS64}%" ) );
openPrivButton( "TDS65",22,167,4,4,2,-1,16,langEngine( "%{main_TDS65}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 1950 )

THEN
closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM7",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM7}%" ) );

openPrivButton( "TDS71",6,167,4,4,2,-1,16,langEngine( "%{main_TDS71}%" ) );
openPrivButton( "TDS72",10,167,4,4,2,-1,16,langEngine( "%{main_TDS72}%" ) );
openPrivButton( "TDS73",14,167,4,4,2,-1,16,langEngine( "%{main_TDS73}%" ) );
openPrivButton( "TDS74",18,167,4,4,2,-1,16,langEngine( "%{main_TDS74}%" ) );
openPrivButton( "TDS75",22,167,4,4,2,-1,16,langEngine( "%{main_TDS75}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 3150 )

THEN
closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM8",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM8}%" ) );

openPrivButton( "TDS81",6,167,4,4,2,-1,16,langEngine( "%{main_TDS81}%" ) );
openPrivButton( "TDS82",10,167,4,4,2,-1,16,langEngine( "%{main_TDS82}%" ) );
openPrivButton( "TDS83",14,167,4,4,2,-1,16,langEngine( "%{main_TDS83}%" ) );
openPrivButton( "TDS84",18,167,4,4,2,-1,16,langEngine( "%{main_TDS84}%" ) );
openPrivButton( "TDS85",22,167,4,4,2,-1,16,langEngine( "%{main_TDS85}%" ) );

ELSE
ENDIF

IF( $LastDriftScore > 5100 )

THEN
closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM9",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM9}%" ) );

openPrivButton( "TDS91",6,167,4,4,2,-1,16,langEngine( "%{main_TDS91}%" ) );
openPrivButton( "TDS92",10,167,4,4,2,-1,16,langEngine( "%{main_TDS92}%" ) );
openPrivButton( "TDS93",14,167,4,4,2,-1,16,langEngine( "%{main_TDS93}%" ) );
openPrivButton( "TDS94",18,167,4,4,2,-1,16,langEngine( "%{main_TDS94}%" ) );
openPrivButton( "TDS95",22,167,4,4,2,-1,16,langEngine( "%{main_TDS95}%" ) );

ELSE
ENDIF

IF( $LastDriftScore < 150 )

THEN
closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM1",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM1}%") );

openPrivButton( "TDS11",6,167,4,4,2,-1,16,langEngine( "%{main_TDS11}%" ) );
openPrivButton( "TDS12",10,167,4,4,2,-1,16,langEngine( "%{main_TDS12}%" ) );
openPrivButton( "TDS13",14,167,4,4,2,-1,16,langEngine( "%{main_TDS13}%" ) );
openPrivButton( "TDS14",18,167,4,4,2,-1,16,langEngine( "%{main_TDS14}%" ) );
openPrivButton( "TDS15",22,167,4,4,2,-1,16,langEngine( "%{main_TDS15}%" ) );

ELSE
ENDIF

IF( $LastDriftScore < 50 )

THEN
closePrivButton( "TDSM0&TDSM&TDSM1&TDSM2&TDSM3&TDSM4&TDSM5&TDSM6&TDSM7&TDSM8&TDSM9" );
closePrivButton( "TDSLL&TDSLL1&TDSLL2&TDSLL3&TDSLL4&TDSLL5&TDSLL6&TDSLL7&TDSLL8&TDSLL9" );
closePrivButton( "TDSRL&TDSLR1&TDSLR2&TDSLR3&TDSLR4&TDSLR5&TDSLR6&TDSLR7&TDSLR8&TDSLR9" );
closePrivButton( "TDS11&TDS12&TDS13&TDS14&TDS15&TDS21&TDS22&TDS23&TDS24&TDS25&TDS31&TDS32&TDS33&TDS34&TDS35" );
closePrivButton( "TDS41&TDS42&TDS43&TDS44&TDS45&TDS51&TDS52&TDS53&TDS54&TDS55&TDS61&TDS62&TDS63&TDS64&TDS65" );
closePrivButton( "TDS71&TDS72&TDS73&TDS74&TDS75&TDS81&TDS82&TDS83&TDS84&TDS85&TDS91&TDS92&TDS93&TDS94&TDS95" );
closePrivButton( "TDS01&TDS02&TDS03&TDS04&TDS05" );

openPrivButton( "TDSM0",6,141,20,4,2,-1,16,langEngine( "%{main_TDSM0}%") );

openPrivButton( "TDS01",6,167,4,4,2,-1,16,langEngine( "%{main_TDS01}%" ) );
openPrivButton( "TDS02",10,167,4,4,2,-1,16,langEngine( "%{main_TDS02}%" ) );
openPrivButton( "TDS03",14,167,4,4,2,-1,16,langEngine( "%{main_TDS03}%" ) );
openPrivButton( "TDS04",18,167,4,4,2,-1,16,langEngine( "%{main_TDS04}%" ) );
openPrivButton( "TDS05",22,167,4,4,2,-1,16,langEngine( "%{main_TDS05}%" ) );

ELSE
ENDIF

############ This section is for the messages invoked depending on the combined lap score you make, and appears at top of screen

## Scoring totals = message

## < 400 = Terrible
## > 400 = No0blet
## > 600 = Not Bad
## > 1250 = Cool
## > 2750 = Niiiice
## > 5750 = Awesome
## > 11750 = Badass Mofo
## > 15000 = Killer Drifting
## > 20000 = King of RWD Swing
## > 30000 = Professional

# numbers can be changed if you think too high or too low - NO need to change anything else, unless you want to change the message in the LANG section(s)

IF( $DriftScore > 400 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift399_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftbarelyadequate}%") );

ELSE
ENDIF

IF( $DriftScore > 600 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift500_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftadequate}%") );

ELSE
ENDIF

IF( $DriftScore > 1250 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift1000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftgood}%") );

ELSE
ENDIF

IF( $DriftScore > 2750 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift2000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftsuperb}%") );

ELSE
ENDIF

IF( $DriftScore > 5750 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift5000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftoutrageous}%") );

ELSE
ENDIF

IF( $DriftScore > 11750 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift10000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftinsane}%") );

ELSE
ENDIF

IF( $DriftScore > 15000 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift15000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftroyalty}%") );

ELSE
ENDIF

IF( $DriftScore > 20000 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift20000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftgod}%") );

ELSE
ENDIF

IF( $DriftScore > 30000 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift30000_1",85,9,30,5,3,-1,32,langEngine( "%{main_driftnotworthy}%") );

ELSE
ENDIF

IF( $DriftScore < 400 )

THEN

closePrivButton( "driftcomboboxtexttopmessage&driftcomboboxtexttopmessage0&drift399_1&drift400_1&drift500_1&drift1000_1&drift2000_1&drift5000_1&drift10000_1&drift15000_1&drift20000_1&drift30000_1" );

openPrivButton( "drift400_1",85,9,30,5,3,-1,0,langEngine( "%{main_drifttolow}%") );

ELSE
ENDIF

EndEvent


################################

Lang "EN"

main_TDS01 = "^8?";
main_TDS02 = "^8?";
main_TDS03 = "^8?";
main_TDS04 = "^8?";
main_TDS05 = "^8?";

main_TDS11 = "^0:(";
main_TDS12 = "^0:(";
main_TDS13 = "^0:(";
main_TDS14 = "^0:(";
main_TDS15 = "^0:(";

main_TDS21 = "^2+";
main_TDS22 = "^2+";
main_TDS23 = "^2+";
main_TDS24 = "^2+";
main_TDS25 = "^2+";

main_TDS31 = "^3++";
main_TDS32 = "^3++";
main_TDS33 = "^3++";
main_TDS34 = "^3++";
main_TDS35 = "^3++";

main_TDS41 = "^4*";
main_TDS42 = "^4*";
main_TDS43 = "^4*";
main_TDS44 = "^4*";
main_TDS45 = "^4*";

main_TDS51 = "^5**";
main_TDS52 = "^5**";
main_TDS53 = "^5**";
main_TDS54 = "^5**";
main_TDS55 = "^5**";

main_TDS61 = "^6:)";
main_TDS62 = "^6*";
main_TDS63 = "^6:)";
main_TDS64 = "^6*";
main_TDS65 = "^6:)";

main_TDS71 = "^7!";
main_TDS72 = "^7!";
main_TDS73 = "^7!";
main_TDS74 = "^7!";
main_TDS75 = "^7!";

main_TDS81 = "^8!!";
main_TDS82 = "^8!!";
main_TDS83 = "^8!!";
main_TDS84 = "^8!!";
main_TDS85 = "^8!!";

main_TDS91 = "^1:)";
main_TDS92 = "^1:)";
main_TDS93 = "^1:)";
main_TDS94 = "^1:)";
main_TDS95 = "^1:)";

main_TDSM = "^7How's my drifting?";
main_TDSM0 = "^8How's my drifting?";
main_TDSM1 = "^0Terrible, just terrible.";
main_TDSM2 = "^2That was crappy driving.";
main_TDSM3 = "^3Not too shabby.";
main_TDSM4 = "^4Decent driving.";
main_TDSM5 = "^5Good lap, Keep it up.";
main_TDSM6 = "^6Coool, great job.";
main_TDSM7 = "^7You're killing it, hi5.";
main_TDSM8 = "^8Awesome display of skill.";
main_TDSM9 = "^1Professional Status.";

main_driftbarelyadequate = "^3Barely any drifting skills";
main_driftadequate = "^3Adequate drifting skills";
main_driftgood = "^4Some good drifting skills";
main_driftsuperb = "^5Some superb drifting skills!";
main_driftoutrageous = "^6Outrageous drifting skills!";
main_driftinsane = "^7Insane drifting!";

main_driftroyalty = "^0DRIFT ROYALTY!";
main_driftgod = "^1You are officially a&^1! DRIFTING GOD !";
main_driftnotworthy = "^0We are ^1NOT ^0worthy!";

main_mylogo = "^1[LLM] Drift Division"; # Change message between quote marks to suit

main_driftanglebox = "^3< ^7{0}";
main_driftangleboxtext = "^8Slip Angle:";
main_driftangleboxtextangle = "^1o";
main_driftanglerevbox = "^7{0} ^2>";
main_driftcomboboxtext = "^8Combo score:";
main_driftcomboboxtexttop = "^2Total points scored ^3this lap: ^7{0}";
main_driftcomboboxtexttopmessage = "^3That was really&^1CRAPPY ^3drifting";
main_driftcomboboxtexttopmessage2 = "^3Niiiice drifting.";
main_driftscoretext = "^1+ ^7{0}";
main_driftscoreboxtext = "^8This Score:";
main_driftscoretext = "^1+ ^7{0}";


Thanks if anyone can test it out, or even take a look through it to see if there's any errors. It's greatly appreciated guys. =]
I'm starting to think I'm a moron.

Right... I've got Lapper working - but I can't seem to get this to work.

I've copied the code (from DRIFTING OPTIONS to LANG) into lfslapper.lpr over the top of the otriginal DRIFTING OPTIONS - and that stops the drift scoring from working.

If I add the LANG section to lfslapper.lpr very little seems to work (including !gui).

Am I putting the LANG section in the wrong place? because I can't find an original LANG section in my original lfslapper.lpr file.

Oh - and how do I get the drifting option set to 'yes' by default instead of having to set it in !gui every time?

Thank you
I've tacked the whole 'Lang' section on at the end of the file... like this...

Lang "EN"
main_TDS01 = "^8?";
main_TDS02 = "^8?";


EndLang

And copied the Drift section over the top of the original.

Still nothing.

Has it got anything to do with the !gui needing to have the drift set as default to on instead of using !gui after the Lapper has loaded?

Also.. this appears to be the same script that came with the downloaded Lapper in driftmeter.lpr- and I really don't know which is the best set of instructions to follow and neither seem to work

Am I better off editing the LFSLapper.lpr with all the driftmeter info or telling lfslapper.lpr to look for it with pitboard etc.?

Or both?

Or neither? :grumpy:
Quote :Am I putting the LANG section in the wrong place? because I can't find an original LANG section in my original lfslapper.lpr file.

What version of lapper are you using?

LANG(uage) section only started from version 5.8xx, so if using v5.7xx you won't have this section.

If you have v5.8 and later, the English language section starts Lang "EN", and you need to put some code in here (insert code - don't overwrite what's already there!).

Quote :Oh - and how do I get the drifting option set to 'yes' by default instead of having to set it in !gui every time?

If you look in the guiconfig.lpr file (can be found under ..Bin/default/includes/guiconfig.lpr) you'll see a line that has

$GUI_drift = "no" ; #Drift option yes or no ( see the part at end of this script)

Change the no to yes.

$GUI_drift = "yes" ; #Drift option yes or no ( see the part at end of this script)
I'm using Lapper 5.8.4.1

Quote :If you look in the guiconfig.lpr file (can be found under ..Bin/default/includes/guiconfig.lpr) you'll see a line that has

$GUI_drift = "no" ; #Drift option yes or no ( see the part at end of this script)

Change the no to yes.

$GUI_drift = "yes" ; #Drift option yes or no ( see the part at end of this script)



Sorted

How can I attach my lfslapper file here without killing the forum?

Is there a spoiler tag or something?


Meh @ adding file contents here.

I'll attach it

(the password is temporary )
Attached files
Copy of LFSLapper.txt - 52.4 KB - 615 views
Had a quick look at your lpr file, and few comments.
  • I'd recommend you get yourself a PubStat - I've had problems when I've forgot to add to my lapper file.
  • You're "halp" button - you need a sub-routine to go with this (i.e. what happens when you click the Help button?)
To show what a sub-routine does, look at the "clos" button, which has openPrivButton("clos",78,120,20,10,10,-1,32,"^7CONTINUE",OnConnectClose );
The sub-routine for this is OnConnectClose

I'd suggest you look at Krayy's very useful replacement !Help function, and maybe try use and amend this to suit yourself.

See http://www.lfsforum.net/showthread.php?t=60201

  • Looking in your Drifting section, you've left the # character in front of a lot of the coding lines you would need - this character tells lapper to ignore anything on the line after this (the /* and */ tells lapper to ignore everything in between - as per the lapper script, the first part gives an explanation on some of the coding, which lapper ignores until it gets to the General options section).
Quote from sinanju :I'd recommend you get yourself a PubStat - I've had problems when I've forgot to add to my lapper file.

With this being only for a LAN party is that necessary? if so, I'll sort it. I only left it out because I had no intentions of taking this online.

Quote from sinanju :You're "halp" button - you need a sub-routine to go with this (i.e. what happens when you click the Help button?)
To show what a sub-routine does, look at the "clos" button, which has openPrivButton("clos",78,120,20,10,10,-1,32,"^7CONTINUE",OnConnectClose );
The sub-routine for this is OnConnectClose

That was an experiment, lol - but now you've told me how to work it, I might continue with it.

Quote from sinanju :I'd suggest you look at Krayy's very useful replacement !Help function, and maybe try use and amend this to suit yourself.

See http://www.lfsforum.net/showthread.php?t=60201

Looking and reading now

Quote from sinanju :
  • Looking in your Drifting section, you've left the # character in front of a lot of the coding lines you would need - this character tells lapper to ignore anything on the line after this (the /* and */ tells lapper to ignore everything in between - as per the lapper script, the first part gives an explanation on some of the coding, which lapper ignores until it gets to the General options section).

I'll have a look through it now and see if I can make a better job of it
So... the help section is the bit that starts (in command actions):

Quote :CASE "!help":
openPrivButton( "help",25,28,150,10,5,-1,0,"^2Commands list" );
openPrivButton( "help2",25,38,150,6,5,-1,96,"^2General commands"
. "&^3!top ^8[table offset] [3-letter car name] ['filter' pattern]"
. "&^3!drf ^8[table offset] [3-letter car name] ['filter' pattern]"

etc... etc...

Right?

So that means that when you type in !help, you get the actions afterwards - openPrivButton and put the text that follows on the button?

Is this the part that needs changing for Krayy's version?

And I still can't find the lang section
The #s that are in my drift section are...

In front of comments like this (which I assume are OK):

$MinimumDriftScore = 5000; # Minimum drift score required

Event OnGoodDrift() # Player event

I left this one in:

#cmdLFS( "/spec " . GetCurrentPlayerVar("Nickname") };

To not spectate people who go wrong way (we're animals).

And I've now removed these ones:

#$MinimumDriftSpeed = 50; # Minimum speed in km/h to maintain. Driving below that speed will reset score
#$MinimumDriftAngle = 15; # Minimum angel to maintain. When angle is below value, score is reset
#$MaximumDriftAngle = 100; # Maximum angel to maintain. When angle is above value, score is reset


Did you see anything else obvious in there that I've mashed up?
Hi

I dug out old copy of v5.841 and I see it doesn't have a Language section - that must have come slightly later. This means you have to put the text with the rest of the button config (so anything you've seen with langEngine( "%{main_ somewhere on button line is no good for you).

Also noticed that in the drifting section, instead of the # being used most, there's a lot of /* and */ used - such as

/*
Event OnDriftScore() # Player event
privMsg( "Score: ^7" . GetCurrentPlayerVar("DriftScore") . " ^3" . GetCurrentPlayerVar("LastDriftScore") );
EndEvent
*/

If you remove the/* and */ at start and end of that code, the code will start working.

ie
[COLOR=Blue]Event OnDriftScore() # Player event
privMsg( "Score: ^7" . GetCurrentPlayerVar("DriftScore") . " ^3" . GetCurrentPlayerVar("LastDriftScore") );
EndEvent[/COLOR]

The coding you removed needs to be re-instated, except lose the # character at start of line - instead of

[B]#[/B]$MaximumDriftAngle = 100; # Maximum angel to maintain. When angle is above value, score is reset

it would read
$MaximumDriftAngle = 100; # Maximum angel to maintain. When angle is above value, score is reset

Your $MinimumDriftScore = 5000; # Minimum drift score required

This is quite a high score (at least for me it is) - to make sure it's working ok, try dropping it way down (50?) to see if things start working, then when you find it is working, raise it up to where you think things should start happening (because I want all messages to show, I have mine set at 1!)

In fact, my drift config criteria are as follows;

$MinimumDriftSpeed = 25; # Minimum speed in km/h to maintain. Driving below that speed will reset score (25kmph is approx 16MPH)
$MinimumDriftAngle = 5; # Minimum angel to maintain. When angle is below value, score is reset
$MaximumDriftAngle = 75; # Maximum angel to maintain. When angle is above value, score is reset
$GoodDriftScore = 3000; # Value to be reached to execute action on good drift score
$MinimumDriftScore = 1; # Minimum drift score required


These are come by after a lot of dialogue with drifters that have been on my servers, and based on my (non-existant) drifting abilities.

For instance, personally I can only just control the car with small drift (less than 15 degrees, which is what serious drifters would prefer to be minimum), otherwise I spin.

The serious drifters think that anything more than 75 degrees max angle is not realistic.

Pick what you think would be realistic criteria.

The good drift score is like that, as I have one of my servers permanently on a layout track, where you can only do short single lap.
Wow!

What an answer, thank you!

I'll answer these as I implement them

I'm now replacing my entire Drift Options section with yours, exactly as is, the entire Driftmeter 2-1.txt file will replace my Drifting options.

I'm also going to leave the LANG part on the end, exactly as it is in your Driftmeter 2-1.txt file.

We'll see if that helps.
Think you might be better using the code from version 5.7, otherwise your lapper might trip up as it may not be able to look for the language section.
In last version driftmeter is by default in LFSLapper ( with catchevent ). Remove # into addonsused.lpr before driftmeter line to have this feature , that's all

all code is in driftmeter.lpr

no modification to do in default config file

Why do you continue to use obsolete LFSlapper version?
Hi Gai

I'm using old version as both my server hosts still using old versions of lapper.

One using version 5.7, and other 5.8.

Also, in truth, I'm more au-fait with these two than the newer version 5.9.

Prior to 5.9, it was mainly about opening and closing buttons; v5.9 is more for programmers, which is where I get lost (for instance, I have no idea what an array is, or why you would want to use one, or what you would use it for).

Quite happy with this; I'll leave you, Yisc, Tim, Krayy and the other talented programming people to do the complicated stuff, which I don't want to get into (maths was never my strong subject).
Hello,

Array are also present in your 5.8 version . in last version i optimize array, no add

All feature of the 5.9 version are the same than the older, except catchevent and catchsub.

When you use a catchEvent is like using the event.

example

LFSLapper.lpr

Event OnGoodDrift( $userName ) # This is present in main lpr file LFSLapper.lpr
....
CatchEvent

driftMeter.lpr
CatchEvent OnGoodDrift( $userName ) # This can be present in your script
closePrivButton( "driftcomboboxtexttopmessage0&driftcomboboxtexttopmessage&driftcomboboxtexttopmessage1" );
globalMsg( langEngine( "%{main_ongooddrift}%" ,GetCurrentPlayerVar("NickName"),GetCurrentPlayerVar("LastDriftScore") ) );
openPrivButton( "driftcomboboxtexttopmessage2",85,19,30,5,3,8,16,langEngine( "%{driftmeter_driftcomboboxtexttopmessage2}%") );

EndCatchEvent

anotherfile.lpr
CatchEvent OnGoodDrift( $userName ) # This can be present in other script
....
EndCatchEvent


First LFSLapper do the Event OnGoodDrift and then execute all catchEvent with the name OnGoodDrift

With that you haven't to modify LFSLapper.lpr to add your code, just add a catchEvent on the event that driftmeter need. In fact you release only one .lpr file. User include your script file using include in addonsused.lpr file and your script is added and work. No modification complicated need in main lpr file

Example in addonsused.lpr

#### Include for drifting infos ####
#include( "./driftdef.lpr");
# OR
#include( "./driftmeter.lpr");
#####################################

just remove # before include( "./driftmeter.lpr"); to have your driftmeter working
or remove # before include( "./driftdef.lpr"); to have default drift feature, no need to remove /* or */ arround code in LFSLapper.lpr

The big difference in the 5.9 is username passed to all player event and optimization ( more speed ) for the GLScript.

Take a look at your updated driftmeter script and you understand how work catchevent. ( very easy )

Gai-Luron
Thank you both for your amazing help.

Sinanju - am I being cheeky to ask if I can use/ modify some of your coding for my own Driftmeter? Since I've been ploughing some time into Lapper, I've come to want to kind of make my own - as I learn.

I've not got the Sinanju or Lappper driftmeter working - and Gai, I wish I'd have known it was that simple! - but in my investgations I have found that I am enjoying working out ths new, alien language as I create my own.

Many thanks to you all.
Quote from drew555 :Sinanju - am I being cheeky to ask if I can use/ modify some of your coding for my own Driftmeter?

I've made code public so you can do whatever you want .

Just remember to keep back-up of your previous working lapper config file!

If it works, you can always publish it - maybe people would prefer to use your drift meter.

Good luck on the coding
Quote from Gai-Luron :Hello,

Take a look at your updated driftmeter script and you understand how work catchevent. ( very easy )

Gai-Luron

If either of my server hosts ever upgrade to version 5.9 I might give it a go.
hi ive got lfs lapper v 5.923 and how do i set it up
on my server
-
(sinanju) DELETED by sinanju
I'm assuming you mean the driftmeter part?

If so, look in the .\bin\default\includes folders, you will see a file called addonused.lpr.

You need to open this up (Notepad will do), and you will see a line #include( "./driftmeter.lpr");

Remove the # (hash) sign from front of line, then save. Restart lapper again and the drift part should now be working.
I have a problem with the drift meter. The problem is that only the first person who joins the server get to se the Drift Meter Graphic, the rest will only get the drift, drift combo and angle numbers. Another question: has anyone tried the drift meter with Lapper 6 beta?
Im sorry.. I didn't see the post about that the driftmeter is now inside the lapper as default. One problem I have: I can't se the drift score when I type !dstats username

FGED GREDG RDFGDR GSFDG