#### DRIFT SKILLS #### ============ #### For Lapper V5.926 and later (may work with earlier versions) #### idea by Ingolf #### original basic coding by Sinanju #################################################################################################################################################### #### Ver 0.1 - 24 Oct 2010 - Initial release with problems in database function, unable to convert laptimes into numbers and !dskills table not showing any results #### #### Ver 0.2 - 25 Oct 2010 - Now converted laptime into number and changed button layout slightly - still some issues with database #### #### Ver 0.3 - 28 Oct 2010 - Button layout changes, now testing single drift skill formula [ ((driftscore / laptime) / 50) ] #### #################################################################################################################################################### #### #### #### #### #### INFO #### SCORING #### ISSUES #### #### ========================== #### ======================================== #### ================================ #### #### #### #### #### #### Add the following line into the #### Although you may display driftpoints when drifting #### Problems saving and outputting to a database #### #### /addonsused.lpr file #### on an outlap and an inlap, you will only score driftpoints #### (suspect my coding!) - currently wip #### #### #### and skillpoints on completion of a full lap (or circuit). #### #### #### include( "./dskill.lpr"); #### #### !DS TopUsers Table doesn't list cars / scores #### #### #### Points are reset to zero when lap completed, although #### - maybe lapper doesn't like 2 TopUsers tables? #### #### #### this may not show until scores overwritten. #### Tim[NL]'s Points table also running in test config, #### #### #### #### which I don't want to disable for testing just to #### #### #### If your speed falls below minimum allowed speed, or #### make sure can run multiple TopUser tables #### #### #### drift angle is above or below allowed angle, then all #### #### #### #### scores will be lost, although this may not show until #### As yet, untested in km/h mode #### #### #### scores overwritten. #### #### #### #### #### #### #################################################################################################################################################### CatchSub OnConnectClose( $KeyFlags,$id ) OnConnectClose_dskill(); EndCatchSub Sub OnConnectClose_dskill() #### #### #### Retrieve input #### #### #### ### Get UserName and search in database for saved values for this user ### $userName = GetCurrentPlayerVar( "UserName" ); SetCurrentPlayerVar ("lap_time_time", $lap_time_time); SetCurrentPlayerVar ("lap_time_number", $lap_time_number); SetCurrentPlayerVar ("drift_score", $drift_score); SetCurrentPlayerVar ("drift_skill", $drift_skill); SetCurrentPlayerVar ("average_speed_kmh", $average_speed_kmh); SetCurrentPlayerVar ("average_speed_mph", $average_speed_mph); ### End ### EndSub CatchEvent OnLap( $userName ) # Player event $MinimumDriftSpeed = 39; # Minimum speed in km/h to maintain. Driving below that speed will reset score $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 = 2500; # Value to be reached to execute action on good drift score $MinimumDriftScore = 100; # Minimum drift score required $NickName = GetCurrentPlayerVar("NickName"); #### #### #### Load value from stored values #### #### #### SetCurrentPlayerVar( "lap_time_time",GetStoredValue( $userName . "lap_time_time" ) ); SetCurrentPlayerVar( "lap_time_number",GetStoredValue( $userName . "lap_time_number" ) ); SetCurrentPlayerVar( "drift_score",GetStoredValue( $userName . "drift_score" ) ); SetCurrentPlayerVar( "drift_skill",GetStoredValue( $userName . "drift_skill" ) ); SetCurrentPlayerVar( "average_speed_kmh",GetStoredValue( $userName . "average_speed_kmh" ) ); SetCurrentPlayerVar( "average_speed_mph",GetStoredValue( $userName . "average_speed_mph" ) ); ### Catch Event Variables $lap_time_time = NumToMSH(GetCurrentPlayerVar( "LapTime" )); $lap_time_number = (MSHToNum($lap_time_time)/1000); $average_speed_kmh = GetCurrentPlayerVar( "AvgSpeed" ); $average_speed_mph = round(($average_speed_kmh*0.621371192),2); $drift_score = GetCurrentPlayerVar( "DriftScore" ); $drift_skill = round((($drift_score/$lap_time_number)/16.667),2); ### Set button and initial left/right and top/bottom coordinates ### $origL = 165; # Left edge of button $origT = 100; # Top edge of button $Width = 15; # width of button $Height = 4; # height of button $spacing = 4; # text spacing $time = 10; # display button for how many seconds (-1 = permanent) #### NORMAL SCOREBOARD openPrivButton( "ds_back",$origL,$origT+30,$Width+15,$Height+36,$spacing,$time,16," "); openPrivButton( "ds_frnt",$origL+1,$origT+36,$Width+13,$Height+28,$spacing,$time,32," "); openPrivButton( "ds_name",$origL+2,$origT+31,$Width+11,$Height+1,$spacing+1,$time,0, $NickName); # player who will see board #### Button Labels openPrivButton( "ds_oads_label",$origL+2,$origT+37,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_oads_label}%")); # OverAll Drift Score openPrivButton( "ds_alsk_label",$origL+2,$origT+41,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_als_label}%")); # Average Lap Speed (km/h)) openPrivButton( "ds_alsm_label",$origL+2,$origT+45,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_als_label}%")); # Average Lap Speed (mph)) openPrivButton( "ds_sltm_label",$origL+2,$origT+49,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_sltm_label}%")); # Single Lap Time (in minutes/seconds) openPrivButton( "ds_dssr_label",$origL+2,$origT+53,$Width,$Height+4,$spacing+2,$time,0,langEngine("%{main_ds_dssr_label}%")); # Drift Skill Score Result openPrivButton( "ds_sbox",$origL+17,$origT+53,11,$Height+9,$spacing,$time,16," "); # box for score to sit in #### Score (Results) Buttons openPrivButton( "ds_oads",$origL+17,$origT+37,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_oads}%", $drift_score)); # OverAll Drift Score openPrivButton( "ds_alsk",$origL+17,$origT+41,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_alsk}%", $average_speed_kmh)); # Average Speed For Lap (km/h)) openPrivButton( "ds_alsm",$origL+17,$origT+45,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_alsm}%", $average_speed_mph)); # Average Speed For Lap (mph)) openPrivButton( "ds_sltm",$origL+17,$origT+49,$Width,$Height,$spacing,$time,64,langEngine("%{main_ds_sltm}%", $lap_time_time)); # Single Lap Time (in minutes/seconds) openPrivButton( "ds_dssr",$origL+15,$origT+49,$Width,$Height+17,$spacing,$time,0,langEngine("%{main_ds_dssr}%", $drift_skill)); # Drift Skill Score Result #### CIRCULAR BUTTON SCOREBOARD openPrivButton( "ds_back2",0,80,126,126,1,8,64,"^1•"); # red background openPrivButton( "ds_back3",2,84,118,118,1,8,64,"^7•"); # white foreground openPrivButton( "ds_dssr_label2",21,134,21,6,6,8,0,"^0 Drift Skill"); # black openPrivButton( "ds_dssr2",17,137,30,25,1,8,0,langEngine( "%{main_ds_dssr}%", $drift_skill)); # Drift Skill Score #### Global sms Message sent to everyone on completion of full lap by any player globalMsg( langEngine( "%{main_ds_msg}%",$NickName,$drift_skill )); # sms message #### #### #### Save value to stored values #### #### #### #SetStoredValue( $userName . "lap_time_time", GetCurrentPlayerVar( "lap_time_time" ) ); #SetStoredValue( $userName . "lap_time_number", GetCurrentPlayerVar( "lap_time_number" ) ); #SetStoredValue( $userName . "drift_score", GetCurrentPlayerVar( "drift_score" ) ); #SetStoredValue( $userName . "drift_skill", GetCurrentPlayerVar( "drift_skill" ) ); #SetStoredValue( $userName . "average_speed_kmh", GetCurrentPlayerVar( "average_speed_kmh" ) ); #SetStoredValue( $userName . "average_speed_mph", GetCurrentPlayerVar( "average_speed_mph" ) ); # SetCurrentPlayerVar ("lap_time_time", $lap_time_time); # SetCurrentPlayerVar ("lap_time_number", $lap_time_number); # SetCurrentPlayerVar ("drift_score", $drift_score); # SetCurrentPlayerVar ("drift_skill", $drift_skill); # SetCurrentPlayerVar ("average_speed_kmh", $average_speed_kmh); # SetCurrentPlayerVar ("average_speed_mph", $average_speed_mph); setUserStoredValue( ("lap_time_time", $lap_time_time); setUserStoredValue(("lap_time_number", $lap_time_number); setUserStoredValue( ("drift_score", $drift_score); setUserStoredValue( ("drift_skill", $drift_skill); setUserStoredValue( ("average_speed_kmh", $average_speed_kmh); setUserStoredValue( ("average_speed_mph", $average_speed_mph); EndCatchEvent CatchEvent OnMSO( $userName, $text ) # Player event SWITCH( $command ) # How to get Drift Skill Table CASE "!dskill": CASE "!dskills": CASE "!DSKILL": CASE "!DSKILLS": topUser( "^3Drift Skill Table","drift_skill","DESC",argv ); #"DESC" or "ASC" Sort sum value descending or ascending - in this case descending BREAK; ENDSWITCH EndCatchEvent LANG "EN" main_ds_msg = "{0} ^2has a Drift Skill Score of ^1{1}"; # where {0} = driver, and {1} = drift skill score #### SCOREBOARD - Labels main_ds_oads_label = "^7Overall Drift Score"; main_ds_als_label = "^7Average Lap Speed"; main_ds_sltm_label = "^7Single Lap Time"; main_ds_dssr_label = "^2Drift Skill%nl%^2Score"; #### SCOREBOARD - Results main_ds_oads = "^3{0} ^7points"; main_ds_alsk = "^3{0} ^7km/h"; main_ds_alsm = "^3{0} ^7mph"; main_ds_sltm = "^3{0}"; main_ds_dssr = "^1{0}"; built_score = "Percentage"; EndLang