The online racing simulator
Problem With Lapper!
Hey!

LFS Lapper (5.7.1.6) is no kicking Unnamed!

Quote :

#################
#General options#
#################

$Host = 86.63.150.112; # Host IP. When more network interfaces are present, set it to IP of your host.

$Port = 29999; # Insim UDP port. Open this port after starting LFS Server by typing /insim=29999 in chat or include it in config-file LFS Server

$Password = "yourpass"; # Put in the admin password used on the LFS Server

$TrackInfoFile = "trackInfo.cfg"; # Path to the TrackInfoFile used to compare splits

$TCPmode = true; # Connection to LFS in UDP mode or TCP mode

$EnableRegisterWeb = true; # When set to "true" your LFS Server is displayed on the FRH Team website

$DateFormat = "dd/MM/yyyy"; # Date format used for the PB files
# Look at C#-format for date/time, little help
# HH = Hour in 0-23 format
# hh = Hour in 0-12 format
# mm = Minute
# tt = PM or AM
# dd = Day
# MM = Month
# yyyy = year with 4 digits

$TimeFormat = "HH:mm"; # Time format used for the PB files

$MessageTime = 5000; # Time in milliseconds for a racecontrol message (started by: rcm_all) to be displayed on screen

#$PubStatIdk = ""; # Indentification code for a connection to PubStat.
# To obtain a PubStatId go to www.lfsworld.net , select My LFSW Setting, tab Pubstat Access
# Remove # before PubStatIdK to activate this option

$ShowPlayerControl = False; # Set option to "true" if you want to show the control configuration of players when leaving the pits.

##############
#FTP transfer#
##############
# Results files can also be transferred to an FTP server
# Define the following parameters to use this feature
# Remove # before line to activate it
# -------------------------------------------------------------------

#$FtpServer = "your ftp server"; # Name/IP-address of your FTP server
#$FtpLogin = "your login"; # Loginname for your FTP server
#$FtpPasswd = "your password"; # Password for your FTP server
#$FtpRemotePath = "your remote dir"; # Directorname

##############################
#Synchronise Lapper databases#
##############################

#$SyncID="frh01"; # Unique ID for this instance of Lapper
#$SyncDir="synchro"; # Name of synchronisation directory. Every Lapper should have this directory name in order to synchronise
#$SyncIDsToSync="frh02|frh03"; # Lapper ID's to synchronise with
# Seperate ID's with |
# You can't use current SyncID here

#############
#Default Car#
#############
# Default car to show, when no car is specified in command !top or !drf and when a player haven't used a car on this server
# You can combine several cars by using + (example: "XFG+XRG"
# -------------------------------------------------------------------

#$DefaultTopCar = "UF1";
$DefaultTopCar = "XFG";
#$DefaultTopCar = "XRG";
#$DefaultTopCar = "XRT";
#$DefaultTopCar = "RB4";
#$DefaultTopCar = "FXO";
#$DefaultTopCar = "LX4";
#$DefaultTopCar = "LX6";
#$DefaultTopCar = "RAC";
#$DefaultTopCar = "FZ5";
#$DefaultTopCar = "MRT";
#$DefaultTopCar = "XFR";
#$DefaultTopCar = "UFR";
#$DefaultTopCar = "FOX";
#$DefaultTopCar = "FO8";
#$DefaultTopCar = "FXR";
#$DefaultTopCar = "XRR";
#$DefaultTopCar = "FZR";
#$DefaultTopCar = "BF1";
#$DefaultTopCar = "FBM";

###################################
#Event triggered when lapper start#
###################################
Event OnLapperStart()
EndEvent

###################################
#Authorization Options ( license )#
###################################
#Authorization Options
#
#$Auth1 $Auth2 ... $Auth10 variable
#Syntax : $AuthX = "Carname:Trackname:MinimumTime&Carname:Trackname:MinimumTime&...| Carname:Trackname:MinimumTime&Carname:Trackname:MinimumTime&... | ...";
#& -> And condition
#| -> Or condition
#
#$AuthAllowPlayer="Auth1|...|AuthX|@username1,username2,...,usernameN";
#or
#$AuthAllowPlayer="All";
#-------------------------------------------------------------------

#$Auth1 = "XFG:BL1:1.30.10 | XRT:SO4:1.20.20";
#$Auth2 = "XFG:BL1:1.10.10 | XRT:SO4:1.20.20";
#$Auth3 = "XFG:BL1:1.05.10";

$AuthAllowPlayer = "All";

$AuthMinPlayer = 0; # Minimum number of players on the server to auto enable authorization
# If number of players is below value, alle players are allowed
# If number of players is above value, only AuthAllowPlayer are allowed

Event OnAuthAllowed()
cmdLFS( "/msg " . $Nickname . "^3 allowed on this server" );
Endevent

Event OnAuthNotAllowed()
cmdLFS("/spec " . $Nickname . "^3 allowed on this server");
cmdLFS("/msg " . $Nickname . "^3 not allowed on this server");
Endevent

# Local viariable that can be used
# $auth -> Authorization reached

Event OnAuthReached()
privMsg("^3You have got level" . $auth );
EndEvent

##################
#Swearword filter#
##################
#Specify a list of swearwords seperated by ,
#Specify a file with swearwords, one word per line
#-------------------------------------------------------------------

$SwearWordsList = "****,asholes,****,**** you,bastard,idiot,kurwa,ssij,spiedalaj,wypierdalaj,szmata,szmato,chuj,chuju";
#$SwearWordsList = "&./swear.txt";
$SwearWordsMax = 2; # Maximum number of allowed swearwords per session

Event SwearWordsAction1()
privMsg( "^1CALM DOWN!" );
privMsg( "You will be kicked in ^2" . $SwearWordsRem . " ^1 more attempt(s)" );
EndEvent

Event SwearWordsAction2()
privMsg( "Too many swearwords, kicked" );
cmdLFS( "/kick " . $Nickname );
EndEvent

###########
#Handicaps#
###########
#You can specify 3 levels of handicap : for car, for car and track, for user
#Priority Level low to hight : HandicapCars, HandicapCarsTracks, HandicapUser
#-------------------------------------------------------------------
#Handicap cars
#
#Syntax :
#
#$HandicapCars = "car:mass:irest,car:mass:irest,...,car:mass:irest";
#
#car : LFS short car name
#mass : mass handicap in kg
#irest : Air intake restriction in percent
#-------------------------------------------------------------------
#Handicap cars/tracks
#
#Syntax :
#
#$HandicapCarsTracks = "car/track:mass:irest,car/track:mass:irest,...,car/track:mass:irest";
#
#car : LFS short car name
#track : LFS short track name
#mass : mass handicap in kg
#irest : Air intake restriction in percent
#-------------------------------------------------------------------
#$HandicapUser # a list of players and their handicap
# # if you prefix with & , You can indicate a file name that contains a list of racers, one racer per line
# # if you prefix with @, You can list username separated with ,
#
#Syntax :
#
#$HandicapUsers = "&./your_file";
#$HandicapUsers = "@userName:mass:irest,userName:mass:irest,...userName:mass:irest";
#
#$RefreshHandicapUsers # allow Lapper to refresh HandicapUsers on each player leaving pits
# Usefull if HandicapUsers is a file and is updated frequently by an external program
#-------------------------------------------------------------------

#$HandicapCars = "XFG:100:10,XRT:50:10";

#$HandicapCarsTracks = "XFG/BL1:100:10,XRT/AS1:50:10";

#$RefreshHandicapUsers = true;
#$HandicapUsers = "&./your_hand.flt";
#$HandicapUsers = "@Gai-Luron:100:20,gwendoline:100:30,_-ALUCARD-_,lagamel:50:10,lister88,c-quad,shimanofr,bruno7529,boby5,kevinb,edgar,berlioz,la tortue,neron59,eur-can,stff,2psbob,oliv76000";

# Actions to execute, when the handicap of a player is below specified HandicapUsers
# Possible variables to use:
#
#$Nickname - Nickname of driver
#$Username - Username of driver
#$H_Mass - User mass required
#$H_TRes - User Intake restriction required

Event OnToLowHandicap()
cmdLFS("/spec " . $Nickname );
cmdLFS("/msg " . $Nickname . "^3 spectated for to low handicap" );
cmdLFS("/msg ^3need " . $H_Mass . "kg and " . $H_TRes . "% of intake restriction!");
EndEvent

#################
#Control Allowed#
#################
# Racer flags
# "Y" = Yes
# "N" = No
# "*"" = Yes or No
# Local variable
# $PlayerFlags = The current Player flags
# $RequiredFlags = The current Required flags
#-------------------------------------------------------------------

$SwapSide = "*";
$AutoGears = "*";
$Shifter = "*";
$HelpBrake = "*";
$AxisClutch = "*";
$AutoClutch = "*";
$Mouse = "*";
$KbNoHelp = "*";
$KbStabilised = "*";
$CustomView = "*";

Event OnNotMatchFlags()
privMsg( "Flags not match required flags" );
privMsg("Yours flags -> " . $PlayerFlags );
privMsg("Required flags -> " . $RequiredFlags );
privMsg("Spectated" );
cmdLFS("/spec " . $Username );
EndEvent

##############
#Race Control#
##############
#Voting:
#
#$InRaceLapsVoteMinMax = Laps in between where votes are allowed in race
#$InRaceLapsVoteMinMax = 0-0 Votes are never allowed
#$InRaceLapsVoteMinMax = -5 Votes are allowed between lap 1 and 5
#$InRaceLapsVoteMinMax = 2- Votes are allowed between laps 2 and the end of the race
#$InRaceLapsVoteMinMax = - Votes are always allowed
#
#$VoteRestart = percentage of players that have to vote to restart a race. To let LFS admin this function, set it to -1
#onVoteRestartChange = Command to do when player votes to restart
#onVoteRestartReach = Command to execute when VoteRestart is reached
#onVoteRestartZero = Command to execute when no nb of player reach zero

#$VoteQualify = percentage of players that have to vote to start a qualification. To let LFS admin this function, set it to -1
#onVoteQualifyChange = same as restart but for qualify
#onVoteQualifyReach = same as restart but for qualify
#onVoteQualifyZero = same as restart but for qualify
#
#$VoteEnd = percentage of players that have to vote to end a race. To let LFS admin this function, set it to -1
#onVoteEndChange = same as restart but for endrace
#onVoteEndReach = same as restart but for endrace
#onVoteEndyZero = same as restart but for endrace
#-------------------------------------------------------------------
#Local variable:
#
#$Vote - Number of players that have voted
#$Remain - Number of players remaining to vote
#$Need - Number of players needed for an action
#$VoteLifeSec = Number of seconds to keep the vote alive after voting
#-------------------------------------------------------------------
#Auto restart:
#
#$AutoRestartRaceMn = Minutes between the end of a race (last player finished) and an automatic restart
#$AutoRestartRaceMn = 0; No restart
#
#Rotation only work if AutoRestartRaceMn is set
#EnableRotation = Allow or disallow rotation for track and/or car
# Values : true or false
#$RotateTracks = "tracks to rotate"; separated by ','
#$RotateCars = "cars to rotate"; separated by ',' Use LFS definition for car, if not set, no car rotation
#$RotateEveryNbRaces = Number of races to do before rotation;
#-------------------------------------------------------------------

$InRaceLapsVoteMinMax = "-";

$VoteRestart = -1;

Event onVoteRestartChange()
openGlobalButton( "bargr1",60,1,10,6,6,30,96,"Restart:" );
openGlobalButton( "bargr2",70,1,20,6,6,30,96,"(" . $Vote ."/" . $Players . ") Need " . $Need );
EndEvent

Event onVoteRestartReach()
closeGlobalButton( "bargr1&bargr2" );
cmdLFS("/restart");
EndEvent

Event onVoteRestartZero()
closeGlobalButton( "bargr1&bargr2" );
EndEvent

$VoteQualify = -1;

Event onVoteQualifyChange()
openGlobalButton( "bargq1",90,1,10,6,6,30,96,"Qualify" );
openGlobalButton( "bargq2",100,1,20,6,6,30,96,"(" . $Vote . "/" . $Players . ") Need " . $Need );
EndEvent

Event onVoteQualifyReach()
closeGlobalButton("bargq1&bargq2" );
cmdLFS("/qualify" );
EndEvent

Event onVoteQualifyZero()
closeGlobalButton("bargq1&bargq2" );
EndEvent

$VoteEnd = -1;

Event onVoteEndChange()
openGlobalButton( "barge1",120,1,10,6,6,30,96,"End:" );
openGlobalButton( "barge2",130,1,20,6,6,30,96,"(" . $Vote . "/" . $Players . ") Need " . $Need );
EndEvent
Event onVoteEndReach()
closeGlobalButton( "barge1&barge2" );
cmdLFS("/end");
EndEvent

Event onVoteEndZero()
closeGlobalButton( "barge1&barge2" );
EndEvent

$VoteLifeSec = 30;

$AutoRestartRaceMn = 2;

$EnableRotation = false;
$RotateTracks = "SO6R,BL1,FE3";
$RotateEveryNbRaces = 4;
$RotateCars = "XFG+UF1,TBO,XFR+UFR";

Event OnRotateCar()
cmdLFS("/msg Car changed, go to pit! Current car = " . $CurrRotateCar);
EndEvent
Event OnRotateTrack()
cmdLFS("/msg Track changed, please wait!" );
cmdLFS("/msg Current Track = " . $CurrLongRotateTrack);
EndEvent


#################################################
#Connect messages when a player joins the server#
#################################################

Event OnConnect()
openPrivButton( "welc",25,50,150,15,12,-1,0,"^7Welcome " . $Nickname . " ^7to ^1{EWZ} ^7Clan server !&^2Type ^7!help ^2after leaving garage to see commands." );
openPrivButton( "pos",25,80,150,10,8,-1,0,"^7Your actual friendly Position (all visitors) : ^7" . $Posabs
. "&^2Your actual League prequalify Position : " . $Posqual . " ^6Estimate Pool : " . $Groupqual
. "&Join our clan! ^1www.ewz-clan.com"
. "&Write in Recruiment + Welcome section and have fun!"
. "&Remember to give us your bio! "
);
openPrivButton( "clos",78,120,20,10,10,-1,32,"Accept",OnConnectClose );
openPrivButton( "ref",103,120,20,10,10,-1,32,"Deny",OnConnectCloseKick );
http("http://www.frh-team.net/reglapper/getserver2.php" );
EndEvent

Sub OnConnectClose()
closePrivButton("welc&pos&clos&ref");
/*
IF( $Nickname == "unnamed" )
THEN
cmdLFS( "/kick " . $Username );
ENDIF
*/
EndSub

Sub OnConnectCloseKick()
closePrivButton("welc&pos&clos&ref");
cmdLFS("/kick " . $Username );
EndSub

#####################################################
#DisConnect messages when a player leaves the server#
#####################################################

Event OnDisConnect()
cmdLFS( "/msg " . $Nickname . " left the server" );
EndEvent

#############################################$#
#Splitting (general action when passing split)#
###############################################

Event OnSplit1()
EndEvent

Event OnSplit2()
EndEvent

Event OnSplit3()
EndEvent

Event OnLap()
/*
IF( $DiffLapTimeToPB >= 0 )
THEN
$color = "^1";
$diff = $DiffLapTimeToPB;
ELSE
$color = "^2";
$diff = - $DiffLapTimeToPB;
ENDIF

privMsg( "New lap " .$color . $LapTime . "(" . $diff . ")" );
*/
EndEvent

#######################################################
#Splitting (compare player split to best player split)#
#######################################################

$ShowSplitPB = true; # Set to false if you don't want to see messages about splits

Event OnSpbSplit1()
IF( $isBestSectorSplit1 == 1 )
THEN
$color = "^2";
ELSE
$color = "^1";
ENDIF
openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ
. " ^7SP1"
. ": " . $SectorSplit1 . " "
. $color
. "(" . $DiffSectorSplit1 . ")"
. "&^7TPB:" . $Tpb);
EndEvent

Event OnSpbSplit2()
IF( $isBestSectorSplit2 == 1 )
THEN
$color = "^2";
ELSE
$color = "^1";
ENDIF
openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ
. " ^7SP2"
. ": " . $SectorSplit2 . " "
. $color
. "(" . $DiffSectorSplit2 . ")"
. "&^7TPB:" . $Tpb);
EndEvent

Event OnSpbSplit3()
IF( $isBestSectorSplit3 == 1 )
THEN
$color = "^2";
ELSE
$color = "^1";
ENDIF
openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ
. " ^7SP3"
. ": " . $SectorSplit3 . " "
. $color
. "(" . $DiffSectorSplit3 . ")"
. "&^7TPB:" . $Tpb);
EndEvent

Event OnSpbLast()
IF( $isBestSectorSplitLast == 1 )
THEN
$color = "^2";
ELSE
$color = "^1";
ENDIF
openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ
. " ^7SPL: "
. $SectorSplitLast . " "
. $color
. "(" . $DiffSectorSplitLast
. ")&^7TPB:" . $Tpb . " Avg:" . $AvgSpeed . " " . $UnitSpeed );
EndEvent

####################################################
#Actions to do on splits relative to trackinfo.cfg#
####################################################
#Local variable: {SplitTime} - Split time
#-------------------------------------------------------------------

Sub TRI_split1_0()
cmdLFS( "/msg Great 1st split (" . $SplitTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_split1_1()
cmdLFS( "/msg Good 1st split (" . $SplitTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_split2_0()
cmdLFS( "/msg Great 2nd split (" . $SplitTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_split2_1()
cmdLFS( "/msg Good 2nd split (" . $SplitTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_split3_0()
cmdLFS( "/msg Great 3rd split (" . $SplitTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_split3_1()
cmdLFS( "/msg Good 3rd split (" . $SplitTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_lap_0()
cmdLFS( "/msg Great lap (" . $LapTime . ") by " . $Nickname . "^8!" );
EndSub
Sub TRI_lap_1()
cmdLFS( "/msg Great lap (" . $LapTime . ") by " . $Nickname . "^8!" );
EndSub

#########################
#List of user qualifying#
#########################
#RefreshQualUsers : allow Lapper to refresh QualUsers on each outgoing pits, Usefull if QualUsers is a file and this is changed frequently by an external program
#QualUser : is a list of racers that participed in the qualification, required for function !nearqual !topqual and !statsqual
#if you prefix with & , You can indicate a file name that contains a list of racers, one racer per line (example : QualUsers = ./userfile.txt
#if you prefix with @, You can list usernames separated with ',' (example : QualUsers = @Gai-Luron,gwendoline,_-ALUCARD-_,lagamel
#You can specify which car is used by a user adding car after username separated by ':' (example : Gai-Luron:XFR,lagamel:UFR)
#You can specify the scheme of group of this qualification using a special username called DefGroup
#Defgroup Take 3 argument separated with ':'
#1 - Is the number Max of Group for this qualification
#2 - Is the number max of user per group
#3 - Is the minimum of user in the last group, recalc previous group as possible if number is low
#If you ommit scheme of groups, the group of qualification do not appear
#-------------------------------------------------------------------

$RefreshQualUsers = true;
#$QualUsers = "&./your_file.flt";
$QualUsers = "@DefGroup:5:5:2,Gai-Luron,MataGyula,nesrulz,gwendoline,_-ALUCARD-_,lagamel,lister88,c-quad,shimanofr,bruno7529,boby5,kevinb,edgar,berlioz,la tortue,neron59,eur-can,stff,2psbob,oliv76000";

###################
#Scheduled actions#
###################
#Syntax: ss mm hh dd MM YYYY
#-------------------------------------------------------------------

Register ScheduleAction( "0 0 0 * * *", SA_mid );
Sub SA_mid()
cmdLFS("/rcm Midnight warning to all working men!");
cmdLFS("/rcm_all");
EndSub

Register ScheduleAction( "0 0 0 1 1 *", SA_newyear );
Sub SA_newyear()
cmdLFS("/rcm Happy New Year!");
cmdLFS("/rcm_all");
EndSub

#################
#Command actions#
#################
#$allow is optional if you wish to specify users, that are allowed to execute action
#You can specify more users if you separated them by ','
#You can use a file to specify users, one user per line (example : $allow = "&./your_file.flt"
#If ! before a name, force nickName authentification if UseUsernameForAuthentication=true
#If ! before a name, force userName authentification if UseUsernameForAuthentication=false
#You can use regexp expression in userName pattern, type regex=your regular expression
#
#Example: if UseUsernameForAuthentication=true
# !regex=^\[COP\].*
# Find all user with a nickname that begins with [COP]
# regex=^Gai.*
# Find all user with a username that begins with Gai
# See regular expression on web for more info how it work
#
#Use & sign at end of patterns
#-------------------------------------------------------------------

$UseUsernameForAuthentication = true;

Register MsgAction("!test",MA_test);
Sub MA_test()
$allow = "Gai-Luron,lagamel";
cmdLFS("/rcm " . $Nickname . " is testing...");
cmdLFS("/rcm_ply " . $Nickname );
EndSub

Register MsgAction("!license",MA_license);
Sub MA_license()
$allow = "Gai-Luron,lagamel";
setLicense( $argv );
EndSub

Register MsgAction("!ban",MA_ban);
Sub MA_ban()
$allow = "Gai-Luron";
cmdLFS( "/ban " . $argv . " 1" );
EndSub

Register MsgAction("!kick",MA_kick);
Sub MA_kick()
$allow = "Gai-Luron";
cmdLFS( "/kick " . $argv );
EndSub

Register MsgAction("!powered",MA_powered);
Sub MA_powered()
http("http://www.frh-team.net/reglapper/getserver2.php");
EndSub

Register MsgAction("!pos",MA_pos);
Sub MA_pos()
privMsg( "Your friendly position is " . $Posabs );
EndSub

Register MsgAction("!posqual",MA_posqual);
Sub MA_posqual()
privMsg( "Your qualification position is " . $Posqual );
EndSub

Register MsgAction("!groupqual",MA_groupqual);
Sub MA_groupqual()
privMsg( "Your groupqual is " . $Groupqual );
EndSub

Register MsgAction("!ver",MA_ver);
Sub MA_ver()
http("http://www.frh-team.net/reglapper/getserver2.php");
lapperVersion();
EndSub

Register MsgAction("!auth",MA_auth);
Sub MA_auth()
authLevel();
EndSub

Register MsgAction("!cleanspb",MA_cleanspb);
Register MsgAction("!razspb",MA_cleanspb);
Sub MA_cleanspb()
cleanSpb();
EndSub

Register MsgAction("!spb",MA_spb);
Sub MA_spb()
showSpb();
EndSub

Register MsgAction("!hand",MA_hand);
Sub MA_hand()
showHand( $argv );
EndSub

Register MsgAction("!statsqual",MA_statsqual);
Sub MA_statsqual()
statsQual( $argv );
EndSub

Register MsgAction("!dstats",MA_dstats);
Sub MA_dstats()
dStats( $argv );
EndSub

Register MsgAction("!stats",MA_stats);
Sub MA_stats()
stats( $argv );
EndSub

Register MsgAction("!nearqual",MA_nearqual);
Sub MA_nearqual()
nearQual( $argv );
EndSub

Register MsgAction("!near",MA_near);
Sub MA_near()
near( $argv );
EndSub

Register MsgAction("!topqual",MA_topqual);
Sub MA_topqual()
topQual( $argv );
EndSub

Register MsgAction("!top",MA_top);
Sub MA_top()
top( $argv );
EndSub

Register MsgAction("!drf",MA_drf);
Sub MA_drf()
drf( $argv );
EndSub

Register MsgAction("!distance",MA_distance);
Sub MA_distance()
privMsg("Distance done on " . $Car . "/" . $ShortTrackName . " = " . $Dist . ", session = " . $SessDist );
EndSub

Register MsgAction("!laps",MA_laps);
Sub MA_laps()
privMsg( "Laps done on " . $Car . "/" . $ShortTrackName ." = " . $Laps . ", session = " . $SessLaps );
EndSub

Register MsgAction("!pit",MA_pit);
Sub MA_pit()
privMsg( "Time in pitting " . $TotalPitTime );
EndSub

Register MsgAction("!track",MA_track);
Sub MA_track()
privMsg( "Track in use :" . $ShortTrackName . " = " . $LongTrackName );
EndSub

Register MsgAction("!time",MA_time);
Sub MA_time()
privMsg( "Server time clock reference : " . $LongTime );
EndSub

Register MsgAction("!help",MA_help);
Sub MA_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]"
. "&^3!stats ^8[playername pattern]"
. "&^3!dstats ^8[playername pattern]"
. "&^3!near ^8Gap with 14 pilots near you on the ranking"
. "&^3!spb ^8Split times and TPB (Theoretical PB)"
. "&^3!razspb ^8Start new spb session (eg when changing car)"
. "&^3!track ^8Name of actual track"
. "&^3!time ^8Server time (to leagues mettings)"
. "&^3!ver ^8Version of LFSLapper"
. "&"
. "&^2Special league commands"
. "&^3!topqual ^8Rank to pilots specified on *.flt file"
. "&^3!statsqual ^8Actual Position on prequalify session"
. "&"
. "&^2New functions"
. "&^3!laps ^8Total laps number + session laps number"
. "&^3!hand ^8Handicap by pilot ordered by league-host admin"
. "&^3!pit ^8Total pit stop time"
. "&^3Shft+i ^8Configure your display messages" );
openPrivButton( "close",90,145,20,10,8,-1,32,Ok,MA_closeHelp );
EndSub

Sub MA_closeHelp()
closePrivButton("help&help2&close");
EndSub

#####################################
#Action on teleport to pit (Shift+P)#
#####################################

/*
Event EnterPitAction()
privMsg( $Nickname . "^8 teleported to pits!" );
EndEvent
*/

# Actions to execute when player spectates or disconnects (leaves race).

/*
Event LeaveRaceAction()
privMsg( $Nickname . "^8 left the race!";
EndEvent
*/

###############################
#Action a player flooding chat#
###############################

Event FloodAction()
privMsg( $Nickname . "^3 kicked for flooding" );
cmdLFS( "/kick " . $Username );
EndEvent

$MaxFloodLines = 4; # Maximum number of consecutive lines allowed

$MaxFloodLinesTime = 5000; # Maximum time between two consecutive lines in milliseconds to count as flooding

######################
#Action on race start#
######################

Event RaceStartAction()
cmdLFS( "/rcm ^3Please, brake in time, No Crashing!!" );
cmdLFS( "/rcm_all" );
EndEvent

#########################
#Action to do on session#
#########################

/*
$MaxSessionLaps = 2;

Event OnMaxSessionLaps()
privMsg( "Max session laps reacheds" );
EndEvent
*/

###############################
#Options on spinning detection#
###############################

$MinAngleVelocity = 250; # Minimum angle velocity to trigger action. Possible values: 0 - 720

# Action to execute when angle velocity is higher than MinAngleVelocity.

/*
Event
cmdLFS( "/spec " . $Nickname );
cmdLFS( "/msg " . $Nickname . " ^3 removed from track for wrecking" );
EndEvent
*/

Event AngleVelocityAction()
cmdLFS( "/msg ^1Danger! ^8" . $Nickname . " ^2lost control!" );
EndEvent

$MaxNbInStunt = 20; #MaxNbInStunt is max time (in 100 ms) allowed in stunt mode before MaxNbInStuntAction is executed. If -1 No MaxNbInStuntAction are activated

Event MaxNbInStuntAction()
cmdLFS( "/spec " . $Nickname );
EndEvent

#################################
#Actions when player is too slow#
#################################

#$MaxAllowedLapTime1 = 100; # % Max allowed time to complete a lap relative to MaxLapTime in trackInfo.cfg

/*
Event OnMaxAllowedLapTime1()
privMsg( "you are too slow! Max : " . $MaxAllowedLapTime1 );
privMsg( "kick on " . $MaxAllowedLapTime2 );
EndEvent
*/

#$MaxAllowedLapTime2 = 150; # % Max allowed time to complete a lap relative to MaxLapTime in trackInfo.cfg

/*
Event OnMaxAllowedLapTime2()
privMsg( "You are very slow, spectated!" );
cmdLFS( "/msg " . $Nickname . " is too slow, spectated!" );
cmdLFS( "/spec " . $Username );
EndEvent
*/

Drift not working too:

Quote :
##################
#Drifting options#
##################
# This is the filepath for a file containing the collected data.
# This file will be created if it doesnt exist yet.
# You must ensure read/write access to this path.
#-------------------------------------------------------------------

$DriftDatabase = "./DriftPB";

# Actions to do on new personal best drift lap.

/*
Event DriftPBAction()
cmdLFS( "/rcm " . $Nickname . "^3 made new PB: ^7" . $DriftScore . " ^3pts!" );
cmdLFS( "/rcm_all" );
EndEvent

Event DriftPBAction()
cmdLFS( "/msg " . $Nickname . "^3 made new PB: ^7" . $DriftScore . " ^3pts!" );
EndEvent
*/

# Actions to do to when total lap drift score is higher or equal to MinimumDriftScore.

/*
Event DriftLapAction()
cmdLFS("/msg " . $Nickname . " ^3drifted to ^7" . $DriftScore . " ^3pts" );
EndEvent
*/

# Message to get on end of each drift.
# Possible variables to use:

/*
Event OnDriftScore()
privMsg( "Score: ^7" . $DriftScore . " ^3" . $LastDriftScore );
EndEvent
*/

$GoodDriftScore = 20; # Value to be reached to execute action on good drift score

/*
Event GoodDriftAction()
privMsg( $Nickname . " ^3made excellent drift: ^7" . $LastDriftScore ." ^3pts" );
EndEvent
*/

$MinimumDriftScore = 10; # Minimum drift score required

# Actions to do at end of lap if MinimumDriftScore is not achieved.

/*
Event DriftTooLowAction()
privMsg( $Nickname . "^3 disqualified" );
cmdLFS( "/spec " . $Nickname };
EndEvent
*/

$MinimumDriftSpeed = 40; # 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 = 100; # Maximum angel to maintain. When angle is above value, score is reset


This will never work:


Sub OnConnectClose()
closePrivButton("welc&pos&clos&ref");
/*
IF( $Nickname == "unnamed" )
THEN
cmdLFS( "/kick " . $Username );
ENDIF
*/
EndSub

This should be:


Sub OnConnectClose()
closePrivButton("welc&pos&clos&ref");
IF( $Nickname == "unnamed" )
THEN
cmdLFS( "/kick unnamed" );
ENDIF
EndSub

Problem with drif options is same as above.
All code between /* and */ is excluded and will never be executed.
Try this:


##################
#Drifting options#
##################
# This is the filepath for a file containing the collected data.
# This file will be created if it doesnt exist yet.
# You must ensure read/write access to this path.
#-------------------------------------------------------------------

$DriftDatabase = "./DriftPB";

# Actions to do on new personal best drift lap.

Event DriftPBAction()
cmdLFS( "/rcm " . $Nickname . "^3 made new PB: ^7" . $DriftScore . " ^3pts!" );
cmdLFS( "/rcm_all" );
EndEvent

Event DriftPBAction()
cmdLFS( "/msg " . $Nickname . "^3 made new PB: ^7" . $DriftScore . " ^3pts!" );
EndEvent

# Actions to do to when total lap drift score is higher or equal to MinimumDriftScore.

Event DriftLapAction()
cmdLFS("/msg " . $Nickname . " ^3drifted to ^7" . $DriftScore . " ^3pts" );
EndEvent

# Message to get on end of each drift.
# Possible variables to use:

Event OnDriftScore()
privMsg( "Score: ^7" . $DriftScore . " ^3" . $LastDriftScore );
EndEvent

$GoodDriftScore = 20; # Value to be reached to execute action on good drift score

Event GoodDriftAction()
privMsg( $Nickname . " ^3made excellent drift: ^7" . $LastDriftScore ." ^3pts" );
EndEvent

$MinimumDriftScore = 10; # Minimum drift score required

# Actions to do at end of lap if MinimumDriftScore is not achieved.

Event DriftTooLowAction()
privMsg( $Nickname . "^3 disqualified" );
cmdLFS( "/spec " . $Nickname };
EndEvent

$MinimumDriftSpeed = 40; # 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 = 100; # Maximum angel to maintain. When angle is above value, score is reset


FGED GREDG RDFGDR GSFDG