The online racing simulator
Release: LFSLapper V7.0.7.0
Hello everyone,

It has been a while, but it's finally here. The official release of the new LFSLapper version.
Version 7.0.7.0.

This will be probably the last version of LFSLapper i'll release.
My apologies for the stuff that still isn't working or i didn't fix the last couple of releases.


Note: Event OnPlayerFlags has been changed. See the changelog

+---------------------------------------------------------------+
|Changes from 7.0.6.3 to 7.0.7.0 |
+---------------------------------------------------------------+
=================================================
New:
=================================================
1: New function: PlayerDelayedcommand(); #Start delayedcommand for a specific player

$UserName = "Bass-Driver";
$NameOfDelay = "CloseButton";
$DelayInSeconds = 3;
$SubCallBack = "ThisSub";

PlayerDelayedcommand($UserName,$NameOfDelay,$DelayInSeconds,$SubCallBack);

2: New function: RemovePlayerDelayedCommand(); #Remove delayedcommand for a specific player

$UserName = "Bass-Driver";
$NameOfDelay = "CloseButton";

RemovePlayerDelayedCommand($UserName,$NameOfDelay);

3: New function: RegisterPlayerDetection(); #Detect player within a fieldofview and distance.

#Example
#$userName = Set Player for the detector
$userName = "Bass-Driver"; #The Detector is now enabled for Bass-Driver

#$FieldOfView = Set range of the view to detect players. (degrees)
$FieldOfView = 30; #view will be 0 to 30 and 0 to -30

#$Distance = Max distance of detection (Meters)
$Distance = 25;

#$NameofSubDetected = Execute Subcallback when 1 or more players are detected.
$NameofSubDetected = "PlayerDetected";

RegisterPlayerDetection($userName,$FieldOfView,$Distance,$NameofSubDetected);

#==========================================
#Sub callback
#==========================================

#If there are multiple players in the field of view, $detectedPlayer outputs Player1+Player2+......
#This means you have to split the string into seperated players.

Sub PlayerDetected($userName,$DetectedPlayer)
OpenButton( $userName, "PlayerName",170,115,30,5,2,5,96, "^3Player: ^7".GetPlayerVar($DetectedPlayer,"NickName"));
OpenButton( $userName, "Speed",170,120,30,5,2,5,96, "^3Speed: ^7".GetPlayerVar($DetectedPlayer,"InstantSpeed")." km/h");
OpenButton( $userName, "Distance",170,125,30,5,2,5,96, "^3Heading: ^7".GetPlayerVar($DetectedPlayer,"Heading"));
EndSub

4: New Function: SetCarHandicap();
#This function applies handicap to all drivers using a particular car model
$Car = "XRT";
$H_Mass = 100; CarMass 0 - 200 in KG
$H_Tres = 10; Car AirIntake in %

SetCarHandicap($Car,$H_Mass,$H_Tres);

##################################################################################
#DISCORDBOT FEATURES
##################################################################################
5: New Event :

- This event will be executed when someone sends a discord message to LFSLapper.
- A Discordbot must be created to communicate between LFSLapper and Discord.
- In 'bin/default/includes/myInc.LPR' you can enter the 'DiscordToken' and the 'Discordchannel' to receive the messages from.
- Link to create a discordbot: https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token
- Set DeveloperMode in your discordsettings to "ON' to copy the channel ID ( rightclick on the channel)

Event OnReceiveDiscordMessage($DiscordUname,$Text) # Player event
#Your code
EndEvent

#This function sends messages to your selected discordchannel.
#The discordbot must be connected while using this function

6: New Function: sendmessagetodiscord();
$DiscordChannel = "000000000000000000";
$Message = "Hello";
sendmessagetodiscord($DiscordChannel,$Message);

7: New setconfigvar() value: "DiscordBotStatus"
setconfigvar("DiscordBotStatus",$argv); #change the status of the discordbot
##################################################################################

8: New Playervar: 'CurrLap' GetPlayerVar($userName,"CurrLap");
retreive players current lap.


=================================================
Changed:
=================================================
1:Hostname now visible when lapper succesfully connected to a server.
2:New errormessages to MSS file before Lapper starting (faulty adminpass)
3:Realtime driftscore refreshrate is set to 5 times a second instead of 10.
4:NumtoMSH(); returns values in HH:mm.ss format, was HH.mm.ss before.
5:Event oncrossingchecker: returns now which insim checkpoint you crossed.
Checkpoint >>
1st checkpoint
2nd checkpoint
3rd checkpoint
Finish line

6:Event oncrossingchecker: returns time in H:mm:ss format.
7:GetWr(); allows 1 parameter "CAR". Example below
CASE "!getwr":
IF($argv != "")THEN
$GetWRInfo = GetWR($argv);
ELSE
$GetWRInfo = GetWR();
ENDIF
privmsg("^7============================");
privmsg("^3WR Info:");
privmsg("^7============================");
privmsg("^7Car: ^8".$GetWRInfo["CName"]);
privmsg("^7Track: ^8".$GetWRInfo["Track"]);
privmsg("^7Racer: ^8". $GetWRInfo["racerName"]);
privmsg("^7Time: ^8".NumToMSH($GetWRInfo["WRTime"]));
privmsg("^7Sp1: ^8".NumToMSH($GetWRInfo["Split1"]));
privmsg("^7Sp2: ^8".NumToMSH($GetWRInfo["Split2"]));
privmsg("^7Sp3: ^8".NumToMSH($GetWRInfo["Split3"]));
privmsg("^7Last: ^8".NumToMSH($GetWRInfo["SectorLast"]));
BREAK;
8:GetWR(); Added 2 new values: Date & Time. Date/Time of WR
$GetWRInfo["Date"]);
$GetWRInfo["Time"]);

9: Reduced IS_BTN Packetsize with 16 Bytes
10: Reduced IS_MTC Packetsize with 8 Bytes
11: Event: OnPlayerFlags

Changed Variables: Event OnPlayerFlags($userName,$YellowFlag,$BlueFlag,$Value,$Time) # Player event
-Removed Lag Variable : it spammed the event alot in certain cases.

#Explaination of '$Value'
When $YellowFlag = 1
$Value : 1 == $userName is causing a Yellowflag
$Value : 0 == Clear

When $BlueFlag = 1
$Value : username == Faster Driver (username) is behind $userName
$Value : 0 == Faster Driver (username) overtook $userName

=================================================
Fix:
=================================================
1: WriteLine() :Lapper crash when try to convert special LFS characters
2: Write() :Lapper crash when try to convert special LFS characters
3: LFSLapper.LPR : one of the debugoption turned on
4: LFSLapper.LPR : debugmessages
5: No returning value when accidently applying NumtoMSH(); twice
6: Changed hardcoded visible records in Toplist/UserTop/Drifttop from 24 to 10000
7: Linux/mono users couldnt start Lapper on their computer
8: GetWR(); Couldnt get RO11 WRtime
9: Lappercrash when running 2 lapper instances with the same remoteport.
10: Lappercrash on Joinrequest() when Playerheight is lower than 0.
11: Returning Webrequests didnt execute.

Attached files
LFSLapper V7.0.7.0.zip - 10.2 MB - 231 views
Thanks for all your efforts and if this is your last one, I hope that someone wants to step up and keep this program being developed.
Hi,
Regarding "RegisterPlayerDetection", when it detects only one person it works well. When it detects more than one person, nothing appears.
Remembering that I am not a programmer, just an enthusiast.
https://imgur.com/f53P3MT
Thanks for the report, will look into it.
I'm also not a programmer. Just doing this for fun. Google is your friend Razz

Edit: Could you create a message within the sub
PlayerDetection()

privmsg($DetectedPlayer);

I think with multiple players within the field of view it should look like this
player1+player2

i haven't tested this in a while (since Sun 3 Mar 2019), and i didn't get any feedback from it, so before changing any code i want to know what happends.
It works doing <nick1>+<nick2>.
I already know what to do SmileSmile
Sorry for the reply and thanks for the help!
Thanks for testing.
its a mistake on my end.
I haven't explained it in the changelog.
This thread is closed

FGED GREDG RDFGDR GSFDG