From 11da2520ff2d0c610d9324ef1688fca54bfd12b7 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Fri, 15 Nov 2013 17:27:33 +0100 Subject: [Gugus scripts] reorganization. --- scripts/gear.lua | 2 +- scripts/gugus/enterExit.lua | 36 ++ scripts/gugus/gear.lua | 32 ++ scripts/gugus/sliproDigits.lua | 868 ++++++++++++++++++++++++++++++++++ scripts/gugus/speedlimiter.lua | 1001 ++++++++++++++++++++++++++++++++++++++++ scripts/slidevice.lua | 1 + scripts/slipro_digits.lua | 900 ------------------------------------ scripts/slipro_gus.lua | 226 +-------- scripts/speedlimiter.lua | 8 +- 9 files changed, 1952 insertions(+), 1122 deletions(-) create mode 100644 scripts/gugus/enterExit.lua create mode 100644 scripts/gugus/gear.lua create mode 100644 scripts/gugus/sliproDigits.lua create mode 100644 scripts/gugus/speedlimiter.lua delete mode 100644 scripts/slipro_digits.lua diff --git a/scripts/gear.lua b/scripts/gear.lua index bcf0361..7015eef 100644 --- a/scripts/gear.lua +++ b/scripts/gear.lua @@ -173,4 +173,4 @@ function gearFanatecEvent(gear) end return 2 -end \ No newline at end of file +end 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 diff --git a/scripts/slidevice.lua b/scripts/slidevice.lua index a5ef3de..1004fa2 100644 --- a/scripts/slidevice.lua +++ b/scripts/slidevice.lua @@ -23,6 +23,7 @@ scr = GetCustomScripts("scriptname") -- print ( scr ) if scr ~= nil and scr ~= "" then mCustomScriptsFileName = scr + print ( string.format("Loading custom script %s ...\n", scr) ) require(mCustomScriptsFileName) custom_initEvent(scr) end diff --git a/scripts/slipro_digits.lua b/scripts/slipro_digits.lua deleted file mode 100644 index f49080f..0000000 --- a/scripts/slipro_digits.lua +++ /dev/null @@ -1,900 +0,0 @@ --- SLIPRO Lua Script v3.3.2 --- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved. --- this script builds all functions associated with --- left and right panels of SLIPRO device --- last change by Zappadoc - 2013-09 - --- ============================================================ --- Left and Right Panel functions --- ============================================================ - --- IN function of left panel --- param: recieve from SLI Manager the current switch position -function leftDigitsEvent(swFunction) - swValue = swFunction + 1 - -- call custom script - local result = custom_leftDigitsEvent(swValue) - -- 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_leftDigitsEvent(swValue) - -- 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 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 rightDigitsEvent(swFunction) - swValue = swFunction + 1 - -- call custom script - local result = custom_rightDigitsEvent(swValue) - -- 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_rightDigitsEvent(swValue) - -- 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 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/slipro_gus.lua b/scripts/slipro_gus.lua index 8e7f4c2..bd9d680 100644 --- a/scripts/slipro_gus.lua +++ b/scripts/slipro_gus.lua @@ -1,220 +1,14 @@ --- Custom SLIMax Manager Scripts v3 --- Copyright ©2012-2013 by Zappadoc - All Rights Reserved. --- last change by Zappadoc - 2013-02 --- add you global custom functions and globals variables here --- patch the std SLIMax Events with your global custom scripts if needed --- see the scripting section of the forum for more info... +require "scripts/gugus/enterExit" +require "scripts/gugus/sliproDigits" +require "scripts/gugus/speedlimiter" +require "scripts/gugus/gear" --- IMPORTANT: --- this script will not be deleted by uninstalling the software - --- ================================ --- CONSTANTS - - --- ================================ --- additional lua extension module dll - - --- ================================ --- additional scripts file ( use 'require' statement ) - -require "scripts/slipro_digits" - --- ================================ --- custom globals - --- ================================ --- custom functions - --- ================================ --- custom events - -function global_custom_controlsEvent(devType, ctrlType, ctrlPos, value, funcIndex) - -- type your custom controls script here (manage buttons, switches and encoders) - return 2 -end - -function global_custom_deviceReport(devType) - -- type your script here (just before sending report to the device ) - return 2 -end - -function global_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 - - --- ================================ --- SLI-PRO, SLI-M, BU0710 SUPPORT - -function global_custom_ospMethodEvent(idx) - -- type your custom Optimal Shift Points (OSP) method here - return 2 -end - -function global_custom_shiftLightsMethodEvent(idx) - -- type your custom shiftlights method here - return 2 -end - -function global_custom_shiftLightsBU0710Event(idx) - -- type your custom shiftlights method for BU0710 device only here - return 2 -end - -function global_custom_leftDigitsEvent(swPosition) - -- type your custom script related to left SLI-PRO digits panel here - return 2 -end - -function global_custom_rightDigitsEvent(swPosition) - -- type your custom script related to right SLI-PRO digits panel here - return 2 -end - -function global_custom_spdLmtMethodEvent(idx) - -- type your custom speedlimiter method here - return 2 -end - -function global_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 - -function global_custom_ledEvent(idx, ledFunction, state) - -- type your custom script on session ending, here - return 2 -end - --- ================================ --- LOGITECH G27 SUPPORT - -function global_custom_shiftLightsG27LedsMethodEvent(idx) - -- type your custom shiftlights method for G27 device only here - return 2 -end - -function global_custom_ospG27MethodEvent(idx) - -- type your custom Optimal Shift Points (OSP) method here - return 2 -end - -function global_custom_spdLmtG27MethodEvent(idx) - -- type your custom speedlimiter method here - return 2 -end - --- ================================ --- FANATEC WHEELS SUPPORT - -function global_custom_shiftLightsFanatecMethodEvent(idx) - -- type your custom shiftlights method for Fanatec device only here - return 2 -end - -function global_custom_fanatecDigitsEvent(swPosition) - -- type your custom script related to Fanatec digits panel here - return 2 -end - -function global_custom_ospFanatecMethodEvent(idx) - -- type your custom Optimal Shift Points (OSP) method here - return 2 -end - -function global_custom_spdLmtFanatecMethodEvent(idx) - -- type your custom Optimal Shift Points (OSP) method here - return 2 -end - -function global_custom_gearFanatecEvent(gear) - -- type your custom gear event script here - return 2 +-- MANDATORY -- +function custom_initEvent(scriptFile) + print ( "\n" ) + print ( "Loaded specific gugus scripts\n" ) + print ( "\n" ) + return 0 end --- ================================ --- local custom events PLACEHOLDERS --- DO NOT CHANGE THE SCRIPT BELOW --- ================================ -function custom_controlsEvent(deviceIdx, ctrlType, ctrlPos, value, funcIndex) return 2 end -function custom_deviceReport(devType) return 2 end -function custom_ospMethodEvent(idx) return 2 end -function custom_ospG27MethodEvent(idx) return 2 end -function custom_ospFanatecMethodEvent(idx) return 2 end -function custom_shiftLightsMethodEvent(idx) return 2 end -function custom_shiftLightsBU0710Event(idx) return 2 end -function custom_shiftLightsG27LedsMethodEvent(idx) return 2 end -function custom_shiftLightsFanatecMethodEvent(idx) return 2 end -function custom_leftDigitsEvent(swPosition) return 2 end -function custom_rightDigitsEvent(swPosition) return 2 end -function custom_fanatecDigitsEvent(swPosition) return 2 end -function custom_spdLmtMethodEvent(idx) return 2 end -function custom_spdLmtG27MethodEvent(idx) return 2 end -function custom_spdLmtFanatecMethodEvent(idx) return 2 end -function custom_gearEvent(gear) return 2 end -function custom_gearFanatecEvent(gear) return 2 end -function custom_enterSessionEvent(devType) return 2 end -function custom_exitSessionEvent(devType) return 2 end -function custom_ledEvent(idx, ledFunction, state) return 2 end diff --git a/scripts/speedlimiter.lua b/scripts/speedlimiter.lua index d579672..9382675 100644 --- a/scripts/speedlimiter.lua +++ b/scripts/speedlimiter.lua @@ -33,11 +33,9 @@ function spdLmtMethodEvent(idx) -- get global prefs GetSLIMaxInfo() - if mSpdLimitMethod >= 2 then - -- init table - initLedTable(mRPMLedTable, 0) - SetRPMLed("mRPMLedTable") - end + -- init table + initLedTable(mRPMLedTable, 0) + SetRPMLed("mRPMLedTable") if mNoBlink or (mSpdLimitMethod == 0) then -- speedlimiter led NOT blinking -- cgit v1.2.3