summaryrefslogtreecommitdiff
path: root/scripts/gugus
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/gugus')
-rw-r--r--scripts/gugus/enterExit.lua36
-rw-r--r--scripts/gugus/gear.lua32
-rw-r--r--scripts/gugus/sliproDigits.lua868
-rw-r--r--scripts/gugus/speedlimiter.lua1001
4 files changed, 1937 insertions, 0 deletions
diff --git a/scripts/gugus/enterExit.lua b/scripts/gugus/enterExit.lua
new file mode 100644
index 0000000..0b11ba3
--- /dev/null
+++ b/scripts/gugus/enterExit.lua
@@ -0,0 +1,36 @@
+
+function custom_enterSessionEvent(devType)
+ -- type your custom script on session start, here
+ print ()
+ print ( "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv")
+ print (string.format("simu : %s",GetContextInfo("simulation")))
+ print (string.format("car : %s",GetContextInfo("carname")))
+ print (string.format("track : %s",GetContextInfo("trackname")))
+ --print (string.format("session: %s",GetContextInfo("session")))
+ print ()
+ if GetContextInfo("ospcustom") then print ("has ospcustom") end
+
+ print (string.format("shiftlightsmethod: %s",GetContextInfo("shiftlightsmethod")))
+ print (string.format("ospmethod : %s",GetContextInfo("ospmethod")))
+ print (string.format("speedlimitemethod: %s",GetContextInfo("speedlimitermethod")))
+ return 2
+end
+
+function global_custom_exitSessionEvent(devType)
+ -- type your custom script on session ending, here
+ if GetContextInfo("ospcustom") then print ("has ospcustom") end
+ print ()
+ print (string.format("shiftlightsmethod: %s",GetContextInfo("shiftlightsmethod")))
+ print (string.format("ospmethod : %s",GetContextInfo("ospmethod")))
+ print (string.format("speedlimitemethod: %s",GetContextInfo("speedlimitermethod")))
+ print ( "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")
+ print ()
+
+ --my_setups=io.open("gus_cars.cfg", "a")
+ --my_setups:write(GetContextInfo("carname"), " shiftligts ", GetContextInfo("shiftlightsmethod"), "\n")
+ --my_setups:write(GetContextInfo("carname"), " speedlimiter ", GetContextInfo("speedlimitermethod"), "\n")
+ --my_setups:close()
+
+ return 2
+end
+
diff --git a/scripts/gugus/gear.lua b/scripts/gugus/gear.lua
new file mode 100644
index 0000000..463449a
--- /dev/null
+++ b/scripts/gugus/gear.lua
@@ -0,0 +1,32 @@
+function custom_gearEvent(gear)
+ -- manage gear when ´E´
+ if gear == 69 then
+ local ignition = 1
+ if GetContextInfo("simulation") == "rFactor2.exe" then
+ ignition = GetCarInfo("ignition")
+ end
+ local g = GetCarInfo("gear")
+
+ --print ( string.format("gear %d/ignition %d" , g, ignition))
+
+ toggleAllLed(0)
+ if ignition == 2 then
+ SetLeftDigits(" ---- ")
+ SetRightDigits(" ---- ")
+ else
+ SetLeftDigits(" ")
+ SetRightDigits(" ")
+ end
+
+ if ignition == 0 then
+ SetGearDigit(" ")
+ elseif ignition == 1 then
+ SetGearDigit(GetCurrentGear())
+ end
+
+ SLISendReport(1)
+ return 1
+ end
+
+ return 2
+end
diff --git a/scripts/gugus/sliproDigits.lua b/scripts/gugus/sliproDigits.lua
new file mode 100644
index 0000000..0ffbfb2
--- /dev/null
+++ b/scripts/gugus/sliproDigits.lua
@@ -0,0 +1,868 @@
+-- ============================================================
+-- Left and Right Panel functions
+-- ============================================================
+
+-- IN function of left panel
+-- param: recieve from SLI Manager the current switch position
+function custom_leftDigitsEvent(swFunction)
+ swValue = swFunction + 1
+
+ local lPanel = ""
+ local inf = ""
+ local unit = false
+ local spd = 0.0
+ -- get speed in kph or mph (use "rawspeed" to get value in meter/sec)
+ local spd = GetCarInfo("speed")
+ -- get current display unit metric or imperial
+ unit = GetContextInfo("speedmetric")
+ -- check if quick info button is down
+ local qi = false
+ qi = GetContextInfo("quickinfobutton")
+ if qi == nil or qi == 0 then qi = false end
+ if qi then
+ -- get index for left panel
+ local qiLeft = GetContextInfo("quickinfoleft")
+ if qiLeft == nil then qiLeft = 1 end
+ -- force position to match QI preference
+ swValue = qiLeft
+ end
+
+ -- check if PIT Feedback ON
+ local pf = false
+ pf = GetContextInfo("pitfeedback")
+ if pf == nil or pf == 0 then pf = false end
+ if pf then
+ -- force position to PIT/SPEED function if car pits
+ local pit = GetCarInfo("inpits")
+ if pit > 0 then
+ swValue = 35
+ end
+ end
+
+ -- get current simulation name
+ local sim = GetContextInfo("simulation")
+
+ --print ( "swValue: " .. swValue .. "\n")
+
+ -- check postion and compute left panel string
+ if swValue == 1 then
+ -- speed only
+ lPanel = string.format(" %3.0f", spd )
+
+ elseif swValue == 2 then
+ -- fuel:speed
+ local fuel = GetCarInfo("fuel")
+ if fuel ~= nil then
+ fuel = GetFuel(fuel, unit)
+ if fuel >= 100 then
+ -- special case for Euro Truck :)
+ lPanel = string.format("%03d:%3.0f", round(fuel)%1000, spd)
+ elseif fuel >= 10 then
+ lPanel = string.format("F%02d:%3.0f", round(fuel), spd)
+ elseif fuel >= 1 then
+ lPanel = string.format("F%1.1f:%3.0f", fuel, spd)
+ else
+ lPanel = string.format("F.%2d:%3.0f", fuel * 100, spd)
+ end
+ end
+ elseif swValue == 3 then
+ -- position:speed
+ inf = GetContextInfo("position")
+ if inf ~= nil then
+ if inf >= 100 then
+ lPanel = string.format("%03d:%3.0f", inf, spd)
+ else
+ lPanel = string.format("P%02d:%3.0f", inf, spd)
+ end
+ end
+ elseif swValue == 4 then
+ -- laps completed:speed
+ inf = GetContextInfo("laps")
+ if inf ~= nil then
+ -- if more than 99 laps
+ if inf >= 100 then
+ lPanel = string.format("%03d:%3.0f", inf, spd)
+ else
+ lPanel = string.format("L%02d:%3.0f", inf, spd)
+ end
+ end
+ elseif swValue == 5 then
+ -- sector:speed
+ inf = GetCarInfo("sector")
+ if inf ~= nil then
+ -- check if sector > 9
+ if inf >9 then
+ lPanel = string.format("S%02d:%3.0f", inf, spd)
+ else
+ lPanel = string.format("S%01d :%3.0f", inf, spd)
+ end
+ end
+ elseif swValue == 6 then
+ -- laps completed:total laps if available
+ inf = GetContextInfo("laps")
+ if inf ~= nil then
+ local tl = GetContextInfo("lapscount")
+ if tl < 1 then tl = 0 end
+ -- if more than 99 laps
+ if inf >= 100 or tl >= 100 then
+ lPanel = string.format("%03d:%03d", inf, tl)
+ else
+ lPanel = string.format("L%02d:t%02d", inf, tl)
+ end
+ end
+ elseif swValue == 7 then
+ -- water temp
+ inf = GetCarInfo("watertemp")
+ if inf ~= nil then
+ inf = GetTemp(inf, unit)
+ lPanel = string.format("H2o:%2.1f", inf)
+ end
+ elseif swValue == 8 then
+ -- oil temp
+ inf = GetCarInfo("oiltemp")
+ if inf ~= nil then
+ inf = GetTemp(inf, unit)
+ lPanel = string.format("OIL:%2.1f", inf)
+ end
+
+ elseif swValue == 9 then
+ -- wheels temp if available
+ inf = GetCarInfo("wheeltempfrontleft")
+ if inf ~= nil then
+ -- if rFactor convert Kelvin to Celsius (see global.lua)
+ if isAppRFactor(sim) then inf = KtoC(inf) end
+ lPanel = string.format("tFL:%3.0f", inf)
+ end
+ elseif swValue == 10 then
+ inf = GetCarInfo("wheeltempfrontright")
+ if inf ~= nil then
+ if isAppRFactor(sim) then inf = KtoC(inf) end
+ lPanel = string.format("tFr:%3.0f", inf)
+ end
+ elseif swValue == 11 then
+ inf = GetCarInfo("wheeltemprearleft")
+ if inf ~= nil then
+ if isAppRFactor(sim) then inf = KtoC(inf) end
+ lPanel = string.format("trL:%3.0f", inf)
+ end
+ elseif swValue == 12 then
+ inf = GetCarInfo("wheeltemprearright")
+ if inf ~= nil then
+ if isAppRFactor(sim) then inf = KtoC(inf) end
+ lPanel = string.format("trr:%3.0f", inf)
+ end
+
+ elseif swValue == 13 then
+ -- wheels pressure if available
+ inf = GetCarInfo("wheelpressfrontleft")
+ if inf ~= nil then
+ -- convert to psi
+ lPanel = string.format("PFL:%2.1f", inf / 6.88)
+ end
+ elseif swValue == 14 then
+ inf = GetCarInfo("wheelpressfrontright")
+ if inf ~= nil then
+ lPanel = string.format("PFr:%2.1f", inf / 6.88)
+ end
+ elseif swValue == 15 then
+ inf = getcarinfo("wheelpressrearleft")
+ if inf ~= nil then
+ lpanel = string.format("prl:%2.1f", inf / 6.88)
+ end
+ elseif swValue == 16 then
+ inf = GetCarInfo("wheelpressrearright")
+ if inf ~= nil then
+ lPanel = string.format("Prr:%2.1f", inf / 6.88)
+ end
+
+ elseif swValue == 17 then
+ -- brakes temp if available
+ inf = GetCarInfo("braketempfrontleft")
+ if inf ~= nil then
+ if isAppRFactor(sim) or sim == "GTR2.exe" then inf = KtoC(inf) end
+ lPanel = string.format("BFL:%3.0f", inf)
+ end
+ elseif swValue == 18 then
+ inf = GetCarInfo("braketempfrontright")
+ if inf ~= nil then
+ if isAppRFactor(sim) or sim == "GTR2.exe" then inf = KtoC(inf) end
+ lPanel = string.format("BFr:%3.0f", inf)
+ end
+ elseif swValue == 19 then
+ inf = GetCarInfo("braketemprearleft")
+ if inf ~= nil then
+ if isAppRFactor(sim) or sim == "GTR2.exe" then inf = KtoC(inf) end
+ lPanel = string.format("BrL:%3.0f", inf)
+ end
+ elseif swValue == 20 then
+ inf = GetCarInfo("braketemprearright")
+ if inf ~= nil then
+ if isAppRFactor(sim) or sim == "GTR2.exe" then inf = KtoC(inf) end
+ lPanel = string.format("Brr:%3.0f", inf)
+ end
+ elseif swValue == 21 then
+ -- position
+ local pos = GetContextInfo("position")
+ lPanel = string.format(" P%02d ", pos )
+
+ elseif swValue == 22 then
+ -- get an average consumption of fuel per lap and gives the remaining laps
+ local remainlapsintank = GetCarInfo("remainlapsintank")
+ lPanel = string.format(" FL%3.0f", math.floor(remainlapsintank) )
+
+ elseif swValue == 23 then
+ -- rpm
+ local rpm = GetCarInfo("rpm")
+ lPanel = string.format(" %5d", rpm)
+
+ elseif swValue == 24 then
+ -- track size
+ local trcksz = GetContextInfo("tracksize")
+ lPanel = string.format("%5d ", trcksz)
+
+ elseif swValue == 25 then
+ -- 25.fuel:consumption
+ local fuel = GetCarInfo("fuel")
+ local remainlapsintank = GetCarInfo("remainlapsintank")
+
+ local sFuel = " "
+ local sRemainLaps = " "
+
+ if fuel ~= nil then
+ fuel = GetFuel(fuel, unit)
+ if fuel >= 100 then
+ -- specific for euro truck :)
+ sFuel = string.format("%03d", round(fuel) % 1000 )
+ elseif fuel >= 10 then
+ sFuel = string.format("F%02d", round(fuel) )
+ elseif fuel >= 1 then
+ sFuel = string.format("F%1.1f", fuel )
+ else
+ sFuel = string.format("F.%02d", fuel * 100 )
+ end
+
+ if remainlapsintank == 0 then
+ sRemainLaps = " "
+ elseif remainlapsintank >= 100 then
+ sRemainLaps = ":L99"
+ elseif remainlapsintank >= 10 then
+ sRemainLaps = string.format(":L%2d", math.floor(remainlapsintank))
+ else
+ sRemainLaps = string.format(":L%1.1f", remainlapsintank)
+ end
+
+ lPanel = string.format("%s%s", sFuel, sRemainLaps)
+ end
+
+ elseif swValue == 26 then
+ -- 26.distance
+ local dist = GetContextInfo("lapdistance")
+ lPanel = string.format("%5.0f", dist )
+
+ elseif swValue == 27 then
+ --27.lap completed
+ local laps = GetContextInfo("laps")
+ lPanel = string.format(" L%3.0f ", laps )
+
+ elseif swValue == 28 then
+ --28.total laps
+ local lpcnt = GetContextInfo("lapscount")
+ lPanel = string.format(" t%3d", lpcnt )
+
+ elseif swValue == 29 then
+ --29.sector
+ local sect = GetCarInfo("sector")
+ -- check if sector > 9
+ if sect >9 then
+ lPanel = string.format(" S%02d ", sect)
+ else
+ lPanel = string.format(" S%01d ", sect)
+ end
+
+ elseif swValue == 30 then
+ --30.kers
+ local kers = GetCarInfo("kers")
+ lPanel = string.format(" E:%3d", round(kers/1000))
+
+ elseif swValue == 31 then
+ --31.kers max
+ local kmx = GetCarInfo("kersmax")
+ lPanel = string.format(" E:%03d", round(kmx/1000))
+
+ elseif swValue == 32 then
+ --32.drs
+ local drs = GetCarInfo("drs")
+ if drs == 1 then
+ lPanel = "DrS:ON "
+ else
+ lPanel = "DrS:OFF"
+ end
+
+ elseif swValue == 33 then
+ --33.kers percent
+ local kers = GetCarInfo("kers")
+ lPanel = string.format(" E:%3d", round((kers/1000)/4))
+
+ elseif swValue == 34 then
+ --33.kers percent:speed
+ local kers = GetCarInfo("kers")
+ lPanel = string.format("%3d:%3.0f", round((kers/1000)/4), spd)
+
+ elseif swValue == 35 then
+ -- PIT
+ lPanel = " PIt "
+
+ elseif swValue == 36 then
+ -- sc
+ local sc = GetContextInfo("safetycar")
+ if sc == 1 then
+ lPanel = "SaFETy"
+ else
+ lPanel = " "
+ end
+
+ else
+ lPanel = "-:--.---"
+ end
+ -- send string to sli manager
+ SetLeftDigits( lPanel )
+ return 1
+end
+
+-- IN function of right panel
+-- param: recieve from SLI Manager the current switch position
+function custom_rightDigitsEvent(swFunction)
+ swValue = swFunction + 1
+
+ local hr = 0
+ local mn = 0
+ local sc = 0
+ local ms = 0
+ local hd = 0
+ local rPanel = ""
+ local lpt = 0.0
+ local diffFlag = false
+ local unit = false
+
+ -- is OSP Tracking ON
+ local ospt = false
+ ospt = GetContextInfo("osptracking")
+ if ospt == nil then ospt = false end
+ if ospt then
+ swValue = 23
+ end
+
+ -- lap finished, display lap time a few seconds
+ local dlt = false
+ dlt = GetContextInfo("displaylaptime")
+ if dlt == nil then dlt = false end
+ if dlt and swValue ~= 37 and swValue ~= 38 then
+ swValue = 3
+ end
+
+ -- check if quick info button is down
+ local qi = false
+ qi = GetContextInfo("quickinfobutton")
+ if qi == nil or qi == 0 then qi = false end
+ if qi then
+ -- get index for right panel
+ local qiRight = GetContextInfo("quickinforight")
+ if qiRight == nil then qiRight = 1 end
+ swValue = qiRight
+ end
+ -- get current display unit metric or imperial
+ unit = GetContextInfo("speedmetric")
+
+ -- check if PIT Feedback ON
+ local pf = false
+ pf = GetContextInfo("pitfeedback")
+ if pf == nil or pf == 0 then pf = false end
+ if pf then
+ -- force position to SPEED function
+ local pit = GetCarInfo("inpits")
+ if pit > 0 then
+ swValue = 20
+ end
+ end
+
+ --print ( "swValue: " .. swValue .. "\n")
+
+ -- get sim name
+ local sim = GetContextInfo("simulation")
+ if sim ~= nil then
+ if swValue == 1 then
+ -- current lap time
+ lpt = GetTimeInfo("laptime")
+ elseif swValue == 2 then
+ -- best lap time (PB)
+ lpt = GetTimeInfo("bestlaptime")
+ elseif swValue == 3 then
+ -- last lap time
+ lpt = GetTimeInfo("lastlaptime")
+
+ elseif swValue >= 4 and swValue <= 10 and isAppIRacing(sim) then
+ -- iRacing partials
+ local ts = GetContextInfo("partialcount")
+ local sector = GetCarInfo("sector")
+ if ts ~= nil and ts > 0 then
+ if swValue == 4 then
+ lpt = GetPartialTimeInfo("currentpartial", sector)
+ elseif swValue == 5 then
+ diffFlag = true
+ lpt = GetPartialTimeInfo("vsbestlap", sector)
+ elseif swValue == 6 then
+ diffFlag = true
+ lpt = GetPartialTimeInfo("vsoptimallap", sector)
+ elseif swValue == 7 then
+ diffFlag = true
+ lpt = GetPartialTimeInfo("vsoptimalsector", sector)
+ elseif swValue == 8 then
+ diffFlag = true
+ lpt = GetPartialTimeInfo("vssessionbestlap", sector)
+ elseif swValue == 9 then
+ diffFlag = true
+ lpt = GetPartialTimeInfo("vssessionoptimallap", sector)
+ elseif swValue == 10 then
+ diffFlag = true
+ lpt = GetPartialTimeInfo("vssessionoptimalsector", sector)
+ end
+ else
+ lpt = 0.0
+ end
+
+ elseif swValue == 11 then
+ -- real time diff vs your best
+ diffFlag = true
+ lpt = GetTimeInfo("realdiffbest")
+
+ elseif swValue == 12 then
+ -- real time diff vs your last
+ diffFlag = true
+ lpt = GetTimeInfo("realdifflast")
+
+ elseif swValue == 13 then
+ -- current sector
+ local sector = GetCarInfo("sector")
+ local lt = GetTimeInfo("laptime")
+ if sector == 1 then
+ lpt = lt
+ elseif sector == 2 then
+ local s1 = GetTimeInfo("lastsector1")
+ lpt = lt - s1
+ else
+ -- sector 3
+ local s1 = GetTimeInfo("lastsector1")
+ local s2 = GetTimeInfo("lastsector2")
+ lpt = lt - (s1 + s2)
+ end
+ elseif swValue == 14 then
+ -- best sector 1
+ lpt = GetTimeInfo("bestsector1")
+ elseif swValue == 15 then
+ -- best sector 2
+ lpt = GetTimeInfo("bestsector2")
+ elseif swValue == 16 then
+ -- last sector 1
+ lpt = GetTimeInfo("lastsector1")
+ elseif swValue == 17 then
+ -- last sector 2
+ lpt = GetTimeInfo("lastsector2")
+ elseif swValue == 18 then
+ -- position
+ local pos = GetContextInfo("position")
+ if pos >= 100 then
+ rPanel = string.format(" P%03d ", pos )
+ else
+ rPanel = string.format(" P%02d ", pos )
+ end
+ SetRightDigits( rPanel )
+ return 1
+ elseif swValue == 19 then
+ -- get an average consumption of fuel per lap and gives the remaining laps
+ local remainlapsintank = GetCarInfo("remainlapsintank")
+ rPanel = string.format(" FL%3.0f", math.floor(remainlapsintank) )
+
+ elseif swValue == 20 then
+ -- speed on right panel
+ local spd = GetCarInfo("speed")
+ rPanel = string.format(" %3d ", spd )
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 21 then
+ -- time remaining if available
+ lpt = GetTimeInfo("timeremaining")
+
+ -- explod time
+ hr, mn, sc, hd, ms = timeDispatcher(lpt)
+ if hr == 0 then
+ if mn <= 10 then
+ rPanel = string.format( " %1d.%02d.%1d", mn, sc, ms)
+ else
+ rPanel = string.format( " %2d.%02d.%1d", mn, sc, ms)
+ end
+ elseif hr < 10 then
+ rPanel = string.format( "%1d:%02d.%02d.%1d", hr, mn, sc, ms)
+ else
+ rPanel = string.format( " %02d.%02d.%1d", hr, mn, sc)
+ end
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 22 then
+ -- PC system time
+ lpt = GetTimeInfo("systemtime")
+ -- explod time
+ hr, mn, sc, hd, ms = timeDispatcher(lpt)
+ rPanel = string.format( " %02d.%02d ", hr, mn)
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 23 then
+ -- rpm:gear
+ local rpm = GetCarInfo("rpm")
+ if rpm == nil then
+ return 1
+ end
+ local gear = GetCarInfo("gear")
+ if gear ~= nil then
+ rPanel = string.format("%5d:%d", rpm, gear)
+ SetRightDigits( rPanel )
+ end
+ return 1
+
+ elseif swValue == 24 then
+ -- time elapsed if available
+ local lpt = GetTimeInfo("timetotalelapsed")
+
+ -- explod time
+ hr, mn, sc, hd, ms = timeDispatcher(lpt)
+ if hr == 0 then
+ if mn <= 10 then
+ rPanel = string.format( " %1d.%02d.%1d", mn, sc, ms)
+ else
+ rPanel = string.format( " %2d.%02d.%1d", mn, sc, ms)
+ end
+ elseif hr < 10 then
+ rPanel = string.format( "%1d:%02d.%02d.%1d", hr, mn, sc, ms)
+ else
+ rPanel = string.format( " %02d.%02d.%1d", hr, mn, sc)
+ end
+ SetRightDigits( rPanel )
+ return 1
+ elseif swValue == 25 then
+ -- 25.fuel
+ local fuel = GetCarInfo("fuel")
+ if fuel ~= nil then
+ fuel = GetFuel(fuel, unit)
+ if fuel >= 100 then
+ rPanel = string.format(" F%03d ", round(fuel))
+ elseif fuel >= 10 then
+ rPanel = string.format(" F%02d ", round(fuel))
+ else
+ rPanel = string.format(" F%1.1f ", fuel)
+ end
+
+ SetRightDigits( rPanel )
+ return 1
+ end
+
+ elseif swValue == 26 then
+ -- 26.distance
+ local dist = GetContextInfo("lapdistance")
+ rPanel = string.format(" %5d", dist )
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 27 then
+ --27.lap completed
+ local laps = GetContextInfo("laps")
+ rPanel = string.format(" %3d ", laps )
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 28 then
+ --28.total laps
+ local lpcnt = GetContextInfo("lapscount")
+ rPanel = string.format(" %3d ", lpcnt )
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 29 then
+ --29.sector
+ local sect = GetCarInfo("sector")
+ -- check if sector > 9
+ if sect >9 then
+ rPanel = string.format(" S%02d ", sect)
+ else
+ rPanel = string.format(" S%01d ", sect)
+ end
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 30 then
+ --30.kers
+ local kers = GetCarInfo("kers")
+ rPanel = string.format(" E%03d ", round(kers/1000) )
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 31 then
+ --31.kers max
+ local kmx = GetCarInfo("kersmax")
+ rPanel = string.format(" E%03d ", round(kmx/1000) )
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 32 then
+ --32.drs
+ rPanel = "DrS.OFF"
+ local drs = GetCarInfo("drs")
+ if drs >= 1 then
+ rPanel = "DrS. ON"
+ end
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 33 then
+ --33.kers percent
+ local kers = GetCarInfo("kers")
+ rPanel = string.format(" %3d ", round((kers/1000)/4))
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 34 then
+ --34 track size
+ local trcksz = GetContextInfo("tracksize")
+ rPanel = string.format("%5d ", trcksz)
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 35 then
+ --35 last sector 1, 2 and 3
+ local sector = GetCarInfo("sector")
+ if sector == 1 then
+ -- sector 3
+ local ls1 = GetTimeInfo("lastsector1")
+ local ls2 = GetTimeInfo("lastsector2")
+ local lt = GetTimeInfo("lastlaptime")
+ if ls1 > 0 and ls2 > 0 then
+ lpt = lt - (ls1 + ls2)
+ end
+ elseif sector == 2 then
+ local ls1 = GetTimeInfo("lastsector1")
+ lpt = ls1
+ else
+ -- sector 3
+ local ls2 = GetTimeInfo("lastsector2")
+ lpt = ls2
+ end
+
+ elseif swValue == 36 then
+ --36.rpm
+ local rpm = GetCarInfo("rpm")
+ rPanel = string.format("%5d ", rpm)
+ SetRightDigits( rPanel )
+ return 1
+
+ elseif swValue == 37 then
+ -- real time delta vs last + last sector diff 1, 2 and 3
+ local sector = GetCarInfo("sector")
+ diffFlag = true
+ if mDiffSectorDelay == nil or mDiffOldSector == nil or mDiffOldSector ~= sector then
+ -- 8s delay, increase it if needed
+ mDiffSectorDelay = GetTicks() + 8000
+ mDiffOldSector = sector
+ end
+ -- init backup vars
+ if mOld_lt == nil then
+ mOld_ls1 = 0.00000
+ mOld_ls2 = 0.00000
+ mOld_lt = 0.00000
+ mDelta_lpt = 0.00000
+ mDelta_lptb = 0.00000
+ end
+
+ -- display delta by default
+ lpt = GetTimeInfo("realdifflast")
+
+ if mDiffSectorDelay > GetTicks() then
+ -- display sector
+ if sector == 1 then
+ -- sector 3
+ local lt = GetTimeInfo("lastlaptime")
+
+ -- if ls1 > 0 and ls2 > 0 and lt > 0 and mOld_ls1 > 0 and mOld_ls2 > 0 and mOld_lt > 0 then
+ -- delta sector 3
+ --lpt = (lt - (ls1 + ls2)) - (mOld_lt - (mOld_ls1 + mOld_ls2))
+ if lt > 0 and mOld_lt > 0 then
+ if lt ~= mOld_lt then
+ mDelta_lpt = lt - mOld_lt
+ print(mDelta_lpt, lt, mOld_lt)
+ end
+ lpt = mDelta_lpt
+ end
+
+ mOld_lt = lt
+
+
+ elseif sector == 2 then
+ -- sector 1
+ local ls1 = GetTimeInfo("lastsector1")
+ if ls1 > 0 and mOld_ls1 > 0 then
+ lpt = ls1 - mOld_ls1
+ end
+ mOld_ls2 = GetTimeInfo("lastsector2")
+ print(lpt, ls1 , mOld_ls1, mOld_ls2)
+
+ else
+ -- sector 2
+ local ls2 = GetTimeInfo("lastsector2")
+ if ls2 > 0 and mOld_ls2 > 0 then
+ lpt = ls2 - mOld_ls2
+ end
+ mOld_ls1 = GetTimeInfo("lastsector1")
+ print(lpt, ls2 , mOld_ls1, mOld_ls2)
+ end
+ end
+
+ elseif swValue == 38 then
+ -- real time delta vs best + best sector diff 1, 2 and 3
+
+ -- get sector
+ local sector = GetCarInfo("sector")
+ -- set flags
+ diffFlag = true
+
+ -- set delay
+ if mDiffSectorDelay == nil or mDiffOldSector == nil or mDiffOldSector ~= sector then
+ -- 8s delay, increase it if needed
+ mDiffSectorDelay = GetTicks() + 8000
+ mDiffOldSector = sector
+ end
+
+ -- init backup vars
+ if mOld_bt == nil then
+ mOld_bs1 = 0.00000
+ mOld_bs2 = 0.00000
+ mOld_bt = 0.00000
+ mDelta_lpt = 0.00000
+ mDelta_lptb = 0.00000
+ end
+
+ -- display delta by default
+ lpt = GetTimeInfo("realdiffbest")
+
+ if mDiffSectorDelay > GetTicks() then
+ -- display sector diff during delay
+ if sector == 1 then
+ -- sector 3
+ local bt = GetTimeInfo("bestlaptime")
+
+ --if bs1 > 0 and bs2 > 0 and bt > 0 and mOld_bs1 > 0 and mOld_bs2 > 0 and mOld_bt > 0 then
+ -- delta sector 3
+ -- lpt = (bt - (bs1 + bs2)) - (mOld_bt - (mOld_bs1 + mOld_bs2))
+ if bt > 0 and mOld_bt > 0 then
+ if bt ~= mOld_bt then
+ mDelta_lptb = bt - mOld_bt
+ print(mDelta_lpt, bt, mOld_bt)
+ end
+ lpt = mDelta_lptb
+ end
+
+ mOld_bt = bt
+
+ elseif sector == 2 then
+ -- sector 1
+ local bs1 = GetTimeInfo("bestsector1")
+ if bs1 > 0 and mOld_bs1 > 0 then
+ lpt = bs1 - mOld_bs1
+ end
+ print(lpt, bs1 )
+ mOld_bs2 = GetTimeInfo("bestsector2")
+
+ else
+ -- sector 2
+ local bs2 = GetTimeInfo("bestsector2")
+ if bs2 > 0 and mOld_bs2 > 0 then
+ lpt = bs2 - mOld_bs2
+ end
+ print(lpt, bs2 )
+ mOld_bs1 = GetTimeInfo("bestsector1")
+ end
+ end
+
+ else
+ -- none
+ rPanel = "-:--.---"
+ SetRightDigits( rPanel )
+ return 1
+ end
+ end
+
+ if lpt == nil then return 0 end
+
+ local refreshRate = mRefreshLapTimeRate
+ if diffFlag then
+ refreshRate = mDeltaTimeDelay
+ end
+
+ -- check if diff time is ready
+ local diffOK = GetTimeInfo("realdifftimeready")
+ if diffFlag and diffOK == false then
+ diffFlag = false
+ rPanel = " -.---"
+
+ mOld_ls1 = 0.00000
+ mOld_ls2 = 0.00000
+ mOld_lt = 0.00000
+ mDelta_lpt = 0.00000
+ mDelta_lptb = 0.00000
+
+ SetRightDigits( rPanel )
+ return 1
+ end
+
+ local c = " "
+ if lpt < 0 then
+ c = "-"
+ end
+ -- explod time
+ hr, mn, sc, hd, ms = timeDispatcher(lpt)
+
+ -- print("lpt: " .. lpt .. " m: " .. mn .. " - s: " .. sc .. " - ms: " .. ms .. )
+ if GetTicks() > ( refreshRate + mDeltaTimeOldTicks ) then
+ mDeltaTimeOldTicks = GetTicks()
+
+ if diffFlag then
+ --
+ if lpt == -1 or (mn + sc + ms) == 0.0000 then
+ mDeltaTimeBackup = " --.---"
+ elseif mn > 0 then
+ mDeltaTimeBackup = string.format( "%s%2d.%02d.%01d", c, mn, sc, ms)
+ else
+ mDeltaTimeBackup = string.format( "%s%2d.%03d", c, sc, ms)
+ end
+
+ rPanel = mDeltaTimeBackup
+
+ else
+ --if mTimeBackup == nil then mTimeBackup = 0.0000 end
+ if lpt == -1 or (mn + sc + ms) == 0.0000 then
+ mDeltaTimeBackup = "-:--.---"
+ elseif mn < 10 then
+ mDeltaTimeBackup = string.format( "%1d:%02d.%03d", mn, sc, ms)
+ elseif hr > 0 then
+ mDeltaTimeBackup = string.format( " %02d.%02d ", hr, mn)
+ else
+ mDeltaTimeBackup = string.format( " %02d.%02d.%01d", mn, sc, ms)
+ end
+
+ end
+ end
+ rPanel = mDeltaTimeBackup
+ -- send time to sli manager
+ SetRightDigits( rPanel )
+ return 1
+end
+
diff --git a/scripts/gugus/speedlimiter.lua b/scripts/gugus/speedlimiter.lua
new file mode 100644
index 0000000..8468038
--- /dev/null
+++ b/scripts/gugus/speedlimiter.lua
@@ -0,0 +1,1001 @@
+
+-- SLI-M, SLI-PRO speed limiter Methods
+function custom_spdLmtMethodEvent(idx)
+ mSpdLimitMethod = idx
+ mLeftSpdLmtText = " "
+ mRightSpdLmtText = " "
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ if mSpdLimitMethod >= 2 then
+ -- init table
+ initLedTable(mRPMLedTable, 0)
+ SetRPMLed("mRPMLedTable")
+ end
+
+ if mNoBlink or (mSpdLimitMethod == 0) then
+ -- speedlimiter led NOT blinking
+ SetWarnLed(mSpeedLimiterLED, 1)
+
+ elseif mSpdLimitMethod == 1 then
+ -- speedlimiter led blinking, method 1
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+
+ elseif mSpdLimitMethod == 2 then
+ -- speedlimiter led + RPM blinking, method 2
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+ initLedTable(mRPMLedTable, 1)
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+ initLedTable(mRPMLedTable, 0)
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 3 then
+ -- speedlimiter led + alternate RPM blinking, method 3
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then
+ SetGearDigit("L")
+ end
+ for i = 0,12 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 1
+ else
+ mRPMLedTable[led] = 0
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then
+ SetGearDigit(" ")
+ end
+ for i = 0,13 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 0
+ else
+ mRPMLedTable[led] = 1
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 4 then
+ -- speedlimiter led + RPM + digits blinking, method 4
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ if mLimiterChar then SetGearDigit("L") end
+ SetDigitsAllowed(true)
+
+ for i = 0,2 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+ for i = 10,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+
+ SetDigitsAllowed(false)
+
+ SetLeftDigits (mLeftSpdLmtText)
+ SetRightDigits (mRightSpdLmtText)
+
+ for i = 0,2 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ for i = 10,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitMethod == 5 or mSpdLimitMethod == 6 then
+ -- speedlimiter led + digits blinking, method 5
+ -- speedlimiter led + RPM fixed + Digits blinking, method 6
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+
+ SetDigitsAllowed (true)
+
+ local state = 0
+ if mSpdLimitMethod == 6 then state = 1 end
+ initLedTable(mRPMLedTable, state)
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+
+ SetLeftDigits ( mLeftSpdLmtText)
+ SetRightDigits ( mRightSpdLmtText)
+
+ SetDigitsAllowed(false)
+
+ local state = 0
+ if mSpdLimitMethod == 6 then state = 1 end
+ initLedTable(mRPMLedTable, state)
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ else
+ return 1
+ end
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end
+
+
+-- G27 speed limiter Methods
+function spdLmtG27MethodEvent(idx)
+ mSpdLimitG27Method = idx
+ -- call custom script
+ local result = custom_spdLmtG27MethodEvent(mSpdLimitG27Method)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ -- call global custom script
+ result = global_custom_spdLmtG27MethodEvent(mSpdLimitG27Method)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ -- init table
+ mG27Leds = 0
+
+ if mNoBlink or mSpdLimitG27Method == 0 then
+ -- speedlimiter led NOT blinking
+ mG27Leds = 0x1F
+
+ elseif mSpdLimitG27Method == 1 then
+ -- speedlimiter led blinking, method 1
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ mG27Leds = 0x1F
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ mG27Leds = 0
+ end
+
+ elseif mSpdLimitG27Method >= 2 then
+ -- speedlimiter alternate led blinking, method 2 to n
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ mG27Leds = 0x0A
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ mG27Leds = 0x15
+ end
+
+ else
+ return 1
+ end
+
+ SetG27Led(mG27Leds)
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end
+
+
+ -- Fanatec speed/pit limiter Methods
+function spdLmtFanatecMethodEvent(idx)
+ mSpdLimitFanatecMethod = idx
+ mFanatecSpdLmtText = " "
+ -- call custom script
+ local result = custom_spdLmtFanatecMethodEvent(mSpdLimitFanatecMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ -- call global custom script
+ result = global_custom_spdLmtFanatecMethodEvent(mSpdLimitFanatecMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ -- init table
+ initLedTable(mRPMLedTable, 0)
+ SetRPMLed("mRPMLedTable")
+
+ if mNoBlink or mSpdLimitFanatecMethod == 0 then
+ -- speedlimiter first rpm led NOT blinking
+ SetFanatecDigitsAllowed(true)
+ mRPMLedTable["RPM0"]= 1
+ SetRPMLed("mRPMLedTable")
+ if mLimiterChar then
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " L " )
+ oldGear = 110
+ else
+ SetFanatecDigitsAllowed(true)
+ end
+
+ elseif mSpdLimitFanatecMethod == 1 then
+ -- speedlimiter first rpm led blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ -- one led
+ mRPMLedTable["RPM0"]= 1
+
+ if mLimiterChar then
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " L " )
+ oldGear = 110
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ mRPMLedTable["RPM0"]= 0
+ if mLimiterChar then
+ oldGear = 110
+ SetFanatecDigitsAllowed(true)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitFanatecMethod == 2 then
+ -- speedlimiter all rpm led blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 1)
+
+ if mLimiterChar then
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " L " )
+ oldGear = 110
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 0)
+
+ if mLimiterChar then
+ oldGear = 110
+ SetFanatecDigitsAllowed(true)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitFanatecMethod == 3 or mSpdLimitFanatecMethod > 6 then
+ -- speedlimiter alternate RPM blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ for i = 0,8 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 1
+ else
+ mRPMLedTable[led] = 0
+ end
+ end
+ SetFanatecDigitsAllowed(false)
+ if mLimiterChar then
+ SetFanatecDigits( " L " )
+ oldGear = 110
+ else
+ SetFanatecDigits( "---" )
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ for i = 0,8 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 0
+ else
+ mRPMLedTable[led] = 1
+ end
+ end
+
+ SetFanatecDigitsAllowed(true)
+ end
+ SetRPMLed("mRPMLedTable")
+
+
+ elseif mSpdLimitFanatecMethod == 4 or mSpdLimitFanatecMethod == 5 then
+ -- speedlimiter no led digits only
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 0)
+
+ if mLimiterChar then
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " L " )
+ oldGear = 110
+ else
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( "---" )
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ if mSpdLimitFanatecMethod == 4 then
+ SetFanatecDigitsAllowed(true)
+ else
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " " )
+ end
+
+ initLedTable(mRPMLedTable, 0)
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitFanatecMethod == 6 then
+ -- speedlimiter freezed rpm + digits blinking
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ initLedTable(mRPMLedTable, 1)
+
+ if mLimiterChar then
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " L " )
+ oldGear = 110
+ else
+ SetFanatecDigitsAllowed(true)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+
+ SetFanatecDigitsAllowed(false)
+ SetFanatecDigits( " " )
+
+ initLedTable(mRPMLedTable, 1)
+ end
+ SetRPMLed("mRPMLedTable")
+
+ else
+ return 1
+ end
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end
+
+-- SIM RACE Deluxe speed limiter Methods
+function spdLmtSRDlxMethodEvent(idx)
+ mSpdLimitSRDlxMethod = idx
+ mLeftSpdLmtText = " "
+ mRightSpdLmtText = " "
+ -- call custom script
+ local result = custom_spdLmtSRDlxMethodEvent(mSpdLimitSRDlxMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ -- call global custom script
+ result = global_custom_spdLmtSRDlxMethodEvent(mSpdLimitSRDlxMethod)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ -- init table
+ initLedTable(mRPMLedTable, 0)
+ SetRPMLed("mRPMLedTable")
+
+ if mNoBlink or (mSpdLimitSRDlxMethod == 0) then
+ -- speedlimiter led NOT blinking
+ SetWarnLed(mSpeedLimiterLED, 1)
+
+ elseif mSpdLimitSRDlxMethod == 1 then
+ -- speedlimiter led blinking, method 1
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+
+ elseif mSpdLimitSRDlxMethod == 2 then
+ -- speedlimiter led + RPM blinking, method 2
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+ initLedTable(mRPMLedTable, 1)
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+ initLedTable(mRPMLedTable, 0)
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitSRDlxMethod == 3 then
+ -- speedlimiter led + alternate RPM blinking, method 3
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then
+ SetGearDigit("L")
+ end
+ for i = 0,12 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 1
+ else
+ mRPMLedTable[led] = 0
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then
+ SetGearDigit(" ")
+ end
+ for i = 0,13 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 0
+ else
+ mRPMLedTable[led] = 1
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitSRDlxMethod == 4 then
+ -- speedlimiter led + RPM + digits blinking, method 4
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ if mLimiterChar then SetGearDigit("L") end
+ SetDigitsAllowed(true)
+
+ for i = 0,2 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+ for i = 10,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+
+ SetDigitsAllowed(false)
+
+ SetLeftDigits (mLeftSpdLmtText)
+ SetRightDigits (mRightSpdLmtText)
+
+ for i = 0,2 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ for i = 10,12 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitSRDlxMethod == 5 or mSpdLimitSRDlxMethod == 6 then
+ -- speedlimiter led + digits blinking, method 5
+ -- speedlimiter led + RPM fixed + Digits blinking, method 6
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+
+ SetDigitsAllowed (true)
+
+ local state = 0
+ if mSpdLimitSRDlxMethod == 6 then state = 1 end
+ initLedTable(mRPMLedTable, state)
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+
+ SetLeftDigits ( mLeftSpdLmtText)
+ SetRightDigits ( mRightSpdLmtText)
+
+ SetDigitsAllowed(false)
+
+ local state = 0
+ if mSpdLimitSRDlxMethod == 6 then state = 1 end
+ initLedTable(mRPMLedTable, state)
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ else
+ return 1
+ end
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end
+-- SIM RACE F1 speed limiter Methods
+function spdLmtSRF1MethodEvent(idx)
+ mSpdLimitSRF1Method = idx
+ mLeftSpdLmtText = " "
+ mRightSpdLmtText = " "
+ -- call custom script
+ local result = custom_spdLmtSRF1MethodEvent(mSpdLimitSRF1Method)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ -- call global custom script
+ result = global_custom_spdLmtSRF1MethodEvent(mSpdLimitSRF1Method)
+ -- if result = 0 bypass the script below and return 0
+ -- if result = 1 bypass the script below and return 1
+ if result <= 1 then return result end
+ -- if result >= 2 continue
+
+ local led = ""
+
+ -- check if initialized
+ if isGlobalInitialized == 0 then
+ isGlobalInitialized = 1
+ -- init them
+ InitGlobals()
+ end
+ -- get global prefs
+ GetSLIMaxInfo()
+
+ -- init table
+ initLedTable(mRPMLedTable, 0)
+ SetRPMLed("mRPMLedTable")
+
+ if mNoBlink or (mSpdLimitSRF1Method == 0) then
+ -- speedlimiter led NOT blinking
+ SetWarnLed(mSpeedLimiterLED, 1)
+
+ elseif mSpdLimitSRF1Method == 1 then
+ -- speedlimiter led blinking, method 1
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+
+ elseif mSpdLimitSRF1Method == 2 then
+ -- speedlimiter led + RPM blinking, method 2
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+ initLedTable(mRPMLedTable, 1)
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+ initLedTable(mRPMLedTable, 0)
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitSRF1Method == 3 then
+ -- speedlimiter led + alternate RPM blinking, method 3
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then
+ SetGearDigit("L")
+ end
+ for i = 0,14 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 1
+ else
+ mRPMLedTable[led] = 0
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 1)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then
+ SetGearDigit(" ")
+ end
+ for i = 0,15 do
+ led = led.format("RPM%d",i)
+ if (i % 2)==0 then
+ mRPMLedTable[led] = 0
+ else
+ mRPMLedTable[led] = 1
+ end
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitSRF1Method == 4 then
+ -- speedlimiter led + RPM + digits blinking, method 4
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+
+ if mLimiterChar then SetGearDigit("L") end
+ SetDigitsAllowed(true)
+
+ for i = 0,4 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+ for i = 10,14 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 0
+ end
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+
+ SetDigitsAllowed(false)
+
+ SetLeftDigits (mLeftSpdLmtText)
+ SetRightDigits (mRightSpdLmtText)
+
+ for i = 0,4 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ for i = 10,14 do
+ led = led.format("RPM%d",i)
+ mRPMLedTable[led] = 1
+ end
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+ elseif mSpdLimitSRF1Method == 5 or mSpdLimitSRF1Method == 6 then
+ -- speedlimiter led + digits blinking, method 5
+ -- speedlimiter led + RPM fixed + Digits blinking, method 6
+ if GetTicks() > mOldTickCount then
+ mSpdLmtBlink = mSpdLmtBlink + 1
+ end
+
+ if mSpdLmtBlink >= mBlinkTime then
+ mSpdLmtBlink = 0
+ end
+
+ if mSpdLmtBlink <= (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit("L") end
+
+ SetDigitsAllowed (true)
+
+ local state = 0
+ if mSpdLimitSRF1Method == 6 then state = 1 end
+ initLedTable(mRPMLedTable, state)
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+
+ if mSpdLmtBlink > (mBlinkTime / 2) then
+ if mLimiterChar then SetGearDigit(" ") end
+
+ SetLeftDigits ( mLeftSpdLmtText)
+ SetRightDigits ( mRightSpdLmtText)
+
+ SetDigitsAllowed(false)
+
+ local state = 0
+ if mSpdLimitSRF1Method == 6 then state = 1 end
+ initLedTable(mRPMLedTable, state)
+
+ if not mSpdLmtRPMLedOnly then
+ SetWarnLed(mSpeedLimiterLED, 0)
+ end
+ end
+ SetRPMLed("mRPMLedTable")
+
+
+ else
+ return 1
+ end
+
+ -- timebase
+ if GetTicks() > mOldTickCount then
+ mOldTickCount = GetTicks() + 20
+ end
+ return 1
+end