##################################################################### # # This is sample script for LFSLapper. # # Use non-formatting text editor such as notepad to modify script. ##################################################################### # Lines beginning with '#' are comments and are ignored by program. # Lines beginning with TAB are considered as part of last key line. # If more keys with same name exist, value of last one in file will be used. # That way it's possible to override commands. See at end of this file. # In all text responses you can also use colors: # ^0 - black # ^1 - red # ^2 - green # ^3 - yellow # ^4 - blue # ^5 - violet # ^6 - cyan # ^7 - white # ^8 - no color # If using also unicode characters, save script as unicode text document. # Global variables, that can be used in any action: # {ShortTime} - Local time of server in short form # {LongTime} - Local time of server in long form # {ShortDate} - Local date of server in short form # {LongDate} - Local date of server in long form # {ShortTrackName} - Current track name in short form # {LongTrackName} - Current track name in long form # # Symbol replacements: # {colon} - symbol ':' # {at} - symbol '@' # {vbar} - symbol '|' ################################### # General options ################################### # Host IP. When more network interfaces are present, set it to IP of your host. Host = 10.0.0.1 # Insim UDP port. # Before starting LFSLapper you must configure LFS server to use this port for InSim. # You can do that in command line when starting LFS (/insim=29999) or in talk window of LFS (/insim 29999). Port = 29999 # Change Password to match Admin password on LFS server. # Usually this is the only value that needs to be modified for this default script to work. Password = TrackInfoFile = trackInfo.cfg TCPmode = true # Identification for connect to PubStat : To obtain PubStatIdk go to www.lfsworld.net, select My LFSW Setting and select tab Pubstat Access # The better way is obtain and idk, send login and pass on net it's not safe #PubStatIdk = # Message that is shown to players when they connect to server. Use '|' for new line. # {Posqual} - Position on pre-qualification # {Groupqual} - Group pre-qualification # {Posabs} - Position on pre-qualification # {SessLaps} - Number of laps on current car and track for session # {TotalPitTime} - Total Time stop in pit place # {Laps} - Number of Lap on current track and default Car # {Car} - Default car, because at this time, Lapper don't know your car # {ShortTrackName} - Current short Trackname ConnectMsg = ^7Welcome to ^1LFSLapper ^7powered server !(qual mode)| ^2Type ^7!help ^2after leaving garage to see commands.| Total laps done on {Car}/{ShortTrackName} = {Laps}-^7This session = {SessLaps}| ^7Your actual friendly Position (all visitors) {colon} ^7{Posabs}| ^2Your actual League prequalify Position {colon} {Posqual}| ^6Estimate Pool {colon} {Groupqual}| # Enable if you want to show control of players when leaving the garage. ShowPlayerControl = true # Private Message that are send on spb. # Message on lower split : Message on upper split # {Nickname} - Nickname of driver # {Username} - Username of driver # {CurSplit} - Relative Time to begin of split and end of split # {BestSplit} - Relative Time on best Split # {DiffSplit} - CurSplit - BestSplit # {BestSpeed} - Best to begin of lap to this split # {Tpb} - Théorical PB # {Posqual} - Position on pre-qualification # {Groupqual} - Group pre-qualification # {Posabs} - Position on pre-qualification # {SessLaps} - Number of laps on current car and track for session # {TotalPitTime} - Total Time stop in pit place # {Laps} - Number of laps on current car and car # {Car} - Current car of Player # Only for LastSplit ( End of Lap ) you can use # {AvgSpeed} - Average Speed for this lap # {typ} - = "Sess" if split PB of Session # = "PB" if split PB of PB file # {UnitSpeed} Unit of the Speed of the player connected ShowSplitPB = true PrivMessSpb1Up = {typ} ^7SP1{colon} {CurSplit} ^1({DiffSplit}) ^7=>TPB{colon}{Tpb} PrivMessSpb1Low = {typ} ^7SP1{colon} {CurSplit} ^2({DiffSplit}) ^7=>TPB{colon}{Tpb} PrivMessSpb2Up = {typ} ^7SP2{colon} {CurSplit} ^1({DiffSplit}) ^7=>TPB{colon}{Tpb} PrivMessSpb2Low = {typ} ^7SP2{colon} {CurSplit} ^2({DiffSplit}) ^7=>TPB{colon}{Tpb} PrivMessSpb3Up = {typ} ^7SP3{colon} {CurSplit} ^1({DiffSplit}) ^7=>TPB{colon}{Tpb} PrivMessSpb3Low = {typ} ^7SP3{colon} {CurSplit} ^2({DiffSplit}) ^7=>TPB{colon}{Tpb} PrivMessSpbLastUp = {typ} ^7SPL{colon} {CurSplit} ^1({DiffSplit}) ^7=>TPB{colon}{Tpb} Avg:{AvgSpeed} {UnitSpeed} PrivMessSpbLastLow = {typ} ^7SPL{colon} {CurSplit} ^2({DiffSplit}) ^7=>TPB{colon}{Tpb} Avg:{AvgSpeed} {UnitSpeed} # RefreshHandicapUser : allow Lapper to refresh HandicapUsers on each outgoing pits, Usefull if HandicapUsers is a file and this change frequently by extern program # HandicapUser : is a list of racer and her handicap # if you prefix with & , You can indicate a file name who contain list of racer, one racer per line ex : HandicapUsers = ./userfile.txt # if you prefix with @, You can list username separated with , ex : HandicapUsers = @Gai-Luron,gwendoline,_-ALUCARD-_,lagamel # You can specify the required Handicap of player in the username Mass and Intake restriction # ex : Gai-Luron:100:10 # Indicate 100kg of mass handicap and 10% of intake restriction, this value are used in OnToLowHandicap # In demo mode use nickname #RefreshHandicapUser = 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 # RefreshQualUser : allow Lapper to refresh QualUsers on each outgoing pits, Usefull if QualUsers is a file and this change frequently by extern program # QualUser : is a list of racer who participe at qualification, required for function !nearqual !topqual and !statsqual # if you prefix with & , You can indicate a file name who contain list of racer, one racer per line ex : QualUsers = ./userfile.txt # if you prefix with @, You can list username separated with , ex : QualUsers = @Gai-Luron,gwendoline,_-ALUCARD-_,lagamel # You can specify the required Handicap of player in the username Mass and Intake restriction # ex : Gai-Luron:100:10 # Indicate 100kg of mass handicap and 10% of intake restriction, this value are used in OnToLowHandicap # In demo mode use nickname # 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 RefreshQualUser = 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 # Action to do on race restarts. # If more actions, separate them with '|'. #RaceStartAction = /msg ^Team Shift Lock! ! RaceStartAction = /rcm ^Team Shift Lock!|/rcm_all # Default car to show, when no car is specified in !top or !drf command. #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 # How much time will big text messages last (text that is started by rcm_all command). # In milliseconds. MessageTime = 5000 # Whether to use usernames instead of nicknames for authentication of users executing AutoAction. UseUsernameForAuthentication = true # Actions that are executed on received messages. Use '|' for next pattern/action pair and to separate pattern from action. # If more actions or patterns, separate them with ':'. # Use @ sign at end of patterns, if you wish to specify users, that are allowed to execute action. # Use & sign at end of patterns, if you wish to specify a file containing users, that are allowed to execute action. users separate by \n # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {*} Rest off command line AutoAction = lol|/msg ^3what's so funny, {Nickname}?| unnamed|/msg no name no game:/kick unnamed| !test|/rcm {Nickname} is testing...:/rcm_ply {Nickname}| !ban@Gai-Luron|/ban {*}| !kick@Gai-Luron|/kick {*} # Actions that are executed on schedule. Use '|' for next schedule/action pair and to separate schedule from action. # If more schedules or actions, separate them with ':'. # To escape ':' type '\:' if you want ':' in your message. # # ssmmhhddMMYYYY #ScheduledAction = 0 * * * * * : 30 * * * * *|/msg Kicking time (every 30 seconds)!:/kick unnamed ScheduledAction = 0 0 0 * * * |/rcm Midnight warning to all working men!:/rcm_all| 0 0 0 1 1 * |/rcm Happy New Year!:/rcm_all # Private multiline messages to send to player. Use '|' for next pattern/message pair and to separate pattern from message. Use ':' for new line. # Possible variables to use: # {UserName} - Username of driver that sent message # {Nickname} - Nickname of driver that sent message # {Laps} - Number of laps on current car and track # {SessLaps} - Number of laps on current car and track for session # {TotalPitTime} - Total Time stop in pit place # {Car} - Car of current player or default car if in spectate mode # {ShortTrackName} - Current short Trackname # {TotalPitTime} - Total time of pitting # {*} = Rest of command line ( argument ) AutoMsgPrivate = !ver|/ver| !cleanspb:!razspb|/cleanspb| !spb|/spb| !hand|/hand {*}| !statsqual|/statsqual {*}| !dstats|/dstats {*}| !stats|/stats {*}| !nearqual|/nearqual {*}| !near|/near {*}| !topqual|/topqual {*}| !top|/top {*}| !drf|/drf {*}| !laps|Laps done on {Car}/{ShortTrackName} = {Laps}, session = {SessLaps}| !pit|Time in pitting {TotalPitTime}| !track|Track in use {colon} {ShortTrackName} = {LongTrackName}| !time|Server time clock reference {colon} {LongTime}| !help| ^2Commands list: ^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 rank: ^3!spb ^8Split times and TPB (Theorical PB): ^3!razspb ^8Restart new spb session (eg when changing car): ^3!track ^8Name of actual track: ^3!time ^8Server time (to leagues mettings): ^3!ver Version of LFSLapper: ^2Special leagues 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 # Actions to execute when player teleports to pits by options or SHIFT+S. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver #EnterPitAction = /msg {Nickname}^8 Needed new tyres ! # Actions to execute when player spectates or disconnects (leaves race). # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver #LeaveRaceAction = /msg {Nickname}^8 leaves race ! ################################### # Pitting penalties ################################### # Actions to execute when player gets drive-through penalty. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver DriveThroughPenaltyAction = /msg {Nickname}^1 Dont try this at home|/rcm ^1WARNING-KICK POSSIBLE|/rcm_ply {Username}|/spectate {Username} # Maximum Drive-Through penalties to tolerate. MaxDriveThroughPenalties = 1 # Actions to execute when player gets stop-go penalty. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver StopGoPenaltyAction = /msg {Nickname}^1 kicked to fast drive on pit|/rcm ^1WARNING-BAN POSSIBLE|/rcm_ply {Username}|/kick {Username} # Maximum Stop-Go penalties to tolerate. MaxStopGoPenalties = 0 # Actions to execute when player gets 30 seconds penalty. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver Time30PenaltyAction = /msg {Nickname}^1 kicked to fast drive on pit|/rcm ^1WARNING-BAN POSSIBLE|/rcm_ply {Username}|/kick {Username} # Actions to execute when player gets 45 seconds penalty. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver Time45PenaltyAction = /msg {Nickname}^1 kicked to fast drive on pit|/rcm ^1WARNING-BAN POSSIBLE|/rcm_ply {Username}|/kick {Username} ################################### # FTP transfer ################################### # Results files can also be transferred to FTP server. # Define following parameters to use this feature. #FtpServer = your ftp server #FtpLogin = your login #FtpPasswd = your password #FtpRemotePath = your remote dir #################################### # Flooding options #################################### # Actions to execute, when player writes many lines within defined amount of time. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver FloodAction = /msg {Nickname}^3 Kicked for talking way too much!|/kick {Username} # Maximum number of consecutive lines allowed. MaxFloodLines = 5 # Maximum time between two consecutive lines in milliseconds to count as flooding. MaxFloodLinesTime = 5000 #################################### # Spinning detection options #################################### # Minimum angle velocity to trigger action. Possible values: 0 - 720. MinAngleVelocity = 250 # Action to execute when angle velocity is higher than MinAngleVelocity. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {AngleVelocity} - Angle velocity in degrees #AngleVelocityAction = /spectate {Nickname}|/msg {Nickname} ^3 removed from track for wrecking AngleVelocityAction = /msg ^1Danger! ^8{Nickname} ^2lost control! #MaxNbInStunt is max time (in 100 ms) allowed in stunt mode before MaxNbInStuntAction is executed. If -1 No MaxNbInStuntAction are activated. MaxNbInStunt = 20 MaxNbInStuntAction = /spectate {Nickname} #################################### # handicap action #################################### # Actions to execute, when handicap of player is less than specified in qualusers infos. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {H_Mass} - User mass required # {H_TRes} - User Intake restriction required OnToLowHandicap = /spectate {Nickname}| /msg {Nickname}^3 spectated for to low handicap| /msg ^3need {H_Mass}kg and {H_TRes}% of intake restriction! #################################### # Idling options #################################### # Actions to execute, when speed of player is zero for defined amount of time. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver OnIdleAction1 = /msg {Nickname}^3 is idle ! Spectate in 10 seconds OnIdleAction2 = /spectate {Nickname}| /msg {Nickname}^3 spectated for non-activity! track cleared # Idle timeout for OnIdleAction1 in seconds. OnIdleTimeout1 = 20 # Idle timeout for OnIdleAction2 in seconds. OnIdleTimeout2 = 30 #################################### # Drifting options #################################### # Actions to do on new personal best drift lap. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {DriftScore} - Drift score # {Car} - Car used # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of Lap on current track and Car # {TotalPitTime} - Total Time stop in pit place #DriftPBAction = /rcm {Nickname}^3 made new PB: ^7{DriftScore} ^3pts!|/rcm_all #DriftPBAction = /msg {Nickname}^3 made new PB: ^7{DriftScore} ^3pts! # This is filepath of file containing collected data. # Will be created if it doesnt exist yet. # You must ensure read/write access to this path. DriftDatabase = ./DriftPB.txt # Actions to do to when total lap drift score is higher or equal to MinimumDriftScore. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {DriftScore} - Drift score # {Car} - Car used # {SessLaps} - Number of laps on current car and track for session # {TotalPitTime} - Total Time stop in pit place # {Laps} - Number of Lap on current track and Car #DriftLapAction = /msg {Nickname} ^3drifted to ^7{DriftScore} ^3pts # Private message to get on end of each drift. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {DriftScore} - Total drift score # {LastDriftScore} - Last drift score # {Car} - Car used # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of Lap on current track and Car # {TotalPitTime} - Total Time stop in pit place #PrivateMessageOnDriftScore = Score: ^7{DriftScore} ^3+{LastDriftScore} # Action to execute on good drift score. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {LastDriftScore} - Last drift score # {Car} - Car used # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of Lap on current track and Car # {TotalPitTime} - Total Time stop in pit place GoodDriftScore = 4000 #GoodDriftAction = /msg {Nickname} ^3made nice drift!: ^7{LastDriftScore} ^3pts # Minimum drift score required. MinimumDriftScore = 10 # Actions to do at end of lap if MinimumDriftScore is not achieved. # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {DriftScore} - Drift score # {Car} - Car used # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of Lap on current track and Car # {TotalPitTime} - Total Time stop in pit place #DriftTooLowAction = /msg {Nickname}^3 disqualified|/spectate {Nickname} #DriftTooLowAction = /msg {Nickname}^3 is one lousy drifter ({DriftScore} pts) # Minimum speed in km/h to maintain. Driving below that speed will reset score. MinimumDriftSpeed = 30 MinimumDriftAngle = 15 MaximumDriftAngle = 100 #################################### # Hotlapping options #################################### # This is filepath of file containing collected data. # Will be created if it doesnt exist yet. # You must ensure read/write access to this path. Database = ./PB.txt # Action to do on new personal best lap. # PBQualAction for the racer who make qualif ( in QualUser ) # PBAction the other racer # If more actions, separate them with '|'. # Possible variables to use: # {Nickname} - Nickname of driver # {Username} - Username of driver # {LapTime} - Lap time achieved # {Car} - Car used # {Posqual} - Position on pre-qualification # {Groupqual} - Group pre-qualification # {Posabs} - Position on pre-qualification # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of Lap on current track and Car # {TotalPitTime} - Total Time stop in pit place # {AvgSpeed} - Average Speed for this lap # {UnitSpeed} Unit of the Speed of the player connected #PBAction = /msg New PB by {Nickname}^8 ({Car}): {LapTime} PBAction = /msg New PB by {Nickname}^8 ({Car}): {LapTime}|/msg Friendly rank {colon} {Posabs}|/msg Session laps done = {SessLaps}|/msg Total laps done (server) = {Laps}|/msg Average speed {colon} {AvgSpeed} {UnitSpeed}|/rcm Friendly {Car}rank {colon} ^7{Posabs}|/rcm_ply {Username} PBQualAction = /msg League - New QT by {Nickname}^8 {colon} {LapTime}|/msg Friendly rank (all visitors) {colon} ^7{Posabs}|/msg ^2Qualify pos. {colon} {Posqual}|/msg ^6Actual Pool {colon} {Groupqual}|/msg Average speed {colon} {AvgSpeed} {UnitSpeed}|/rcm {Nickname} ^2Pos:{Posqual}-Pool:{Groupqual}|/rcm_All #################################### # Acceleration options #################################### # At which speed to start and stop measuring time. In km/h. AccelerationStartSpeed = 1 AccelerationEndSpeed = 100 AccelerationStartSpeedMph = 1 AccelerationEndSpeedMph = 60 # Maximum acceleration time in seconds to show private message. AccelerationPrivateMaxTime = 10 # Message to show to players. # Possible variables to use: # {AccelerationStartSpeed} - Starting speed # {AccelerationEndSpeed} - Ending speed # {AccelerationTime} - Acceleration time achieved from start to end speed # {UnitSpeed} Unit of the Speed of the player connected AccelerationPrivateMessage = ^3{AccelerationTime}^8 seconds to {AccelerationEndSpeed} {UnitSpeed} ! #################################### # Pitting #################################### # Private Message that are send on pitting ( begin and end ). # Message on lower split : Message on upper split # {Nickname} - Nickname of driver # {Username} - Username of driver # {Tpb} - Théorical PB # {Posqual} - Position on pre-qualification # {Groupqual} - Group pre-qualification # {Posabs} - Position on pre-qualification # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of laps on current car and car # {Car} - Current car of Player # {PitTime} - Time stop in pit place ( only for EndPitPrivMess ) # {TotalPitTime} - Total Time stop in pit place # {Work} - Work on pit ( only for BeginPitPrivMess ) BeginPitPrivMess = Pit begin! Work : {Work} EndPitPrivMess = Pit finished in {PitTime} - Total Pit : {TotalPitTime}! # Action to do on pitting ( begin and end ). # Message on lower split : Message on upper split # {Nickname} - Nickname of driver # {Username} - Username of driver # {Tpb} - Théorical PB # {Posqual} - Position on pre-qualification # {Groupqual} - Group pre-qualification # {Posabs} - Position on pre-qualification # {SessLaps} - Number of laps on current car and track for session # {Laps} - Number of laps on current car and car # {Car} - Current car of Player # {PitTime} - Time stop in pit place ( only for OnEndPit ) # {TotalPitTime} - Total Time stop in pit place # {Work} - Work on pit ( only for OnBeginPit ) OnBeginPit = /msg {Nickname}^8 go to pit OnEndPit = /msg {Nickname}^8 quit pit in {PitTime} #################################### # Overriding options ####################################