diff options
Diffstat (limited to 'scripts/speedlimiter.lua')
-rw-r--r-- | scripts/speedlimiter.lua | 2036 |
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 |