/* List of All variable that can be used in player events $Nickname -> Nickname $Username -> UserName $Laps -> Total number of laps done on the current track and with the current car $SessLaps -> Total number of laps done this session on current track and with the current car $TotalPitTime -> Total Time used for a pitstop $Car -> Current car of the player $Posabs -> Current absolute position $Posqual -> Current qualification position $Groupqual -> Current group qualification $SwearWordsRem -> Remaining number of swearwords to be used before SwearWordsAction2 is triggered $H_Mass -> User mass required on this server $H_TRes -> User intake restriction required on this server $P_Mass -> Current player Mass $P_TRes -> Current player restriction $SplitTime -> Last Split time done by player $CurSplit -> Split duration for the last sector $BestSplit -> Best Split duration for the last sector $DiffSplit -> CurSplit - BestSplit $Split1 -> Last First Split, updated when doing new Split1 $Split2 -> Last First Split, erased when doing Split1 $Split3 -> Last First Split, erased when doing Split1 $LapTime -> Current Lap Time, erased when doing New LapTime $SectorSplit1 -> Last First sector Split, updated when doing new Split1 $SectorSplit2 -> Last second sector Split, erased when doing Split1 $SectorSplit3 -> Last third sector Split, erased when doing Split1 $SectorSplitLast -> Last Last sector Split, erased when doing Split1 $SectorBestSplit1 -> Best Split duration for the sector 1 $SectorBestSplit2 -> Best Split duration for the sector 2 $SectorBestSplit3 -> Best Split duration for the sector 3 $SectorBestSplitLast-> BestSplit duration for the last sector $DiffSectorSplit1 -> $SectorSplit1 - $SectorBestSplit1 $DiffSectorSplit2 -> $SectorSplit2 - $SectorBestSplit2 $DiffSectorSplit3 -> $SectorSplit3 - $SectorBestSplit3 $DiffSectorSplitLast-> $SectorSplitLast - $SectorBestSplitLast $BestSpeed -> Best Speed done on this combo by player $UnitSpeed -> Speedunit of the current player $Tpb -> Theoretical PB $DriftScore -> Drift score $typ -> {typ} - = "Sess" if split PB for Session "PB" if split PB for PB file; $AngleVelocity -> Last Angle velocity in degrees $LastDriftScore -> Last drift score $AccelerationStartSpeed -> Starting speed $AccelerationEndSpeed -> Ending speed $AccelerationTime -> Acceleration time achieved from start to end speed $MaxAllowedLapTime1 -> Max Allowed Time before trigger Event OnMaxAllowedLapTime1 $MaxAllowedLapTime2 -> Max Allowed Time before trigger Event OnMaxAllowedLapTime2 $Dist -> Distance done on current combo/track by player $SessDist -> Distance done on current combo/track by player this session List of all variables that can be used in all events $ShortTime -> Server Time in short format $LongTime -> Server Time in long format $ShortDate -> Date in short format $LongDate -> Date in long format Additionnal variable that can be used in OnSpbLastLow or OnSpbLastUp. $AvgSpeed -> Current Lap Time Additionnal variable that can be used in OnBeginPit. $Work -> Work do on current car player after Pit Additionnal variables that can be used in votation. $Vote -> Number of player that have voted to restart, qualify or end $Players -> Number of player that can vote ( player on track ) $Remain -> Number of votes remaining after votation conclude $Need -> Number of votes to do action (qualify, restart, end) Additionnal variables that can be used in OnNotMatchFlags. $RequiredFlags -> Flag(s) required on this server $PlayerFlags -> Flag(s) for the current player Additionnal variable that can be used in OnFastDriveOnPitL1 or OnFastDriveOnPitL2. $RemainFDIP -> Number of remaining penalties for fast driving in pits Additionnal variable that can be used in OnAuthReached. $auth -> Authorization reached */ /* Command block to run when a LFS Special event is triggered Event EventId() ... EndEvent Command block used by backcall command like button or scheduled action or when received a command by player Sub SubId() ... EndSub Register MsgAction("!test",MA_test); You can register a subfunction to call when a player typed a special text Firts arg = text typed in Second arg = Sub to call when a player typed this text Register ScheduleAction( "0 0 0 * * *", SA_mid ); You can register a subfunction to call when a time is reached Firts arg = cron format ss mm hh dd MM YYYY Second arg = Sub to call when player type this text Command allowed on Event and Sub cmdLFS("Command_text"); Send a command to Lapper, see command.txt in LFS Doc privMsg( "Message_text"); Send a private message to the player that has triggered the event openPrivButton( "help",25,28,150,10,5,-1,0,"^2Commands list" ); openPrivButton( "help",25,28,150,10,5,-1,0,"^2Commands list", backcall ); Open a button for the current player 1 - Unique id for this button 2 - Left coordinate for this button ( 0-200 ) 3 - Top coordinate for this button ( 0-200 ) 4 - Width of the button ( 0-200 ) 5 - Heigth of the button ( 0-200 ) 6 - Space between line in multiline button 7 - Duration in seconds for the button to be displayed (use -1 if you don't want an automatic close) 8 - Format of the button, look at insim.txt for values 9 - Button caption, for multiline, separate each line with & 10 - Option name of the backcalled sub closePrivButton("welc&pos&clos&ref"); Close one or more button(s), you specify ID of the button to close, multiple ID's have to be separated by a & openGlobalButton( "bargr1",60,1,10,6,6,30,96,"Restart:" ); Same as openPrivButton, but open button for all players connected closePrivButton("welc&pos&clos&ref"); Same as closePrivButton, but close button for all players connected There are another functions, look in config file */ /* General options */ /* Host IP. When more network interfaces are present, set it to IP of your host. */ $Host = 192.168.0.35; /* 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 = 29998; /* 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"; /* Connection to LFS in UDP mode or TCP mode */ $TCPmode = true; /* Register your server on FRH TEAM WEB, to have a list of servers running Lapper */ $EnableRegisterWeb = true; /* ################################### #Event triggered when lapper start# ################################### Event OnLapperStart() PlayerVar $colleft = "0" ; PlayerVar $colright = "0" ; PlayerVar $coloff = "16" ; PlayerVar $pitb = "0" ; PlayerVar $PB2Left = "0" ; GlobalVar $PBorigL ; $PBorigL = "1" ; GlobalVar $PBorigT ; $PBorigT = "70" ; EndEvent ##################################### Date and time format for PB file Look at C# format date, 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 */ $DateFormat = "dd/MM/yyyy"; $TimeFormat = "HH:mm"; # How much time (in milliseconds) will big text messages last (text that is started by the rcm_all command). $MessageTime = 5000; # Identification for a connection to PubStat # To obtain PubStatIdk go to www.lfsworld.net, select My LFSW Setting and then select tab Pubstat Access $PubStatIdk = "*****************************"; # Enable this if you want to show the control configuration of players when leaving the pits. $ShowPlayerControl = False; ######################################################################### # 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"; ######################################################################### # Sync Database Options # ######################################################################### # $SyncID = "Sync Unique ID for this Lapper"; # $SyncDir = "Sync Directory name for Synchronization", all Lappers to be Synchronized must have same Directory; # $SyncIDsToSync = "All Lappers ID's" to synchronize with, you can't use your current SyncID here; #------------------------------------------------------------------- $SyncID="dsrcTG"; $SyncDir="synchro"; $SyncIDsToSync="dsrcHC"; ######################################################################### # Default Car # ######################################################################### # Default car to show, when no car is specified in !top or !drf command # and when racer not have used a car #----------------------------------------------------------------- #$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"; ######################################################################### # 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"; # Minimum number of players on the server to auto enable Authorization. If less: All player allowed, if more: AuthAllowPlayer only allowed $AuthMinPlayer = 0; 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 # ######################################################################### # # You can specify a list of swearwords here # #----------------------------------------------------------------- # $SwearWordsList : is a list of bad words # - if you prefix with & , You can indicate a file name who contain list of swearWords, one word per line # - if you do not prefix, You can list word separated with , # Syntax : # $SwearWordsList = "&./your_file"; # or $SwearWordsList = "word1,word2,...,wordn"; # # $SwearWordsMax : Maximum number of allowed swearwords per session # #----------------------------------------------------------------- $SwearWordsList = "fuck,asholes,bastard,idiot"; #$SwearWordsList = "&./swear.txt"; $SwearWordsMax = 2; Event SwearWordsAction1() privMsg( "^1Don't use bad language on this server" ); privMsg( "You will be spectated in ^2" . $SwearWordsRem . " ^1 more attempt(s)" ); EndEvent Event SwearWordsAction2() privMsg( "Too many swearwords, spectated" ); cmdLFS( "/spec " . $UserName ); EndEvent ######################################################################### # Handicap # ######################################################################### # # 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 : is a list of racer 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"; # or $HandicapUsers = "@userName:mass:irest,userName:mass:irest,...userName:mass:irest"; # # $RefreshHandicapUsers : allow Lapper to refresh HandicapUsers on each outgoing pits, # Usefull if HandicapUsers is a file and is updated frequently by extern 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 handicap of player is less than specified in HandicapUsers 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 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 # ######################################################################### # Votation ################################################################## # $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 = 0; $EnableRotation = false; $RotateTracks = "SO6R,BL1,FE3"; $RotateEveryNbRaces = 4; $RotateCars = "XFG+UF1,TBO,XFR+UFR"; ######################################################################### # Connect messages # ######################################################################### # Message that is shown to players when they connect to the server. #----------------------------------------------------------------- Event OnConnect() openPrivButton( "welc",25,50,150,15,12,-1,0,"^7Hello " . $Nickname . " ^3Welcome to ^1[OBC] ^7Training Grounds &^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 . "&Please dont use bad language on this server" . "&respect other players at all times" . "&otherwise you will be banned " ); 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 # ######################################################################### # Message that is shown when player disconnect to server. Use '|' for new line. #----------------------------------------------------------------- Event OnDisConnect() cmdLFS( "/msg " . $Nickname . " left the server" ); EndEvent #############################################$# #Splitting (general action when passing split)# ############################################### Event OnSplit1() IF ($pitb == "1" ) THEN IF ($DiffSectorSplit1 > "0.00.50") THEN openPrivButton( "1st_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^1you've lost^8: " . $DiffSectorSplit1 ); ENDIF IF ($DiffSectorSplit1 < "-0.00.00") THEN openPrivButton( "1st_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^2you've gained^8: " . $DiffSectorSplit1 ); ENDIF ENDIF EndEvent Event OnSplit2() IF ($pitb == "1" ) THEN IF ($DiffSectorSplit2 > "0.00.50") THEN openPrivButton( "2nd_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^1you've lost^8: " . $DiffSectorSplit2 ); ENDIF IF ($DiffSectorSplit2 < "-0.00.00") THEN openPrivButton( "2nd_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^2you've gained^8: " . $DiffSectorSplit2 ); ENDIF ENDIF EndEvent Event OnSplit3() IF ($pitb == "1" ) THEN IF ($DiffSectorSplit3 > "0.00.50") THEN openPrivButton( "3rd_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^1you've lost^8: " . $DiffSectorSplit3 ); ENDIF IF ($DiffSectorSplit3 < "-0.00.00") THEN openPrivButton( "3rd_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^2you've gained^8: " . $DiffSectorSplit3 ); ENDIF ENDIF EndEvent Event OnLap() IF ($pitb == "1" ) THEN IF ($DiffSectorSplitLast > "0.00.50") THEN openPrivButton( "last_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^1you've lost^8: " . $DiffSectorSplitLast ); ENDIF IF ($DiffSectorSplitLast < "-0.00.00") THEN openPrivButton( "last_split",$PBorigL + $PB2Left + 1,$PBorigT + 41,30,4,4,10,16,"^2you've gained^8: " . $DiffSectorSplitLast ); ENDIF ENDIF EndEvent ####################################################### #Splitting (compare player split to best player split)# ####################################################### $ShowSplitPB = true; Event OnSpbSplit1() IF( $isBestSectorSplit1 == 1 ) THEN $color = "^2"; ELSE $color = "^1"; ENDIF IF ($pitb == "1" ) THEN openPrivButton( "pitboard_total",$PBorigL + $PB2Left,$PBorigT,32,50,5,-1,32,""); openPrivButton( "pitboard_txt",$PBorigL + $PB2Left + 1,$PBorigT + 1,30,4,4,-1,32,"Pitboard" . "&" . $Nickname); closePrivButton("sec2_txt&sec3_txt&final_txt"); openPrivButton( "sec1_txt",$PBorigL + $PB2Left + 1,$PBorigT + 9,15,4,4,-1,16,"Time sector 1:" . "&" . $color . $SectorSplit1); IF ( $SectorSplit1 < $BestSectorSplit1) THEN openPrivButton( "best_s1_txt",$PBorigL + $PB2Left + 16,$PBorigT + 9,15,4,4,-1,16,"Best sector 1:" . "&" . $SectorSplit1); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $color . $Tpb); ELSE openPrivButton( "best_s1_txt",$PBorigL + $PB2Left + 16,$PBorigT + 9,15,4,4,-1,16,"Best sector 1:" . "&" . $BestSectorSplit1); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $Tpb); ENDIF ELSE openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ . " ^7SP1" . ": " . $SectorSplit1 . " " . $color . "(" . $DiffSectorSplit1 . ")" . "&^7TPB:" . $Tpb); ENDIF EndEvent Event OnSpbSplit2() IF( $isBestSectorSplit2 == 1 ) THEN $color = "^2"; ELSE $color = "^1"; ENDIF IF ($pitb == "1" ) THEN openPrivButton( "sec2_txt",$PBorigL + $PB2Left + 1,$PBorigT + 17,15,4,4,-1,16,"Time sector 2:" . "&" . $color . $SectorSplit2); IF ( $SectorSplit2 < $BestSectorSplit2) THEN openPrivButton( "best_s2_txt",$PBorigL + $PB2Left + 16,$PBorigT + 17,15,4,4,-1,16,"Best sector 2:" . "&" . $SectorSplit2); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $color . $Tpb); ELSE openPrivButton( "best_s2_txt",$PBorigL + $PB2Left + 16,$PBorigT + 17,15,4,4,-1,16,"Best sector 2:" . "&" . $BestSectorSplit2); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $Tpb); ENDIF ELSE openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ . " ^7SP2" . ": " . $SectorSplit2 . " " . $color . "(" . $DiffSectorSplit2 . ")" . "&^7TPB:" . $Tpb); ENDIF EndEvent Event OnSpbSplit3() IF( $isBestSectorSplit3 == 1 ) THEN $color = "^2"; ELSE $color = "^1"; ENDIF IF ($pitb == "1" ) THEN openPrivButton( "sec3_txt",$PBorigL + $PB2Left + 1,$PBorigT + 25,15,4,4,-1,16,"Time sector 3:" . "&" . $color . $SectorSplit3); IF ( $SectorSplit3 < $BestSectorSplit3) THEN openPrivButton( "best_s3_txt",$PBorigL + $PB2Left + 16,$PBorigT + 25,15,4,4,-1,16,"Best sector 3:" . "&" . $SectorSplit3); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $color . $Tpb); ELSE openPrivButton( "best_s3_txt",$PBorigL + $PB2Left + 16,$PBorigT + 25,15,4,4,-1,16,"Best sector 3:" . "&" . $BestSectorSplit3); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $Tpb); ENDIF ELSE openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ . " ^7SP3" . ": " . $SectorSplit3 . " " . $color . "(" . $DiffSectorSplit3 . ")" . "&^7TPB:" . $Tpb); ENDIF EndEvent Event OnSpbLast() IF( $isBestSectorSplitLast == 1 ) THEN $color = "^2"; ELSE $color = "^1"; ENDIF IF ($pitb == "1" ) THEN openPrivButton( "final_txt",$PBorigL + $PB2Left + 1,$PBorigT + 25,15,4,4,-1,16,"Time sector 3:" . "&" . $color . $SectorSplitLast); IF ( $SectorSplitLast < $BestSectorSplitLast) THEN openPrivButton( "best_final_txt",$PBorigL + $PB2Left + 16,$PBorigT + 25,15,4,4,-1,16,"Best sector 3:" . "&" . $SectorSplitLast); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $color . $Tpb); ELSE openPrivButton( "best_final_txt",$PBorigL + $PB2Left + 16,$PBorigT + 25,15,4,4,-1,16,"Best sector 3:" . "&" . $BestSectorSplitLast); openPrivButton( "best_lap_txt",$PBorigL + $PB2Left + 16,$PBorigT + 33,15,4,4,-1,16,"Best poss. lap:" . "&" . $Tpb); ENDIF openPrivButton( "last_lap_txt",$PBorigL + $PB2Left + 1,$PBorigT + 33,15,4,4,-1,16,"Last lap:" . "&" . $LapTime); ELSE openPrivButton( "id_spb",50,55,100,10,10,5,0,$typ . " ^7SPL: " . $SectorSplitLast . " " . $color . "(" . $DiffSectorSplitLast . ")&^7TPB:" . $Tpb . " Avg:" . $AvgSpeed . " " . $UnitSpeed ); ENDIF EndEvent #################################################### #Actions to do on splits relative to trackinfo.cfg# #################################################### #Local variable: {SplitTime} - Split time #------------------------------------------------------------------- Sub TRI_split1_0() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "amazing_1st_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Amazing ^71st split " . $Nickname ); ELSE cmdLFS( "/msg Amazing 1st split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split1_1() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "great_1st_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Great ^71st split " . $Nickname ); ELSE cmdLFS( "/msg Great 1st split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split1_2() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "good_1st_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^3Good ^71st split " . $Nickname ); ELSE cmdLFS( "/msg Good 1st split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split2_0() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "amazing_2nd_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Amazing ^72nd split " . $Nickname ); ELSE cmdLFS( "/msg Amazing 2nd split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split2_1() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "great_2nd_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Great ^72nd split " . $Nickname ); ELSE cmdLFS( "/msg Great 2nd split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split2_2() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "good_2nd_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^3Good ^72nd split " . $Nickname ); ELSE cmdLFS( "/msg Good 2nd split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split3_0() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "amazing_3rd_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Amazing ^73rd split " . $Nickname ); ELSE cmdLFS( "/msg Amazing 3rd split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split3_1() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "great_3rd_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Great ^73rd split " . $Nickname ); ELSE cmdLFS( "/msg Great 3rd split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_split3_2() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "good_3rd_split",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^3Good ^73rd split " . $Nickname ); ELSE cmdLFS( "/msg Good 3rd split (" . $SplitTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_lap_0() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "amazing_lap",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Amazing ^7lap " . $Nickname ); ELSE cmdLFS( "/msg Amazing lap (" . $LapTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_lap_1() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "great_lap",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^2Great ^7lap " . $Nickname ); ELSE cmdLFS( "/msg Great lap (" . $LapTime . ") by " . $Nickname . "^8!" ); ENDIF EndSub Sub TRI_lap_2() IF ($pitb == "1" ) THEN closeGlobalButton("amazing_1st_split&great_1st_split&good_1st_split&amazing_2nd_split&great_2nd_split&good_2nd_split&amazing_3rd_split&great_3rd_split&good_3rd_split&amazing_lap&great_lap&good_lap"); openGlobalButton( "good_lap",$PBorigL + $PB2Left + 1,$PBorigT + 45,30,4,4,10,16,"^3Good ^7lap " . $Nickname ); ELSE cmdLFS( "/msg Good lap (" . $LapTime . ") by " . $Nickname . "^8!" ); ENDIF 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 # ######################################################################### # Actions that are executed on schedule. # # ss mm hh dd MM YYYY #------------------------------------------------------------------- Register ScheduleAction( "0 0 0 * * *", SA_mid ); Sub SA_mid() cmdLFS("/rcm It's midnight...time for bed said Zebidee!"); 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 ######################################################################### # Action # ######################################################################### # Action to do on a special command typed in message line # $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 Register MsgAction("!pitboard",MA_pitboard); Sub MA_pitboard() IF( $pitb != "1" ) THEN $colleft = "0" ; $colright = "0" ; $coloff = "16" ; ELSE IF( $PB2Left == "0" ) THEN $colleft = "16" ; $colright = "0" ; $coloff = "0" ; ELSE $colleft = "0" ; $colright = "16" ; $coloff = "0" ; ENDIF ENDIF openPrivButton( "pitboard",40,0,27,3,3,-1,96," Pitboard :"); openPrivButton( "pitboardleft",48,0,5,3,3,-1,$colleft,"Left",MA_pitboardleft); openPrivButton( "pitboardright",53,0,5,3,3,-1,$colright,"Rigth",MA_pitboardrigth); openPrivButton( "pitboardoff",58,0,5,3,3,-1,$coloff,"OFF",MA_pitboardoff); openPrivButton( "pitboardclose",63,0,3,3,3,-1,16,"[X]",MA_pitboardclose); EndSub Sub MA_pitboardleft() $PB2Left = "0" ; closePrivButton("pitboardleft&pitboardright&pitboardoff"); openPrivButton( "pitboardleft",48,0,5,3,3,-1,16,"Left",MA_pitboardleft); openPrivButton( "pitboardright",53,0,5,3,3,-1,0,"Rigth",MA_pitboardrigth); openPrivButton( "pitboardoff",58,0,5,3,3,-1,0,"OFF",MA_pitboardoff); closePrivButton("pitboard_total&pitboard_txt&sec2_txt&sec3_txt&final_txt&sec1_txt&best_s1_txt&best_lap_txt&best_s2_txt&best_s3_txt&best_final_txt&best_lap_txt&last_lap_txt"); openPrivButton( "pitboard_total",$PBorigL + $PB2Left,$PBorigT,32,50,5,-1,32,""); openPrivButton( "pitboard_txt",$PBorigL + $PB2Left + 1,$PBorigT + 1,30,4,4,-1,32,"Pitboard" . "&" . $Nickname); $pitb = "1" ; EndSub Sub MA_pitboardrigth() $PB2Left = "166" ; closePrivButton("pitboardleft&pitboardright&pitboardoff"); openPrivButton( "pitboardleft",48,0,5,3,3,-1,0,"Left",MA_pitboardleft); openPrivButton( "pitboardright",53,0,5,3,3,-1,16,"Rigth",MA_pitboardrigth); openPrivButton( "pitboardoff",58,0,5,3,3,-1,0,"OFF",MA_pitboardoff); closePrivButton("pitboard_total&pitboard_txt&sec2_txt&sec3_txt&final_txt&sec1_txt&best_s1_txt&best_lap_txt&best_s2_txt&best_s3_txt&best_final_txt&best_lap_txt&last_lap_txt"); openPrivButton( "pitboard_total",$PBorigL + $PB2Left,$PBorigT,32,50,5,-1,32,""); openPrivButton( "pitboard_txt",$PBorigL + $PB2Left + 1,$PBorigT + 1,30,4,4,-1,32,"Pitboard" . "&" . $Nickname); $pitb = "1" ; EndSub Sub MA_pitboardoff() closePrivButton("pitboardleft&pitboardright&pitboardoff"); openPrivButton( "pitboardleft",48,0,5,3,3,-1,0,"Left",MA_pitboardleft); openPrivButton( "pitboardright",53,0,5,3,3,-1,0,"Rigth",MA_pitboardrigth); openPrivButton( "pitboardoff",58,0,5,3,3,-1,16,"OFF",MA_pitboardoff); closePrivButton("pitboard_total&pitboard_txt&sec2_txt&sec3_txt&final_txt&sec1_txt&best_s1_txt&best_lap_txt&best_s2_txt&best_s3_txt&best_final_txt&best_lap_txt&last_lap_txt"); $pitb = "2" ; EndSub Sub MA_pitboardclose() closePrivButton("pitboard&pitboardleft&pitboardright&pitboardoff&pitboardclose"); EndSub ######################################################################### # Shift + P # ######################################################################### # Actions to execute when player teleports to pits by options or 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 ######################################################################### # Flooding options # ######################################################################### # Actions to execute, when player writes too many lines within defined amount of time. #------------------------------------------------------------------- Event FloodAction() privMsg( $Nickname . "^3 kicked for flooding" ); cmdLFS( "/kick " . $Username ); EndEvent # Maximum number of consecutive lines allowed. $MaxFloodLines = 6; # Maximum time between two consecutive lines in milliseconds to count as flooding. $MaxFloodLinesTime = 5000; ######################################################################### # Race action # ######################################################################### # Action to do on race restarts. #----------------------------------------------------------------- Event RaceStartAction() cmdLFS( "/rcm ^3Please, Take care in T1!" ); cmdLFS( "/rcm_all" ); EndEvent ######################################################################### # Session action # ######################################################################### # Action to do on session #----------------------------------------------------------------- #$MaxSessionLaps = 2; /* Event OnMaxSessionLaps() privMsg( "Max session laps reacheds" ); EndEvent */ ######################################################################### # 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. /* 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 is max time (in 100 ms) allowed in stunt mode before MaxNbInStuntAction is executed. If -1 No MaxNbInStuntAction are activated. $MaxNbInStunt = 20; Event MaxNbInStuntAction() cmdLFS( "/spec " . $Nickname ); EndEvent ######################################################################### # To Slow user # ######################################################################### # MaxAllowedTime1 = % Max allowed time to complete a lap relative to MaxLapTime on trackInfo.cfg # MaxAllowedTime1 = 100 # 100% of MaxLapTime # MaxAllowedTime1 = 80 # 80% of MaxLapTime #------------------------------------------------------------------- #$MaxAllowedLapTime1 = 100; /* Event OnMaxAllowedLapTime1() privMsg( "you are too slow! Max : " . $MaxAllowedLapTime1 ); privMsg( "kick on " . $MaxAllowedLapTime2 ); EndEvent */ #$MaxAllowedLapTime2 = 150; /* Event OnMaxAllowedLapTime2() privMsg( "You are very slow, spectated!" ); cmdLFS( "/msg " . $Nickname . " is too slow, spectated!" ); cmdLFS( "/spec " . $Username ); EndEvent */ ######################################################################### # Idling options # ######################################################################### # Actions to execute, when speed of player is zero for defined amount of time. #------------------------------------------------------------------- #$IdleExclude = "Lagamel,Gai-Luron"; # Idle timeout for OnIdleAction1 in seconds. $OnIdleTimeout1 = 20; Event OnIdleAction1() privMsg( "^3You are idle and will be spectated in 10 seconds" ); EndEvent # Idle timeout for OnIdleAction2 in seconds. $OnIdleTimeout2 = 30; Event OnIdleAction2() cmdLFS( "/spec " . $Nickname ); privMsg( "^3You are spectated for non-activity" ); EndEvent ######################################################################### # 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.txt"; # 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 */ # Action to execute on good drift score. # Possible variables to use: $GoodDriftScore = 4000; /* Event GoodDriftAction() privMsg( $Nickname . " ^3made excellent drift: ^7" . $LastDriftScore ." ^3pts" ); EndEvent */ # Minimum drift score required. $MinimumDriftScore = 10; # Actions to do at end of lap if MinimumDriftScore is not achieved. /* Event DriftTooLowAction() privMsg( $Nickname . "^3 disqualified" ); cmdLFS( "/spec " . $Nickname }; EndEvent */ # Minimum speed in km/h to maintain. Driving below that speed will reset score. $MinimumDriftSpeed = 50; $MinimumDriftAngle = 15; $MaximumDriftAngle = 100; ######################################################################### # Hotlapping options # ######################################################################### #------------------------------------------------------------------- # This is the filepath of 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. $Database = "./PB.txt"; # Action to do on new personal best lap. # PBQualAction for the racer who make qualif ( in QualUser ) # PBAction the other racer /* Event PBAction() cmdLFS( "New PB by " . $Nickname . "^8 (" . $Car . "): " . $LapTime; EndEvent */ Event PBAction() cmdLFS("/msg New PB by " . $Nickname . "^8 (" . $Car . "): " . $LapTime ); cmdLFS("/msg Friendly rank : " . $Posabs ); cmdLFS("/msg Session laps done = " . $SessLaps ); cmdLFS("/msg Total laps done (server) = " . $Laps ); cmdLFS("/msg Average speed: " . $AvgSpeed . " " . $UnitSpeed ); cmdLFS("/rcm Friendly " . $Car . " rank: ^7" . $Posabs ); cmdLFS("/rcm_ply " . $Username ); EndEvent Event PBQualAction() cmdLFS("/msg League - New QT by " . $Nickname . "^8:" . $LapTime ); cmdLFS("/msg Friendly rank (all visitors): ^7" . $Posabs ); cmdLFS("/msg ^2Qualify pos.: " . $Posqual ); cmdLFS("/msg ^6Actual Pool: " . $Groupqual ); cmdLFS("/msg Average speed: " . $AvgSpeed . " " . $UnitSpeed ); cmdLFS("/rcm " . $Nickname . " ^2Pos:" . $Posqual . " - Pool:" . $Groupqual ); cmdLFS("/rcm_All"); EndEvent ######################################################################### # Acceleration options # ######################################################################### #------------------------------------------------------------------- # At which speed to start and stop measuring time. In km/h or Mph. $AccelerationStartSpeed = 1; $AccelerationEndSpeed = 100; $AccelerationStartSpeedMph = 1; $AccelerationEndSpeedMph = 60; # Maximum acceleration time in seconds to show 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 Event OnAcceleration() privMsg( "^8Excelerated in ^3" . $AccelerationTime . "^8 seconds to " . $AccelerationEndSpeed . " " . $UnitSpeed ."!" ); EndEvent ######################################################################### # Pitting # ######################################################################### #------------------------------------------------------------------- # Action to do on pitting ( begin and end ). # Message on begin of pit stop : Message on end of pit stop # Local variable tou can use # $Work - Work on pit ( only for OnBeginPit ) #------------------------------------------------------------------- Event OnBeginPit() cmdLFS( "/msg " . $Nickname . "^8 makes a pit stop" ); privMsg( "Pit begin! Work:" . $Work ); EndEvent Event OnEndPit() cmdLFS( "/msg " . $Nickname . "^8 left pits in " . $PitTime ); privMsg( "Pit stop finished in " . $PitTime ." - Total Pit: " . $TotalPitTime ); EndEvent ######################################################################### # Penalties # ######################################################################### # Actions to execute when player gets a penaltie. # Possible variables to use: # OnFastDriveOnPitL1 = Actions on 30 Sec Penalty or drive-through # OnFastDriveOnPitL2 = Actions on 45 Sec Penalty or Stop&Go # MaxFastDriveOnPit = Max Fast Drive on Pit allowed per race # OnMaxFastDriveOnPit = Actions on Max Fast Drive on Pit allowed # OnFalseStartL1 = 30 Sec Penalty or drive-through # OnFalseStartL2 = 45 Sec Penalty or Stop&Go # Local Variable can be used # {RemainFDIP} = Remain count for fast drive in pit #------------------------------------------------------------------- Event OnFastDriveOnPitL1() cmdLFS( "/msg " . $Nickname . "^1 Warning for pit-lane speeding!" ); privMsg( "^1WARNING-KICK POSSIBLE" ); EndEvent Event OnFastDriveOnPitL2() cmdLFS( "/msg " . $Nickname . "^1 Spectated for driving too fast in pitlane" ); privMsg( "^1KICK IN " . $RemainFDIP . " TRY" ); cmdLFS( "/spec " . $Username ); EndEvent Event OnMaxFastDriveOnPit() cmdLFS( "/msg " . $Nickname . "^1 kicked for driving too fast in pitlane" ); cmdLFS( "/rcm ^1YOU ARE KICKED" ); cmdLFS( "/rcm_ply " . $Username ); cmdLFS( "/kick " . $Username ); EndEvent $MaxFastDriveOnPit = 2; Event OnFalseStartL1() EndEvent Event OnFalseStartL2() EndEvent ######################################################################### # Overriding options # #########################################################################