diff options
Diffstat (limited to 'scripts/shiftlights.lua')
-rw-r--r--[-rwxr-xr-x] | scripts/shiftlights.lua | 543 |
1 files changed, 505 insertions, 38 deletions
diff --git a/scripts/shiftlights.lua b/scripts/shiftlights.lua index 5e7f907..81e7f66 100755..100644 --- a/scripts/shiftlights.lua +++ b/scripts/shiftlights.lua @@ -1,7 +1,7 @@ --- SLIMax Mgr Lua Script v3 +-- SLIMax Mgr Lua Script v3.3.1 -- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved. -- this script builds all shiftlights methods --- last change by Zappadoc - 2013-02 +-- last change by Zappadoc - 2013-10 -- ============================================================================== -- utilities functions and methods @@ -309,23 +309,267 @@ function SideToCenterFanatec(rpm, redzone, p1, p2, p3, p4 ,p5 ) if rpm > (rz*p5) then mRPMLedTable.RPM4 = 1 end -- R end +-- -------------------------------------------- +-- -------------------------------------------- +-- SIM RACE Deluxe functions + +-- progressive method for SIM RACE Deluxe +function ProgressiveSRDlx(rpm, redzone, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) + local rz = redzone / 10.0 + if rpm > (rz*p1) then mRPMLedTable.RPM0 = 1 end + if rpm > (rz*p2) then mRPMLedTable.RPM1 = 1 end + if rpm > (rz*p3) then mRPMLedTable.RPM2 = 1 end + if rpm > (rz*p4) then mRPMLedTable.RPM3 = 1 end + if rpm > (rz*p5) then mRPMLedTable.RPM4 = 1 end + if rpm > (rz*p6) then mRPMLedTable.RPM5 = 1 end + if rpm > (rz*p7) then mRPMLedTable.RPM6 = 1 end + if rpm > (rz*p8) then mRPMLedTable.RPM7 = 1 end + if rpm > (rz*p9) then mRPMLedTable.RPM8 = 1 end + if rpm > (rz*p9) then mRPMLedTable.RPM9 = 1 end +end + +-- percentage method for SIM RACE Deluxe +function PercentageSRDlx(rpm, redzone, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) + local onePercent = redzone / 100 + if p1>0 and rpm >= (p1*onePercent) then mRPMLedTable.RPM0 = 1 end -- y + if p2>0 and rpm >= (p2*onePercent) then mRPMLedTable.RPM1 = 1 end -- y + if p3>0 and rpm >= (p3*onePercent) then mRPMLedTable.RPM2 = 1 end -- y + if p4>0 and rpm >= (p4*onePercent) then mRPMLedTable.RPM3 = 1 end -- r + if p5>0 and rpm >= (p5*onePercent) then mRPMLedTable.RPM4 = 1 end -- r + if p6>0 and rpm >= (p6*onePercent) then mRPMLedTable.RPM5 = 1 end -- r + if p7>0 and rpm >= (p7*onePercent) then mRPMLedTable.RPM6 = 1 end -- r + if p8>0 and rpm >= (p8*onePercent) then mRPMLedTable.RPM7 = 1 end -- b + if p9>0 and rpm >= (p9*onePercent) then mRPMLedTable.RPM8 = 1 end -- b + if p9>0 and rpm >= (p9*onePercent) then mRPMLedTable.RPM9 = 1 end -- b +end + +-- fixed rpm method for SIM RACE Deluxe (NOT RECOMMENDED) +function RpmSRDlx(rpm, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 ) + if rpm > p1 then mRPMLedTable.RPM0 = 1 end + if rpm > p2 then mRPMLedTable.RPM1 = 1 end + if rpm > p3 then mRPMLedTable.RPM2 = 1 end + + if rpm > p4 then mRPMLedTable.RPM3 = 1 end + if rpm > p5 then mRPMLedTable.RPM4 = 1 end + if rpm > p6 then mRPMLedTable.RPM5 = 1 end + if rpm > p7 then mRPMLedTable.RPM6 = 1 end + + if rpm > p8 then mRPMLedTable.RPM7 = 1 end + if rpm > p9 then mRPMLedTable.RPM8 = 1 end + if rpm > p10 then mRPMLedTable.RPM9 = 1 end + +end + +-- alternate yellow, red and blue method for SIM RACE Deluxe +function AlternateSRDlx(rpm, redzone, step1, step2, step3) + + local rz = redzone / 10.0 + if rpm > (rz*step1) then + mRPMLedTable.RPM0 = 1 -- y + mRPMLedTable.RPM1 = 1 -- y + mRPMLedTable.RPM2 = 1 -- y + end + if rpm > (rz*step2) then + mRPMLedTable.RPM3 = 1 -- r + mRPMLedTable.RPM4 = 1 -- r + mRPMLedTable.RPM5 = 1 -- r + mRPMLedTable.RPM6 = 1 -- r + end + if rpm > (rz*step3) then + mRPMLedTable.RPM7 = 1 -- b + mRPMLedTable.RPM8 = 1 -- b + mRPMLedTable.RPM9 = 1 -- b + end +end + +-- shiftlights method from side to center for SIM RACE Deluxe +function SideToCenterSRDlx(rpm, redzone, p1, p2, p3, p4 ,p5 ) + + local rz = redzone / 100 + + -- side to center custom + if rpm > (rz*p1) then mRPMLedTable.RPM0 = 1 end -- y + if rpm > (rz*p1) then mRPMLedTable.RPM9 = 1 end -- B + + if rpm > (rz*p2) then mRPMLedTable.RPM1 = 1 end -- y + if rpm > (rz*p2) then mRPMLedTable.RPM8 = 1 end -- B + + if rpm > (rz*p3) then mRPMLedTable.RPM2 = 1 end -- y + if rpm > (rz*p3) then mRPMLedTable.RPM7 = 1 end -- B + + if rpm > (rz*p4) then mRPMLedTable.RPM3 = 1 end -- R + if rpm > (rz*p4) then mRPMLedTable.RPM6 = 1 end -- R + + if rpm > (rz*p5) then mRPMLedTable.RPM4 = 1 end -- R + if rpm > (rz*p5) then mRPMLedTable.RPM5 = 1 end -- R +end + +-- -------------------------------------------- +-- -------------------------------------------- +-- SIM RACE F1 functions + + +-- shiftlights method from side to center +function SideToCenterSRF1(rpm, redzone, p1, p2, p3, p4 ,p5 ,p6 ,p7, p8) + + local rz = redzone / 100 + + -- side to center custom + if rpm > (rz*p1) then mRPMLedTable.RPM0 = 1 end -- G + if rpm > (rz*p1) then mRPMLedTable.RPM14 = 1 end -- B + + if rpm > (rz*p2) then mRPMLedTable.RPM1 = 1 end -- G + if rpm > (rz*p2) then mRPMLedTable.RPM13 = 1 end -- B + + if rpm > (rz*p3) then mRPMLedTable.RPM2 = 1 end -- G + if rpm > (rz*p3) then mRPMLedTable.RPM12 = 1 end -- B + if rpm > (rz*p4) then mRPMLedTable.RPM3 = 1 end -- G + if rpm > (rz*p4) then mRPMLedTable.RPM11 = 1 end -- B + + if rpm > (rz*p5) then mRPMLedTable.RPM4 = 1 end -- R + if rpm > (rz*p5) then mRPMLedTable.RPM10 = 1 end -- R + + if rpm > (rz*p6) then mRPMLedTable.RPM5 = 1 end -- R + if rpm > (rz*p6) then mRPMLedTable.RPM9 = 1 end -- R + + if rpm > (rz*p7) then mRPMLedTable.RPM6 = 1 end -- R + if rpm > (rz*p7) then mRPMLedTable.RPM8 = 1 end -- R + + if rpm > (rz*p8) then mRPMLedTable.RPM7 = 1 end -- R + +end + +-- progressive method +function ProgressiveSRF1(rpm, redzone, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) + local rz = redzone / 15 + -- print("progessive") + if rpm > (rz*p1) then mRPMLedTable.RPM0 = 1 end + if rpm > (rz*p2) then mRPMLedTable.RPM1 = 1 end + if rpm > (rz*p3) then mRPMLedTable.RPM2 = 1 end + if rpm > (rz*p4) then mRPMLedTable.RPM3 = 1 end + if rpm > (rz*p5) then mRPMLedTable.RPM4 = 1 end + + if rpm > (rz*p6) then mRPMLedTable.RPM5 = 1 end + if rpm > (rz*p7) then mRPMLedTable.RPM6 = 1 end + if rpm > (rz*p8) then mRPMLedTable.RPM7 = 1 end + if rpm > (rz*p9) then mRPMLedTable.RPM8 = 1 end + if rpm > (rz*p10) then mRPMLedTable.RPM9 = 1 end + + if rpm > (rz*p11) then mRPMLedTable.RPM10 = 1 end + if rpm > (rz*p12) then mRPMLedTable.RPM11 = 1 end + if rpm > (rz*p13) then mRPMLedTable.RPM12 = 1 end + if rpm > (rz*p14) then mRPMLedTable.RPM13 = 1 end + if rpm > (rz*p15) then mRPMLedTable.RPM14 = 1 end + +end + +-- alternate green, red and blue method +function AlternateSRF1(rpm, redzone, step1, step2, step3) + + local rz = redzone / 15 + if rpm > (rz*step1) then + mRPMLedTable.RPM0 = 1 -- G + mRPMLedTable.RPM1 = 1 -- G + mRPMLedTable.RPM2 = 1 -- G + mRPMLedTable.RPM3 = 1 -- G + mRPMLedTable.RPM4 = 1 -- R + end + if rpm > (rz*step2) then + mRPMLedTable.RPM5 = 1 -- R + mRPMLedTable.RPM6 = 1 -- R + mRPMLedTable.RPM7 = 1 -- R + mRPMLedTable.RPM8 = 1 -- R + mRPMLedTable.RPM9 = 1 -- B + end + if rpm > (rz*step3) then + mRPMLedTable.RPM10 = 1 -- B + mRPMLedTable.RPM11 = 1 -- B + mRPMLedTable.RPM12 = 1 -- B + mRPMLedTable.RPM13 = 1 -- B + mRPMLedTable.RPM14 = 1 -- B + end +end + +function PercentageSRF1(rpm, redzone, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) + local onePercent = redzone / 100 + if p1>0 and rpm >= (p1*onePercent) then mRPMLedTable.RPM0 = 1 end -- G + if p2>0 and rpm >= (p2*onePercent) then mRPMLedTable.RPM1 = 1 end -- G + if p3>0 and rpm >= (p3*onePercent) then mRPMLedTable.RPM2 = 1 end -- G + if p4>0 and rpm >= (p4*onePercent) then mRPMLedTable.RPM3 = 1 end -- G + if p5>0 and rpm >= (p5*onePercent) then mRPMLedTable.RPM4 = 1 end -- G + if p6>0 and rpm >= (p6*onePercent) then mRPMLedTable.RPM5 = 1 end -- R + if p7>0 and rpm >= (p7*onePercent) then mRPMLedTable.RPM6 = 1 end -- R + if p8>0 and rpm >= (p8*onePercent) then mRPMLedTable.RPM7 = 1 end -- R + if p9>0 and rpm >= (p9*onePercent) then mRPMLedTable.RPM8 = 1 end -- R + if p10>0 and rpm >= (p10*onePercent) then mRPMLedTable.RPM9 = 1 end -- R + if p11>0 and rpm >= (p11*onePercent) then mRPMLedTable.RPM10 = 1 end -- B + if p12>0 and rpm >= (p12*onePercent) then mRPMLedTable.RPM11 = 1 end -- B + if p13>0 and rpm >= (p13*onePercent) then mRPMLedTable.RPM12 = 1 end -- B + if p14>0 and rpm >= (p14*onePercent) then mRPMLedTable.RPM13 = 1 end -- B + if p15>0 and rpm >= (p15*onePercent) then mRPMLedTable.RPM14 = 1 end -- B +end + +-- fixed rpm method, set rpm for each led (NOT RECOMMENDED) +function RpmSRF1(rpm, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) + if p1>0 and rpm >= p1 then mRPMLedTable.RPM0 = 1 end -- G + if p2>0 and rpm >= p2 then mRPMLedTable.RPM1 = 1 end -- G + if p3>0 and rpm >= p3 then mRPMLedTable.RPM2 = 1 end -- G + if p4>0 and rpm >= p4 then mRPMLedTable.RPM3 = 1 end -- G + if p5>0 and rpm >= p5 then mRPMLedTable.RPM4 = 1 end -- G + if p6>0 and rpm >= p6 then mRPMLedTable.RPM5 = 1 end -- R + if p7>0 and rpm >= p7 then mRPMLedTable.RPM6 = 1 end -- R + if p8>0 and rpm >= p8 then mRPMLedTable.RPM7 = 1 end -- R + if p9>0 and rpm >= p9 then mRPMLedTable.RPM8 = 1 end -- R + if p10>0 and rpm >= p10 then mRPMLedTable.RPM9 = 1 end -- R + if p11>0 and rpm >= p11 then mRPMLedTable.RPM10 = 1 end -- B + if p12>0 and rpm >= p12 then mRPMLedTable.RPM11 = 1 end -- B + if p13>0 and rpm >= p13 then mRPMLedTable.RPM12 = 1 end -- B + if p14>0 and rpm >= p14 then mRPMLedTable.RPM13 = 1 end -- B + if p15>0 and rpm >= p15 then mRPMLedTable.RPM14 = 1 end -- B +end + +-- progressive method but with rpm value for eah led +function ProgressiveFixedSRF1(rpm, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 ) + -- progressive method with thresholds as parameters + if rpm > p1 then mRPMLedTable.RPM0 = 1 end + if rpm > p2 then mRPMLedTable.RPM1 = 1 end + if rpm > p3 then mRPMLedTable.RPM2 = 1 end + if rpm > p4 then mRPMLedTable.RPM3 = 1 end + + if rpm > p5 then mRPMLedTable.RPM4 = 1 end + if rpm > p6 then mRPMLedTable.RPM5 = 1 end + if rpm > p7 then mRPMLedTable.RPM6 = 1 end + if rpm > p8 then mRPMLedTable.RPM7 = 1 end + if rpm > p9 then mRPMLedTable.RPM8 = 1 end + + if rpm > p10 then mRPMLedTable.RPM9 = 1 end + if rpm > p11 then mRPMLedTable.RPM10 = 1 end + if rpm > p12 then mRPMLedTable.RPM11 = 1 end + if rpm > p13 then mRPMLedTable.RPM12 = 1 end + if rpm > p14 then mRPMLedTable.RPM13 = 1 end + if rpm > p15 then mRPMLedTable.RPM14 = 1 end +end + + +-- ============================================================================== -- ============================================================================== -- SLI-M, SLI-PRO ShiftLights Methods Event function shiftLightsMethodEvent(idx) + mShiftlightsMethodIndex = idx -- get red zone (red zone default value is initialized in gear.lua ) if gRedZone == nil or gRedZone == 0 then gRedZone = GetCarInfo("redzone") end -- call custom script - local result = custom_shiftLightsMethodEvent(idx) + local result = custom_shiftLightsMethodEvent(mShiftlightsMethodIndex) -- 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_shiftLightsMethodEvent(idx) + result = global_custom_shiftLightsMethodEvent(mShiftlightsMethodIndex) -- 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 @@ -336,30 +580,36 @@ function shiftLightsMethodEvent(idx) rpm = GetCarInfo("rpm") if rpm == nil then rpm = 0 end - -- init leds (see global.lua) initLedTable(mRPMLedTable, 0) - if idx == 0 then + if GetContextInfo("lastgearnorpm") and GetCarInfo("gear") == 7 then + -- no shiftlights on last gear + local tName = "mRPMLedTable" + SetRPMLed(tName) + return 1 + end + + if mShiftlightsMethodIndex == 0 then -- progressive method 0 ProgressiveSLI(rpm, gRedZone, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 12.8, 12.98 ) - elseif idx == 1 then + elseif mShiftlightsMethodIndex == 1 then -- alternate method 1 AlternateSLI(rpm, gRedZone, 11.0, 12.0, 12.9) - elseif idx == 2 then + elseif mShiftlightsMethodIndex == 2 then -- percentage method 2 PercentageSLI(rpm, gRedZone, RPM_PERCENT_VALUES[1], RPM_PERCENT_VALUES[2], RPM_PERCENT_VALUES[3], RPM_PERCENT_VALUES[4], RPM_PERCENT_VALUES[5], RPM_PERCENT_VALUES[6], RPM_PERCENT_VALUES[7], RPM_PERCENT_VALUES[8], RPM_PERCENT_VALUES[9], RPM_PERCENT_VALUES[10], RPM_PERCENT_VALUES[11], RPM_PERCENT_VALUES[12], RPM_PERCENT_VALUES[13] ) - elseif idx == 3 then + elseif mShiftlightsMethodIndex == 3 then -- abs rpm method 3 (not recommended) RpmSLI(rpm, RPM_ABSOLUTE_VALUES[1], RPM_ABSOLUTE_VALUES[2], RPM_ABSOLUTE_VALUES[3], RPM_ABSOLUTE_VALUES[4], RPM_ABSOLUTE_VALUES[5], RPM_ABSOLUTE_VALUES[6], RPM_ABSOLUTE_VALUES[7], RPM_ABSOLUTE_VALUES[8], RPM_ABSOLUTE_VALUES[9], RPM_ABSOLUTE_VALUES[10], RPM_ABSOLUTE_VALUES[11], RPM_ABSOLUTE_VALUES[12], RPM_ABSOLUTE_VALUES[13] ) - elseif idx == 4 then + elseif mShiftlightsMethodIndex == 4 then -- side to center method 4 SideToCenterSLI(rpm, gRedZone, 94.5, 95, 96, 97 ,98 ,99 ,99.5 ) - elseif idx == 5 then + elseif mShiftlightsMethodIndex == 5 then -- KERS + RPM -- get kers value @@ -376,7 +626,7 @@ function shiftLightsMethodEvent(idx) if k_percent >= 50 then mRPMLedTable.RPM2 = 1 end if k_percent >= 75 then mRPMLedTable.RPM3 = 1 end - elseif idx == 6 then + elseif mShiftlightsMethodIndex == 6 then -- Revers KERS + RPM -- get kers value @@ -406,19 +656,19 @@ end -- BU0710 ShiftLights Methods Event function shiftLightsBU0710Event(idx) - + mShiftlightsBU0710MethodIndex = idx -- get red zone (red zone default value is initialized in gear.lua ) if gRedZone == nil or gRedZone == 0 then gRedZone = GetCarInfo("redzone") end -- call custom script - local result = custom_shiftLightsBU0710Event(idx) + local result = custom_shiftLightsBU0710Event(mShiftlightsBU0710MethodIndex) -- 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_shiftLightsBU0710Event(idx) + result = global_custom_shiftLightsBU0710Event(mShiftlightsBU0710MethodIndex) -- 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 @@ -429,22 +679,29 @@ function shiftLightsBU0710Event(idx) -- init leds (see global.lua) mBU0710Leds = 0 + + if GetContextInfo("lastgearnorpm") and GetCarInfo("gear") == 7 then + -- no shiftlights on last gear + SetBU0710Led(mBU0710Leds) + return 1 + end - if (idx <= 1) or (idx >= 4) then + if (mShiftlightsBU0710MethodIndex <= 1) or (mShiftlightsBU0710MethodIndex >= 4) then -- progressive methods 1 or 4 ProgressiveBU0710(rpm, gRedZone, 4.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.3, 9.5, 9.7, 9.9 ) - elseif (idx == 2) then + elseif (mShiftlightsBU0710MethodIndex == 2) then -- percentage method 2 PercentageBU0710(rpm, gRedZone, 84, 88, 90, 92, 93, 94, 95, 96, 97, 98, 99 ) - elseif (idx == 3) then + elseif (mShiftlightsBU0710MethodIndex == 3) then -- abs method 3 (not recommended) RpmBU0710(rpm, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18675 ) else return 1 end + SetBU0710Led(mBU0710Leds) return 1 end @@ -453,19 +710,19 @@ end -- G27 ShiftLights Methods Event function shiftLightsG27LedsMethodEvent(idx) + mShiftlightsG27MethodIndex = idx -- get red zone (red zone default value is initialized in gear.lua ) - if gRedZone == nil or gRedZone == 0 then gRedZone = GetCarInfo("redzone") end -- call custom script - local result = custom_shiftLightsG27LedsMethodEvent(idx) + local result = custom_shiftLightsG27LedsMethodEvent(mShiftlightsG27MethodIndex) -- 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_shiftLightsG27LedsMethodEvent(idx) + result = global_custom_shiftLightsG27LedsMethodEvent(mShiftlightsG27MethodIndex) -- 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 @@ -476,23 +733,30 @@ function shiftLightsG27LedsMethodEvent(idx) -- init leds (see global.lua) mG27Leds = 0 - - if idx <= 0 or idx >= 3 then + + if GetContextInfo("lastgearnorpm") and GetCarInfo("gear") == 7 then + -- no shiftlights on last gear + SetG27Led(mG27Leds) + return 1 + end + + if mShiftlightsG27MethodIndex <= 0 or mShiftlightsG27MethodIndex >= 3 then -- progressive methods 1 ProgressiveG27(rpm, gRedZone, 2.0, 2.5, 3.5, 4.5, 4.9 ) - elseif idx == 1 then + elseif mShiftlightsG27MethodIndex == 1 then -- percentage method 2 --PercentageG27(rpm, gRedZone, 88, 92, 95, 97, 99 ) PercentageG27(rpm, gRedZone, RPM_PERCENT_VALUES[1], RPM_PERCENT_VALUES[2], RPM_PERCENT_VALUES[3], RPM_PERCENT_VALUES[4], RPM_PERCENT_VALUES[5] ) - elseif idx == 2 then + elseif mShiftlightsG27MethodIndex == 2 then -- abs method 3 (not recommended) RpmG27(rpm, RPM_ABSOLUTE_VALUES[1], RPM_ABSOLUTE_VALUES[2], RPM_ABSOLUTE_VALUES[3], RPM_ABSOLUTE_VALUES[4], RPM_ABSOLUTE_VALUES[5] ) else return 1 end + SetG27Led(mG27Leds) return 1 end @@ -501,19 +765,19 @@ end -- Fanatec ShiftLights Methods Event function shiftLightsFanatecMethodEvent(idx) - -- get red zone (red zone default value is initialized in gear.lua ) - + mShiftlightsFanatecMethodIndex = idx + -- get red zone (red zone default value is initialized in gear.lua ) if gRedZone == nil or gRedZone == 0 then gRedZone = GetCarInfo("redzone") end -- call custom script - local result = custom_shiftLightsFanatecMethodEvent(idx) + local result = custom_shiftLightsFanatecMethodEvent(mShiftlightsFanatecMethodIndex) -- 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_shiftLightsFanatecMethodEvent(idx) + result = global_custom_shiftLightsFanatecMethodEvent(mShiftlightsFanatecMethodIndex) -- 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 @@ -524,28 +788,35 @@ function shiftLightsFanatecMethodEvent(idx) -- init leds (see global.lua) initLedTable(mRPMLedTable, 0) - - if (idx < 1) or (idx > 6) then + + if GetContextInfo("lastgearnorpm") and GetCarInfo("gear") == 7 then + -- no shiftlights on last gear + local tName = "mRPMLedTable" + SetRPMLed(tName) + return 1 + end + + if (mShiftlightsFanatecMethodIndex < 1) or (mShiftlightsFanatecMethodIndex > 6) then -- progressive methods 0 ProgressiveFanatec(rpm, gRedZone, 6.0, 6.5, 7.0, 7.5, 8.0, 8.3, 8.5, 8.7, 8.9 ) - elseif idx == 1 then + elseif mShiftlightsFanatecMethodIndex == 1 then -- alternate method 1 AlternateFanatec(rpm, gRedZone, 7.0, 8.0, 8.9) - elseif (idx == 2) then + elseif (mShiftlightsFanatecMethodIndex == 2) then -- percentage method 2 PercentageFanatec(rpm, gRedZone, RPM_PERCENT_VALUES[1], RPM_PERCENT_VALUES[2], RPM_PERCENT_VALUES[3], RPM_PERCENT_VALUES[4], RPM_PERCENT_VALUES[5], RPM_PERCENT_VALUES[6], RPM_PERCENT_VALUES[7], RPM_PERCENT_VALUES[8], RPM_PERCENT_VALUES[9] ) - elseif (idx == 3) then + elseif (mShiftlightsFanatecMethodIndex == 3) then -- abs method 3 (not recommended) RpmFanatec(rpm, RPM_ABSOLUTE_VALUES[1], RPM_ABSOLUTE_VALUES[2], RPM_ABSOLUTE_VALUES[3], RPM_ABSOLUTE_VALUES[4], RPM_ABSOLUTE_VALUES[5], RPM_ABSOLUTE_VALUES[6], RPM_ABSOLUTE_VALUES[7], RPM_ABSOLUTE_VALUES[8], RPM_ABSOLUTE_VALUES[9] ) - elseif idx == 4 then + elseif mShiftlightsFanatecMethodIndex == 4 then -- side to center method 4 SideToCenterFanatec(rpm, gRedZone, 96, 97 ,98 ,99 ,99.5 ) - elseif idx == 5 then + elseif mShiftlightsFanatecMethodIndex == 5 then -- KERS + RPM -- get kers value, see function in global.lua @@ -562,7 +833,7 @@ function shiftLightsFanatecMethodEvent(idx) if k_percent >= 33 then mRPMLedTable.RPM1 = 1 end if k_percent >= 66 then mRPMLedTable.RPM2 = 1 end - elseif idx == 6 then + elseif mShiftlightsFanatecMethodIndex == 6 then -- Revers KERS + RPM -- get kers value, see function in global.lua @@ -583,10 +854,206 @@ function shiftLightsFanatecMethodEvent(idx) return 1 end + local tName = "mRPMLedTable" + SetRPMLed(tName) + return 1 +end + + + + -- SIM RACE Deluxe ShiftLights Methods Event +function shiftLightsSRDlxMethodEvent(idx) + mShiftlightsSRDlxMethodIndex = idx + -- get red zone (red zone default value is initialized in gear.lua ) + if gRedZone == nil or gRedZone == 0 then gRedZone = GetCarInfo("redzone") end + + -- call custom script + local result = custom_shiftLightsSRDlxMethodEvent(mShiftlightsSRDlxMethodIndex) + -- 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_shiftLightsSRDlxMethodEvent(mShiftlightsSRDlxMethodIndex) + -- 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 + -- get rpm + local rpm = 0 + rpm = GetCarInfo("rpm") + if rpm == nil then rpm = 0 end + + -- init leds (see global.lua) + initLedTable(mRPMLedTable, 0) + if GetContextInfo("lastgearnorpm") and GetCarInfo("gear") == 7 then + -- no shiftlights on last gear + local tName = "mRPMLedTable" + SetRPMLed(tName) + return 1 + end + + if mShiftlightsSRDlxMethodIndex == 0 then + -- progressive method 0 + ProgressiveSRDlx(rpm, gRedZone, 5, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 9.8, 9.98 ) + + elseif mShiftlightsSRDlxMethodIndex == 1 then + -- alternate method 1 + AlternateSRDlx(rpm, gRedZone, 7.0, 8.0, 9.9) + + elseif mShiftlightsSRDlxMethodIndex == 2 then + -- percentage method 2 + PercentageSRDlx(rpm, gRedZone, RPM_PERCENT_VALUES[1], RPM_PERCENT_VALUES[2], RPM_PERCENT_VALUES[3], RPM_PERCENT_VALUES[4], RPM_PERCENT_VALUES[5], RPM_PERCENT_VALUES[6], RPM_PERCENT_VALUES[7], RPM_PERCENT_VALUES[8], RPM_PERCENT_VALUES[9], RPM_PERCENT_VALUES[10] ) + + elseif mShiftlightsSRDlxMethodIndex == 3 then + -- abs rpm method 3 (not recommended) + RpmSRDlx(rpm, RPM_ABSOLUTE_VALUES[1], RPM_ABSOLUTE_VALUES[2], RPM_ABSOLUTE_VALUES[3], RPM_ABSOLUTE_VALUES[4], RPM_ABSOLUTE_VALUES[5], RPM_ABSOLUTE_VALUES[6], RPM_ABSOLUTE_VALUES[7], RPM_ABSOLUTE_VALUES[8], RPM_ABSOLUTE_VALUES[9], RPM_ABSOLUTE_VALUES[10] ) + + elseif mShiftlightsSRDlxMethodIndex == 4 then + -- side to center method 4 + SideToCenterSRDlx(rpm, gRedZone, 96, 97 ,98 ,99 ,99.5 ) + + elseif mShiftlightsSRDlxMethodIndex == 5 then + -- KERS + RPM + + -- get kers value + local k_percent = GetKersPercent() + + -- without first 4 green leds + AlternateSRDlx(rpm, gRedZone, 100, 8.6, 9.9) + + -- KERS feedback on green leds + -- print("KERS: " .. kers_level .. " - " .. k_percent .. "\n") + + if k_percent > 0 then mRPMLedTable.RPM0 = 1 end + if k_percent >= 33 then mRPMLedTable.RPM1 = 1 end + if k_percent >= 66 then mRPMLedTable.RPM2 = 1 end + + elseif mShiftlightsSRDlxMethodIndex == 6 then + -- Revers KERS + RPM + + -- get kers value + local k_percent = GetKersPercent() + + -- without first 4 green leds + AlternateSRDlx(rpm, gRedZone, 0, 8.6, 9.9) + + -- KERS feedback on green leds + -- print("KERS: " .. kers_level .. " - " .. k_percent .. "\n") + + if k_percent > 0 then mRPMLedTable.RPM2 = 0 end + if k_percent >= 33 then mRPMLedTable.RPM1 = 0 end + if k_percent >= 66 then mRPMLedTable.RPM0 = 0 end + + else + return 1 + end + local tName = "mRPMLedTable" - SetFanatecLed(tName) + SetRPMLed(tName) return 1 end + + -- SIM RACE F1 ShiftLights Methods Event +function shiftLightsSRF1MethodEvent(idx) + mShiftlightsSRF1MethodIndex = idx + -- get red zone (red zone default value is initialized in gear.lua ) + if gRedZone == nil or gRedZone == 0 then gRedZone = GetCarInfo("redzone") end + + -- call custom script + local result = custom_shiftLightsSRF1MethodEvent(mShiftlightsSRF1MethodIndex) + -- 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_shiftLightsSRF1MethodEvent(mShiftlightsSRF1MethodIndex) + -- 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 + + -- get rpm + local rpm = 0 + rpm = GetCarInfo("rpm") + if rpm == nil then rpm = 0 end + + -- init leds (see global.lua) + initLedTable(mRPMLedTable, 0) + + if GetContextInfo("lastgearnorpm") and GetCarInfo("gear") == 7 then + -- no shiftlights on last gear + local tName = "mRPMLedTable" + SetRPMLed(tName) + return 1 + end + + if mShiftlightsSRF1MethodIndex == 0 then + -- progressive method 0 + ProgressiveSRF1(rpm, gRedZone, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 14.5, 14.99 ) + + elseif mShiftlightsSRF1MethodIndex == 1 then + -- alternate method 1 + AlternateSRF1(rpm, gRedZone, 12.0, 13.0, 14.9) + + elseif mShiftlightsSRF1MethodIndex == 2 then + -- percentage method 2 + PercentageSRF1(rpm, gRedZone, RPM_PERCENT_VALUES[1], RPM_PERCENT_VALUES[2], RPM_PERCENT_VALUES[3], RPM_PERCENT_VALUES[4], RPM_PERCENT_VALUES[5], RPM_PERCENT_VALUES[6], RPM_PERCENT_VALUES[7], RPM_PERCENT_VALUES[8], RPM_PERCENT_VALUES[9], RPM_PERCENT_VALUES[10], RPM_PERCENT_VALUES[11], RPM_PERCENT_VALUES[12], RPM_PERCENT_VALUES[13], RPM_PERCENT_VALUES[14], RPM_PERCENT_VALUES[15] ) + + elseif mShiftlightsSRF1MethodIndex == 3 then + -- abs rpm method 3 (not recommended) + RpmSRF1(rpm, RPM_ABSOLUTE_VALUES[1], RPM_ABSOLUTE_VALUES[2], RPM_ABSOLUTE_VALUES[3], RPM_ABSOLUTE_VALUES[4], RPM_ABSOLUTE_VALUES[5], RPM_ABSOLUTE_VALUES[6], RPM_ABSOLUTE_VALUES[7], RPM_ABSOLUTE_VALUES[8], RPM_ABSOLUTE_VALUES[9], RPM_ABSOLUTE_VALUES[10], RPM_PERCENT_VALUES[11], RPM_PERCENT_VALUES[12], RPM_PERCENT_VALUES[13], RPM_PERCENT_VALUES[14], RPM_PERCENT_VALUES[15] ) + + elseif mShiftlightsSRF1MethodIndex == 4 then + -- side to center method 4 + SideToCenterSRF1(rpm, gRedZone, 94.5, 95, 96, 97 ,98 ,99 ,99.5 ) + + elseif mShiftlightsSRF1MethodIndex == 5 then + -- KERS + RPM + + -- get kers value + local k_percent = GetKersPercent() + + -- without first 4 green leds + AlternateSRF1(rpm, gRedZone, 100, 13.6, 14.9) + + -- KERS feedback on green leds + -- print("KERS: " .. kers_level .. " - " .. k_percent .. "\n") + + if k_percent > 0 then mRPMLedTable.RPM0 = 1 end + if k_percent >= 20 then mRPMLedTable.RPM1 = 1 end + if k_percent >= 40 then mRPMLedTable.RPM2 = 1 end + if k_percent >= 60 then mRPMLedTable.RPM3 = 1 end + if k_percent >= 80 then mRPMLedTable.RPM4 = 1 end + + elseif mShiftlightsSRF1MethodIndex == 6 then + -- Revers KERS + RPM + + -- get kers value + local k_percent = GetKersPercent() + + -- without first 4 green leds + AlternateSRF1(rpm, gRedZone, 0, 13.6, 14.9) + + -- KERS feedback on green leds + -- print("KERS: " .. kers_level .. " - " .. k_percent .. "\n") + + if k_percent > 0 then mRPMLedTable.RPM4 = 0 end + if k_percent >= 20 then mRPMLedTable.RPM3 = 0 end + if k_percent >= 40 then mRPMLedTable.RPM2 = 0 end + if k_percent >= 60 then mRPMLedTable.RPM1 = 0 end + if k_percent >= 80 then mRPMLedTable.RPM0 = 0 end + + else + return 1 + end + + local tName = "mRPMLedTable" + SetRPMLed(tName) + return 1 +end |