diff --git a/_versioncheck.lua b/_versioncheck.lua index 2423e78..56d6217 100644 --- a/_versioncheck.lua +++ b/_versioncheck.lua @@ -1,67 +1,78 @@ -local function parseVersion(version) - local parts = {} - for num in version:gmatch("%d+") do - table.insert(parts, tonumber(num)) - end - return parts +local function readBoolMeta(key, default) + local val = GetResourceMetadata(GetCurrentResourceName(), key, 0) + if not val then return default end + val = tostring(val):lower() + return (val == 'true' or val == '1' or val == 'yes' or val == 'on') end -local function compareVersions(current, newest) - local currentParts = parseVersion(current) - local newestParts = parseVersion(newest) - for i = 1, math.max(#currentParts, #newestParts) do - local c = currentParts[i] or 0 - local n = newestParts[i] or 0 - if c < n then return -1 - elseif c > n then return 1 end +local SUPPRESS_UPDATES = readBoolMeta('suppress_updates', false) + +if not SUPPRESS_UPDATES then + local function parseVersion(version) + local parts = {} + for num in version:gmatch("%d+") do + table.insert(parts, tonumber(num)) + end + return parts end - return 0 -- equal -end -function CheckBridgeVersion() - if IsDuplicityVersion() then - CreateThread(function() - Wait(4000) - local currentVersionRaw = GetResourceMetadata("jim_bridge", 'version') - --PerformHttpRequest('https://raw.githubusercontent.com/jimathy/UpdateVersions/master/test.txt', function(err, body, headers) - PerformHttpRequest('https://raw.githubusercontent.com/jimathy/jim_bridge/master/version.txt', function(err, body, headers) - if not body then - print("^1Unable to run version check for ^7'^3jim_bridge^7' (^3"..currentVersionRaw.."^7)") - return - end + local function compareVersions(current, newest) + local currentParts = parseVersion(current) + local newestParts = parseVersion(newest) + for i = 1, math.max(#currentParts, #newestParts) do + local c = currentParts[i] or 0 + local n = newestParts[i] or 0 + if c < n then return -1 + elseif c > n then return 1 end + end + return 0 -- equal + end - local lines = {} - for line in body:gmatch("[^\r\n]+") do - table.insert(lines, line) - end - - local newestVersionRaw = lines[1] or "0.0.0" - local changelog = {} - for i = 2, #lines do - table.insert(changelog, lines[i]) - end - - local compareResult = compareVersions(currentVersionRaw, newestVersionRaw) - - if compareResult == 0 then - print("^7'^3jim_bridge^7' - ^2You are running the latest version^7. ^7(^3"..currentVersionRaw.."^7)") - elseif compareResult < 0 then - print("^1----------------------------------------------------------------------^7") - print("^7'^3jim_bridge^7' - ^1You are running an outdated version^7! ^7(^3"..currentVersionRaw.."^7 → ^3"..newestVersionRaw.."^7)") - for _, line in ipairs(changelog) do - print((line:find("http") and "^7" or "^5")..line) + function CheckBridgeVersion() + if IsDuplicityVersion() then + CreateThread(function() + Wait(4000) + local currentVersionRaw = GetResourceMetadata("jim_bridge", 'version') + --PerformHttpRequest('https://raw.githubusercontent.com/jimathy/UpdateVersions/master/test.txt', function(err, body, headers) + PerformHttpRequest('https://raw.githubusercontent.com/jimathy/jim_bridge/master/version.txt', function(err, body, headers) + if not body then + print("^1Unable to run version check for ^7'^3jim_bridge^7' (^3"..currentVersionRaw.."^7)") + return end - print("^1----------------------------------------------------------------------^7") - SetTimeout(3600000, function() - CheckBridgeVersion() - end) - else - print("^7'^3jim_bridge^7' - ^5You are running a newer version ^7(^3"..currentVersionRaw.."^7 ← ^3"..newestVersionRaw.."^7)") - end + + local lines = {} + for line in body:gmatch("[^\r\n]+") do + table.insert(lines, line) + end + + local newestVersionRaw = lines[1] or "0.0.0" + local changelog = {} + for i = 2, #lines do + table.insert(changelog, lines[i]) + end + + local compareResult = compareVersions(currentVersionRaw, newestVersionRaw) + + if compareResult == 0 then + print("^7'^3jim_bridge^7' - ^2You are running the latest version^7. ^7(^3"..currentVersionRaw.."^7)") + elseif compareResult < 0 then + print("^1----------------------------------------------------------------------^7") + print("^7'^3jim_bridge^7' - ^1You are running an outdated version^7! ^7(^3"..currentVersionRaw.."^7 → ^3"..newestVersionRaw.."^7)") + for _, line in ipairs(changelog) do + print((line:find("http") and "^7" or "^5")..line) + end + print("^1----------------------------------------------------------------------^7") + SetTimeout(3600000, function() + CheckBridgeVersion() + end) + else + print("^7'^3jim_bridge^7' - ^5You are running a newer version ^7(^3"..currentVersionRaw.."^7 ← ^3"..newestVersionRaw.."^7)") + end + end) end) - end) + end end -end -CheckBridgeVersion() \ No newline at end of file + CheckBridgeVersion() +end \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua index 2475595..0a3a719 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -7,7 +7,6 @@ rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aw games { 'gta5', 'rdr3' } lua54 'yes' - files { 'starter.lua', 'shared/*.lua', @@ -24,4 +23,6 @@ server_scripts { client_scripts { 'clientFrameworkCache.lua', 'ui_modules/*.lua', -} \ No newline at end of file +} + +suppress_updates 'true' -- set to 'true' to disable update pings \ No newline at end of file diff --git a/shared/_scriptversioncheck.lua b/shared/_scriptversioncheck.lua index 7562e26..8cab90f 100644 --- a/shared/_scriptversioncheck.lua +++ b/shared/_scriptversioncheck.lua @@ -1,100 +1,111 @@ -function parseVersion(version) - local parts = {} - for num in version:gmatch("%d+") do - table.insert(parts, tonumber(num)) +local function readBoolMeta(key, default) + local val = GetResourceMetadata("jim_bridge", key, 0) + if not val then return default end + val = tostring(val):lower() + return (val == 'true' or val == '1' or val == 'yes' or val == 'on') +end + +local SUPPRESS_UPDATES = readBoolMeta('suppress_updates', false) + +if not SUPPRESS_UPDATES then + function parseVersion(version) + local parts = {} + for num in version:gmatch("%d+") do + table.insert(parts, tonumber(num)) + end + return parts end - return parts -end -function compareVersions(current, newest) - local currentParts = parseVersion(current) - local newestParts = parseVersion(newest) - for i = 1, math.max(#currentParts, #newestParts) do - local c = currentParts[i] or 0 - local n = newestParts[i] or 0 - if c < n then return -1 - elseif c > n then return 1 end + function compareVersions(current, newest) + local currentParts = parseVersion(current) + local newestParts = parseVersion(newest) + for i = 1, math.max(#currentParts, #newestParts) do + local c = currentParts[i] or 0 + local n = newestParts[i] or 0 + if c < n then return -1 + elseif c > n then return 1 end + end + return 0 end - return 0 -end -function capitalize(str) - return (str:gsub("^%l", string.upper):gsub("%-%l", function(letter) return "-" .. string.upper(letter:sub(2)) end)) -end + function capitalize(str) + return (str:gsub("^%l", string.upper):gsub("%-%l", function(letter) return "-" .. string.upper(letter:sub(2)) end)) + end -local scriptName = ("^2"..capitalize(getScript()):gsub("%-", "^7-^2"):gsub("%_", "^7_^2")) or "" -local scriptVersion = ("^5"..GetResourceMetadata(getScript(), 'version', nil):gsub("%.", "^7.^5")) or "" -local scriptDescription = ("^2"..GetResourceMetadata(getScript(), 'description', nil)) or "" -local scriptAuthor = ("^2by ^4"..GetResourceMetadata(getScript(), 'author', nil):gsub("%and", "^7and^4")) or "" + local scriptName = ("^2"..capitalize(getScript()):gsub("%-", "^7-^2"):gsub("%_", "^7_^2")) or "" + local scriptVersion = ("^5"..GetResourceMetadata(getScript(), 'version', nil):gsub("%.", "^7.^5")) or "" + local scriptDescription = ("^2"..GetResourceMetadata(getScript(), 'description', nil)) or "" + local scriptAuthor = ("^2by ^4"..GetResourceMetadata(getScript(), 'author', nil):gsub("%and", "^7and^4")) or "" -print(scriptName.." ^7v"..scriptVersion.."^7 - "..scriptDescription.." "..scriptAuthor.."^7") + print(scriptName.." ^7v"..scriptVersion.."^7 - "..scriptDescription.." "..scriptAuthor.."^7") -function CheckVersion() - if isServer() and GetResourceMetadata(getScript(), 'author', nil) == "Jimathy" then - CreateThread(function() - Wait(4000) - local script = getScript() - local currentVersionRaw = GetResourceMetadata(script, 'version') + function CheckVersion() + if isServer() and GetResourceMetadata(getScript(), 'author', nil) == "Jimathy" then + CreateThread(function() + Wait(4000) + local script = getScript() + local currentVersionRaw = GetResourceMetadata(script, 'version') - PerformHttpRequest('https://raw.githubusercontent.com/jimathy/UpdateVersions/master/'..script..'.txt', function(err, newestVersionRaw, headers) - if not newestVersionRaw then - -- fallback - PerformHttpRequest('https://raw.githubusercontent.com/jimathy/'..script..'/master/version.txt', function(err, fallbackVersionRaw, headers) - if not fallbackVersionRaw then - print("^1Currently unable to run a version check for ^7'^3"..script.."^7' (^3"..currentVersionRaw.."^7)") - return - end + PerformHttpRequest('https://raw.githubusercontent.com/jimathy/UpdateVersions/master/'..script..'.txt', function(err, newestVersionRaw, headers) + if not newestVersionRaw then + -- fallback + PerformHttpRequest('https://raw.githubusercontent.com/jimathy/'..script..'/master/version.txt', function(err, fallbackVersionRaw, headers) + if not fallbackVersionRaw then + print("^1Currently unable to run a version check for ^7'^3"..script.."^7' (^3"..currentVersionRaw.."^7)") + return + end + local lines = {} + for line in fallbackVersionRaw:gmatch("[^\r\n]+") do table.insert(lines, line) end + local fallbackVersion = (lines[1] or "0.0.0"):gsub("v", "") + local changelog = {} + for i = 2, #lines do table.insert(changelog, lines[i]) end + + local compareResult = compareVersions(currentVersionRaw, fallbackVersion) + if compareResult == 0 then + print("^7'^3"..script.."^7' - ^2You are running the latest version^7. (^3"..currentVersionRaw.."^7)") + elseif compareResult < 0 then + print("^1----------------------------------------------------------------------^7") + print("^7'^3"..script.."^7' - ^1You are currently running an outdated version^7! (^3"..currentVersionRaw.."^7 → ^3"..fallbackVersion.."^7)") + if #changelog > 0 then + for _, line in ipairs(changelog) do + print((line:find("http") and "^7" or "^5")..line) + end + end + print("^1----------------------------------------------------------------------^7") + SetTimeout(1200000, function() CheckVersion() end) + else + print("^7'^3"..script.."^7' - ^5You are running a newer version ^7(^3"..currentVersionRaw.."^7 ← ^3"..fallbackVersion.."^7)") + end + end) + else local lines = {} - for line in fallbackVersionRaw:gmatch("[^\r\n]+") do table.insert(lines, line) end - local fallbackVersion = (lines[1] or "0.0.0"):gsub("v", "") + for line in newestVersionRaw:gmatch("[^\r\n]+") do table.insert(lines, line) end + local newestVersion = (lines[1] or "0.0.0"):gsub("v", "") local changelog = {} for i = 2, #lines do table.insert(changelog, lines[i]) end - local compareResult = compareVersions(currentVersionRaw, fallbackVersion) + local compareResult = compareVersions(currentVersionRaw, newestVersion) if compareResult == 0 then print("^7'^3"..script.."^7' - ^2You are running the latest version^7. (^3"..currentVersionRaw.."^7)") elseif compareResult < 0 then print("^1----------------------------------------------------------------------^7") - print("^7'^3"..script.."^7' - ^1You are currently running an outdated version^7! (^3"..currentVersionRaw.."^7 → ^3"..fallbackVersion.."^7)") + print("^7'^3"..script.."^7' - ^1You are currently running an outdated version^7! (^3"..currentVersionRaw.."^7 → ^3"..newestVersion.."^7)") if #changelog > 0 then for _, line in ipairs(changelog) do print((line:find("http") and "^7" or "^5")..line) end end print("^1----------------------------------------------------------------------^7") - SetTimeout(1200000, function() CheckVersion() end) + SetTimeout(3600000, function() CheckVersion() end) else - print("^7'^3"..script.."^7' - ^5You are running a newer version ^7(^3"..currentVersionRaw.."^7 ← ^3"..fallbackVersion.."^7)") + print("^7'^3"..script.."^7' - ^5You are running a newer version ^7(^3"..currentVersionRaw.."^7 ← ^3"..newestVersion.."^7)") end - end) - else - local lines = {} - for line in newestVersionRaw:gmatch("[^\r\n]+") do table.insert(lines, line) end - local newestVersion = (lines[1] or "0.0.0"):gsub("v", "") - local changelog = {} - for i = 2, #lines do table.insert(changelog, lines[i]) end - - local compareResult = compareVersions(currentVersionRaw, newestVersion) - if compareResult == 0 then - print("^7'^3"..script.."^7' - ^2You are running the latest version^7. (^3"..currentVersionRaw.."^7)") - elseif compareResult < 0 then - print("^1----------------------------------------------------------------------^7") - print("^7'^3"..script.."^7' - ^1You are currently running an outdated version^7! (^3"..currentVersionRaw.."^7 → ^3"..newestVersion.."^7)") - if #changelog > 0 then - for _, line in ipairs(changelog) do - print((line:find("http") and "^7" or "^5")..line) - end - end - print("^1----------------------------------------------------------------------^7") - SetTimeout(3600000, function() CheckVersion() end) - else - print("^7'^3"..script.."^7' - ^5You are running a newer version ^7(^3"..currentVersionRaw.."^7 ← ^3"..newestVersion.."^7)") end - end + end) end) - end) + end end -end -CheckVersion() + CheckVersion() +end \ No newline at end of file