-- SLIMax Mgr Lua Script v3.3 -- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved. -- this script builds all Optimal ShiftPoints methods (OSP) -- last change by Zappadoc - 2013-10 function SetOSPFeedback(state) if mOSPLED1 > 6 then SetExtLed( (mOSPLED1 - 6), state) else SetWarnLed(mOSPLED1, state) end if mOSPLED2 > 6 then SetExtLed( (mOSPLED2 - 6), state) else SetWarnLed(mOSPLED2, state) end end -- SLI-M, SLI-PRO OSP Methods Event function ospMethodEvent(idx) mOSPMethod = idx -- OSP Limit default value is set in gear.lua if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end -- call custom script (this is a good place to overwrite gOSPLimit value) local result = custom_ospMethodEvent(mOSPMethod) -- 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 (this is a good place to overwrite gOSPLimit value) result = global_custom_ospMethodEvent(mOSPMethod) -- 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 -- check if globals initialized if isGlobalInitialized == 0 then isGlobalInitialized = 1 -- init InitGlobals() end -- get global prefs GetSLIMaxInfo() local led = "" -- get rpm local rpm = 0 rpm = GetCarInfo("rpm") if rpm == nil then rpm = 0 end -- get red zone value --local redZone = GetCarInfo("redzone") --if redZone == nil then redZone = 18000 end -- get current osp factor --local ospFactor = GetContextInfo("ospfactor") --if ospFactor == nil then ospFactor = 80 end -- get current gear local gear = 0 gear = GetCarInfo("gear") if gear == nil then gear = 0 end -- get max gear of current car -- Alternate way to calc max gear if not available in API -- Use a global mMaxGear and do the following -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4 maxGear = GetCarInfo("maxgear") if maxGear == nil then maxGear = 4 end -- skip if neutral or ==maxgear if gear <=0 or gear>=maxGear then -- do nothing return 1 end -- skip if first gear not allowed if not mOSPWithFirstGear and gear == 1 then -- do nothing return 1 end -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n") -- print(rpm .. " - " .. gOSPLimit) -- rpm > osplimit so activate shiftpoints leds if rpm > gOSPLimit then -- no blinking allowed if mNoBlink then -- set both leds SetOSPFeedback(1) else if GetTicks() > mOldOSPTickCount then mOSPBlink = mOSPBlink + 1 end if mOSPMethod <= 3 then -- methods 1 to 3 if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then if mOSPMethod ~= 3 then -- if not method 3 SetOSPFeedback(1) end if (mOSPMethod == 1) or (mOSPMethod == 3) then -- add blue leds blinking if method 1 or 3 for i = 9,12 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end SetRPMLed("mRPMLedTable") end end if mOSPBlink > (mOSPBlinkTime / 2) then SetOSPFeedback(0) if (mOSPMethod == 1) or (mOSPMethod == 3) then -- add blue leds blinking if method 1 or 3 for i = 9,12 do led = led.format("RPM%d",i) mRPMLedTable[led] = 0 end SetRPMLed("mRPMLedTable") end end end if mOSPMethod == 2 then -- add blue leds not blinking if method 2 for i = 9,12 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end SetRPMLed("mRPMLedTable") end end else -- bypass (give control to manager) return 1 end -- timebase if GetTicks() > mOldOSPTickCount then mOldOSPTickCount = GetTicks() + 10 end return 1 end -- G27 Methods Event function ospG27MethodEvent(idx) mOSPG27Method = idx -- OSP Limit default value is set in gear.lua if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end -- call custom script (this is a good place to overwrite gOSPLimit value) local result = custom_ospG27MethodEvent(mOSPG27Method) -- 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 (this is a good place to overwrite gOSPLimit value) result = global_custom_ospG27MethodEvent(mOSPG27Method) -- 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 -- check if globals initialized if isGlobalInitialized == 0 then isGlobalInitialized = 1 -- init InitGlobals() end -- get global prefs GetSLIMaxInfo() local led = "" -- get rpm local rpm = 0 rpm = GetCarInfo("rpm") if rpm == nil then rpm = 0 end -- get current gear local gear = 0 gear = GetCarInfo("gear") if gear == nil then gear = 0 end -- get max gear of current car -- Alternate way to calc max gear if not available in API -- Use a global mMaxGear and do the following -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4 maxGear = GetCarInfo("maxgear") if maxGear == nil then maxGear = 4 end -- skip if neutral or ==maxgear if gear <=0 or gear>=maxGear then -- do nothing return 1 end -- print("MAXGear: " .. gear.."/"..maxGear.." OSP: " .. mOSPG27Method .. " rpm: " .. rpm .. " - " .. gOSPLimit .. "\n") -- skip if first gear not allowed if not mOSPWithFirstGear and gear == 1 then -- do nothing return 1 end -- rpm > osplimit so activate shiftpoints leds if rpm > gOSPLimit then mG27Leds = 0 -- no blinking allowed if mNoBlink then -- set all leds mG27Leds = 0x1F; else if GetTicks() > mOldOSPTickCount then mOSPBlink = mOSPBlink + 1 end if mOSPG27Method <= 1 or mOSPG27Method > 3 then -- methods 1 all blinking if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then mG27Leds = 0x1F; end if mOSPBlink > (mOSPBlinkTime / 2) then mG27Leds = 0; end elseif mOSPG27Method == 2 then -- methods side blinking if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then mG27Leds = 0x3; end if mOSPBlink > (mOSPBlinkTime / 2) then mG27Leds = 0; end elseif mOSPG27Method == 3 then -- methods 3 center blinking if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then mG27Leds = 0x18; end if mOSPBlink > (mOSPBlinkTime / 2) then mG27Leds = 0; end end end SetG27Led(mG27Leds) else -- bypass (give control to manager) return 1 end -- timebase if GetTicks() > mOldOSPTickCount then mOldOSPTickCount = GetTicks() + 10 end return 1 end -- Fanatec OSP Methods Event function ospFanatecMethodEvent(idx) mOSPFanatecMethod = idx -- OSP Limit default value is set in gear.lua if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end -- call custom script (this is a good place to overwrite gOSPLimit value) local result = custom_ospFanatecMethodEvent(mOSPFanatecMethod) -- 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 (this is a good place to overwrite gOSPLimit value) result = global_custom_ospFanatecMethodEvent(mOSPFanatecMethod) -- 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 -- check if globals initialized if isGlobalInitialized == 0 then isGlobalInitialized = 1 -- init InitGlobals() end -- get global prefs GetSLIMaxInfo() local led = "" -- get rpm local rpm = 0 rpm = GetCarInfo("rpm") if rpm == nil then rpm = 0 end -- get current gear local gear = 0 gear = GetCarInfo("gear") if gear == nil then gear = 0 end -- get max gear of current car -- Alternate way to calc max gear if not available in API -- Use a global mMaxGear and do the following -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4 maxGear = GetCarInfo("maxgear") if maxGear == nil then maxGear = 4 end -- skip if neutral or ==maxgear if gear <=0 or gear>=maxGear then -- do nothing return 1 end -- skip if first gear not allowed if not mOSPWithFirstGear and gear == 1 then -- do nothing return 1 end -- rpm > osplimit so activate shiftpoints leds if rpm > gOSPLimit then -- no blinking allowed if mNoBlink then -- no led else if GetTicks() > mOldOSPTickCount then mOSPBlink = mOSPBlink + 1 end -- methods 1 to 4 if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then if (mOSPFanatecMethod <= 0) or mOSPFanatecMethod > 4 then -- blue leds blinking if method 0, ON for i = 6,8 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end elseif mOSPFanatecMethod == 1 then -- all leds blinking if method 1, ON for i = 0,8 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end elseif mOSPFanatecMethod == 2 then initLedTable(mRPMLedTable, 0) -- side leds blinking if method 2, ON mRPMLedTable["RPM0"] = 1 mRPMLedTable["RPM1"] = 1 mRPMLedTable["RPM7"] = 1 mRPMLedTable["RPM8"] = 1 elseif mOSPFanatecMethod == 3 then initLedTable(mRPMLedTable, 0) -- center leds blinking if method 3, ON mRPMLedTable["RPM3"] = 1 mRPMLedTable["RPM4"] = 1 mRPMLedTable["RPM5"] = 1 elseif mOSPFanatecMethod == 4 then initLedTable(mRPMLedTable, 0) -- side fixed if method 4, ON mRPMLedTable["RPM0"] = 1 mRPMLedTable["RPM1"] = 1 mRPMLedTable["RPM7"] = 1 mRPMLedTable["RPM8"] = 1 end SetRPMLed("mRPMLedTable") end if mOSPBlink > (mOSPBlinkTime / 2) then if (mOSPFanatecMethod <= 0) or mOSPFanatecMethod > 4 then -- blue leds blinking if method 0 , OFF for i = 6,8 do led = led.format("RPM%d",i) mRPMLedTable[led] = 0 end elseif mOSPFanatecMethod == 1 then -- all leds blinking if method 1, OFF for i = 0,8 do led = led.format("RPM%d",i) mRPMLedTable[led] = 0 end elseif mOSPFanatecMethod == 2 then initLedTable(mRPMLedTable, 0) -- side leds blinking if method 2, OFF mRPMLedTable["RPM0"] = 0 mRPMLedTable["RPM1"] = 0 mRPMLedTable["RPM7"] = 0 mRPMLedTable["RPM8"] = 0 elseif mOSPFanatecMethod == 3 then initLedTable(mRPMLedTable, 0) -- center leds blinking if method 3, OFF mRPMLedTable["RPM3"] = 0 mRPMLedTable["RPM4"] = 0 mRPMLedTable["RPM5"] = 0 elseif mOSPFanatecMethod == 4 then initLedTable(mRPMLedTable, 0) -- side fixed if method 4, ON mRPMLedTable["RPM0"] = 1 mRPMLedTable["RPM1"] = 1 mRPMLedTable["RPM7"] = 1 mRPMLedTable["RPM8"] = 1 end SetRPMLed("mRPMLedTable") end end else -- bypass (give control to manager) return 1 end -- timebase if GetTicks() > mOldOSPTickCount then mOldOSPTickCount = GetTicks() + 10 end return 1 end -- ================================================== -- SIM RACE Deluxe OSP Methods Event function ospSRDlxMethodEvent(idx) mOSPSRDlxMethod = idx -- OSP Limit default value is set in gear.lua if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end -- call custom script (this is a good place to overwrite gOSPLimit value) local result = custom_ospSRDlxMethodEvent(mOSPSRDlxMethod) -- 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 (this is a good place to overwrite gOSPLimit value) result = global_custom_ospSRDlxMethodEvent(mOSPSRDlxMethod) -- 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 -- check if globals initialized if isGlobalInitialized == 0 then isGlobalInitialized = 1 -- init InitGlobals() end -- get global prefs GetSLIMaxInfo() local led = "" -- get rpm local rpm = 0 rpm = GetCarInfo("rpm") if rpm == nil then rpm = 0 end -- get red zone value --local redZone = GetCarInfo("redzone") --if redZone == nil then redZone = 18000 end -- get current osp factor --local ospFactor = GetContextInfo("ospfactor") --if ospFactor == nil then ospFactor = 80 end -- get current gear local gear = 0 gear = GetCarInfo("gear") if gear == nil then gear = 0 end -- get max gear of current car -- Alternate way to calc max gear if not available in API -- Use a global mMaxGear and do the following -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4 maxGear = GetCarInfo("maxgear") if maxGear == nil then maxGear = 4 end -- skip if neutral or ==maxgear if gear <=0 or gear>=maxGear then -- do nothing return 1 end -- skip if first gear not allowed if not mOSPWithFirstGear and gear == 1 then -- do nothing return 1 end -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n") -- print(rpm .. " - " .. gOSPLimit) -- rpm > osplimit so activate shiftpoints leds if rpm > gOSPLimit then -- no blinking allowed if mNoBlink then -- set both leds SetOSPFeedback(1) else if GetTicks() > mOldOSPTickCount then mOSPBlink = mOSPBlink + 1 end if mOSPSRDlxMethod <= 3 then -- methods 1 to 3 if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then if mOSPSRDlxMethod ~= 3 then -- if not method 3 SetOSPFeedback(1) end if (mOSPSRDlxMethod == 1) or (mOSPSRDlxMethod == 3) then -- add blue leds blinking if method 1 or 3 for i = 7,9 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end SetRPMLed("mRPMLedTable") end end if mOSPBlink > (mOSPBlinkTime / 2) then SetOSPFeedback(0) if (mOSPSRDlxMethod == 1) or (mOSPSRDlxMethod == 3) then -- add blue leds blinking if method 1 or 3 for i = 7,9 do led = led.format("RPM%d",i) mRPMLedTable[led] = 0 end SetRPMLed("mRPMLedTable") end end end if mOSPSRDlxMethod == 2 then -- add blue leds not blinking if method 2 for i = 7,9 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end SetRPMLed("mRPMLedTable") end end else -- bypass (give control to manager) return 1 end -- timebase if GetTicks() > mOldOSPTickCount then mOldOSPTickCount = GetTicks() + 10 end return 1 end -- ================================================== -- SIM RACE F1 OSP Methods Event function ospSRF1MethodEvent(idx) mOSPSRF1Method = idx -- OSP Limit default value is set in gear.lua if gOSPLimit == nil or gOSPLimit == 0 then gOSPLimit = GetContextInfo("osplimitrpm") end -- call custom script (this is a good place to overwrite gOSPLimit value) local result = custom_ospSRF1MethodEvent(mOSPSRF1Method) -- 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 (this is a good place to overwrite gOSPLimit value) result = global_custom_ospSRF1MethodEvent(mOSPSRF1Method) -- 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 -- check if globals initialized if isGlobalInitialized == 0 then isGlobalInitialized = 1 -- init InitGlobals() end -- get global prefs GetSLIMaxInfo() local led = "" -- get rpm local rpm = 0 rpm = GetCarInfo("rpm") if rpm == nil then rpm = 0 end -- get red zone value --local redZone = GetCarInfo("redzone") --if redZone == nil then redZone = 18000 end -- get current osp factor --local ospFactor = GetContextInfo("ospfactor") --if ospFactor == nil then ospFactor = 80 end -- get current gear local gear = 0 gear = GetCarInfo("gear") if gear == nil then gear = 0 end -- get max gear of current car -- Alternate way to calc max gear if not available in API -- Use a global mMaxGear and do the following -- if gear > mMaxGear then mMaxGear = gear end local maxGear = 4 maxGear = GetCarInfo("maxgear") if maxGear == nil then maxGear = 4 end -- skip if neutral or ==maxgear if gear <=0 or gear>=maxGear then -- do nothing return 1 end -- skip if first gear not allowed if not mOSPWithFirstGear and gear == 1 then -- do nothing return 1 end -- print("OSP1: " .. mOSPLED1 .. " OSP2: " .. mOSPLED2 .."\n") -- print(rpm .. " - " .. gOSPLimit) -- rpm > osplimit so activate shiftpoints leds if rpm > gOSPLimit then -- no blinking allowed if mNoBlink then -- set both leds SetOSPFeedback(1) else if GetTicks() > mOldOSPTickCount then mOSPBlink = mOSPBlink + 1 end if mOSPSRF1Method <= 3 then -- methods 1 to 3 if mOSPBlink >= mOSPBlinkTime then mOSPBlink = 0 end if mOSPBlink <= (mOSPBlinkTime / 2) then if mOSPSRF1Method ~= 3 then -- if not method 3 SetOSPFeedback(1) end if (mOSPSRF1Method == 1) or (mOSPSRF1Method == 3) then -- add blue leds blinking if method 1 or 3 for i = 10,14 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end SetRPMLed("mRPMLedTable") end end if mOSPBlink > (mOSPBlinkTime / 2) then SetOSPFeedback(0) if (mOSPSRF1Method == 1) or (mOSPSRF1Method == 3) then -- add blue leds blinking if method 1 or 3 for i = 10,14 do led = led.format("RPM%d",i) mRPMLedTable[led] = 0 end SetRPMLed("mRPMLedTable") end end end if mOSPSRF1Method == 2 then -- add blue leds not blinking if method 2 for i = 10,14 do led = led.format("RPM%d",i) mRPMLedTable[led] = 1 end SetRPMLed("mRPMLedTable") end end else -- bypass (give control to manager) return 1 end -- timebase if GetTicks() > mOldOSPTickCount then mOldOSPTickCount = GetTicks() + 10 end return 1 end