From 17ef33a3fc62a31565193320f1f5583077403b19 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Fri, 15 Nov 2013 10:09:12 +0100 Subject: SliMax Manager 3.++ --- scripts/global.lua | 348 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 214 insertions(+), 134 deletions(-) mode change 100755 => 100644 scripts/global.lua (limited to 'scripts/global.lua') diff --git a/scripts/global.lua b/scripts/global.lua old mode 100755 new mode 100644 index 39bde4a..13c3c1d --- a/scripts/global.lua +++ b/scripts/global.lua @@ -1,13 +1,48 @@ --- SLIMax Mgr Lua Script v2.4 +-- SLIMax Mgr Lua Script v3.8.1 -- PART OF SLIMAX Manager pkg --- Copyright (c)2011-2013 by EK and Zappadoc - All Rights Reserved. --- changed by Zappadoc - 2012-11-08 +-- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved. +-- last change by Zappadoc - 2013-10 + +mSMX_VERSION = 3.8 -- see slimax_script_readme.txt for implementation +-- load left and right functions tools +require "scripts/functions_tools" + -- ============================================================ -- GLOBAL VAR -- ============================================================ +-- SMXMessageBox Styles +MB_OK = 0x00000000 +MB_OKCANCEL = 0x00000001 +MB_ABORTRETRYIGNORE = 0x00000002 +MB_YESNOCANCEL = 0x00000003 +MB_YESNO = 0x00000004 +MB_RETRYCANCEL = 0x00000005 +MB_CANCELTRYCONTINUE = 0x00000006 + +MB_ICONHAND = 0x00000010 +MB_ICONQUESTION = 0x00000020 +MB_ICONEXCLAMATION = 0x00000030 +MB_ICONASTERISK = 0x00000040 + +MB_USERICON = 0x00000080 +MB_ICONWARNING = MB_ICONEXCLAMATION +MB_ICONERROR = MB_ICONHAND + +MB_ICONINFORMATION = MB_ICONASTERISK +MB_ICONSTOP = MB_ICONHAND + +-- MB result +mIDOK = 1 +mIDCANCEL = 2 +mIDABORT = 3 +mIDRETRY = 4 +mIDIGNORE = 5 +mIDYES = 6 +mIDNO = 7 + -- scripts settings mCustomScriptsFileName = "" @@ -15,28 +50,50 @@ mCustomScriptsFileName = "" -- init left and right digits panel text mLeftSpdLmtText = " " mRightSpdLmtText = " " +-- 4 digits F1 panel +mF1LeftSpdLmtText = " " +mF1RightSpdLmtText = " " -- new: 2.1 -- RPM threshold values in percentage used with Shiftlights method 2 -- and configured with SLIMax Manager II Advanced Options Panel -- default values: -RPM_PERCENT_VALUES = {50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 97, 98, 99 } -RPM_ABSOLUTE_VALUES = {15452, 15545, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18675 } - +RPM_PERCENT_VALUES = {50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 97, 98, 98, 99, 99 } +RPM_ABSOLUTE_VALUES = {15452, 15545, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18670, 18675, 18677 } + +-- Fanatec text using for slowdown update +mFanatecText = "" +-- SIMRACE DLX text using for slowdown update +mSRDlxLeftText = "" +mSRDlxRightText = "" +-- SIMRACE DLX text using for slowdown update +mSRF1LeftText = "" +mSRF1RightText = "" + +-- get feedback on display when you turn encoder or press button assigned to internal functions, see control.lua -- true if you want to display switch pos and value -mSwitchFeedbackAllowed = false +mSwitchFeedbackAllowed = true -- mapping to keystroke demo script -- see the support forum for more info on key mapping mDemoMapToKeyAllowed = false mDemoMapToKeySwitch = 5 +-- Fanatec Digits Status +mFanatecDigitsFeedbackAllowed = true +-- Fanatec speedlimiter method seleted +mFanatecSpeedLimiterFeedbackAllowed = true +-- Fanatec osp method seleted +mFanatecOSPFeedbackAllowed = true +-- Fanatec shiftlights method seleted +mFanatecShiftlightsFeedbackAllowed = true + -- Low Fuel status mLowFuelFeedbackAllowed = true -- Left and Right Digits status -mLeftDigitsFeedbackAllowed = false -mRightDigitsFeedbackAllowed = false +mLeftDigitsFeedbackAllowed = true +mRightDigitsFeedbackAllowed = true -- display KPH or KMH mUnitFeedbackAllowed = true @@ -58,14 +115,17 @@ mDumpLapButton = 9 -- delta time delay mDeltaTimeBackup = 0 mDeltaTimeOldTicks = 0 -mDeltaTimeDelay = 700 +mDeltaTimeDelay = 100 +mRefreshLapTimeRate = 50 +-- dump telemetry +TelemetryTools("dumplastlap", false); -- ============================================================ -- init globals flag isGlobalInitialized = 0 --- 13 RPM leds +-- 15 RPM leds mRPMLedTable = { RPM0=0, RPM1=0, @@ -79,131 +139,31 @@ mRPMLedTable = { RPM9=0, RPM10=0, RPM11=0, - RPM12=0 + RPM12=0, + RPM13=0, + RPM14=0 } -- SLI device type -mDeviceType = { - "BU0386Otus", - "BU0386", - "BU0386a", - "BU0386lc", - "BU0386x", - "SLI-M", - "SLI-PRO", - "SPARE1", - "BU0710", - "SLIEMU", - "SLIF1" -} - --- ======================== --- Utilities functions --- ======================== - --- add a function name to left and right functions list --- typical usage AddFuncName(path, func): --- on left list: --- local err = AddFuncName("cfg/sli_left_functions.ecfg", "100.DSII KERS") --- or right list: --- local err = AddFuncName("cfg/sli_right_functions.ecfg", "100.DSII KERS") -function AddFuncName(path, func) - file,err = io.open(path,"r") - if err then return 0 end - - isOK = false - t = {} - i= 1 - for line in file:lines() do - if line == nil then break end - -- check if the function name exist - if string.find(line, func)then isOK = true end - t[i]= line - i= i + 1 - end - file:close() - - if not isOK then - -- write mode - file, err = io.open(path,"w+") - if err then return 0 end - -- add the function name at the end of file - for k, v in pairs(t) do - -- add line - file:write(v) - file:write("\n") - end - -- add the function name - file:write(func) - file:write("\n") - file:close() - end - return 1 -end +-- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API - - -- same as above for removing the function name -function RemoveFuncName(path, func) - file,err = io.open(path,"r") - if err then return 0 end - - t = { } - i=1 - for line in file:lines() do - if line == nil then break end - -- check if the function name exist - if not string.find(line, func)then - t[i] = line - i= i + 1 - end - end - file:close() - - -- write mode, delete previous data - file, err = io.open(path,"w+") - if err then return 0 end - - for k, v in pairs(t) do - -- print(k .. " - " .. v .. "\n") - -- add line - file:write(v) - file:write("\n") - end - - file:close() - return 1 -end +-- -------------------------------------------- +-- KERS functions +-- -------------------------------------------- --- get next function index available --- typical usage GetNewFuncIndex(path): --- on left list: --- local num_available = GetNewFuncIndex("cfg/sli_left_functions.ecfg") --- or right list: --- local num_available = GetNewFuncIndex("cfg/sli_right_functions.ecfg") -function GetNewFuncIndex(path) - file,err = io.open(path,"r") - if err then return 0 end - - idx = 0 - for line in file:lines() do - if line == nil then break end - -- get the prefix - a = string.find(line, '.', 1, true) - b = string.sub( line,1, a-1) - -- print ( b .. "\n") - - -- string to num conversion - c = (b + 0) - -- store if it's greater - if c > idx then idx = c end - end - file:close() - - return idx+1 +function GetKersPercent() + -- get kers value + local kers_level = GetCarInfo("kers") + local k_percent = 0 + if kers_level ~= nil and kers_level > 0 then + k_percent = round((kers_level/1000) / 4 ) + end + return k_percent end + -- Init all globals function InitGlobals() -- default blink time delay @@ -219,11 +179,14 @@ function InitGlobals() gRedZone = 0 gOSPLimit = 0 mBU0710Leds = 0 + mG27Leds = 0 + mOSPMethod = 0 + mFanatecLeds = 0 end -- set RPM threshold value in percentage ( SLIMax Manager 2.1 ) function SetRPMPercentValue(index, value) - if index <1 or index>13 then + if index <1 or index>15 then return end if value <0 or value >100 then @@ -235,7 +198,7 @@ end -- set RPM threshold value ( SLIMax Manager 2.1 ) function SetRPMAbsoluteValue(index, value) - if index <1 or index>13 then + if index <1 or index>15 then return end if value <0 or value >20000 then @@ -309,7 +272,8 @@ end function toggleAllLed(val) initLedTable(mRPMLedTable, val) for i = 1, 6 do SetWarnLed(i, val) end - for i = 1, 5 do SetExtLed(i, val) end + -- 7 external leds is the max value used in SIM RACE F1 and Emulator + for i = 1, 7 do SetExtLed(i, val) end SetRPMLed("mRPMLedTable") end @@ -406,9 +370,15 @@ function GetTemp(tmp, selector) end end +-- set refresh lap time rate in ms +function SetRefreshLapTimeRate(delay) + if delay == nil or delay < 0 or delay > 5000 then delay = 50 end + mRefreshLapTimeRate = delay +end + -- set delta time delay in ms function SetDeltaTimeDelay(delay) - if delay == nil or delay < 0 or delay > 5000 then delay = 700 end + if delay == nil or delay < 0 or delay > 5000 then delay = 200 end mDeltatimeDelay = delay end @@ -416,16 +386,19 @@ end function GetCurrentGear() local g = GetCarInfo("gear") -- get neutral - local n = string.char(GetContextInfo("neutral")) + local n = GetContextInfo("neutral") -- get reverse char and convert to string local r = string.char(GetContextInfo("reverse")) + -- get state of custom Optimal Shift Point (OSP) records + local ospcustom_on = GetContextInfo("ospcustom") -- set neutral, reverse or current gear local result = g if g == 0 then - -- neutral - result = n + -- if neutral and using custom OSP record then add a dot to gear digit + if ospcustom_on then n = n + 128 end + result = string.char(n) elseif g < 0 then -- reverse result = r @@ -434,6 +407,113 @@ function GetCurrentGear() return result end +function isAppIRacing(sim) + if sim == "iRacingSim.exe" or sim == "iRacingSim64.exe" then + return true + end + return false +end +function isAppRFactor(sim) + if sim == "rFactor.exe" or sim == "rFactor2.exe" then + return true + end + return false +end +function DisplayFormatTime(lptime, delay, dec, deltaflag, numDigits) + local ticks = GetTicks() + + if dft_old_time == nil or (ticks - dft_old_time) > delay then + -- global to backup ticks (ms) + dft_old_time = ticks + + local hr = 0 + local mn = 0 + local sc = 0 + local ms = 0 + local hd = 0 + local panel = "" + local prefix = " " + + if lptime < 0 then + prefix = "-" + end + -- explod time + hr, mn, sc, hd, ms = timeDispatcher(lptime) + + if deltaflag == 1 then + --display delta time + if lptime == -1 or (mn + sc + ms) == 0.0 then + if numDigits == 3 then + Panel = "-.--" + else + Panel = " -.-- " + end + elseif mn > 0 then + if numDigits == 3 then + if mn < 100 then + Panel = string.format( "%s%02d.", prefix, mn) + else + Panel = " ." + end + + else + Panel = string.format( " %s%1d.%02d ", prefix, mn, sc) + end + else + + if numDigits == 3 then + if sc < 10 then + if prefix == "-" then + Panel = string.format( "%s%1d.%01d ", prefix, sc, hd) + else + Panel = string.format( "%1d.%02d ", sc, hd) + end + else + Panel = " . " + end + else + if Ndig == 2 then + Panel = string.format( " %s%1d.%02d ", prefix, sc, hd) + else + Panel = string.format( " %s%1d.%03d", prefix, sc, ms) + end + end + + end + + elseif deltaflag == 0 then + --display laptime + if lptime == -1 or (mn + sc + ms) == 0.0 then + if numDigits == 3 then + Panel = "-.--" + else + Panel = "-:--.---" + end + + elseif mn < 10 then + if numDigits == 3 then + Panel = string.format( "%1d.%02d", mn, sc) + else + Panel = string.format( "%1d:%02d.%03d", mn, sc, ms) + end + elseif hr > 0 then + if numDigits == 3 then + Panel = " . " + else + Panel = string.format( " %02d.%02d ", hr, mn) + end + else + if numDigits == 3 then + Panel = string.format( " %02d.", mn) + else + Panel = string.format( " %02d.%02d.%01d", mn, sc, ms) + end + end + end + end + + return Panel +end --============================================== require "scripts/slidevice" -- cgit v1.2.3