-- SLIMax Mgr Lua Script v3 -- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved. -- this script builds all speed/pit-limiter feedback methods -- last change by Zappadoc - 2013-02 -- 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() -- init table if idx >= 2 then 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) mSpdLimitMethod = idx -- call custom script local result = custom_spdLmtG27MethodEvent(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_spdLmtG27MethodEvent(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() -- init table mG27Leds = 0 if mNoBlink or mSpdLimitMethod == 0 then -- speedlimiter led NOT blinking mG27Leds = 0x1F 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 mG27Leds = 0x1F end if mSpdLmtBlink > (mBlinkTime / 2) then mG27Leds = 0 end elseif mSpdLimitMethod >= 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) mSpdLimitMethod = idx mFanatecSpdLmtText = " " -- call custom script local result = custom_spdLmtFanatecMethodEvent(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_spdLmtFanatecMethodEvent(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() -- init table initLedTable(mRPMLedTable, 0) SetFanatecLed("mRPMLedTable") if mNoBlink or mSpdLimitMethod == 0 then -- speedlimiter first rpm led NOT blinking SetFanatecDigitsAllowed(true) mRPMLedTable["RPM0"]= 1 SetFanatecLed("mRPMLedTable") elseif mSpdLimitMethod == 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 SetFanatecDigitsAllowed(true) -- if not mSpdLmtRPMLedOnly then -- SetFanatecDigitsAllowed(false) -- if mLimiterChar then -- SetFanatecGear("L", false) -- else -- SetFanatecDigits( "---" ) -- end -- end end if mSpdLmtBlink > (mBlinkTime / 2) then mRPMLedTable["RPM0"]= 0 -- if not mSpdLmtRPMLedOnly then -- SetFanatecDigitsAllowed(true) -- SetFanatecDigits( " " ) -- end end SetFanatecLed("mRPMLedTable") elseif mSpdLimitMethod == 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) SetFanatecDigitsAllowed(true) -- if not mSpdLmtRPMLedOnly then -- SetFanatecDigitsAllowed(false) -- if mLimiterChar then -- SetFanatecGear("L", false) -- else -- SetFanatecDigits( "---" ) -- end -- end end if mSpdLmtBlink > (mBlinkTime / 2) then initLedTable(mRPMLedTable, 0) -- if not mSpdLmtRPMLedOnly then -- SetFanatecDigitsAllowed(true) -- SetFanatecDigits( " " ) -- end end SetFanatecLed("mRPMLedTable") elseif mSpdLimitMethod == 3 or mSpdLimitMethod > 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 if not mSpdLmtRPMLedOnly then SetFanatecDigitsAllowed(false) if mLimiterChar then SetFanatecGear("L", false) else SetFanatecDigits( "---" ) end 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 if not mSpdLmtRPMLedOnly then SetFanatecDigitsAllowed(true) --SetFanatecDigits( " " ) end end SetFanatecLed("mRPMLedTable") elseif mSpdLimitMethod == 4 or mSpdLimitMethod == 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 mSpdLimitMethod == 4 then SetFanatecDigitsAllowed(true) else SetFanatecDigitsAllowed(false) SetFanatecDigits( " " ) end end if mSpdLmtBlink > (mBlinkTime / 2) then SetFanatecDigitsAllowed(false) SetFanatecDigits( "---" ) initLedTable(mRPMLedTable, 0) end SetFanatecLed("mRPMLedTable") elseif mSpdLimitMethod == 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 not mSpdLmtRPMLedOnly then SetFanatecDigitsAllowed(true) --SetFanatecDigits( " " ) --end end if mSpdLmtBlink > (mBlinkTime / 2) then SetFanatecDigitsAllowed(false) SetFanatecDigits( " " ) initLedTable(mRPMLedTable, 1) end SetFanatecLed("mRPMLedTable") else return 1 end -- timebase if GetTicks() > mOldTickCount then mOldTickCount = GetTicks() + 20 end return 1 end