summaryrefslogtreecommitdiff
path: root/scripts/speedlimiter.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/speedlimiter.lua')
-rw-r--r--scripts/speedlimiter.lua2036
1 files changed, 1018 insertions, 1018 deletions
diff --git a/scripts/speedlimiter.lua b/scripts/speedlimiter.lua
index 81bef78..d579672 100644
--- a/scripts/speedlimiter.lua
+++ b/scripts/speedlimiter.lua
@@ -1,1018 +1,1018 @@
--- SLIMax Mgr Lua Script v3.3.1
--- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
--- this script builds all speed/pit-limiter feedback methods
--- last change by Zappadoc - 2013-10
-
--- SLI-M, SLI-PRO speed limiter Methods
-function spdLmtMethodEvent(idx)
- mSpdLimitMethod = idx
- mLeftSpdLmtText = " "
- mRightSpdLmtText = " "
- -- call custom script
- local result = custom_spdLmtMethodEvent(mSpdLimitMethod)
- -- 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_spdLmtMethodEvent(mSpdLimitMethod)
- -- 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()
-
- 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
+-- SLIMax Mgr Lua Script v3.3.1
+-- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
+-- this script builds all speed/pit-limiter feedback methods
+-- last change by Zappadoc - 2013-10
+
+-- SLI-M, SLI-PRO speed limiter Methods
+function spdLmtMethodEvent(idx)
+ mSpdLimitMethod = idx
+ mLeftSpdLmtText = " "
+ mRightSpdLmtText = " "
+ -- call custom script
+ local result = custom_spdLmtMethodEvent(mSpdLimitMethod)
+ -- 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_spdLmtMethodEvent(mSpdLimitMethod)
+ -- 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()
+
+ 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