summaryrefslogtreecommitdiff
path: root/scripts/shiftlights.lua
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/shiftlights.lua')
-rw-r--r--[-rwxr-xr-x]scripts/shiftlights.lua543
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