The online racing simulator
LFSLapper 6.0.1.4
thanks
Might want to include an MD5 hash of the file in your post just in case you need to do a repost later on.
How do i set the number of laps?

always seems to be set to a default value of 5, but i cannot see exactly where to change this??

Also, my tracks dont seem to rotate, The cars DO rotate, but not the tracks They are AU1 Layouts. Code as follows..

$VoteLifeSec = 30;

$AutoRestartRaceSec = 90;
$AutoRestartOnFirstFinished = true;

$EnableRotation = true;
$RotateTracks = "AU1_Woodford,AU1_yokesville,AU1_Humpton,AU1_Bakerstown";
$RotateEveryNbRaces = 1;
$RotateCars = "XFG,XRG,XRT,FXO,LX4,LX6,XRR";

I just rented a host from rackserver and I changed to my Lapper exe 6.0.1.4 I changed all my files what I had but I got the problem that some CIF features not works.

Quote :Problem solved in tyme !!!

What I have to do to have again those features ? Big grin
The pitboard error, you won't get rid of - it refers to the width of the button (32) on that particular line. No reason why lapper doesn't like that part of the code, as it's almost exactly same as the code 2 lines up. And it appears in lots of other places too.

The line in question is for an ELSE statement, so might never get used, and so you could just put a hash at the beginning of that line to disable it, as likely no-one changes the pitboard anyway.

The others - I think these are because you are missing one of the standard add-ins (utils.lpr) that tell lapper what to do with the function closeButtonRegex.

Make sure utils.lpr is in your /includes directory, and if there, make sure it has not been disabled in the addonused.lpr file.

Failing that, you'll have to show what the error lines refer to - just copy and paste one of each.

Driftmenu - I have some hazy recollection of making that on request - for you? - something to do with on screen button to show drift score table and/or arrows scrolling drift scores back and forward?
Thank you
Quote from sinanju :The pitboard error, you won't get rid of - it refers to the width of the button (32) on that particular line. No reason why lapper doesn't like that part of the code, as it's almost exactly same as the code 2 lines up. And it appears in lots of other places too.

The line in question is for an ELSE statement, so might never get used, and so you could just put a hash at the beginning of that line to disable it, as likely no-one changes the pitboard anyway.

The others - I think these are because you are missing one of the standard add-ins (utils.lpr) that tell lapper what to do with the function closeButtonRegex.

Make sure utils.lpr is in your /includes directory, and if there, make sure it has not been disabled in the addonused.lpr file.

Failing that, you'll have to show what the error lines refer to - just copy and paste one of each.

Driftmenu - I have some hazy recollection of making that on request - for you? - something to do with on screen button to show drift score table and/or arrows scrolling drift scores back and forward?

My problem solved in time.... The problem was that it was missing 2 files from the server ...

Now everything works great again.

The driftmenu was made by you sinanju and still using . Thanks again for it !
Only one more thing guys, I would like to ask something interesting what I dont understand. Why the lapper registers the driftscore only from the 2nd lap in "practice" ? If I start to drift on my track I do my 1st lap and nothing shows, only from the 2nd lap shows my score and register in the lapper database ... It's possible to change something to correct this problem ?
If you check, you'll find that on first lap, LFS doesn't record your time for that lap either, and it's only when you cross a time checkpoint, then the finish line that LFS starts recording 2nd (and subsequent laps) as 'proper' lap(s).

So Lapper does what LFS tells it - Lapper will only record complete lap time (and drift score) when it's a proper completed lap - as defined by LFS.

Nothing much you can do about it, except maybe don't use Practise mode, or set huge amount of laps or time, or, what I've done in past, show a message when driver pops up on track.

Something like;
==========================
Please be aware that drift scores
will NOT be recorded on 1st lap.
==========================
Thanks a million for your answer , now I understand.
hello,

I have a question about the next peace of code(Idlesystem):

#Example:
SetConfigVar("OnIdleTimeout1", 1);
SetConfigVar("OnIdleTimeout2", 6);

Event OnIdle1( $userName ) # Player event
#blahblah
EndEvent

Event OnIdle2( $userName ) # Player event
#blahblah
EndEvent

Its works fine until i start a race (Shift+R or with insim command).
Also if i check and re-set the parameter with a command the idle system still doesnt work.
CASE "!test":
SetConfigVar("OnIdleTimeout1", 2);
SetConfigVar("OnIdleTimeout2", 60);
privMsg( "(DEBUG) OnIdleTimeout1: " . GetConfigVar ("OnIdleTimeout1"));
privMsg( "(DEBUG) OnIdleTimeout2: " . GetConfigVar("OnIdleTimeout2"));
BREAK;
The code below does work.
Since !test is already used for something else, that might have caused your problem or the use of quotes, which isn't needed when using SetConfigVar.

CASE "!idle":
SetConfigVar( OnIdleTimeout1, 10);
SetConfigVar( OnIdleTimeout2, 20);
privMsg( "(DEBUG) OnIdleTimeout1: " . GetConfigVar ("OnIdleTimeout1"));
privMsg( "(DEBUG) OnIdleTimeout2: " . GetConfigVar("OnIdleTimeout2"));
BREAK;

Sinanju , one qustion to you . I've been on your server, and it's great configured. Very nice features added, seems u made a lot of work on it. I would be interested only in one thing, how u made the turnable the driftmeter on and off ? I have the standard driftmeter and I would like to make turnable off but automaticly turn ON on drift. Sorry , that's not really correct. It's possible to do like this :

-player connects to server the drift-meter turns ON on drift
-players turns OFF and stays OFF until not turned on again.
-player joins again the server the drift-meter turns on automatically.

If that code is priv. or u don't want to share for public please send me in PM. Thanks
It's no big deal.

One way, which I've done, would be to set up a GlobalVar such as $driftmeter_on_off

Event OnLapperStart()
GlobalVar $driftmeter_on_off; # For turning driftmeter on and off
$driftmeter_on_off = "on"; # driftmeter option turned on, unless driver wants to switch off
EndEvent

So the driftmeter will show, unless offered the choice for it not to.

CASE "!drift":
OnClickDriftQuery(0,0);
BREAK;

So driver types !drift and

Sub OnClickDriftQuery( $KeyFlags,$id )
openPrivButton( "dq_instruct",65,66,70,9,9,-1,32,"^6Do you wish to use the Drift Meter?" );
openPrivButton( "dq_instruct1",65,75,70,6,6,-1,32,"^8(Drifting Scoreboard Facility)" );
openPrivButton( "dq_driftyes",80,85,18,10,10,-1,32," Yes ",OnClickYesDrift );
openPrivButton( "dq_driftno",102,85,18,10,10,-1,32," No ",OnClickCloseDM );
EndSub

If they want NO, then

Sub OnClickCloseDM( $KeyFlags,$id )
SetCurrentPlayerVar( "drift_on_off","off" ); # Set drift "off"
closeButtonRegex (GetCurrentPlayerVar("UserName"), "dq_*"); # close drift query buttons
closeButtonRegex (GetCurrentPlayerVar("UserName"), "drift_*"); # closedriftboard
EndSub

This closes the query buttons and sets your global variable to off.

If they want YES, then

Sub OnClickYesDrift( $KeyFlags,$id )
SetCurrentPlayerVar( "drift_on_off","on" ); # Set drift "on"
closeButtonRegex (GetCurrentPlayerVar("UserName"), "dq_*"); # close drift query buttons
EndSub

The global variable is set to on, because the driver may have previously set to off previously while still on track.

So if Yes, when a driftscore is made (and even a BF1 in a race will make drifts if driver slides car), you first query if the drift scoreboard is on.

Event OnDriftScore( $userName ) # This is the section for displaying the Drift Meter
IF ( GetCurrentPlayerVar( "drift_on_off") == "on" )
THEN
> blah, deblah, deblah
ENDIF
EndEvent

Because you set global variable at very start to be on, and you query when a drift is done, and IF statement is true, then all drift scores will show. If player turned it off, then the IF statement will not be true, so nothing happens (shows).

You do this IF true query for every EVENT Ondrift, such as

Event OnGoodDrift( $userName ) # Player event
IF ( GetCurrentPlayerVar( "drift_on_off") == "on" )
THEN
> blah
ENDIF
EndEvent

or

Event OnDriftTooLow( $userName ) # Player event
IF ( GetCurrentPlayerVar( "drift_on_off") == "on" )
THEN
> blah
ENDIF
EndEvent

etc, etc.

Then all you have to do, is go through all the events where driver leaves track, such as pitting, spectating, leaving, etc, and turn buttons off (but not touch your global variable), and when they rejoin, turn buttons back on.

If driver leaves server, and returns, the global variable is set to on when they join, so they have to go through the process of turning off again.

I've done a big explanation here, as this global variable (with IF query) is a good way of doing stuff where you want things to show/not show. I've used this for my new Pace Notes add-on.

If driver goes through a Zone, which i've set up in RegisterZoneAction, then each zone sub has the IF on query. If not switched on, then driver doesn't see anything. Its as if the RegisterZoneAction is not there. But if it is on, then driver sees a Pace Note.

The global variable i've shown is great for easy things like the driftmeter (as detailed) and Pace Notes, and such. Where it gets difficult, is when you want to save the on/off settings, then you have to start dealing with set/get variables and values - have a look at Yisc's pitboard.lpr if you want to see how it's done properly.
Quote from Yisc[NL] :The code below does work.
Since !test is already used for something else, that might have caused your problem or the use of quotes, which isn't needed when using SetConfigVar.

CASE "!idle":
SetConfigVar( OnIdleTimeout1, 10);
SetConfigVar( OnIdleTimeout2, 20);
privMsg( "(DEBUG) OnIdleTimeout1: " . GetConfigVar ("OnIdleTimeout1"));
privMsg( "(DEBUG) OnIdleTimeout2: " . GetConfigVar("OnIdleTimeout2"));
BREAK;


uhm oke. Maybe i wasnt clear enough. The !test command works fine , i get the debug messages. but for some strange reason the idle system still doesnt work. Could it be that the idle system will be disabled after restarting a race?
I think it kicks in as soon as the first car passes the first split.
While testing the code last night, nothing happened, until I finaly drove over the first split of Blackwood.
Oke thx.
Will test it this evening. Because i need the idlingsystem for my derstuction derby system. because watching every driver is a really No-Go.

Edit: Did a quick test and indeed, you have to across the 1st split to make the idlesystem active after (re)starting a race.
Good evening everyone,

I'm currently busy with a countdown in that the amount of seconds converts in Minutes and Seconds. I dont if there's a system for it in lapper. But this is what i made so far. ( quite alot of code for a simple counter)


Event OnLapperStart()

GlobalVar $Minutes;
GlobalVar $Seconds;
Globalvar $Time;
Globalvar $RestSeconds;

$Minutes = 0;
$Seconds = 0;
$RestSeconds = 1;
$Time = 0;
EndEvent




Event OnMSO( $userName, $text ) # Player event

$idxOfFirtsSpace = indexOf( $text, " ");

# $LOF = getListOfPlayers();
# dumpVar( $LOF );



IF( $idxOfFirtsSpace == -1 ) THEN
$command = $text;
$argv = "";
ELSE
$command = subStr( $text,0,$idxOfFirtsSpace );
$argv = trim( subStr( $text,$idxOfFirtsSpace ) );
ENDIF


SWITCH( $command )


CASE "!time":
IF($argv != "")THEN
TimeMinSec($argv);
ELSE
privMsg( "(DEBUG) No time given");
ENDIF
BREAK;

ENDSWITCH
EndEvent

Sub TimeMinSec($argv)
cmdLFS("/msg (DEBUG) TIMER COUNTING TEST (LFSLapper)");
cmdLFS("/msg (DEBUG) Time given: " .$argv." Seconds");

$Minutes = round(($argv/60),0);
$Time = (round(($argv/60),2)-$Minutes);
$Seconds = round(($Time*60),0);

IF($Seconds < 0)THEN # When $Time/$Seconds are negative
$Minutes = $Minutes-1;
$Seconds = 60 + $Seconds;
ENDIF

cmdLFS("/msg (DEBUG) Time in (Min)(Sec) = " .$Minutes."min :" .$Seconds."sec");
$Minutes = $Minutes+1;
Resettime();

EndSub

Sub Resettime()
$Minutes = $Minutes-1;
IF($Minutes >= 0)THEN
IF(($Seconds <= 59)&&($RestSeconds == 1))THEN
$RestSeconds = 0;
openGlobalButton( "idletimer",80,0,40,6,1,$Seconds,32,"^7".$Minutes."^7 Minutes : %cpt% Seconds");
DelayedCommand( $Seconds, Resettime );
ELSE
openGlobalButton( "idletimer",80,0,40,6,1,60,32,"^7".$Minutes."^7 Minutes : %cpt% Seconds");
DelayedCommand( 60, Resettime );
ENDIF
ELSE
openGlobalButton( "idletimer",80,0,40,6,1,5,32,"^3Countdown Finished");
ENDIF
EndSub
Hi, I made the follow piece of code a long time (2009) ago, so I guess that was for the then current version of Lapper.
But it might still work (sorry, not in the mood to go and try it) or you might be able to get it to work:

Event OnLapperStart()
GlobalVar $countdown_hours;
GlobalVar $countdown_minutes;
$countdown_hours=24;
$countdown_minutes=0;
RegisterScheduleAction( "0 * * * * * *", Count_down );
EndEvent

Sub Count_down()
$countdown_minutes=$countdown_minutes-1;
IF ($countdown_minutes == -1)
THEN
$countdown_hours=$countdown_hours-1;
$countdown_minutes=59;
ENDIF

IF ($countdown_hours < 10)
THEN
$countdown_hours_display="0".$countdown_hours;
ELSE
$countdown_hours_display=$countdown_hours;
ENDIF

IF ($countdown_minutes < 10)
THEN
$countdown_minutes_display="0".$countdown_minutes;
ELSE
$countdown_minutes_display=$countdown_minutes;
ENDIF

cmdlfs ("/msg ^7Timer: " . $countdown_hours_display . ":" . $countdown_minutes_display);
EndSub

Quote from sinanju :It's no big deal.

One way, which I've done, would be to set up a GlobalVar such as $driftmeter_on_off

Event OnLapperStart()
GlobalVar $driftmeter_on_off; # For turning driftmeter on and off
$driftmeter_on_off = "on"; # driftmeter option turned on, unless driver wants to switch off
EndEvent

So the driftmeter will show, unless offered the choice for it not to.

CASE "!drift":
OnClickDriftQuery(0,0);
BREAK;

So driver types !drift and

Sub OnClickDriftQuery( $KeyFlags,$id )
openPrivButton( "dq_instruct",65,66,70,9,9,-1,32,"^6Do you wish to use the Drift Meter?" );
openPrivButton( "dq_instruct1",65,75,70,6,6,-1,32,"^8(Drifting Scoreboard Facility)" );
openPrivButton( "dq_driftyes",80,85,18,10,10,-1,32," Yes ",OnClickYesDrift );
openPrivButton( "dq_driftno",102,85,18,10,10,-1,32," No ",OnClickCloseDM );
EndSub

If they want NO, then

Sub OnClickCloseDM( $KeyFlags,$id )
SetCurrentPlayerVar( "drift_on_off","off" ); # Set drift "off"
closeButtonRegex (GetCurrentPlayerVar("UserName"), "dq_*"); # close drift query buttons
closeButtonRegex (GetCurrentPlayerVar("UserName"), "drift_*"); # closedriftboard
EndSub

This closes the query buttons and sets your global variable to off.

If they want YES, then

Sub OnClickYesDrift( $KeyFlags,$id )
SetCurrentPlayerVar( "drift_on_off","on" ); # Set drift "on"
closeButtonRegex (GetCurrentPlayerVar("UserName"), "dq_*"); # close drift query buttons
EndSub

The global variable is set to on, because the driver may have previously set to off previously while still on track.

So if Yes, when a driftscore is made (and even a BF1 in a race will make drifts if driver slides car), you first query if the drift scoreboard is on.

Event OnDriftScore( $userName ) # This is the section for displaying the Drift Meter
IF ( GetCurrentPlayerVar( "drift_on_off") == "on" )
THEN
> blah, deblah, deblah
ENDIF
EndEvent

Because you set global variable at very start to be on, and you query when a drift is done, and IF statement is true, then all drift scores will show. If player turned it off, then the IF statement will not be true, so nothing happens (shows).

You do this IF true query for every EVENT Ondrift, such as

Event OnGoodDrift( $userName ) # Player event
IF ( GetCurrentPlayerVar( "drift_on_off") == "on" )
THEN
> blah
ENDIF
EndEvent

or

Event OnDriftTooLow( $userName ) # Player event
IF ( GetCurrentPlayerVar( "drift_on_off") == "on" )
THEN
> blah
ENDIF
EndEvent

etc, etc.

Then all you have to do, is go through all the events where driver leaves track, such as pitting, spectating, leaving, etc, and turn buttons off (but not touch your global variable), and when they rejoin, turn buttons back on.

If driver leaves server, and returns, the global variable is set to on when they join, so they have to go through the process of turning off again.

I've done a big explanation here, as this global variable (with IF query) is a good way of doing stuff where you want things to show/not show. I've used this for my new Pace Notes add-on.

If driver goes through a Zone, which i've set up in RegisterZoneAction, then each zone sub has the IF on query. If not switched on, then driver doesn't see anything. Its as if the RegisterZoneAction is not there. But if it is on, then driver sees a Pace Note.

The global variable i've shown is great for easy things like the driftmeter (as detailed) and Pace Notes, and such. Where it gets difficult, is when you want to save the on/off settings, then you have to start dealing with set/get variables and values - have a look at Yisc's pitboard.lpr if you want to see how it's done properly.

Thanks a million sinanju, it was very good explained . . . I think I'll make a small button under my logo panel as a "swtich" with (ON/OFF) so the player can decide any time to turn on or off the driftmeter. It's a bit complicated for me to do but I'll try to do that . Makes some headache to me when a button is clicked and goes under a SUB THEN that button needs to turn into grey and the other one into red.

If I get stucked I'll ask for help again. Thanks again sinanju ! Your work is flawles together with all the other people who develops the lapper in the same time like "Yisc[NL], or bass-driver. Keep that good work onwards.
The big disadvantage about clickable buttons for Mousedrivers is that you see the cursor all the time. I prefer to use commands like:(Simple example)

Event OnMSO( $userName, $text ) # Player event

$idxOfFirtsSpace = indexOf( $text, " ");

# $LOF = getListOfPlayers();
# dumpVar( $LOF );



IF( $idxOfFirtsSpace == -1 ) THEN
$command = $text;
$argv = "";
ELSE
$command = subStr( $text,0,$idxOfFirtsSpace );
$argv = trim( subStr( $text,$idxOfFirtsSpace ) );
ENDIF

SWITCH( $command )

CASE "!don":
SetCurrentPlayerVar( "Driftmeter","ON" );
BREAK;
CASE "!doff":
SetCurrentPlayerVar( "Driftmeter","OFF" );
closePrivButton("DriftScore"); #Close button that shows your driftscore
BREAK;

EndSwitch
EndEvent

Event OnDriftScore($userName) # Player event
IF(GetCurrentPlayerVar( "Driftmeter" ) == "ON"))THEN
openPrivButton( "DriftScore",2,160,12,6,4,-1,16,"^7" . GetCurrentPlayerVar("DriftScore") );
ENDIF
EndEvent

####################################
####################################
This has nothing todo with the code above.

For someone who want to calculate Seconds in Minutes and Seconds with countdown.
Heres a small basic code.

Event OnLapperStart()
Globalvar $Seconds;
Globalvar $Minutes;
$Seconds = 0;
$Minutes = 0;
EndEvent

CASE "!time":
IF($argv != "")THEN
CalcTime($argv);
ENDIF
BREAK;

Sub CalcTime($argv)
########Calculating Seconds in Minutes/Seconds########

$Minutes = round(($argv/60),0);
$Time = (round(($argv/60),2)-$Minutes);
$Seconds = round(($Time*60),0);

IF($Seconds < 0)THEN # When seconds are negative
$Minutes = $Minutes-1;
$Seconds = 60 + $Seconds;
ENDIF
CountDownTimer($Minutes,$Seconds);#Goto Countdown

EndSub

Sub CountDownTimer($Minutes,$Seconds)
IF($Minutes >= 0)THEN
openGlobalButton( "timer",80,0,40,6,1,$Seconds,32,"^7".$Minutes."^7 Minutes : %cpt% ^7Seconds",CountDownTimer);
$Seconds = 59;
$Minutes=$Minutes-1;
ELSE
cmdLFS("/msg Countdown Finished");
ENDIF
EndSub

hello,

Something my lapper is randomly :S. And i have no ideas what cause the crashes.
Checking my error message i only get the following error message below.

-------------------------------
-------------------------------
De objectverwijzing is niet op een exemplaar van een object ingesteld.
LFSLapper
bij LFSLapper.trackCarData.getLapAction(String track, String car, Int64 STime)
bij LFSLapper.LFSClient.managePacket(LAP lapDec)
bij LFSLapper.LFSClient.Loop(Connect insimConnection)
bij LFSLapper.LFSClient.doloop()
bij LapperInstances.LapperInstance.doConnection()
System.String getLapAction(System.String, System.String, Int64)
-------------------------------
-------------------------------

Does anyone know what this means.
It has something todo with cars i think.

Also tried a orginal LFSLapper.exe, but and that didnt work
'Warning packet not catched' Error Messages
Having problems with lots of error messages appearing in my <ip><port>MSG log files.

Most read
Quote :5/23/2015 5:18:01 PM -> Warning packet not catched (ACR)

but sometimes the occasional
Quote :5/23/2015 6:10:11 PM -> Warning packet not catched (57)

I assume that "catched" actually means 'cached' (as in stored)?

I have no idea what the "ACR" and "57" refer to.

Doing some experiments on my code, I >think< this may have something to do with the functions I'm using in some of my subs.

For instance, I might have sub like

Sub DoSomething($KeyFlags,$id )
blah
EndSub

and the 'ACR' may refer to the '$KeyFlags,$id' part.

Tried using
Sub DoSomething()
Sub DoSomething( $userName )
Sub DoSomething( $KeyFlags )

These all give the following error message (in my ERR file - not MSG file);
Syntax error in cfg file: Number of function argument not matche at line #nn in function 'DoSomething' script aborted

Also tried
Sub DoSomething( $KeyFlags,$id )
Sub DoSomething( $id, $argv )
Sub DoSomething( $KeyFlags,$userName )
Sub DoSomething( $KeyFlags,$argv )
Sub DoSomething( $KeyFlags,$status )

but these all gave the following error message (in MSG file);
Warning packet not catched (ACR)

I usually get minimum 2 of these messages, but normally 3.

So. Are the errors to do with the functions specified in the Sub header line? Or is it something else, and if so, what?

Is it because i'm using a sub with option to call multiple subs, which may have option to call other sub(s)?

Or am I using the wrong function(s) in previous subs to the one that actually causes the error message?

For instance, in the attached file, I start with a CASE command to get things going, which in turn lead to various subs to show a Yellow flag, as in (much simplified);

CASE "!rc":
DoRCM();
BREAK;

Sub DoRCM()
openPrivButton( "rcm_menumanager",35,71,24,5,5,-1,32, langEngine( "%{rcm_menumanager}%"),DoMenu);
EndSub

Sub DoMenu( $KeyFlags,$id)
openPrivButton( "rcm_track",35,62,24,5,6,-1,32, langEngine( "%{rcm_track}%"),DoRCtrack );
EndSub

Sub DoRCtrack($KeyFlags,$id )
openPrivButton( "rcm_track_yellowflag",36,60,21,5,5,-1,16, langEngine( "%{rcm_yellowflag}%"),DoRCyellowflag );
EndSub

Sub DoRCyellowflag($KeyFlags,$id )
globalRcm( langEngine( "%{rcm_yellowflagmessage}%" ));
EndSub

In this instance, the errors only happen when I click the button to show the Yellow flag message - this is the last sub in the chain..



My actual code is attached - much cut down to only show the Yellow flag message - once you've clicked the correct buttons, in sequence.

Anyone tell me where I'm going wrong?

Thanks.
Attached images
Lapper RCM Screens.jpg
Attached files
racecontrol.zip - 3.9 KB - 284 views
ey,

If you look in the insimfile you see a list with the packet numbers.

ISP_ACR, // 55 - info : admin command report
IS_ACR // Admin Command Report - any user typed an admin command

If possible when you are not the serveradmin but only insimadmin.
because sometimes i get : 5/23/2015 6:10:11 PM -> Warning packet not catched (55)
For example:its possible to use the /kick /ban etc commands as insimadmin. You don't need to be a Serveradmin for that.

ISP_NCI, // 57 - info : new connection - extra info for host
IS_NCI // New Conn Info - sent on host only if an admin password has been set

in some scripts of mine,i'm also Open Subs in a sub and so on. but do not get those error messages.
>>script attached

If you need some proper testing, let me know.
Because its sometimes handy to test with someone else.

Edit: For my previous message:
The bug is fixed (hopefully), need proper testing now
Lapper crashed when someone passed the start/finishline.
i changed something in the TrackInfo.CFG. Now i have disabled the whole file incl subs.
Attached files
[TI]ADP_TRACKS.zip - 2.5 KB - 301 views
OK, so ACR = Admin Command Report, and when an error message comes through, its not really an error message, but LFS's way of saying that an admin has typed in an admin command?

Few things.

I'm the admin on my server, but as I only rent the server, then really I'm only just the insim-admin? Even although I have privileges on the server to change things, like tracks, weather, cars, welcome message, etc.

In the cut-down sample racecontrol.lpr file, I've stripped out all the 'IF UserIsAdmin' code, so the only admin command that's left is the globalRcm request to display message.

So, to stop at least some of the messages, instead of using any RCM messages, I'm better just using buttons to simulate an RCM message.

Without doing more testing, is cmdLFS an admin command?

(As an aside, in your sample code, you have cmdLfs( "/end " ); Does this bit work, even though LFS isn't written in capitals?).

And glad you managed to find your own 'bug'.

Comment: Lapper seems to be going same way as Airio, and appears to be no longer supported. I think we were very fortunate that Krayy took over for a while, but further InSim changes may impact on existing code.
This thread is closed

Config help
(1112 posts, closed, started )
FGED GREDG RDFGDR GSFDG