--[[ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ]] local ShowPrint = [[ _________________________________________________________________ 💻 Script developed by eomthix aka erik! ✅ All In One Every Version V2 (❗WORKS IN ALL VERSIONS❗) 🔥 Thanks for using my script and have a good day! ❗NOTICE❗ This Script is completely free. If someone sold or is trying to sell you this know that it is definitely a scam. The Script can be found for Free on my Telegram Group or on my Discord Server. 📢 Contact & Support: 🎮 Discord: eomthix ✈️ Telegram: t.me/eomthix 🌐 Discord Server: https://discord.gg/Zryfyd4s8z 👥 Telegram Group: t.me/hcr2ggz 📧 Email: Askmeforquestions@outlook.de _________________________________________________________________ ]] function exitscript() gg.clearResults() gg.clearList() gg.setVisible(true) print(ShowPrint) os.exit() end gg.setVisible(false) gg.clearResults() gg.clearList() function gethcr2version() gg.setVisible(false) local info = gg.getTargetInfo() if info and info.versionName then return tostring(info.versionName) else return "❓Unknown" end end function downloadhcr2version() local verOptions = {} local verLinks = {} if CNF and CNF.versions then for verName, verData in pairs(CNF.versions) do if verData.version_status == "ON" and verData.download_link then table.insert(verOptions, "📦 HCR2 v" .. verName) table.insert(verLinks, verData.download_link) end end end table.insert(verOptions, "❌ Exit") if #verOptions == 1 then gg.alert("❌ No Versions available for download!") return downloadstuff() end local verChoice = gg.choice(verOptions, nil, "Select HCR2 Version to download:") if verChoice == nil or verChoice == #verOptions then exitscript() end gg.copyText(verLinks[verChoice]) gg.alert("✅ Copied Link for" .. verOptions[verChoice]:sub(10) .. "!\nPaste it into your Browser!\nYou can install apks files with MT Manager!") end local function checkScript() gg.setVisible(false) local url = "https://raw.githubusercontent.com/eomthix/data946/refs/heads/main/unc67.lua" --aSc7pp8z local res = gg.makeRequest(url) if not res or res.code ~= 200 then gg.alert("❌ Press on Yes or Check your Internet connection\nUsing a VPN sometimes helps!") exitscript() end local dataFunc, err = load(res.content) if not dataFunc then gg.alert("❌ Error found!\n\n" .. tostring(err)) exitscript() end CNF = dataFunc() if CNF.status == "OFF" and CNF.show_download_menu == "OFF" then local msg = CNF.status_msg gg.alert(msg) if CNF.status_copy == "ON" and CNF.text_copy then gg.copyText(CNF.text_copy) end exitscript() elseif CNF.status == "OFF" and CNF.show_download_menu == "ON" then local choice = gg.choice({ "📋 Copy Download Link", "❌ Exit" }, nil, "⚠️ Script has been shut down!\nYou can download the newest Script Version from the link here!") if choice == 1 then local downloadUrl = "" if CNF and CNF.script_download and CNF.script_download ~= "" then downloadUrl = CNF.script_download end gg.copyText(downloadUrl) gg.alert("📋 Link copied!\n🌐Open your browser and download the newest Script!") end exitscript() end local currentVersion = gethcr2version() if CNF.versions and CNF.versions[currentVersion] then local verData = CNF.versions[currentVersion] if verData.version_status == "OFF" then local ask = gg.choice({"✅ Yes, go to Downloads", "❌ No, exit"}, nil, "❌ Version " .. currentVersion .. " is currently offline and disabled by Fingersoft!\nDo you want to download a supported version?") if ask == 1 then downloadhcr2version() end exitscript() end CNF.offsets = verData.offsets PATCHES = verData.PATCHES if verData.logic then CNF.logic = verData.logic end if verData.status then STATUS2_OK = (verData.status.fake_unlock_arm8 == "ON") STATUS3_OK = (verData.status.fake_unlock_x64 == "ON") STATUS4_OK = (verData.status.fake_vip_arm8 == "ON") STATUS5_OK = (verData.status.fake_vip_x64 == "ON") STATUS6_OK = (verData.status.max_tunes == "ON") STATUS7_OK = (verData.status.unlock_cars == "ON") STATUS8_OK = (verData.status.max_masteries == "ON") STATUS9_OK = (verData.status.remove_mastery_time == "ON") STATUS10_OK = (verData.status.max_parts == "ON") STATUS11_OK = (verData.status.unlimited_tasks == "ON") STATUS12_OK = (verData.status.no_locked_mastery == "ON") end gg.toast("✅ All Offsets and Configs loaded for " .. currentVersion) NEEDS_UPDATE = false else NEEDS_UPDATE = true local ask = gg.choice({"✅ Yes, go to Downloads", "❌ No, exit"}, nil, "❌ Version " .. currentVersion .. " is currently disabled!\nDo you want to download a supported version?") if ask == 1 then downloadhcr2version() end exitscript() end end checkScript() function countvisits() gg.makeRequest("https://pastebin.com/raw/aSc7pp8z") end countvisits() lib_found = false LIB_BASE = nil local function getlib() local libs = gg.getRangesList("libcocos2dcpp.so") if #libs == 0 then lib_found = false local choice = gg.choice( {"⏩Continue", "❌Exit"}, nil, "❗Couldn't find libcocos2dcpp.so!" ) if choice ~= 1 then exitscript() else gg.alert("❗Proceeding without Lib!\nMost functions will be disabled!") end return false end LIB_BASE = libs[1].start lib_found = true return true end getlib() local function checkggversion() gg.setVisible(false) local ok, err = pcall(function() gg.require("101.1", 16142) end) if not ok then gg.alert("❌Please use the original Game Gurdian Version 101.1!") exitscript() end end checkggversion() function checkhcr2() local target_process = "com.fingersoft.hcr2" if gg.getTargetPackage() ~= target_process then local target_name = "Hill Climb Racing 2" gg.alert(string.format("❌This script is for %s (%s) but you are attached to (%s). Please attach to the correct process.", target_name, target_process, gg.getTargetPackage())) exitscript() end end checkhcr2() local function detectFullArchitecture() if lib_found then local res = gg.getValues({{address = LIB_BASE + 0x12, flags = gg.TYPE_BYTE}}) if not res or #res == 0 then return nil end return res[1].value end return nil end local rawArch = detectFullArchitecture() archName = "❓Unknown" if lib_found then if rawArch == -73 or rawArch == 183 or rawArch == 0xB7 then archType = 1 archName = "ARMv8" elseif rawArch == 62 or rawArch == 0x3E then archType = 2 archName = "x86_64" elseif rawArch == 40 or rawArch == 0x28 then archType = 3 archName = "ARMv7" gg.alert("Detected ARMv7 Usage!\nMost Script functions will not work for you!") elseif rawArch == 3 or rawArch == 0x03 then archType = 4 archName = "x86" gg.alert("Detected x86 Usage!\nMost Script functions will not work for you!") else archName = "Unknown" gg.alert("❌ Unknown Architecture!") exitscript() end else archType = 0 archName = "❓Unknown" gg.alert("⚠️ Architecture check skipped!\nMost Script functions will not work for you!") end local allRanges = { { name = "C alloc", value = gg.REGION_C_ALLOC }, { name = "Other", value = gg.REGION_OTHER }, { name = "Anonymous", value = gg.REGION_ANONYMOUS } } local currentRangeName = "None" picked = 1 function Ranges() gg.setVisible(false) local choices = {} local defaultIndex = 1 for i, r in ipairs(allRanges) do table.insert(choices, r.name) if r.name == "C alloc" or r.name == "C_ALLOC" or r.name == "Xa" then defaultIndex = i end end picked = gg.choice(choices, defaultIndex, "🧭 Select a memory range:") if picked == nil then gg.alert("❌Please Select a Range!") exitscript() end currentRangeName = allRanges[picked].name local selectedName = allRanges[picked].name if selectedName == "Anonymous" or selectedName == "Other" then gg.alert("❌ The Range (" .. selectedName .. ") will not be working well for this script!\n\nPlease Use C alloc if possible!") else gg.setRanges(allRanges[picked].value) gg.toast("✅ Memory range set to: " .. selectedName) gg.sleep(1000) end end Ranges() function brokencarange() local choice = gg.choice({ "📖 How to fix 0b in C Alloc", "🔗 Copy Link for ZGG", "❗ Continue anyways (almost nothing will work)\n❗Use this if you need PE MOD on Emulator", "❌ Exit" }, nil, "⚠️ Ca Range is broken") if choice == nil or choice == 4 then exitscript() end if choice == 1 then gg.alert([[How to fix 0b in C-Alloc? Phone: 1. Delete your current Game Gurdian 2. Click on 'Copy Link for ZGG' 3. Paste the Link in your Browser and Download ZGG 4. Your problem with 0b in C-Alloc should be fixed! Emulator: Just make sure that you are using only LD Player 9 (Dont Use 14) Dont Use Memu Player or Blue Stacks! Note: Dont use ZGG on Emulator it wont fix your problem! If this didn't help contact me! (Contact Details are being showed after clicking Exit) ]]) return brokencarange() elseif choice == 2 then gg.copyText("https://www.mediafire.com/file/4dub2av61jvy1ab/zGG-v1.0.apk/file") gg.sleep(100) gg.toast("✅ Copied Download Link for ZGG") return brokencarange() elseif choice == 3 then end end local function getGameStatus() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("h 73 74 61 72 74 75 70 5F 63 6F 75 6E 74", gg.TYPE_BYTE) gg.refineNumber("h 73", gg.TYPE_BYTE) local count = gg.getResultCount() if count == 0 then if allRanges[picked].name == "C alloc" or allRanges[picked].name == "Ca" then brokencarange() else gg.alert("❌ Couldn't find Gamestatus!\nGamestatus functions will not be working for you!") end return end local res = gg.getResults(count) gg.clearResults() local hits = {} local raw_hits = {} for _, d in ipairs(res) do local ptr = gg.getValues({{ address = d.address + 0x1F, flags = 32 }}) if ptr and ptr[1] and ptr[1].value ~= 0 then local ver = gg.getValues({{ address = ptr[1].value + 0x10, flags = 4 }}) if ver and ver[1] then local v = tonumber(ver[1].value) if v == 65792 or v == 65793 or v == 16843008 or v == 16843009 then table.insert(raw_hits, ver[1].address) local tp = gg.getValues({{ address = ptr[1].value + 0x80, flags = 32 }}) if tp and tp[1] and tp[1].value ~= 0 then local td = gg.getValues({{ address = tp[1].value, flags = 4 }}) if td and td[1] then table.insert(hits, td[1].address) end end end end end end if #hits > 0 then BaseRegion = allRanges[picked].value BaseGameStatus = hits[1] BaseGameStatusRaw = raw_hits[1] else if allRanges[picked].name == "C alloc" or allRanges[picked].name == "Ca" then brokencarange() else gg.alert("❌ Couldn't find Gamestatus!\nGamestatus functions will not be working for you!") end end end getGameStatus() gg.clearResults() gg.clearList() gg.setVisible(false) function MainMenu() local choice = gg.choice( { "\u{0031}\u{fe0f}\u{20e3}Menu", "\u{0032}\u{fe0f}\u{20e3}Menu", "\u{0033}\u{fe0f}\u{20e3}Menu", "\u{1f911}Shop Menu", "\u{1f5fa}Adventure Menu", "\u{1f3c6}Cups Menu", "🌟 Player Menu", "\u{1f3af}Team Sprit Chest Menu", "\u{26a1}Public Event Menu", "🔧Tools/Settings", "ℹ️About", "\u{274c}Exit Script" }, nil, "🕹️ Cheat Menu made by eomthix 🕹️\nInstalled HCR2 Version: " .. gethcr2version() .. "\nCurrent Architecture: " .. archName ) if choice == nil then return end if choice == 1 then menu1() elseif choice == 2 then menu2() elseif choice == 3 then menu3() elseif choice == 4 then ShopMenu() elseif choice == 5 then AdventureMenu() elseif choice == 6 then CupsMenu() elseif choice == 7 then PlayerMenu() elseif choice == 8 then HCR7() elseif choice == 9 then mainevent() elseif choice == 10 then Tools() elseif choice == 11 then About() elseif choice == 12 then exitscript() end end local function getCurrentName() if not BaseGameStatus then return "Unknown" end local getPlayerNamePtr = gg.getValues({{ address = BaseGameStatus + 0x38, flags = 32 }})[1].value local lengthVal = gg.getValues({{ address = getPlayerNamePtr, flags = 1 }})[1].value local currentLength = math.floor(lengthVal / 2) if currentLength > 0 and currentLength <= 12 then local nameBytes = {} for i = 1, currentLength do nameBytes[#nameBytes + 1] = { address = getPlayerNamePtr + i, flags = 1 } end local readBytes = gg.getValues(nameBytes) local chars = {} for i = 1, #readBytes do if readBytes[i].value > 0 then chars[#chars + 1] = string.char(readBytes[i].value) end end return table.concat(chars) end return "Unknown" end local function getCurrentFlag() if not BaseGameStatus then return "Unknown" end local flagPtr = gg.getValues({{ address = BaseGameStatus + 0x40, flags = 32 }})[1].value if flagPtr == 0 then return "None" end local flagBytes = gg.getValues({ { address = flagPtr + 1, flags = 1 }, { address = flagPtr + 2, flags = 1 } }) local chars = {} for i = 1, 2 do local val = flagBytes[i].value if val >= 65 and val <= 90 then table.insert(chars, val) elseif val >= 97 and val <= 122 then table.insert(chars, val - 32) end end if #chars == 2 then local cp1 = 127462 + (chars[1] - 65) local cp2 = 127462 + (chars[2] - 65) return utf8.char(cp1) .. utf8.char(cp2) end return "Unknown" end local function getCurrentGP() if not BaseGameStatus then return "0" end local finalAddr = BaseGameStatus + 0x4F4 local gpVal = gg.getValues({{ address = finalAddr, flags = gg.TYPE_DWORD }}) if gpVal and gpVal[1] then return string.format("%.0f", gpVal[1].value) end return "0" end local function getHighestRank() if not BaseGameStatus then return "0" end local rankVal = gg.getValues({{ address = BaseGameStatus + 0x200, flags = 16 }}) if rankVal and rankVal[1] then local rawValue = rankVal[1].value * 1000 return string.format("%.0f", math.floor(rawValue + 0.5)) end return "0" end local function getTotalDistance() if not BaseGameStatus then return "0" end local distVal = gg.getValues({{ address = BaseGameStatus + 0x64, flags = 16 }}) if distVal and distVal[1] then return string.format("%.0f", math.floor(distVal[1].value + 0.5)) end return "0" end local function getTotalMatchesWon() if not BaseGameStatus then return "0" end local wonVal = gg.getValues({{ address = BaseGameStatus + 0x1F4, flags = gg.TYPE_DWORD }}) if wonVal and wonVal[1] then return string.format("%.0f", wonVal[1].value) end return "0" end local function getChallengesWon() if not BaseGameStatus then return "0" end local chalVal = gg.getValues({{ address = BaseGameStatus + 0x310, flags = gg.TYPE_DWORD }}) if chalVal and chalVal[1] then return string.format("%.0f", chalVal[1].value) end return "0" end local function getBackFlips() if not BaseGameStatus then return "0" end local val = gg.getValues({{ address = BaseGameStatus + 0x54, flags = gg.TYPE_DWORD }}) if val and val[1] then return string.format("%.0f", val[1].value) end return "0" end local function getNeckFlips() if not BaseGameStatus then return "0" end local val = gg.getValues({{ address = BaseGameStatus + 0x50, flags = gg.TYPE_DWORD }}) if val and val[1] then return string.format("%.0f", val[1].value) end return "0" end local function getEventsJoined() if not BaseGameStatus then return "0" end local val = gg.getValues({{ address = BaseGameStatus + 0x3B4, flags = gg.TYPE_DWORD }}) if val and val[1] then return string.format("%.0f", val[1].value) end return "0" end local function getEventPoints() if not BaseGameStatus then return "0" end local val = gg.getValues({{ address = BaseGameStatus + 0x3B8, flags = gg.TYPE_DWORD }}) if val and val[1] then return string.format("%.0f", val[1].value) end return "0" end local function getEventsCompleted() if not BaseGameStatus then return "0" end local val = gg.getValues({{ address = BaseGameStatus + 0x3BC, flags = gg.TYPE_DWORD }}) if val and val[1] then return string.format("%.0f", val[1].value) end return "0" end local function getWinStreakValues() if not BaseGameStatus then return 0, 0, 0, 0, 0 end local reads = gg.getValues({ { address = BaseGameStatus + 0x6AC, flags = gg.TYPE_DWORD }, { address = BaseGameStatus + 0x768, flags = gg.TYPE_QWORD }, { address = BaseGameStatus + 0x770, flags = gg.TYPE_QWORD }, }) local staticKey = reads[1] and reads[1].value or 0 local currentPtr = reads[2] and reads[2].value or 0 local bestPtr = reads[3] and reads[3].value or 0 local currentVal = 0 local bestVal = 0 if currentPtr ~= 0 then local cRead = gg.getValues({{ address = currentPtr + 0x1C, flags = gg.TYPE_DWORD }}) currentVal = cRead[1] and cRead[1].value or 0 end if bestPtr ~= 0 then local bRead = gg.getValues({{ address = bestPtr + 0x1C, flags = gg.TYPE_DWORD }}) bestVal = bRead[1] and bRead[1].value or 0 end return currentVal, bestVal, staticKey, currentPtr, bestPtr end function NameMenu() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local currentName = getCurrentName() local choice = gg.choice({ "🌟 Change Name", "🌟 Enable Invisible Name", "🌟 Restore Original Name", "🔙 Return" }, nil, "Current Name: " .. currentName .. "") if not choice or choice == 4 then return PlayerMenu() end local getPlayerNamePtr = gg.getValues({{ address = BaseGameStatus + 0x38, flags = 32 }})[1].value if choice == 1 then local input = gg.prompt({ "Edit Name:" }, {currentName}, {"text"}) if not input or input[1] == "" then return NameMenu() end local name = input[1] local tempString = {} local byteSize = 0 for _, code in utf8.codes(name) do local encoded = utf8.char(code) local bytes = {encoded:byte(1, -1)} if byteSize + #bytes > 12 then gg.alert("❌ Name can only be 12 bytes long!") return NameMenu() end for _, b in ipairs(bytes) do table.insert(tempString, b) byteSize = byteSize + 1 end end while #tempString < 12 do table.insert(tempString, 0) end local toEdit = {{ address = getPlayerNamePtr, flags = 1, value = byteSize * 2 }} for i = 1, #tempString do toEdit[#toEdit + 1] = { address = getPlayerNamePtr + i, flags = 1, value = tempString[i] } end gg.setValues(toEdit) gg.alert("✅ Name changed to " .. name) return NameMenu() elseif choice == 2 then local currentNameBytes = {} for i = 0, 12 do currentNameBytes[#currentNameBytes + 1] = { address = getPlayerNamePtr + i, flags = 1 } end local readBytes = gg.getValues(currentNameBytes) if readBytes[1].value == 2 and readBytes[2].value == 32 then gg.alert("⚠️ Name is already invisible!") return NameMenu() end BackupNameBytes = {} for i = 1, #readBytes do table.insert(BackupNameBytes, { address = readBytes[i].address, flags = readBytes[i].flags, value = readBytes[i].value }) end local toEdit = { { address = getPlayerNamePtr, flags = 1, value = 2 }, { address = getPlayerNamePtr + 1, flags = 1, value = 32 } } for i = 2, 12 do toEdit[#toEdit + 1] = { address = getPlayerNamePtr + i, flags = 1, value = 0 } end gg.setValues(toEdit) gg.alert("✅ Name set Invisible!") return NameMenu() elseif choice == 3 then if not BackupNameBytes or #BackupNameBytes == 0 then gg.alert("❌ Not even enabled!") return NameMenu() end gg.setValues(BackupNameBytes) gg.alert("✅ Original name successfully restored!") return NameMenu() end end function flagmenu() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local currentFlag = getCurrentFlag() local choice = gg.choice({ "🌟Enter Any Flag (Emoji / Letters)", "🌟Set Brown Flag", "🌟Set Invisible Flag", "🌟Set Black Flag", "🌟Set Fingersoft Flag (NO BAN BUT TEMPORARY)", "🔙Return" }, nil, "Current Flag: " .. currentFlag .. " ") if choice == nil or choice == 6 then return PlayerMenu() end if choice == 1 then local input = gg.prompt({ "Edit Flag:" }, {""}, {"text"}) if not input or input[1] == "" then return flagmenu() end local text = input[1] local chars = {} for _, code in utf8.codes(text) do if code >= 127462 and code <= 127487 then table.insert(chars, code - 127462 + 65) elseif (code >= 65 and code <= 90) or (code >= 97 and code <= 122) then if code >= 97 and code <= 122 then code = code - 32 end table.insert(chars, code) end end if #chars < 2 then gg.alert("❌ Invalid input! Please enter a flag emoji or 2 country letters.") return flagmenu() end local flagPtr = gg.getValues({{ address = BaseGameStatus + 0x40, flags = 32 }})[1].value if flagPtr == 0 then gg.alert("❌ Flag pointer is 0. Try changing your flag manually in-game once first!") return flagmenu() end gg.setValues({ { address = flagPtr + 1, flags = 1, value = chars[1] }, { address = flagPtr + 2, flags = 1, value = chars[2] } }) gg.alert("✅ Flag changed successfully!") return flagmenu() end if choice == 2 then BrownFlag() end if choice == 3 then InvisibleFlag() end if choice == 4 then BlackFlag() end if choice == 5 then FingersoftFlag() end end function FingersoftFlag() local choice = gg.choice({"✅Enable Fingersoft Flag", "❌Disable Fingersoft Flag", "🔙Return"}, nil, "Enable or Disable the Fingersoft Flag!") if choice == nil or choice == 3 then return flagmenu() end if choice == 1 then local choice2 = gg.choice({"➡️Continue", "🔙Return"}, nil, "For this to work you need to set the German Flag!") if choice2 == nil or choice2 == 2 then return flagmenu() end if choice2 == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("48;32::5", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("48;32", gg.TYPE_FLOAT) gg.clearResults() gg.searchNumber("252;172::5", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("2;240", gg.TYPE_FLOAT) gg.clearResults() gg.alert("✅Enabled Fingersoft Flag!") end elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;240", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("252;172", gg.TYPE_FLOAT) gg.clearResults() gg.alert("❌Disabled Fingersoft Flag!") end end function BrownFlag() local choice = gg.choice({"✅Enable Brown Flag", "❌Disable Brown Flag", "🔙Return"}, nil, "Enable or Disable the Brown Flag!") if choice == nil or choice == 3 then return flagmenu() end if choice == 1 then local choice2 = gg.choice({"➡️Continue", "🔙Return"}, nil, "For this to work you need to set the Angolian Flag! Are you done with that?") if choice2 == nil or choice2 == 2 then return flagmenu() end if choice2 == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("6709508", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262912", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("7299332", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262913", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("7823620", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262914", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("6644228", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262915", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("7168516", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262916", gg.TYPE_DWORD) gg.clearResults() gg.alert("✅Enabled Brown Flag!") end elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("8262912", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("6709508", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262913", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("7299332", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262914", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("7823620", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262915", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("6644228", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262916", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("7168516", gg.TYPE_DWORD) gg.clearResults() gg.alert("❌Disabled Brown Flag") end end local flag_active = false local original_flag_value = nil function toggleFlag() local flagptr_addr = BaseGameStatus + 0x40 local flagptr_val = gg.getValues({{address = flagptr_addr, flags = gg.TYPE_QWORD}})[1].value if flagptr_val ~= 0 then if not flag_active then local current = gg.getValues({{address = flagptr_val, flags = gg.TYPE_DWORD}})[1].value original_flag_value = current local flag = { address = flagptr_val, flags = gg.TYPE_DWORD, value = 0, freeze = true } gg.setValues({flag}) gg.addListItems({flag}) flag_active = true gg.alert("✅ Enabled Invisible Flag!") else local restoreFlag = { address = flagptr_val, flags = gg.TYPE_DWORD, value = original_flag_value or 0, freeze = false } gg.setValues({restoreFlag}) gg.addListItems({restoreFlag}) flag_active = false gg.alert("❌ Disabled Invisible Flag!") end end end function InvisibleFlag() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local choice = gg.choice({ "✅ Enable Invisible Flag", "❌ Disable Invisible Flag", "🔙 Return" }, nil, "Enable or Disable the Invisible Flag!") if choice == nil or choice == 3 then return flagmenu() end if choice == 1 then if not flag_active then toggleFlag() else gg.alert("⚠️ Already enabled!") end end if choice == 2 then if flag_active then toggleFlag() else gg.alert("⚠️ Already disabled!") end end end function BlackFlag() local choice = gg.choice({"✅Enable Black Flag", "❌Disable Black Flag", "🔙Return"}, nil, "Enable or Disable the Black Flag!") if choice == nil or choice == 3 then return flagmenu() end if choice == 1 then local choice2 = gg.choice({"➡️Continue", "🔙Return"}, nil, "For this to work you need to set the Ukranian Flag! Are you done with that?") if choice2 == nil or choice2 == 2 then return flagmenu() end if choice2 == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("4,911,738,344,725,676,032", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100000) gg.editAll("-569,358,608", gg.TYPE_QWORD) gg.clearResults() gg.toast("✅Enabled Black Flag!") end elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("-569,358,608", gg.TYPE_QWORD) gg.getResults(gg.getResultsCount()) gg.editAll("4,911,738,344,725,676,032", gg.TYPE_QWORD) gg.alert("❌Disabled Black Flag!") end end function hackgp() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local input = gg.prompt( {"Edit Garage Power:"}, {16326}, {"number"} ) if not input then return PlayerMenu() end local amount = tonumber(input[1]) if not amount then return PlayerMenu() end if amount > 16326 then gg.alert("❌ Limit is 16326!") return PlayerMenu() end local finalAddr = BaseGameStatus + 0x4F4 gg.setValues({ {address = finalAddr, flags = gg.TYPE_DWORD, value = amount} }) gg.alert("✅ Look at your profile!") end function editHighestRank(currentRank) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Highest Rank:"}, {currentRank}, {"number"} ) if not prompt then return PlayerMenu() end local newRank = tonumber(prompt[1]) if not newRank then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x200, flags = 16, value = newRank * 0.001 }}) gg.toast("✅ Highest Rank set to " .. string.format("%.0f", newRank)) end function editTotalDistance(currentDistance) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Total Distance:"}, {currentDistance}, {"number"} ) if not prompt then return PlayerMenu() end local newDistance = tonumber(prompt[1]) if not newDistance then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x64, flags = 16, value = newDistance }}) gg.toast("✅ Total Distance set to " .. string.format("%.0f", newDistance)) end function editTotalMatchesWon(currentWon) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Total Matches Won:"}, {currentWon}, {"number"} ) if not prompt then return PlayerMenu() end local newWon = tonumber(prompt[1]) if not newWon then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x1F4, flags = gg.TYPE_DWORD, value = newWon }}) gg.toast("✅ Total Matches Won set to " .. string.format("%.0f", newWon)) end function editChallengesWon(currentChal) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Challenges Won:"}, {currentChal}, {"number"} ) if not prompt then return PlayerMenu() end local newChal = tonumber(prompt[1]) if not newChal then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x310, flags = gg.TYPE_DWORD, value = newChal }}) gg.toast("✅ Challenges Won set to " .. string.format("%.0f", newChal)) end function editBackFlips(currentVal) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Back Flips:"}, {currentVal}, {"number"} ) if not prompt then return PlayerMenu() end local newVal = tonumber(prompt[1]) if not newVal then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x54, flags = gg.TYPE_DWORD, value = newVal }}) gg.toast("✅ Back Flips set to " .. string.format("%.0f", newVal)) end function editNeckFlips(currentVal) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Neck Hurt Flips:"}, {currentVal}, {"number"} ) if not prompt then return PlayerMenu() end local newVal = tonumber(prompt[1]) if not newVal then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x50, flags = gg.TYPE_DWORD, value = newVal }}) gg.toast("✅ Neck Hurt Flips set to " .. string.format("%.0f", newVal)) end function editEventsJoined(currentVal) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Events Joined:"}, {currentVal}, {"number"} ) if not prompt then return PlayerMenu() end local newVal = tonumber(prompt[1]) if not newVal then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x3B4, flags = gg.TYPE_DWORD, value = newVal }}) gg.toast("✅ Events Joined set to " .. string.format("%.0f", newVal)) end function editEventPoints(currentVal) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Event Points:"}, {currentVal}, {"number"} ) if not prompt then return PlayerMenu() end local newVal = tonumber(prompt[1]) if not newVal then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x3B8, flags = gg.TYPE_DWORD, value = newVal }}) gg.toast("✅ Event Points set to " .. string.format("%.0f", newVal)) end function editEventsCompleted(currentVal) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Events Completed:"}, {currentVal}, {"number"} ) if not prompt then return PlayerMenu() end local newVal = tonumber(prompt[1]) if not newVal then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x3BC, flags = gg.TYPE_DWORD, value = newVal }}) gg.toast("✅ Events Completed set to " .. string.format("%.0f", newVal)) end function getBestSeason() if not BaseGameStatus then return 0 end local res = gg.getValues({{address = BaseGameStatus + 0x438, flags = gg.TYPE_FLOAT}}) if res and res[1] then return math.floor(res[1].value * 1000 + 0.5) end return 0 end function editBestSeason(currentValue) if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return PlayerMenu() end local prompt = gg.prompt( {"Edit Highest Rank (1 = 1000) :"}, {currentValue}, {"number"} ) if not prompt then return PlayerMenu() end local newRank = tonumber(prompt[1]) if not newRank then return PlayerMenu() end gg.setValues({{ address = BaseGameStatus + 0x438, flags = 16, value = newRank }}) gg.toast("✅ Highest Rank set to " .. string.format("%.0f", newRank)) end function HighestWinStreak() local currentVal, bestVal, staticKey, currentPtr, bestPtr = getWinStreakValues() if bestPtr == 0 then gg.alert("❌ Your current Win Streak must be at least 1!") return PlayerMenu() end local prompt = gg.prompt({ "Edit Highest Win Streak:" }, { tostring(bestVal) }, { "number" }) if not prompt then return PlayerMenu() end local newBest = math.floor(tonumber(prompt[1]) or 0) newBest = math.max(0, math.min(2147483647, newBest)) gg.setValues({ { address = bestPtr + 0x18, flags = gg.TYPE_DWORD, value = staticKey }, { address = bestPtr + 0x1C, flags = gg.TYPE_DWORD, value = newBest }, { address = bestPtr + 0x20, flags = gg.TYPE_DWORD, value = 0 }, { address = bestPtr + 0x24, flags = gg.TYPE_DWORD, value = 0 }, }) gg.alert("✅Highest Win Streak set to " .. newBest .. "!\n❗Switch Game Language to apply!") return PlayerMenu() end function PlayerMenu() if not BaseGameStatus then gg.alert("❌ Couldn't find Gamestatus!\n❗This function only works with Game Status! ") return MainMenu() end local currentVal, bestVal = getWinStreakValues() local stats = { nameNow = getCurrentName(), flagNow = getCurrentFlag(), gpNow = getCurrentGP(), rankNow = getHighestRank(), bestseason = getBestSeason(), winstreak = bestVal, distNow = getTotalDistance(), wonNow = getTotalMatchesWon(), chalNow = getChallengesWon(), backFlipsNow = getBackFlips(), neckFlipsNow = getNeckFlips(), eventsJoinedNow = getEventsJoined(), eventPointsNow = getEventPoints(), eventsCompletedNow = getEventsCompleted() } local choice = gg.choice({ "🌟 Name: " .. stats.nameNow, "🌟 Flag: " .. stats.flagNow, "🌟 Garage Power: " .. stats.gpNow, "🌟 Highest Rank: " .. stats.rankNow, "🌟 Best Season: " .. stats.bestseason, "🌟 Highest Winstreak", "🌟 Total Distance: " .. stats.distNow, "🌟 Races Won: " .. stats.wonNow, "🌟 Challenges Won: " .. stats.chalNow, "🌟 Back Flips: " .. stats.backFlipsNow, "🌟 Neck Flips: " .. stats.neckFlipsNow, "🌟 Events Joined: " .. stats.eventsJoinedNow, "🌟 Event Points: " .. stats.eventPointsNow, "🌟 Event Races: " .. stats.eventsCompletedNow, "🔙 Return" }, nil, "Player Menu") if choice == nil or choice == 15 then return MainMenu() end if choice == 1 then NameMenu() elseif choice == 2 then flagmenu() elseif choice == 3 then hackgp() elseif choice == 4 then editHighestRank(stats.rankNow) elseif choice == 5 then editBestSeason(stats.bestseason) elseif choice == 6 then HighestWinStreak() elseif choice == 7 then editTotalDistance(stats.distNow) elseif choice == 8 then editTotalMatchesWon(stats.wonNow) elseif choice == 9 then editChallengesWon(stats.chalNow) elseif choice == 10 then editBackFlips(stats.backFlipsNow) elseif choice == 11 then editNeckFlips(stats.neckFlipsNow) elseif choice == 12 then editEventsJoined(stats.eventsJoinedNow) elseif choice == 13 then editEventPoints(stats.eventPointsNow) elseif choice == 14 then editEventsCompleted(stats.eventsCompletedNow) end end function menu1() local options = { "👕Fake Unlock", "🌟Fake VIP", "⚡Free Upgrades", "🛡️No Die", "⚙️Hack Scrap", "🛠️Hack Parts", "🚀Fly Hack" } if archType == 1 then table.insert(options, "😱Fake Unban (ARMV8 ONLY)") end table.insert(options, "🎫 Tickets Editor") table.insert(options, "❗Ban Account") table.insert(options, "🚗Vehicle Hacks") table.insert(options, "🔙Return") local choice = gg.choice(options, nil, "1️⃣Menu made by eomthix") if choice == nil then return MainMenu() end if archType == 1 then if choice == 1 then runFakeUnlock() elseif choice == 2 then runfakevip() elseif choice == 3 then FreeUpgrades() elseif choice == 4 then nodie() elseif choice == 5 then HackScrapMenu() elseif choice == 6 then HackParts() elseif choice == 7 then FlyHack() elseif choice == 8 then UnbanAccount() elseif choice == 9 then TicketsEditor() elseif choice == 10 then banaccount() elseif choice == 11 then VehicleHacks() elseif choice == 12 then MainMenu() end else if choice == 1 then runFakeUnlock() elseif choice == 2 then runfakevip() elseif choice == 3 then FreeUpgrades() elseif choice == 4 then nodie() elseif choice == 5 then HackScrapMenu() elseif choice == 6 then HackParts() elseif choice == 7 then FlyHack() elseif choice == 8 then TicketsEditor() elseif choice == 9 then banaccount() elseif choice == 10 then VehicleHacks() elseif choice == 11 then MainMenu() end end end function VehicleHacks() local choice = gg.choice({ "🔥Glider Fly Hack", --1 "🔥Hover Bike Fly Hack", --2 "🔥Hover Bike Brake Boost", --3 "🔥Hill Climber Big Tires", --4 "🔥Bus Non-Breakable Cover", --5 "🔙Return" --6 },nil, "Vehicle Hacks Menu") if choice == nil or choice == 6 then return menu1() end if choice == 1 then GliderFlyHack() elseif choice == 2 then HoverFlyHack() elseif choice == 3 then HoverBrakeHack() elseif choice == 4 then HillTiresHack() elseif choice == 5 then BusCoverHack() end end local originalGliderValues = nil local savedHoverbikeFly = nil local savedHoverbikeBrakeBoost = nil local savedBigTires = nil local savedBusCover = nil function GliderFlyHack() local choice = gg.choice({ "✅Enable Glider Fly Hack", "❌Disable Glider Fly Hack", "🔙Return" }, nil, "Glider Fly Hack") if choice == nil or choice == 3 then return VehicleHacks() end if choice == 1 then gg.clearResults() gg.setRanges(16) gg.searchNumber("h CD CC 4C 3E CD CC 4C 3D 0A D7 A3 3D 0A D7 A3 3D", 1) local count = gg.getResultCount() if count == 0 then gg.alert("❌No Results!") return GliderFlyHack() end local results = gg.getResults(count) originalGliderValues = {} for _, item in ipairs(results) do local bytesToSave = {} for offset = 0, 15 do bytesToSave[#bytesToSave + 1] = { address = item.address + offset, flags = 1 } end local currentBytes = gg.getValues(bytesToSave) for _, b in ipairs(currentBytes) do table.insert(originalGliderValues, { address = b.address, flags = b.flags, value = b.value }) end end gg.editAll("h CD CC 4C 3E CD CC 4C 3D 00 00 40 BF 00 00 40 BF", 1) gg.alert("✅Enabled Glider Fly Hack!") elseif choice == 2 then if originalGliderValues ~= nil then gg.setValues(originalGliderValues) originalGliderValues = nil gg.alert("❌Disabled Glider Fly Hack!") else gg.alert("❌Nothing to restore!") end end end function HoverFlyHack() local choice = gg.choice({ "✅ Enable Hoverbike Fly Hack", "❌ Disable Hoverbike Fly Hack", "🔙 Return" }, nil, "Hoverbike Fly Hack") if choice == nil or choice == 3 then return VehicleHacks() end if choice == 1 then gg.clearResults() gg.setRanges(gg.REGION_C_DATA | gg.REGION_C_ALLOC) gg.searchNumber("20;150;1000::9", gg.TYPE_FLOAT) local count = gg.getResultCount() if count > 0 then gg.refineNumber("1000", gg.TYPE_FLOAT) local rCount = gg.getResultCount() if rCount > 0 then local results = gg.getResults(rCount) savedHoverbikeFly = {} for _, v in ipairs(results) do table.insert(savedHoverbikeFly, {address = v.address, flags = v.flags, value = v.value}) end gg.editAll("99999999", gg.TYPE_FLOAT) gg.alert("✅ Hoverbike Fly Hack Enabled!") else gg.alert("❌ No Results!") return HoverFlyHack() end else gg.alert("❌ No Results!") return HoverFlyHack() end gg.clearResults() elseif choice == 2 then if savedHoverbikeFly ~= nil then gg.setValues(savedHoverbikeFly) savedHoverbikeFly = nil gg.alert("❌ Hoverbike Fly Hack Disabled!") else gg.alert("❌ Nothing to restore!") end end end function HoverBrakeHack() local choice = gg.choice({ "✅ Enable Hoverbike Brake Boost", "❌ Disable Hoverbike Brake Boost", "🔙 Return" }, nil, "Hoverbike Brake Boost") if choice == nil or choice == 3 then return VehicleHacks() end if choice == 1 then gg.clearResults() gg.setRanges(8) gg.searchNumber("h 00 00 80 40 00 00 C0 3F", 1) local count = gg.getResultCount() if count > 0 then local results = gg.getResults(50) savedHoverbikeBrakeBoost = {} for _, v in ipairs(results) do local bytesToSave = {} for offset = 0, 7 do bytesToSave[#bytesToSave + 1] = { address = v.address + offset, flags = 1 } end local currentBytes = gg.getValues(bytesToSave) for _, b in ipairs(currentBytes) do table.insert(savedHoverbikeBrakeBoost, { address = b.address, flags = b.flags, value = b.value }) end end gg.editAll("h 00 40 9C C5 00 00 C0 3F", 1) gg.alert("✅ Hoverbike Brake Boost Enabled!") else gg.toast("❌ No Results!") return HoverBrakeHack() end gg.clearResults() elseif choice == 2 then if savedHoverbikeBrakeBoost ~= nil then gg.setValues(savedHoverbikeBrakeBoost) savedHoverbikeBrakeBoost = nil gg.alert("❌ Hoverbike Brake Boost Disabled!") else gg.alert("❌ Nothing to restore!") end end end function HillTiresHack() local choice = gg.choice({ "✅ Enable Hill Climber Big Tires", "❌ Disable Hill Climber Big Tires", "🔙 Return" }, nil, "Hill Climber Big Tires") if choice == nil or choice == 3 then return VehicleHacks() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1.69999992847", gg.TYPE_FLOAT) local count1 = gg.getResultCount() local res1 = count1 > 0 and gg.getResults(count1) or {} gg.clearResults() gg.searchNumber("1.83749997616", gg.TYPE_FLOAT) local count2 = gg.getResultCount() local res2 = count2 > 0 and gg.getResults(count2) or {} if #res1 == 0 and #res2 == 0 then gg.alert("❌ No Results!") end savedBigTires = {} for _, item in ipairs(res1) do table.insert(savedBigTires, { address = item.address, flags = item.flags, value = item.value }) gg.setValues({{ address = item.address, flags = item.flags, value = 1.88012 }}) end for _, item in ipairs(res2) do table.insert(savedBigTires, { address = item.address, flags = item.flags, value = item.value }) gg.setValues({{ address = item.address, flags = item.flags, value = 2.00128 }}) end gg.alert("✅ Enabled Hill Climber Big Tires!") gg.clearResults() elseif choice == 2 then if savedBigTires ~= nil then gg.setValues(savedBigTires) savedBigTires = nil gg.alert("❌ Disabled Hill Climber Big Tires!") else gg.alert("❌ Nothing to restore!") end end end function BusCoverHack() local choice = gg.choice({ "✅ Enable Bus Non-Breakable Cover", "❌ Disable Bus Non-Breakable Cover", "🔙 Return" }, nil, "Bus Non-Breakable Cover") if choice == nil or choice == 3 then return VehicleHacks() end if choice == 1 then gg.clearResults() gg.setRanges(8) gg.searchNumber("0;1;0.5;0.20000000298:13", gg.TYPE_FLOAT) local count = gg.getResultCount() if count > 0 then gg.refineNumber("0.5", gg.TYPE_FLOAT) local rCount = gg.getResultCount() if rCount > 0 then local results = gg.getResults(rCount) savedBusCover = {} for _, v in ipairs(results) do table.insert(savedBusCover, { address = v.address, flags = v.flags, value = v.value }) end gg.editAll("1000000", gg.TYPE_FLOAT) gg.alert("✅ Enabled Bus Non Breakable Cover!") else gg.alert("❌ No Results!") return BusCoverHack() end else gg.alert("❌ No Results!") return BusCoverHack() end gg.clearResults() elseif choice == 2 then if savedBusCover ~= nil then gg.setValues(savedBusCover) savedBusCover = nil gg.alert("❌ Disabled Bus Non Breakable Cover!") else gg.alert("❌ Nothing to restore!") end end end local emuFreeUpgradesBackup = nil local applied = {} local function applyEdit(edit) local offset = tonumber(edit[1]:gsub("0x", ""), 16) if not offset or not LIB_BASE then gg.alert("❌ LIB_BASE missing!") return end local addr = LIB_BASE + offset local val = edit[2]:gsub("r$", "") .. "r" if applied[addr] == nil then local current = gg.getValues({{address = addr, flags = gg.TYPE_DWORD}}) if current and current[1] then applied[addr] = current[1].value end end gg.setValues({{address = addr, flags = gg.TYPE_DWORD, value = val}}) end local function revertEdit(edit) local offset = tonumber(edit[1]:gsub("0x", ""), 16) if not offset or not LIB_BASE then return end local addr = LIB_BASE + offset local orig = applied[addr] if orig ~= nil then gg.setValues({{address = addr, flags = gg.TYPE_DWORD, value = orig}}) applied[addr] = nil end end local function toggle(func, enable) if not func or not func.edits then return end for _, edit in ipairs(func.edits) do if enable then applyEdit(edit) else revertEdit(edit) end end gg.toast((enable and "✅ Enabled " or "❌ Disabled ") .. func.name) end local function TriggerPatch(patchName, enable) if not LIB_BASE then gg.alert("❌ LIB_BASE missing!") return end if not PATCHES then return end local patch = nil for _, p in ipairs(PATCHES) do if p.name == patchName then patch = p break end end if patch then toggle(patch, enable) end end function FreeUpgrades() local currentVersion = gethcr2version() local vData = CNF and CNF.versions and CNF.versions[currentVersion] if not vData then gg.alert("❌ Version " .. currentVersion .. " is not supported!") return menu1() end if archType == 1 then local choice = gg.choice({"✅ Enable Free Upgrades", "❌ Disable Free Upgrades", "🔙 Return"}, nil, "Free Upgrades for ARMV8") if choice == 1 then TriggerPatch("Free Upgrades", true) elseif choice == 2 then TriggerPatch("Free Upgrades", false) elseif choice == 3 or choice == nil then return menu1() end elseif archType == 2 then local emuData = nil for _, patch in ipairs(vData.PATCHES) do if patch.name == "Free Upgrades (Emu)" then emuData = patch break end end if not emuData then gg.alert("❌ No Data found!") return menu1() end local menu = gg.choice({ "✅ Enable Free Upgrades", "❌ Disable Free Upgrades", "🔙 Return" }, nil, "Free Upgrades x86_64") if menu == nil or menu == 3 then return menu1() end local targetList = emuData.edits if not targetList then gg.alert("❌ No edits found!") return menu1() end if menu == 1 then if emuFreeUpgradesBackup == nil then emuFreeUpgradesBackup = {} for index, entry in ipairs(targetList) do local addr = LIB_BASE + tonumber(entry[1]) local val = entry[2] if type(val) == "string" and val:find("r") then local cleanHex = val:gsub("r", "") local byteCount = #cleanHex / 2 local readList = {} for i = 1, byteCount do table.insert(readList, { address = addr + (i - 1), flags = gg.TYPE_BYTE }) end local originalBytes = gg.getValues(readList) emuFreeUpgradesBackup[index] = { type = "bytes", data = originalBytes } end end end for _, entry in ipairs(targetList) do local addr = LIB_BASE + tonumber(entry[1]) local val = entry[2] if type(val) == "string" and val:find("r") then local cleanHex = val:gsub("r", "") local modifications = {} for i = 1, #cleanHex, 2 do local byteStr = cleanHex:sub(i, i + 1) table.insert(modifications, { address = addr + (i - 1) / 2, flags = gg.TYPE_BYTE, value = "h" .. byteStr }) end gg.setValues(modifications) end end gg.alert("✅ Enabled Free Upgrades!") elseif menu == 2 then if emuFreeUpgradesBackup == nil then gg.alert("❌ Nothing to restore!") return menu1() end for index, entry in ipairs(targetList) do local backup = emuFreeUpgradesBackup[index] if backup then if backup.type == "bytes" then gg.setValues(backup.data) elseif backup.type == "float" then local addr = LIB_BASE + tonumber(entry[1]) gg.setValues({{ address = addr, flags = gg.TYPE_FLOAT, value = backup.data }}) end end end gg.alert("❌ Disabled Free Upgrades!") end else gg.alert("❌ Unknown Architecture!") end end function UnbanAccount() gg.alert("❗Use it only on the Startup Screen for HCR2!") gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber('h F7 03 13 AA 0A 75 0F 39', gg.TYPE_BYTE) gg.getResults(gg.getResultsCount()) gg.editAll('h F7 03 13 AA 1F 75 0F 39', gg.TYPE_BYTE) gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber('h 80 00 00 54 20 00 80 52 06 00 00 14 88 00 00 B4 08 A5 4C 39 00 7D 07 53', gg.TYPE_BYTE) gg.getResults(gg.getResultsCount()) gg.editAll('h 80 00 00 54 00 00 80 52 06 00 00 14 88 00 00 B4 08 A5 4C 39 00 00 80 52', gg.TYPE_BYTE) gg.clearResults() gg.alert("✅Now your temporary unbanned!") end original = {} function runFakeUnlock() if archType == 1 then if NEEDS_UPDATE or CNF.status_2 == "OFF" then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_2_msg) if msg then gg.alert(msg) end return end elseif archType == 2 then if NEEDS_UPDATE or CNF.status_3 == "OFF" then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_3_msg) if msg then gg.alert(msg) end return end else gg.alert("❌ Unsupported Architecture!") return end if CNF and CNF.logic and CNF.logic.fakeUnlock then local f, err = load(CNF.logic.fakeUnlock) if f then f() else gg.alert("❌ Error in Fake Unlock logic!") end else gg.alert("❌ Fake Unlock logic not found in config!") end end function runfakevip() if archType == 1 then if NEEDS_UPDATE or CNF.status_4 == "OFF" then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_4_msg) if msg then gg.alert(msg) end return end elseif archType == 2 then if NEEDS_UPDATE or CNF.status_5 == "OFF" then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_5_msg) if msg then gg.alert(msg) end return end else gg.alert("❌ Unsupported Architecture!") return end if CNF and CNF.logic and CNF.logic.fakeVIP then local f, err = load(CNF.logic.fakeVIP) if f then f() else gg.alert("❌ Error in Fake VIP logic: " .. tostring(err)) end else gg.alert("❌ Fake VIP logic not found in config!") end end function About() local choice = gg.choice({ "⁉️ FAQ", "👤 Contact and Support", "🔗 Links", "📜 Credits", "⚡ All Functions listed", "🔙Return" }, nil, "Every Information about the Script can be found here!") if choice == nil or choice == 6 then return MainMenu() end if choice == 1 then local faqText = [[ ⁉️ FAQ: ❓ Which Versions are supported? This script is designed to be compatible with every game version. How? Instead of releasing a New Script every Update, I have all Offsets stored on a private Pastebin document. When a new update comes out I will just edit the pastebin and you can use the script again without any problems! This means that you now have a script for every HCR2 Version and unlike other scripts, such as the Zak Script, where the owner is way too lazy to update the file for every new version. ❓ What is this? This is a script made by eomthix aka erik. It features a lot of different functions when it comes to hacking Hill Climb Racing 2! ❓ Why is it not working? If something is not working for you make sure to contact me and I will fix it: _________________________________________________________________ 📢 Contact & Support: 🎮 Discord: eomthix ✈️ Telegram: t.me/eomthix 📺 Youtube: https://www.youtube.com/@erik_eomthix 🌐 Discord Server: https://discord.gg/Zryfyd4s8z 👥 Telegram Group: t.me/hcr2ggz 📧 Email: Askmeforquestions@outlook.de _________________________________________________________________ ❓ Which Devices can run this? You must have either a ARM V8 Device or a x86_64 emulator. If you don't have any of these most script functions will not work for you! You can use Virtual Spaces like Multi App Ultra or LD Player to get access to these devices if you don't have them. Also make sure that your device has a working C Alloc Range with Bytes otherwise many functions will not be working, since most are made for C Alloc. ❓ Which functions work on both Emulator and Phone? All Functions should be working on Emulator and Phone except Fake Unban. This Function only work on a ARMV8 Phone! ]] gg.alert(faqText, "OK") return About() elseif choice == 2 then local contactText = [[ 📢 Contact & Support: 🎮 Discord: eomthix ✈️ Telegram: t.me/eomthix 🌐 Discord Server: https://discord.gg/Zryfyd4s8z 👥 Telegram Group: t.me/hcr2ggz 📧 Email: Askmeforquestions@outlook.de Check "Links" to copy these directly! ]] gg.alert(contactText, "OK") return About() elseif choice == 3 then local menu = gg.choice({ "🎮 Discord Profile", "✈️ Telegram Profile", "🌐 Discord Server", "👥 Telegram Group", "📧 Copy Email Address", "🔙 Return" }, nil, "Select a contact to copy it to your clipboard:") if menu == nil or menu == 6 then return About() end local toCopy = "" local name = "" if menu == 1 then toCopy = "eomthix" name = "Discord Username" elseif menu == 2 then toCopy = "https://t.me/eomthix" name = "Telegram Link" elseif menu == 3 then toCopy = "https://discord.gg/Zryfyd4s8z" name = "Discord Server Link" elseif menu == 4 then toCopy = "https://t.me/hcr2ggz" name = "Telegram Group Link" elseif menu == 5 then toCopy = "Askmeforquestions@outlook.de" name = "Email Address" end if toCopy ~= "" then gg.copyText(toCopy) gg.toast("✅ Copied " .. name) end return About() elseif choice == 4 then local creditsText = [[ 📜 Credits: Thanks to: - FMmouse - Mikey - Sr. Romero - Sjscoder - Lazor - Quin - AMR - Truin - Timerise - Profinoobru - Felix - No Fear - Rei - khGentle - Consti - Lan9118 - Ryzen - Dani - Gan - Zak - Fhnkmy - Dxzzy - DoNuTZz - Schmucker - Gashi - Erik and many more... ]] gg.alert(creditsText, "OK") return About() elseif choice == 5 then local functionsText = [[ ⚡ All Functions: - Fake Unlock ARMV8 - Fake Unlock x86_64 - Free Upgrades ARMV8 - Free Upgrades x86_64 - No Die - Hack Scrap - Hack Parts - Fly Hack - Tickets Editor - Ban Account - Fake Unban - Vehicle Hacks - Fake VIP ARMV8 - Fake VIP x86_64 - Max Out All Tunes ARMV8 - Max Out All Tunes x86_64 - Unlock All Vehicles - Unlock Any Verhicle Type - Unlock Any Verhicle by chocie - Adjust Parts Slot - Max Out All Masteries ARMV8 - Max Out All Masteries x86_64 - Remove Mastery Time - Swap Masteries - Set Fake Distance - Max Out All Parts ARMV8 - Max Out All Parts x86_64 - 1XP Mastery + No GP for Upgrades - Hack Drop Mastery in Chest - Unlock Garage Cosmetics - Hide Icons - Swap Parts - Swap Adventure Maps V1 - Swap Adventure Maps V2 - Swap Cup Maps - Verhicle Stats Editor - Set Distance - Hack Team Event Criteria - Verhicle Speed - Real VIP (Ban) - Get All Rank Rewards for Free - Remove Blacklist for Research Points - Auto Detach - Free Chests - Coins V1 - Coins V2 - Coins V3 - Gems V1 - Remove Coins or Gems - Buy 2 Bilion Parts - Specific Rarity of Parts in the Chest - Chest Swaps (Rare, Epic, Legendary, Style, Mythic) - Free Purchases - Parts Drop in Epic Chest - Fake Canyoneer - Gravity Menu - Adventure Chest Hacks V1 - Adventure Chest Hacks V2 - Adventure Chest Hacks V3 - Flat Ground - Speed Hack - Fuel Hacks - 3D Road - Get Tunes from Replays - Teleport Menu - Set Fuel & Coins - Autowin ARMV8 - Autowin x86_64 - Force Boss ARMV8 - Force Boss x86_64 - Easy Cup Mode (Drive Alone) - Fake Rank - Cup Points Reward Hack - Unlimited Tasks ARMV8 - Unlimited Tasks x86_64 - Force 1km Cup - Force Any Cup Race - League Quest Hacks (Coins/Gems) - Set Countdown for Cups - Team Spirit Chest Hack - Change Name - Invisible Name - Edit Garage Power - Edit Highest Rank - Edit Total Distance - Edit Races Won - Edit Challenges Won - Edit Back Flips - Edit Neck Flips - Edit Events Joined - Edit Event Points - Edit Event Races - Public Event Menu - PE MOD - Debug Mode - Calculate Team Event Score System - Download Helpful Tools and Stuff ]] gg.alert(functionsText, "OK") return About() end end finalResults = {} function HCR7() local awr = gg.choice({ "🔹 Start (DO THIS FIRST!)", "🔹 Scrap", "🔹 Event Score", "🔹 Special Tickets", "🔹 Skip Ads", "🔹 Adventure Token", "🔹 Challenge Tickets", "🔹 Research Points", "🔹 Blue Print", "🔢 Set Amount", "🔙 Return" }, nil, "🎯 Team Spirit Chest Menu") if awr == nil then return MainMenu() end if awr == 1 then WRK1() end if awr == 2 then WRK2() end if awr == 3 then WRK3() end if awr == 4 then WRK4() end if awr == 5 then WRK5() end if awr == 6 then WRK6() end if awr == 7 then WRK7() end if awr == 8 then WRK8() end if awr == 9 then WRK9() end if awr == 10 then WRK10() end if awr == 11 then return MainMenu() end end function WRK1() gg.setVisible(false) gg.clearResults() if not LIB_BASE then gg.alert("❌ Couldn't find Lib!") return MainMenu() end local addr = LIB_BASE + 0x66A5AC gg.setValues({ {address = addr, flags = gg.TYPE_FLOAT, value = 0.0} }) gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("30,064,772,072", gg.TYPE_QWORD) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then gg.toast("❌ No Results!") return MainMenu() end for i, v in ipairs(results) do gg.setValues({ {address = v.address + 0x4, value = 18, flags = gg.TYPE_DWORD} }) end gg.clearResults() gg.searchNumber("4,296,032,649,216", gg.TYPE_QWORD) local results2 = gg.getResults(gg.getResultsCount()) if #results2 == 0 then gg.toast("❌ No Results!") return MainMenu() end gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("0.1;625", gg.TYPE_FLOAT) gg.refineNumber("0.1", gg.TYPE_FLOAT) local res = gg.getResults(100) if #res ~= 0 then gg.editAll("0", gg.TYPE_FLOAT) end gg.clearResults() finalResults = results2 gg.alert("✅ Scan Done!") end -- Scrap function WRK2() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 0}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 0}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 28769}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1919120138}) end gg.setValues(edits) gg.toast("✅") end -- Event Score function WRK3() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 115}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1953393007}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1885303918}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1702257944}) end gg.setValues(edits) gg.toast("✅") end -- Specials Tickets function WRK4() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 1937007979}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1667855455}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1818323299}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1701868318}) end gg.setValues(edits) gg.toast("✅") end -- Skip Ads function WRK5() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 0}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1936746859}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1935634277}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1684633110}) end gg.setValues(edits) gg.toast("✅") end -- Advdnture Tokens function WRK6() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 1852140399}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1952408946}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1970564709}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1986289950}) end gg.setValues(edits) gg.toast("✅") end -- Challenge Tickets function WRK7() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0x8, flags = gg.TYPE_DWORD, value = 29556}) table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 1701536617}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1952408935}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1852140652}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1634231074}) end gg.setValues(edits) gg.toast("✅") end -- Research Points local isResearchMode = false local lastAmount = 0 function WRK8() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end if lastAmount > 5000 then gg.alert("⚠️ Security Block: Amount is currently set to " .. lastAmount .. ". This is too high for Research Points! Please set Amount to 5000 or less first.") return HCR7() end isResearchMode = true local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0x8, flags = gg.TYPE_DWORD, value = 350673152}) table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 1937010281}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1869635432}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1668440421}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1936028190}) end gg.setValues(edits) gg.toast("✅") end -- Blue Print function WRK9() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address - 0x8, flags = gg.TYPE_DWORD, value = 29806}) table.insert(edits, {address = r.address - 0xC, flags = gg.TYPE_DWORD, value = 1769107557}) table.insert(edits, {address = r.address - 0x10, flags = gg.TYPE_DWORD, value = 1970037343}) table.insert(edits, {address = r.address - 0x14, flags = gg.TYPE_DWORD, value = 1701602153}) table.insert(edits, {address = r.address - 0x18, flags = gg.TYPE_DWORD, value = 1751479842}) end gg.setValues(edits) gg.toast("✅") end -- Amount function WRK10() if not finalResults or #finalResults == 0 then gg.alert("❗ Please Use Start First!") return HCR7() end local input = gg.prompt({"🔢 Set Amount:"}, {""}, {"number"}) if not input or not tonumber(input[1]) then return HCR7() end local userVal = tonumber(input[1]) if isResearchMode and userVal > 5000 then gg.alert("⚠️ The Limit for Research Points is 5000!") return WRK10() end lastAmount = userVal local edits = {} for _, r in ipairs(finalResults) do table.insert(edits, {address = r.address + 0x4, flags = gg.TYPE_DWORD, value = userVal}) end gg.setValues(edits) gg.toast("✅ Amount set to: " .. userVal) end function WRK11() MainMenu() end local nodiestate = false function nodie() local choice = gg.choice({"\u{2705}Enable No Die", "\u{274C}Disable No Die", "\u{1F519}Return"}, nil, "Please use Rollcage for No Die, otherwise it wont work!") if choice == nil or choice == 3 then menu1() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;20;55::9", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("\u{274C}No Results!") else gg.editAll("1000000000", gg.TYPE_FLOAT) nodiestate = true gg.alert("\u{2705}Enabled No Die!") end elseif choice == 2 then if nodiestate == false then gg.alert("\u{274C}Nothing to restore!") else gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1000000000", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("\u{274C}No Results!") else gg.editAll("2", gg.TYPE_FLOAT) nodiestate = false gg.alert("\u{274C}Disabled No Die!") end end end end function Tools() local choice = gg.choice({"💎Debug Mode (play hidden maps)", "⚙️Get Tunes from Replays", "🧪 Calculate Score System for Team Event", "⚡Download Helpful Stuff", "🔙Return"}, nil, "🛠️ Tools Menu made by eomthix") if choice == nil or choice == 5 then return MainMenu() end if choice == 1 then DebugMode() elseif choice == 2 then GetTunesMenu() elseif choice == 3 then runTessCalculator() elseif choice == 4 then downloadstuff() end end function downloadstuff() local choice = gg.choice({ "⚡Download Multi App Ultra (Working VM for Phone)", "⚡Download LD Player (Working VM for PC)", "⚡Download ZGG (0b in C alloc fix)", "⚡Download Pivot GG (GG with Lua Java Support for PE MOD)", "⚡Download VIP MT Manager (best File Manager)", "⚡Download the newest HCR2 Versions (to use my script properly)", "⚡Download Auto Clicker (best Auto Clicker)", "🔙 Return" }, nil, "Download Menu") if choice == nil or choice == 8 then return Tools() end if choice == 1 then gg.copyText("https://www.mediafire.com/file/ho8rhxaglem7anf/Milti_App_Ultra_%2528PASSWORD_zak%2529.rar/file") gg.alert("✅ Copied Multi App Ultra Link!\nPaste it into any Web-Browser!") elseif choice == 2 then gg.copyText("https://www.ldplayer.net") gg.alert("✅ Copied LD Player Link!\nPaste it into any Web-Browser!") elseif choice == 3 then gg.copyText("https://www.mediafire.com/file/6b0cv6ym0xlb31h/zGG-v4.0.apk/file") gg.alert("✅ Copied ZGG Link!\nPaste it into any Web-Browser!") elseif choice == 4 then gg.copyText("https://www.mediafire.com/file/bb9bhnnz68wbgdo/pivot-v1.4_modded-daemon.apk/file") gg.alert("✅ Copied Pivot GG Link!\nPaste it into any Web-Browser!") elseif choice == 5 then gg.copyText("https://www.mediafire.com/file/cpreijegk0k456e/mt-manager-2-26-2.apk/file") gg.alert("✅ Copied VIP MT Manager Link!\nPaste it into any Web-Browser!") elseif choice == 6 then local verOptions = {} local verLinks = {} if CNF and CNF.versions then for verName, verData in pairs(CNF.versions) do if verData.version_status == "ON" and verData.download_link then table.insert(verOptions, "📦 HCR2 v" .. verName) table.insert(verLinks, verData.download_link) end end end table.insert(verOptions, "🔙 Return") if #verOptions == 1 then gg.alert("❌ No Versions to download!") return downloadstuff() end local verChoice = gg.choice(verOptions, nil, "Select HCR2 Version to download:") if verChoice == nil or verChoice == #verOptions then return downloadstuff() end gg.copyText(verLinks[verChoice]) gg.alert("✅ Copied Link for" .. verOptions[verChoice]:sub(10) .. "!\nPaste it into any Web-Browser!\nYou can install apks files with MT Manager!") elseif choice == 7 then gg.copyText("https://play.google.com/store/apps/details?id=com.truedevelopersstudio.automatictap.autoclicker") gg.alert("✅ Copied Auto Clicker Link!\nPaste it into any Web-Browser!") end end function runTessCalculator() local teamEvent = { Name = nil, Address = nil, Selected = nil } local cachedSubEvents = nil local function readQ(addr) return gg.getValues({{ address = addr, flags = gg.TYPE_QWORD }})[1].value end local function readD(addr) return gg.getValues({{ address = addr, flags = gg.TYPE_DWORD }})[1].value end local function readF(addr) return gg.getValues({{ address = addr, flags = gg.TYPE_FLOAT }})[1].value end local function readS(addr, maxL) local maxL = maxL or 128 local readRequests = {} for offset = 0, maxL - 1 do readRequests[#readRequests + 1] = { address = addr + offset, flags = gg.TYPE_BYTE } end local results = gg.getValues(readRequests) local characters = {} for _, byteData in ipairs(results) do local byteValue = byteData.value if not byteValue or byteValue == 0 then break end if byteValue < 0 then byteValue = byteValue + 256 end characters[#characters + 1] = string.char(byteValue) end return table.concat(characters) end local function cleanStart(str) if not str then return "" end return str:gsub("^[,%s&$]+", "") end local function scoreFromTime(t, minTime, score1k, maxScore) if t <= minTime then return maxScore end if t >= score1k then return 1000 end local ratio = (score1k - t) / (score1k - minTime) return 1000 + (maxScore - 1000) * (ratio ^ 2) end local function timeFromScore(score, minTime, score1k, maxScore) if score <= 1000 then return score1k end if score >= maxScore then return minTime end return score1k - (score1k - minTime) * math.sqrt((score - 1000) / (maxScore - 1000)) end local function scoreFromDistance(d, maxDist, maxScore) if d <= 0 then return 0 end if d >= maxDist then return maxScore end local ratio = d / maxDist return 1000 + (maxScore - 1000) * (ratio * ratio) end local function distanceFromScore(score, maxDist, maxScore) if score <= 1000 then return 0 end if score >= maxScore then return maxDist end return maxDist * math.sqrt((score - 1000) / (maxScore - 1000)) end local function getSubEvents() if not teamEvent.Address or teamEvent.Address == 0 then return nil end local subEvents = {} local ptr = readQ(teamEvent.Address + 0x4E0) if not ptr or ptr == 0 then gg.alert("Failed to read Pointer!") return nil end local i = 0 while true do local entry = readQ(ptr + (i * 0x8)) if not entry or entry == 0 then break end if readD(entry + 0x0) ~= 12 then break end local name8 = cleanStart(readS(entry + 0x8, 64)) local desc = "" local typeVal = readD(entry + 0x20) if typeVal == 33 then local descPtr = readQ(entry + 0x20 + 0x10) if descPtr and descPtr ~= 0 then desc = readS(descPtr, 64) end else desc = readS(entry + 0x20, 64) end desc = cleanStart(desc) local descLower = desc and desc:lower() or "" local finalName = name8 if (not name8 or name8 == "") and descLower == "" then finalName = "Time Attack" elseif (not name8 or name8 == "") and descLower:find("jump", 1, true) and descLower:find("far", 1, true) then finalName = "Long Jump" end if not finalName or finalName == "" then finalName = "Unknown Event" end subEvents[#subEvents + 1] = { name = finalName, desc = desc, address = entry } i = i + 1 end return subEvents end local function formatAllScoring() if not cachedSubEvents or #cachedSubEvents == 0 then cachedSubEvents = getSubEvents() end if not cachedSubEvents or #cachedSubEvents == 0 then return "No Event Modes Found!" end local lines = { "Scoring System for " .. teamEvent.Name .. " generated by TESS", "" } for _, ev in ipairs(cachedSubEvents) do lines[#lines+1] = "── [ " .. (ev.name or "Unknown Event") .. " ] ──" local entry = ev.address local isDistance = (readD(entry + 0x1C8) == 0 and readD(entry + 0x1D0) == 0 and readD(entry + 0x1D8) == 0) local index = 1 if isDistance then local maxDist = readF(readQ(entry + 0x1B0)) local maxScore = readF(readQ(entry + 0x1E0)) for score = maxScore, 1000, -1000 do local d = distanceFromScore(score, maxDist, maxScore) lines[#lines+1] = string.format(" [%d] %.2fm → %d", index, d, score) index = index + 1 end else local minTime = readF(readQ(entry + 0x1B0)) local score1k = readF(readQ(entry + 0x1C8)) local maxScore = readF(readQ(entry + 0x1E0)) for score = maxScore, 1000, -1000 do local t = timeFromScore(score, minTime, score1k, maxScore) lines[#lines+1] = string.format(" [%d] %.2fs → %d", index, t, score) index = index + 1 end end lines[#lines+1] = "" end return table.concat(lines, "\n") end local function calculateScoreFromTime(entry) local minTime = readF(readQ(entry + 0x1B0)) local score1k = readF(readQ(entry + 0x1C8)) local maxScore = readF(readQ(entry + 0x1E0)) local input = gg.prompt({"Enter Time (s):"}, nil, {"number"}) if not input or input[1] == "" then return end local raw = tostring(input[1]) if not raw:find("%.") then raw = raw .. ".0" end local t = tonumber(raw) if not t then return end local score = scoreFromTime(t, minTime, score1k, maxScore) gg.alert(string.format("%.2fs → %d", t, math.floor(score + 0.5))) end local function calculateTimeFromScore(entry) local minTime = readF(readQ(entry + 0x1B0)) local score1k = readF(readQ(entry + 0x1C8)) local maxScore = readF(readQ(entry + 0x1E0)) local input = gg.prompt({"Enter Score:"}, nil, {"number"}) if not input or input[1] == "" then return end local raw = tostring(input[1]) if not raw:find("%.") then raw = raw .. ".0" end local score = tonumber(raw) if not score then return end local t = timeFromScore(score, minTime, score1k, maxScore) gg.alert(string.format("%d → %.2fs", math.floor(score), t)) end local function calculateScoreFromDistance(entry) local maxDist = readF(readQ(entry + 0x1B0)) local maxScore = readF(readQ(entry + 0x1E0)) local input = gg.prompt({"Enter Distance (m):"}, nil, {"number"}) if not input or input[1] == "" then return end local raw = tostring(input[1]) if not raw:find("%.") then raw = raw .. ".0" end local d = tonumber(raw) if not d then return end local score = scoreFromDistance(d, maxDist, maxScore) gg.alert(string.format("%.2fm → %d", d, math.floor(score + 0.5))) end local function calculateDistanceFromScore(entry) local maxDist = readF(readQ(entry + 0x1B0)) local maxScore = readF(readQ(entry + 0x1E0)) local input = gg.prompt({"Enter Score:"}, nil, {"number"}) if not input or input[1] == "" then return end local raw = tostring(input[1]) if not raw:find("%.") then raw = raw .. ".0" end local score = tonumber(raw) if not score then return end local d = distanceFromScore(score, maxDist, maxScore) gg.alert(string.format("%d → %.2fm", math.floor(score), d)) end local function showScoringSystem(data) local entry = data.address local subName = data.name or "Event Mode" local title = subName .. " - Scoring System" local isDistance = (readD(entry + 0x1C8) == 0 and readD(entry + 0x1D0) == 0 and readD(entry + 0x1D8) == 0) local menu = {} local index = 1 if isDistance then local maxDist = readF(readQ(entry + 0x1B0)) local maxScore = readF(readQ(entry + 0x1E0)) for score = maxScore, 1000, -1000 do local d = distanceFromScore(score, maxDist, maxScore) menu[index] = string.format("[%d] %.2fm → %d", index, d, score) index = index + 1 end local calcIndex = index menu[index] = "[" .. index .. "] Enter Distance → Score" index = index + 1 local reverseIndex = index menu[index] = "[" .. index .. "] Enter Score → Distance" index = index + 1 local backIndex = index menu[index] = "[" .. index .. "] Back" local ch = gg.choice(menu, nil, title) if not ch or ch == backIndex then return end if ch == calcIndex then calculateScoreFromDistance(entry) end if ch == reverseIndex then calculateDistanceFromScore(entry) end else local minTime = readF(readQ(entry + 0x1B0)) local score1k = readF(readQ(entry + 0x1C8)) local maxScore = readF(readQ(entry + 0x1E0)) for score = maxScore, 1000, -1000 do local t = timeFromScore(score, minTime, score1k, maxScore) menu[index] = string.format("[%d] %.2fs → %d", index, t, score) index = index + 1 end local calcIndex = index menu[index] = "[" .. index .. "] Enter Time → Score" index = index + 1 local reverseIndex = index menu[index] = "[" .. index .. "] Enter Score → Time" index = index + 1 local backIndex = index menu[index] = "[" .. index .. "] Back" local ch = gg.choice(menu, nil, title) if not ch or ch == backIndex then return end if ch == calcIndex then calculateScoreFromTime(entry) end if ch == reverseIndex then calculateTimeFromScore(entry) end end end local function getEventBase(eventName) gg.clearResults() gg.searchNumber(":" .. eventName, gg.TYPE_BYTE) gg.refineNumber(":" .. eventName:sub(1,1), gg.TYPE_BYTE) local eventResults = gg.getResults(gg.getResultsCount()) if not eventResults or #eventResults == 0 then gg.alert("Event not found!") return false end for _, v in ipairs(eventResults) do if readD(v.address + 0x5F) == 49 then teamEvent.Address = v.address - 0x1 teamEvent.Name = eventName return true end end gg.alert("❌Event not found!") return Tools() end local input = gg.prompt({"Enter Team Event Name:"}, nil, {"text"}) if not input or not input[1] or input[1] == "" then return Tools() end if not getEventBase(input[1]) then return Tools() end gg.clearResults() while true do local eventModes = getSubEvents() if not eventModes or #eventModes == 0 then gg.alert("No Event Modes found!") return end local menu = {} for i, v in ipairs(eventModes) do local line = "[" .. i .. "] " .. v.name if v.desc and v.desc ~= "" then line = line .. "\n(" .. v.desc .. ")" end menu[#menu + 1] = line end local saveIndex = #menu + 1 menu[saveIndex] = "[" .. saveIndex .. "] Save Scoring System" local exitIndex = #menu + 1 menu[exitIndex] = "[" .. exitIndex .. "] Back" local choices = gg.choice(menu, nil, "TESS Calculator\nEvent Name: " .. teamEvent.Name) if not choices or choices == exitIndex then return Tools() end if choices == saveIndex then print(formatAllScoring()) gg.alert("Check Logs.") gg.setVisible(true) return Tools() else teamEvent.Selected = eventModes[choices] showScoringSystem(teamEvent.Selected) end end end function DebugMode() local dChoice = gg.choice({ "\u{2705}Enable Debug Mode", "\u{274C}Disable Debug Mode", "\u{1F519}Return" }, nil, "Enable or Disable Debug Mode!") if not dChoice or dChoice == 3 then return Tools() end gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA) gg.searchNumber("h 24 64 65 62 75 67 5F 6D 6F 64 65 5F 65 6E 61 62 6C 65 64", gg.TYPE_BYTE) local count = gg.getResultCount() if count == 0 then gg.alert("\u{274C}No Results!") return Tools() end local results = gg.getResults(1) local debug_mode_addr = results[1].address local pointer_data = gg.getValues({{ address = debug_mode_addr + 0x20, flags = gg.TYPE_QWORD }}) if not pointer_data[1] or pointer_data[1].value == 0 then gg.alert("\u{274C}No Pointer!") return end local debug_flag_address = pointer_data[1].value if dChoice == 1 then gg.setValues({{ address = debug_flag_address, flags = gg.TYPE_BYTE, value = 1 }}) gg.setRanges(allRanges[picked].value) gg.alert("\u{2705}Enabled Debug Mode!") elseif dChoice == 2 then gg.setValues({{ address = debug_flag_address, flags = gg.TYPE_BYTE, value = 0 }}) gg.setRanges(allRanges[picked].value) gg.alert("\u{274C}Disabled Debug Mode!") end end local FlyHackState = false function FlyHack() local choice = gg.choice({ "\u{2705} Enable Fly Hack", "\u{274C} Disable Fly Hack", "\u{1F519} Return" }, nil, "Enable or Disable Fly Hack") if not choice or choice == 3 then menu1() return end if choice == 1 then gg.clearResults() gg.setRanges(gg.REGION_C_BSS) gg.searchNumber("-0.75", gg.TYPE_FLOAT) gg.getResults(2) gg.editAll("0.08", gg.TYPE_FLOAT) gg.clearResults() gg.searchNumber("-0.55", gg.TYPE_FLOAT) gg.getResults(2) gg.editAll("0.08", gg.TYPE_FLOAT) gg.clearResults() gg.searchNumber("-0.25", gg.TYPE_FLOAT) gg.getResults(2) gg.editAll("0.08", gg.TYPE_FLOAT) gg.clearResults() gg.searchNumber("-0.15", gg.TYPE_FLOAT) gg.getResults(2) gg.editAll("0.08", gg.TYPE_FLOAT) gg.clearResults() gg.searchNumber("0.08", gg.TYPE_FLOAT) local res5 = gg.getResults(2) if #res5 > 0 then gg.editAll("-1.2", gg.TYPE_FLOAT) FlyHackState = true gg.alert("\u{2705} Enabled Fly Hack!") end gg.setRanges(allRanges[picked].value) elseif choice == 2 then if FlyHackState == false then gg.alert("\u{274C}Nothing to restore!") return end gg.clearResults() gg.setRanges(gg.REGION_C_BSS) gg.searchNumber("-1.2", gg.TYPE_FLOAT) local res = gg.getResults(2) if #res > 0 then gg.editAll("0.08", gg.TYPE_FLOAT) FlyHackState = false gg.alert("\u{274C} Disabled Fly Hack!") end gg.setRanges(allRanges[picked].value) end end function menuswap() local choice = gg.choice({"\u{1F30D}Swap Adventure Maps", "\u{1F3C6}Swap Cups Maps", "\u{1F519}Return"},nil, "Swap Adventure Maps or Swap Cups Maps!") if choice == nil or choice == 3 then return menu3() end if choice == 1 then changemaps1() elseif choice == 2 then changemaps1cups() end end function hackgp() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu3() end local input = gg.prompt( {"How many GP do you want to set?"}, {16326}, {"number"} ) if not input then return menu3() end local amount = tonumber(input[1]) if not amount then return menu3() end if amount > 16326 then gg.alert("❌Limit is 16326!") return menu1() end local finalAddr = BaseGameStatus + 0x4F4 gg.setValues({ {address = finalAddr, flags = gg.TYPE_FLOAT, value = amount} }) gg.alert("✅Look at your profile!") end UWPResults = nil UWPOriginals = nil UWPState = false function NoScrap() local menu = gg.choice({ "✅ Enable Upgrades without Scrap", "❌ Disable Upgrades without Scrap", "🔙 Return" }, nil, "Enable or Disable Upgrades without Scrap") if menu == nil then return menu1() end if menu == 1 then if not UWPResults then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2139095039D;-0.6F::17", gg.TYPE_FLOAT) gg.refineNumber("-0.6F", gg.TYPE_FLOAT) local results = gg.getResults(100) gg.clearResults() if #results == 0 then gg.alert("❌ No Results!") return menu1() end UWPResults = results UWPOriginals = gg.getValues(results) end local edits = {} for i, res in ipairs(UWPResults) do edits[i] = {address = res.address, flags = gg.TYPE_FLOAT, value = -999} end gg.setValues(edits) gg.alert("✅ Enabled Upgrades without Scrap") UWPState = true elseif menu == 2 then if UWPOriginals == nil then gg.toast("❌Nothing to restore!") else gg.setValues(UWPOriginals) gg.alert("❌ Disabled Upgrades without Scrap!") UWPState = false end elseif menu == 3 then return menu1() end end local currentVal, bestVal, staticKey, currentPtr, bestPtr = getWinStreakValues() local winstreakDisplay = currentVal or 0 function CurrentWinstreak() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return CupsMenu() end local reads = gg.getValues({ { address = BaseGameStatus + 0x6AC, flags = 4 }, { address = BaseGameStatus + 0x768, flags = 32 }, }) local staticKey = reads[1] and reads[1].value or 0 local currentPtr = reads[2] and reads[2].value or 0 local currentValStruct = gg.getValues({{ address = currentPtr + 0x1C, flags = 4 }}) local currentVal = currentValStruct[1] and currentValStruct[1].value or 0 local prompt = gg.prompt({ "Edit Current Win Streak:" }, { tostring(currentVal) }, { "number" }) if not prompt then return CupsMenu() end local newCurrent = math.floor(tonumber(prompt[1]) or 0) newCurrent = math.max(0, math.min(2147483647, newCurrent)) gg.setValues({ { address = currentPtr + 0x18, flags = gg.TYPE_DWORD, value = staticKey }, { address = currentPtr + 0x1C, flags = gg.TYPE_DWORD, value = newCurrent }, { address = currentPtr + 0x20, flags = gg.TYPE_DWORD, value = 0 }, { address = currentPtr + 0x24, flags = gg.TYPE_DWORD, value = 0 }, }) gg.alert("✅ Current Win Streak set to " .. newCurrent .. "!\n❗Switch Game Language to apply!") return CupsMenu() end function CupsMenu() local choice = gg.choice({ "🔥Autowin", "😈Force Boss", "⚡Unlimited League Tasks", "\u{1F4C8}Change Cup Points Reward in the League Quests", "\u{1F3C6}Fake Rank", "\u{1F6E3}Force 1Km Cup", "😱 Change Current Winstreak", "🔷Hack both Coins and Gems in the League Quests", "🥶 Force Any Cup Race", "\u{2796}Flat Ground for Cups", "\u{231B}Set Countdown for Cups", "\u{1F519}Return" }, nil, "\u{1f3c6}Cups Menu made by eomthix") if choice == nil or choice == 12 then MainMenu() end if choice == 1 then autowin() elseif choice == 2 then forceboss() elseif choice == 3 then unlimitedtask() elseif choice == 4 then changerankreward() elseif choice == 5 then RankHackV1() elseif choice == 6 then ForceCup() elseif choice == 7 then CurrentWinstreak() elseif choice == 8 then bothleague() elseif choice == 9 then Menu_LockMatchMap() elseif choice == 10 then flatgroundcups() elseif choice == 11 then TimeCupsValues() end end local function readMapLuaString(addr) if addr == 0 then return "" end local bytes = {} for i = 0, 63 do local val = gg.getValues({{address = addr + i, flags = gg.TYPE_BYTE}})[1].value if val == 0 or val < 32 or val > 126 then break end table.insert(bytes, string.char(val)) end return table.concat(bytes) end Listofallmenufunctions = Listofallmenufunctions or {} if type(table) == "table" and type(table.insert) ~= "function" then table.insert = nil end function Allmapnamesandaddressesgenerationtable() gg.clearResults() gg.searchNumber("h 16 43 6F 75 6E 74 72 79 73 69 64 65", 1) local Countryside = gg.getResults(gg.getResultsCount()) if #Countryside == 0 then return nil end local Countrysideadd = nil for _, Characteristictype in ipairs(Countryside) do local Countryside2 = gg.getValues({{ address = Characteristictype.address + 0x18, flags = 4 }})[1].value if Countryside2 == 1970225942 then Countrysideadd = Characteristictype.address break end end if not Countrysideadd then gg.alert("❌No Results!") return menu3() end gg.clearResults() gg.searchNumber(Countrysideadd - 0x48, 32) local CountrysidePointers = gg.getResults(gg.getResultsCount()) local Fullmappointers = nil for _, pointer in ipairs(CountrysidePointers) do if (pointer.address % 0x100) == 0 then Fullmappointers = pointer.address break end end if not Fullmappointers then gg.alert("❌No Results!") return menu3() end local ListofallmapsnamesandaddressesOptionsData = {} local offset = 0x0 while offset < 0x1000 do local ListofallmapsCode = gg.getValues({{ address = Fullmappointers + offset, flags = 32 }})[1].value if not ListofallmapsCode or ListofallmapsCode == 0 then break end local name = readMapLuaString(ListofallmapsCode + 0x49) if name == '' then local backupAddress = gg.getValues({{ address = ListofallmapsCode + 0x58, flags = 32 }})[1].value name = readMapLuaString(backupAddress) end if name == "" then break end table.insert(ListofallmapsnamesandaddressesOptionsData, { name = name, address = ListofallmapsCode }) offset = offset + 0x8 end return ListofallmapsnamesandaddressesOptionsData end function AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) if not ListofallmapsnamesandaddressesOptionsData or #ListofallmapsnamesandaddressesOptionsData == 0 then return {[1] = {}, [2] = {}, [3] = {}} end local ListofnamesandaddressesforalladventuremapsOptionsData = { [1] = {}, [2] = {}, [3] = {} } for i, Chest in ipairs(ListofallmapsnamesandaddressesOptionsData) do if string.find(Chest.name, "_cup") then break end table.insert(ListofnamesandaddressesforalladventuremapsOptionsData[1], Chest.name) local name2 = readMapLuaString(Chest.address + 0x1) if name2 == '' then local backupAddress = gg.getValues({{ address = Chest.address + 0x10, flags = 32 }})[1].value name2 = readMapLuaString(backupAddress) end table.insert(ListofnamesandaddressesforalladventuremapsOptionsData[2], name2) table.insert(ListofnamesandaddressesforalladventuremapsOptionsData[3], Chest.address) end for i = #ListofnamesandaddressesforalladventuremapsOptionsData[2], 1, -1 do local value = ListofnamesandaddressesforalladventuremapsOptionsData[2][i] if value and value:match("^dark_forest_distance_") and value ~= 'dark_forest_distance_04' then table.remove(ListofnamesandaddressesforalladventuremapsOptionsData[1], i) table.remove(ListofnamesandaddressesforalladventuremapsOptionsData[2], i) table.remove(ListofnamesandaddressesforalladventuremapsOptionsData[3], i) end end return ListofnamesandaddressesforalladventuremapsOptionsData end function Mapscenereplacement() table.insert(Listofallmenufunctions, 'Mapscenereplacement') ListofallmapsnamesandaddressesOptionsData = ListofallmapsnamesandaddressesOptionsData or Allmapnamesandaddressesgenerationtable() if not ListofallmapsnamesandaddressesOptionsData then gg.alert("❌No Results!") return menu3() end ListofnamesandaddressesforalladventuremapsOptionsData = ListofnamesandaddressesforalladventuremapsOptionsData or AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) if not ListofnamesandaddressesforalladventuremapsOptionsData or #ListofnamesandaddressesforalladventuremapsOptionsData[1] == 0 then gg.alert("❌No Results!") return menu3() end local menuOptions = {} for i = 1, #ListofnamesandaddressesforalladventuremapsOptionsData[1] do menuOptions[i] = "🗺️ " .. ListofnamesandaddressesforalladventuremapsOptionsData[1][i] end menuOptions[#menuOptions + 1] = 'Reload Map' menuOptions[#menuOptions + 1] = '🔙 Back' local choice1 = gg.choice(menuOptions, nil, "Select Map Scene Replacement\nSecond last option reloads map") if not choice1 then return end if choice1 == #menuOptions then menu3() elseif choice1 == #menuOptions - 1 then ListofallmapsnamesandaddressesOptionsData = Allmapnamesandaddressesgenerationtable() ListofnamesandaddressesforalladventuremapsOptionsData = AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) Mapscenereplacement() else MapscenereplacementSingle(choice1, ListofnamesandaddressesforalladventuremapsOptionsData, ListofallmapsnamesandaddressesOptionsData) end end function MapscenereplacementSingle(choice1_0, ListofnamesandaddressesforalladventuremapsOptionsData_0, ListofallmapsnamesandaddressesOptionsData_0) table.insert(Listofallmenufunctions, 'MapscenereplacementSingle') if choice1_0 then choice1 = choice1_0 end if ListofnamesandaddressesforalladventuremapsOptionsData_0 then ListofnamesandaddressesforalladventuremapsOptionsData = ListofnamesandaddressesforalladventuremapsOptionsData_0 end if ListofallmapsnamesandaddressesOptionsData_0 then ListofallmapsnamesandaddressesOptionsData = ListofallmapsnamesandaddressesOptionsData_0 end local menuOptions = {} for i, Chest in ipairs(ListofallmapsnamesandaddressesOptionsData) do menuOptions[i] = "🗺️ " .. Chest.name end menuOptions[#menuOptions + 1] = '🔙 Back' local choice2 = gg.choice(menuOptions, nil, "Map Scene Replacement Maps") if not choice2 then return end if choice2 == #menuOptions then Mapscenereplacement() return else Mapscenereplacementandmodification(choice1, choice2, ListofnamesandaddressesforalladventuremapsOptionsData, ListofallmapsnamesandaddressesOptionsData) MapscenereplacementSingle() end end function Mapscenereplacementandmodification(choice1, choice2, ListofnamesandaddressesforalladventuremapsOptionsData, ListofallmapsnamesandaddressesOptionsData) gg.clearResults() local sourceMapName = ListofnamesandaddressesforalladventuremapsOptionsData[1][choice1] local targetMapName = ListofallmapsnamesandaddressesOptionsData[choice2].name local Modifythemapterrain = ListofnamesandaddressesforalladventuremapsOptionsData[3][choice1] + 0x2C0 local Duplicatemapterrain = ListofallmapsnamesandaddressesOptionsData[choice2]['address'] + 0x2C0 local terrainValues = {} for i = 0, 11 do local value = gg.getValues({{ address = Duplicatemapterrain + (i * 0x4), flags = 4 }})[1].value table.insert(terrainValues, value) end local modificationData = {} for i = 1, 12 do table.insert(modificationData, { address = Modifythemapterrain + ((i - 1) * 0x4), flags = 4, value = terrainValues[i] }) end gg.setValues(modificationData) gg.clearResults() gg.alert("✅Swapped "..sourceMapName.." to "..targetMapName) end function Mapterrainreplacement() table.insert(Listofallmenufunctions, 'Mapterrainreplacement') ListofallmapsnamesandaddressesOptionsData = ListofallmapsnamesandaddressesOptionsData or Allmapnamesandaddressesgenerationtable() if not ListofallmapsnamesandaddressesOptionsData then gg.alert("❌No Results!") return menu3() end ListofnamesandaddressesforalladventuremapsOptionsData = ListofnamesandaddressesforalladventuremapsOptionsData or AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) if not ListofnamesandaddressesforalladventuremapsOptionsData or #ListofnamesandaddressesforalladventuremapsOptionsData[1] == 0 then gg.alert("❌No Results!") return menu3() end local menuOptions = {} for i = 1, #ListofnamesandaddressesforalladventuremapsOptionsData[1] do menuOptions[i] = "🗺️ " .. ListofnamesandaddressesforalladventuremapsOptionsData[1][i] end menuOptions[#menuOptions + 1] = 'Reload Map' menuOptions[#menuOptions + 1] = '🔙 Back' local choice = gg.choice(menuOptions, nil, "Map Terrain Replacement\nSelect map to modify") if not choice then return end if choice == #menuOptions then menu3() elseif choice == #menuOptions - 1 then ListofallmapsnamesandaddressesOptionsData = Allmapnamesandaddressesgenerationtable() ListofnamesandaddressesforalladventuremapsOptionsData = AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) Mapterrainreplacement() else MapterrainreplacementSingle(choice, ListofnamesandaddressesforalladventuremapsOptionsData, ListofallmapsnamesandaddressesOptionsData) end end function MapterrainreplacementSingle(sourceChoice_0, ListofnamesandaddressesforalladventuremapsOptionsData_0, ListofallmapsnamesandaddressesOptionsData_0) table.insert(Listofallmenufunctions, 'MapterrainreplacementSingle') if sourceChoice_0 then sourceChoice = sourceChoice_0 end if ListofnamesandaddressesforalladventuremapsOptionsData_0 then ListofnamesandaddressesforalladventuremapsOptionsData = ListofnamesandaddressesforalladventuremapsOptionsData_0 end if ListofallmapsnamesandaddressesOptionsData_0 then ListofallmapsnamesandaddressesOptionsData = ListofallmapsnamesandaddressesOptionsData_0 end if not ListofnamesandaddressesforalladventuremapsOptionsData or not ListofallmapsnamesandaddressesOptionsData then gg.alert("Error: Address not found") Mapterrainreplacement() return end local menuOptions = {} for i, map in ipairs(ListofallmapsnamesandaddressesOptionsData) do menuOptions[i] = "🗺️ " .. map.name end menuOptions[#menuOptions + 1] = '🔙 Return' local targetChoice = gg.choice(menuOptions, nil, "Select Source Map") if not targetChoice then return end if targetChoice == #menuOptions then Mapterrainreplacement() return else local sourceMapName = ListofnamesandaddressesforalladventuremapsOptionsData[1][sourceChoice] local targetMapName = ListofallmapsnamesandaddressesOptionsData[targetChoice].name local sourceAddress = ListofnamesandaddressesforalladventuremapsOptionsData[3][sourceChoice] local targetAddress = ListofallmapsnamesandaddressesOptionsData[targetChoice]['address'] local terrainOffset = 0x1F0 local modifyAddress = sourceAddress + terrainOffset local duplicateAddress = targetAddress + terrainOffset local terrainValues = {} for i = 0, 5 do local value = gg.getValues({{ address = duplicateAddress + (i * 0x4), flags = 4 }})[1].value table.insert(terrainValues, value) end local modificationData = {} for i = 1, 6 do table.insert(modificationData, { address = modifyAddress + ((i - 1) * 0x4), flags = 4, value = terrainValues[i] }) end gg.setValues(modificationData) gg.clearResults() gg.alert("✅Swapped "..sourceMapName.." to "..targetMapName) end end function Mapreplacement() table.insert(Listofallmenufunctions, 'Mapreplacement') ListofallmapsnamesandaddressesOptionsData = ListofallmapsnamesandaddressesOptionsData or Allmapnamesandaddressesgenerationtable() if not ListofallmapsnamesandaddressesOptionsData then gg.alert("❌No Results!") return menu3() end ListofnamesandaddressesforalladventuremapsOptionsData = ListofnamesandaddressesforalladventuremapsOptionsData or AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) if not ListofnamesandaddressesforalladventuremapsOptionsData or #ListofnamesandaddressesforalladventuremapsOptionsData[1] == 0 then gg.alert("❌No Results!") return menu3() end local menuOptions = {} for i = 1, #ListofnamesandaddressesforalladventuremapsOptionsData[1] do menuOptions[i] = "🗺️ " .. ListofnamesandaddressesforalladventuremapsOptionsData[1][i] end menuOptions[#menuOptions + 1] = '🔙 Return' local choice = gg.choice(menuOptions, nil, "Special Source Map") if not choice then return menu3() end if choice == #menuOptions then menu3() elseif choice == #menuOptions - 1 then ListofallmapsnamesandaddressesOptionsData = Allmapnamesandaddressesgenerationtable() ListofnamesandaddressesforalladventuremapsOptionsData = AllAdventureMapNameAddressGenerationTable(ListofallmapsnamesandaddressesOptionsData) Mapreplacement() else SpecialMapReplacementMenu(choice, ListofnamesandaddressesforalladventuremapsOptionsData) end end function SpecialMapReplacementMenu(sourceChoice_0, ListofnamesandaddressesforalladventuremapsOptionsData_0) table.insert(Listofallmenufunctions, 'SpecialMapReplacementMenu') if sourceChoice_0 then sourceChoice = sourceChoice_0 end if ListofnamesandaddressesforalladventuremapsOptionsData_0 then ListofnamesandaddressesforalladventuremapsOptionsData = ListofnamesandaddressesforalladventuremapsOptionsData_0 end local specialMaps = { {name = 'New Year Beast Chase', terrain = 'rube/levels/cny_event_blocks.rube', scene = 'json/levels/cny/cny_gfx.json'}, {name = 'Race Day', terrain = 'rube/levels/formula_city_blocks.rube', scene = 'json/levels/formula_city_gfx.json'}, {name = 'Xmas', terrain = 'rube/levels/football_01_blocks.rube', scene = 'json/levels/countryside-xmas_gfx.json'}, {name = 'Classic', terrain = 'rube/levels/countryside_cup_02_blocks.rube', scene = 'json/levels/classic/countryside_classic_gfx.json'}, {name = 'Nocares', terrain = 'rube/levels/moon_distance_blocks.rube', scene = 'json/levels/moon_gfx.json'}, {name = 'Soccer Stadium', terrain = 'rube/levels/football_01_blocks.rube', scene = 'json/levels/football/football_gfx.json'} } local menuOptions = {} for i, map in ipairs(specialMaps) do menuOptions[i] = "🗺️ " .. map.name end menuOptions[#menuOptions + 1] = '🔙 Back' local targetChoice = gg.choice(menuOptions, nil, "Select Target Map") if not targetChoice then return end if targetChoice == #menuOptions then Mapreplacement() return else local sourceMapName = ListofnamesandaddressesforalladventuremapsOptionsData[1][sourceChoice] local targetMap = specialMaps[targetChoice] Mapreplacementexecution(sourceChoice, ListofnamesandaddressesforalladventuremapsOptionsData, targetMap.terrain, targetMap.scene) gg.alert("✅Swapped "..sourceMapName.." to "..targetMap.name) end end function Mapreplacementexecution(sourceChoice, ListofnamesandaddressesforalladventuremapsOptionsData, Terrain, Scene) local sourceAddress = ListofnamesandaddressesforalladventuremapsOptionsData[3][sourceChoice] local terrainAdd = sourceAddress + 0x1F0 local memoryTerrain = gg.getValues({{address = terrainAdd + 0x10, flags = 32}})[1].value local terrainLen = #Terrain gg.setValues({ {address = terrainAdd, flags = 4, value = 49}, {address = terrainAdd + 0x4, flags = 4, value = 0}, {address = terrainAdd + 0x8, flags = 4, value = terrainLen}, {address = terrainAdd + 0xC, flags = 4, value = 0} }) if memoryTerrain and memoryTerrain ~= 0 then local terrainStrEdits = {} for i = 1, terrainLen do table.insert(terrainStrEdits, { address = memoryTerrain + (i - 1), flags = 1, value = string.byte(Terrain, i) }) end table.insert(terrainStrEdits, {address = memoryTerrain + terrainLen, flags = 1, value = 0}) gg.setValues(terrainStrEdits) end local sceneAdd = sourceAddress + 0x2C0 local memoryScene = gg.getValues({{address = sceneAdd + 0x10, flags = 32}})[1].value local sceneLen = #Scene gg.setValues({ {address = sceneAdd, flags = 4, value = 49}, {address = sceneAdd + 0x4, flags = 4, value = 0}, {address = sceneAdd + 0x8, flags = 4, value = sceneLen}, {address = sceneAdd + 0xC, flags = 4, value = 0} }) if memoryScene and memoryScene ~= 0 then local sceneStrEdits = {} for i = 1, sceneLen do table.insert(sceneStrEdits, { address = memoryScene + (i - 1), flags = 1, value = string.byte(Scene, i) }) end table.insert(sceneStrEdits, {address = memoryScene + sceneLen, flags = 1, value = 0}) gg.setValues(sceneStrEdits) end gg.clearResults() end function GetMatchMapDataList() gg.clearResults() gg.searchNumber("h 1C 68 69 6C 6C 5F 63 6C 69 6D 62 5F 63 75 70 00", 1) gg.refineNumber("28", 1) local hillclimbcup = gg.getResults(gg.getResultsCount()) local hccaddress = nil for i, hccVariable in ipairs(hillclimbcup) do local HillClimbCup = gg.getValues({{ address = hccVariable.address + 0x18, flags = 4 }})[1].value if HillClimbCup == 1818839068 then hccaddress = hccVariable.address break end end if not hccaddress then gg.alert("Race map pointer not found") return nil end gg.clearResults() gg.searchNumber(hccaddress, 32) local hccPointer = gg.getResults(gg.getResultsCount()) local Pointertoallmatchmaps = nil for i, hccPointer1 in ipairs(hccPointer) do if (hccPointer1.address % 256) == 0 then Pointertoallmatchmaps = hccPointer1.address break end end if not Pointertoallmatchmaps then gg.alert("❌ Pointer not found!") return CupsMenu() end local LockmatchmapData = {} local offset = 0x0 while true do local Racemap = gg.getValues({{ address = Pointertoallmatchmaps + offset, flags = 32 }})[1].value if Racemap == 0 then break end local Racemapname = readMapLuaString(Racemap + 0x19) if Racemapname == "" then local Racemap1 = gg.getValues({{ address = Racemap + 0x28, flags = 32 }})[1].value Racemapname = readMapLuaString(Racemap1) end if Racemapname == "" then break end table.insert(LockmatchmapData, { name = Racemapname, address = Racemap }) offset = offset + 0x8 end return LockmatchmapData end function ExecuteMapLock(selectedIndex, LockmatchmapData) if not Currentracemapoffset then gg.clearResults() gg.searchNumber("Q B8 1E 85 3F CD CC 4C 3F", gg.TYPE_DOUBLE) local results = gg.getResults(1) if #results > 0 then Currentracemapoffset = results[1].address else gg.alert("❌ No Results!") return CupsMenu() end end local RacemapAddresses = LockmatchmapData[selectedIndex]['address'] local Currentracemap = Currentracemapoffset - 0x308 local sourceAddresses = {} for i = 0, 5 do sourceAddresses[i+1] = {address = RacemapAddresses + i*4, flags = 4} end local sourceData = gg.getValues(sourceAddresses) local modifyList = {} for i = 1, 6 do modifyList[i] = { address = Currentracemap + (i-1)*4, flags = 4, freeze = true, value = sourceData[i].value } end gg.addListItems(modifyList) gg.setValues(modifyList) gg.clearResults() gg.alert("✅Locked Map: " .. LockmatchmapData[selectedIndex]['name']) end function Menu_LockMatchMap() local mapData = GetMatchMapDataList() if mapData and #mapData > 0 then local menuNames = {} for i, map in ipairs(mapData) do table.insert(menuNames, "🗺️ " .. map.name) end local choice = gg.choice(menuNames, nil, "Select Race Map") if choice ~= nil then ExecuteMapLock(choice, mapData) end else gg.alert("❌ No Maps found!") return CupsMenu() end end local EasyCupResults = nil function easycups() local choice = gg.choice({"✅ Enable Easy Cups Mode", "❌ Disable Easy Cups Mode", "🔙 Return"}, nil, "Enable or Disable Easy Cups Mode") if choice == nil or choice == 3 then return CupsMenu() end if choice == 1 then gg.setRanges(gg.REGION_C_BSS) gg.clearResults() gg.searchNumber("257D;0.02F::5", gg.TYPE_FLOAT) gg.refineNumber("257", gg.TYPE_DWORD) local count = gg.getResultsCount() if count == 0 then gg.alert("❌ No Results!") return CupsMenu() end EasyCupResults = gg.getResults(count) gg.editAll("256", gg.TYPE_DWORD) gg.alert("✅ Easy Cups Mode Enabled!") elseif choice == 2 then if EasyCupResults == nil then gg.alert("❌ Nothing to restore!") return CupsMenu() end for i, v in ipairs(EasyCupResults) do v.value = "257" v.freeze = false end gg.setValues(EasyCupResults) gg.alert("❌ Easy Cups Mode Disabled!") end end function unlimitedtask() if NEEDS_UPDATE or not STATUS11_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_11_msg) if msg then gg.alert(msg) end return CupsMenu() end local primaryOffset = 0 local archName = "" if archType == 1 then primaryOffset = CNF.offsets.unl_cups_phone archName = "ARMV8" elseif archType == 2 then primaryOffset = CNF.offsets.unl_cups_emu archName = "x86_64" else gg.alert("❌ Unsupported Architecture!") return CupsMenu() end local menu = gg.choice({ "✅ Enable Unlimited Tasks", "❌ Disable Unlimited Tasks", "🔙 Back" }, nil, "Unlimited Tasks for " .. archName) if menu == nil or menu == 3 then return CupsMenu() end if menu == 1 then patchUnlimitedTasks(primaryOffset) elseif menu == 2 then patchOff() end end function patchUnlimitedTasks(primaryOffset) local targetAddr = LIB_BASE + primaryOffset local freetask = gg.getValues({ { address = targetAddr, flags = gg.TYPE_QWORD } })[1].value or 0 if freetask == 0 then gg.alert("❌ Failed to read freetask!") return unlimitedtask() end gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA) gg.searchNumber(freetask, gg.TYPE_QWORD) local pointerResults = gg.getResults(gg.getResultsCount()) gg.clearResults() local storedPointers = {} for _, v in ipairs(pointerResults) do table.insert(storedPointers, v.address) end local saveList = {} for _, addr in ipairs(storedPointers) do gg.setRanges(allRanges[picked].value) gg.searchNumber(addr, gg.TYPE_QWORD) local results = gg.getResults(gg.getResultsCount()) for _, p in ipairs(results) do local addr24 = p.address + 0x24 table.insert(saveList, { address = addr24, flags = gg.TYPE_DWORD, value = 0, name = "Unlimted Task" }) end gg.clearResults() end gg.addListItems(saveList) gg.loadResults(saveList) gg.refineNumber("0~1", gg.TYPE_DWORD) local refined = gg.getResults(gg.getResultsCount()) if #refined == 0 then gg.alert("❌ No refined results between 0~1!") return unlimitedtask() end local patchList, freezeList = {}, {} for _, r in ipairs(refined) do table.insert(patchList, { address = r.address - 8, flags = gg.TYPE_DWORD, value = 35 }) table.insert(patchList, { address = r.address - 4, flags = gg.TYPE_DWORD, value = 35 }) table.insert(freezeList, { address = r.address, flags = gg.TYPE_DWORD, value = 0, freeze = true, name = "FreeTask Freeze" }) end gg.setValues(patchList) gg.addListItems(freezeList) gg.alert("✅Enabled Unlimited Tasks!") end function patchOff() local saved = gg.getListItems() local toRemove = {} for _, item in ipairs(saved) do if item.name == "FreeTask Freeze" then item.freeze = false table.insert(toRemove, item) end end if #toRemove > 0 then gg.setValues(toRemove) gg.removeListItems(toRemove) gg.alert("❌ Disabled Unlimited Tasks!") else gg.alert("❌Nothing to restore!") return unlimitedtask() end end local targetAddress = nil function forcebossemu() if AutowinTrue == true then gg.alert("❗Please Use Force Boss first then use Autowin!") return CupsMenu() end local menu = gg.choice({ "✅ Enable Force Boss", "❌ Disable Force Boss", "🔙 Back" }, nil, "Force Boss for x86_64") if menu == nil or menu == 3 then return CupsMenu() end if menu == 1 then EnableForceBoss() elseif menu == 2 then DisableForceBoss() end end function EnableForceBoss() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return forcebossemu() end gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("hF30F108028040000", gg.TYPE_BYTE) gg.getResults(gg.getResultsCount()) gg.editAll("hF30F1080FCFFFFFF", gg.TYPE_BYTE) gg.clearResults() gg.setValues({ { address = BaseGameStatus + 0x4, flags = gg.TYPE_FLOAT, value = 99.9 } }) gg.toast("✅ Force Boss Enabled!") end function DisableForceBoss() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return forcebossemu() end gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("hF30F1080FCFFFFFF", gg.TYPE_BYTE) gg.getResults(gg.getResultsCount()) gg.editAll("hF30F108028040000", gg.TYPE_BYTE) gg.clearResults() gg.setValues({ { address = BaseGameStatus + 0x4, flags = gg.TYPE_FLOAT, value = 0.0 } }) gg.toast("❌ Force Boss Disabled!") end local applied = {} local function applyEdit(edit) local offset = tonumber(edit[1]:gsub("0x", ""), 16) if not offset or not LIB_BASE then gg.alert("❌ LIB_BASE missing!") return end local addr = LIB_BASE + offset local val = edit[2]:gsub("r$", "") .. "r" if applied[addr] == nil then local current = gg.getValues({{address = addr, flags = gg.TYPE_DWORD}}) if current and current[1] then applied[addr] = current[1].value end end gg.setValues({{address = addr, flags = gg.TYPE_DWORD, value = val}}) end local function revertEdit(edit) local offset = tonumber(edit[1]:gsub("0x", ""), 16) if not offset or not LIB_BASE then return end local addr = LIB_BASE + offset local orig = applied[addr] if orig ~= nil then gg.setValues({{address = addr, flags = gg.TYPE_DWORD, value = orig}}) applied[addr] = nil end end local function toggle(func, enable) if not func or not func.edits then return end for _, edit in ipairs(func.edits) do if enable then applyEdit(edit) else revertEdit(edit) end end gg.toast((enable and "✅ Enabled " or "❌ Disabled ") .. func.name) end local function TriggerPatch(patchName, enable) if not LIB_BASE then gg.alert("❌ LIB_BASE missing!") return end if not PATCHES then return end local patch = nil for _, p in ipairs(PATCHES) do if p.name == patchName then patch = p break end end if patch then toggle(patch, enable) end end local emuAutoWinBackup = nil local ShowAlertAuto = false function autowin() if not LIB_BASE or LIB_BASE == 0 then gg.alert("❌ Couldn't find lib!") return CupsMenu() end local currentVersion = gethcr2version() local vData = CNF.versions[currentVersion] if not vData then gg.alert("❌ Version " .. currentVersion .. " is not supported!") return CupsMenu() end if archType == 1 then if vData.status.auto_arm8_enabled == false then local msg = vData.status.auto_arm8_msg gg.alert(msg) return CupsMenu() end local choice = gg.choice({"✅ Enable Autowin", "❌ Disable Auto Win", "🔙 Return"}, nil, "Auto Win for ARMV8") if choice == 1 then TriggerPatch("Auto Win", true) AutowinTrue = true elseif choice == 2 then TriggerPatch("Auto Win", false) AutowinTrue = false end elseif archType == 2 then if vData.status.auto_emu_enabled == false then local msg = vData.status.auto_emu_msg gg.alert(msg) return CupsMenu() end if not vData.PATCHES then gg.alert("❌ No Patch data found for this version!") return CupsMenu() end local emuData = nil for _, patch in ipairs(vData.PATCHES) do if patch.name == "Auto Win (Emu)" then emuData = patch break end end if not emuData then gg.alert("❌ No Data found!") return CupsMenu() end if ShowAlertAuto == false then if currentVersion == "1.72.3" then gg.alert("⚠️ Please activate Autowin for 1.72.3 Emulator in the Garage or your game will crash!") ShowAlertAuto = true end end local menu = gg.choice({ "✅ Enable AutoWin", "❌ Disable AutoWin", "🔙 Return" }, nil, "Auto Win x86_64") if menu == nil or menu == 3 then return CupsMenu() end local targetList = emuData.edits if not targetList then gg.alert("❌ No edits found!") return CupsMenu() end if menu == 1 then if emuAutoWinBackup == nil then emuAutoWinBackup = {} for index, entry in ipairs(targetList) do local addr = LIB_BASE + tonumber(entry[1]) local val = entry[2] if type(val) == "string" and val:find("r") then local cleanHex = val:gsub("r", "") local byteCount = #cleanHex / 2 local readList = {} for i = 1, byteCount do table.insert(readList, { address = addr + (i - 1), flags = gg.TYPE_BYTE }) end local originalBytes = gg.getValues(readList) emuAutoWinBackup[index] = { type = "bytes", data = originalBytes } else local originalFloat = gg.getValues({{ address = addr, flags = gg.TYPE_FLOAT }}) emuAutoWinBackup[index] = { type = "float", data = originalFloat[1].value } end end end for _, entry in ipairs(targetList) do local addr = LIB_BASE + tonumber(entry[1]) local val = entry[2] if type(val) == "string" and val:find("r") then local cleanHex = val:gsub("r", "") local modifications = {} for i = 1, #cleanHex, 2 do local byteStr = cleanHex:sub(i, i + 1) table.insert(modifications, { address = addr + (i - 1) / 2, flags = gg.TYPE_BYTE, value = "h" .. byteStr }) end gg.setValues(modifications) else gg.setValues({{ address = addr, flags = gg.TYPE_FLOAT, value = val }}) end end UWPState = true gg.alert("✅ Enabled Auto Win!") elseif menu == 2 then if emuAutoWinBackup == nil then gg.alert("❌ Nothing to restore!") return CupsMenu() end for index, entry in ipairs(targetList) do local backup = emuAutoWinBackup[index] if backup then if backup.type == "bytes" then gg.setValues(backup.data) elseif backup.type == "float" then local addr = LIB_BASE + tonumber(entry[1]) gg.setValues({{ address = addr, flags = gg.TYPE_FLOAT, value = backup.data }}) end end end UWPState = false gg.alert("❌ Disabled Auto Win!") end else gg.alert("❌ Unknown Architecture!") end return CupsMenu() end local emuForceBossBackup = nil function forceboss() local currentVersion = gethcr2version() local vData = CNF and CNF.versions and CNF.versions[currentVersion] if not vData then gg.alert("❌ Version " .. currentVersion .. " is not supported!") return CupsMenu() end if archType == 1 then if vData.status.force_arm8_enabled == false then local msg = vData.status.force_arm8_msg gg.alert(msg) return end local choice = gg.choice({"✅ Enable Force Boss", "❌ Disable Force Boss", "🔙 Return"}, nil, "Force Boss for ARMV8") if choice == 1 then if BaseGameStatus then gg.setValues({ { address = BaseGameStatus - 0x4, flags = gg.TYPE_FLOAT, value = 99.9 } }) end TriggerPatch("Force Boss", true) elseif choice == 2 then if BaseGameStatus then gg.setValues({ { address = BaseGameStatus - 0x4, flags = gg.TYPE_FLOAT, value = 0.0 } }) end TriggerPatch("Force Boss", false) end elseif archType == 2 then if vData.status.force_emu_enabled == false then local msg = vData.status.force_emu_msg gg.alert(msg) return CupsMenu() end if not vData.PATCHES then gg.alert("❌ No Patch data found for this version!") return CupsMenu() end local emuData = nil for _, patch in ipairs(vData.PATCHES) do if patch.name == "Force Boss (Emu)" then emuData = patch break end end if not emuData then gg.alert("❌ No Data found!") return CupsMenu() end local menu = gg.choice({ "✅ Enable Force Boss", "❌ Disable Force Boss", "🔙 Return" }, nil, "Force Boss x86_64") if menu == nil or menu == 3 then return CupsMenu() end local targetList = emuData.edits if not targetList then gg.alert("❌ No edits found!") return CupsMenu() end if menu == 1 then if BaseGameStatus then gg.setValues({ { address = BaseGameStatus - 0x4, flags = gg.TYPE_FLOAT, value = 99.9 } }) end if emuForceBossBackup == nil then emuForceBossBackup = {} for index, entry in ipairs(targetList) do local addr = LIB_BASE + tonumber(entry[1]) local val = entry[2] if type(val) == "string" and val:find("r") then local cleanHex = val:gsub("r", "") local byteCount = #cleanHex / 2 local readList = {} for i = 1, byteCount do table.insert(readList, { address = addr + (i - 1), flags = gg.TYPE_BYTE }) end local originalBytes = gg.getValues(readList) emuForceBossBackup[index] = { type = "bytes", data = originalBytes } else local originalFloat = gg.getValues({{ address = addr, flags = gg.TYPE_FLOAT }}) emuForceBossBackup[index] = { type = "float", data = originalFloat[1].value } end end end for _, entry in ipairs(targetList) do local addr = LIB_BASE + tonumber(entry[1]) local val = entry[2] if type(val) == "string" and val:find("r") then local cleanHex = val:gsub("r", "") local modifications = {} for i = 1, #cleanHex, 2 do local byteStr = cleanHex:sub(i, i + 1) table.insert(modifications, { address = addr + (i - 1) / 2, flags = gg.TYPE_BYTE, value = "h" .. byteStr }) end gg.setValues(modifications) else gg.setValues({{ address = addr, flags = gg.TYPE_FLOAT, value = val }}) end end gg.alert("✅ Enabled Force Boss!") elseif menu == 2 then if BaseGameStatus then gg.setValues({ { address = BaseGameStatus - 0x4, flags = gg.TYPE_FLOAT, value = 0.0 } }) end if emuForceBossBackup == nil then gg.alert("❌ Nothing to restore!") return CupsMenu() end for index, entry in ipairs(targetList) do local backup = emuForceBossBackup[index] if backup then if backup.type == "bytes" then gg.setValues(backup.data) elseif backup.type == "float" then local addr = LIB_BASE + tonumber(entry[1]) gg.setValues({{ address = addr, flags = gg.TYPE_FLOAT, value = backup.data }}) end end end gg.alert("❌ Disabled Force Boss!") end else gg.alert("❌ Unknown Architecture!") end end --what am i even doing here? local originalValues = nil local function togglePoints(enable) if enable then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("h 1C 4C 65 61 67 75 65 54", gg.TYPE_BYTE) gg.refineNumber("h 1C", gg.TYPE_BYTE) local count = gg.getResultCount() if count == 0 then gg.alert("❌No Results!") return changerankreward() end local results = gg.getResults(count) gg.clearResults() local floatReads = {} for _, item in ipairs(results) do table.insert(floatReads, { address = item.address + 0x1C, flags = gg.TYPE_FLOAT }) end local currentVals = gg.getValues(floatReads) if not currentVals or #currentVals == 0 then gg.alert("❌Pointer not found!") return changerankreward() end originalValues = {} local edits = {} for _, item in ipairs(currentVals) do table.insert(originalValues, { address = item.address, flags = item.flags, value = item.value }) table.insert(edits, { address = item.address, flags = item.flags, value = 0.498 }) end gg.setValues(edits) gg.alert("✅Enabled 498 Rank Points in the League Tasks!") else if originalValues ~= nil then gg.setValues(originalValues) originalValues = nil gg.alert("❌Disabled 498 Rank Points in the League Tasks!") else gg.alert("❌Nothing to restore!") end end end function changerankreward() local choice = gg.choice({ "✅ Enable 498 Rank Points in the League Tasks", "❌ Disable 498 Rank Points in the League Tasks", "🔙 Return" }, nil, "Enable or Disable 498 Rank Points in the League Tasks") if choice == nil or choice == 3 then return CupsMenu() end if choice == 1 then togglePoints(true) elseif choice == 2 then togglePoints(false) end end local masteryResults = {} function getMasteryStats() if not masteryResults or #masteryResults == 0 then return "\n_______________________\n\n❌ No Scan Results" end local activeVal = 65793 local inactiveVal = 279 local upgradeVal = 1 local readPack = {} local stats = {active = 0, inactive = 0, locked = 0, upgrade = 0, other = 0} for i = 1, #masteryResults do readPack[i] = { address = masteryResults[i].address + 0x18, flags = gg.TYPE_DWORD } end local values = gg.getValues(readPack) if not values then return "\n_______________________\n\n❌ Error reading values" end for _, v in ipairs(values) do if v.value == activeVal then stats.active = stats.active + 1 elseif v.value == inactiveVal then stats.inactive = stats.inactive + 1 elseif v.value == upgradeVal then stats.upgrade = stats.upgrade + 1 elseif v.value == 0 then stats.locked = stats.locked + 1 else stats.other = stats.other + 1 end end return "\n_____________________________\n\n✅ Maxed: " .. stats.active .. "\n🔼 Upgradable: " .. stats.upgrade .. "\n⏳ Inactive: " .. stats.inactive .. "\n🔒 Locked: " .. stats.locked .. "\n❓ Other: " .. stats.other end function MaxAllMasteries() if NEEDS_UPDATE or not STATUS8_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_8_msg) if msg then gg.alert(msg) end return menu2() end if not LIB_BASE or LIB_BASE == 0 then gg.alert("❌ Couldn't find lib!") return menu2() end local primaryOffset = 0 local archName = "" if archType == 1 then primaryOffset = CNF.offsets.mastery_phone archName = "ARMV8" elseif archType == 2 then primaryOffset = CNF.offsets.mastery_emu archName = "x86_64" else gg.alert("❌ Unsupported Architecture!") return menu2() end if #masteryResults == 0 then searchmastery(primaryOffset) end local statusInfo = getMasteryStats() local choice = gg.choice({ "🔄 Re-Scan Masteries", "🎯 Edit Masteries", "🔙 Return" }, nil, "Max All Masteries for " .. archName .. statusInfo) if not choice or choice == 3 then return menu2() end if choice == 1 then searchmastery(primaryOffset) return MaxAllMasteries() elseif choice == 2 then applymastery() end end function searchmastery(offset) local anchor = LIB_BASE + offset gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(tostring(anchor), gg.TYPE_QWORD) local count = gg.getResultsCount() if count == 0 then masteryResults = {} return MaxAllMasteries() end masteryResults = gg.getResults(count) gg.toast("✅ Memory Scan done!") end function applymastery() if #masteryResults == 0 then gg.alert("❌ No Masteries found!") return MaxAllMasteries() end local menu = gg.choice({ "🔒 Locked", "🔼 Upgrade Ready", "⏳ Inactive", "✅ Active", "🔙 Return" }, nil, "Select Mastery Status to apply:") if not menu or menu == 5 then return MaxAllMasteries() end local targetValue = 0 if menu == 1 then targetValue = 0 elseif menu == 2 then targetValue = 1 elseif menu == 3 then targetValue = 279 elseif menu == 4 then targetValue = 65793 end local applyPack = {} for i = 1, #masteryResults do applyPack[i] = { address = masteryResults[i].address + 0x18, value = targetValue, flags = gg.TYPE_DWORD } end gg.setValues(applyPack) gg.alert("✅ Applied succesfully!") masteryResults = {} gg.clearResults() end function HackScrapMenu() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu3() end local input = gg.prompt( {"How much Scrap do you want to set?"}, {100000000}, {"number"} ) if not input then return menu1() end local amount = tonumber(input[1]) local step1 = BaseGameStatus + 0x460 local ptr1Values = gg.getValues({{address = step1, flags = gg.TYPE_QWORD}}) if not ptr1Values or #ptr1Values == 0 or ptr1Values[1].value == 0 then gg.alert("❌Pointer not found!") return menu1() end local ptr1 = ptr1Values[1].value local step2 = ptr1 + 0x1C gg.setValues({{address = step2, flags = gg.TYPE_DWORD, value = 1}}) local step3 = ptr1 + 0x20 gg.setValues({{address = step3, flags = gg.TYPE_DWORD, value = amount}}) gg.alert("✅ Go to your Scrap Machine!") end function bothleague() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1634028572;1415935335;0;0.200F~0.459F;0;0;0;0;0::60", gg.TYPE_DWORD) gg.refineNumber("0.200~0.459", gg.TYPE_FLOAT) local base = gg.getResults(gg.getResultsCount()) if #base == 0 then gg.alert("\u{274C}No Results!") return CupsMenu() end gg.addListItems(base) gg.clearResults() local v = gg.prompt( { "How many Coins do you want?", "How many Gems do you want? (MAX 15000)" }, {100000000, 15000}, {"number", "number"} ) if v == nil then return CupsMenu() end local coins = tonumber(v[1]) local gems = tonumber(v[2]) if gems > 15000 then gg.alert("\u{274C}MAX IS 15000!") return CupsMenu() end local list = gg.getListItems() for i = 1, #list do list[i].address = list[i].address + 4 list[i].flags = gg.TYPE_DWORD list[i].value = coins end gg.setValues(list) for i = 1, #list do list[i].address = list[i].address + 4 list[i].flags = gg.TYPE_DWORD list[i].value = gems end gg.setValues(list) gg.setValues(list) gg.clearResults() gg.clearList() gg.alert("\u{2705} Now the League Quests will have as many coins and gems as you put in!") end ForceCupCache = {} ForceCupState = false function ForceCup() local choice = gg.choice({"\u{2705}Enable Force Cup", "\u{274C}Disable Force Cup", "\u{1F519}Return"},nil, "Enable or Disable Force Cup!") if choice == nil or choice == 3 then return CupsMenu() end if #ForceCupCache == 0 then gg.clearResults() gg.searchNumber("h B8 1E 85 3F CD CC 4C 3F", gg.TYPE_BYTE) local result = gg.getResults(10) gg.clearResults() if #result == 0 then gg.alert("\u{274C}No Results!") return end ForceCupCache = { { address = result[1].address - 0x308, flags = gg.TYPE_DWORD, value = 1953063706 }, { address = result[1].address - 0x304, flags = gg.TYPE_DWORD, value = 1869373305 }, { address = result[1].address - 0x300, flags = gg.TYPE_DWORD, value = 1667196782 }, { address = result[1].address - 0x2FC, flags = gg.TYPE_DWORD, value = 28789 }, { address = result[1].address - 0x2F8, flags = gg.TYPE_DWORD, value = 0 }, } end if choice == 1 then for _, item in ipairs(ForceCupCache) do item.freeze = true end gg.addListItems(ForceCupCache) ForceCupState = true gg.alert("\u{2705}Enabled Force Cup!") elseif choice == 2 then for _, item in ipairs(ForceCupCache) do item.freeze = false end gg.removeListItems(ForceCupCache) ForceCupState = false gg.alert("\u{274C}Disabled Force Cup!") end end ShowAlert = false function HackParts() if not ShowAlert then gg.alert("Make sure that all your Parts that you want to hack are maxed out!") ShowAlert = true end local choice = gg.choice({ "\u{1F539}Hack Jump Shocks", "\u{1F539}Hack Landing Boost", "\u{1F539}Hack Start Boost", "\u{1F539}Hack Afterbunner", "\u{1F539}Hack Wings", "\u{1F539}Hack Wheelie Boost", "\u{1F539}Hack Manget", "\u{1F539}Hack Nitro", "\u{1F539}Hack Fume Boost", "\u{1F539}Hack Coins / Fuel Boost", "\u{1F539}Hack Overcharged Turbo", "\u{1F539}Hack Rollcage", "🔹 Hack Air Control", "🔹 Hack Winter Tires", "\u{1F519}Return" }, nil, "Choose the part that you want to hack!") if choice == nil or choice == 15 then return menu1() end local function getVal(min, max, def) local p = gg.prompt({"\u{1F39B} Select Level (1-4):"}, {def}, {"slider", min = min, max = max}) if not p then return nil end local res = tonumber(p[1]) if res < 1 or res > 4 then gg.alert("\u{274C} Invalid Input!") return nil end return res end local value = 0 if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2.0;0.44999998808;0.64999997616::9", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 1.5 elseif input == 2 then value = 2.0 elseif input == 3 then value = 3.0 else value = 4.0 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;9;15::9", gg.TYPE_FLOAT) local c = gg.getResultCount() if c == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 100 elseif input == 2 then value = 125 elseif input == 3 then value = 150 else value = 167 end gg.getResults(c) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 3 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;1;1.5::9", gg.TYPE_FLOAT) local c = gg.getResultCount() if c == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 80 elseif input == 2 then value = 90 elseif input == 3 then value = 98 else value = 100 end gg.getResults(c) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 4 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;42.5;75::9", gg.TYPE_FLOAT) local c = gg.getResultCount() if c == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 500 elseif input == 2 then value = 600 elseif input == 3 then value = 800 else value = 900 end gg.getResults(c) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 5 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2F;0000C03Fr;00002040r;1,852,402,700;7,496,037::21", gg.TYPE_DWORD) gg.refineNumber("2", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 2.0 elseif input == 2 then value = 1.5 elseif input == 3 then value = 1.2 else value = 1.01 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 6 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1.0;-1.0;0.89999997616;-0.40000000596::17", gg.TYPE_FLOAT) gg.refineNumber("0.89999997616", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end gg.getResults(gg.getResultCount()) gg.editAll(input, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 7 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2F;0000A040r;00000841r;1,852,402,700;7,496,037::21", gg.TYPE_DWORD) gg.refineNumber("2", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 2.0 elseif input == 2 then value = 1.5 elseif input == 3 then value = 1.2 else value = 1.01 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 8 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2F;66668640r;0000E040r;1,852,402,700;7,496,037::21", gg.TYPE_DWORD) gg.refineNumber("2", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 2.0 elseif input == 2 then value = 1.5 elseif input == 3 then value = 1.2 else value = 1.01 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 9 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2F;00007A43r;0000E143r;1,852,402,700;7,496,037::21", gg.TYPE_DWORD) gg.refineNumber("2", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 2.0 elseif input == 2 then value = 1.5 elseif input == 3 then value = 1.2 else value = 1.01 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 10 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2F;0000003Fr;0000803Fr;1,852,402,700;7,496,037::21", gg.TYPE_DWORD) gg.refineNumber("2", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 2.0 elseif input == 2 then value = 1.5 elseif input == 3 then value = 1.2 else value = 1.01 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 11 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2F;00008040r;00002041r;1,852,402,700;7,496,037::21", gg.TYPE_DWORD) gg.refineNumber("2", gg.TYPE_FLOAT) if gg.getResultCount() == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 2.0 elseif input == 2 then value = 1.5 elseif input == 3 then value = 1.2 else value = 1.01 end gg.getResults(gg.getResultCount()) gg.editAll(value, gg.TYPE_FLOAT) gg.alert("\u{2705}Restart your run!") elseif choice == 12 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;20;55::9", gg.TYPE_FLOAT) local c = gg.getResultCount() if c == 0 then gg.alert("\u{274C}No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 100 elseif input == 2 then value = 300 elseif input == 3 then value = 15000 else value = 30000 end gg.getResults(c) gg.editAll(value, gg.TYPE_FLOAT) gg.clearResults() gg.alert("\u{2705}Restart your run!") elseif choice == 13 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("13.0;20.0:5", gg.TYPE_FLOAT) local c = gg.getResultCount() if c == 0 then gg.alert("❌ No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 500 elseif input == 2 then value = 1000 elseif input == 3 then value = 5000 else value = 10000 end gg.getResults(c) gg.editAll(value, gg.TYPE_FLOAT) gg.clearResults() gg.alert("✅ Restart your run!") elseif choice == 14 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("150;500:5", gg.TYPE_FLOAT) local c = gg.getResultCount() if c == 0 then gg.alert("❌ No Results!") return HackParts() end local input = getVal(1, 4, 4) if not input then return HackParts() end if input == 1 then value = 500 elseif input == 2 then value = 1000 elseif input == 3 then value = 5000 else value = 10000 end gg.getResults(c) gg.editAll(value, gg.TYPE_FLOAT) gg.clearResults() gg.alert("✅ Restart your run!") end end function unlockall(name) if name == nil then return end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":" .. name, 1) local getResults = gg.getResults(gg.getResultsCount()) if #getResults == 0 then return end local resultsTable = {} for i, v in ipairs(getResults) do table.insert(resultsTable, { address = v.address + 0xEF, flags = 4 }) end if #resultsTable > 0 then gg.clearResults() gg.loadResults(resultsTable) gg.refineNumber("1~5", 4) local unlockResults = gg.getResults(gg.getResultsCount()) if #unlockResults > 0 then gg.editAll("1", 4) local editEdit = {} for _, v in ipairs(unlockResults) do table.insert(editEdit, { address = v.address + 0x38, flags = 4, value = 0 }) local currentOffset = 0x4 for i = 1, 13 do table.insert(editEdit, { address = v.address + currentOffset, flags = 4, value = 0 }) currentOffset = currentOffset + 0x4 end end gg.setValues(editEdit) end gg.clearResults() end end function UnlockGlider() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":GLIDER", 1) local getResults = gg.getResults(gg.getResultsCount()) if #getResults == 0 then return end local resultsTable = {} for i, v in ipairs(getResults) do table.insert(resultsTable, { address = v.address + 0xEF, flags = 4 }) end if #resultsTable > 0 then gg.clearResults() gg.loadResults(resultsTable) gg.refineNumber("1~5", 4) local unlockResults = gg.getResults(gg.getResultsCount()) if #unlockResults > 0 then gg.editAll("1", 4) local editEdit = {} for _, v in ipairs(unlockResults) do table.insert(editEdit, { address = v.address + 0x38, flags = 4, value = 0 }) local currentOffset = 0x4 for i = 1, 13 do table.insert(editEdit, { address = v.address + currentOffset, flags = 4, value = 0 }) currentOffset = currentOffset + 0x4 end end gg.setValues(editEdit) end gg.clearResults() end end function StartUnlockAll() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return menu2() end local vehicles = CNF.vehicles.UnlockGameStatusVehicles for _, vehicleName in ipairs(vehicles) do local verifyStr = vehicleName if verifyStr == "HILL CLIMBER MK 2" then verifyStr = "HILL CLIMBER Mk2" end unlockall(verifyStr) end gg.toast("✅Unlocked All Vehicles! Open the Parts Menu so all Verhicles will be unlocked!") end function StartUnlockCupsVerhicles() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return menu2() end local vehicles = CNF.vehicles.UnlockCupsVehicles for _, vehicleName in ipairs(vehicles) do local verifyStr = vehicleName if verifyStr == "HILL CLIMBER MK 2" then verifyStr = "HILL CLIMBER Mk2" end unlockall(verifyStr) end gg.toast("✅Unlocked All Cup Verhicles! Open the Parts Menu so all Verhicles will be unlocked!") end function StartUnlockAdventureVerhicles() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return menu2() end local vehicles = CNF.vehicles.UnlockAdventureVehicles for _, vehicleName in ipairs(vehicles) do local verifyStr = vehicleName if verifyStr == "HILL CLIMBER MK 2" then verifyStr = "HILL CLIMBER Mk2" end unlockall(verifyStr) end gg.toast("✅Unlocked All Adventure Verhicles! Open the Parts Menu so all Verhicles will be unlocked!") end function StartUnlockEventVerhicles() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return menu2() end local vehicles = CNF.vehicles.UnlockEventVehicles for _, vehicleName in ipairs(vehicles) do local verifyStr = vehicleName if verifyStr == "HILL CLIMBER MK 2" then verifyStr = "HILL CLIMBER Mk2" end unlockall(verifyStr) end gg.toast("✅Unlocked All Event Verhicles! Open the Parts Menu so all Verhicles will be unlocked!") end function StartUnlockBluePrintVerhicles() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return menu2() end local vehicles = CNF.vehicles.UnlockBluePrintVehicles for _, vehicleName in ipairs(vehicles) do local verifyStr = vehicleName if verifyStr == "HILL CLIMBER MK 2" then verifyStr = "HILL CLIMBER Mk2" end unlockall(verifyStr) end gg.toast("✅Unlocked All Blue-Print Verhicles! Open the Parts Menu so all Verhicles will be unlocked!") end function customverhicle() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return customverhiclemenu() end local vehicleList = CNF.vehicles.UnlockGameStatusVehicles local tables = {} for i = 1, #vehicleList do table.insert(tables, "🚗 " .. vehicleList[i]) end table.insert(tables, "🔙 Return") local options = gg.multiChoice(tables, nil, "🧭Select Vehicles") if options == nil or options[#tables] then return customverhiclemenu() end local count = 0 local lastSelectedName = "" for i, selected in pairs(options) do if selected and i <= #vehicleList then local vehicleName = vehicleList[i] local verifyStr = vehicleName if verifyStr == "HILL CLIMBER MK 2" then verifyStr = "HILL CLIMBER Mk2" end unlockall(verifyStr) count = count + 1 lastSelectedName = vehicleName end end if count == 1 then gg.alert("✅ ".. lastSelectedName .." unlocked!") elseif count > 1 then gg.alert("✅ " .. count .. " Vehicles unlocked!") else gg.toast("❌ No selection!") end end function verhicletype() if NEEDS_UPDATE or not STATUS7_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_7_msg) if msg then gg.alert(msg) end return menu2() end local choice = gg.choice({"🏆Unlock All Cups Verhicles", "🗺️Unlock All Adventure Verhicles", "🎟️Unlock All Event Verhicles", "💎Unlock All Blue-Print Verhicles", "✈️Unlock Glider", "🔙Return"},nil, "Unlock A Specific Type of Verhicles!") if choice == nil or choice == 6 then return customverhiclemenu() end if choice == 1 then StartUnlockCupsVerhicles() elseif choice == 2 then StartUnlockAdventureVerhicles() elseif choice == 3 then StartUnlockEventVerhicles() elseif choice == 4 then StartUnlockBluePrintVerhicles() elseif choice == 5 then UnlockGlider() end end function menu2() local choice = gg.choice({ "\u{1F4AF} Max Out all Car Tunes", "\u{1F697} Unlock All Vehicles", "\u{2630} Unlock any Vehicle by choice", "🔥 Adjust Parts Slot", "\u{1F608} Max Out All Verhicle's Mastery", "⏲️Remove Mastery Time", "🔁Swap Masteries", "😱 Max Out All Verhicle's Parts", "\u{1F44A} 1 XP Mastery + No GP for Upgrades", "\u{2622} Hack Drop Mastery in Chests", "⚡ Unlock Garage Cosmetics", "\u{1F519} Return" }, nil, "\u{0032}\u{fe0f}\u{20e3}Menu made by eomthix") if choice == nil or choice == 12 then return MainMenu() end if choice == 1 then maxcars() elseif choice == 2 then StartUnlockAll() elseif choice == 3 then customverhiclemenu() elseif choice == 4 then setVehiclePartsSlots() elseif choice == 5 then MaxAllMasteries() elseif choice == 6 then removemasterytime() elseif choice == 7 then masterySwap() elseif choice == 8 then PartsMax() elseif choice == 9 then mastery_menu() elseif choice == 10 then hackmasterychest() elseif choice == 11 then garagecosmetic() end end local function isDangerousRegion(region) return false end local function findZeroRegion(size) local ranges = gg.getRangesList() for _, region in ipairs(ranges) do if region.state == "A" and not isDangerousRegion(region) then local reads = {} for addr = region.start, region.start + size * 4, 4 do table.insert(reads, { address = addr, flags = gg.TYPE_DWORD }) end local values = gg.getValues(reads) if values then local allZero = true for _, v in ipairs(values) do if v.value ~= 0 then allZero = false break end end if allZero then return region.start, region.start + size * 4 end end end end return nil, nil end function resolveVehicleList() if not BaseGameStatus then gg.alert("❌ Couldn't find Gamestatus!\n❗This function only works with Game Status! ") return menu2() end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("h 18 48 49 4C 4C 20 43 4C 49 4D 42 45", gg.TYPE_BYTE) gg.refineNumber("h 18", gg.TYPE_BYTE) local anchorResults = gg.getResults(gg.getResultCount()) gg.clearResults() if #anchorResults == 0 then gg.alert("❌No Results!") return menu2() end local refResults local bestCount = 0 for _, anchor in ipairs(anchorResults) do local pattern = gg.getValues({ { address = anchor.address - 0x20, flags = gg.TYPE_DWORD }, { address = anchor.address - 0x8, flags = gg.TYPE_DWORD } }) if pattern and pattern[1] and pattern[2] and pattern[1].value == 0x65656A08 and pattern[2].value == 0x403147AE then gg.clearResults() gg.searchNumber(pattern[1].address, gg.TYPE_QWORD) gg.setVisible(false) local tempResults = gg.getResults(gg.getResultCount()) gg.clearResults() if tempResults and #tempResults > bestCount then bestCount = #tempResults refResults = tempResults end end end if not refResults or #refResults == 0 then return nil end local written = {} local rawPtrs = {} for _, ref in ipairs(refResults) do local vehicleIdx = 0 while true do local ptrRead = gg.getValues({{ address = ref.address + vehicleIdx * 8, flags = gg.TYPE_QWORD }}) if not ptrRead or not ptrRead[1] or ptrRead[1].value == 0 then break end local vehiclePtr = ptrRead[1].value if not written[vehiclePtr] then written[vehiclePtr] = true table.insert(rawPtrs, vehiclePtr) end vehicleIdx = vehicleIdx + 1 end end if #rawPtrs == 0 then return nil end local deepReads = {} for _, vehiclePtr in ipairs(rawPtrs) do table.insert(deepReads, { address = vehiclePtr + 0x530, flags = gg.TYPE_QWORD }) end local deepPtrs = gg.getValues(deepReads) if not deepPtrs then return nil end local validPtrs = {} for i, dp in ipairs(deepPtrs) do if dp and dp.value ~= 0 then table.insert(validPtrs, { vehiclePtr = rawPtrs[i], deepPtrAddr = rawPtrs[i] + 0x530, deepPtr = dp.value, }) end end if #validPtrs == 0 then return nil end local verifyReads = {} for _, v in ipairs(validPtrs) do table.insert(verifyReads, { address = v.deepPtr + 0x0, flags = gg.TYPE_DWORD }) table.insert(verifyReads, { address = v.deepPtr + 0x4, flags = gg.TYPE_DWORD }) table.insert(verifyReads, { address = v.deepPtr + 0x8, flags = gg.TYPE_DWORD }) table.insert(verifyReads, { address = v.deepPtr + 0xC, flags = gg.TYPE_DWORD }) end local verifyResults = gg.getValues(verifyReads) if not verifyResults then return nil end local vehicles = {} for i, v in ipairs(validPtrs) do local base = (i - 1) * 4 + 1 local v0 = verifyResults[base] local v1 = verifyResults[base + 1] local v2 = verifyResults[base + 2] local v3 = verifyResults[base + 3] if v0 and v1 and v2 and v3 and v0.value == 0 and v1.value == 18 and v2.value == 53 then table.insert(vehicles, { vehiclePtr = v.vehiclePtr, deepPtrAddr = v.deepPtrAddr, }) end end if #vehicles == 0 then return nil end return vehicles end function setVehiclePartsSlots() if not BaseGameStatus then gg.alert("❌ Couldn't find Gamestatus!\n❗This function only works with Game Status! ") return menu2() end local prompt = gg.prompt({"Enter Parts Slot Count [0;10]"}, {"3"}, {"number"}) if not prompt then return end local slot = math.floor(tonumber(prompt[1]) or 0) if slot <= 0 then gg.alert("Invalid slot count!") return end local vehiclePtrs = resolveVehicleList() if not vehiclePtrs then gg.alert("❌No vehicles found!") return menu2() end local cached = {} for _, vehiclePtr in ipairs(vehiclePtrs) do table.insert(cached, vehiclePtr.deepPtrAddr) end local reads = {} for _, deepPtrAddr in ipairs(cached) do table.insert(reads, { address = deepPtrAddr, flags = gg.TYPE_QWORD }) end local deepPtrs = gg.getValues(reads) local slotStart, slotEnd = findZeroRegion(slot) if not slotStart then gg.alert("❌ Could not find suitable zero memory region!") return end local edits = {} for _, dp in ipairs(deepPtrs) do if dp and dp.value ~= 0 then local deepPtrAddr = dp.address table.insert(edits, { address = deepPtrAddr + 0x0, flags = gg.TYPE_QWORD, value = slotStart }) table.insert(edits, { address = deepPtrAddr + 0x8, flags = gg.TYPE_QWORD, value = slotEnd }) table.insert(edits, { address = deepPtrAddr + 0x10, flags = gg.TYPE_QWORD, value = slotEnd }) end end if #edits > 0 then gg.setValues(edits) local count = #edits / 3 gg.alert("✅Applied " .. slot .. " slots to " .. count .. " vehicles!") end end function customverhiclemenu() local choice = gg.choice({"🚗 Unlock Vehicles by choosing them", "🧪 Unlock Specific Type of Vehicles", "🔙 Return"},nil, "Unlock Vehicle by Choice Menu") if choice == nil or choice == 3 then return menu2() end if choice == 1 then customverhicle() elseif choice == 2 then verhicletype() end end function garagecosmetic() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber('h 1E 73 74 6F 63 6B 5F 6E 65 6F 6E 5F 73 69 67 6E', 1) local results = gg.getResults(gg.getResultsCount()) local targetAddr for i, v in ipairs(results) do local val1 = gg.getValues({{address = v.address + 0x18, flags = 4}})[1].value local val2 = gg.getValues({{address = v.address + 0x48, flags = 4}})[1].value if val1 == 1935755034 and val2 == 1836009500 then targetAddr = v.address break end end if not targetAddr then gg.alert("❌ No Results!") return menu2() end gg.clearResults() gg.searchNumber(targetAddr, 32) local baseAddr = gg.getResults(1)[1].address local valueLists = {} for i = 1, 8 do valueLists[i] = {} end local offset = 0 for i = 1, 1000 do local ptrValue = gg.getValues({{address = baseAddr + offset, flags = 32}})[1].value local checkValue = gg.getValues({{address = ptrValue, flags = 4}})[1].value if checkValue == 0 then break end local decorationAddr = ptrValue local offsets = {0xB8, 0xBC, 0xC0, 0xC4, 0xC8, 0xCC, 0xD0, 0xD4} local values = {1, 1, 0, 1, 1, 0, 1, 0} for j = 1, 8 do table.insert(valueLists[j], { address = decorationAddr + offsets[j], value = values[j], flags = 4 }) end offset = offset + 0x8 end for i = 1, 8 do gg.setValues(valueLists[i]) end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber('h 18 73 74 6F 63 6B 5F 72 61 66 74 65', 1) local results = gg.getResults(gg.getResultsCount()) local baseAddr for i, v in ipairs(results) do local val1 = gg.getValues({{address = v.address + 0x18, flags = 4}})[1].value local val2 = gg.getValues({{address = v.address + 0x48, flags = 4}})[1].value if val1 == 1952795930 and val2 == 1836009500 then baseAddr = v.address break end end if not baseAddr then gg.alert("❌ No Results!") return menu2() end gg.clearResults() gg.searchNumber(baseAddr, 32) local ptr = gg.getResults(1)[1].address local offsets = {0x0} local modList1, modList2, modList3, modList4 = {}, {}, {}, {} for i = 1, 1000 do local judgeAddr = gg.getValues({{address = ptr + offsets[1], flags = 32}})[1].value local judgeVal = gg.getValues({{address = judgeAddr, flags = 4}})[1].value if judgeVal == 0 then break end local targetAddr = gg.getValues({{address = ptr + offsets[1], flags = 32}})[1].value table.insert(modList1, {address = targetAddr + 0xC8, value = 1, flags = 4}) table.insert(modList2, {address = targetAddr + 0xCC, value = 0, flags = 4}) table.insert(modList3, {address = targetAddr + 0xD0, value = 1, flags = 4}) table.insert(modList4, {address = targetAddr + 0xD4, value = 0, flags = 4}) offsets[1] = offsets[1] + 0x8 end gg.setValues(modList1) gg.setValues(modList2) gg.setValues(modList3) gg.setValues(modList4) gg.clearResults() gg.alert("✅ Unlocked All Garage Cosmetics!") end function removemasterytime() if NEEDS_UPDATE or not STATUS12_OK then local msg = CNF.status_12_msg if msg then gg.alert(msg) end return menu2() end local masteryList = CNF.vehicles.UnlockMasteryVehicles if not masteryList then gg.alert("❌ Couldn't find Vehicles!") return menu2() end local vList = {} for i, name in ipairs(masteryList) do vList[i] = "⏲️ " .. name end table.insert(vList, "🔙Return") local choice = gg.choice(vList, nil, "Select Vehicle to remove Mastery Time:") if choice == nil or choice == #vList then return menu2() end local selectedVehicle = masteryList[choice] gg.setRanges(allRanges[picked].value) gg.clearResults() gg.searchNumber(":" .. selectedVehicle, gg.TYPE_BYTE) local allResults = gg.getResults(gg.getResultsCount()) if #allResults == 0 then gg.alert("❌ No Results!") return menu2() end local targetAddresses = {} for _, res in ipairs(allResults) do table.insert(targetAddresses, { address = res.address + 0xEF, flags = gg.TYPE_DWORD }) end gg.loadResults(targetAddresses) gg.refineNumber("1~5", gg.TYPE_DWORD) local unlocked = gg.getResults(gg.getResultsCount()) if #unlocked == 0 then gg.alert("❌ No Mastery Data found!") return menu2() end local patch = {} for _, result in ipairs(unlocked) do table.insert(patch, {address = result.address + 0x150, flags = gg.TYPE_DWORD, value = 1064972046}) table.insert(patch, {address = result.address + 0x154, flags = gg.TYPE_DWORD, value = 760095363}) table.insert(patch, {address = result.address + 0x158, flags = gg.TYPE_DWORD, value = -98777962}) table.insert(patch, {address = result.address + 0x15C, flags = gg.TYPE_DWORD, value = 1263588797}) end gg.setValues(patch) gg.alert("✅ Mastery Time removed for " .. selectedVehicle .. "\nPress a bunch of times on the Mastery Logo!") end function addrRefine(endings) local targetEndings = endings local results = gg.getResults(gg.getResultsCount()) local refined = {} local endingsLookup = {} if type(targetEndings) == "string" then endingsLookup[targetEndings:upper()] = true else for _, ending in ipairs(targetEndings) do endingsLookup[ending:upper()] = true end end for i, v in ipairs(results) do local addrHex = string.format("%X", v.address) local lastTwo = addrHex:sub(-2):upper() if endingsLookup[lastTwo] then table.insert(refined, v) end end gg.clearResults() gg.loadResults(refined) end function masterySwap() local name = gg.prompt({"Enter the name of input vehicle (Case Sensitive!)"},nil,{"text"}) if not name or not name[1] or name[1] == "" then return menu2() end local name2 = gg.prompt({"Enter the name of output vehicle (Case Sensitive!)"},nil,{"text"}) if not name2 or not name2[1] or name2[1] == "" then return menu2() end if name[1] == name2[1] then gg.alert("Host and target cant be the same!") return end local m1 = name[1] local m2 = name2[1] local s1 = ":" .. string.sub(name[1], 1, 1) local s2 = ":" .. string.sub(name2[1], 1, 1) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":" .. m1, 1) gg.refineNumber(s1, 1) addrRefine("21") local k1 = gg.getResults(1) if not k1 or #k1 == 0 then gg.alert("❌Search Failed for " .. m1) return menu2() end local kx1 = k1[1].address local ptrs1 = gg.getValues({ {address = kx1 + 0x217, flags = 32}, {address = kx1 + 0x21F, flags = 32}, {address = kx1 + 0x227, flags = 32} }) local vals1 = {} for i = 0, 3 do local h = gg.getValues({{address = kx1 + 0x237 + i*4, flags = 4}})[1] table.insert(vals1, h) end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":" .. m2, 1) gg.refineNumber(s2, 1) addrRefine("21") local k2 = gg.getResults(1) if not k2 or #k2 == 0 then gg.alert("❌Search Failed for " .. m2) return menu2() end local kx2 = k2[1].address gg.setValues({ {address = kx2 + 0x217, value = ptrs1[1].value, flags = 32}, {address = kx2 + 0x21F, value = ptrs1[2].value, flags = 32}, {address = kx2 + 0x227, value = ptrs1[3].value, flags = 32} }) gg.setValues({ {address = kx2 + 0x237, value = vals1[1].value, flags = 4}, {address = kx2 + 0x23B, value = vals1[2].value, flags = 4}, {address = kx2 + 0x23F, value = vals1[3].value, flags = 4}, {address = kx2 + 0x243, value = vals1[4].value, flags = 4} }) gg.alert("✅Successfully swaped masteries from " .. m1 .. " to " .. m2 .. "!") gg.clearResults() end local logs, foundTags, validTags, masteryResults = {}, {}, {}, {} function readTagString(ptr) for shift = 0, 1 do local req = {} for i = 0, 50 do req[#req + 1] = { address = ptr + shift + i, flags = gg.TYPE_BYTE } end local bytes = gg.getValues(req) local chars = {} for i = 1, #bytes do local b = bytes[i].value & 0xFF if b == 0 then break end chars[#chars + 1] = string.char(b) end local TunePartStr = table.concat(chars) if validTags[TunePartStr:lower()] then return TunePartStr end end return nil end function scanAllTuneParts(primaryOffset) local TunePartMaxPointerSearch = LIB_BASE + primaryOffset foundTags = {} validTags = {} for _, vehicle in pairs(gameStatusTunesParts) do for _, partSet in pairs(vehicle) do if partSet[2] then for _, tag in ipairs(partSet[2]) do validTags[tag:lower()] = true end end end end gg.searchNumber(TunePartMaxPointerSearch, gg.TYPE_QWORD) local results = gg.getResults(gg.getResultsCount()) for i, r in ipairs(results) do if i % 20 == 0 then gg.toast("🔍 Scanning...") end local check = gg.getValues({ { address = r.address + 0x8, flags = gg.TYPE_DWORD }, { address = r.address + 0xC, flags = gg.TYPE_DWORD } }) if check[1].value == 0 and check[2].value == 0 then local ptr = gg.getValues({{ address = r.address + 0x18, flags = gg.TYPE_QWORD }})[1].value if ptr ~= 0 then local tag = readTagString(ptr) if not tag then local ptr2 = gg.getValues({{ address = ptr + 0x10, flags = gg.TYPE_QWORD }})[1].value if ptr2 ~= 0 then tag = readTagString(ptr2) end end if tag then local tagKey = tag:lower() local v = gg.getValues({ { address = r.address + 0x20, flags = gg.TYPE_DWORD }, { address = r.address + 0x34, flags = gg.TYPE_DWORD } }) foundTags[tagKey] = { current = v[1].value, max = v[2].value, currentAddr = r.address + 0x20, maxAddr = r.address + 0x34, baseAddr = r.address } end end end end gg.toast("✅ Scan Complete") end function patchTag(tag, rarity) local info = foundTags[tag:lower()] if not info then return "notfound" end if info.current == 0 and info.max == 0 then return "notowned" end local targetMax = rarityValue[rarity] if info.max > targetMax then return "higher" end gg.setValues({{ address = info.maxAddr, flags = gg.TYPE_DWORD, value = targetMax }}) gg.sleep(10) gg.setValues({{ address = info.currentAddr, flags = gg.TYPE_DWORD, value = targetMax }}) return "patched" end function getPartStatus(tag, rarity) local info = foundTags[tag:lower()] if not info then return "❓" end if info.current == 0 and info.max == 0 then return "🚫" end if info.max >= rarityValue[rarity] then return "✅" end return "🔧" end function ManualPartSelection() local vList = {} for i, name in ipairs(gameStatusVehicles) do vList[i] = "🚗 " .. name end table.insert(vList, "🔙 Return") local vSel = gg.multiChoice(vList, nil, "Select Vehicles") if not vSel or vSel[#vList] then return end local rList = {} for i, label in ipairs(rarityLabel) do rList[i] = "🎖 " .. label end table.insert(rList, "🔙 Return") local rSel = gg.multiChoice(rList, nil, "Select Rarities") if not rSel or rSel[#rList] then return end local patchedCount = 0 for vIdx, vSelected in pairs(vSel) do if vIdx < #vList then for rIdx, rSelected in pairs(rSel) do if rIdx < #rList then local vehicleParts = gameStatusTunesParts[vIdx] if vehicleParts and vehicleParts[rIdx] then local partNames = vehicleParts[rIdx][1] local partTags = vehicleParts[rIdx][2] local pList = {} for i, name in ipairs(partNames) do local icon = getPartStatus(partTags[i], rIdx) pList[i] = icon .. " [" .. rarityLabel[rIdx] .. "] " .. name end table.insert(pList, "🔙 Return") local pSel = gg.multiChoice(pList, nil, "Select Parts for: " .. gameStatusVehicles[vIdx]) if pSel and not pSel[#pList] then for pIdx, pSelected in pairs(pSel) do if pIdx < #pList then if patchTag(partTags[pIdx], rIdx) == "patched" then patchedCount = patchedCount + 1 end end end end end end end end end gg.toast("✅ Finished: " .. patchedCount .. " parts patched") end local partsScanned = false function PartsMax() if NEEDS_UPDATE or not STATUS10_OK then local msg = NEEDS_UPDATE and UPDATE_MSG or (CNF and CNF.status_10_msg) if msg then gg.alert(msg) end return menu2() end if CNF and CNF.game_data then gameStatusTunesParts = CNF.game_data.gameStatusTunesParts or gameStatusTunesParts gameStatusVehicles = CNF.game_data.gameStatusVehicles or gameStatusVehicles rarityLabel = CNF.game_data.rarityLabel or rarityLabel rarityValue = CNF.game_data.rarityValue or rarityValue end if not gameStatusTunesParts then gg.alert("❌ Error: gameStatusTunesParts could not be loaded from Pastebin game_data!") return menu2() end if not LIB_BASE or LIB_BASE == 0 then gg.alert("❌ Lib address not found!") return menu2() end local primaryOffset = 0 local archName = "" if archType == 1 then primaryOffset = CNF.offsets.parts_phone archName = "ARMV8" elseif archType == 2 then primaryOffset = CNF.offsets.parts_emu archName = "x86_64" else gg.alert("❌ Unsupported Architecture!") return menu2() end if not partsScanned or next(foundTags) == nil then scanAllTuneParts(primaryOffset) partsScanned = true end local stats = {["✅"] = 0, ["🚫"] = 0, ["🔧"] = 0, ["❓"] = 0} for vIdx, vehicle in pairs(gameStatusTunesParts) do for rIdx, partSet in pairs(vehicle) do if partSet[2] then for _, tag in ipairs(partSet[2]) do local icon = getPartStatus(tag, rIdx) stats[icon] = stats[icon] + 1 end end end end local MainMenu = gg.choice({ "🔄 Re-Scan Tuning Parts", "🎯 Max Out ALL Parts", "🛠 Manual Selection for Parts", "🔙 Return" }, nil, "Max Out All Parts for " .. archName .. "\n━━━━━━━━━━━━━━━━━\n" .. "🔧 Patchable: " .. stats["🔧"] .. " | ✅ Maxed: " .. stats["✅"] .. "\n" .. "🚫 Not Owned: " .. stats["🚫"] .. " | ❓ Not Found: " .. stats["❓"]) if not MainMenu or MainMenu == 4 then return menu2() end if MainMenu == 1 then scanAllTuneParts(primaryOffset) partsScanned = true return PartsMax() elseif MainMenu == 2 then local total = 0 for vIdx, vehicle in pairs(gameStatusTunesParts) do for rIdx, partSet in pairs(vehicle) do if partSet[2] then for _, tag in ipairs(partSet[2]) do if getPartStatus(tag, rIdx) == "🔧" then if patchTag(tag, rIdx) == "patched" then total = total + 1 end end end end end end gg.toast("✅ Total Patched: " .. total) return PartsMax() elseif MainMenu == 3 then ManualPartSelection() return PartsMax() end end originalUpgrades = {} function freecarupgrade() local menu = gg.choice({ "✅ Enable Free Upgrades", "❌ Disable Free Upgrades", "🔙 Return" }, nil, "Enable or Disable Free Upgrades") if menu == nil or menu == 3 then return menu1() end if menu == 1 then gg.setRanges(gg.REGION_C_ALLOC) gg.clearResults() local pattern = "h 00 00 48 44 00 00 FA 43 CD CC 4C 3E" gg.searchNumber(pattern, gg.TYPE_BYTE) local freeresults = gg.getResults(1) if #freeresults == 0 then gg.alert("❌ No Results!") return menu1() end local baseAddr = freeresults[1].address - 0xC local valTable = gg.getValues({{address = baseAddr, flags = gg.TYPE_QWORD}}) if #valTable == 0 then gg.alert("❌ Base not found!") return end local qwordVal = valTable[1].value gg.clearResults() gg.searchNumber(tostring(qwordVal), gg.TYPE_QWORD) local resultList = gg.getResults(46) if #resultList == 0 then gg.alert("❌ No Results!") return end for i = 1, #resultList do resultList[i].address = resultList[i].address + 0xC resultList[i].flags = gg.TYPE_FLOAT end originalUpgrades = gg.getValues(resultList) for i = 1, #resultList do resultList[i].value = -2147483647 end gg.setValues(resultList) gg.alert("✅ Free Upgrades Enabled!") elseif menu == 2 then if #originalUpgrades > 0 then gg.setValues(originalUpgrades) originalUpgrades = {} gg.alert("❌ Free Upgrades Disabled!") else gg.alert("❌ Nothing to restore!") end end end function totaldistance() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu3() end local input = gg.prompt( {"How many meters do you want to set?"}, {100000000}, {"number"} ) if not input then return menu3() end local amount = tonumber(input[1]) if not amount then return menu3() end if amount > 1000000000 then amount = 1000000000 end local finalAddr = BaseGameStatus + 0x64 gg.setValues({ {address = finalAddr, flags = gg.TYPE_FLOAT, value = amount} }) gg.alert("✅Look at your profile!") end local mastery_backups = {} function xpmastery(enable) if enable then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1F;200~500;60Q~99Q;0;50Q~99Q::21", gg.TYPE_DWORD) gg.refineNumber("1", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("❌No Results!") return mastery_menu() end local results = gg.getResults(count) local edits = {} mastery_backups = {} for i, v in ipairs(results) do local addr4 = v.address + 0x4 local addr14 = v.address - 0x14 local addr18 = v.address - 0x18 local oldValues = gg.getValues({ {address = addr4, flags = gg.TYPE_DWORD}, {address = addr14, flags = gg.TYPE_DWORD}, {address = addr18, flags = gg.TYPE_DWORD} }) table.insert(mastery_backups, { {address = addr4, value = oldValues[1].value, flags = gg.TYPE_DWORD}, {address = addr14, value = oldValues[2].value, flags = gg.TYPE_DWORD}, {address = addr18, value = oldValues[3].value, flags = gg.TYPE_DWORD} }) table.insert(edits, {address = addr4, value = -140, flags = gg.TYPE_DWORD}) table.insert(edits, {address = addr14, value = 634548580, flags = gg.TYPE_DWORD}) table.insert(edits, {address = addr18, value = 1609117000, flags = gg.TYPE_DWORD}) end gg.setValues(edits) gg.alert("✅ Enabled 1 XP Mastery!") else if #mastery_backups == 0 then gg.alert("❌Nothing to restore!") return end for _, backup in ipairs(mastery_backups) do gg.setValues(backup) end mastery_backups = {} gg.alert("❌ Disabled 1 XP Mastery!") end gg.clearResults() end function mastery_menu() local menu = gg.choice({ "✅ Enable 1 XP Mastery", "❌ Disable 1 XP Mastery", "🔙 Return" }, nil, "Enable or Disable 1 XP Mastery!") if menu == nil or menu == 3 then return menu2() end if menu == 1 then xpmastery(true) end if menu == 2 then xpmastery(false) end end local originalMastery = nil function hackmasterychest() local choice = gg.choice({"\u{2705}Enable Hack Mastery in Chest", "\u{274C}Disable Mastery in Chest", "\u{1F519}Return"}, nil, "Enable or Disable Mastery in Chest!") if choice == nil or choice == 3 then return menu2() end if choice == 1 then gg.setRanges(gg.REGION_C_DATA) gg.clearResults() gg.searchNumber("10000", gg.TYPE_DWORD) local count = gg.getResultCount() if count == 0 then return gg.alert("\u{274C}No Results!") end local res = gg.getResults(count) originalMastery = {} for i, v in ipairs(res) do originalMastery[i] = {address = v.address, value = v.value, flags = v.flags} end gg.editAll(100000, gg.TYPE_DWORD) gg.setRanges(allRanges[picked].value) gg.clearResults() gg.alert("\u{2705}Enabled Hack Mastery in Chest!") elseif choice == 2 then if originalMastery == nil then return gg.alert("\u{274C}Nothing to restore!") end gg.setRanges(gg.REGION_C_DATA) gg.setValues(originalMastery) originalMastery = nil gg.alert("\u{274C}Disabled Hack Mastery in Chest!") gg.setRanges(allRanges[picked].value) end end function canyoncrewup() local main = gg.choice({ "Coins Menu", "Gems Menu", "Return" }, nil, "Main Menu") if main == nil or main == 3 then return menu2() end if main == 1 then local choice = gg.choice({ "10000 Coins", "20000 Coins", "30000 Coins", "40000 Coins", "Return" }, nil, "Coins Canyon Crew Up Menu") if choice == nil or choice == 5 then return canyoncrewup() end local amounts = {"10000", "20000", "30000", "40000"} gg.clearResults() gg.searchNumber(amounts[choice], gg.TYPE_DWORD) local count = gg.getResultCount() if count == 0 then gg.alert("No Results!") return canyoncrewup() end local results = gg.getResults(count) local v = gg.prompt({"How many Coins do you want?"}, {100000000}, {"number"}) if not v then return canyoncrewup() end local new_val = tonumber(v[1]) local edit_list = {} for i, item in ipairs(results) do table.insert(edit_list, { address = item.address, flags = gg.TYPE_DWORD, value = new_val }) end gg.setValues(edit_list) gg.alert("Done!") gg.clearResults() elseif main == 2 then local choice = gg.choice({ "10000 Coins to Gems", "20000 Coins to Gems", "30000 Coins to Gems", "40000 Coins to Gems", "Return" }, nil, "Gems Canyon Crew Up Menu") if choice == nil or choice == 5 then return canyoncrewup() end local amounts = {"10000", "20000", "30000", "40000"} gg.clearResults() gg.searchNumber(amounts[choice], gg.TYPE_DWORD) local count = gg.getResultCount() if count == 0 then gg.alert("No Results!") return canyoncrewup() end local results = gg.getResults(count) local v = gg.prompt({"How many Gems do you want? MAX IS 15000"}, {15000}, {"number"}) if not v then return canyoncrewup() end local new_val = tonumber(v[1]) if new_val > 15000 then gg.alert("Error: MAX IS 15000!") return canyoncrewup() end local edit_list = {} for i, item in ipairs(results) do table.insert(edit_list, { address = item.address + 4, flags = gg.TYPE_DWORD, value = new_val }) end gg.setValues(edit_list) gg.alert("Done!") gg.clearResults() end end function masteryUnlock1() local input = gg.prompt( {"Enter Vehicle Name:"}, {""}, {gg.TYPE_STRING} ) if input == nil then menu2() end local name = input[1] if name == "" then gg.alert("\u{274C}Please enter a valid name") menu2() end gg.clearResults() gg.searchNumber(":" .. name, gg.TYPE_BYTE) gg.setVisible(false) local allResults = gg.getResults(gg.getResultsCount()) if #allResults == 0 then gg.alert("\u{274C}No Results!") menu2() end gg.refineNumber(allResults[1].value, gg.TYPE_BYTE) local refinedResults = gg.getResults(gg.getResultsCount()) if #refinedResults == 0 then gg.alert("\u{274C}No Results!") menu2() end local targetAddresses = {} for _, res in ipairs(refinedResults) do table.insert(targetAddresses, { address = res.address + 0xEF, flags = gg.TYPE_DWORD }) end gg.clearResults() gg.loadResults(targetAddresses) gg.refineNumber("1~5", gg.TYPE_DWORD) local unlocked = gg.getResults(gg.getResultsCount()) if #unlocked == 0 then gg.alert("\u{274C}No Results!") menu2() end local edits = {} for _, result in ipairs(unlocked) do table.insert(edits, {address = result.address + 0x148, flags = gg.TYPE_DWORD, value = 1064972046}) table.insert(edits, {address = result.address + 0x14C, flags = gg.TYPE_DWORD, value = 760095363}) table.insert(edits, {address = result.address + 0x150, flags = gg.TYPE_DWORD, value = -98777962}) table.insert(edits, {address = result.address + 0x154, flags = gg.TYPE_DWORD, value = 1263588797}) end gg.setValues(edits) gg.alert("\u{2705}Removed Mastery Time!\nClick a bunch of times on the Mastery logo!") gg.clearResults() gg.clearList() end function banaccount() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu1() end local choice = gg.choice({"⏩Continue", "🔙Return"}, nil, "❗THIS WILL BAN YOUR ACCOUNT! DO YOU WANT TO CONTINUE?") if choice == nil or choice == 2 then return menu1() end if choice == 1 then gg.alert("❗ONE FINAL MESSAGE EXIT YOUR GAME INSTANTLY, IF YOU DONT WANT TO GET BANNED!") local finalAddr = BaseGameStatus + 0x3DD gg.setValues({ {address = finalAddr, flags = gg.TYPE_BYTE, value = 1} }) gg.alert("✅ Now your banned!") end end FREECHESTResults = nil FREECHESTOriginals = {} FREECHESTState = false function TimeCupsValues() local input = gg.prompt({"Set Cups Countdown (in seconds): [0;10]"}, {"3"}, {"number"}) if input == nil then return CupsMenu() end local val = tonumber(input[1]) if val == nil or val < 0 or val > 10 then gg.alert("❌ Invalid input! Please enter a number between 0 and 10.") return TimeCupsValues() end TimeCupsAmount = val if ApplyTimer then ApplyTimer(val) gg.alert("✅ Applied Cups Countdown to " .. val .. " seconds") end end local TiemCupsOriginal = {} local TimeCupsResults = {} local TimeCupsAmount = false function ApplyTimer(val) if not TimeCupsAmount then gg.clearResults() gg.setRanges(gg.REGION_C_BSS) gg.searchNumber("3", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("No Results!") return end TimeCupsResults = gg.getResults(count) TimeCupsAmount = true end local newValues = {} for i, res in ipairs(TimeCupsResults) do newValues[i] = { address = res.address, flags = gg.TYPE_FLOAT, value = val } end gg.setValues(newValues) end ---diddy----- function BusGlitch() local choice = gg.choice( {"\u{2705}Yes", "\u{274C}No", "\u{1F519}Return"}, nil, "For this to work you need to be in a cup race with bus!\nAre you done?" ) if not choice then menu2() return end if choice == 1 then gg.clearResults() gg.searchNumber("-10", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) local results = gg.getResults(1000) if not results or #results == 0 then gg.alert("\u{274C} No Results!") menu2() return end local function pulse(val, delay) gg.editAll(val, gg.TYPE_FLOAT) gg.sleep(delay) end pulse("10", 3000) pulse("-10", 1000) pulse("5", 1500) pulse("-10", 1000) gg.clearResults() gg.alert("\u{2705} Done!") elseif choice == 2 then menu2() return elseif choice == 3 then menu2() return end end function eventpoints() if EP_STEP == nil then EP_STEP = 0 end local choice = gg.choice( { "\u{0031}\u{fe0f}\u{20e3}Event Points Hack (ENTER YOUR CURRENT EVENT POINTS)", "\u{0032}\u{fe0f}\u{20e3}Event Points Hack (ENTER HOW MANY EVENT POINTS YOU HAVE NOW)", "\u{0033}\u{fe0f}\u{20e3}Event Points Hack (ENTER HOW MANY EVENT POINTS YOU HAVE NOW)", "\u{0034}\u{fe0f}\u{20e3}Event Points Hack (CHOOSE HOW MANY EVENT POINTS YOU WANT)", "\u{1F519}Return" }, nil, "First do 1 then do 2 then do 3 then do 4!") if choice == nil then menu2() return end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) local entervalue = gg.prompt({"How many event points do you have?"}, {67}, {"number"}) if not entervalue then eventpoints() return end gg.searchNumber(entervalue[1], gg.TYPE_DWORD) local r = gg.getResults(gg.getResultsCount()) if #r == 0 then gg.alert("\u{274C}No Results!") eventpoints() return end EP_STEP = 1 gg.toast("\u{2705} Step 1 completed! Continue with Step 2!") elseif choice == 2 then if EP_STEP < 1 then gg.alert("\u{274C}Do Step 1 first!") eventpoints() return end local entervalue = gg.prompt({"How many event points do you have now?"}, {67}, {"number"}) if not entervalue then eventpoints() return end gg.setRanges(allRanges[picked].value) gg.refineNumber(entervalue[1], gg.TYPE_DWORD) local r = gg.getResults(gg.getResultsCount()) if #r == 0 then gg.alert("\u{274C}No Results!") eventpoints() return end EP_STEP = 2 gg.toast("\u{2705} Step 2 completed! Continue with Step 3!") elseif choice == 3 then if EP_STEP < 2 then gg.alert("\u{274C}Do Step 2 first!") eventpoints() return end local entervalue = gg.prompt({"How many event points do you have now?"}, {67}, {"number"}) if not entervalue then eventpoints() return end gg.setRanges(allRanges[picked].value) gg.refineNumber(entervalue[1], gg.TYPE_DWORD) local r = gg.getResults(gg.getResultsCount()) if #r == 0 then gg.alert("\u{274C}No Results!") eventpoints() return end EP_STEP = 3 gg.toast("\u{2705} Step 3 completed! Continue with Step 4!") elseif choice == 4 then if EP_STEP < 3 then gg.alert("\u{274C}Do Step 3 first!") eventpoints() return end local entervalue = gg.prompt({"How many event points do you want to set?"}, {67777}, {"number"}) if not entervalue then eventpoints() return end local r = gg.getResults(6777) if #r == 0 then gg.alert("\u{274C}No Results!") eventpoints() return end gg.setRanges(allRanges[picked].value) gg.editAll(entervalue[1], gg.TYPE_DWORD) gg.clearResults() gg.alert("\u{2705}Now you will have the amount of event points that you set!") EP_STEP = 0 elseif choice == 5 then publiceventother() end end local function readString(address) local str = "" local i = 0 while true do local byteVal = gg.getValues({{ address = address + i, flags = gg.TYPE_BYTE }})[1].value if not byteVal or byteVal == 0 then break end str = str .. string.char(byteVal) i = i + 1 if i > 100 then break end end return str end function maxcars() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu2() end local vehicleListRead = gg.getValues({{ address = BaseGameStatus + 0xB8, flags = gg.TYPE_QWORD }}) local totalVehiclesRead = gg.getValues({{ address = BaseGameStatus + 0xC0, flags = gg.TYPE_DWORD }}) if not vehicleListRead or not vehicleListRead[1] or vehicleListRead[1].value == 0 then gg.alert("❌No Results!") return menu2() end local vehicleListPtr = vehicleListRead[1].value local totalVehicles = (totalVehiclesRead and totalVehiclesRead[1]) and totalVehiclesRead[1].value or 0 if totalVehicles == 0 then gg.alert("❌No Vehicles!") return menu2() end local reads = {} for i = 0, totalVehicles - 1 do reads[#reads + 1] = { address = vehicleListPtr + i * 8, flags = gg.TYPE_QWORD } end local vPtrs = gg.getValues(reads) or {} local vehicles = {} for _, v in ipairs(vPtrs) do if v.value and v.value ~= 0 then vehicles[#vehicles + 1] = v.value end end local meta = {} for _, vp in ipairs(vehicles) do meta[#meta + 1] = { address = vp + 0x18, flags = gg.TYPE_QWORD } meta[#meta + 1] = { address = vp + 0x20, flags = gg.TYPE_QWORD } end local metaVals = (#meta > 0 and gg.getValues(meta)) or {} local upReads = {} for k, vp in ipairs(vehicles) do local namePtr = metaVals[(k - 1) * 2 + 1] and metaVals[(k - 1) * 2 + 1].value local upgradeListPtr = metaVals[(k - 1) * 2 + 2] and metaVals[(k - 1) * 2 + 2].value local vehicleName = (namePtr and namePtr ~= 0) and readString(namePtr + 1) or "unknown" local upgradeSlots = vehicleName:find("lowrider") and 5 or 4 if upgradeListPtr and upgradeListPtr ~= 0 then for j = 0, upgradeSlots - 1 do upReads[#upReads + 1] = { address = upgradeListPtr + j * 8, flags = gg.TYPE_QWORD } end end end local upPtrs = (#upReads > 0 and gg.getValues(upReads)) or {} local upgradeList = {} for _, p in ipairs(upPtrs) do if p.value and p.value ~= 0 then upgradeList[#upgradeList + 1] = { address = p.value + 0x20, flags = gg.TYPE_DWORD, value = 19 } upgradeList[#upgradeList + 1] = { address = p.value + 0x24, flags = gg.TYPE_DWORD, value = 19 } end end if #upgradeList > 0 then gg.setValues(upgradeList) gg.alert("✅Maxed Out All Vehicles!") end end function menu3() local choice = gg.choice({ "\u{1F47B}Hide Icons", "\u{1F6E0}Swap Parts", "\u{1F631}Swap Maps Menu", "🗺️Swap Maps Menu V2", "🔥Auto Detach", "⚡Set Distance", "👑 Hack Team Entry Criteria", "🌟Vehicle Speed", "❗Real VIP (❗WILL BAN YOUR ACC❗)", "🔷 Get All Rank Rewards for free", "❌Remove Blacklist for Research Points", "\u{1F519}Return" }, nil, "\u{0033}\u{fe0f}\u{20e3}Menu made by eomthix" ) if choice == nil or choice == 12 then MainMenu() end if choice == 1 then HideIcons() elseif choice == 2 then PartSwap() elseif choice == 3 then menuswap() elseif choice == 4 then Mapreplacement() elseif choice == 5 then AutoDetach() elseif choice == 6 then VehicleStats() elseif choice == 7 then teamentry() elseif choice == 8 then VehicleGearshift() elseif choice == 9 then RealVIP() elseif choice == 10 then freerankrewards() elseif choice == 11 then removeblacklist() end end function AutoDetach() local archName = "Unknown" local offset = 0 local patchBytes = {} if archType == 1 then archName = "ARMv8" offset = CNF.offsets.detach_phone patchBytes = {0x1F, 0x20, 0x03, 0xD5} elseif archType == 2 then archName = "x86_64" offset = CNF.offsets.detach_emu patchBytes = {0x46, 0x30, 0x90, 0x90} else gg.alert("❌Unsupported Architecture!") return menu3() end local choice = gg.choice({"✅Enable Auto Detach", "❌Disable Auto Detach", "🔙Return"}, nil, "Auto Detach for " .. archName) if choice == nil or choice == 3 then return menu3() end local startAddr = LIB_BASE + offset if choice == 1 then if fakeUnlockOriginal == nil then fakeUnlockOriginal = {} local readList = {} for i = 1, #patchBytes do table.insert(readList, {address = startAddr + (i - 1), flags = gg.TYPE_BYTE}) end local values = gg.getValues(readList) for i = 1, #values do fakeUnlockOriginal[i] = values[i].value end end local edits = {} for i = 1, #patchBytes do table.insert(edits, {address = startAddr + (i - 1), flags = gg.TYPE_BYTE, value = patchBytes[i]}) end gg.setValues(edits) gg.alert("✅Enabled Auto Detach!") elseif choice == 2 then if fakeUnlockOriginal ~= nil then local edits = {} for i = 1, #fakeUnlockOriginal do table.insert(edits, {address = startAddr + (i - 1), flags = gg.TYPE_BYTE, value = fakeUnlockOriginal[i]}) end gg.setValues(edits) gg.alert("❌Disabled Auto Detach!") else gg.alert("❌Nothing to restore!") end end end function removeblacklist() local choice = gg.choice({"⏭️Continue", "🔙Return"},nil, "❗Use this if you cant spend your Research Points anymore!\n❗It will reset your Research Points back to 0") if choice == nil or choice == 2 then return menu3() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":research_points", gg.TYPE_BYTE) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") return removeblacklist() end gg.editAll(0, gg.TYPE_BYTE) gg.alert("✅Your Research Points are now reset back to 0") end end function RealVIP() if not BaseGameStatus then gg.alert("❌ Couldn't find Gamestatus!") return menu3() end local choice = gg.choice({"⏭️Continue", "🔙Return"},nil, "This will Ban your Account! Are you sure that you want to continue?") if choice == nil or choice == 2 then return menu3() end if choice == 1 then local expireTimeStamp = os.time() local lengthMenu = gg.prompt({"How many days do you want to set VIP to? [1;30]"}, {7}, {"number"}) if lengthMenu == nil then return menu3() end local days = tonumber(lengthMenu[1]) if not days or days < 1 then return menu3() end local length = 86400 * days local vipPointerCheck = gg.getValues({{ address = BaseGameStatus + 0x3A8, flags = 32 }}) if not vipPointerCheck or #vipPointerCheck == 0 then gg.alert("❌ No Pointer!") return menu3() end local VIPpointers = vipPointerCheck[1].value local VIPvalue = VIPpointers + 0x10 gg.setValues({{ address = VIPvalue + 0x0, flags = 4, value = 130559 }, { address = VIPvalue + 0x4, flags = 4, value = 81 }, { address = VIPvalue + 0x8, flags = 4, value = expireTimeStamp + length }, { address = VIPvalue + 0xC, flags = 4, value = 6 }, { address = VIPvalue + 0x10, flags = 4, value = expireTimeStamp }, { address = VIPvalue + 0x14, flags = 4, value = expireTimeStamp }, { address = VIPvalue + 0x18, flags = 4, value = expireTimeStamp }, { address = VIPvalue + 0x1C, flags = 4, value = 65793 }}) gg.alert("✅Set VIP for days: " .. days) gg.clearResults() end end function freerankrewards() gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("0.0001", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") return menu3() end gg.editAll(500, gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.alert("✅Open and close some menus and the Rank Rewards will be unlocked!") end function TicketsEditor() if not BaseGameStatus then gg.alert("❌ Couldn't find Gamestatus!") return menu3() end local specialTicketsAddr = BaseGameStatus + 0x4AC local Playercommunitytickets1 = gg.getValues({{ address = BaseGameStatus + 0x660, flags = 32 }})[1].value local communityTicketsAddr = Playercommunitytickets1 + 0x48 local currentSpecial = gg.getValues({{address = specialTicketsAddr, flags = 4}})[1].value local currentCommunity = gg.getValues({{address = communityTicketsAddr, flags = 4}})[1].value local displaySpecial = currentSpecial - 1 local choice = gg.choice({ "🎟️ Special Tickets [Current: " .. displaySpecial .. "]", "👥 Community Tickets [Current: " .. currentCommunity .. "]", "🔙 Return" }, nil, "Tickets Editor") if choice == nil or choice == 3 then return menu3() end if choice == 1 then local input = gg.prompt({"Edit Special Tickets:"}, {displaySpecial}, {"number"}) if input and tonumber(input[1]) then local newValue = tonumber(input[1]) + 1 gg.setValues({{address = specialTicketsAddr, flags = 4, value = newValue}}) gg.alert("✅Special Tickets set to: " .. (newValue - 1)) end elseif choice == 2 then local input = gg.prompt({"Edit Community Tickets:"}, {currentCommunity}, {"number"}) if input and tonumber(input[1]) then local newValue = tonumber(input[1]) gg.setValues({{address = communityTicketsAddr, flags = 4, value = newValue}}) gg.alert("✅Community Tickets set to: " .. newValue) end end end local kmValue = 5000 local savedPointers = {} function setdistance() if not LIB_BASE then gg.alert("❌Couldn't find Lib!") return menu3() end local menu = gg.choice({ "🌐 START (Activate in Countryside)", "🔓 PATCH", "🔙 Return" }, nil, "Sr Romero | Eomthix | Distance [R BETA]") if menu == nil or menu == 3 then return menu3() end if menu == 1 then isnwele() elseif menu == 2 then lsmwlsl() end end function isnwele() gg.clearResults() gg.setVisible(false) local primaryOffset = 0 if archType == 1 then primaryOffset = CNF.offsets.dist_phone elseif archType == 2 then primaryOffset = CNF.offsets.dist_emu else gg.alert("❌ Unsupported Architecture!") return menu3() end local target = LIB_BASE + primaryOffset gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber(target, gg.TYPE_QWORD) local count = gg.getResultCount() if count == 0 then gg.toast("NOT WORK") return setdistance() end local results = gg.getResults(count) local addListItems = {} savedPointers = {} for i = 1, #results do local addrAsValue = results[i].address gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber(addrAsValue, gg.TYPE_QWORD) local count2 = gg.getResultCount() if count2 > 0 then local results2 = gg.getResults(count2) for j = 1, #results2 do local offsetAddr = results2[j].address - 0xAC gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber(offsetAddr, gg.TYPE_QWORD) local count3 = gg.getResultCount() if count3 > 0 then local results3 = gg.getResults(count3) for k = 1, #results3 do local addr = results3[k].address table.insert(addListItems, { address = addr, flags = gg.TYPE_QWORD }) table.insert(savedPointers, addr) end end end end end if #addListItems == 0 then gg.toast("NOT WORK") return end gg.addListItems(addListItems) gg.toast("✓✓✓") end -- PATCH function lsmwlsl(showToast) gg.setVisible(false) local list = gg.getListItems() if not list or #list == 0 then gg.toast("Run START first") return end local pointerReads = {} for i = 1, #list do local item = list[i] if item and item.address then pointerReads[#pointerReads + 1] = { address = item.address, flags = gg.TYPE_QWORD } end end if #pointerReads == 0 then gg.toast("Data Empty") return end gg.loadResults(pointerReads) local pointerResults = gg.getResults(#pointerReads) or {} if #pointerResults == 0 then gg.toast("Pointer Error") return end local edits = {} for i = 1, #pointerResults do local item = pointerResults[i] if item and type(item.value) == "number" and item.value ~= 0 then edits[#edits + 1] = {address = item.value + 0x0, flags = gg.TYPE_DWORD, value = kmValue} edits[#edits + 1] = {address = item.value + 0x10, flags = gg.TYPE_FLOAT, value = 2000000000} edits[#edits + 1] = {address = item.value + 0x14, flags = gg.TYPE_FLOAT, value = 2000000000} end end if #edits > 0 then gg.setValues(edits) if showToast ~= false then gg.toast("✓ ✓✓") end else gg.toast("No edits") end gg.clearResults() end Vehiclespeedchangeoffset = nil function VehicleGearshift() if not Vehiclespeedchangeoffset then gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("h 11 11 91 3F 00 00 00 20", gg.TYPE_BYTE) local results = gg.getResults(1) if #results == 0 then gg.alert("❌ No Results!") return menu3() end Vehiclespeedchangeoffset = results[1].address end local targetAddress = Vehiclespeedchangeoffset + 0x8 local current = gg.getValues({{address = targetAddress, flags = gg.TYPE_FLOAT}}) local currentValue = current[1] and current[1].value or "Unknown" local speedOptions = { { label = "Set Speed: -1.05", value = -1.05 }, { label = "Set Speed: -1.00", value = -1.00 }, { label = "Set Speed: -0.95", value = -0.95 }, { label = "Set Speed: -0.90", value = -0.90 }, { label = "Set Speed: -0.85", value = -0.85 }, { label = "Set Speed: -0.80", value = -0.80 } } local choiceItems = {} for i, v in ipairs(speedOptions) do table.insert(choiceItems, "⚡ " .. v.label) end table.insert(choiceItems, "🔄 Restore Speed to Default") table.insert(choiceItems, "🔙 Return") local menu = gg.choice(choiceItems, nil, "Verhicle Speed") if menu == nil or menu == #choiceItems then return menu3() end if menu == #choiceItems - 1 then gg.setValues({{ address = targetAddress, flags = gg.TYPE_FLOAT, value = -1.13333332539 }}) gg.alert("❌Verhicle Speed restored!") else local selectedSpeed = speedOptions[menu].value gg.setValues({{ address = targetAddress, flags = gg.TYPE_FLOAT, value = selectedSpeed }}) gg.alert("✅Verhicle Speed set to: " .. selectedSpeed) end end function teamentry() local choice = gg.choice({"⏭️Continue", "🔙Return"}, nil, "Your current Team Entry Criterias must be set to 2500 GP and Legend Rank 1!\nDo you want to continue?") if choice == nil or choice == 2 then return menu3() end if choice == 1 then gg.setRanges(allRanges[picked].value) gg.clearResults() gg.searchNumber("2500;50", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌ No Results!") return menu3() end local editChoice = gg.choice({"💫Edit Only the Garage Power", "🏆Edit Only the Legend Rank", "✅ Edit Both of them", "🔙Return"}, nil, "What do you want to edit?") if editChoice == nil or editChoice == 4 then return teamentry() end if editChoice == 1 then gg.refineNumber("2500", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) local input = gg.prompt({"What do you want to set the Garage Power to?"}, {"999999"}, {"number"}) if not input then return teamentry() end local value = tonumber(input[1]) if value and value > 100000000 then gg.alert("❌ Error: Maximum limit is 100,000,000!") return teamentry() end gg.editAll(value, gg.TYPE_DWORD) gg.alert("✅ Now create the team!") elseif editChoice == 2 then gg.refineNumber("50", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) local input = gg.prompt({"What do you want to set the Legend Rank to?"}, {"999999"}, {"number"}) if not input then return teamentry() end local value = tonumber(input[1]) if value and value > 100000000 then gg.alert("❌ Error: Maximum limit is 100,000,000!") return teamentry() end gg.editAll(value, gg.TYPE_DWORD) gg.alert("✅ Now create the team!") elseif editChoice == 3 then local input = gg.prompt({"What do you want to set them to?"}, {"999999"}, {"number"}) if not input then return teamentry() end local value = tonumber(input[1]) if value and value > 100000000 then gg.alert("❌ Error: Maximum limit is 100,000,000!") return teamentry() end gg.editAll(value, gg.TYPE_DWORD) gg.alert("✅ Now create the team!") end end end local lastResults = {} local showAlertStats = false function VehicleStats() if showAlertStats == false then gg.alert("If you have 0 for any of these values simply enter nothing!") showAlertStats = true end local prompts = { "Enter Races Won:", "Enter Distance Traveled:", "Enter Back Flips:", "Enter Front Flips:", "Enter Neck Flips:" } local input = gg.prompt(prompts, nil, {"number", "number", "number", "number", "number"}) if not input then return menu3() end local searchString = "" local activeInputs = {} for i = 1, 5 do if input[i] ~= "" then table.insert(activeInputs, {id = i, val = input[i], name = prompts[i]:gsub("Enter ", ""):gsub(":", "")}) if searchString == "" then searchString = input[i] .. "D" else searchString = searchString .. ";" .. input[i] .. "D" end end end if searchString == "" then return end gg.clearResults() gg.searchNumber(searchString, gg.TYPE_DWORD) local count = gg.getResultsCount() if count == 0 then gg.alert("❌ No Results!") else lastResults = { all = gg.getResults(count), inputs = activeInputs } EditMenu() end end function EditMenu() if #lastResults.all == 0 then return menu3() end local options = {"️✏️ Edit: All Stats"} for _, item in ipairs(lastResults.inputs) do table.insert(options, "✏️ Edit: " .. item.name) end table.insert(options, "🔙 Return") local choice = gg.choice(options, nil, "Choose Edit Mode") if not choice or choice == #options then return menu3() end if choice == 1 then ApplyEdit(lastResults.all, "ALL Group Results") else local selected = lastResults.inputs[choice - 1] gg.loadResults(lastResults.all) gg.refineNumber(selected.val, gg.TYPE_DWORD) local count = gg.getResultsCount() local refinedData = gg.getResults(count) if count == 0 then gg.alert("❌ No Results!") else ApplyEdit(refinedData, selected.name) end end end function ApplyEdit(targetData, label) local edit = gg.prompt({"Enter how much you want to change " .. label .. ":"}, {"100"}, {"number"}) if not edit then return EditMenu() end local newValues = {} for i, v in ipairs(targetData) do table.insert(newValues, { address = v.address, flags = v.flags, value = edit[1] }) end gg.setValues(newValues) gg.alert("✅ Done! Check your stats!") return EditMenu() end function mainevent() local choice = gg.choice({"⚡Event Menu (Rewards)", "😱Event Mod (Real Skin Unlock)", "🔙Return"},nil, "Event Menu") if choice == nil or choice == 3 then return MainMenu() end if choice == 1 then eventmenu() elseif choice == 2 then startpemod() end end function startpemod() local function fail(msg) if gg.alert("For this to work you need to use Pivot GG by lazor!\n\n" .. msg .. "\n\nUse Pivot GG by Vekendian.", "Copy Download Link for Pivot GG", "OK") == 1 then gg.copyText("https://github.com/vekendianorg/pivot/releases/tag/v1.4") return mainevent() end return mainevent() end if type(luajava) ~= "table" then fail("LuaJava not detected.") return end if type(import) ~= "function" then fail("import() unavailable.") return end if not pcall(function() import("java.lang.String") end) then fail("Core Java classes unavailable.") return end if not pcall(function() import("android.os.Build") end) then fail("Android API unavailable.") return end local V = import("android.os.Build$VERSION") if V.SDK_INT < 21 then fail(("Android 5.0+ (API 21) required. Detected API %d."):format(V.SDK_INT)) return end local required = { "android.ext.Tools", "android.ext.rx", "android.ext.Script", "android.ext.Config", "android.ext.MainService", "org.vekendian.Crypto", "org.vekendian.Ui", "org.vekendian.Zip", } local missing = {} for _, cls in ipairs(required) do if not pcall(function() luajava.bindClass(cls) end) then missing[#missing + 1] = cls end end if #missing > 0 then fail("Missing classes:\n" .. table.concat(missing, "\n")) return end local choice = gg.choice({"⚡ Patch All Event Rewards", "⏮️ Restore All Event Rewards", "🔙 Return"}, nil, "PE-MOD made by Lazor") if choice == nil or choice == 3 then return mainevent() end if choice == 1 then unlock() elseif choice == 2 then restoreEvents() end end function FreeEvent() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("h 18 45 76 65 6E 74 4D 61 6E 61 67 65", gg.TYPE_BYTE) gg.refineNumber("h 18", gg.TYPE_BYTE) local results = gg.getResults(50) if #results == 0 then gg.alert("Pattern not found") return end local function isValidPtr(value) return value and value > 0x100000000 and value < 0x7FFFFFFFFFFF end for i,v in ipairs(results) do v.address = v.address + 0x18 v.flags = gg.TYPE_QWORD end results = gg.getValues(results) local firstPointers = {} for _,v in ipairs(results) do if isValidPtr(v.value) then firstPointers[#firstPointers+1] = { address = v.value, flags = gg.TYPE_QWORD } end end firstPointers = gg.getValues(firstPointers) for i,v in ipairs(firstPointers) do v.address = v.address + 0x18 v.flags = gg.TYPE_QWORD end firstPointers = gg.getValues(firstPointers) local secondPointers = {} for _,v in ipairs(firstPointers) do if isValidPtr(v.value) then secondPointers[#secondPointers+1] = { address = v.value, flags = gg.TYPE_QWORD } end end secondPointers = gg.getValues(secondPointers) local pointerFields = {} for _,v in ipairs(secondPointers) do if isValidPtr(v.value) then pointerFields[#pointerFields+1] = { address = v.address, flags = gg.TYPE_QWORD } end end gg.clearResults() gg.addListItems(pointerFields) gg.toast("event list added: "..#pointerFields) local floatZero = 0.0 local patchDword = 100000 local maxSteps = 45 local listItems = gg.getListItems() if #listItems == 0 then gg.alert("No pointer fields in list") return end local writeBatch = {} for _, item in ipairs(listItems) do local fieldAddress = item.address for step = 1, maxSteps do local ptrVal = gg.getValues({ { address = fieldAddress, flags = gg.TYPE_QWORD } })[1].value if not isValidPtr(ptrVal) then break end writeBatch[#writeBatch+1] = { address = ptrVal + 0x0, flags = gg.TYPE_FLOAT, value = floatZero } writeBatch[#writeBatch+1] = { address = ptrVal + 0x24, flags = gg.TYPE_DWORD, value = patchDword } fieldAddress = fieldAddress + 0x8 end end if #writeBatch > 0 then gg.setValues(writeBatch) gg.toast("✅ Rewards patched!") end end EventShopResults = nil EventShopOriginals = nil EventShopState = false EventShopAmount = 1000000 EventShopType = nil local TICKET_TYPES = { ["🕹️ Challenge Tickets"] = {0x61686322, 0x6E656C6C, 0x745F6567, 0x656B6369, 0x00007374, 0x00000000, 0x00000000}, ["🎟 Special Tickets"] = {0x6570731E, 0x6C616963, 0x6369745F, 0x7374656B, 0x00000000, 0x00000000, 0x00000000}, ["📽️ Video Skip Tickets"] = {0x64697616, 0x735F6F65, 0x7370696B, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ["🎟️ Adventure Token"] = {0x7664611E, 0x75746E65, 0x745F6572, 0x6E656B6F, 0x00000000, 0x00000000, 0x00000000}, ["📄 Vehicle Blue Prints"] = {0x68657622, 0x656C6369, 0x756C625F, 0x69727065, 0x0000746E, 0x00000000, 0x00000000}, ["⚙️ Scraps"] = {0x7263730A, 0x00007061, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ["🏅 Event Points"] = {0x65766518, 0x705F746E, 0x746E696F, 0x00000073, 0x00000000, 0x00000000, 0x00000000}, ["🏷️ Team Credits"] = {0x61657414, 0x6F635F6D, 0x00736E69, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ["💎Sky Rock Gems"] = {0x63616716, 0x745F6168, 0x6E656B6F, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ["🔬 Research Points"] = {0x7365721E, 0x63726165, 0x6F705F68, 0x73746E69, 0x00000000, 0x00000000, 0x00000000}, ["🔄 Reroll Part Token"] = {0x72657224, 0x5F6C6C6F, 0x74726170, 0x6F745F73, 0x006E656B, 0x00000000, 0x00000000}, ["✖️ Cup Points Doubler"] = {0x6E617218, 0x6F645F6B, 0x656C6275, 0x45360072, 0x00000000, 0x00000000, 0x00000000}, ["🔑 Chest Key"] = {0x65686312, 0x6B5F7473, 0x1A007965, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, ["🛡️ Win Streaks Shield"] = {0x6E697720, 0x65727473, 0x735F6B61, 0x6C656968, 0x961F0064, 0x00000000, 0x00000000}, ["🥚 Gem Spawn"] = {0x6D65671E, 0x6170735F, 0x745F6E77, 0x6E656B6F, 0x00000000, 0x00000000, 0x00000000} } function applyEventShop() if not EventShopType or not EventShopResults or not EventShopAmount then return end local edits = {} local values = TICKET_TYPES[EventShopType] if not values then return end local finalAmount = EventShopAmount if EventShopType == "🔬 Research Points" and finalAmount > 5000 then finalAmount = 5000 gg.toast("⚠️ Amount limited to 5000 for Research Points!") end gg.setVisible(false) for _, base in ipairs(EventShopResults) do for i = 0, 5 do edits[#edits+1] = { address = base.address + (i*4), flags = gg.TYPE_DWORD, value = values[i+1] or 0 } end edits[#edits+1] = { address = base.address + 0x18, flags = gg.TYPE_DWORD, value = math.floor(finalAmount) } end if allRanges and picked and allRanges[picked] then gg.setRanges(allRanges[picked].value) end gg.setValues(edits) gg.toast("✅ " .. EventShopType .. " set to " .. finalAmount) EventShopState = true end local eventStoreBackup = nil local function FreeEventStoreLogic(enable) gg.setVisible(false) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("21600", 4) local results = gg.getResults(100) if #results == 0 then gg.alert("❌ No Results!") return end local currentTime = os.time() local readList = {} local EventShopadd = nil for i, v in ipairs(results) do table.insert(readList, {address = v.address + 0x10, flags = 4}) table.insert(readList, {address = v.address - 0x1C, flags = 4}) table.insert(readList, {address = v.address - 0x14, flags = 4}) end local readValues = gg.getValues(readList) gg.clearResults() for i = 1, #results do local offset = (i-1) * 3 if readValues[offset + 1].value == -1 then if readValues[offset + 2].value < currentTime and readValues[offset + 3].value > currentTime then EventShopadd = results[i].address - 0x160 break end end end if not EventShopadd then gg.alert("❌ No Results!") return end local ActivityStoreItemPointerPointer = gg.getValues({{address = EventShopadd + 0x520, flags = 32}})[1].value local ActivityStoreItemEndPointer = gg.getValues({{address = EventShopadd + 0x528, flags = 32}})[1].value local itemCount = (ActivityStoreItemEndPointer - ActivityStoreItemPointerPointer) / 8 local readBatch = {} local writeBatch = {} for i = 1, itemCount do readBatch[i] = {address = ActivityStoreItemPointerPointer + (i-1)*0x8, flags = 32} end local structs = gg.getValues(readBatch) if enable then if eventStoreBackup == nil then eventStoreBackup = {} local backupRead = {} for i, v in ipairs(structs) do local b1 = v.value table.insert(backupRead, {address = b1 + 0x4, flags = 4}) table.insert(backupRead, {address = b1 + 0x28, flags = 4}) end local oldValues = gg.getValues(backupRead) for i = 1, #structs do local offset = (i-1) * 2 eventStoreBackup[i] = { cost = oldValues[offset + 1].value, currency = oldValues[offset + 2].value } end end for i, v in ipairs(structs) do local b1 = v.value table.insert(writeBatch, {address = b1 + 0x4, flags = 4, value = 0}) table.insert(writeBatch, {address = b1 + 0x28, flags = 4, value = -1}) end if #writeBatch > 0 then gg.setValues(writeBatch) gg.alert("✅ Enabled Free Event Items!") end else if eventStoreBackup == nil then gg.alert("❌ Nothing to restore!") return end for i, v in ipairs(structs) do local b1 = v.value local backup = eventStoreBackup[i] if backup then table.insert(writeBatch, {address = b1 + 0x4, flags = 4, value = backup.cost}) table.insert(writeBatch, {address = b1 + 0x28, flags = 4, value = backup.currency}) end end if #writeBatch > 0 then gg.setValues(writeBatch) gg.alert("❌ Disabled Free Event Items!") end end end function FreeEventStore() local choice = gg.choice({ "✅ Enable Free Event Store", "❌ Disable Free Event Store", "🔙 Return" }, nil, "Set All Event Rewards free") if choice == nil or choice == 3 then return eventmenu() end if choice == 1 then FreeEventStoreLogic(true) elseif choice == 2 then FreeEventStoreLogic(false) end end function eventmenu() gg.setVisible(false) local displayAmount = EventShopAmount and tostring(EventShopAmount) or "Not Set!" local types = { "1️⃣ Start", "🔢 Change Amount", "⚡ Free and Unlimited Event Shop", "🕹️ Challenge Tickets", "🎟 Special Tickets", "📽️ Video Skip Tickets", "🎟️ Adventure Token", "📄 Vehicle Blue Prints", "⚙️ Scraps", "🏅 Event Points", "🏷️ Team Credits", "💎Sky Rock Gems", "🔬 Research Points", "🔄 Reroll Part Token", "✖️ Cup Points Doubler", "🔑 Chest Key", "🛡️ Win Streaks Shield", "🥚 Gem Spawn", "🔙Return" } local choice = gg.choice(types, nil, "⚡ Public Event Menu\nCurrent Amount: " .. displayAmount) if choice == nil or choice == 19 then return mainevent() end if choice == 1 then gg.clearResults() gg.setVisible(false) gg.setRanges(allRanges[picked].value) gg.searchNumber("1986289950;1970564709;1952408946;1852140399;100::25", gg.TYPE_DWORD) gg.refineNumber("1986289950", gg.TYPE_DWORD) local results = gg.getResults(10) if #results == 0 then gg.alert("❌ No Results!") EventShopResults = nil else EventShopResults = results gg.alert("✅ Initialized!") end return eventmenu() end if choice == 2 then gg.setVisible(false) local input = gg.prompt({"🔢 Set Amount (MAX 1B)"}, {tostring(EventShopAmount or 1000000)}, {"number"}) if input then local val = tonumber(input[1]) if val and val <= 1000000000 then EventShopAmount = val gg.toast("✅ Amount set to: " .. EventShopAmount) if EventShopType and EventShopResults then applyEventShop() end else gg.alert("❌ Invalid Amount!") end end return eventmenu() end if choice == 3 then FreeEventStore() return eventmenu() end if choice >= 4 and choice <= 18 then if not EventShopResults then gg.alert("⚠️ Click Start first!") return eventmenu() end EventShopType = types[choice] applyEventShop() return eventmenu() end end function publiceventother() local choice = gg.choice({"🆓Free Buy for Event Specials", "💯Hack Event Points", "\u{1F519}Return"},nil, "\u{1F539}Other Event Hacks!") if choice == nil or choice == 3 then return mainevent() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.alert("❗Use it while being in the Event Menu!") gg.searchNumber("60;600;150", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll(0, gg.TYPE_FLOAT) gg.alert("✅Exit out of the Event Menu then go back into it!") elseif choice == 2 then eventpoints() end end PartSwapLogs = {} SearchParts = { {"SPOILER", {1869640462,1919249513}}, {"AFTERBURNER", {1952866582,1969386085,1919250034}}, {"THRUSTER", {1919448082,1702130549,29554}}, {"MAGNET", {1734438156,7628142}}, {"ROLLCAGE", {1819243024,1734435692,101}}, {"JUMP SHOCKS", {1836411412,1868717936,7631727}}, {"FLIP BOOST", {1768711712,1886609264,1600415077,1936682850,116}}, {"FUME BOOST", {1836410388,1868717925,7631727}}, {"START BOOST", {1919250470,1952671078,1635021663,1650422898,1953722223}}, {"OVERCHARGED TURBO", {1920300054,1650421602,1953722223}}, {"LANDING BOOST", {1919250474,1952671078,1851878495,1735289188,1869570655,29811}}, {"WINGS", {1768711946,25956}}, {"FUEL BOOST", {1702192660,1868717932,7631727}}, {"NITRO", {1953066506,28530}}, {"COIN BOOST", {1768907540,1868717934,7631727}}, {"WINTER TIRES", {1852405528,1601332596,1702001012,115}}, {"HEAVY WEIGHT", {1634035734,1702328694,1952999273}}, {"WHEELIE BOOST", {1701345050,1701407845,1869570655,29811}}, {"AIR CONTROL", {1919508758,1852793695,1819243124}} } EditParts = { {"SPOILER", {1869640462,1919249513,0,0,0,0}}, {"AFTERBURNER", {1952866582,1969386085,1919250034,0,0,0}}, {"THRUSTER", {1919448082,1702130549,29554,0,0,0}}, {"MAGNET", {1734438156,7628142,0,0,0,0}}, {"ROLLCAGE", {1819243024,1734435692,101,0,0,0}}, {"JUMP SHOCKS", {1836411412,1868717936,7631727,0,0,0}}, {"FLIP BOOST", {1768711712,1886609264,1600415077,1936682850,116,0}}, {"FUME BOOST", {1836410388,1868717925,7631727,0,0,0}}, {"START BOOST", {1919250470,1952671078,1635021663,1650422898,1953722223,0}}, {"OVERCHARGED TURBO", {1920300054,1650421602,1953722223,0,0,0}}, {"LANDING BOOST", {1919250474,1952671078,1851878495,1735289188,1869570655,29811}}, {"WINGS", {1768711946,25956,0,0,0,0}}, {"FUEL BOOST", {1702192660,1868717932,7631727,0,0,0}}, {"NITRO", {1953066506,28530,0,0,0,0}}, {"COIN BOOST", {1768907540,1868717934,7631727,0,0,0}}, {"WINTER TIRES", {1852405528,1601332596,1702001012,115,0,0}}, {"HEAVY WEIGHT", {1634035734,1702328694,1952999273,0,0,0}}, {"WHEELIE BOOST", {1701345050,1701407845,1869570655,29811,0,0}}, {"AIR CONTROL", {1919508758,1852793695,1819243124,0,0,0}} } local function seqToStr(seq) local out = {} for i=1,6 do out[i] = tostring(seq[i] or 0) end return table.concat(out, ";") end local function seqToStrNoZeros(seq) local out = {} for i=1,6 do if seq[i] and seq[i] ~= 0 then table.insert(out, tostring(seq[i])) end end return table.concat(out, ";") end function PartSwap() local names = {} for i, def in ipairs(SearchParts) do names[i] = def[1] end table.insert(names, "🔙 Return") local setm = gg.choice(names, nil, "Select input Part:") if not setm or setm == #names then return menu3() end local srcName = SearchParts[setm][1] local searchSeq = SearchParts[setm][2] local dstNames = {} for i, def in ipairs(EditParts) do dstNames[i] = def[1] end table.insert(dstNames, "🔙 Return") local dst = gg.choice(dstNames, nil, "Select output Part:") if not dst or dst == #dstNames then return menu3() end local dstName = EditParts[dst][1] local editSeq = EditParts[dst][2] VV2Custom(srcName, searchSeq, dstName, editSeq) end function VV2Custom(srcName, searchSeq, dstName, editSeq) gg.clearResults() local searchStr = seqToStrNoZeros(searchSeq) gg.setRanges(allRanges[picked].value) gg.searchNumber(searchStr.."::21", gg.TYPE_DWORD) local firstVal = searchSeq[1] if not firstVal or firstVal == 0 then gg.alert("❌ No Results!") return menu3() end gg.refineNumber(tostring(firstVal), gg.TYPE_DWORD) local results = gg.getResults(10000) if #results == 0 then gg.alert("❌ No Results!") return menu3() end local edits = {} for _, r in ipairs(results) do for i=1,6 do local addr = r.address + (i-1)*4 table.insert(edits, {address=addr, flags=gg.TYPE_DWORD, value=editSeq[i] or 0}) end end gg.setValues(edits) gg.clearResults() gg.alert("✅ Swapped!") end function writeString(address, text) local bytes = {} for i = 1, #text do bytes[#bytes + 1] = { address = address + i, flags = gg.TYPE_BYTE, value = string.byte(text, i) } end bytes[#bytes + 1] = { address = address + #text + 1, flags = gg.TYPE_BYTE, value = 0 } gg.setValues(bytes) end function NameMenu() local choice = gg.choice({ "\u{26a1}Change Name", "\u{1f47b}Invisible Name", "\u{1F519}Return" }, nil, "You can change your name or put it invisible! Debug Mode must be disabled!") if not choice or choice == 3 then menu3() end if choice == 1 then ChangeName() elseif choice == 2 then InvisibleName() end end function ChangeName() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu3() end local getPlayerNamePtr = gg.getValues({{ address = BaseGameStatus + 0x38, flags = 32 }})[1].value local lengthVal = gg.getValues({{ address = getPlayerNamePtr, flags = 1 }})[1].value local currentLength = math.floor(lengthVal / 2) local currentName = "" if currentLength > 0 and currentLength <= 12 then local nameBytes = {} for i = 1, currentLength do nameBytes[#nameBytes + 1] = { address = getPlayerNamePtr + i, flags = 1 } end local readBytes = gg.getValues(nameBytes) local chars = {} for i = 1, #readBytes do if readBytes[i].value > 0 then chars[#chars + 1] = string.char(readBytes[i].value) end end currentName = table.concat(chars) else currentName = "Unknown" end local input = gg.prompt({ "Current Name: " .. currentName .. "\n\nEnter New Name:" }, {""}, {"text"}) if not input or input[1] == "" then return menu3() end local name = input[1] local tempString = {} local byteSize = 0 for _, code in utf8.codes(name) do local encoded = utf8.char(code) local bytes = {encoded:byte(1, -1)} if byteSize + #bytes > 12 then gg.alert("❌ Name can only be 12 bytes long!") return end for _, b in ipairs(bytes) do table.insert(tempString, b) byteSize = byteSize + 1 end end while #tempString < 12 do table.insert(tempString, 0) end local toEdit = {{ address = getPlayerNamePtr, flags = 1, value = byteSize * 2 }} for i = 1, #tempString do toEdit[#toEdit + 1] = { address = getPlayerNamePtr + i, flags = 1, value = tempString[i] } end gg.setValues(toEdit) gg.alert("✅Name changed to " .. name) end if BackupNameBytes == nil then BackupNameBytes = {} end function InvisibleName() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu3() end local getPlayerNamePtr = gg.getValues({{ address = BaseGameStatus + 0x38, flags = 32 }})[1].value local choice = gg.choice({ "👻 Enable Invisible Name", "🔄 Restore Original Name", "🔙 Return" }, nil, "Invisible Name") if not choice or choice == 3 then return NameMenu() end if choice == 1 then local currentNameBytes = {} for i = 0, 12 do currentNameBytes[#currentNameBytes + 1] = { address = getPlayerNamePtr + i, flags = 1 } end local readBytes = gg.getValues(currentNameBytes) if readBytes[1].value == 2 and readBytes[2].value == 32 then gg.alert("⚠️ Name is already invisible!") return InvisibleName() end BackupNameBytes = {} for i = 1, #readBytes do table.insert(BackupNameBytes, { address = readBytes[i].address, flags = readBytes[i].flags, value = readBytes[i].value }) end local toEdit = { { address = getPlayerNamePtr, flags = 1, value = 2 }, { address = getPlayerNamePtr + 1, flags = 1, value = 32 } } for i = 2, 12 do toEdit[#toEdit + 1] = { address = getPlayerNamePtr + i, flags = 1, value = 0 } end gg.setValues(toEdit) gg.alert("✅ Name set Invisible!") elseif choice == 2 then if not BackupNameBytes or #BackupNameBytes == 0 then gg.alert("❌ Not even enabled!") end gg.setValues(BackupNameBytes) gg.alert("✅ Original name successfully restored!") end end local OFFLINEResults = nil local OFFLINEOriginals = nil function changeoffline() local choice = gg.choice({ "\u{1F4DD}Change OFFLINE to anything", "\u{1F47B}Remove OFFLINE", "\u{1F504}Restore OFFLINE", "\u{1F519}Return" }, nil, "Offline logo must be visible!") if choice == nil or choice == 4 then return menu3() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":OFFLINE", gg.TYPE_BYTE) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then return gg.alert("\u{274C}No Results!") end local input = gg.prompt({"What do you want to change OFFLINE to? (max is 8 characters)"}, {}, {"text"}) if not input then changeoffline() end local newText = input[1] if #newText > 8 then gg.alert("\u{274C}MAX IS 8 CHARACTERS!") return changeoffline() end OFFLINEResults = results OFFLINEOriginals = gg.getValues(results) local edits = {} for i, res in ipairs(OFFLINEResults) do edits[#edits + 1] = { address = res.address, flags = gg.TYPE_BYTE, value = ":" .. input[1] } end gg.setValues(edits) gg.alert("\u{2705}OFFLINE changed successfully! Restart your run!") elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":OFFLINE", gg.TYPE_BYTE) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then return gg.alert("\u{274C}No Results!") end OFFLINEResults = results OFFLINEOriginals = gg.getValues(results) gg.editAll(0, gg.TYPE_BYTE) gg.alert("\u{2705}Removed OFFLINE! Restart your run!") elseif choice == 3 then if OFFLINEOriginals == nil then return gg.alert("\u{274C}Nothing to restore!") end gg.setValues(OFFLINEOriginals) OFFLINEOriginals = nil OFFLINEResults = nil gg.alert("\u{2705}Restored!") end end function flagmenu() local choice = gg.choice({ "\u{1F539}Set Brown Flag", "\u{1F539}Set Invisible Flag", "\u{1F539}Set Black Flag", "\u{1F539}Set Fingersoft Flag (NO BAN BUT TEMPORARY)", "\u{1F519}Return" },nil, "Choose any Flag!") if choice == nil or choice == 5 then PlayerMenu() end if choice == 1 then BrownFlag() end if choice == 2 then InvisibleFlag() end if choice == 3 then BlackFlag() end if choice == 4 then FingersoftFlag() end end function FingersoftFlag() local choice = gg.choice({"\u{2705}Enable Fingersoft Flag", "\u{274C}Disable Fingersoft Flag", "\u{1F519}Return"},nil, "Enable or Disable the Fingersoft Flag!") if choice == nil or choice == 3 then flagmenu() end if choice == 1 then local choice = gg.choice({"\u{27A1}\u{FE0F}Continue","\u{1F519}Return"}, nil, "For this to work you need to set the \u{1F1E9}\u{1F1EA}German Flag!") if choice == nil or choice == 2 then flagmenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("48;32::5", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("48;32", gg.TYPE_FLOAT) gg.clearResults() gg.searchNumber("252;172::5", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("2;240", gg.TYPE_FLOAT) gg.clearResults() gg.alert("\u{2705}Enabled Fingersoft Flag!") end elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2;240", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("252;172", gg.TYPE_FLOAT) gg.clearResults() gg.alert("\u{274C}Disabled Fingersoft Flag!") end end function BrownFlag() local choice = gg.choice({"\u{2705}Enable Brown Flag", "\u{274C}Disable Brown Flag", "\u{1F519}Return"}, nil, "Enable or Disable the Brown Flag!") if choice == nil or choice == 3 then flagmenu() end if choice == 1 then local choice = gg.choice({"\u{27A1}\u{FE0F}Continue", "\u{1F519}Return"}, nil, "For this to work you need to set the \u{1F1E6}\u{1F1F4}Angolian Flag! Are you done with that?") if choice == nil or choice == 2 then flagmenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("6709508", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262912", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("7299332", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262913", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("7823620", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262914", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("6644228", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262915", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("7168516", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("8262916", gg.TYPE_DWORD) gg.clearResults() gg.alert("\u{2705}Enabled Brown Flag!") end elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("8262912", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("6709508", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262913", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("7299332", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262914", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("7823620", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262915", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("6644228", gg.TYPE_DWORD) gg.clearResults() gg.processResume() gg.searchNumber("8262916", gg.TYPE_DWORD) gg.getResults(1000) gg.editAll("7168516", gg.TYPE_DWORD) gg.clearResults() gg.alert("\u{274C}Disabled Brown Flag") end end local flag_active = false local original_flag_value = nil function toggleFlag() local flagptr_addr = BaseGameStatus + 0x40 local flagptr_val = gg.getValues({{address = flagptr_addr, flags = gg.TYPE_QWORD}})[1].value if flagptr_val ~= 0 then if not flag_active then local current = gg.getValues({{address = flagptr_val, flags = gg.TYPE_DWORD}})[1].value original_flag_value = current local flag = { address = flagptr_val, flags = gg.TYPE_DWORD, value = 0, freeze = true } gg.setValues({flag}) gg.addListItems({flag}) flag_active = true gg.alert("✅ Enabled Invisible Flag!") else local restoreFlag = { address = flagptr_val, flags = gg.TYPE_DWORD, value = original_flag_value or 0, freeze = false } gg.setValues({restoreFlag}) gg.addListItems({restoreFlag}) flag_active = false gg.alert("❌ Disabled Invisible Flag!") end end end function InvisibleFlag() if not BaseGameStatus then gg.alert("❌ This function only works with Gamestatus!") return menu3() end local choice = gg.choice({ "✅ Enable Invisible Flag", "❌ Disable Invisible Flag", "🔙 Return" }, nil, "Enable or Disable the Invisible Flag!") if choice == nil or choice == 3 then return flagmenu() end if choice == 1 then if not flag_active then toggleFlag() else gg.alert("⚠️ Already enabled!") end end if choice == 2 then if flag_active then toggleFlag() else gg.alert("⚠️ Already disabled!") end end end function BlackFlag() local choice = gg.choice({"\u{2705}Enable Black Flag", "\u{274C}Disable Black Flag", "\u{1F519}Return"}, nil, "Enable or Disable the Black Flag!") if choice == nil or choice == 3 then flagmenu() end if choice == 1 then local choice = gg.choice({"\u{27A1}\u{FE0F}Continue", "\u{1F519}Return"},nil, "For this to work you need to set the \u{1F1FA}\u{1F1E6}Ukranian Flag! Are you done with that?") if choice == nil or choice == 2 then flagmenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("4,911,738,344,725,676,032", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100000) gg.editAll("-569,358,608", gg.TYPE_QWORD) gg.clearResults() gg.toast("\u{2705}Enabled Black Flag!") end elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("-569,358,608", gg.TYPE_QWORD) gg.getResults(gg.getResultsCount()) gg.editAll("4,911,738,344,725,676,032", gg.TYPE_QWORD) gg.alert("\u{274C}Disabled Black Flag!") end end local IconsOriginal = {} local IconsHidden = false function HideIcons() local choice = gg.choice({ "✅ Enable Hide Icons", "❌ Disable Hide Icons", "🔙 Return" }, nil, "Hide Icons") if not choice or choice == 3 then return menu3() end if choice == 1 then if IconsHidden then gg.toast("✅ Already Enabled!") return HideIcons() end IconsOriginal = {} local function zeroOutString(searchStr) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(searchStr, gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1) local count = gg.getResultCount() if count > 0 then local results = gg.getResults(count) for i = 1, #results do table.insert(IconsOriginal, { address = results[i].address, flags = results[i].flags, value = results[i].value }) results[i].value = 0 results[i].freeze = false end gg.setValues(results) end end zeroOutString(':icon-pause') zeroOutString(':icon-coin') zeroOutString(':OFFLINE') IconsHidden = true gg.alert("✅ Enabled Hidden Icons!") elseif choice == 2 then if #IconsOriginal > 0 then gg.setValues(IconsOriginal) end IconsOriginal = {} IconsHidden = false gg.alert("❌ Disbaled Hidden Icons!") end end function refine() local r = gg.getResults(gg.getResultsCount()) if #r == 0 then return end local out = {} for i = 1, #r do local h = string.format("%X", r[i].address) local t = h:sub(-2):upper() if t == "49" or t == "C9" then out[#out + 1] = r[i] end end gg.clearResults() gg.loadResults(out) end function doSwap(dstName, dstLetter) if src == nil then gg.alert("src nil") return menuswap() end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":" .. dstName, gg.TYPE_BYTE) gg.refineNumber(":" .. dstLetter, gg.TYPE_BYTE) refine() local b = gg.getResults(1) if #b == 0 then gg.alert("target not found") return menuswap() end local dst = b[1].address - 0x49 gg.clearResults() gg.searchNumber(src, gg.TYPE_QWORD) local refs = gg.getResults(gg.getResultsCount()) if #refs == 0 then gg.alert("no refs") return menuswap() end local edits = {} for i = 1, #refs do edits[#edits + 1] = { address = refs[i].address, value = dst, flags = gg.TYPE_QWORD } end gg.setValues(edits) gg.clearResults() gg.alert("\u{2705}Map swapped!") end function changemaps1() local maps = { {display = "\u{1F9D1}\u{200D}\u{1F33E}Countryside", search = "Countryside", code = "C"}, {display = "\u{1F43F}Spring Falls", search = "Spring Falls", code = "S"}, {display = "\u{1F332}Forest", search = "Forest", code = "F"}, {display = "\u{1F3D9}\u{FE0F} City", search = "City", code = "C"}, {display = "\u{1F5FB} Mountain", search = "Mountain", code = "M"}, {display = "\u{1F9A0} Rustbucket Reef", search = "Rustbucket Reef", code = "R"}, {display = "\u{2744}\u{FE0F} Winter", search = "Winter", code = "W"}, {display = "\u{26CF}\u{FE0F} Mines", search = "Mines", code = "M"}, {display = "\u{1F3DC}\u{FE0F} Dessert Valley", search = "Dessert Valley", code = "D"}, {display = "\u{1F3D6}\u{FE0F} Beach", search = "Beach", code = "B"}, {display = "\u{1F40A} Backwater Bog", search = "Backwater Bog", code = "B"}, {display = "\u{26C4} Racer Glacier", search = "Racer Glacier", code = "R"}, {display = "\u{1F3ED} Patchwork Plant", search = "Patchwork Plant", code = "P"}, {display = "\u{1F981} Switchback Savanna", search = "Switchback Savanna", code = "S"}, {display = "\u{1F344} Gloomvale", search = "Gloomvale", code = "G"}, {display = "\u{1F3A0} Overspill Fun Rig", search = "Overspill Fun Rig", code = "O"}, {display = "\u{26A1} Canyon Arena", search = "Canyon Arena", code = "C"}, {display = "\u{1F303} Cuptown", search = "Cuptown", code = "C"}, {display = "\u{1F317} Sky Rock Outpost", search = "Sky Rock Outpost", code = "S"}, {display = "\u{1F332} Forest Trials", search = "Forest Trials", code = "F"}, {display = "\u{1F3D9}\u{FE0F} Intense City", search = "Intense City", code = "I"}, {display = "\u{2744}\u{FE0F} Raging Winter", search = "Raging Winter", code = "R"} } local menu = {} for i = 1, #maps do menu[i] = maps[i].display end menu[#menu+1] = "\u{1F519}Return" local choice = gg.choice(menu, nil, "Choose source map") if choice == nil or choice == #menu then return menuswap() end local m = maps[choice] gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":" .. m.search, gg.TYPE_BYTE) gg.refineNumber(":" .. m.code, gg.TYPE_BYTE) refine() local a = gg.getResults(1) if #a == 0 then gg.alert("source not found") return menuswap() end src = a[1].address - 0x49 changemaps2() end function changemaps2() local maps = { {display = "\u{1F9D1}\u{200D}\u{1F33E}Countryside", search = "Countryside", code = "C"}, {display = "\u{1F43F}Spring Falls", search = "Spring Falls", code = "S"}, {display = "\u{1F332}Forest", search = "Forest", code = "F"}, {display = "\u{1F3D9}\u{FE0F} City", search = "City", code = "C"}, {display = "\u{1F5FB} Mountain", search = "Mountain", code = "M"}, {display = "\u{1F9A0} Rustbucket Reef", search = "Rustbucket Reef", code = "R"}, {display = "\u{2744}\u{FE0F} Winter", search = "Winter", code = "W"}, {display = "\u{26CF}\u{FE0F} Mines", search = "Mines", code = "M"}, {display = "\u{1F3DC}\u{FE0F} Dessert Valley", search = "Dessert Valley", code = "D"}, {display = "\u{1F3D6}\u{FE0F} Beach", search = "Beach", code = "B"}, {display = "\u{1F40A} Backwater Bog", search = "Backwater Bog", code = "B"}, {display = "\u{26C4} Racer Glacier", search = "Racer Glacier", code = "R"}, {display = "\u{1F3ED} Patchwork Plant", search = "Patchwork Plant", code = "P"}, {display = "\u{1F981} Switchback Savanna", search = "Switchback Savanna", code = "S"}, {display = "\u{1F344} Gloomvale", search = "Gloomvale", code = "G"}, {display = "\u{1F3A0} Overspill Fun Rig", search = "Overspill Fun Rig", code = "O"}, {display = "\u{26A1} Canyon Arena", search = "Canyon Arena", code = "C"}, {display = "\u{1F303} Cuptown", search = "Cuptown", code = "C"}, {display = "\u{1F317} Sky Rock Outpost", search = "Sky Rock Outpost", code = "S"}, {display = "\u{1F332} Forest Trials", search = "Forest Trials", code = "F"}, {display = "\u{1F3D9}\u{FE0F} Intense City", search = "Intense City", code = "I"}, {display = "\u{2744}\u{FE0F} Raging Winter", search = "Raging Winter", code = "R"} } local menu = {} for i = 1, #maps do menu[i] = maps[i].display end menu[#menu+1] = "\u{1F519}Return" local choice = gg.choice(menu, nil, "Choose target map") if choice == nil or choice == #menu then return changemaps1() end local m = maps[choice] doSwap(m.search, m.code) end function changemaps1cups() local maps = { {"Bottom Gear","B"}, {"No Skidding","N"}, {"Cuptown Relax","C"}, {"Cuptown Smooth","C"}, {"Landing Drive","L"}, {"Seesaw Road","S"}, {"Big Air","B"}, {"Logging In","L"}, {"Stumped","S"}, {"The Root Cause","T"}, {"Beyond Climberdome","B"}, {"Legendary Apex","L"}, {"Trial of Fall","T"}, {"Trial of Courage","T"}, {"Trial of Balance","T"}, {"Forbidden Forest","F"}, {"Captain's Log","C"}, {"The Pond","T"}, {"Racing Wild","R"}, {"The Fast Lions","T"}, {"Sunburnt","S"}, {"Tumbleweeds","T"}, {"Road to Heck","R"}, {"Hills Ahead","H"}, {"Vision of Victory","V"}, {"Hollow Road","H"}, {"Barn Ride","B"}, {"Base Jump","B"}, {"Silo Showdown","S"}, {"Let It Snow","L"}, {"Slippery Slope","S"}, {"Crossroads","C"}, {"The Dunes","T"}, {"Beach Boys","B"}, {"Seaside","S"}, {"Showgrounds","S"}, {"Four-Wheel Park","F"}, {"Circuit 9","C"}, {"House Party","H"}, {"Call of the Night","C"}, {"Shape of Hills to Come","S"}, {"Factory Settings","F"}, {"Face Plant","F"}, {"Flip A Switch","F"}, {"Plain As Day","P"}, {"World's Fastest Animal","W"}, {"Fare You Well","F"}, {"Bridges And Stones","B"}, {"The Dip","T"}, {"Killing Floors","K"}, {"Shaft Redemption","S"}, {"Tired Alligators","T"}, {"Hangout Cave","H"}, {"Docked Out","D"}, {"Rubberist","R"}, {"Heat Club","H"}, {"Whipclash","W"}, {"Fury Road","F"}, {"Yellow Snow","Y"}, {"Sledhammer","S"}, {"Icicle Race","I"}, {"Fingerwoods","F"}, {"The Quarry","T"}, {"Lost in Transmission","L"}, {"Flipway","F"}, {"Deeper End","D"}, {"The Trench","T"}, {"Reff Grief","R"}, {"Falling Crates","F"}, {"Magnet Madness","M"}, {"Take Off","T"}, {"Long Road Down","L"}, {"Bill's Landing","B"}, {"Spartan Racing","S"}, {"Ballmer's Peak","B"}, {"Skid Happens","S"}, {"No Step on Snek","N"}, {"Bat Country","B"}, {"Trough The Mountains","T"}, {"Gentle Escalation","G"}, {"Cool Descent","C"}, {"Topsy-Turvy","T"}, {"Roll With It","R"}, {"Switch It Up","S"}, {"Drive Through","D"}, {"Danger Zone","D"}, {"A Bridge Too Far","A"}, {"Cliffside Way","C"}, {"Tricky Drive","T"}, {"Nose Miner","N"}, {"Happy Miner","H"}, {"A Flat Miner","A"}, {"Nature Calls","N"}, {"Chew & Run","C"}, {"Nectar of the Climb","N"}, {"Sand in Swimsuit","S"}, {"Tunnel Dive","T"}, {"The Big Dunes","T"}, {"Swamp Ride","S"}, {"Grill Bill","G"}, {"Happy Campers","H"}, {"Boarding","B"}, {"Carting","C"}, {"Overtakers","O"}, {"Front Window","F"}, {"Belter Road","B"}, {"Metal Gear","M"}, {"Breaking Bad","B"}, {"Hairpin","H"}, {"Smooth Curves","S"}, {"Dusky Vale","D"}, {"Big Log Sprint","B"}, {"Twisted Trees","T"}, {"Snow Castle","S"}, {"Tailwind trail","T"}, {"Headwind Shortcut","H"}, {"Like a Hawk","L"}, {"Deepest End","D"}, {"Rock and Roll","R"}, {"Wheeler","W"}, {"Deep End","D"}, {"Tunnel Vision","T"}, {"The Esses","T"}, {"On the Rocks","O"}, {"Boiling Hollow","B"}, {"Bone Gorge","B"}, {"Forgotten Highway","F"}, {"Frostfire Caverns","F"}, {"Rust Valley","R"}, {"Cactus Hil","C"}, {"Dust Valley","D"}, {"The Ruins","T"}, {"Tumbling Down","T"}, {"Down the Tube","D"}, {"Muddy Road","M"}, {"Cottage Road","C"}, {"Lonely Camper","L"}, {"Parking Trailers","P"}, {"Snappy Swamps","S"}, {"Bumps in the Water","B"}, {"Dirt Road","D"}, {"Danger Ahead","D"}, {"Highs and Lows","H"}, {"Get Soaked","G"}, {"Watery Tunnel","W"}, {"Don't Dive","D"}, {"Living on the Edge","L"}, {"Over the Cliff","O"}, {"Steep Downhill Cliff","S"}, {"Nowhere Road","N"}, {"Coconut Cove","C"}, {"Downtown Madness","D"}, {"Bumpy Ride","B"}, {"Rough Road","R"}, {"Under the Cliff","U"}, {"Base Camp","B"}, {"Crazy Climb","C"}, {"Top of the World","T"}, {"Logs and Rocks","L"}, {"Rock Pit","R"}, {"Flying Log","F"}, {"Tide waves","T"}, {"Kids' pool","K"}, {"Sandbox","S"}, {"Far Far Away","F"}, {"Hot Tarmac","H"}, {"The Carousel","T"}, {"Fast Lane","F"}, {"Paradise Bay","P"}, {"Backwash Dash","B"}, {"Coral Quarrel","C"}, {"Thalassophobia","T"}, {"Access to Enjoyment","A"}, {"Liability Free Fun","L"}, {"Generate Delight","G"}, {"Approaching Dread","A"}, {"Commence Fright","C"}, {"Spook on, Spook off","S"}, {"You shall not jump","Y"}, {"The Princess Drive","T"}, {"Puddle Bender","P"}, {"A Storm of Stumps","A"}, {"Special Stage One","S"}, {"Special Stage Two","S"}, {"Special Stage Three","S"}, {"Nightlife","N"}, {"Neighbourbonnet","N"}, {"Boost Boulevard","B"}, {"Jumpin' Jack Crash","J"}, {"Breakneck Blitz","B"}, {"Carppuccino","C"}, {"Smooth Blend","S"}, {"Bean 2 Tank","B"}, {"Dire Drive","D"}, {"One Does Not Simply","O"}, {"Ice Era","I"}, {"Natural Sprinters","N"}, {"Let's Hunt Some Torque","L"}, {"Mud's Back on the Menu","M"} } local menu = {} for i = 1, #maps do menu[i] = maps[i][1] end menu[#menu+1] = "Return" local choice = gg.choice(menu, nil, "Choose source map") if choice == nil or choice == #menu then return menuswap() end local m = maps[choice] gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(":" .. m[1], gg.TYPE_BYTE) gg.refineNumber(":" .. m[2], gg.TYPE_BYTE) refine() local a = gg.getResults(1) if #a == 0 then gg.alert("source not found") return menuswap() end src = a[1].address - 0x49 changemaps2cups() end function changemaps2cups() local maps = { {"Bottom Gear","B"}, {"No Skidding","N"}, {"Cuptown Relax","C"}, {"Hidden Maps from Fingersoft used for testing and stuff","SUB"}, {"Cuptown Smooth","C"}, {"Landing Drive","L"}, {"Seesaw Road","S"}, {"Big Air","B"}, {"Logging In","L"}, {"Stumped","S"}, {"The Root Cause","T"}, {"Beyond Climberdome","B"}, {"Legendary Apex","L"}, {"Trial of Fall","T"}, {"Trial of Courage","T"}, {"Trial of Balance","T"}, {"Forbidden Forest","F"}, {"Captain's Log","C"}, {"The Pond","T"}, {"Racing Wild","R"}, {"The Fast Lions","T"}, {"Sunburnt","S"}, {"Tumbleweeds","T"}, {"Road to Heck","R"}, {"Hills Ahead","H"}, {"Vision of Victory","V"}, {"Hollow Road","H"}, {"Barn Ride","B"}, {"Base Jump","B"}, {"Silo Showdown","S"}, {"Let It Snow","L"}, {"Slippery Slope","S"}, {"Crossroads","C"}, {"The Dunes","T"}, {"Beach Boys","B"}, {"Seaside","S"}, {"Showgrounds","S"}, {"Four-Wheel Park","F"}, {"Circuit 9","C"}, {"House Party","H"}, {"Call of the Night","C"}, {"Shape of Hills to Come","S"}, {"Factory Settings","F"}, {"Face Plant","F"}, {"Flip A Switch","F"}, {"Plain As Day","P"}, {"World's Fastest Animal","W"}, {"Fare You Well","F"}, {"Bridges And Stones","B"}, {"The Dip","T"}, {"Killing Floors","K"}, {"Shaft Redemption","S"}, {"Tired Alligators","T"}, {"Hangout Cave","H"}, {"Docked Out","D"}, {"Rubberist","R"}, {"Heat Club","H"}, {"Whipclash","W"}, {"Fury Road","F"}, {"Yellow Snow","Y"}, {"Sledhammer","S"}, {"Icicle Race","I"}, {"Fingerwoods","F"}, {"The Quarry","T"}, {"Lost in Transmission","L"}, {"Flipway","F"}, {"Deeper End","D"}, {"The Trench","T"}, {"Reff Grief","R"}, {"Falling Crates","F"}, {"Magnet Madness","M"}, {"Take Off","T"}, {"Long Road Down","L"}, {"Bill's Landing","B"}, {"Spartan Racing","S"}, {"Ballmer's Peak","B"}, {"Skid Happens","S"}, {"No Step on Snek","N"}, {"Bat Country","B"}, {"Trough The Mountains","T"}, {"Gentle Escalation","G"}, {"Cool Descent","C"}, {"Topsy-Turvy","T"}, {"Roll With It","R"}, {"Switch It Up","S"}, {"Drive Through","D"}, {"Danger Zone","D"}, {"A Bridge Too Far","A"}, {"Cliffside Way","C"}, {"Tricky Drive","T"}, {"Nose Miner","N"}, {"Happy Miner","H"}, {"A Flat Miner","A"}, {"Nature Calls","N"}, {"Chew & Run","C"}, {"Nectar of the Climb","N"}, {"Sand in Swimsuit","S"}, {"Tunnel Dive","T"}, {"The Big Dunes","T"}, {"Swamp Ride","S"}, {"Grill Bill","G"}, {"Happy Campers","H"}, {"Boarding","B"}, {"Carting","C"}, {"Overtakers","O"}, {"Front Window","F"}, {"Belter Road","B"}, {"Metal Gear","M"}, {"Breaking Bad","B"}, {"Hairpin","H"}, {"Smooth Curves","S"}, {"Dusky Vale","D"}, {"Big Log Sprint","B"}, {"Twisted Trees","T"}, {"Snow Castle","S"}, {"Tailwind trail","T"}, {"Headwind Shortcut","H"}, {"Like a Hawk","L"}, {"Deepest End","D"}, {"Rock and Roll","R"}, {"Wheeler","W"}, {"Deep End","D"}, {"Tunnel Vision","T"}, {"The Esses","T"}, {"On the Rocks","O"}, {"Boiling Hollow","B"}, {"Bone Gorge","B"}, {"Forgotten Highway","F"}, {"Frostfire Caverns","F"}, {"Rust Valley","R"}, {"Cactus Hil","C"}, {"Dust Valley","D"}, {"The Ruins","T"}, {"Tumbling Down","T"}, {"Down the Tube","D"}, {"Muddy Road","M"}, {"Cottage Road","C"}, {"Lonely Camper","L"}, {"Parking Trailers","P"}, {"Snappy Swamps","S"}, {"Bumps in the Water","B"}, {"Dirt Road","D"}, {"Danger Ahead","D"}, {"Highs and Lows","H"}, {"Get Soaked","G"}, {"Watery Tunnel","W"}, {"Don't Dive","D"}, {"Living on the Edge","L"}, {"Over the Cliff","O"}, {"Steep Downhill Cliff","S"}, {"Nowhere Road","N"}, {"Coconut Cove","C"}, {"Downtown Madness","D"}, {"Bumpy Ride","B"}, {"Rough Road","R"}, {"Under the Cliff","U"}, {"Base Camp","B"}, {"Crazy Climb","C"}, {"Top of the World","T"}, {"Logs and Rocks","L"}, {"Rock Pit","R"}, {"Flying Log","F"}, {"Tide waves","T"}, {"Kids' pool","K"}, {"Sandbox","S"}, {"Far Far Away","F"}, {"Hot Tarmac","H"}, {"The Carousel","T"}, {"Fast Lane","F"}, {"Paradise Bay","P"}, {"Backwash Dash","B"}, {"Coral Quarrel","C"}, {"Thalassophobia","T"}, {"Access to Enjoyment","A"}, {"Liability Free Fun","L"}, {"Generate Delight","G"}, {"Approaching Dread","A"}, {"Commence Fright","C"}, {"Spook on, Spook off","S"}, {"You shall not jump","Y"}, {"The Princess Drive","T"}, {"Puddle Bender","P"}, {"A Storm of Stumps","A"}, {"Special Stage One","S"}, {"Special Stage Two","S"}, {"Special Stage Three","S"}, {"Nightlife","N"}, {"Neighbourbonnet","N"}, {"Boost Boulevard","B"}, {"Jumpin' Jack Crash","J"}, {"Breakneck Blitz","B"}, {"Carppuccino","C"}, {"Smooth Blend","S"}, {"Bean 2 Tank","B"}, {"Dire Drive","D"}, {"One Does Not Simply","O"}, {"Ice Era","I"}, {"Natural Sprinters","N"}, {"Let's Hunt Some Torque","L"}, {"Mud's Back on the Menu","M"} } local menu = {} for i = 1, #maps do menu[i] = maps[i][1] end menu[#menu+1] = "\u{1F519}Return" local choice = gg.choice(menu, nil, "Choose target map") if choice == nil or choice == #menu then return changemaps1cups() end local m = maps[choice] if m[2] == "SUB" then hiddenMapsMenu() else doSwap(m[1], m[2]) end end function hiddenMapsMenu() local hiddenMaps = { {"shader_test_cup","s"}, {"gravityland_0","g"}, {"Beaver test","B"}, {"3d_test_cup","3"}, {"potato potato","p"}, {"EQUIPPABLE TUNING PARTS TEST","E"}, {"50M FLAT (1)","5"}, {"50M FLAT (2)","5"}, {"100M FLAT","1"}, {"FLAT UPHILL","F"}, {"HILL CLIMB","H"}, {"UP'N'DOWN","U"}, {"200M FLAT","2"}, {"WORKSHOP","W"}, {"TERRAIN DEFORM","T"} } local menu = {} for i = 1, #hiddenMaps do menu[i] = hiddenMaps[i][1] end menu[#menu+1] = "\u{1F519}Return" local choice = gg.choice(menu, nil, "Choose hidden map") if choice == nil or choice == #menu then return changemaps2cups() end local m = hiddenMaps[choice] doSwap(m[1], m[2]) end local flatGroundSaved = {} function flatgroundcups() local menu = gg.choice({ "✅ Enable Flat Ground", "❌ Disable Flat Ground", "🔙 Back" }, nil, "Flat Ground Cups") if menu == nil or menu == 3 then return CupsMenu() end if menu == 1 then gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("50", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌ No Results found!") return flatgroundcups() end flatGroundSaved = gg.getValues(res) gg.editAll("9999", gg.TYPE_FLOAT) gg.alert("✅ Might not work for some maps!") elseif menu == 2 then if #flatGroundSaved == 0 then gg.alert("⚠️ Nothing to restore!") return flatgroundcups() end gg.setValues(flatGroundSaved) flatGroundSaved = {} gg.toast("❌ Flat Ground Disabled!") end end RankResults = {} function RankHackV1() local choice = gg.choice({ "1️⃣ Fake Rank Step 1 (Search)", "2️⃣ Fake Rank Step 2 (Refine)", "3️⃣ Fake Rank Step 3 (ACTIVATE IN RACE OR BAN)", "🔙 Return" }, nil, "Fake Rank Menu") if not choice or choice == 4 then return CupsMenu() end if choice == 1 then gg.clearResults() local input = gg.prompt({"Enter current rank (e.g. 0.479~0.481):"}, {"0.479~0.481"}, {"text"}) if not input then return RankHackV1() end gg.searchNumber(input[1], gg.TYPE_FLOAT) local count = gg.getResultsCount() if count == 0 then gg.alert("❌ No Results!") RankResults = {} else RankResults = gg.getResults(count) gg.alert("✅ Done! Now win one race and continue with Step 2!") end elseif choice == 2 then if #RankResults == 0 then gg.alert("❌ Please do Step 1 first!") return RankHackV1() end local input = gg.prompt({"Enter new rank (e.g. 0.959~0.961):"}, {"0.959~0.961"}, {"text"}) if not input then return RankHackV1() end gg.loadResults(RankResults) gg.refineNumber(input[1], gg.TYPE_FLOAT) local count = gg.getResultsCount() if count == 0 then gg.alert("❌ No Results!") RankResults = {} else RankResults = gg.getResults(count) gg.alert("✅ Done! Now continue with Step 3!") end elseif choice == 3 then if #RankResults == 0 then gg.alert("❌ Please do Step 2 first!") return RankHackV1() end local input = gg.prompt({"Enter how many cups you want! Recommended: 50"}, {50}, {"number"}) if not input then return RankHackV1() end for i, v in ipairs(RankResults) do v.value = input[1] v.freeze = false end gg.setValues(RankResults) gg.alert("✅ Fake Rank successfully set!") end end local ChestReady = false local EpicChestReady = false local LegendaryChestReady = false local StyleChestReady = false local MythicChestReady = false local OriginalRare = {} local OriginalEpic = {} local OriginalLegendary = {} local OriginalStyle = {} local OriginalMythic = {} local function NeedInit(msg) gg.alert("❗ " .. msg) end local function PerformChestSearch(searchStr, refineVal) gg.clearResults() gg.searchNumber(searchStr, gg.TYPE_DWORD) if gg.getResultCount() == 0 then local backupStr = searchStr:gsub(";" .. refineVal .. ":", ";9:") gg.clearResults() gg.searchNumber(backupStr, gg.TYPE_DWORD) if gg.getResultCount() > 0 then gg.refineNumber("9", gg.TYPE_DWORD) return true end else gg.refineNumber(refineVal, gg.TYPE_DWORD) return true end return false end function InitChestSearch() gg.alert("❗Make sure to not use any Gems options and that your chest is not swapped already!") gg.setRanges(allRanges[picked].value) if PerformChestSearch("100;2:5", "2") then local res = gg.getResults(1000) OriginalRare = gg.getValues(res) ChestReady = true gg.alert("✅Chest search done! Now choose any Chest Swap Options!") else gg.alert("❌No results!") end end function InitChestSearch1() gg.alert("❗Make sure to not use any Gems options and that your chest is not swapped already!") gg.setRanges(allRanges[picked].value) if PerformChestSearch("200;3:5", "3") then local res = gg.getResults(1000) OriginalEpic = gg.getValues(res) EpicChestReady = true gg.alert("✅Chest search done! Now choose any Chest Swap Options!") else gg.alert("❌No results!") end end function InitLegendaryChestSearch1() gg.alert("❗Make sure to not use any Gems options and that your chest is not swapped already!") gg.setRanges(allRanges[picked].value) if PerformChestSearch("1000;7::5", "7") then local res = gg.getResults(1000) OriginalLegendary = gg.getValues(res) LegendaryChestReady = true gg.alert("✅Chest search done! Now choose any Chest Swap Options!") else gg.alert("❌No results!") end end function InitStyleChestSearch() gg.alert("❗Make sure to not use any Gems options and that your chest is not swapped already!") gg.setRanges(allRanges[picked].value) if PerformChestSearch("1000;19::5", "19") then local res = gg.getResults(1000) OriginalStyle = gg.getValues(res) StyleChestReady = true gg.alert("✅Chest search done! Now choose any Chest Swap Options!") else gg.alert("❌No results!") end end function InitMythicChestSearch() gg.alert("❗Make sure to not use any Gems options and that your chest is not swapped already!") gg.setRanges(allRanges[picked].value) if PerformChestSearch("4000;20::5", "20") then local res = gg.getResults(1000) OriginalMythic = gg.getValues(res) MythicChestReady = true gg.alert("✅Chest search done! Now choose any Chest Swap Options!") else gg.alert("❌No results!") end end local function SwapChest(readyFlag, errMsg, originalValues, targetValue, toastMsg) if not readyFlag then NeedInit(errMsg) return end local res = gg.getResults(1000) if #res == 0 then gg.toast("❌ No targets found to swap!") return end if targetValue == "RESET" then if #originalValues > 0 then gg.setValues(originalValues) gg.toast(toastMsg) else gg.toast("❌ No original values stored to reset!") end else gg.editAll(targetValue, gg.TYPE_DWORD) gg.toast(toastMsg) end end function HandleRareChoice(rareChoice) if rareChoice == 1 then InitChestSearch() elseif rareChoice == 2 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 0, "✅Swapped to Common Chest") elseif rareChoice == 3 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 1, "✅Swapped to Uncommon Chest") elseif rareChoice == 4 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 3, "✅Swapped to Epic Chest") elseif rareChoice == 5 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 4, "✅Swapped to Champion Chest") elseif rareChoice == 6 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 7, "✅Swapped to Legendary Chest") elseif rareChoice == 7 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 6, "✅Swapped to Xmas Chest") elseif rareChoice == 8 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 8, "✅Swapped to Free Blue Chest") elseif rareChoice == 9 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 9, "✅Swapped to VIP Chest") elseif rareChoice == 10 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 11, "✅Swapped to Video Chest") elseif rareChoice == 11 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 14, "✅Swapped to Fingersoft Chest") elseif rareChoice == 12 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 15, "✅Swapped to Mega Chest") elseif rareChoice == 13 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 19, "✅Swapped to Style Chest") elseif rareChoice == 14 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 20, "✅Swapped to Mythic Chest") elseif rareChoice == 15 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, 18, "✅Swapped to Team Spirit Chest") elseif rareChoice == 16 then SwapChest(ChestReady, "Please run Search for the Rare Chest first!", OriginalRare, "RESET", "✅Reset Back to Rare Chest") end end function HandleEpicChoice(epicChoice) if epicChoice == 1 then InitChestSearch1() elseif epicChoice == 2 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 0, "✅Swapped to Common Chest") elseif epicChoice == 3 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 1, "✅Swapped to Uncommon Chest") elseif epicChoice == 4 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 4, "✅Swapped to Champion Chest") elseif epicChoice == 5 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 7, "✅Swapped to Legendary Chest") elseif epicChoice == 6 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 6, "✅Swapped to Xmas Chest") elseif epicChoice == 7 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 8, "✅Swapped to Free Blue Chest") elseif epicChoice == 8 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 9, "✅Swapped to VIP Chest") elseif epicChoice == 9 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 11, "✅Swapped to Video Chest") elseif epicChoice == 10 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 14, "✅Swapped to Fingersoft Chest") elseif epicChoice == 11 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 15, "✅Swapped to Mega Chest") elseif epicChoice == 12 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 19, "✅Swapped to Style Chest") elseif epicChoice == 13 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 20, "✅Swapped to Mythic Chest") elseif epicChoice == 14 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, 18, "✅Swapped to Team Spirit Chest") elseif epicChoice == 15 then SwapChest(EpicChestReady, "Please run Search for the Epic Chest first!", OriginalEpic, "RESET", "✅Reset back to Epic Chest") end end function HandleLegendaryChoice(legendaryChoice) if legendaryChoice == 1 then InitLegendaryChestSearch1() elseif legendaryChoice == 2 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 0, "✅Swapped to Common Chest") elseif legendaryChoice == 3 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 1, "✅Swapped to Uncommon Chest") elseif legendaryChoice == 4 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 3, "✅Swapped to Epic Chest") elseif legendaryChoice == 5 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 4, "✅Swapped to Champion Chest") elseif legendaryChoice == 6 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 6, "✅Swapped to Xmas Chest") elseif legendaryChoice == 7 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 8, "✅Swapped to Free Blue Chest") elseif legendaryChoice == 8 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 9, "✅Swapped to VIP Chest") elseif legendaryChoice == 9 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 11, "✅Swapped to Video Chest") elseif legendaryChoice == 10 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 14, "✅Swapped to Fingersoft Chest") elseif legendaryChoice == 11 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 15, "✅Swapped to Mega Chest") elseif legendaryChoice == 12 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 19, "✅Swapped to Style Chest") elseif legendaryChoice == 13 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 20, "✅Swapped to Mythic Chest") elseif legendaryChoice == 14 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, 18, "✅Swapped to Team Spirit Chest") elseif legendaryChoice == 15 then SwapChest(LegendaryChestReady, "Please run Search for the Legendary Chest first!", OriginalLegendary, "RESET", "✅Reset back to Legendary Chest") end end function HandleStyleChoice(styleChoice) if styleChoice == 1 then InitStyleChestSearch() elseif styleChoice == 2 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 0, "✅Swapped to Common Chest") elseif styleChoice == 3 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 1, "✅Swapped to Uncommon Chest") elseif styleChoice == 4 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 3, "✅Swapped to Epic Chest") elseif styleChoice == 5 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 4, "✅Swapped to Champion Chest") elseif styleChoice == 6 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 7, "✅Swapped to Legendary Chest") elseif styleChoice == 7 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 6, "✅Swapped to Xmas Chest") elseif styleChoice == 8 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 8, "✅Swapped to Free Blue Chest") elseif styleChoice == 9 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 9, "✅Swapped to VIP Chest") elseif styleChoice == 10 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 11, "✅Swapped to Video Chest") elseif styleChoice == 11 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 14, "✅Swapped to Fingersoft Chest") elseif styleChoice == 12 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 15, "✅Swapped to Mega Chest") elseif styleChoice == 13 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 19, "✅Swapped to Style Chest") elseif styleChoice == 14 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 20, "✅Swapped to Mythic Chest") elseif styleChoice == 15 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, 18, "✅Swapped to Team Spirit Chest") elseif styleChoice == 16 then SwapChest(StyleChestReady, "Please run Search for the Style Chest first!", OriginalStyle, "RESET", "✅Reset Back to Style Chest") end end function HandleMythicChoice(mythicChoice) if mythicChoice == 1 then InitMythicChestSearch() elseif mythicChoice == 2 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 0, "✅Swapped to Common Chest") elseif mythicChoice == 3 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 1, "✅Swapped to Uncommon Chest") elseif mythicChoice == 4 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 3, "✅Swapped to Epic Chest") elseif mythicChoice == 5 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 4, "✅Swapped to Champion Chest") elseif mythicChoice == 6 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 7, "✅Swapped to Legendary Chest") elseif mythicChoice == 7 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 6, "✅Swapped to Xmas Chest") elseif mythicChoice == 8 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 8, "✅Swapped to Free Blue Chest") elseif mythicChoice == 9 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 9, "✅Swapped to VIP Chest") elseif mythicChoice == 10 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 11, "✅Swapped to Video Chest") elseif mythicChoice == 11 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 14, "✅Swapped to Fingersoft Chest") elseif mythicChoice == 12 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 15, "✅Swapped to Mega Chest") elseif mythicChoice == 13 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 19, "✅Swapped to Style Chest") elseif mythicChoice == 14 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 20, "✅Swapped to Mythic Chest") elseif mythicChoice == 15 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, 18, "✅Swapped to Team Spirit Chest") elseif epicChoice == 16 then SwapChest(MythicChestReady, "Please run Search for the Mythic Chest first!", OriginalMythic, "RESET", "✅Reset back to Mythic Chest") end end local SkinsInitialized = false local SkinAddresses = {} function InitSearchSkin() if SkinsInitialized then return true end gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("1000;9::5", gg.TYPE_DWORD) gg.refineNumber("9", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) gg.editAll(7, gg.TYPE_DWORD) gg.clearResults() gg.searchNumber("1D~5D;1F~100F;25D;30D;35D;10D:200", gg.TYPE_DWORD) gg.refineNumber("1~5", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") return false end SkinAddresses = {} for i, v in ipairs(res) do table.insert(SkinAddresses, { address = v.address, flags = gg.TYPE_DWORD }) end SkinsInitialized = true return true end function LegendarySkin() gg.clearResults() gg.searchNumber("1D~5D;1F~100F;25D;30D;35D;10D:200", gg.TYPE_FLOAT) gg.refineNumber("25D;30D;35D;10D", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("100", gg.TYPE_DWORD) gg.clearResults() if not InitSearchSkin() then return end local edits = {} for i, v in ipairs(SkinAddresses) do edits[i] = {address = v.address, flags = v.flags, value = 5} end gg.setValues(edits) gg.alert("✅Enabled Legendary Skins!") end function EpicSkin() gg.clearResults() gg.searchNumber("1D~5D;1F~100F;25D;30D;35D;10D:200", gg.TYPE_FLOAT) gg.refineNumber("25D;30D;35D;10D", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("100", gg.TYPE_DWORD) gg.clearResults() if not InitSearchSkin() then return end local edits = {} for i, v in ipairs(SkinAddresses) do edits[i] = {address = v.address, flags = v.flags, value = 3} end gg.setValues(edits) gg.alert("✅Enabled Epic Skins!") end function RareSkin() gg.clearResults() gg.searchNumber("1D~5D;1F~100F;25D;30D;35D;10D:200", gg.TYPE_FLOAT) gg.refineNumber("25D;30D;35D;10D", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("100", gg.TYPE_DWORD) gg.clearResults() if not InitSearchSkin() then return end local edits = {} for i, v in ipairs(SkinAddresses) do edits[i] = {address = v.address, flags = v.flags, value = 2} end gg.setValues(edits) gg.alert("✅Enabled Rare Skins!") end function NoSkin() gg.clearResults() gg.searchNumber("1D~5D;1F~100F;25D;30D;35D;10D:200", gg.TYPE_FLOAT) gg.refineNumber("25D;30D;35D;10D", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("100", gg.TYPE_DWORD) gg.clearResults() if not InitSearchSkin() then return end local edits = {} for i, v in ipairs(SkinAddresses) do edits[i] = {address = v.address, flags = v.flags, value = 0} end gg.setValues(edits) gg.alert("✅Enabled No Skins!") end local PartsInitialized = false local PartsAddresses = {} function InitParts() if PartsInitialized then return true end gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("1000;9::5", gg.TYPE_DWORD) gg.refineNumber("9", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) gg.editAll(7, gg.TYPE_DWORD) gg.clearResults() gg.searchNumber("100F;1D~4D::10", gg.TYPE_DWORD) gg.refineNumber("1~4", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) gg.clearResults() if #res == 0 then gg.alert("❌No Results!") return false end PartsAddresses = {} for i, v in ipairs(res) do PartsAddresses[i] = { address = v.address, flags = gg.TYPE_DWORD } end PartsInitialized = true return true end function NoParts() if not InitParts() then return end for i = 1, #PartsAddresses do PartsAddresses[i].value = 0 end gg.setValues(PartsAddresses) gg.alert("✅No Parts Enabled!") end function CommonParts() if not InitParts() then return end for i = 1, #PartsAddresses do PartsAddresses[i].value = 1 end gg.setValues(PartsAddresses) gg.alert("✅Common Parts Enabled!") end function RareParts() if not InitParts() then return end for i = 1, #PartsAddresses do PartsAddresses[i].value = 2 end gg.setValues(PartsAddresses) gg.alert("✅Rare Parts Enabled!") end function EpicParts() if not InitParts() then return end for i = 1, #PartsAddresses do PartsAddresses[i].value = 3 end gg.setValues(PartsAddresses) gg.alert("✅Epic Parts Enabled!") end function LegendaryParts() if not InitParts() then return end for i = 1, #PartsAddresses do PartsAddresses[i].value = 4 end gg.setValues(PartsAddresses) gg.alert("✅Legendary Parts Enabled!") end local ChestsOriginal = {} local ChestsFound = false local CoinsInitializedLeg = false local CoinAddresses = {} local CoinsOriginalLeg = {} local CoinsLegEnabled = false local CoinsInitializedEpic = false local CoinAddressesEpic = {} local CoinsOriginalEpic = {} local CoinsEpicEnabled = false local NoCoinsEpicEnabled = false local GemsOriginalV1 = {} local GemsV1Enabled = false local ChestTypeAddresses = {} local OriginalChestType = nil local GemsOriginalV2 = {} local GemsV2Enabled = false function FreeChestsV1() local choice = gg.choice({ "✅ Enable Free Chests", "❌ Disable Free Chests", "🔙 Return" }, nil, "Enable or Disable Free Chests!") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if not ChestsFound then gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("0.1;625", gg.TYPE_FLOAT) gg.refineNumber("0.1", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("❌ No Results for Float!") gg.setRanges(allRanges[picked].value) return end local res = gg.getResults(count) ChestsOriginal.floatValues = gg.getValues(res) local newValues = {} for i, v in ipairs(res) do newValues[i] = { address = v.address, flags = gg.TYPE_FLOAT, value = 0 } end gg.setValues(newValues) gg.setRanges(gg.REGION_C_ALLOC) gg.clearResults() gg.searchNumber("1000;19::5", gg.TYPE_DWORD) gg.refineNumber("1000", gg.TYPE_DWORD) local countDword = gg.getResultCount() if countDword > 0 then local resDword = gg.getResults(countDword) ChestsOriginal.dwordValues = gg.getValues(resDword) local newDwordValues = {} for i, v in ipairs(resDword) do newDwordValues[i] = { address = v.address, flags = v.flags, value = "0" } end gg.setValues(newDwordValues) else ChestsOriginal.dwordValues = {} end ChestsFound = true gg.toast("✅ Free Chests Enabled!") else gg.toast("✅ Already Enabled!") end elseif choice == 2 then if ChestsFound then if ChestsOriginal.dwordValues and #ChestsOriginal.dwordValues > 0 then gg.setValues(ChestsOriginal.dwordValues) end if ChestsOriginal.floatValues and #ChestsOriginal.floatValues > 0 then gg.setValues(ChestsOriginal.floatValues) end ChestsOriginal = {} ChestsFound = false gg.alert("❌ Disabled Free Chests!") gg.setRanges(allRanges[picked].value) else gg.alert("❌ Nothing to disable!") gg.setRanges(allRanges[picked].value) end end end function InitCoins() if CoinsInitializedLeg then return true end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1000;9::5", gg.TYPE_DWORD) gg.refineNumber("9", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) gg.editAll(7, gg.TYPE_DWORD) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("86400;10F", gg.TYPE_DWORD) gg.refineNumber("10", gg.TYPE_FLOAT) local res = gg.getResults(100) if #res == 0 then gg.alert("❌ No Results!") return false end CoinAddresses = {} for i, v in ipairs(res) do CoinAddresses[i] = { address = v.address, flags = gg.TYPE_FLOAT } end CoinsInitializedLeg = true return true end function CoinsV1() local choice = gg.choice({ "✅ Enable Coins in Legendary Chest", "❌ Disable Coins in Legendary Chest", "🔙 Return" }, nil, "Coins in Legendary Chest") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if CoinsLegEnabled then gg.toast("✅ Already Enabled!") return CoinsV1() end if not InitCoins() then return end local input = gg.prompt({"How many coins do you want?"}, {100000000}, {"number"}) if not input then return CoinsV1() end local amount = tonumber(input[1]) if not amount then return CoinsV1() end if amount > 1000000000 then amount = 1000000000 gg.toast("❌ MAX IS 1 Billion!") end CoinsOriginalLeg = gg.getValues(CoinAddresses) local v = amount / 1000 for i = 1, #CoinAddresses do CoinAddresses[i].value = v end gg.setValues(CoinAddresses) CoinsLegEnabled = true gg.alert("✅ Enabled Coins in Legendary Chest!") elseif choice == 2 then if not CoinsLegEnabled then gg.alert("❌ Nothing to disable!") return CoinsV1() end gg.setValues(CoinsOriginalLeg) CoinsLegEnabled = false gg.alert("❌ Disabled Coins in Legendary Chest!") end end function nocoins() local choice = gg.choice({ "✅ Enable No Coins in Legendary Chest", "❌ Disable No Coins in Legendary Chest", "🔙 Return" }, nil, "No Coins in Legendary Chest") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if not InitCoins() then return end CoinsOriginalLeg = gg.getValues(CoinAddresses) for i = 1, #CoinAddresses do CoinAddresses[i].value = 0 end gg.setValues(CoinAddresses) gg.alert("✅ Enabled No Coins in Legendary Chest!") elseif choice == 2 then if #CoinsOriginalLeg == 0 then gg.alert("❌ Nothing to disable!") return nocoins() end gg.setValues(CoinsOriginalLeg) gg.alert("❌ Disabled No Coins in Legendary Chest!") end end function InitCoinsEpic() if CoinsInitializedEpic then return true end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("200;9::5", gg.TYPE_DWORD) gg.refineNumber("9", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) gg.editAll("3", gg.TYPE_DWORD) gg.clearResults() gg.searchNumber("43200D;8", gg.TYPE_FLOAT) gg.refineNumber("8", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌ No Results!") return false end CoinAddressesEpic = {} for i, v in ipairs(res) do CoinAddressesEpic[i] = { address = v.address, flags = gg.TYPE_FLOAT } end CoinsInitializedEpic = true return true end function CoinsEpicV1() local choice = gg.choice({ "✅ Enable Coins in Epic Chest", "❌ Disable Coins in Epic Chest", "🔙 Return" }, nil, "Coins in Epic Chest") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if CoinsEpicEnabled then gg.toast("✅ Already Enabled!") return CoinsEpicV1() end if not InitCoinsEpic() then return end local input = gg.prompt({"How many coins do you want?"}, {100000000}, {"number"}) if not input then return CoinsEpicV1() end local amount = tonumber(input[1]) if not amount then return CoinsEpicV1() end if amount > 1000000000 then amount = 1000000000 gg.toast("❌ MAX IS 1 Billion!") end CoinsOriginalEpic = gg.getValues(CoinAddressesEpic) local v = amount / 1000 local edits = {} for i = 1, #CoinAddressesEpic do table.insert(edits, { address = CoinAddressesEpic[i].address, flags = CoinAddressesEpic[i].flags, value = v }) end gg.setValues(edits) CoinsEpicEnabled = true gg.alert("✅ Enabled Coinsin Epic Chest!") elseif choice == 2 then if not CoinsEpicEnabled then gg.alert("❌ Nothing to disable!") return CoinsEpicV1() end gg.setValues(CoinsOriginalEpic) CoinsEpicEnabled = false gg.alert("❌ Disabled Coins in Epic Chest!") end end function NoCoinsEpic() local choice = gg.choice({ "✅ Enable No Coins in Epic Chest", "❌ Disable No Coins in Epic Chest", "🔙 Return" }, nil, "No Coins in Epic Chest") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if NoCoinsEpicEnabled then gg.toast("✅ Already Enabled!") return NoCoinsEpic() end if not InitCoinsEpic() then return end if #CoinAddressesEpic == 0 then gg.alert("❌ No Results!") return ShopMenu() end CoinsOriginalEpic = gg.getValues(CoinAddressesEpic) local edits = {} for i = 1, #CoinAddressesEpic do table.insert(edits, { address = CoinAddressesEpic[i].address, flags = CoinAddressesEpic[i].flags, value = 0 }) end gg.setValues(edits) NoCoinsEpicEnabled = true gg.alert("✅ Enabled No Coins in Epic Chest!") elseif choice == 2 then if not NoCoinsEpicEnabled then gg.alert("❌ Nothing to disable!") return NoCoinsEpic() end gg.setValues(CoinsOriginalEpic) NoCoinsEpicEnabled = false gg.alert("❌ Disabled No Coins in Epic Chest!") end end function GemsV1() local choice = gg.choice({ "✅ Enable Gems in Legendary Chest", "❌ Disable Gems in Legendary Chest", "🔙 Return" }, nil, "Gems in Legendary Chest") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if GemsV1Enabled then gg.toast("✅ Already Enabled!") return GemsV1() end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1000;7::5", gg.TYPE_DWORD) gg.refineNumber("7", gg.TYPE_DWORD) local resChest = gg.getResults(gg.getResultsCount()) if #resChest == 0 then gg.alert("❌ No Results!") return ShopMenu() end ChestTypeAddresses = {} for i, v in ipairs(resChest) do table.insert(ChestTypeAddresses, {address = v.address, flags = gg.TYPE_DWORD}) end gg.editAll(9, gg.TYPE_DWORD) gg.clearResults() gg.searchNumber("1;1;1;1;60;0;1036831949", gg.TYPE_DWORD) gg.refineNumber("60", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultCount()) if #res == 0 then gg.clearResults() if #ChestTypeAddresses > 0 then for i = 1, #ChestTypeAddresses do ChestTypeAddresses[i].value = 7 end gg.setValues(ChestTypeAddresses) end gg.alert("❌ No Results!") return ShopMenu() end local input = gg.prompt({"How many gems do you want?"}, {15000}, {"number"}) if not input then gg.clearResults() if #ChestTypeAddresses > 0 then for i = 1, #ChestTypeAddresses do ChestTypeAddresses[i].value = 7 end gg.setValues(ChestTypeAddresses) end return GemsV1() end local gems = tonumber(input[1]) if not gems then gg.clearResults() if #ChestTypeAddresses > 0 then for i = 1, #ChestTypeAddresses do ChestTypeAddresses[i].value = 7 end gg.setValues(ChestTypeAddresses) end gg.alert("❌ Invalid input!") return ShopMenu() end if gems > 15000 then gg.clearResults() if #ChestTypeAddresses > 0 then for i = 1, #ChestTypeAddresses do ChestTypeAddresses[i].value = 7 end gg.setValues(ChestTypeAddresses) end gg.alert("❌ MAX IS 15000!") return ShopMenu() end GemsOriginalV1 = gg.getValues(res) gg.editAll(gems, gg.TYPE_DWORD) GemsV1Enabled = true gg.alert("✅ Enabled Gems in Legendary Chest!") elseif choice == 2 then if not GemsV1Enabled then gg.alert("❌ Nothing to disable!") return GemsV1() end if GemsOriginalV1 and #GemsOriginalV1 > 0 then gg.setValues(GemsOriginalV1) end if ChestTypeAddresses and #ChestTypeAddresses > 0 then for i = 1, #ChestTypeAddresses do ChestTypeAddresses[i].value = 7 end gg.setValues(ChestTypeAddresses) end GemsV1Enabled = false gg.alert("❌ Disabled Gems in Legendary Chest!") end end function CoinsV2() local p = gg.prompt({"How many coins do you want?"}, {100000000}, {"number"}) if not p then return ShopMenu() end local amount = tonumber(p[1]) if amount > 1000000000 then amount = 1000000000 gg.toast("❌ MAX Is 1 Billion!") end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("150F;5000D", gg.TYPE_FLOAT | gg.TYPE_DWORD) local r = gg.getResults(2) if #r < 2 then gg.alert("❌ Offer not found!") return end for i, v in ipairs(r) do if v.flags == gg.TYPE_FLOAT then v.value = amount elseif v.flags == gg.TYPE_DWORD then v.value = 1 end end gg.setValues(r) gg.clearResults() gg.alert("✅ Buy the 750k coins for 5k gems offer!") end function GemsV2() local choice = gg.choice({ "✅ Enable Gems in Every Chest", "❌ Disable Gems in Every Chest", "🔙 Return" }, nil, "Gems in Every Chest") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then if GemsV2Enabled then gg.toast("✅ Already Enabled!") return GemsV2() end gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("-1186986367", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultCount()) if #res == 0 then gg.alert("❌ No Results!") return ShopMenu() end local input = gg.prompt({"How many gems do you want?"}, {15000}, {"number"}) if not input then return GemsV2() end local gems = tonumber(input[1]) if not gems then gg.alert("❌ Invalid input!") return ShopMenu() end if gems > 15000 then gg.alert("❌ MAX IS 15000!") return ShopMenu() end GemsOriginalV2 = gg.getValues(res) gg.editAll("~A8 MOV W1, #" .. gems, gg.TYPE_DWORD) gg.setRanges(allRanges[picked].value) GemsV2Enabled = true gg.alert("✅ You can't see the Gems being dropped! But they are added to your Account!") elseif choice == 2 then if not GemsV2Enabled then gg.alert("❌ Nothing to disable!") return GemsV2() end if #GemsOriginalV2 > 0 then gg.setValues(GemsOriginalV2) end GemsV2Enabled = false gg.alert("❌ Disabled Gems in Every Chest!") end end function FreePurchases() local choice = gg.choice({"➡️ Continue", "🔙 Return"}, nil, "You need to be connected with a Google Play Account!") if choice ~= 1 then return ShopMenu() end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("7,234,820", gg.TYPE_DWORD) local results = gg.getResults(100) if #results > 0 then for _, v in ipairs(results) do gg.clearResults() gg.searchNumber(v.address, gg.TYPE_QWORD) local ptrs = gg.getResults(100) for _, vv in ipairs(ptrs) do local val = gg.getValues({{address = vv.address + 0x18, flags = 4}})[1].value if val > 0 and val < 100 then local edits = {} for off = 0x18, 0x2C, 4 do table.insert(edits, {address = vv.address + off, flags = 4, value = 0}) end gg.setValues(edits) end end end gg.alert("✅ Enabled Free Purchases!") end end function remove() local choice = gg.choice({ "💰 Remove Coins", "💎 Remove Gems", "🔙 Return" }, nil, "Remove Coins or Gems") if not choice or choice == 3 then return ShopMenu() end if choice == 1 then local c = gg.choice({ "💰 10000 Coins", "💰 50000 Coins", "🔙 Return" }, nil, "How much does the Part Offer cost in the Shop for you?") if not c or c == 3 then return remove() end local searchVal = (c == 1) and "10000" or "50000" gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber(searchVal, gg.TYPE_DWORD) local res = gg.getResults(100) if #res == 0 then gg.alert("❌ No Results!") return remove() end local v = gg.prompt({"How many coins do you want to remove?"}, {67777}, {"number"}) if not v then return remove() end gg.editAll(v[1], gg.TYPE_DWORD) gg.clearResults() gg.alert("✅ Buy the " .. searchVal .. " Coins Offer.") elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("250;500", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌ No Results!") return remove() end local v = gg.prompt({"How many gems do you want to remove?"}, {6777}, {"number"}) if not v then return remove() end gg.editAll(v[1], gg.TYPE_DWORD) gg.clearResults() gg.alert("✅ Buy any of the two Gems Offers.") end end function droppartsepic() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("200;9::5", gg.TYPE_DWORD) gg.refineNumber("9", gg.TYPE_DWORD) gg.getResults(gg.getResultsCount()) gg.editAll(3, gg.TYPE_DWORD) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("6;12;30;40;2;3::21", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") end gg.editAll(99999, gg.TYPE_DWORD) gg.alert("✅ Open a Epic Chest!") end function unlockggskin() gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("25;30;35;10;1103626240;1~5;1106247680;1~5;1108082688;1~5;1092616192;1~5::145", gg.TYPE_DWORD) gg.refineNumber("1~5", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") end gg.editAll(6, gg.TYPE_DWORD) gg.alert("✅Open 3 Legendary Chests in the Shop and the G.G. skin will be unlocked!") end function multiSearchEdit(searchString, val1, target1, val2, target2) gg.clearResults() gg.searchNumber(searchString, gg.TYPE_DWORD) local results = gg.getResults(gg.getResultsCount()) local editList = {} for i, v in ipairs(results) do if v.value == val1 then table.insert(editList, {address = v.address, flags = gg.TYPE_DWORD, value = target1}) elseif v.value == val2 then table.insert(editList, {address = v.address, flags = gg.TYPE_DWORD, value = target2}) end end if #editList > 0 then gg.setValues(editList) end end function BuyBillionParts() gg.setRanges(allRanges[picked].value) multiSearchEdit("500;1::5", 500, 0, 1, 2000000000) multiSearchEdit("250;5::5", 250, 0, 5, 2000000000) multiSearchEdit("50000;50::5", 50000, 0, 50, 2000000000) gg.clearResults() gg.alert("✅ Buy the Parts Offer in the Shop!") end function ShopMenu() local menuOptions = { "⚡ Free Chests", "💰 Coins V1 (IN LEGENDARY CHEST)", "💰 Coins V2 (IN BUY COINS MENU)", "💰 Coins V3 (IN EPIC CHEST)", "❌ No Coins (IN LEGENDARY CHEST)", "❌ No Coins (IN EPIC CHEST)", "💎 Gems V1 (IN LEGENDARY CHEST)" } local menuActions = { FreeChestsV1, CoinsV1, CoinsV2, CoinsEpicV1, nocoins, NoCoinsEpic, GemsV1 } local staticOptions = { "❌ Remove Coins or Gems", "🌟 Buy 2 Billion Parts", "🥶 Specific Rarity of Parts", "⭐ Rare Chest Swap", "👾 Epic Chest Swap", "💠 Legendary Chest Swap", "🎨 Style Chest Swap", "🔱 Mythic Chest Swap", "💳 Free Purchases", "🔧 Parts Drop (Epic Chest)", "🔙 Return" } local staticActions = { remove, BuyBillionParts, function() if InitParts() then local partsChoice = gg.choice({ "🔹 Only No Parts", "🔹 Only Common Parts", "🔹 Only Rare Parts", "🔹 Only Epic Parts", "🔹 Only Legendary Parts", "🔙 Return" }, nil, "Select Parts Option") if not partsChoice or partsChoice == 6 then return ShopMenu() end if partsChoice == 1 then NoParts() elseif partsChoice == 2 then CommonParts() elseif partsChoice == 3 then RareParts() elseif partsChoice == 4 then EpicParts() elseif partsChoice == 5 then LegendaryParts() end end end, function() local rareChoice = gg.choice({ "1️⃣ Search for Rare Chest", "🔹 Rare to Common", "🔹 Rare to Uncommon", "🔹 Rare to Epic", "🔹 Rare to Champion", "🔹 Rare to Legendary", "🔹 Rare to Xmas", "🔹 Rare to Free Blue", "🔹 Rare to VIP", "🔹 Rare to Video", "🔹 Rare to Fingersoft", "🔹 Rare to Mega", "🔹 Rare to Style", "🔹 Rare to Mythic", "🔹 Rare to Team Spirit", "🔄 Reset", "🔙 Return" }, nil, "Rare Chest Swap") if not rareChoice or rareChoice == 17 then return ShopMenu() end HandleRareChoice(rareChoice) end, function() local epicChoice = gg.choice({ "1️⃣ Search for Epic Chest", "🔹 Epic to Common", "🔹 Epic to Uncommon", "🔹 Epic to Champion", "🔹 Epic to Legendary", "🔹 Epic to Xmas", "🔹 Epic to Free Blue", "🔹 Epic to VIP", "🔹 Epic to Video", "🔹 Epic to Fingersoft", "🔹 Epic to Mega", "🔹 Epic to Style", "🔹 Epic to Mythic", "🔹 Epic to Team Spirit", "🔄 Reset", "🔙 Return" }, nil, "Epic Chest Swap") if not epicChoice or epicChoice == 16 then return ShopMenu() end HandleEpicChoice(epicChoice) end, function() local legendaryChoice = gg.choice({ "1️⃣ Search for Legendary Chest", "🔹 Legendary to Common", "🔹 Legendary to Uncommon", "🔹 Legendary to Epic", "🔹 Legendary to Champion", "🔹 Legendary to Xmas", "🔹 Legendary to Free Blue", "🔹 Legendary to VIP", "🔹 Legendary to Video", "🔹 Legendary to Fingersoft", "🔹 Legendary to Mega", "🔹 Legendary to Style", "🔹 Legendary to Mythic", "🔹 Legendary to Team Spirit", "🔄 Reset", "🔙 Return" }, nil, "Legendary Chest Swap") if not legendaryChoice or legendaryChoice == 16 then return ShopMenu() end HandleLegendaryChoice(legendaryChoice) end, function() local styleChoice = gg.choice({ "1️⃣ Search for Style Chest", "🔹 Style to Common", "🔹 Style to Uncommon", "🔹 Style to Epic", "🔹 Style to Champion", "🔹 Style to Legendary", "🔹 Style to Xmas", "🔹 Style to Free Blue", "🔹 Style to VIP", "🔹 Style to Video", "🔹 Style to Fingersoft", "🔹 Style to Mega", "🔹 Style to Style", "🔹 Style to Mythic", "🔹 Style to Team Spirit", "🔄 Reset", "🔙 Return" }, nil, "Style Chest Swap") if not styleChoice or styleChoice == 17 then return ShopMenu() end HandleStyleChoice(styleChoice) end, function() local mythicChoice = gg.choice({ "1️⃣ Search for Mythic Chest", "🔹 Mythic to Common", "🔹 Mythic to Uncommon", "🔹 Mythic to Epic", "🔹 Mythic to Champion", "🔹 Mythic to Legendary", "🔹 Mythic to Xmas", "🔹 Mythic to Free Blue", "🔹 Mythic to VIP", "🔹 Mythic to Video", "🔹 Mythic to Fingersoft", "🔹 Mythic to Mega", "🔹 Mythic to Style", "🔹 Mythic to Mythic", "🔹 Mythic to Team Spirit", "🔄 Reset", "🔙 Return" }, nil, "Mythic Chest Swap") if not mythicChoice or mythicChoice == 17 then return ShopMenu() end HandleMythicChoice(mythicChoice) end, FreePurchases, droppartsepic, MainMenu } for i = 1, #staticOptions do table.insert(menuOptions, staticOptions[i]) table.insert(menuActions, staticActions[i]) end local choice = gg.choice(menuOptions, nil, "🤑 Shop Menu made by eomthix") if not choice then return MainMenu() end if menuActions[choice] then menuActions[choice]() end end function AdventureMenu() local choice = gg.choice({ "⚡ Fake Canyoneer", --1 "✨Gravity Menu (Activate in Race)", --2 "🧰Adventure Chest Hack V1", --3 "🧰Adventure Chest Hack V2 (need level 1 adv chest)", --4 "🧰Adventure Chest Hack V3", --5 "⛽Fuel Hacks", --6 "➖Flat Ground for Adventure", --7 "⏳Speed Hack", --8 "🅾 Tokens to buy Adventure Maps", --9 "🔓Unlock Adventure Maps", --10 "💰3X Coins in Adventure", --11 "💠3D Road", --12 "🔍Zoom Hack", --13 "🚩Teleport Menu", --14 "💰Set Fuel and Coins", --15 "🔙Return", --16 }, nil, "🗺Adventure Menu made by eomthix") if choice == nil or choice == 16 then return MainMenu() end if choice == 1 then FakeCanyoneer() elseif choice == 2 then GravityHack() elseif choice == 3 then AdvChestHackV1() elseif choice == 4 then AdvChestHackV2() elseif choice == 5 then AdvChestHackV3() elseif choice == 6 then FuelHack() elseif choice == 7 then flatgroundadv() elseif choice == 8 then SpeedHack() elseif choice == 9 then NoTokensAdventureMenu() elseif choice == 10 then UnlockMaps() elseif choice == 11 then threexcoins() elseif choice == 12 then tred() elseif choice == 13 then ZoomHack() elseif choice == 14 then TeleportMenuMain() elseif choice == 15 then FandValues() end end function FakeCanyoneer() if not BaseGameStatus then gg.alert("❌ Couldn't find Gamestatus!") return end local status_address = BaseGameStatus + 0x52C local current_value_struct = gg.getValues({{address = status_address, flags = gg.TYPE_FLOAT}}) local current = current_value_struct[1].value local ranks = {1000, 4000, 10000, 20000, 35000, 50000, 100000, 200000, 250000, 350000, 500000, 600000, 650000, 750000, 1000000} gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("1000", gg.TYPE_FLOAT) local results = gg.getResults(gg.getResultCount()) local start_addr = nil for i, res in ipairs(results) do local check = gg.getValues({{address = res.address + 0x60, flags = gg.TYPE_FLOAT}}) if check[1].value == 4000 then start_addr = res.address break end end if not start_addr then gg.alert("❌ Idk why this is happening but it seems to work for me on my other phone!") return AdventureMenu() end local patch_list = {} local current_addr = start_addr for i = 1, #ranks do table.insert(patch_list, {address = current_addr, value = current, flags = gg.TYPE_FLOAT}) if i == #ranks then table.insert(patch_list, {address = current_addr + 0x4, value = 1, flags = gg.TYPE_FLOAT}) end current_addr = current_addr + 0x60 current = current + 1.0 end gg.setValues(patch_list) gg.clearResults() gg.alert("✅ Set Fake Canyoneer!") end function flatgroundadv() local choice = gg.choice({ "\u{26A1} Flat Ground for Adventure Maps", --1 "\u{1F3D9}\u{FE0F} Flat Ground for City", --2 "\u{1F332} Flat Ground for Forest", --3 "\u{2744}\u{FE0F} Flat Ground for Winter", --4 "\u{1F981} Flat Ground for Savanna", --5 "\u{1F3D6}\u{FE0F} Flat Ground for Beach", --6 "\u{1F344} Flat Ground for Gloomvale", --7 "\u{1F519} Return" --8 }, nil, "Enable Flat Ground on any map!") if choice == nil or choice == 8 then return AdventureMenu() end if choice == 1 then flatgroundmain() elseif choice == 2 then flatgroundcity() elseif choice == 3 then flatgroundforest() elseif choice == 4 then flatgroundwinter() elseif choice == 5 then flatgroundsavanna() elseif choice == 6 then flatgroundbeach() elseif choice == 7 then flatgroundgloomvale() end end local savedMainRes = nil local savedCityRes = nil local savedWinterRes = nil local savedSavannaRes = nil local savedBeachRes = nil local savedGloomvaleRes = nil local savedForestRes = nil function flatgroundmain() local choice = gg.choice({"✅Enable Flat Ground for Adventure Maps", "❌Disable Flat Ground for Adventure Maps", "🔙Return"},nil, "Enable or Disable Flat Ground for Adventure Maps!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedMainRes then gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("0.7", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedMainRes = res end gg.setValues(savedMainRes) for i, v in ipairs(savedMainRes) do savedMainRes[i].value = 9999 end gg.setValues(savedMainRes) gg.setRanges(allRanges[picked].value) gg.alert("✅ Enabled Flat Ground for Adventure Maps!") elseif choice == 2 then if not savedMainRes then gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("-9999", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedMainRes = res end gg.setValues(savedMainRes) for i, v in ipairs(savedMainRes) do savedMainRes[i].value = 0.7 end gg.setValues(savedMainRes) gg.setRanges(allRanges[picked].value) gg.alert("❌Disabled Flat Ground for Adventure Maps!") end end function flatgroundcity() local choice = gg.choice({"✅Enable Flat Ground for City", "❌Disable Flat Ground for City", "🔙Return"},nil, "Enable or Disable the Flat Ground for City!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedCityRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1123132079", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedCityRes = res end for i, v in ipairs(savedCityRes) do savedCityRes[i].value = 1206423683 end gg.setValues(savedCityRes) gg.alert("✅Enabled Flat Ground for City! The Flat Ground will start at 650 meters!") gg.setRanges(allRanges[picked].value) elseif choice == 2 then if not savedCityRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1206423683", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedCityRes = res end for i, v in ipairs(savedCityRes) do savedCityRes[i].value = 1123132079 end gg.setValues(savedCityRes) gg.alert("❌Disabled Flat Ground for City!") gg.setRanges(allRanges[picked].value) end end function flatgroundwinter() local choice = gg.choice({"✅Enable Flat Ground for Winter", "❌Disable Flat Groun for Winter", "🔙Return"},nil, "Enable or Disbale Flat Ground for Winter!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedWinterRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1120232603", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedWinterRes = res end for i, v in ipairs(savedWinterRes) do savedWinterRes[i].value = 1197191296 end gg.setValues(savedWinterRes) gg.alert("✅Enabled Flat Ground for Winter! The Flat Ground will start at 1100 meters!") gg.setRanges(allRanges[picked].value) elseif choice == 2 then if not savedWinterRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1197191296", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedWinterRes = res end for i, v in ipairs(savedWinterRes) do savedWinterRes[i].value = 1120232603 end gg.setValues(savedWinterRes) gg.alert("❌Disabled Flat Ground for Winter!") gg.setRanges(allRanges[picked].value) end end function flatgroundsavanna() local choice = gg.choice({"✅Enable Flat Ground for Savanna", "❌Disable Flat Ground for Savanna", "🔙Return"},nil, "Enable or Disable Flat Ground for Savanna!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedSavannaRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1116330252", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedSavannaRes = res end for i, v in ipairs(savedSavannaRes) do savedSavannaRes[i].value = 1148436480 end gg.setValues(savedSavannaRes) gg.alert("✅Enabled Flat Ground for Savanna! The Flat Ground will Start at 650 meters!") gg.setRanges(allRanges[picked].value) elseif choice == 2 then if not savedSavannaRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1148436480", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedSavannaRes = res end for i, v in ipairs(savedSavannaRes) do savedSavannaRes[i].value = 1116330252 end gg.setValues(savedSavannaRes) gg.alert("❌Disabled Flat Ground for Savanna!") gg.setRanges(allRanges[picked].value) end end function flatgroundbeach() local choice = gg.choice({"✅Enable Flat Ground for Beach", "❌Disable Flat Ground for Beach", "🔙Return"},nil, "Enable or Disbale Flat Ground for Beach!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedBeachRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1125450835", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedBeachRes = res end for i, v in ipairs(savedBeachRes) do savedBeachRes[i].value = 1142292480 end gg.setValues(savedBeachRes) gg.alert("✅Enabled Flat Ground for Beach! The Flat Ground will be at 150 meters!") gg.setRanges(allRanges[picked].value) elseif choice == 2 then if not savedBeachRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS) gg.searchNumber("1142292480", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedBeachRes = res end for i, v in ipairs(savedBeachRes) do savedBeachRes[i].value = 1125450835 end gg.setValues(savedBeachRes) gg.alert("❌Disabled Flat Ground for Beach!") gg.setRanges(allRanges[picked].value) end end function flatgroundgloomvale() local choice = gg.choice({"✅Enable Flat Ground for Gloomvale", "❌Disable Flat Ground for Gloomvale", "🔙Return"},nil, "Enable or Disable Flat Ground for Glacier!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedGloomvaleRes then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1113060784", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedGloomvaleRes = res end for i, v in ipairs(savedGloomvaleRes) do savedGloomvaleRes[i].value = 1144750080 end gg.setValues(savedGloomvaleRes) gg.alert("✅Enabled Flat Ground for Gloomvale! The Flat Ground will start at 800 meters!") gg.setRanges(allRanges[picked].value) elseif choice == 2 then if not savedGloomvaleRes then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1144750080", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedGloomvaleRes = res end for i, v in ipairs(savedGloomvaleRes) do savedGloomvaleRes[i].value = 1113060784 end gg.setValues(savedGloomvaleRes) gg.alert("❌Disabled Flat Ground for Gloomvale!") gg.setRanges(allRanges[picked].value) end end function flatgroundforest() local choice = gg.choice({"✅Enable Flat Ground for Forest", "❌Disable Flat Ground for Forest", "🔙Return"},nil, "Enable or Disable Flat Ground for Forest!") if choice == nil or choice == 3 then flatgroundadv() end if choice == 1 then if not savedForestRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_BSS) gg.searchNumber("1109006215", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedForestRes = res end for i, v in ipairs(savedForestRes) do savedForestRes[i].value = 1223132079 end gg.setValues(savedForestRes) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.alert("✅Enabled Flat Ground for Forest! The Flat Ground will start at 1200 Meters!") elseif choice == 2 then if not savedForestRes then gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_C_BSS) gg.searchNumber("1223132079", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌No Results!") flatgroundadv() return end savedForestRes = res end for i, v in ipairs(savedForestRes) do savedForestRes[i].value = 1109006215 end gg.setValues(savedForestRes) gg.setRanges(allRanges[picked].value) gg.alert("❌Disabled Flat Ground for Forest!") end end function TeleportMenuMain() local choice = gg.choice({"\u{0031}\u{fe0f}\u{20e3}Step Teleport", "\u{0032}\u{fe0f}\u{20e3}Step Teleport", "\u{0033}\u{fe0f}\u{20e3}Step Teleport", "\u{1F519}Return"}, nil, "Start with Step 1 then do 2 then do 3!") if choice == nil or choice == 4 then return AdventureMenu() end if choice == 1 then TeleportMenu() elseif choice == 2 then GravityMenu() elseif choice == 3 then TeleportMenu3() end end function threexcoins() local choice = gg.choice({"Enable 3X Coins", "Disable 3X Coins", "Return"},nil, "Enable or Disable 3X Coins!") if choice == 1 then gg.clearResults() gg.setRanges(gg.REGION_C_BSS) gg.searchNumber("0.25;500;5;0.5::37", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll(3, gg.TYPE_FLOAT) gg.alert("Enabled 3X Coins!\nRestart your run if you are in one right now!") gg.setRanges(allRanges[picked].value) elseif choice == 2 then gg.clearResults() gg.setRanges(gg.REGION_C_BSS) gg.searchNumber("3;3;3;3::37", gg.TYPE_FLOAT) gg.getResults(gg.getResultsCount()) gg.editAll("0.25;500;5;0.5", gg.TYPE_FLOAT) gg.alert("Disabled 3X Coins!\nRestart your run if you are in one right now!") gg.setRanges(allRanges[picked].value) elseif choice == 3 then AdventureMenu() end end local MapData_NoTokens = { { Name = "\u{1F43F}Spring Falls", Values = {1952542232,1634627433,1918988396,107,0,0} }, { Name = "\u{1F981}Switchback Savanna", Values = {1986097934,1634627169,0,0,0,0} }, { Name = "\u{26A1}Canyon Arena", Values = {1701994780,1683972462,1635021673,6644590,0,0} }, { Name = "\u{1F303}Cuptown", Values = {1886741280,1853321076,1936286815,1668178292,101,0} } } local Offsets_NoTokens = {0x0,0x4,0x8,0xC,0x10,0x14} local BaseAddress_NoTokens = nil function FindBase_NoTokens() if BaseAddress_NoTokens ~= nil then return true end gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("1,970,234,140;2,037,544,046;1,701,079,411;1,986,289,950;1,970,564,709;1,952,408,946;1,852,140,399;0:49", gg.TYPE_DWORD) gg.refineNumber("1,970,234,140", gg.TYPE_DWORD) local r = gg.getResults(1) gg.clearResults() if #r == 0 then gg.alert("Base not found") return false end BaseAddress_NoTokens = r[1].address return true end function WriteMapValues_NoTokens(values) local t = {} for i,v in ipairs(values) do t[#t+1] = { address = BaseAddress_NoTokens + Offsets_NoTokens[i], flags = gg.TYPE_DWORD, value = v } end gg.setRanges(allRanges[picked].value) gg.setValues(t) end function NoTokensAdventureMenu() if not FindBase_NoTokens() then AdventureMenu() end local menu = {} for i,v in ipairs(MapData_NoTokens) do menu[i] = v.Name end menu[#menu+1] = "\u{1F519}Return" local choice = gg.choice(menu,nil,"No Tokens Adventure Menu") if choice == nil or choice == #menu then return AdventureMenu() end WriteMapValues_NoTokens(MapData_NoTokens[choice].Values) gg.alert("✅️ Applied: "..MapData_NoTokens[choice].Name) end local ThreeDRoadResults = nil local ThreeDRoadState = false local ThreeDRoadZ = 5 function tred() local choice = gg.choice({"\u{2705}Enable 3D Road", "\u{274C}Disable 3D Road", "\u{1F519}Return"},nil, "Enable or Disable 3D Road!") if choice == nil or choice == 3 then return AdventureMenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("0;0.70710676908;-100~-0.70599997044;0::13", gg.TYPE_FLOAT) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then gg.alert("\u{274C}No Results!") return end ThreeDRoadResults = gg.getValues(results) gg.setRanges(allRanges[picked].value) gg.editAll("0;0.70710676908;-" .. ThreeDRoadZ .. ";0", gg.TYPE_FLOAT) gg.clearResults() gg.alert("\u{2705}Enabled 3D Road!") ThreeDRoadState = true elseif choice == 2 then if ThreeDRoadResults then gg.setRanges(allRanges[picked].value) gg.setValues(ThreeDRoadResults) gg.toast("\u{274C}3D Road Disabled!") ThreeDRoadState = false else gg.alert("\u{274C}Nothing to restore!") end end end local GravityStored = nil function GravityHack() local input = gg.prompt({ "Adjust X Gravity [-200;200]", "Adjust Y Gravity [-200;200]", }, {67, 67}, {"number", "number"}) if input == nil then return end local valX = tonumber(input[1]) local valY = tonumber(input[2]) if not valX or not valY then return AdventureMenu() end if not GravityStored then GravityStored = { x = {}, y = {} } gg.clearResults() if allRanges and picked and allRanges[picked] then gg.setRanges(allRanges[picked].value) elseif BaseRegion then gg.setRanges(BaseRegion) end gg.searchNumber("00000021h;00000000h;0000001Ah;00000000h;00000031h;00000000h;00000028h;00000000h;00000000h;00000017h;00000000h;756F4316h;7972746Eh;65646973h::81", 4) gg.refineNumber("00000021h", 4) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then gg.alert("❌ No Results!") return AdventureMenu() end gg.clearResults() if #results > 0 then local toProcess = {} for _, v in ipairs(results) do gg.searchNumber(v.address, 32) local ptrResults = gg.getResults(gg.getResultsCount()) gg.clearResults() for __, ptr in ipairs(ptrResults) do local getPtr = gg.getValues({{ address = ptr.address + 0x8, flags = 32 }})[1].value local checkVal = gg.getValues({{ address = getPtr, flags = 4 }})[1].value if checkVal == 0x74616E2A then table.insert(toProcess, ptr.address) end end end for _, baseAddr in ipairs(toProcess) do local currentAddr = baseAddr while true do local gravityPtr = gg.getValues({{ address = currentAddr, flags = 32 }})[1].value if gravityPtr == 0 then break end local region = gg.getValuesRange({{ address = gravityPtr, flags = 32 }})[1] if region == "Ca" or region == "O" then local check = gg.getValues({{ address = gravityPtr + 0x48, flags = 4 }})[1].value if check ~= 0 then table.insert(GravityStored.x, {address = gravityPtr + 0x120, flags = 16}) table.insert(GravityStored.y, {address = gravityPtr + 0x124, flags = 16}) else break end else break end currentAddr = currentAddr + 0x8 end end end end if #GravityStored.x > 0 then for i = 1, #GravityStored.x do GravityStored.x[i].value = valX GravityStored.y[i].value = valY end gg.setValues(GravityStored.x) gg.setValues(GravityStored.y) gg.alert("✅ Gravity set! X: " .. valX .. " | Y: " .. valY) end end local AdvChestHackV1Original = {} local AdvChestHackV1Results = {} local AdvChestHackV1Found = false function AdvChestHackV1() local choice = gg.choice({ "\u{2705}Enable Rising Chest Levels", "\u{274C}Disable Rising Chest Levels", "\u{1F519}Return" }, nil, "Enable or Disable Rising Chest Levels!") if choice == nil or choice == 3 then return AdventureMenu() end if choice == 1 then if not AdvChestHackV1Found then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("500;500::5", gg.TYPE_DWORD) local count = gg.getResultsCount() if count == 0 then gg.alert("\u{274C}No Results!") return end AdvChestHackV1Results = gg.getResults(count) AdvChestHackV1Original = gg.getValues(AdvChestHackV1Results) local newValues = {} for i, v in ipairs(AdvChestHackV1Results) do newValues[i] = { address = v.address, flags = v.flags, value = -1 } end gg.setValues(newValues) AdvChestHackV1Found = true gg.alert("\u{2705}Enabled Rising Chest Levels!") else gg.alert("\u{2705}Already Enabled!") end elseif choice == 2 then if AdvChestHackV1Found then gg.setRanges(allRanges[picked].value) gg.setValues(AdvChestHackV1Original) AdvChestHackV1Found = false gg.alert("\u{274C}Disabled Rising Chest Levels!") else gg.alert("\u{274C}Nothing to Restore!") end end end function AdvChestHackV2() gg.clearResults() local choice = gg.choice({"\u{27A1}\u{FE0F}Continue", "\u{1F519}Return"}, nil, "You need a Level 1 Chest (500 meters) for this to work!") if choice == nil or choice == 2 then AdventureMenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("21600;1", gg.TYPE_DWORD) gg.refineNumber("1", gg.TYPE_DWORD) local entervalue = gg.prompt({"What Adventure Chest Level do you want?"}, {1000000}, {"number"}) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("\u{274C}No Results!") end gg.editAll(entervalue[1], gg.TYPE_DWORD) gg.clearResults() gg.alert("\u{2705} Now let yourself die and you will have the Chest Level, that you entered!") end end local AdvChestHackV3Original = {} local AdvChestHackV3Results = {} local AdvChestHackV3Found = false function AdvChestHackV3() local choice = gg.choice({"✅Enable Chest for every meter", "❌Disable Chest for every meter", "🔙Return"},nil, "Enable or Disable Adventure Chests for every meter!") if choice == nil or choice == 3 then return AdventureMenu() end if choice == 1 then if not AdvChestHackV1Found then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("500;500::5", gg.TYPE_DWORD) local count = gg.getResultsCount() if count == 0 then gg.alert("\u{274C}No Results!") return end AdvChestHackV1Results = gg.getResults(count) AdvChestHackV1Original = gg.getValues(AdvChestHackV1Results) local newValues = {} for i, v in ipairs(AdvChestHackV1Results) do newValues[i] = { address = v.address, flags = v.flags, value = 1 } end gg.setValues(newValues) AdvChestHackV1Found = true gg.alert("\u{2705}Enabled Adventure Chest for every meter!") else gg.alert("\u{2705}Already Enabled!") end elseif choice == 2 then if AdvChestHackV1Found then gg.setRanges(allRanges[picked].value) gg.setValues(AdvChestHackV1Original) AdvChestHackV1Found = false gg.alert("\u{274C}Disabled Adventure Chest for every meter!") else gg.alert("\u{274C}Nothing to Restore!") end end end function UnlockMaps() local choice = gg.choice({"\u{1F3DC}\u{FE0F}Normal Maps" , "\u{2744}\u{FE0F}Special Maps" , "\u{1F519}Return"}, nil, "Which type of maps do you want to unlock?") if choice == nil or choice == 3 then return AdventureMenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("2000;1000;16;1800;4;1500;400;40;80;800;1400;140;200;1600::1400", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("\u{274C}No Results!") end gg.editAll(0, gg.TYPE_DWORD) gg.clearResults() gg.alert("\u{2705}Restart your game!") elseif choice == 2 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("30000", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("\u{274C}No Results!") return UnlockMaps() end gg.editAll(0, gg.TYPE_DWORD) gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("40000", gg.TYPE_DWORD) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("❌ No Results!") return UnlockMaps() end gg.editAll(0, gg.TYPE_DWORD) gg.alert("\u{2705}Swipe Through a Few Maps!") end end function FuelHack() local choice = gg.choice({ "\u{26FD} Unlimited Fuel", "\u{274C} No Fuel", "\u{1F519} Return" }, nil, "Fuel Hack Menu") if choice == nil or choice == 3 then return AdventureMenu() end if choice == 1 then UnlimitedFuel() elseif choice == 2 then LowFuelHack() end end function UnlimitedFuel() local archName = "Unknown" local offset = 0 local patchBytes = {} if archType == 1 then archName = "ARMv8" offset = CNF.offsets.fuel_phone patchBytes = {0x20, 0x40, 0x60, 0x1E} elseif archType == 2 then archName = "x86_64" offset = CNF.offsets.fuel_emu patchBytes = {0xF2, 0x0F, 0x10, 0xC9} else gg.alert("❌Unsupported Architecture!") return menu3() end local choice = gg.choice({"✅Enable Unlimted Fuel", "❌Disable Unlimited Fuel", "🔙Return"}, nil, "Unlimited Fuel for " .. archName) if choice == nil or choice == 3 then return FuelHack() end local startAddr = LIB_BASE + offset if choice == 1 then if fakeUnlockOriginal == nil then fakeUnlockOriginal = {} local readList = {} for i = 1, #patchBytes do table.insert(readList, {address = startAddr + (i - 1), flags = gg.TYPE_BYTE}) end local values = gg.getValues(readList) for i = 1, #values do fakeUnlockOriginal[i] = values[i].value end end local edits = {} for i = 1, #patchBytes do table.insert(edits, {address = startAddr + (i - 1), flags = gg.TYPE_BYTE, value = patchBytes[i]}) end gg.setValues(edits) gg.alert("✅Enabled Unlimited Fuel!") elseif choice == 2 then if fakeUnlockOriginal ~= nil then local edits = {} for i = 1, #fakeUnlockOriginal do table.insert(edits, {address = startAddr + (i - 1), flags = gg.TYPE_BYTE, value = fakeUnlockOriginal[i]}) end gg.setValues(edits) gg.alert("❌Disabled Unlimited Fuel!") else gg.alert("❌Nothing to restore!") end end end local NoFuelOriginal = {} local NoFuelResults = {} local NoFuelFound = false function NoFuelHack() local choice = gg.choice({ "\u{2705} Enable No Fuel", "\u{274C} Disable No Fuel", "\u{1F519} Return" }, nil, "Enable or Disable No Fuel!") if choice == nil or choice == 3 then return FuelHack() end if choice == 1 then if not NoFuelFound then gg.clearResults() gg.setRanges(gg.REGION_C_DATA) gg.searchNumber("100", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("\u{274C} No Results!") gg.setRanges(allRanges[picked].value) return end NoFuelResults = gg.getResults(count) NoFuelOriginal = gg.getValues(NoFuelResults) local newValues = {} for i, v in ipairs(NoFuelResults) do newValues[i] = { address = v.address, flags = v.flags, value = 0 } end gg.setValues(newValues) NoFuelFound = true gg.setRanges(allRanges[picked].value) gg.alert("\u{2705} Enabled No Fuel!") end elseif choice == 2 then if NoFuelFound then gg.setValues(NoFuelOriginal) NoFuelFound = false gg.alert("\u{274C} Disabled No Fuel!") else gg.alert("\u{274C} Nothing to Restore!") end end end local ZoomStored = nil function ZoomHack() local input = gg.prompt({ "Adjust Min Zoom [-200;200]", "Adjust Max Zoom [-200;200]", }, {67, 67}, {"number", "number"}) if input == nil then return AdventureMenu() end local valMin = tonumber(input[1]) local valMax = tonumber(input[2]) if not valMin or not valMax then return end if not ZoomStored then gg.clearResults() gg.setRanges(16) gg.searchNumber("20;50::5", 16) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then gg.alert("❌ No Results!") return AdventureMenu() end gg.clearResults() if #results > 0 then ZoomStored = results end end if ZoomStored and #ZoomStored > 0 then for i, v in ipairs(ZoomStored) do v.value = (i % 2 == 1) and valMin or valMax v.flags = 16 end gg.setValues(ZoomStored) gg.alert("✅ Zoom set! Min: " .. valMin .. " | Max: " .. valMax) end end local speedStep = 0 local speedResults = {} function SpeedHack() local choice = gg.choice( { "\u{0031}\u{fe0f}\u{20e3}Speed Hack (MAKE SURE TO BE IN A ADVENTURE RUN AND PAUSE YOUR GAME)", "\u{0032}\u{fe0f}\u{20e3}Speed Hack (UNPAUSE YOUR GAME THEN CONTINUE)", "\u{0033}\u{fe0f}\u{20e3}Speed Hack (EDIT YOUR SPEED)", "\u{1F519}Return" }, nil, "Speed Hack Menu" ) if choice == nil or choice == 4 then return AdventureMenu() end if choice == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("0;0;0;0;0;0;0;0;0;0;0;0;1F;1::53", gg.TYPE_DWORD) local count = gg.getResultsCount() if count == 0 then gg.alert("\u{274C} No Results!") speedStep = 0 else speedStep = 1 gg.alert("\u{2705} Continue with Step 2!") end elseif choice == 2 then if speedStep < 1 then return gg.alert("\u{26A0} Please do Step 1 first!") end gg.setRanges(allRanges[picked].value) gg.refineNumber("0;0;0;0;0;0;0;0;0;0;0;0;1F;0::53", gg.TYPE_DWORD) local count = gg.getResultsCount() if count == 0 then gg.alert("\u{274C} No Results!") speedStep = 0 else speedResults = gg.getResults(count) speedStep = 2 gg.alert("\u{2705} Continue with Step 3!") end elseif choice == 3 then if speedStep < 2 then return gg.alert("\u{26A0} Please do Step 2 first!") end local input = gg.prompt( {"Enter Speed Value (e.g. half speed: 0,5) USE , not . :"}, {"0,5"}, {"number"} ) if not input then SpeedHack() end local val = tonumber(input[1]) if val then gg.setRanges(allRanges[picked].value) gg.setValues(speedResults) gg.editAll(tostring(val), gg.TYPE_FLOAT) gg.alert("\u{2705} Speed Hack Enabled!") end end end function TeleportMenu() local choice = gg.choice( { "\u{0031}\u{fe0f}\u{20e3}Drive to 100 Meters", "\u{0032}\u{fe0f}\u{20e3}Drive to 1000 Meters", "\u{0033}\u{fe0f}\u{20e3}Drive to 2000 Meters", "\u{1F519}Return" }, nil, "Teleport Menu 1" ) if choice == nil or choice == 4 then return TeleportMenuMain() end if choice == 1 then Drive1() elseif choice == 2 then Drive2() elseif choice == 3 then Drive3() end end function Drive1() gg.clearResults() gg.clearList() gg.setRanges(allRanges[picked].value) gg.searchNumber("95~105", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("\u{274C}No Results!") return TeleportMenu() end gg.alert("\u{2705} Found " .. count .. " results.") gg.toast("Next, drive until 1000 meters (995~1005) and pause again!") end function Drive2() gg.getResults(67777) gg.setRanges(allRanges[picked].value) gg.refineNumber("995~1005", gg.TYPE_FLOAT) local count = gg.getResultCount() gg.alert("\u{2705} Found " .. count .. " results.") if count == 0 then gg.alert("\u{274C}No Results!") return TeleportMenu() end gg.toast("Next, drive until 2000 meters (1995~2005) and pause again!") end function Drive3() gg.setRanges(allRanges[picked].value) gg.refineNumber("1995~2005", gg.TYPE_FLOAT) local count = gg.getResultCount() gg.alert("\u{2705}Done! Now " .. count .. " results left.") if count == 0 then gg.alert("\u{274C}No Results!") return TeleportMenu() end gg.toast("\u{2705}Refine Process done! Saving now the values!") Save1() end function Save1() local count = gg.getResultCount() if count == 0 then gg.alert("\u{274C}No results left to save!") return end saved = {} gg.removeListItems(gg.getListItems()) saved = gg.getResults(count) gg.addListItems(saved) gg.alert("\u{2705}Saved " .. count .. " values.") gg.alert("\u{2705}Continue with Teleport Menu Step 2!") end function GravityMenu() local options = gg.choice({"\u{26a1}Hack Gravity", "\u{1F504}Reset hacked Gravity", "\u{1F519}Return"}, nil, "Teleport Menu 2") if options == nil then return TeleportMenuMain() end if options == 1 then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("-10;59.9999961853", gg.TYPE_FLOAT) gg.getResults(67) gg.refineNumber("-10", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("\u{274C}No Results!") return GravityMenu() end gg.getResults(gg.getResultsCount()) gg.editAll(100, gg.TYPE_FLOAT) gg.alert("\u{2705}Go up now then continue with Step 3!") elseif options == 2 then gg.setRanges(allRanges[picked].value) gg.searchNumber("100;59.9999961853", gg.TYPE_FLOAT) gg.getResults(67) gg.editAll(-10, gg.TYPE_FLOAT) gg.alert("\u{2705}Gravity reset!") end end function TeleportMenu3() local options = gg.choice({"\u{26a1}Teleport", "\u{26a1}Go Down", "\u{1F519}Return"}, nil, "Teleport Menu 3") if options == nil then return TeleportMenuMain() elseif options == 1 then if saved == nil or #saved == 0 then gg.alert("\u{274C}No saved results to edit!") else local total = #saved local input = gg.prompt( { "How many values do you want to teleport? (MAX 25000)", "Mode: 1 = new value, 2 = add 25000" }, {total, 2}, {"number", "number"} ) if input == nil then else local n = tonumber(input[1]) local mode = tonumber(input[2]) local value = 25000 if n > 25000 then gg.alert("\u{274C}Maximum 25000 values allowed!") n = 25000 elseif n > total then gg.alert("\u{2705}There are " .. total .. " saved values. Editing all of them.") n = total end for i = 1, n do if mode == 1 then saved[i].value = value elseif mode == 2 then saved[i].value = saved[i].value + value end saved[i].freeze = false end gg.setRanges(allRanges[picked].value) gg.setValues(saved) gg.alert(n .. " saved values edited.") end end elseif options == 2 then gg.setRanges(allRanges[picked].value) gg.searchNumber("100;59.9999961853", gg.TYPE_FLOAT) local res = gg.getResults(gg.getResultsCount()) if #res == 0 then gg.alert("\u{274C}No Results!") return TeleportMenuMain() end gg.editAll(-10, gg.TYPE_FLOAT) gg.alert("\u{2705}Gravity reset!") end end local FandResults = {} local FandFound = false function FandValues() local presets = { [1] = "\u{26a1}Default Radius", [10] = "\u{26a1}Short Radius (10m)", [500] = "\u{26a1}Big Radius (500m)", [100000000] = "\u{26a1}Remove Fuel and Coins" } local keys = {} for k in pairs(presets) do keys[#keys+1] = k end table.sort(keys) local labels = {} for _, k in ipairs(keys) do labels[#labels+1] = presets[k] end labels[#labels+1] = "\u{270F} Choose Custom Radius" labels[#labels+1] = "\u{1F519} Return" local choice = gg.choice(labels, nil, "Set Fuel and Coins") if choice == nil or choice == #labels then return AdventureMenu() end if choice == #labels - 1 then local input = gg.prompt({"Enter Radius (m):"}, {67}, {"number"}) if not input then return FandValues() end local customVal = tonumber(input[1]) ApplyFand(customVal) gg.alert("\u{2705} Custom Applied!") return FandValues() end local val = keys[choice] ApplyFand(val) return FandValues() end function ApplyFand(val) if not FandFound then gg.clearResults() gg.setRanges(allRanges[picked].value) gg.searchNumber("-1082130432~-1054867456;1~1500F;1~5;1~1500F::21", gg.TYPE_DWORD) gg.refineNumber("1~1500", gg.TYPE_FLOAT) local count = gg.getResultCount() if count == 0 then gg.alert("\u{274C} No Results!") return end FandResults = gg.getResults(count) FandFound = true end local newValues = {} for i, res in ipairs(FandResults) do newValues[i] = { address = res.address, flags = gg.TYPE_FLOAT, value = val } end gg.setValues(newValues) gg.alert("✅") end local applied = {} local function read_qword(address) local v = gg.getValues({{address = address, flags = gg.TYPE_QWORD}}) return v[1].value or 0 end local function read_dword(address) local v = gg.getValues({{address = address, flags = gg.TYPE_DWORD}}) return v[1].value or 0 end local function read_float(address) local v = gg.getValues({{address = address, flags = gg.TYPE_FLOAT}}) return v[1].value or 0 end local function read_string(address) if address == 0 then return "Unknown" end local str = "" for i = 0, 31 do local b = gg.getValues({{address = address + i, flags = gg.TYPE_BYTE}})[1].value if b == 0 then break end str = str .. string.char(b & 0xFF) end return str end local function scan_replays(lOff) gg.clearResults() gg.searchNumber(tostring(LIB_BASE + lOff), gg.TYPE_QWORD) local results = gg.getResults(gg.getResultsCount()) gg.clearResults() local replays = {} for i, r in ipairs(results) do local addr = r.address local player_ptr = read_qword(addr + 0x50) local vehicle_ptr = read_qword(addr + 0x20) local map_ptr = read_qword(addr + 0x28) local date_ptr = read_qword(addr + 0xF8) local replay = { addr = addr, name = read_string(player_ptr), vehicle = read_string(vehicle_ptr), map = read_string(map_ptr), date = read_string(date_ptr), time = read_float(addr + 0x48), distance = read_float(addr + 0x4C), tunes = {}, parts = {} } local tunes_ptr = read_qword(addr + 0x118) if tunes_ptr ~= 0 then for t = 0, 3 do local tune_addr = read_qword(tunes_ptr + t * 8) if tune_addr ~= 0 then replay.tunes[t+1] = read_dword(tune_addr + 0x20) + 1 else replay.tunes[t+1] = 1 end end end local num_parts = read_dword(addr + 0xE8) local parts_ptr = read_qword(addr + 0xE0) if parts_ptr ~= 0 and num_parts > 0 and num_parts < 50 then for p = 0, num_parts-1 do local part_base = read_qword(parts_ptr + p * 8) if part_base ~= 0 then replay.parts[p+1] = read_dword(part_base + 0x20) end end end replays[#replays + 1] = replay end return replays end local function show_replay_details(replay) local info = string.format( "Player: %s\nVehicle: %s\nMap: %s\nTime: %.3fs\nDistance: %.2fm\nDate: %s\n\nTunes: %s\nParts: %s", replay.name, replay.vehicle, replay.map, replay.time, replay.distance, replay.date, table.concat(replay.tunes, "/"), table.concat(replay.parts, "/") ) local collect = gg.alert(info, "Continue", "Copy Info") if collect == 2 then gg.copyText(info, false) gg.toast("✅Copied to clipboard!") end end local function select_replay(lOff) local replays = scan_replays(lOff) if #replays == 0 then gg.alert("❌ No replays found!") return end local player_time_list = {} for i, r in ipairs(replays) do player_time_list[i] = string.format("%s (%.3fs)", r.name ~= "" and r.name or "Replay "..i, r.time) end local choice = gg.choice(player_time_list, nil, "Select a replay") if choice == nil then return Tools() end if choice then show_replay_details(replays[choice]) end end function GetTunesMenu() if not STATUS2_OK then gg.alert(NEEDS_UPDATE and UPDATE_MSG) return AdventureMenu() end local libOff = 0 local archName = "" if archType == 1 then libOff = CNF.offsets.tunes_lib_arm8 archName = "ARMV8" elseif archType == 2 then libOff = CNF.offsets.tunes_lib_x64 archName = "x86_64" else gg.alert("❌ Unsupported Architecture!") return AdventureMenu() end local menu = gg.choice({"\u{1F50D} Get Tunes", "\u{1F519} Return"}, nil, "Get Tunes for " .. archName) if menu == nil or menu == 2 then return Tools() end if menu == 1 then select_replay(libOff) end end function rewards() return [[ { "eventRewards": [ { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_All", "unlockVehicleLevel": 20, "unlockVehicles": [ "scooter", "jeep", "bus", "superjeep", "tractor", "motocross", "dunebuggy", "sportscar", "monster", "upsidedown", "pickup_truck", "chopper", "minitank", "lowrider", "snowmobile", "monowheel", "beast", "rally", "formula", "musclecar", "racing_truck", "hotrod", "electric_car", "superbike", "lambo", "moonlander", "rockbouncer", "hoverbike", "raider", "glider", "trusty", "atv", "super_offroad", "stock" ], "unlockDriverAssets": [ "10th_anniversary_bill_premium", "abstract_character", "alien", "alice", "america", "arena", "atv", "bandaged_premium", "beach", "beast", "betatestdummy", "biker", "bikergirl", "billybob", "bling", "bobsledder", "bomber-aqua_premium", "bomber-black_premium", "bomber-blue_premium", "bomber-green_premium", "bomber-pink_premium", "bomber-red_premium", "bomber-white_premium", "bomber-yellow_premium", "bunny", "bunnygirl", "bus", "busdriver", "bwbog", "calaveragirl", "calaveraman", "candy", "canyoneer", "carrie", "cat", "caveman", "cc-ev", "china", "chinahanfu_premium", "chiron_premium", "chopper", "Christmas_2022_premium", "circus_bill_premium", "city", "clown", "cny2021ox_premium", "cny2022_premium", "cny2024_premium", "cny2025_premium", "cny_rabbit", "cowboy", "crewchief", "cuptown", "dakota", "dave", "default", "deepforest_farmer_premium", "desert", "diwali-2024", "diwali2022_premium", "dinnersuit", "discoman_premium", "docshocks_premium", "drafted", "driftmas2020_premium", "driftmas2021_premium", "driftmas2023_premium", "driftmas2024_premium", "driftmas2025_mythic", "dunebuggy", "elf", "explorer_premium", "fabulo_logjaw_premium", "fabulo_premium", "fabulo_ranger_premium", "farmer", "firefighter", "firehorsecny_premium", "fingersoft", "forest", "formula", "frank", "freya_premium", "fusell_premium", "gaspresto_premium", "geisha", "ghost_premium", "gilbert_premium", "ginger", "glacier", "glider", "gloomvale", "goth", "gretel", "grillbill", "grinch", "halloween", "halloween2024_premium", "handyman", "hansel", "hazardeer_premium", "headless", "hillclimber", "hillclimbermk2", "hipster", "honeybill_premium", "hoodie", "hotrod", "hoverbike", "icegrille_premium", "inuit", "issen_premium", "jock", "johnny_epic", "king", "kleopatra", "kmight", "knight_premium", "ladybee_premium", "Leprechaun", "lifeguardgirl", "lifeguardguy", "lowrider", "luxskully_premium", "mackie", "maiden", "marshal_premium", "mellow", "mindy_premium", "mine", "miner", "moc_premium", "monowheel", "montana", "moon", "moonlander", "moonrabbit_premium", "monstertruck", "motocross", "mountain", "mrsvip", "mrvip", "mummy_premium", "musclecar", "naked", "nancy_premium", "nationalday", "nationalpark", "nerdgirl", "nikita_acrobat_premium", "nikita_superhero_premium", "nikita_thief_premium", "ninja", "nightsuit", "nitrox_premium", "officer", "oldbard", "oldie", "overspill", "patchwork", "pbox_premium", "pecker_premium", "pierre_epic", "pigsy", "pinata2025_premium", "pirate", "pitcrew", "pixel", "police", "prisoner", "punk", "raccoonsuit", "racingtruck", "raider", "rallycar", "rap-artist", "rat", "referee", "reindeer", "retroride_bill_premium", "robotsanta", "rockbouncer", "rocker", "rotator", "rusty_premium", "saki_premium", "samurai", "santa", "savanna", "scarecrow_premium", "scooter", "shaman", "skeleton", "slumberbot_premium", "snow", "snowmobile", "snowqueen", "soccer", "soldier", "spacesuit", "spirit_premium", "sports", "sportscar", "sportsformula", "steam", "steampunk", "stock", "streetbiker", "stuntman", "sunburnt", "super_offroad", "superbike", "supercar", "superdiesel", "superhero_premium", "survivor", "sweet_premium", "tank", "towel", "tractor", "trusty", "underwater", "vampiress", "villain", "voltage_robot_premium", "warlock_premium", "winter", "wintergirl", "winterguy", "winteroutfit", "workrobot", "yeti", "zarek_premium", "zephyr_premium", "zombie" ], "unlockDriverAnimations": [ "abduction", "banjo", "big-sad", "blast", "bill-bull", "boppin", "bubblegum", "bubbles", "climb-fiction", "combo", "cossack", "dab", "dang-it", "darksurge", "divine", "dreamy", "drum-solo", "energy-drink", "epic-win", "fire-guitar", "fist-pump", "flip", "gamer-rage", "gift", "ice-cream", "idle", "kippis", "laser", "laser-tool", "marching", "portal", "potion_freezing", "potion_growing", "potion_shrinking", "power-up", "rave", "rockerbill", "scratch", "sneeze", "stretch", "victory", "wicked" ], "unlockVehiclePaints": [ { "vehicleId": "jeep", "paintId": "hill_climber_10th_anniversary_premium" }, { "vehicleId": "jeep", "paintId": "jeep_flames" }, { "vehicleId": "jeep", "paintId": "jeep_graphite" }, { "vehicleId": "jeep", "paintId": "jeep_hue_bronze" }, { "vehicleId": "jeep", "paintId": "jeep_hue_light-blue" }, { "vehicleId": "jeep", "paintId": "jeep_hue_violet" }, { "vehicleId": "jeep", "paintId": "jeep_metal" }, { "vehicleId": "jeep", "paintId": "jeep_checkered_green" }, { "vehicleId": "jeep", "paintId": "jeep_classic" }, { "vehicleId": "jeep", "paintId": "jeep_hue_flames-blue" }, { "vehicleId": "jeep", "paintId": "jeep_hue_rally_brown" }, { "vehicleId": "jeep", "paintId": "jeep_rally" }, { "vehicleId": "jeep", "paintId": "jeep_splash" }, { "vehicleId": "jeep", "paintId": "jeep_checkered" }, { "vehicleId": "jeep", "paintId": "hill_climber_spring_falls_premium" }, { "vehicleId": "jeep", "paintId": "jeep_banana" }, { "vehicleId": "jeep", "paintId": "jeep_blue" }, { "vehicleId": "jeep", "paintId": "jeep_broken_premium" }, { "vehicleId": "jeep", "paintId": "jeep_halloween" }, { "vehicleId": "jeep", "paintId": "jeep_heavy" }, { "vehicleId": "jeep", "paintId": "jeep_hue_green" }, { "vehicleId": "jeep", "paintId": "jeep_kangaroo_premium" }, { "vehicleId": "jeep", "paintId": "jeep_pixel" }, { "vehicleId": "jeep", "paintId": "VIP" }, { "vehicleId": "scooter", "paintId": "scooter_hue_blue-white" }, { "vehicleId": "scooter", "paintId": "scooter_hue_pink-white" }, { "vehicleId": "scooter", "paintId": "black" }, { "vehicleId": "scooter", "paintId": "rock" }, { "vehicleId": "scooter", "paintId": "scooter_pierre_epic" }, { "vehicleId": "scooter", "paintId": "diwali2022_premium" }, { "vehicleId": "scooter", "paintId": "moped" }, { "vehicleId": "scooter", "paintId": "scooter_hue_blue" }, { "vehicleId": "scooter", "paintId": "scooter_hue_red" }, { "vehicleId": "scooter", "paintId": "Web" }, { "vehicleId": "scooter", "paintId": "VIP" }, { "vehicleId": "scooter", "paintId": "yellow" }, { "vehicleId": "bus", "paintId": "Green" }, { "vehicleId": "bus", "paintId": "Trio" }, { "vehicleId": "bus", "paintId": "Cat" }, { "vehicleId": "bus", "paintId": "Graffiti" }, { "vehicleId": "bus", "paintId": "London" }, { "vehicleId": "bus", "paintId": "bus_trophy_epic" }, { "vehicleId": "bus", "paintId": "bus_bandbus_premium" }, { "vehicleId": "bus", "paintId": "bus_chicken_premium" }, { "vehicleId": "bus", "paintId": "bus_nightcrawler_premium" }, { "vehicleId": "bus", "paintId": "bus_ramen_premium" }, { "vehicleId": "bus", "paintId": "Flag" }, { "vehicleId": "bus", "paintId": "Halloween" }, { "vehicleId": "bus", "paintId": "Luck" }, { "vehicleId": "bus", "paintId": "Sauna" }, { "vehicleId": "bus", "paintId": "School" }, { "vehicleId": "bus", "paintId": "Sleek" }, { "vehicleId": "bus", "paintId": "VIP" }, { "vehicleId": "superjeep", "paintId": "superjeep_cubic" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_pink" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_yellow" }, { "vehicleId": "superjeep", "paintId": "superjeep_yellowstripe" }, { "vehicleId": "superjeep", "paintId": "superjeep_yellowstripe_hue" }, { "vehicleId": "superjeep", "paintId": "superjeep_camo" }, { "vehicleId": "superjeep", "paintId": "superjeep_camo_hue" }, { "vehicleId": "superjeep", "paintId": "superjeep_safari_epic" }, { "vehicleId": "superjeep", "paintId": "hill_climber_mk2_saltmaker_premium" }, { "vehicleId": "superjeep", "paintId": "superjeep_halloween" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_blue" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_green" }, { "vehicleId": "superjeep", "paintId": "superjeep_ninja" }, { "vehicleId": "superjeep", "paintId": "superjeep_pro" }, { "vehicleId": "superjeep", "paintId": "superjeep_superhero" }, { "vehicleId": "superjeep", "paintId": "superjeep_xmas" }, { "vehicleId": "superjeep", "paintId": "VIP" }, { "vehicleId": "tractor", "paintId": "hue_1" }, { "vehicleId": "tractor", "paintId": "hue_2" }, { "vehicleId": "tractor", "paintId": "hue_3" }, { "vehicleId": "tractor", "paintId": "hotrod" }, { "vehicleId": "tractor", "paintId": "hotrod_hue1" }, { "vehicleId": "tractor", "paintId": "orange" }, { "vehicleId": "tractor", "paintId": "dragon" }, { "vehicleId": "tractor", "paintId": "swamp" }, { "vehicleId": "tractor", "paintId": "swamp_hue1" }, { "vehicleId": "tractor", "paintId": "tractor_deepforest_premium" }, { "vehicleId": "tractor", "paintId": "tractor_fire_premium" }, { "vehicleId": "tractor", "paintId": "VIP" }, { "vehicleId": "motocross", "paintId": "motocross_black-yellow" }, { "vehicleId": "motocross", "paintId": "motocross_black-yellow_hue" }, { "vehicleId": "motocross", "paintId": "motocross_hue_yellow-green" }, { "vehicleId": "motocross", "paintId": "motocross_flames" }, { "vehicleId": "motocross", "paintId": "motocross_flames_hue" }, { "vehicleId": "motocross", "paintId": "motocross_lizard_epic" }, { "vehicleId": "motocross", "paintId": "motocross_explorer_premium" }, { "vehicleId": "motocross", "paintId": "motocross_green" }, { "vehicleId": "motocross", "paintId": "motocross_green_hue" }, { "vehicleId": "motocross", "paintId": "motocross_hue_blue" }, { "vehicleId": "motocross", "paintId": "motocross_hue_red" }, { "vehicleId": "motocross", "paintId": "motocross_hue_yellow" }, { "vehicleId": "motocross", "paintId": "motocross_nikita_acrobat_premium" }, { "vehicleId": "motocross", "paintId": "motocross_nikita_superhero_premium" }, { "vehicleId": "motocross", "paintId": "VIP" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_exploder" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_princess" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_vanilla" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_pop_epic" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_juice_premium" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_moonbuggy" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_pumpkin" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_racebuggy" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_skull_premium" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_sunbug" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_warlock_premium" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_waverider" }, { "vehicleId": "dunebuggy", "paintId": "VIP" }, { "vehicleId": "sportscar", "paintId": "arrow" }, { "vehicleId": "sportscar", "paintId": "twocoloured" }, { "vehicleId": "sportscar", "paintId": "twocoloured_hue" }, { "vehicleId": "sportscar", "paintId": "sportscar_moonwalk_epic" }, { "vehicleId": "sportscar", "paintId": "sportscar_steampunk_epic" }, { "vehicleId": "sportscar", "paintId": "sports_hue_pink" }, { "vehicleId": "sportscar", "paintId": "sports_hue_yellow" }, { "vehicleId": "sportscar", "paintId": "sportscar_bee_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_drifting_orange_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_drifting_pink_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_flames" }, { "vehicleId": "sportscar", "paintId": "sportscar_flames_hue1" }, { "vehicleId": "sportscar", "paintId": "sportscar_flames_hue2" }, { "vehicleId": "sportscar", "paintId": "sportscar_gloomvale_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_oldie_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_orange" }, { "vehicleId": "sportscar", "paintId": "sportscar_snowflake" }, { "vehicleId": "sportscar", "paintId": "VIP" }, { "vehicleId": "monster", "paintId": "fang_hue" }, { "vehicleId": "monster", "paintId": "fang" }, { "vehicleId": "monster", "paintId": "flames" }, { "vehicleId": "monster", "paintId": "monster_hue_blue-flames" }, { "vehicleId": "monster", "paintId": "monster_donut" }, { "vehicleId": "monster", "paintId": "monster_steampunk_epic" }, { "vehicleId": "monster", "paintId": "monster_america" }, { "vehicleId": "monster", "paintId": "monster_hue_blue" }, { "vehicleId": "monster", "paintId": "monster_hue_pink" }, { "vehicleId": "monster", "paintId": "monster_police_premium" }, { "vehicleId": "monster", "paintId": "monster_survivor" }, { "vehicleId": "monster", "paintId": "monster_xmas" }, { "vehicleId": "monster", "paintId": "VIP" }, { "vehicleId": "upsidedown", "paintId": "hue_default_autumn" }, { "vehicleId": "upsidedown", "paintId": "hue_default_blue" }, { "vehicleId": "upsidedown", "paintId": "berry" }, { "vehicleId": "upsidedown", "paintId": "hue_berry_blue" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_driftmas2020_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_enjin_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_halloween2021_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_scifi_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_space_premium" }, { "vehicleId": "upsidedown", "paintId": "VIP" }, { "vehicleId": "pickup_truck", "paintId": "oldie" }, { "vehicleId": "pickup_truck", "paintId": "pickup_hue_pink" }, { "vehicleId": "pickup_truck", "paintId": "oldie_hue" }, { "vehicleId": "pickup_truck", "paintId": "pickup_hue_scifi-green" }, { "vehicleId": "pickup_truck", "paintId": "scifi" }, { "vehicleId": "pickup_truck", "paintId": "adventure" }, { "vehicleId": "pickup_truck", "paintId": "giftwrap" }, { "vehicleId": "pickup_truck", "paintId": "nationalday" }, { "vehicleId": "pickup_truck", "paintId": "pickup_heavenride_premium" }, { "vehicleId": "pickup_truck", "paintId": "pickup_hue_green" }, { "vehicleId": "pickup_truck", "paintId": "pickup_icegrille_premium" }, { "vehicleId": "pickup_truck", "paintId": "pimped" }, { "vehicleId": "pickup_truck", "paintId": "sunkenship" }, { "vehicleId": "pickup_truck", "paintId": "VIP" }, { "vehicleId": "chopper", "paintId": "hue_blue-b" }, { "vehicleId": "chopper", "paintId": "pink" }, { "vehicleId": "chopper", "paintId": "golden" }, { "vehicleId": "chopper", "paintId": "hue_blue-green" }, { "vehicleId": "chopper", "paintId": "hue_orange-purple" }, { "vehicleId": "chopper", "paintId": "chopper_marina_premium" }, { "vehicleId": "chopper", "paintId": "chopper_survivor_premium" }, { "vehicleId": "chopper", "paintId": "freerider" }, { "vehicleId": "chopper", "paintId": "ghostrider" }, { "vehicleId": "chopper", "paintId": "horse" }, { "vehicleId": "chopper", "paintId": "hue_blue" }, { "vehicleId": "chopper", "paintId": "VIP" }, { "vehicleId": "minitank", "paintId": "camo_winter" }, { "vehicleId": "minitank", "paintId": "camo_forest" }, { "vehicleId": "minitank", "paintId": "battledamage" }, { "vehicleId": "minitank", "paintId": "M1" }, { "vehicleId": "minitank", "paintId": "tank_hue_blue" }, { "vehicleId": "minitank", "paintId": "tank_hue_green" }, { "vehicleId": "minitank", "paintId": "tank_pineapple_premium" }, { "vehicleId": "minitank", "paintId": "VIP" }, { "vehicleId": "lowrider", "paintId": "lowrider_blue_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_brown_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_chrome_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_purple_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_red_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_yellow_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_burgundy_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_double_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_emerald_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_pinkstreak_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_red_angles_epic" }, { "vehicleId": "lowrider", "paintId": "lowrider_splash_epic" }, { "vehicleId": "lowrider", "paintId": "lowrider_flame_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_ghost_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_luxury_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_racer_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_retroride_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_survivor_premium" }, { "vehicleId": "lowrider", "paintId": "VIP" }, { "vehicleId": "snowmobile", "paintId": "Blue" }, { "vehicleId": "snowmobile", "paintId": "Green" }, { "vehicleId": "snowmobile", "paintId": "Purple" }, { "vehicleId": "snowmobile", "paintId": "Red" }, { "vehicleId": "snowmobile", "paintId": "Orange" }, { "vehicleId": "snowmobile", "paintId": "Poison" }, { "vehicleId": "snowmobile", "paintId": "Shark" }, { "vehicleId": "snowmobile", "paintId": "Water_Splash" }, { "vehicleId": "snowmobile", "paintId": "Modern" }, { "vehicleId": "snowmobile", "paintId": "snowmobile_disco_premium" }, { "vehicleId": "snowmobile", "paintId": "VIP" }, { "vehicleId": "monowheel", "paintId": "bluestripes" }, { "vehicleId": "monowheel", "paintId": "bluestripes_hue_pink" }, { "vehicleId": "monowheel", "paintId": "default_hue_green" }, { "vehicleId": "monowheel", "paintId": "monowheel_china_premium" }, { "vehicleId": "monowheel", "paintId": "monowheel_nautilus_premium" }, { "vehicleId": "monowheel", "paintId": "monowheel_voltage_premium" }, { "vehicleId": "monowheel", "paintId": "VIP" }, { "vehicleId": "beast", "paintId": "beast_brown_common" }, { "vehicleId": "beast", "paintId": "beast_green_common" }, { "vehicleId": "beast", "paintId": "beast_pink_common" }, { "vehicleId": "beast", "paintId": "beast_red_common" }, { "vehicleId": "beast", "paintId": "beast_teal_common" }, { "vehicleId": "beast", "paintId": "beast_white_common" }, { "vehicleId": "beast", "paintId": "beast_yellow_common" }, { "vehicleId": "beast", "paintId": "beast_rare_bluecheckers" }, { "vehicleId": "beast", "paintId": "beast_rare_darkgreen" }, { "vehicleId": "beast", "paintId": "beast_rare_tricolor" }, { "vehicleId": "beast", "paintId": "beast_rare_whiteflame" }, { "vehicleId": "beast", "paintId": "beast_rocket_epic" }, { "vehicleId": "beast", "paintId": "beast_tiger_epic" }, { "vehicleId": "beast", "paintId": "beast_chimera_premium" }, { "vehicleId": "beast", "paintId": "beast_driftmas2023_premium" }, { "vehicleId": "beast", "paintId": "beast_old_premium" }, { "vehicleId": "beast", "paintId": "beast_sarcophagus_premium" }, { "vehicleId": "beast", "paintId": "beast_spaceship_premium" }, { "vehicleId": "beast", "paintId": "VIP" }, { "vehicleId": "rally", "paintId": "rally_hcr" }, { "vehicleId": "rally", "paintId": "rally_hcraser" }, { "vehicleId": "rally", "paintId": "rally_star" }, { "vehicleId": "rally", "paintId": "rally_vord" }, { "vehicleId": "rally", "paintId": "rally_lash" }, { "vehicleId": "rally", "paintId": "rally_luxury_epic" }, { "vehicleId": "rally", "paintId": "china" }, { "vehicleId": "rally", "paintId": "rally_abstract_premium" }, { "vehicleId": "rally", "paintId": "rally_bomber_premium" }, { "vehicleId": "rally", "paintId": "rally_dragonboat_premium" }, { "vehicleId": "rally", "paintId": "rally_driftmas2021_premium" }, { "vehicleId": "rally", "paintId": "rally_frank" }, { "vehicleId": "rally", "paintId": "rally_green" }, { "vehicleId": "rally", "paintId": "rally_itasha_premium" }, { "vehicleId": "rally", "paintId": "rally_lava_premium" }, { "vehicleId": "rally", "paintId": "rally_lion" }, { "vehicleId": "rally", "paintId": "rally_milk_premium" }, { "vehicleId": "rally", "paintId": "rally_nikita" }, { "vehicleId": "rally", "paintId": "rally_samurai_premium" }, { "vehicleId": "rally", "paintId": "rally_scifi" }, { "vehicleId": "rally", "paintId": "rally_yellow" }, { "vehicleId": "rally", "paintId": "rally_zombie" }, { "vehicleId": "rally", "paintId": "workshop" }, { "vehicleId": "rally", "paintId": "VIP" }, { "vehicleId": "formula", "paintId": "fingersoft" }, { "vehicleId": "formula", "paintId": "orangewhite" }, { "vehicleId": "formula", "paintId": "CNY" }, { "vehicleId": "formula", "paintId": "formula_green" }, { "vehicleId": "formula", "paintId": "formula_hue_blue" }, { "vehicleId": "formula", "paintId": "formula_survivor_premium" }, { "vehicleId": "formula", "paintId": "formula_villain_premium" }, { "vehicleId": "formula", "paintId": "VIP" }, { "vehicleId": "musclecar", "paintId": "musclecar_blue_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_green_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_pink_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_red_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_yellow_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_blueflame_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_checker_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_purpleflame_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_yellowgreen_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_bluegreen_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_popart_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_spectrum_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_splash_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_camo_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_derby_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_halloween_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_lucky_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_skully_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_tiger_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_marshal_premium" }, { "vehicleId": "musclecar", "paintId": "VIP" }, { "vehicleId": "racing_truck", "paintId": "green" }, { "vehicleId": "racing_truck", "paintId": "red" }, { "vehicleId": "racing_truck", "paintId": "cowboy" }, { "vehicleId": "racing_truck", "paintId": "halloween" }, { "vehicleId": "racing_truck", "paintId": "jet_engine" }, { "vehicleId": "racing_truck", "paintId": "racing_truck_amusement_park_premium" }, { "vehicleId": "racing_truck", "paintId": "racing_truck_cny2021_premium" }, { "vehicleId": "racing_truck", "paintId": "racing_truck_diwali-2024" }, { "vehicleId": "racing_truck", "paintId": "VIP" }, { "vehicleId": "hotrod", "paintId": "hue_green" }, { "vehicleId": "hotrod", "paintId": "hue_pink" }, { "vehicleId": "hotrod", "paintId": "hue_purple" }, { "vehicleId": "hotrod", "paintId": "flames" }, { "vehicleId": "hotrod", "paintId": "flames2" }, { "vehicleId": "hotrod", "paintId": "stickers" }, { "vehicleId": "hotrod", "paintId": "hotrod_cny2022_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_docshocks_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_heavymetal_mythic" }, { "vehicleId": "hotrod", "paintId": "hotrod_illusion_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_mecha_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_modern" }, { "vehicleId": "hotrod", "paintId": "hotrod_mummy_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_nikita_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_survivor" }, { "vehicleId": "hotrod", "paintId": "VIP" }, { "vehicleId": "electric_car", "paintId": "electric_car_blue_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_green_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_purple_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_red_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_yellow_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_blueline_rare" }, { "vehicleId": "electric_car", "paintId": "electric_car_chevron_rare" }, { "vehicleId": "electric_car", "paintId": "electric_car_stripe_rare" }, { "vehicleId": "electric_car", "paintId": "electric_car_flames_epic" }, { "vehicleId": "electric_car", "paintId": "electric_car_lightning_epic" }, { "vehicleId": "electric_car", "paintId": "electric_car_atom_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_bomberman_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_caustic_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_cookie_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_dragonboat_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_robot_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_scifi_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_unicorn_premium" }, { "vehicleId": "electric_car", "paintId": "VIP" }, { "vehicleId": "superbike", "paintId": "common_hue_1" }, { "vehicleId": "superbike", "paintId": "common_hue_2" }, { "vehicleId": "superbike", "paintId": "flames" }, { "vehicleId": "superbike", "paintId": "flames_hue1" }, { "vehicleId": "superbike", "paintId": "steampunk" }, { "vehicleId": "superbike", "paintId": "superbike_blue_df_epic" }, { "vehicleId": "superbike", "paintId": "superbike_green_df_epic" }, { "vehicleId": "superbike", "paintId": "superbike_orange_df_epic" }, { "vehicleId": "superbike", "paintId": "falcon" }, { "vehicleId": "superbike", "paintId": "justice_bringer" }, { "vehicleId": "superbike", "paintId": "superbike_enjin_premium" }, { "vehicleId": "superbike", "paintId": "superbike_mitch" }, { "vehicleId": "superbike", "paintId": "superbike_racing_black_premium" }, { "vehicleId": "superbike", "paintId": "superbike_red_premium" }, { "vehicleId": "superbike", "paintId": "superbike_villain_premium" }, { "vehicleId": "superbike", "paintId": "VIP" }, { "vehicleId": "lambo", "paintId": "hue_green" }, { "vehicleId": "lambo", "paintId": "hue_pink" }, { "vehicleId": "lambo", "paintId": "hue_purple" }, { "vehicleId": "lambo", "paintId": "orange" }, { "vehicleId": "lambo", "paintId": "red" }, { "vehicleId": "lambo", "paintId": "blackwhite" }, { "vehicleId": "lambo", "paintId": "bluestripes" }, { "vehicleId": "lambo", "paintId": "king" }, { "vehicleId": "lambo", "paintId": "orangewhite" }, { "vehicleId": "lambo", "paintId": "ace" }, { "vehicleId": "lambo", "paintId": "chameleon" }, { "vehicleId": "lambo", "paintId": "CNY2020" }, { "vehicleId": "lambo", "paintId": "lambo_kobra_premium" }, { "vehicleId": "lambo", "paintId": "supercar_knight_premium" }, { "vehicleId": "lambo", "paintId": "supercar_nikita" }, { "vehicleId": "lambo", "paintId": "tattoo" }, { "vehicleId": "lambo", "paintId": "xmas" }, { "vehicleId": "lambo", "paintId": "VIP" }, { "vehicleId": "moonlander", "paintId": "icecream" }, { "vehicleId": "moonlander", "paintId": "moonlander_hue_black-blue" }, { "vehicleId": "moonlander", "paintId": "moonlander_hue_blue" }, { "vehicleId": "moonlander", "paintId": "moonlander_tractor" }, { "vehicleId": "moonlander", "paintId": "black-green" }, { "vehicleId": "moonlander", "paintId": "lights" }, { "vehicleId": "moonlander", "paintId": "moonlander_simple" }, { "vehicleId": "moonlander", "paintId": "green" }, { "vehicleId": "moonlander", "paintId": "moonlander_hue_red" }, { "vehicleId": "moonlander", "paintId": "moonlander_lights" }, { "vehicleId": "moonlander", "paintId": "moonlander_lunar_premium" }, { "vehicleId": "moonlander", "paintId": "moonlander_moonrabbit_premium" }, { "vehicleId": "moonlander", "paintId": "moonlander_nautilus_premium" }, { "vehicleId": "moonlander", "paintId": "saucer" }, { "vehicleId": "moonlander", "paintId": "VIP" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_blue_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_orange_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_red_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_violet_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_yellow_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_purple_rare" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_grunge_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_grunge_red_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_leopard_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_yellowblue_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbounder_leopard_purple_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_blue17_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_christmas24_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_cny2024_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_green_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_purple12_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_rough_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_strawberry_premium" }, { "vehicleId": "rockbouncer", "paintId": "VIP" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_blue_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_brown_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_green_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_purple_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_red_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_teal_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_greenblue_rare" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_pinkblue_rare" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_purplegray_rare" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_digital_epic" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_grid_epic" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_stars_epic" }, { "vehicleId": "hoverbike", "paintId": "fusell_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_drakkar_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_halloween2024_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_ironclad_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_moooo_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_scifi_premium" }, { "vehicleId": "hoverbike", "paintId": "VIP" }, { "vehicleId": "raider", "paintId": "raider_blue_common" }, { "vehicleId": "raider", "paintId": "raider_green_common" }, { "vehicleId": "raider", "paintId": "raider_pink_common" }, { "vehicleId": "raider", "paintId": "raider_purple_common" }, { "vehicleId": "raider", "paintId": "raider_yellow_common" }, { "vehicleId": "raider", "paintId": "raider_geometric_pink_rare" }, { "vehicleId": "raider", "paintId": "raider_geometric_red_rare" }, { "vehicleId": "raider", "paintId": "raider_geometric_yellow_rare" }, { "vehicleId": "raider", "paintId": "raider_orange_rare" }, { "vehicleId": "raider", "paintId": "raider_red_rare" }, { "vehicleId": "raider", "paintId": "raider_hexagon_epic" }, { "vehicleId": "raider", "paintId": "raider_mech_green_epic" }, { "vehicleId": "raider", "paintId": "raider_mech_white_epic" }, { "vehicleId": "raider", "paintId": "raider_cheese_premium" }, { "vehicleId": "raider", "paintId": "raider_cny2025_premium" }, { "vehicleId": "raider", "paintId": "raider_fish_premium" }, { "vehicleId": "raider", "paintId": "raider_gold_premium" }, { "vehicleId": "raider", "paintId": "raider_hazardeer_premium" }, { "vehicleId": "raider", "paintId": "raider_spirit_premium" }, { "vehicleId": "raider", "paintId": "VIP" }, { "vehicleId": "glider", "paintId": "glider_blue_common" }, { "vehicleId": "glider", "paintId": "glider_gray_common" }, { "vehicleId": "glider", "paintId": "glider_green_common" }, { "vehicleId": "glider", "paintId": "glider_purple_common" }, { "vehicleId": "glider", "paintId": "glider_red_common" }, { "vehicleId": "glider", "paintId": "glider_yellow_common" }, { "vehicleId": "glider", "paintId": "glider_bent_blue_rare" }, { "vehicleId": "glider", "paintId": "glider_bent_burgundy_rare" }, { "vehicleId": "glider", "paintId": "glider_bent_mint_rare" }, { "vehicleId": "glider", "paintId": "glider_colorful_rare" }, { "vehicleId": "glider", "paintId": "glider_star_rare" }, { "vehicleId": "glider", "paintId": "glider_wooden_rare" }, { "vehicleId": "glider", "paintId": "glider_rebel_epic" }, { "vehicleId": "glider", "paintId": "glider_requisitioned_epic" }, { "vehicleId": "glider", "paintId": "glider_christmas25_premium" }, { "vehicleId": "glider", "paintId": "glider_cyber_premium" }, { "vehicleId": "glider", "paintId": "glider_magic_premium" }, { "vehicleId": "glider", "paintId": "glider_rustbucket_premium" }, { "vehicleId": "glider", "paintId": "glider_wasp_premium" }, { "vehicleId": "glider", "paintId": "VIP" }, { "vehicleId": "trusty", "paintId": "trusty_blue_common" }, { "vehicleId": "trusty", "paintId": "trusty_green_common" }, { "vehicleId": "trusty", "paintId": "trusty_red_common" }, { "vehicleId": "trusty", "paintId": "trusty_blue_rare" }, { "vehicleId": "trusty", "paintId": "trusty_green_rare" }, { "vehicleId": "trusty", "paintId": "trusty_yellow_rare" }, { "vehicleId": "trusty", "paintId": "trusty_pop_epic" }, { "vehicleId": "trusty", "paintId": "trusty_purple_epic" }, { "vehicleId": "trusty", "paintId": "trusty_phantom_premium" }, { "vehicleId": "trusty", "paintId": "trusty_pinata2025_premium" }, { "vehicleId": "trusty", "paintId": "trusty_dirt_premium" }, { "vehicleId": "trusty", "paintId": "VIP" }, { "vehicleId": "atv", "paintId": "atv_red_common" }, { "vehicleId": "atv", "paintId": "atv_sport-blue_common" }, { "vehicleId": "atv", "paintId": "atv_yellow_common" }, { "vehicleId": "atv", "paintId": "atv_mint_rare" }, { "vehicleId": "atv", "paintId": "atv_royale_rare" }, { "vehicleId": "atv", "paintId": "atv_sport-gerbera_rare" }, { "vehicleId": "atv", "paintId": "atv_sport-keke_rare" }, { "vehicleId": "atv", "paintId": "atv_camo_epic" }, { "vehicleId": "atv", "paintId": "atv_circuit_epic" }, { "vehicleId": "atv", "paintId": "atv_circus_epic" }, { "vehicleId": "atv", "paintId": "atv_moo_epic" }, { "vehicleId": "atv", "paintId": "atv_sport-flame_epic" }, { "vehicleId": "atv", "paintId": "atv_sport-flameblue_epic" }, { "vehicleId": "atv", "paintId": "atv_futuristic_premium" }, { "vehicleId": "atv", "paintId": "atv_greek_premium" }, { "vehicleId": "atv", "paintId": "atv_halloween25_mythic" }, { "vehicleId": "atv", "paintId": "atv_shark_premium" }, { "vehicleId": "atv", "paintId": "VIP" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_blue_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_purple_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_red_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_white_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_camo_brown_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_camo_green_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tendril_green_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tendril_purple_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_beeple_epic" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_beeple_yellow_epic" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_magenta_epic" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_cny26_premium" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_beeple_pop_premium" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tactical_blue_premium" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tactical_green_premium" }, { "vehicleId": "super_offroad", "paintId": "VIP" }, { "vehicleId": "stock", "paintId": "stocker_red_common" }, { "vehicleId": "stock", "paintId": "stocker_purple_common" }, { "vehicleId": "stock", "paintId": "stocker_green_common" }, { "vehicleId": "stock", "paintId": "stocker_orange_common" }, { "vehicleId": "stock", "paintId": "stocker_blue_common" }, { "vehicleId": "stock", "paintId": "stocker_bluestar_rare" }, { "vehicleId": "stock", "paintId": "stocker_darkstar_rare" }, { "vehicleId": "stock", "paintId": "stocker_darkstripe_rare" }, { "vehicleId": "stock", "paintId": "stocker_whitestripe_rare" }, { "vehicleId": "stock", "paintId": "stock_wave_epic" }, { "vehicleId": "stock", "paintId": "stock_circuit-orange_epic" }, { "vehicleId": "stock", "paintId": "stock_circuit-green_epic" }, { "vehicleId": "stock", "paintId": "stock_abstract_epic" }, { "vehicleId": "stock", "paintId": "stock_abstract_epic" }, { "vehicleId": "stock", "paintId": "stock_6-7_premium" }, { "vehicleId": "stock", "paintId": "VIP" } ], "unlockVehicleSpriteVariants": [ { "partId": "wheel", "variantId": "hill_climber_tire-10th_anniversary", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-safari", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-steampunk", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "hill_climber_spring_falls_tire_premium", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-broken_premium", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-goth", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-halloween", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-heavy", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-kangaroo_premium", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-pixel", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "hill_climber_tire-10th_anniversary", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-vip_small", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-vip_small", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-pierre", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "scooter_tire-diwali2022_premium", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-goth", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-safari", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-steampunk", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire_moped", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "bus_tire-hcr", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-motorcycle", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-old", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-safari", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-simple", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-steampunk", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-tractor", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-trophy_epic", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_default", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-bandbus_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-chicken_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-goth", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-nightcrawler_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-ramen_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-vip_small", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-safari", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-steampunk", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-safari_epic", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "hill_climber_mk2_tire-saltmaker_premium", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_default", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-goth", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-ninja", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-pro", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-vip_big", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-xmas", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire_superhero", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-lizard_epic", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-vip_tilted", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-explorer_premium", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "tire-goth", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "tire-safari", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "tire-steampunk", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-nikita_acrobat_premium", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-nikita_superhero_premium", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "dunebuggy_tire-monster", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-old", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pickup", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-safari", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-tractor", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pop_epic", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_default", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-juice_premium", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-moonbuggy", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-ninja", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pimped", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pro", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-racebuggy", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-skull_premium", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-vip_big", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-warlock_premium", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-waverider", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-xmas", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "sportscar_tire-hcr", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-motorcycle", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-old", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-safari", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-simple", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-steampunk", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-tractor", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-moonwalk_epic", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-steampunk_epic", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_default", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-bee_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-bundle", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-drifting_orange_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-flames", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-gloomvale_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-goth", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-halloween", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-oldie_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-snowflake", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-drifting_pink_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-vip_small", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "monster_tire-donut", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-steampunk_epic", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_default", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-police_premium", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-survivor", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-usa", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-vip_big", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-xmas", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "upsidedown_tire-berry", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_default", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-driftmas2020_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-enjin_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-halloween2021_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-space_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-vip", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire_scifi_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "pickup_tire-hcr", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-motorcycle", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-old", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-safari", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-simple", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-steampunk", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-tractor", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-adventure", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-heaven_premium", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-icegrille-premium", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-nationalday", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-pimped", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-sunkenship", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-vip_big", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire-horse", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire-marina_premium", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire-survivor_premium", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire_back-ghostrider", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire_back-vip", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "tire-goth", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "tire-safari", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "tire-steampunk", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "lowrider_tire-red_epic", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-splash_epic", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "car_tire-lowrider_luxury_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_default", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-flame_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-old-ghost_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-racer_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-retro_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-survivor_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-vip", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "monowheel_tire-hcr", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-motorcycle", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-old", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-safari", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-simple", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-steampunk", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-tractor", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_default", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-china_premium", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-goth", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-halloween", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-heavy", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-nautilus_premium", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-vip_small", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-voltage_premium", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "beast_chimera_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_default", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_sarcophagus_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_spaceship_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_tire-driftmas2023_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_tire-old_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_vip", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "rally_tire-hcr", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-motorcycle", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-old", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-safari", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-simple", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-tractor", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-luxury_epic", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_default", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_itasha_tire-premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-abstract_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-bomber_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-china", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-driftmas2021_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-frank", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-goth", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-green", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-halloween", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-heavy", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-milk_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-nikita", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-samurai_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-vip_big", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire_lava_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire_scifi", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire_workshop", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "formula_tire-goth", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-hcr", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-motorcycle", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-old", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-safari", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-simple", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-steampunk", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-tractor", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_default", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-bundle", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-cny", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-survivor_premium", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-villain_premium", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-vip_small", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "musclecar_tire-hcr", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-motorcycle", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-old", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-safari", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-simple", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-tractor", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_default", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-camo_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-derby_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-goth", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-halloween_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-lucky_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-skully_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-tiger_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-marshal_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-vip", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "racing_truck_tire-hcr", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-monster", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-old", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-tractor", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-amusement_park_premium", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-cny2021_premium", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-cowboy", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-diwali-2024_premium", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-shiny", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-vip", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire_halloween", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "hotrod_tire-goth", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-hcr", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-motorcycle", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-simple", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-steampunk", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-king", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_default", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-cny2022_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-docshocks_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-heavymetal_mythic", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-mecha_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-mummy_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-new_survivor", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-nikita_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-survivor", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire_illusion_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire_vip", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "electric_car_default", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-atom_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-bomberman_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-caustic_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-cookie_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-robot_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-scifi_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-unicorn_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-vip", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "lambo_tire-goth", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-hcr", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-motorcycle", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-simple", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-steampunk", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-king", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_default", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-cny2020", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-knight_premium", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-kobra_premium", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-nikita", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-vip_small", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-xmas2018", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "moonlander_default", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_lights", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_simple", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tractor", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-lunar_premium", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-moonrabbit_premium", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-nautilus_premium", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-vip", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "rockbouncer_tire-common", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-rare", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-grunge-red_epic", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-grunge_epic", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_default", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-blue17_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-christmas24_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-cny2024_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-green_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-purple12_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-rough_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-strawberry_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-vip_big", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "raider_tire-dark_common", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-decorative_common", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-star_common", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-geometric_pink_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-geometric_red_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-geometric_yellow_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-orange_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-hex_epic", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-mech_green_epic", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-mech_white_epic", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-cheese_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-cny2025_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-default", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-fish_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-gold_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-hazardeer_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-spirit_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-vip_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "glider_tire-common", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-bent_blue_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-bent_burgundy_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-bent_mint_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-colorful_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-star_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-wooden_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-rebel_epic", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-requisitioned_epic", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_default", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-christmas25_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-cyber_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-magic-premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-rustbucket_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-vip", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-wasp_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "trusty_default", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_default2", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-phantom_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-pinata2025_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-vip", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_wheel-inferno_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-dirt_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "atv_tire-road_common", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-camo_epic", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-circuit_epic", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_default", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-futuristic_premium", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-greek_premium", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-halloween25_mythic", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-shark_premium", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-VIP", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "super_offroad_tire-cny26_premium", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-roller", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-roller_rusty", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-gear", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-gear_grimy", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_default", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-tactical_blue_premium", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-tactical_green_premium", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-vip", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "stock_default", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-circuit-green_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-circuit-orange_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-wave_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-abstract_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-6-7-premium", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-vip", "vehicleId": "stock" } ], "tuningParts": [ { "id": "jeep_magnet", "amount": 1 }, { "id": "jeep_heavyweight", "amount": 1 }, { "id": "jeep_glide", "amount": 1 }, { "id": "jeep_rollcage", "amount": 1 }, { "id": "jeep_air_control", "amount": 1 }, { "id": "jeep_winter_tyres", "amount": 1 }, { "id": "jeep_start_boost", "amount": 1 }, { "id": "jeep_wheelie_boost", "amount": 1 }, { "id": "jeep_fume_boost", "amount": 1 }, { "id": "jeep_flip_speed_boost", "amount": 1 }, { "id": "jeep_jump", "amount": 1 }, { "id": "jeep_perfect_landing_boost", "amount": 1 }, { "id": "jeep_turbo_boost", "amount": 1 }, { "id": "jeep_afterburner", "amount": 1 }, { "id": "jeep_spoiler", "amount": 1 }, { "id": "jeep_thrusters", "amount": 1 }, { "id": "jeep_fuel_boost", "amount": 1 }, { "id": "jeep_coin_boost", "amount": 1 }, { "id": "jeep_nitro", "amount": 1 }, { "id": "jeep_amplifier", "amount": 1 }, { "id": "jeep_echo", "amount": 1 }, { "id": "scooter_magnet", "amount": 1 }, { "id": "scooter_heavyweight", "amount": 1 }, { "id": "scooter_glide", "amount": 1 }, { "id": "scooter_rollcage", "amount": 1 }, { "id": "scooter_air_control", "amount": 1 }, { "id": "scooter_winter_tyres", "amount": 1 }, { "id": "scooter_start_boost", "amount": 1 }, { "id": "scooter_wheelie_boost", "amount": 1 }, { "id": "scooter_fume_boost", "amount": 1 }, { "id": "scooter_flip_speed_boost", "amount": 1 }, { "id": "scooter_jump", "amount": 1 }, { "id": "scooter_perfect_landing_boost", "amount": 1 }, { "id": "scooter_turbo_boost", "amount": 1 }, { "id": "scooter_afterburner", "amount": 1 }, { "id": "scooter_spoiler", "amount": 1 }, { "id": "scooter_thrusters", "amount": 1 }, { "id": "scooter_fuel_boost", "amount": 1 }, { "id": "scooter_coin_boost", "amount": 1 }, { "id": "scooter_nitro", "amount": 1 }, { "id": "scooter_amplifier", "amount": 1 }, { "id": "scooter_echo", "amount": 1 }, { "id": "bus_magnet", "amount": 1 }, { "id": "bus_glide", "amount": 1 }, { "id": "bus_air_control", "amount": 1 }, { "id": "bus_start_boost", "amount": 1 }, { "id": "bus_wheelie_boost", "amount": 1 }, { "id": "bus_fume_boost", "amount": 1 }, { "id": "bus_flip_speed_boost", "amount": 1 }, { "id": "bus_jump", "amount": 1 }, { "id": "bus_perfect_landing_boost", "amount": 1 }, { "id": "bus_turbo_boost", "amount": 1 }, { "id": "bus_afterburner", "amount": 1 }, { "id": "bus_thrusters", "amount": 1 }, { "id": "bus_fuel_boost", "amount": 1 }, { "id": "bus_coin_boost", "amount": 1 }, { "id": "bus_nitro", "amount": 1 }, { "id": "bus_amplifier", "amount": 1 }, { "id": "bus_echo", "amount": 1 }, { "id": "superjeep_magnet", "amount": 1 }, { "id": "superjeep_heavyweight", "amount": 1 }, { "id": "superjeep_glide", "amount": 1 }, { "id": "superjeep_air_control", "amount": 1 }, { "id": "superjeep_winter_tyres", "amount": 1 }, { "id": "superjeep_start_boost", "amount": 1 }, { "id": "superjeep_wheelie_boost", "amount": 1 }, { "id": "superjeep_fume_boost", "amount": 1 }, { "id": "superjeep_flip_speed_boost", "amount": 1 }, { "id": "superjeep_jump", "amount": 1 }, { "id": "superjeep_perfect_landing_boost", "amount": 1 }, { "id": "superjeep_turbo_boost", "amount": 1 }, { "id": "superjeep_afterburner", "amount": 1 }, { "id": "superjeep_spoiler", "amount": 1 }, { "id": "superjeep_thrusters", "amount": 1 }, { "id": "superjeep_fuel_boost", "amount": 1 }, { "id": "superjeep_coin_boost", "amount": 1 }, { "id": "superjeep_nitro", "amount": 1 }, { "id": "superjeep_amplifier", "amount": 1 }, { "id": "superjeep_echo", "amount": 1 }, { "id": "tractor_rollcage", "amount": 1 }, { "id": "tractor_magnet", "amount": 1 }, { "id": "tractor_glide", "amount": 1 }, { "id": "tractor_winter_tyres", "amount": 1 }, { "id": "tractor_start_boost", "amount": 1 }, { "id": "tractor_wheelie_boost", "amount": 1 }, { "id": "tractor_fume_boost", "amount": 1 }, { "id": "tractor_flip_speed_boost", "amount": 1 }, { "id": "tractor_jump", "amount": 1 }, { "id": "tractor_perfect_landing_boost", "amount": 1 }, { "id": "tractor_turbo_boost", "amount": 1 }, { "id": "tractor_afterburner", "amount": 1 }, { "id": "tractor_spoiler", "amount": 1 }, { "id": "tractor_fuel_boost", "amount": 1 }, { "id": "tractor_coin_boost", "amount": 1 }, { "id": "tractor_nitro", "amount": 1 }, { "id": "tractor_amplifier", "amount": 1 }, { "id": "tractor_echo", "amount": 1 }, { "id": "motocross_magnet", "amount": 1 }, { "id": "motocross_heavyweight", "amount": 1 }, { "id": "motocross_glide", "amount": 1 }, { "id": "motocross_rollcage", "amount": 1 }, { "id": "motocross_air_control", "amount": 1 }, { "id": "motocross_winter_tyres", "amount": 1 }, { "id": "motocross_start_boost", "amount": 1 }, { "id": "motocross_wheelie_boost", "amount": 1 }, { "id": "motocross_fume_boost", "amount": 1 }, { "id": "motocross_flip_speed_boost", "amount": 1 }, { "id": "motocross_jump", "amount": 1 }, { "id": "motocross_perfect_landing_boost", "amount": 1 }, { "id": "motocross_turbo_boost", "amount": 1 }, { "id": "motocross_afterburner", "amount": 1 }, { "id": "motocross_thrusters", "amount": 1 }, { "id": "motocross_fuel_boost", "amount": 1 }, { "id": "motocross_coin_boost", "amount": 1 }, { "id": "motocross_nitro", "amount": 1 }, { "id": "motocross_amplifier", "amount": 1 }, { "id": "motocross_echo", "amount": 1 }, { "id": "dunebuggy_magnet", "amount": 1 }, { "id": "dunebuggy_heavyweight", "amount": 1 }, { "id": "dunebuggy_glide", "amount": 1 }, { "id": "dunebuggy_air_control", "amount": 1 }, { "id": "dunebuggy_winter_tyres", "amount": 1 }, { "id": "dunebuggy_start_boost", "amount": 1 }, { "id": "dunebuggy_wheelie_boost", "amount": 1 }, { "id": "dunebuggy_fume_boost", "amount": 1 }, { "id": "dunebuggy_flip_speed_boost", "amount": 1 }, { "id": "dunebuggy_jump", "amount": 1 }, { "id": "dunebuggy_perfect_landing_boost", "amount": 1 }, { "id": "dunebuggy_turbo_boost", "amount": 1 }, { "id": "dunebuggy_afterburner", "amount": 1 }, { "id": "dunebuggy_spoiler", "amount": 1 }, { "id": "dunebuggy_thrusters", "amount": 1 }, { "id": "dunebuggy_fuel_boost", "amount": 1 }, { "id": "dunebuggy_coin_boost", "amount": 1 }, { "id": "dunebuggy_nitro", "amount": 1 }, { "id": "dunebuggy_amplifier", "amount": 1 }, { "id": "dunebuggy_echo", "amount": 1 }, { "id": "sportscar_magnet", "amount": 1 }, { "id": "sportscar_heavyweight", "amount": 1 }, { "id": "sportscar_glide", "amount": 1 }, { "id": "sportscar_rollcage", "amount": 1 }, { "id": "sportscar_winter_tyres", "amount": 1 }, { "id": "sportscar_start_boost", "amount": 1 }, { "id": "sportscar_wheelie_boost", "amount": 1 }, { "id": "sportscar_fume_boost", "amount": 1 }, { "id": "sportscar_flip_speed_boost", "amount": 1 }, { "id": "sportscar_jump", "amount": 1 }, { "id": "sportscar_perfect_landing_boost", "amount": 1 }, { "id": "sportscar_turbo_boost", "amount": 1 }, { "id": "sportscar_afterburner", "amount": 1 }, { "id": "sportscar_thrusters", "amount": 1 }, { "id": "sportscar_fuel_boost", "amount": 1 }, { "id": "sportscar_coin_boost", "amount": 1 }, { "id": "sportscar_nitro", "amount": 1 }, { "id": "sportscar_amplifier", "amount": 1 }, { "id": "sportscar_echo", "amount": 1 }, { "id": "monster_magnet", "amount": 1 }, { "id": "monster_heavyweight", "amount": 1 }, { "id": "monster_glide", "amount": 1 }, { "id": "monster_rollcage", "amount": 1 }, { "id": "monster_air_control", "amount": 1 }, { "id": "monster_winter_tyres", "amount": 1 }, { "id": "monster_start_boost", "amount": 1 }, { "id": "monster_wheelie_boost", "amount": 1 }, { "id": "monster_fume_boost", "amount": 1 }, { "id": "monster_flip_speed_boost", "amount": 1 }, { "id": "monster_jump", "amount": 1 }, { "id": "monster_perfect_landing_boost", "amount": 1 }, { "id": "monster_turbo_boost", "amount": 1 }, { "id": "monster_afterburner", "amount": 1 }, { "id": "monster_spoiler", "amount": 1 }, { "id": "monster_thrusters", "amount": 1 }, { "id": "monster_fuel_boost", "amount": 1 }, { "id": "monster_coin_boost", "amount": 1 }, { "id": "monster_nitro", "amount": 1 }, { "id": "monster_amplifier", "amount": 1 }, { "id": "monster_echo", "amount": 1 }, { "id": "upsidedown_magnet", "amount": 1 }, { "id": "upsidedown_glide", "amount": 1 }, { "id": "upsidedown_air_control", "amount": 1 }, { "id": "upsidedown_start_boost", "amount": 1 }, { "id": "upsidedown_wheelie_boost", "amount": 1 }, { "id": "upsidedown_fume_boost", "amount": 1 }, { "id": "upsidedown_flip_speed_boost", "amount": 1 }, { "id": "upsidedown_winter_tyres", "amount": 1 }, { "id": "upsidedown_perfect_landing_boost", "amount": 1 }, { "id": "upsidedown_turbo_boost", "amount": 1 }, { "id": "upsidedown_afterburner", "amount": 1 }, { "id": "upsidedown_thrusters", "amount": 1 }, { "id": "upsidedown_fuel_boost", "amount": 1 }, { "id": "upsidedown_coin_boost", "amount": 1 }, { "id": "upsidedown_nitro", "amount": 1 }, { "id": "upsidedown_amplifier", "amount": 1 }, { "id": "upsidedown_echo", "amount": 1 }, { "id": "pickup_truck_magnet", "amount": 1 }, { "id": "pickup_truck_heavyweight", "amount": 1 }, { "id": "pickup_truck_glide", "amount": 1 }, { "id": "pickup_truck_air_control", "amount": 1 }, { "id": "pickup_truck_winter_tyres", "amount": 1 }, { "id": "pickup_truck_start_boost", "amount": 1 }, { "id": "pickup_truck_wheelie_boost", "amount": 1 }, { "id": "pickup_truck_fume_boost", "amount": 1 }, { "id": "pickup_truck_flip_speed_boost", "amount": 1 }, { "id": "pickup_truck_jump", "amount": 1 }, { "id": "pickup_truck_perfect_landing_boost", "amount": 1 }, { "id": "pickup_truck_turbo_boost", "amount": 1 }, { "id": "pickup_truck_afterburner", "amount": 1 }, { "id": "pickup_truck_spoiler", "amount": 1 }, { "id": "pickup_truck_thrusters", "amount": 1 }, { "id": "pickup_truck_fuel_boost", "amount": 1 }, { "id": "pickup_truck_coin_boost", "amount": 1 }, { "id": "pickup_truck_nitro", "amount": 1 }, { "id": "pickup_truck_amplifier", "amount": 1 }, { "id": "pickup_truck_echo", "amount": 1 }, { "id": "chopper_rollcage", "amount": 1 }, { "id": "chopper_magnet", "amount": 1 }, { "id": "chopper_glide", "amount": 1 }, { "id": "chopper_air_control", "amount": 1 }, { "id": "chopper_winter_tyres", "amount": 1 }, { "id": "chopper_start_boost", "amount": 1 }, { "id": "chopper_wheelie_boost", "amount": 1 }, { "id": "chopper_fume_boost", "amount": 1 }, { "id": "chopper_flip_speed_boost", "amount": 1 }, { "id": "chopper_perfect_landing_boost", "amount": 1 }, { "id": "chopper_turbo_boost", "amount": 1 }, { "id": "chopper_afterburner", "amount": 1 }, { "id": "chopper_thrusters", "amount": 1 }, { "id": "chopper_fuel_boost", "amount": 1 }, { "id": "chopper_coin_boost", "amount": 1 }, { "id": "chopper_nitro", "amount": 1 }, { "id": "chopper_amplifier", "amount": 1 }, { "id": "chopper_echo", "amount": 1 }, { "id": "minitank_magnet", "amount": 1 }, { "id": "minitank_heavyweight", "amount": 1 }, { "id": "minitank_glide", "amount": 1 }, { "id": "minitank_rollcage", "amount": 1 }, { "id": "minitank_air_control", "amount": 1 }, { "id": "minitank_start_boost", "amount": 1 }, { "id": "minitank_wheelie_boost", "amount": 1 }, { "id": "minitank_fume_boost", "amount": 1 }, { "id": "minitank_flip_speed_boost", "amount": 1 }, { "id": "minitank_jump", "amount": 1 }, { "id": "minitank_perfect_landing_boost", "amount": 1 }, { "id": "minitank_turbo_boost", "amount": 1 }, { "id": "minitank_afterburner", "amount": 1 }, { "id": "minitank_thrusters", "amount": 1 }, { "id": "minitank_fuel_boost", "amount": 1 }, { "id": "minitank_coin_boost", "amount": 1 }, { "id": "minitank_nitro", "amount": 1 }, { "id": "minitank_amplifier", "amount": 1 }, { "id": "minitank_echo", "amount": 1 }, { "id": "lowrider_magnet", "amount": 1 }, { "id": "lowrider_heavyweight", "amount": 1 }, { "id": "lowrider_glide", "amount": 1 }, { "id": "lowrider_rollcage", "amount": 1 }, { "id": "lowrider_air_control", "amount": 1 }, { "id": "lowrider_winter_tyres", "amount": 1 }, { "id": "lowrider_start_boost", "amount": 1 }, { "id": "lowrider_wheelie_boost", "amount": 1 }, { "id": "lowrider_fume_boost", "amount": 1 }, { "id": "lowrider_flip_speed_boost", "amount": 1 }, { "id": "lowrider_perfect_landing_boost", "amount": 1 }, { "id": "lowrider_turbo_boost", "amount": 1 }, { "id": "lowrider_afterburner", "amount": 1 }, { "id": "lowrider_thrusters", "amount": 1 }, { "id": "lowrider_fuel_boost", "amount": 1 }, { "id": "lowrider_coin_boost", "amount": 1 }, { "id": "lowrider_nitro", "amount": 1 }, { "id": "lowrider_amplifier", "amount": 1 }, { "id": "lowrider_echo", "amount": 1 }, { "id": "snowmobile_magnet", "amount": 1 }, { "id": "snowmobile_heavyweight", "amount": 1 }, { "id": "snowmobile_glide", "amount": 1 }, { "id": "snowmobile_rollcage", "amount": 1 }, { "id": "snowmobile_air_control", "amount": 1 }, { "id": "snowmobile_start_boost", "amount": 1 }, { "id": "snowmobile_wheelie_boost", "amount": 1 }, { "id": "snowmobile_fume_boost", "amount": 1 }, { "id": "snowmobile_flip_speed_boost", "amount": 1 }, { "id": "snowmobile_perfect_landing_boost", "amount": 1 }, { "id": "snowmobile_turbo_boost", "amount": 1 }, { "id": "snowmobile_afterburner", "amount": 1 }, { "id": "snowmobile_thrusters", "amount": 1 }, { "id": "snowmobile_fuel_boost", "amount": 1 }, { "id": "snowmobile_coin_boost", "amount": 1 }, { "id": "snowmobile_nitro", "amount": 1 }, { "id": "snowmobile_amplifier", "amount": 1 }, { "id": "snowmobile_echo", "amount": 1 }, { "id": "monowheel_magnet", "amount": 1 }, { "id": "monowheel_glide", "amount": 1 }, { "id": "monowheel_air_control", "amount": 1 }, { "id": "monowheel_winter_tyres", "amount": 1 }, { "id": "monowheel_start_boost", "amount": 1 }, { "id": "monowheel_wheelie_boost", "amount": 1 }, { "id": "monowheel_fume_boost", "amount": 1 }, { "id": "monowheel_flip_speed_boost", "amount": 1 }, { "id": "monowheel_jump", "amount": 1 }, { "id": "monowheel_turbo_boost", "amount": 1 }, { "id": "monowheel_afterburner", "amount": 1 }, { "id": "monowheel_spoiler", "amount": 1 }, { "id": "monowheel_thrusters", "amount": 1 }, { "id": "monowheel_fuel_boost", "amount": 1 }, { "id": "monowheel_coin_boost", "amount": 1 }, { "id": "monowheel_nitro", "amount": 1 }, { "id": "monowheel_amplifier", "amount": 1 }, { "id": "monowheel_echo", "amount": 1 }, { "id": "beast_magnet", "amount": 1 }, { "id": "beast_heavyweight", "amount": 1 }, { "id": "beast_glide", "amount": 1 }, { "id": "beast_air_control", "amount": 1 }, { "id": "beast_winter_tyres", "amount": 1 }, { "id": "beast_start_boost", "amount": 1 }, { "id": "beast_wheelie_boost", "amount": 1 }, { "id": "beast_fume_boost", "amount": 1 }, { "id": "beast_flip_speed_boost", "amount": 1 }, { "id": "beast_jump", "amount": 1 }, { "id": "beast_perfect_landing_boost", "amount": 1 }, { "id": "beast_turbo_boost", "amount": 1 }, { "id": "beast_afterburner", "amount": 1 }, { "id": "beast_spoiler", "amount": 1 }, { "id": "beast_thrusters", "amount": 1 }, { "id": "beast_fuel_boost", "amount": 1 }, { "id": "beast_coin_boost", "amount": 1 }, { "id": "beast_nitro", "amount": 1 }, { "id": "beast_amplifier", "amount": 1 }, { "id": "beast_echo", "amount": 1 }, { "id": "rally_magnet", "amount": 1 }, { "id": "rally_heavyweight", "amount": 1 }, { "id": "rally_glide", "amount": 1 }, { "id": "rally_air_control", "amount": 1 }, { "id": "rally_winter_tyres", "amount": 1 }, { "id": "rally_start_boost", "amount": 1 }, { "id": "rally_wheelie_boost", "amount": 1 }, { "id": "rally_fume_boost", "amount": 1 }, { "id": "rally_flip_speed_boost", "amount": 1 }, { "id": "rally_jump", "amount": 1 }, { "id": "rally_perfect_landing_boost", "amount": 1 }, { "id": "rally_turbo_boost", "amount": 1 }, { "id": "rally_afterburner", "amount": 1 }, { "id": "rally_spoiler", "amount": 1 }, { "id": "rally_thrusters", "amount": 1 }, { "id": "rally_fuel_boost", "amount": 1 }, { "id": "rally_coin_boost", "amount": 1 }, { "id": "rally_nitro", "amount": 1 }, { "id": "rally_amplifier", "amount": 1 }, { "id": "rally_echo", "amount": 1 }, { "id": "formula_magnet", "amount": 1 }, { "id": "formula_heavyweight", "amount": 1 }, { "id": "formula_glide", "amount": 1 }, { "id": "formula_rollcage", "amount": 1 }, { "id": "formula_air_control", "amount": 1 }, { "id": "formula_winter_tyres", "amount": 1 }, { "id": "formula_start_boost", "amount": 1 }, { "id": "formula_fume_boost", "amount": 1 }, { "id": "formula_flip_speed_boost", "amount": 1 }, { "id": "formula_jump", "amount": 1 }, { "id": "formula_wheelie_boost", "amount": 1 }, { "id": "formula_perfect_landing_boost", "amount": 1 }, { "id": "formula_turbo_boost", "amount": 1 }, { "id": "formula_afterburner", "amount": 1 }, { "id": "formula_thrusters", "amount": 1 }, { "id": "formula_fuel_boost", "amount": 1 }, { "id": "formula_coin_boost", "amount": 1 }, { "id": "formula_nitro", "amount": 1 }, { "id": "formula_amplifier", "amount": 1 }, { "id": "formula_echo", "amount": 1 }, { "id": "musclecar_magnet", "amount": 1 }, { "id": "musclecar_heavyweight", "amount": 1 }, { "id": "musclecar_glide", "amount": 1 }, { "id": "musclecar_rollcage", "amount": 1 }, { "id": "musclecar_air_control", "amount": 1 }, { "id": "musclecar_winter_tyres", "amount": 1 }, { "id": "musclecar_start_boost", "amount": 1 }, { "id": "musclecar_wheelie_boost", "amount": 1 }, { "id": "musclecar_fume_boost", "amount": 1 }, { "id": "musclecar_flip_speed_boost", "amount": 1 }, { "id": "musclecar_jump", "amount": 1 }, { "id": "musclecar_perfect_landing_boost", "amount": 1 }, { "id": "musclecar_turbo_boost", "amount": 1 }, { "id": "musclecar_afterburner", "amount": 1 }, { "id": "musclecar_spoiler", "amount": 1 }, { "id": "musclecar_thrusters", "amount": 1 }, { "id": "musclecar_fuel_boost", "amount": 1 }, { "id": "musclecar_coin_boost", "amount": 1 }, { "id": "musclecar_nitro", "amount": 1 }, { "id": "musclecar_amplifier", "amount": 1 }, { "id": "musclecar_echo", "amount": 1 }, { "id": "racing_truck_magnet", "amount": 1 }, { "id": "racing_truck_heavyweight", "amount": 1 }, { "id": "racing_truck_glide", "amount": 1 }, { "id": "racing_truck_air_control", "amount": 1 }, { "id": "racing_truck_winter_tyres", "amount": 1 }, { "id": "racing_truck_start_boost", "amount": 1 }, { "id": "racing_truck_wheelie_boost", "amount": 1 }, { "id": "racing_truck_fume_boost", "amount": 1 }, { "id": "racing_truck_flip_speed_boost", "amount": 1 }, { "id": "racing_truck_jump", "amount": 1 }, { "id": "racing_truck_perfect_landing_boost", "amount": 1 }, { "id": "racing_truck_turbo_boost", "amount": 1 }, { "id": "racing_truck_afterburner", "amount": 1 }, { "id": "racing_truck_thrusters", "amount": 1 }, { "id": "racing_truck_fuel_boost", "amount": 1 }, { "id": "racing_truck_coin_boost", "amount": 1 }, { "id": "racing_truck_nitro", "amount": 1 }, { "id": "racing_truck_amplifier", "amount": 1 }, { "id": "racing_truck_echo", "amount": 1 }, { "id": "hotrod_magnet", "amount": 1 }, { "id": "hotrod_heavyweight", "amount": 1 }, { "id": "hotrod_glide", "amount": 1 }, { "id": "hotrod_rollcage", "amount": 1 }, { "id": "hotrod_air_control", "amount": 1 }, { "id": "hotrod_winter_tyres", "amount": 1 }, { "id": "hotrod_start_boost", "amount": 1 }, { "id": "hotrod_wheelie_boost", "amount": 1 }, { "id": "hotrod_fume_boost", "amount": 1 }, { "id": "hotrod_flip_speed_boost", "amount": 1 }, { "id": "hotrod_jump", "amount": 1 }, { "id": "hotrod_perfect_landing_boost", "amount": 1 }, { "id": "hotrod_thrusters", "amount": 1 }, { "id": "hotrod_fuel_boost", "amount": 1 }, { "id": "hotrod_coin_boost", "amount": 1 }, { "id": "hotrod_nitro", "amount": 1 }, { "id": "hotrod_amplifier", "amount": 1 }, { "id": "hotrod_echo", "amount": 1 }, { "id": "electric_car_magnet", "amount": 1 }, { "id": "electric_car_heavyweight", "amount": 1 }, { "id": "electric_car_glide", "amount": 1 }, { "id": "electric_car_rollcage", "amount": 1 }, { "id": "electric_car_air_control", "amount": 1 }, { "id": "electric_car_winter_tyres", "amount": 1 }, { "id": "electric_car_start_boost", "amount": 1 }, { "id": "electric_car_wheelie_boost", "amount": 1 }, { "id": "electric_car_fume_boost", "amount": 1 }, { "id": "electric_car_flip_speed_boost", "amount": 1 }, { "id": "electric_car_jump", "amount": 1 }, { "id": "electric_car_perfect_landing_boost", "amount": 1 }, { "id": "electric_car_spoiler", "amount": 1 }, { "id": "electric_car_thrusters", "amount": 1 }, { "id": "electric_car_coin_boost", "amount": 1 }, { "id": "electric_car_nitro", "amount": 1 }, { "id": "electric_car_amplifier", "amount": 1 }, { "id": "electric_car_echo", "amount": 1 }, { "id": "superbike_magnet", "amount": 1 }, { "id": "superbike_glide", "amount": 1 }, { "id": "superbike_air_control", "amount": 1 }, { "id": "superbike_rollcage", "amount": 1 }, { "id": "superbike_winter_tyres", "amount": 1 }, { "id": "superbike_start_boost", "amount": 1 }, { "id": "superbike_wheelie_boost", "amount": 1 }, { "id": "superbike_fume_boost", "amount": 1 }, { "id": "superbike_flip_speed_boost", "amount": 1 }, { "id": "superbike_perfect_landing_boost", "amount": 1 }, { "id": "superbike_turbo_boost", "amount": 1 }, { "id": "superbike_afterburner", "amount": 1 }, { "id": "superbike_thrusters", "amount": 1 }, { "id": "superbike_fuel_boost", "amount": 1 }, { "id": "superbike_coin_boost", "amount": 1 }, { "id": "superbike_nitro", "amount": 1 }, { "id": "superbike_amplifier", "amount": 1 }, { "id": "superbike_echo", "amount": 1 }, { "id": "lambo_magnet", "amount": 1 }, { "id": "lambo_heavyweight", "amount": 1 }, { "id": "lambo_glide", "amount": 1 }, { "id": "lambo_rollcage", "amount": 1 }, { "id": "lambo_air_control", "amount": 1 }, { "id": "lambo_winter_tyres", "amount": 1 }, { "id": "lambo_start_boost", "amount": 1 }, { "id": "lambo_wheelie_boost", "amount": 1 }, { "id": "lambo_fume_boost", "amount": 1 }, { "id": "lambo_flip_speed_boost", "amount": 1 }, { "id": "lambo_jump", "amount": 1 }, { "id": "lambo_perfect_landing_boost", "amount": 1 }, { "id": "lambo_turbo_boost", "amount": 1 }, { "id": "lambo_afterburner", "amount": 1 }, { "id": "lambo_thrusters", "amount": 1 }, { "id": "lambo_fuel_boost", "amount": 1 }, { "id": "lambo_coin_boost", "amount": 1 }, { "id": "lambo_nitro", "amount": 1 }, { "id": "lambo_amplifier", "amount": 1 }, { "id": "lambo_echo", "amount": 1 }, { "id": "moonlander_magnet", "amount": 1 }, { "id": "moonlander_air_control", "amount": 1 }, { "id": "moonlander_start_boost", "amount": 1 }, { "id": "moonlander_wheelie_boost", "amount": 1 }, { "id": "moonlander_fume_boost", "amount": 1 }, { "id": "moonlander_flip_speed_boost", "amount": 1 }, { "id": "moonlander_perfect_landing_boost", "amount": 1 }, { "id": "moonlander_afterburner", "amount": 1 }, { "id": "moonlander_thrusters", "amount": 1 }, { "id": "moonlander_coin_boost", "amount": 1 }, { "id": "moonlander_amplifier", "amount": 1 }, { "id": "moonlander_echo", "amount": 1 }, { "id": "rockbouncer_magnet", "amount": 1 }, { "id": "rockbouncer_heavyweight", "amount": 1 }, { "id": "rockbouncer_glide", "amount": 1 }, { "id": "rockbouncer_air_control", "amount": 1 }, { "id": "rockbouncer_start_boost", "amount": 1 }, { "id": "rockbouncer_wheelie_boost", "amount": 1 }, { "id": "rockbouncer_fume_boost", "amount": 1 }, { "id": "rockbouncer_flip_speed_boost", "amount": 1 }, { "id": "rockbouncer_jump", "amount": 1 }, { "id": "rockbouncer_perfect_landing_boost", "amount": 1 }, { "id": "rockbouncer_turbo_boost", "amount": 1 }, { "id": "rockbouncer_afterburner", "amount": 1 }, { "id": "rockbouncer_spoiler", "amount": 1 }, { "id": "rockbouncer_thrusters", "amount": 1 }, { "id": "rockbouncer_fuel_boost", "amount": 1 }, { "id": "rockbouncer_coin_boost", "amount": 1 }, { "id": "rockbouncer_nitro", "amount": 1 }, { "id": "rockbouncer_amplifier", "amount": 1 }, { "id": "rockbouncer_echo", "amount": 1 }, { "id": "hoverbike_magnet", "amount": 1 }, { "id": "hoverbike_air_control", "amount": 1 }, { "id": "hoverbike_rollcage", "amount": 1 }, { "id": "hoverbike_start_boost", "amount": 1 }, { "id": "hoverbike_wheelie_boost", "amount": 1 }, { "id": "hoverbike_fume_boost", "amount": 1 }, { "id": "hoverbike_flip_speed_boost", "amount": 1 }, { "id": "hoverbike_turbo_boost", "amount": 1 }, { "id": "hoverbike_afterburner", "amount": 1 }, { "id": "hoverbike_fuel_boost", "amount": 1 }, { "id": "hoverbike_coin_boost", "amount": 1 }, { "id": "hoverbike_nitro", "amount": 1 }, { "id": "hoverbike_amplifier", "amount": 1 }, { "id": "hoverbike_echo", "amount": 1 }, { "id": "raider_magnet", "amount": 1 }, { "id": "raider_heavyweight", "amount": 1 }, { "id": "raider_glide", "amount": 1 }, { "id": "raider_air_control", "amount": 1 }, { "id": "raider_winter_tyres", "amount": 1 }, { "id": "raider_start_boost", "amount": 1 }, { "id": "raider_wheelie_boost", "amount": 1 }, { "id": "raider_fume_boost", "amount": 1 }, { "id": "raider_flip_speed_boost", "amount": 1 }, { "id": "raider_jump", "amount": 1 }, { "id": "raider_perfect_landing_boost", "amount": 1 }, { "id": "raider_turbo_boost", "amount": 1 }, { "id": "raider_afterburner", "amount": 1 }, { "id": "raider_spoiler", "amount": 1 }, { "id": "raider_thrusters", "amount": 1 }, { "id": "raider_fuel_boost", "amount": 1 }, { "id": "raider_coin_boost", "amount": 1 }, { "id": "raider_nitro", "amount": 1 }, { "id": "raider_amplifier", "amount": 1 }, { "id": "raider_echo", "amount": 1 }, { "id": "glider_magnet", "amount": 1 }, { "id": "glider_heavyweight", "amount": 1 }, { "id": "glider_winter_tyres", "amount": 1 }, { "id": "glider_start_boost", "amount": 1 }, { "id": "glider_wheelie_boost", "amount": 1 }, { "id": "gliderfume_boost", "amount": 1 }, { "id": "glider_jump", "amount": 1 }, { "id": "glider_perfect_landing_boost", "amount": 1 }, { "id": "glider_turbo_boost", "amount": 1 }, { "id": "glider_afterburner", "amount": 1 }, { "id": "glider_thrusters", "amount": 1 }, { "id": "glider_fuel_boost", "amount": 1 }, { "id": "glider_coin_boost", "amount": 1 }, { "id": "glider_nitro", "amount": 1 }, { "id": "glider_amplifier", "amount": 1 }, { "id": "glider_echo", "amount": 1 }, { "id": "trusty_magnet", "amount": 1 }, { "id": "trusty_heavyweight", "amount": 1 }, { "id": "trusty_glide", "amount": 1 }, { "id": "trusty_spoiler", "amount": 1 }, { "id": "trusty_air_control", "amount": 1 }, { "id": "trusty_winter_tyres", "amount": 1 }, { "id": "trusty_start_boost", "amount": 1 }, { "id": "trusty_wheelie_boost", "amount": 1 }, { "id": "trusty_fume_boost", "amount": 1 }, { "id": "trusty_flip_speed_boost", "amount": 1 }, { "id": "trusty_jump", "amount": 1 }, { "id": "trusty_perfect_landing_boost", "amount": 1 }, { "id": "trusty_turbo_boost", "amount": 1 }, { "id": "trusty_afterburner", "amount": 1 }, { "id": "trusty_thrusters", "amount": 1 }, { "id": "trusty_fuel_boost", "amount": 1 }, { "id": "trusty_coin_boost", "amount": 1 }, { "id": "trusty_nitro", "amount": 1 }, { "id": "trusty_amplifier", "amount": 1 }, { "id": "trusty_echo", "amount": 1 }, { "id": "atv_magnet", "amount": 1 }, { "id": "atv_heavyweight", "amount": 1 }, { "id": "atv_glide", "amount": 1 }, { "id": "atv_rollcage", "amount": 1 }, { "id": "atv_air_control", "amount": 1 }, { "id": "atv_winter_tyres", "amount": 1 }, { "id": "atv_start_boost", "amount": 1 }, { "id": "atv_wheelie_boost", "amount": 1 }, { "id": "atv_fume_boost", "amount": 1 }, { "id": "atv_flip_speed_boost", "amount": 1 }, { "id": "atv_jump", "amount": 1 }, { "id": "atv_perfect_landing_boost", "amount": 1 }, { "id": "atv_turbo_boost", "amount": 1 }, { "id": "atv_afterburner", "amount": 1 }, { "id": "atv_spoiler", "amount": 1 }, { "id": "atv_thrusters", "amount": 1 }, { "id": "atv_fuel_boost", "amount": 1 }, { "id": "atv_coin_boost", "amount": 1 }, { "id": "atv_nitro", "amount": 1 }, { "id": "atv_amplifier", "amount": 1 }, { "id": "atv_echo", "amount": 1 }, { "id": "super_offroad_magnet", "amount": 1 }, { "id": "super_offroad_heavyweight", "amount": 1 }, { "id": "super_offroad_glide", "amount": 1 }, { "id": "super_offroad_air_control", "amount": 1 }, { "id": "super_offroad_start_boost", "amount": 1 }, { "id": "super_offroad_wheelie_boost", "amount": 1 }, { "id": "super_offroad_fume_boost", "amount": 1 }, { "id": "super_offroad_flip_speed_boost", "amount": 1 }, { "id": "super_offroad_jump", "amount": 1 }, { "id": "super_offroad_perfect_landing_boost", "amount": 1 }, { "id": "super_offroad_turbo_boost", "amount": 1 }, { "id": "super_offroad_afterburner", "amount": 1 }, { "id": "super_offroad_thrusters", "amount": 1 }, { "id": "super_offroad_fuel_boost", "amount": 1 }, { "id": "super_offroad_coin_boost", "amount": 1 }, { "id": "super_offroad_nitro", "amount": 1 }, { "id": "super_offroad_amplifier", "amount": 1 }, { "id": "super_offroad_echo", "amount": 1 }, { "id": "stock_magnet", "amount": 1 }, { "id": "stock_heavyweight", "amount": 1 }, { "id": "stock_glide", "amount": 1 }, { "id": "stock_air_control", "amount": 1 }, { "id": "stock_winter_tyres", "amount": 1 }, { "id": "stock_start_boost", "amount": 1 }, { "id": "stock_wheelie_boost", "amount": 1 }, { "id": "stock_fume_boost", "amount": 1 }, { "id": "stock_flip_speed_boost", "amount": 1 }, { "id": "stock_jump", "amount": 1 }, { "id": "stock_perfect_landing_boost", "amount": 1 }, { "id": "stock_turbo_boost", "amount": 1 }, { "id": "stock_afterburner", "amount": 1 }, { "id": "stock_thrusters", "amount": 1 }, { "id": "stock_fuel_boost", "amount": 1 }, { "id": "stock_coin_boost", "amount": 1 }, { "id": "stock_nitro", "amount": 1 }, { "id": "stock_amplifier", "amount": 1 }, { "id": "stock_echo", "amount": 1 } ], "unlockAdventureMaps": [ "nationalpark", "forest", "city", "mountain_01", "underwater", "winter_01", "mines", "route66", "beach", "trailerpark", "glacier", "workshop", "moonabase", "savanna", "darkforest", "amusement_distance", "arena_distance", "cuptown_distance", "moonbase", "forest_trials", "hard_city", "hard_winter", "hard_arena" ], "unlockEditorThemes": [ "forest", "city", "mountain", "underwater", "winter", "mine", "desert", "beach", "bayou", "glacier", "workshop", "moon", "savanna", "darkforest", "amusementpark", "arena", "cuptown", "nationalpark" ], "unlockHomeBackgrounds": [ "rustic_rafter", "rustic_wall", "rustic_floor", "garageband_rafter", "garageband_wall", "garageband_floor", "arcade_rafter", "arcade_wall", "arcade_floor", "bomber_rafter", "bomber_wall", "bomber_floor" ], "unlockHomeProps": [ { "id": "arcade_air_hockey", "amount": 100 }, { "id": "arcade_cabinet_boxing", "amount": 100 }, { "id": "arcade_cabinet_cute", "amount": 100 }, { "id": "arcade_cabinet_fighting", "amount": 100 }, { "id": "arcade_cabinet_rare", "amount": 100 }, { "id": "arcade_ceiling_lamp", "amount": 100 }, { "id": "arcade_dancing_game", "amount": 100 }, { "id": "arcade_framed_poster", "amount": 100 }, { "id": "arcade_lightgun", "amount": 100 }, { "id": "arcade_neon_sign", "amount": 100 }, { "id": "arcade_pinball", "amount": 100 }, { "id": "arcade_table_soccer", "amount": 100 }, { "id": "arcade_trash_can", "amount": 100 }, { "id": "arcade_vroom_poster", "amount": 100 }, { "id": "arcade_wall_exitsign", "amount": 100 }, { "id": "arcade_whack-a-mole", "amount": 100 }, { "id": "garageband_bass_electric", "amount": 100 }, { "id": "garageband_cars_poster", "amount": 100 }, { "id": "garageband_drumset", "amount": 100 }, { "id": "garageband_effects_pedal", "amount": 100 }, { "id": "garageband_guitar", "amount": 100 }, { "id": "garageband_guitar_acoustic", "amount": 100 }, { "id": "garageband_guitar_electric", "amount": 100 }, { "id": "garageband_headphones", "amount": 100 }, { "id": "garageband_neon_sign", "amount": 100 }, { "id": "garageband_record_player", "amount": 100 }, { "id": "garageband_sampler", "amount": 100 }, { "id": "garageband_shoe_poster", "amount": 100 }, { "id": "garageband_small_amp", "amount": 100 }, { "id": "garageband_sofa", "amount": 100 }, { "id": "garageband_speaker", "amount": 100 }, { "id": "garageband_stage_microphone", "amount": 100 }, { "id": "garageband_stool", "amount": 100 }, { "id": "garageband_synthesizer", "amount": 100 }, { "id": "garageband_thumb_piano", "amount": 100 }, { "id": "garageband_turntable", "amount": 100 }, { "id": "garageband_vinyl", "amount": 100 }, { "id": "garageband_vinyl_display", "amount": 100 }, { "id": "garageband_wall_light", "amount": 100 }, { "id": "garageband_wall_signs", "amount": 100 }, { "id": "rustic_antique_clock", "amount": 100 }, { "id": "rustic_coffee_machine", "amount": 100 }, { "id": "rustic_dart_board", "amount": 100 }, { "id": "rustic_espresso_machine", "amount": 100 }, { "id": "rustic_firewood", "amount": 100 }, { "id": "rustic_fish_trophy", "amount": 100 }, { "id": "rustic_foot_chair", "amount": 100 }, { "id": "rustic_framed_landscape_photo", "amount": 100 }, { "id": "rustic_framed_surrealist_art", "amount": 100 }, { "id": "rustic_glass_planter", "amount": 100 }, { "id": "rustic_lantern", "amount": 100 }, { "id": "rustic_motivational_sign", "amount": 100 }, { "id": "rustic_roof_light", "amount": 100 }, { "id": "rustic_roof_light_plants", "amount": 100 }, { "id": "rustic_roof_planter", "amount": 100 }, { "id": "rustic_rocking_chair", "amount": 100 }, { "id": "rustic_sandwich", "amount": 100 }, { "id": "rustic_simple_fridge", "amount": 100 }, { "id": "rustic_simple_wall_rack", "amount": 100 }, { "id": "rustic_sunflower_basket", "amount": 100 }, { "id": "rustic_wall_axe", "amount": 100 }, { "id": "rustic_wall_lantern", "amount": 100 }, { "id": "rustic_wooden_dresser", "amount": 100 }, { "id": "rustic_wooden_radio", "amount": 100 }, { "id": "stock_air_conditioner", "amount": 100 }, { "id": "stock_cardboard_box", "amount": 100 }, { "id": "stock_car_calendar", "amount": 100 }, { "id": "stock_ceiling_fan", "amount": 100 }, { "id": "stock_ceiling_monitor", "amount": 100 }, { "id": "stock_clock", "amount": 100 }, { "id": "stock_cooler", "amount": 100 }, { "id": "stock_cork_board", "amount": 100 }, { "id": "stock_dartboard", "amount": 100 }, { "id": "stock_fluorescent_light", "amount": 100 }, { "id": "stock_framed_car_poster", "amount": 100 }, { "id": "stock_gas_canister", "amount": 100 }, { "id": "stock_jukebox", "amount": 100 }, { "id": "stock_key_holder", "amount": 100 }, { "id": "stock_metal_closet", "amount": 100 }, { "id": "stock_neon_sign", "amount": 100 }, { "id": "stock_oil_barrel", "amount": 100 }, { "id": "stock_old_car_radio", "amount": 100 }, { "id": "stock_paint_cans", "amount": 100 }, { "id": "stock_peg_board", "amount": 100 }, { "id": "stock_plastic_canister", "amount": 100 }, { "id": "stock_potted_cactus", "amount": 100 }, { "id": "stock_swivel_stool", "amount": 100 }, { "id": "stock_tire_stack", "amount": 100 }, { "id": "stock_tool_box", "amount": 100 }, { "id": "stock_tool_cart", "amount": 100 }, { "id": "stock_traffic_light", "amount": 100 }, { "id": "stock_trash_bin", "amount": 100 }, { "id": "stock_wall_mounted_phone", "amount": 100 }, { "id": "stock_wall_mounted_radiator", "amount": 100 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_UV", "unlockVehicleLevel": 20, "unlockVehicles": [ "scooter", "jeep", "bus", "superjeep", "tractor", "motocross", "dunebuggy", "sportscar", "monster", "upsidedown", "pickup_truck", "chopper", "minitank", "lowrider", "snowmobile", "monowheel", "beast", "rally", "formula", "musclecar", "racing_truck", "hotrod", "electric_car", "superbike", "lambo", "moonlander", "rockbouncer", "hoverbike", "raider", "glider", "trusty", "atv", "super_offroad", "stock" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_skins", "unlockDriverAssets": [ "10th_anniversary_bill_premium", "abstract_character", "alien", "alice", "america", "arena", "atv", "bandaged_premium", "beach", "beast", "betatestdummy", "biker", "bikergirl", "billybob", "bling", "bobsledder", "bomber-aqua_premium", "bomber-black_premium", "bomber-blue_premium", "bomber-green_premium", "bomber-pink_premium", "bomber-red_premium", "bomber-white_premium", "bomber-yellow_premium", "bunny", "bunnygirl", "bus", "busdriver", "bwbog", "calaveragirl", "calaveraman", "candy", "canyoneer", "carrie", "cat", "caveman", "cc-ev", "china", "chinahanfu_premium", "chiron_premium", "chopper", "Christmas_2022_premium", "circus_bill_premium", "city", "clown", "cny2021ox_premium", "cny2022_premium", "cny2024_premium", "cny2025_premium", "cny_rabbit", "cowboy", "crewchief", "cuptown", "dakota", "dave", "default", "deepforest_farmer_premium", "desert", "diwali-2024", "diwali2022_premium", "dinnersuit", "discoman_premium", "docshocks_premium", "drafted", "driftmas2020_premium", "driftmas2021_premium", "driftmas2023_premium", "driftmas2024_premium", "driftmas2025_mythic", "dunebuggy", "elf", "explorer_premium", "fabulo_logjaw_premium", "fabulo_premium", "fabulo_ranger_premium", "farmer", "firefighter", "firehorsecny_premium", "fingersoft", "forest", "formula", "frank", "freya_premium", "fusell_premium", "gaspresto_premium", "geisha", "ghost_premium", "gilbert_premium", "ginger", "glacier", "glider", "gloomvale", "goth", "gretel", "grillbill", "grinch", "halloween", "halloween2024_premium", "handyman", "hansel", "hazardeer_premium", "headless", "hillclimber", "hillclimbermk2", "hipster", "honeybill_premium", "hoodie", "hotrod", "hoverbike", "icegrille_premium", "inuit", "issen_premium", "jock", "johnny_epic", "king", "kleopatra", "kmight", "knight_premium", "ladybee_premium", "Leprechaun", "lifeguardgirl", "lifeguardguy", "lowrider", "luxskully_premium", "mackie", "maiden", "marshal_premium", "mellow", "mindy_premium", "mine", "miner", "moc_premium", "monowheel", "montana", "moon", "moonlander", "moonrabbit_premium", "monstertruck", "motocross", "mountain", "mrsvip", "mrvip", "mummy_premium", "musclecar", "naked", "nancy_premium", "nationalday", "nationalpark", "nerdgirl", "nikita_acrobat_premium", "nikita_superhero_premium", "nikita_thief_premium", "ninja", "nightsuit", "nitrox_premium", "officer", "oldbard", "oldie", "overspill", "patchwork", "pbox_premium", "pecker_premium", "pierre_epic", "pigsy", "pinata2025_premium", "pirate", "pitcrew", "pixel", "police", "prisoner", "punk", "raccoonsuit", "racingtruck", "raider", "rallycar", "rap-artist", "rat", "referee", "reindeer", "retroride_bill_premium", "robotsanta", "rockbouncer", "rocker", "rotator", "rusty_premium", "saki_premium", "samurai", "santa", "savanna", "scarecrow_premium", "scooter", "shaman", "skeleton", "slumberbot_premium", "snow", "snowmobile", "snowqueen", "soccer", "soldier", "spacesuit", "spirit_premium", "sports", "sportscar", "sportsformula", "steam", "steampunk", "stock", "streetbiker", "stuntman", "sunburnt", "super_offroad", "superbike", "supercar", "superdiesel", "superhero_premium", "survivor", "sweet_premium", "tank", "towel", "tractor", "trusty", "underwater", "vampiress", "villain", "voltage_robot_premium", "warlock_premium", "winter", "wintergirl", "winterguy", "winteroutfit", "workrobot", "yeti", "zarek_premium", "zephyr_premium", "zombie" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_animations", "unlockDriverAnimations": [ "abduction", "banjo", "big-sad", "blast", "bill-bull", "boppin", "bubblegum", "bubbles", "climb-fiction", "combo", "cossack", "dab", "dang-it", "darksurge", "divine", "dreamy", "drum-solo", "energy-drink", "epic-win", "fire-guitar", "fist-pump", "flip", "gamer-rage", "gift", "ice-cream", "idle", "kippis", "laser", "laser-tool", "marching", "portal", "potion_freezing", "potion_growing", "potion_shrinking", "power-up", "rave", "rockerbill", "scratch", "sneeze", "stretch", "victory", "wicked" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_paints", "unlockVehiclePaints": [ { "vehicleId": "jeep", "paintId": "hill_climber_10th_anniversary_premium" }, { "vehicleId": "jeep", "paintId": "jeep_flames" }, { "vehicleId": "jeep", "paintId": "jeep_graphite" }, { "vehicleId": "jeep", "paintId": "jeep_hue_bronze" }, { "vehicleId": "jeep", "paintId": "jeep_hue_light-blue" }, { "vehicleId": "jeep", "paintId": "jeep_hue_violet" }, { "vehicleId": "jeep", "paintId": "jeep_metal" }, { "vehicleId": "jeep", "paintId": "jeep_checkered_green" }, { "vehicleId": "jeep", "paintId": "jeep_classic" }, { "vehicleId": "jeep", "paintId": "jeep_hue_flames-blue" }, { "vehicleId": "jeep", "paintId": "jeep_hue_rally_brown" }, { "vehicleId": "jeep", "paintId": "jeep_rally" }, { "vehicleId": "jeep", "paintId": "jeep_splash" }, { "vehicleId": "jeep", "paintId": "jeep_checkered" }, { "vehicleId": "jeep", "paintId": "hill_climber_spring_falls_premium" }, { "vehicleId": "jeep", "paintId": "jeep_banana" }, { "vehicleId": "jeep", "paintId": "jeep_blue" }, { "vehicleId": "jeep", "paintId": "jeep_broken_premium" }, { "vehicleId": "jeep", "paintId": "jeep_halloween" }, { "vehicleId": "jeep", "paintId": "jeep_heavy" }, { "vehicleId": "jeep", "paintId": "jeep_hue_green" }, { "vehicleId": "jeep", "paintId": "jeep_kangaroo_premium" }, { "vehicleId": "jeep", "paintId": "jeep_pixel" }, { "vehicleId": "jeep", "paintId": "VIP" }, { "vehicleId": "scooter", "paintId": "scooter_hue_blue-white" }, { "vehicleId": "scooter", "paintId": "scooter_hue_pink-white" }, { "vehicleId": "scooter", "paintId": "black" }, { "vehicleId": "scooter", "paintId": "rock" }, { "vehicleId": "scooter", "paintId": "scooter_pierre_epic" }, { "vehicleId": "scooter", "paintId": "diwali2022_premium" }, { "vehicleId": "scooter", "paintId": "moped" }, { "vehicleId": "scooter", "paintId": "scooter_hue_blue" }, { "vehicleId": "scooter", "paintId": "scooter_hue_red" }, { "vehicleId": "scooter", "paintId": "Web" }, { "vehicleId": "scooter", "paintId": "VIP" }, { "vehicleId": "scooter", "paintId": "yellow" }, { "vehicleId": "bus", "paintId": "Green" }, { "vehicleId": "bus", "paintId": "Trio" }, { "vehicleId": "bus", "paintId": "Cat" }, { "vehicleId": "bus", "paintId": "Graffiti" }, { "vehicleId": "bus", "paintId": "London" }, { "vehicleId": "bus", "paintId": "bus_trophy_epic" }, { "vehicleId": "bus", "paintId": "bus_bandbus_premium" }, { "vehicleId": "bus", "paintId": "bus_chicken_premium" }, { "vehicleId": "bus", "paintId": "bus_nightcrawler_premium" }, { "vehicleId": "bus", "paintId": "bus_ramen_premium" }, { "vehicleId": "bus", "paintId": "Flag" }, { "vehicleId": "bus", "paintId": "Halloween" }, { "vehicleId": "bus", "paintId": "Luck" }, { "vehicleId": "bus", "paintId": "Sauna" }, { "vehicleId": "bus", "paintId": "School" }, { "vehicleId": "bus", "paintId": "Sleek" }, { "vehicleId": "bus", "paintId": "VIP" }, { "vehicleId": "superjeep", "paintId": "superjeep_cubic" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_pink" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_yellow" }, { "vehicleId": "superjeep", "paintId": "superjeep_yellowstripe" }, { "vehicleId": "superjeep", "paintId": "superjeep_yellowstripe_hue" }, { "vehicleId": "superjeep", "paintId": "superjeep_camo" }, { "vehicleId": "superjeep", "paintId": "superjeep_camo_hue" }, { "vehicleId": "superjeep", "paintId": "superjeep_safari_epic" }, { "vehicleId": "superjeep", "paintId": "hill_climber_mk2_saltmaker_premium" }, { "vehicleId": "superjeep", "paintId": "superjeep_halloween" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_blue" }, { "vehicleId": "superjeep", "paintId": "superjeep_hue_green" }, { "vehicleId": "superjeep", "paintId": "superjeep_ninja" }, { "vehicleId": "superjeep", "paintId": "superjeep_pro" }, { "vehicleId": "superjeep", "paintId": "superjeep_superhero" }, { "vehicleId": "superjeep", "paintId": "superjeep_xmas" }, { "vehicleId": "superjeep", "paintId": "VIP" }, { "vehicleId": "tractor", "paintId": "hue_1" }, { "vehicleId": "tractor", "paintId": "hue_2" }, { "vehicleId": "tractor", "paintId": "hue_3" }, { "vehicleId": "tractor", "paintId": "hotrod" }, { "vehicleId": "tractor", "paintId": "hotrod_hue1" }, { "vehicleId": "tractor", "paintId": "orange" }, { "vehicleId": "tractor", "paintId": "dragon" }, { "vehicleId": "tractor", "paintId": "swamp" }, { "vehicleId": "tractor", "paintId": "swamp_hue1" }, { "vehicleId": "tractor", "paintId": "tractor_deepforest_premium" }, { "vehicleId": "tractor", "paintId": "tractor_fire_premium" }, { "vehicleId": "tractor", "paintId": "VIP" }, { "vehicleId": "motocross", "paintId": "motocross_black-yellow" }, { "vehicleId": "motocross", "paintId": "motocross_black-yellow_hue" }, { "vehicleId": "motocross", "paintId": "motocross_hue_yellow-green" }, { "vehicleId": "motocross", "paintId": "motocross_flames" }, { "vehicleId": "motocross", "paintId": "motocross_flames_hue" }, { "vehicleId": "motocross", "paintId": "motocross_lizard_epic" }, { "vehicleId": "motocross", "paintId": "motocross_explorer_premium" }, { "vehicleId": "motocross", "paintId": "motocross_green" }, { "vehicleId": "motocross", "paintId": "motocross_green_hue" }, { "vehicleId": "motocross", "paintId": "motocross_hue_blue" }, { "vehicleId": "motocross", "paintId": "motocross_hue_red" }, { "vehicleId": "motocross", "paintId": "motocross_hue_yellow" }, { "vehicleId": "motocross", "paintId": "motocross_nikita_acrobat_premium" }, { "vehicleId": "motocross", "paintId": "motocross_nikita_superhero_premium" }, { "vehicleId": "motocross", "paintId": "VIP" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_exploder" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_princess" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_vanilla" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_pop_epic" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_juice_premium" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_moonbuggy" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_pumpkin" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_racebuggy" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_skull_premium" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_sunbug" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_warlock_premium" }, { "vehicleId": "dunebuggy", "paintId": "dunebuggy_waverider" }, { "vehicleId": "dunebuggy", "paintId": "VIP" }, { "vehicleId": "sportscar", "paintId": "arrow" }, { "vehicleId": "sportscar", "paintId": "twocoloured" }, { "vehicleId": "sportscar", "paintId": "twocoloured_hue" }, { "vehicleId": "sportscar", "paintId": "sportscar_moonwalk_epic" }, { "vehicleId": "sportscar", "paintId": "sportscar_steampunk_epic" }, { "vehicleId": "sportscar", "paintId": "sports_hue_pink" }, { "vehicleId": "sportscar", "paintId": "sports_hue_yellow" }, { "vehicleId": "sportscar", "paintId": "sportscar_bee_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_drifting_orange_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_drifting_pink_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_flames" }, { "vehicleId": "sportscar", "paintId": "sportscar_flames_hue1" }, { "vehicleId": "sportscar", "paintId": "sportscar_flames_hue2" }, { "vehicleId": "sportscar", "paintId": "sportscar_gloomvale_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_oldie_premium" }, { "vehicleId": "sportscar", "paintId": "sportscar_orange" }, { "vehicleId": "sportscar", "paintId": "sportscar_snowflake" }, { "vehicleId": "sportscar", "paintId": "VIP" }, { "vehicleId": "monster", "paintId": "fang_hue" }, { "vehicleId": "monster", "paintId": "fang" }, { "vehicleId": "monster", "paintId": "flames" }, { "vehicleId": "monster", "paintId": "monster_hue_blue-flames" }, { "vehicleId": "monster", "paintId": "monster_donut" }, { "vehicleId": "monster", "paintId": "monster_steampunk_epic" }, { "vehicleId": "monster", "paintId": "monster_america" }, { "vehicleId": "monster", "paintId": "monster_hue_blue" }, { "vehicleId": "monster", "paintId": "monster_hue_pink" }, { "vehicleId": "monster", "paintId": "monster_police_premium" }, { "vehicleId": "monster", "paintId": "monster_survivor" }, { "vehicleId": "monster", "paintId": "monster_xmas" }, { "vehicleId": "monster", "paintId": "VIP" }, { "vehicleId": "upsidedown", "paintId": "hue_default_autumn" }, { "vehicleId": "upsidedown", "paintId": "hue_default_blue" }, { "vehicleId": "upsidedown", "paintId": "berry" }, { "vehicleId": "upsidedown", "paintId": "hue_berry_blue" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_driftmas2020_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_enjin_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_halloween2021_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_scifi_premium" }, { "vehicleId": "upsidedown", "paintId": "upsidedown_space_premium" }, { "vehicleId": "upsidedown", "paintId": "VIP" }, { "vehicleId": "pickup_truck", "paintId": "oldie" }, { "vehicleId": "pickup_truck", "paintId": "pickup_hue_pink" }, { "vehicleId": "pickup_truck", "paintId": "oldie_hue" }, { "vehicleId": "pickup_truck", "paintId": "pickup_hue_scifi-green" }, { "vehicleId": "pickup_truck", "paintId": "scifi" }, { "vehicleId": "pickup_truck", "paintId": "adventure" }, { "vehicleId": "pickup_truck", "paintId": "giftwrap" }, { "vehicleId": "pickup_truck", "paintId": "nationalday" }, { "vehicleId": "pickup_truck", "paintId": "pickup_heavenride_premium" }, { "vehicleId": "pickup_truck", "paintId": "pickup_hue_green" }, { "vehicleId": "pickup_truck", "paintId": "pickup_icegrille_premium" }, { "vehicleId": "pickup_truck", "paintId": "pimped" }, { "vehicleId": "pickup_truck", "paintId": "sunkenship" }, { "vehicleId": "pickup_truck", "paintId": "VIP" }, { "vehicleId": "chopper", "paintId": "hue_blue-b" }, { "vehicleId": "chopper", "paintId": "pink" }, { "vehicleId": "chopper", "paintId": "golden" }, { "vehicleId": "chopper", "paintId": "hue_blue-green" }, { "vehicleId": "chopper", "paintId": "hue_orange-purple" }, { "vehicleId": "chopper", "paintId": "chopper_marina_premium" }, { "vehicleId": "chopper", "paintId": "chopper_survivor_premium" }, { "vehicleId": "chopper", "paintId": "freerider" }, { "vehicleId": "chopper", "paintId": "ghostrider" }, { "vehicleId": "chopper", "paintId": "horse" }, { "vehicleId": "chopper", "paintId": "hue_blue" }, { "vehicleId": "chopper", "paintId": "VIP" }, { "vehicleId": "minitank", "paintId": "camo_winter" }, { "vehicleId": "minitank", "paintId": "camo_forest" }, { "vehicleId": "minitank", "paintId": "battledamage" }, { "vehicleId": "minitank", "paintId": "M1" }, { "vehicleId": "minitank", "paintId": "tank_hue_blue" }, { "vehicleId": "minitank", "paintId": "tank_hue_green" }, { "vehicleId": "minitank", "paintId": "tank_pineapple_premium" }, { "vehicleId": "minitank", "paintId": "VIP" }, { "vehicleId": "lowrider", "paintId": "lowrider_blue_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_brown_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_chrome_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_purple_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_red_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_yellow_common" }, { "vehicleId": "lowrider", "paintId": "lowrider_burgundy_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_double_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_emerald_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_pinkstreak_rare" }, { "vehicleId": "lowrider", "paintId": "lowrider_red_angles_epic" }, { "vehicleId": "lowrider", "paintId": "lowrider_splash_epic" }, { "vehicleId": "lowrider", "paintId": "lowrider_flame_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_ghost_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_luxury_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_racer_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_retroride_premium" }, { "vehicleId": "lowrider", "paintId": "lowrider_survivor_premium" }, { "vehicleId": "lowrider", "paintId": "VIP" }, { "vehicleId": "snowmobile", "paintId": "Blue" }, { "vehicleId": "snowmobile", "paintId": "Green" }, { "vehicleId": "snowmobile", "paintId": "Purple" }, { "vehicleId": "snowmobile", "paintId": "Red" }, { "vehicleId": "snowmobile", "paintId": "Orange" }, { "vehicleId": "snowmobile", "paintId": "Poison" }, { "vehicleId": "snowmobile", "paintId": "Shark" }, { "vehicleId": "snowmobile", "paintId": "Water_Splash" }, { "vehicleId": "snowmobile", "paintId": "Modern" }, { "vehicleId": "snowmobile", "paintId": "snowmobile_disco_premium" }, { "vehicleId": "snowmobile", "paintId": "VIP" }, { "vehicleId": "monowheel", "paintId": "bluestripes" }, { "vehicleId": "monowheel", "paintId": "bluestripes_hue_pink" }, { "vehicleId": "monowheel", "paintId": "default_hue_green" }, { "vehicleId": "monowheel", "paintId": "monowheel_china_premium" }, { "vehicleId": "monowheel", "paintId": "monowheel_nautilus_premium" }, { "vehicleId": "monowheel", "paintId": "monowheel_voltage_premium" }, { "vehicleId": "monowheel", "paintId": "VIP" }, { "vehicleId": "beast", "paintId": "beast_brown_common" }, { "vehicleId": "beast", "paintId": "beast_green_common" }, { "vehicleId": "beast", "paintId": "beast_pink_common" }, { "vehicleId": "beast", "paintId": "beast_red_common" }, { "vehicleId": "beast", "paintId": "beast_teal_common" }, { "vehicleId": "beast", "paintId": "beast_white_common" }, { "vehicleId": "beast", "paintId": "beast_yellow_common" }, { "vehicleId": "beast", "paintId": "beast_rare_bluecheckers" }, { "vehicleId": "beast", "paintId": "beast_rare_darkgreen" }, { "vehicleId": "beast", "paintId": "beast_rare_tricolor" }, { "vehicleId": "beast", "paintId": "beast_rare_whiteflame" }, { "vehicleId": "beast", "paintId": "beast_rocket_epic" }, { "vehicleId": "beast", "paintId": "beast_tiger_epic" }, { "vehicleId": "beast", "paintId": "beast_chimera_premium" }, { "vehicleId": "beast", "paintId": "beast_driftmas2023_premium" }, { "vehicleId": "beast", "paintId": "beast_old_premium" }, { "vehicleId": "beast", "paintId": "beast_sarcophagus_premium" }, { "vehicleId": "beast", "paintId": "beast_spaceship_premium" }, { "vehicleId": "beast", "paintId": "VIP" }, { "vehicleId": "rally", "paintId": "rally_hcr" }, { "vehicleId": "rally", "paintId": "rally_hcraser" }, { "vehicleId": "rally", "paintId": "rally_star" }, { "vehicleId": "rally", "paintId": "rally_vord" }, { "vehicleId": "rally", "paintId": "rally_lash" }, { "vehicleId": "rally", "paintId": "rally_luxury_epic" }, { "vehicleId": "rally", "paintId": "china" }, { "vehicleId": "rally", "paintId": "rally_abstract_premium" }, { "vehicleId": "rally", "paintId": "rally_bomber_premium" }, { "vehicleId": "rally", "paintId": "rally_dragonboat_premium" }, { "vehicleId": "rally", "paintId": "rally_driftmas2021_premium" }, { "vehicleId": "rally", "paintId": "rally_frank" }, { "vehicleId": "rally", "paintId": "rally_green" }, { "vehicleId": "rally", "paintId": "rally_itasha_premium" }, { "vehicleId": "rally", "paintId": "rally_lava_premium" }, { "vehicleId": "rally", "paintId": "rally_lion" }, { "vehicleId": "rally", "paintId": "rally_milk_premium" }, { "vehicleId": "rally", "paintId": "rally_nikita" }, { "vehicleId": "rally", "paintId": "rally_samurai_premium" }, { "vehicleId": "rally", "paintId": "rally_scifi" }, { "vehicleId": "rally", "paintId": "rally_yellow" }, { "vehicleId": "rally", "paintId": "rally_zombie" }, { "vehicleId": "rally", "paintId": "workshop" }, { "vehicleId": "rally", "paintId": "VIP" }, { "vehicleId": "formula", "paintId": "fingersoft" }, { "vehicleId": "formula", "paintId": "orangewhite" }, { "vehicleId": "formula", "paintId": "CNY" }, { "vehicleId": "formula", "paintId": "formula_green" }, { "vehicleId": "formula", "paintId": "formula_hue_blue" }, { "vehicleId": "formula", "paintId": "formula_survivor_premium" }, { "vehicleId": "formula", "paintId": "formula_villain_premium" }, { "vehicleId": "formula", "paintId": "VIP" }, { "vehicleId": "musclecar", "paintId": "musclecar_blue_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_green_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_pink_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_red_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_yellow_common" }, { "vehicleId": "musclecar", "paintId": "musclecar_blueflame_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_checker_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_purpleflame_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_yellowgreen_rare" }, { "vehicleId": "musclecar", "paintId": "musclecar_bluegreen_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_popart_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_spectrum_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_splash_epic" }, { "vehicleId": "musclecar", "paintId": "musclecar_camo_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_derby_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_halloween_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_lucky_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_skully_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_tiger_premium" }, { "vehicleId": "musclecar", "paintId": "musclecar_marshal_premium" }, { "vehicleId": "musclecar", "paintId": "VIP" }, { "vehicleId": "racing_truck", "paintId": "green" }, { "vehicleId": "racing_truck", "paintId": "red" }, { "vehicleId": "racing_truck", "paintId": "cowboy" }, { "vehicleId": "racing_truck", "paintId": "halloween" }, { "vehicleId": "racing_truck", "paintId": "jet_engine" }, { "vehicleId": "racing_truck", "paintId": "racing_truck_amusement_park_premium" }, { "vehicleId": "racing_truck", "paintId": "racing_truck_cny2021_premium" }, { "vehicleId": "racing_truck", "paintId": "racing_truck_diwali-2024" }, { "vehicleId": "racing_truck", "paintId": "VIP" }, { "vehicleId": "hotrod", "paintId": "hue_green" }, { "vehicleId": "hotrod", "paintId": "hue_pink" }, { "vehicleId": "hotrod", "paintId": "hue_purple" }, { "vehicleId": "hotrod", "paintId": "flames" }, { "vehicleId": "hotrod", "paintId": "flames2" }, { "vehicleId": "hotrod", "paintId": "stickers" }, { "vehicleId": "hotrod", "paintId": "hotrod_cny2022_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_docshocks_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_heavymetal_mythic" }, { "vehicleId": "hotrod", "paintId": "hotrod_illusion_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_mecha_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_modern" }, { "vehicleId": "hotrod", "paintId": "hotrod_mummy_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_nikita_premium" }, { "vehicleId": "hotrod", "paintId": "hotrod_survivor" }, { "vehicleId": "hotrod", "paintId": "VIP" }, { "vehicleId": "electric_car", "paintId": "electric_car_blue_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_green_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_purple_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_red_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_yellow_common" }, { "vehicleId": "electric_car", "paintId": "electric_car_blueline_rare" }, { "vehicleId": "electric_car", "paintId": "electric_car_chevron_rare" }, { "vehicleId": "electric_car", "paintId": "electric_car_stripe_rare" }, { "vehicleId": "electric_car", "paintId": "electric_car_flames_epic" }, { "vehicleId": "electric_car", "paintId": "electric_car_lightning_epic" }, { "vehicleId": "electric_car", "paintId": "electric_car_atom_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_bomberman_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_caustic_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_cookie_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_dragonboat_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_robot_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_scifi_premium" }, { "vehicleId": "electric_car", "paintId": "electric_car_unicorn_premium" }, { "vehicleId": "electric_car", "paintId": "VIP" }, { "vehicleId": "superbike", "paintId": "common_hue_1" }, { "vehicleId": "superbike", "paintId": "common_hue_2" }, { "vehicleId": "superbike", "paintId": "flames" }, { "vehicleId": "superbike", "paintId": "flames_hue1" }, { "vehicleId": "superbike", "paintId": "steampunk" }, { "vehicleId": "superbike", "paintId": "superbike_blue_df_epic" }, { "vehicleId": "superbike", "paintId": "superbike_green_df_epic" }, { "vehicleId": "superbike", "paintId": "superbike_orange_df_epic" }, { "vehicleId": "superbike", "paintId": "falcon" }, { "vehicleId": "superbike", "paintId": "justice_bringer" }, { "vehicleId": "superbike", "paintId": "superbike_enjin_premium" }, { "vehicleId": "superbike", "paintId": "superbike_mitch" }, { "vehicleId": "superbike", "paintId": "superbike_racing_black_premium" }, { "vehicleId": "superbike", "paintId": "superbike_red_premium" }, { "vehicleId": "superbike", "paintId": "superbike_villain_premium" }, { "vehicleId": "superbike", "paintId": "VIP" }, { "vehicleId": "lambo", "paintId": "hue_green" }, { "vehicleId": "lambo", "paintId": "hue_pink" }, { "vehicleId": "lambo", "paintId": "hue_purple" }, { "vehicleId": "lambo", "paintId": "orange" }, { "vehicleId": "lambo", "paintId": "red" }, { "vehicleId": "lambo", "paintId": "blackwhite" }, { "vehicleId": "lambo", "paintId": "bluestripes" }, { "vehicleId": "lambo", "paintId": "king" }, { "vehicleId": "lambo", "paintId": "orangewhite" }, { "vehicleId": "lambo", "paintId": "ace" }, { "vehicleId": "lambo", "paintId": "chameleon" }, { "vehicleId": "lambo", "paintId": "CNY2020" }, { "vehicleId": "lambo", "paintId": "lambo_kobra_premium" }, { "vehicleId": "lambo", "paintId": "supercar_knight_premium" }, { "vehicleId": "lambo", "paintId": "supercar_nikita" }, { "vehicleId": "lambo", "paintId": "tattoo" }, { "vehicleId": "lambo", "paintId": "xmas" }, { "vehicleId": "lambo", "paintId": "VIP" }, { "vehicleId": "moonlander", "paintId": "icecream" }, { "vehicleId": "moonlander", "paintId": "moonlander_hue_black-blue" }, { "vehicleId": "moonlander", "paintId": "moonlander_hue_blue" }, { "vehicleId": "moonlander", "paintId": "moonlander_tractor" }, { "vehicleId": "moonlander", "paintId": "black-green" }, { "vehicleId": "moonlander", "paintId": "lights" }, { "vehicleId": "moonlander", "paintId": "moonlander_simple" }, { "vehicleId": "moonlander", "paintId": "green" }, { "vehicleId": "moonlander", "paintId": "moonlander_hue_red" }, { "vehicleId": "moonlander", "paintId": "moonlander_lights" }, { "vehicleId": "moonlander", "paintId": "moonlander_lunar_premium" }, { "vehicleId": "moonlander", "paintId": "moonlander_moonrabbit_premium" }, { "vehicleId": "moonlander", "paintId": "moonlander_nautilus_premium" }, { "vehicleId": "moonlander", "paintId": "saucer" }, { "vehicleId": "moonlander", "paintId": "VIP" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_blue_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_orange_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_red_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_violet_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_yellow_common" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_purple_rare" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_grunge_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_grunge_red_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_leopard_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_yellowblue_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbounder_leopard_purple_epic" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_blue17_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_christmas24_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_cny2024_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_green_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_purple12_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_rough_premium" }, { "vehicleId": "rockbouncer", "paintId": "rockbouncer_strawberry_premium" }, { "vehicleId": "rockbouncer", "paintId": "VIP" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_blue_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_brown_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_green_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_purple_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_red_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_teal_common" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_greenblue_rare" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_pinkblue_rare" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_purplegray_rare" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_digital_epic" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_grid_epic" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_stars_epic" }, { "vehicleId": "hoverbike", "paintId": "fusell_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_drakkar_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_halloween2024_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_ironclad_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_moooo_premium" }, { "vehicleId": "hoverbike", "paintId": "hoverbike_scifi_premium" }, { "vehicleId": "hoverbike", "paintId": "VIP" }, { "vehicleId": "raider", "paintId": "raider_blue_common" }, { "vehicleId": "raider", "paintId": "raider_green_common" }, { "vehicleId": "raider", "paintId": "raider_pink_common" }, { "vehicleId": "raider", "paintId": "raider_purple_common" }, { "vehicleId": "raider", "paintId": "raider_yellow_common" }, { "vehicleId": "raider", "paintId": "raider_geometric_pink_rare" }, { "vehicleId": "raider", "paintId": "raider_geometric_red_rare" }, { "vehicleId": "raider", "paintId": "raider_geometric_yellow_rare" }, { "vehicleId": "raider", "paintId": "raider_orange_rare" }, { "vehicleId": "raider", "paintId": "raider_red_rare" }, { "vehicleId": "raider", "paintId": "raider_hexagon_epic" }, { "vehicleId": "raider", "paintId": "raider_mech_green_epic" }, { "vehicleId": "raider", "paintId": "raider_mech_white_epic" }, { "vehicleId": "raider", "paintId": "raider_cheese_premium" }, { "vehicleId": "raider", "paintId": "raider_cny2025_premium" }, { "vehicleId": "raider", "paintId": "raider_fish_premium" }, { "vehicleId": "raider", "paintId": "raider_gold_premium" }, { "vehicleId": "raider", "paintId": "raider_hazardeer_premium" }, { "vehicleId": "raider", "paintId": "raider_spirit_premium" }, { "vehicleId": "raider", "paintId": "VIP" }, { "vehicleId": "glider", "paintId": "glider_blue_common" }, { "vehicleId": "glider", "paintId": "glider_gray_common" }, { "vehicleId": "glider", "paintId": "glider_green_common" }, { "vehicleId": "glider", "paintId": "glider_purple_common" }, { "vehicleId": "glider", "paintId": "glider_red_common" }, { "vehicleId": "glider", "paintId": "glider_yellow_common" }, { "vehicleId": "glider", "paintId": "glider_bent_blue_rare" }, { "vehicleId": "glider", "paintId": "glider_bent_burgundy_rare" }, { "vehicleId": "glider", "paintId": "glider_bent_mint_rare" }, { "vehicleId": "glider", "paintId": "glider_colorful_rare" }, { "vehicleId": "glider", "paintId": "glider_star_rare" }, { "vehicleId": "glider", "paintId": "glider_wooden_rare" }, { "vehicleId": "glider", "paintId": "glider_rebel_epic" }, { "vehicleId": "glider", "paintId": "glider_requisitioned_epic" }, { "vehicleId": "glider", "paintId": "glider_christmas25_premium" }, { "vehicleId": "glider", "paintId": "glider_cyber_premium" }, { "vehicleId": "glider", "paintId": "glider_magic_premium" }, { "vehicleId": "glider", "paintId": "glider_rustbucket_premium" }, { "vehicleId": "glider", "paintId": "glider_wasp_premium" }, { "vehicleId": "glider", "paintId": "VIP" }, { "vehicleId": "trusty", "paintId": "trusty_blue_common" }, { "vehicleId": "trusty", "paintId": "trusty_green_common" }, { "vehicleId": "trusty", "paintId": "trusty_red_common" }, { "vehicleId": "trusty", "paintId": "trusty_blue_rare" }, { "vehicleId": "trusty", "paintId": "trusty_green_rare" }, { "vehicleId": "trusty", "paintId": "trusty_yellow_rare" }, { "vehicleId": "trusty", "paintId": "trusty_pop_epic" }, { "vehicleId": "trusty", "paintId": "trusty_purple_epic" }, { "vehicleId": "trusty", "paintId": "trusty_phantom_premium" }, { "vehicleId": "trusty", "paintId": "trusty_pinata2025_premium" }, { "vehicleId": "trusty", "paintId": "trusty_dirt_premium" }, { "vehicleId": "trusty", "paintId": "VIP" }, { "vehicleId": "atv", "paintId": "atv_red_common" }, { "vehicleId": "atv", "paintId": "atv_sport-blue_common" }, { "vehicleId": "atv", "paintId": "atv_yellow_common" }, { "vehicleId": "atv", "paintId": "atv_mint_rare" }, { "vehicleId": "atv", "paintId": "atv_royale_rare" }, { "vehicleId": "atv", "paintId": "atv_sport-gerbera_rare" }, { "vehicleId": "atv", "paintId": "atv_sport-keke_rare" }, { "vehicleId": "atv", "paintId": "atv_camo_epic" }, { "vehicleId": "atv", "paintId": "atv_circuit_epic" }, { "vehicleId": "atv", "paintId": "atv_circus_epic" }, { "vehicleId": "atv", "paintId": "atv_moo_epic" }, { "vehicleId": "atv", "paintId": "atv_sport-flame_epic" }, { "vehicleId": "atv", "paintId": "atv_sport-flameblue_epic" }, { "vehicleId": "atv", "paintId": "atv_futuristic_premium" }, { "vehicleId": "atv", "paintId": "atv_greek_premium" }, { "vehicleId": "atv", "paintId": "atv_halloween25_mythic" }, { "vehicleId": "atv", "paintId": "atv_shark_premium" }, { "vehicleId": "atv", "paintId": "VIP" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_blue_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_purple_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_red_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_white_common" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_camo_brown_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_camo_green_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tendril_green_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tendril_purple_rare" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_beeple_epic" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_beeple_yellow_epic" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_magenta_epic" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_cny26_premium" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_beeple_pop_premium" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tactical_blue_premium" }, { "vehicleId": "super_offroad", "paintId": "super_offroad_tactical_green_premium" }, { "vehicleId": "super_offroad", "paintId": "VIP" }, { "vehicleId": "stock", "paintId": "stocker_red_common" }, { "vehicleId": "stock", "paintId": "stocker_purple_common" }, { "vehicleId": "stock", "paintId": "stocker_green_common" }, { "vehicleId": "stock", "paintId": "stocker_orange_common" }, { "vehicleId": "stock", "paintId": "stocker_blue_common" }, { "vehicleId": "stock", "paintId": "stocker_bluestar_rare" }, { "vehicleId": "stock", "paintId": "stocker_darkstar_rare" }, { "vehicleId": "stock", "paintId": "stocker_darkstripe_rare" }, { "vehicleId": "stock", "paintId": "stocker_whitestripe_rare" }, { "vehicleId": "stock", "paintId": "stock_wave_epic" }, { "vehicleId": "stock", "paintId": "stock_circuit-orange_epic" }, { "vehicleId": "stock", "paintId": "stock_circuit-green_epic" }, { "vehicleId": "stock", "paintId": "stock_abstract_epic" }, { "vehicleId": "stock", "paintId": "stock_abstract_epic" }, { "vehicleId": "stock", "paintId": "stock_6-7_premium" }, { "vehicleId": "stock", "paintId": "VIP" } ], "unlockVehicleSpriteVariants": [ { "partId": "wheel", "variantId": "hill_climber_tire-10th_anniversary", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-safari", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-steampunk", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "hill_climber_spring_falls_tire_premium", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-broken_premium", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-goth", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-halloween", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-heavy", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-kangaroo_premium", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-pixel", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "hill_climber_tire-10th_anniversary", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-vip_small", "vehicleId": "jeep" }, { "partId": "wheel", "variantId": "jeep_tire-vip_small", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-pierre", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "scooter_tire-diwali2022_premium", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-goth", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-safari", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire-steampunk", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "tire_moped", "vehicleId": "scooter" }, { "partId": "wheel", "variantId": "bus_tire-hcr", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-motorcycle", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-old", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-safari", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-simple", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-steampunk", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-tractor", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-trophy_epic", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_default", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-bandbus_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-chicken_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-goth", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-nightcrawler_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-ramen_premium", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "bus_tire-vip_small", "vehicleId": "bus" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-safari", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-steampunk", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-safari_epic", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "hill_climber_mk2_tire-saltmaker_premium", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_default", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-goth", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-ninja", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-pro", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-vip_big", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire-xmas", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "superjeep_tire_superhero", "vehicleId": "superjeep" }, { "partId": "wheel", "variantId": "jeep_tire-hcr", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-lizard_epic", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "jeep_tire-vip_tilted", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-explorer_premium", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "tire-goth", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "tire-safari", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "tire-steampunk", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-nikita_acrobat_premium", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "motocross_tire-nikita_superhero_premium", "vehicleId": "motocross" }, { "partId": "wheel", "variantId": "dunebuggy_tire-monster", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-old", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pickup", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-safari", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-tractor", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pop_epic", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_default", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-juice_premium", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-moonbuggy", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-ninja", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pimped", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-pro", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-racebuggy", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-skull_premium", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-vip_big", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-warlock_premium", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-waverider", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "dunebuggy_tire-xmas", "vehicleId": "dunebuggy" }, { "partId": "wheel", "variantId": "sportscar_tire-hcr", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-motorcycle", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-old", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-safari", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-simple", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-steampunk", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-tractor", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-moonwalk_epic", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-steampunk_epic", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_default", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-bee_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-bundle", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-drifting_orange_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-flames", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-gloomvale_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-goth", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-halloween", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-oldie_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-snowflake", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-drifting_pink_premium", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "sportscar_tire-vip_small", "vehicleId": "sportscar" }, { "partId": "wheel", "variantId": "monster_tire-donut", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-steampunk_epic", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_default", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-police_premium", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-survivor", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-usa", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-vip_big", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "monster_tire-xmas", "vehicleId": "monster" }, { "partId": "wheel", "variantId": "upsidedown_tire-berry", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_default", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-driftmas2020_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-enjin_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-halloween2021_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-space_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire-vip", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "upsidedown_tire_scifi_premium", "vehicleId": "upsidedown" }, { "partId": "wheel", "variantId": "pickup_tire-hcr", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-motorcycle", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-old", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-safari", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-simple", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-steampunk", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-tractor", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-adventure", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-heaven_premium", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-icegrille-premium", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-nationalday", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-pimped", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-sunkenship", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "pickup_tire-vip_big", "vehicleId": "pickup_truck" }, { "partId": "wheel", "variantId": "jeep_tire-motorcycle", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "jeep_tire-old", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "jeep_tire-simple", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "jeep_tire-tractor", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire-horse", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire-marina_premium", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire-survivor_premium", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire_back-ghostrider", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "chopper_tire_back-vip", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "tire-goth", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "tire-safari", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "tire-steampunk", "vehicleId": "chopper" }, { "partId": "wheel", "variantId": "lowrider_tire-red_epic", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-splash_epic", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "car_tire-lowrider_luxury_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_default", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-flame_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-old-ghost_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-racer_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-retro_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-survivor_premium", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "lowrider_tire-vip", "vehicleId": "lowrider" }, { "partId": "wheel", "variantId": "monowheel_tire-hcr", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-motorcycle", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-old", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-safari", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-simple", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-steampunk", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-tractor", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_default", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-china_premium", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-goth", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-halloween", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-heavy", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-nautilus_premium", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-vip_small", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "monowheel_tire-voltage_premium", "vehicleId": "monowheel" }, { "partId": "wheel", "variantId": "beast_chimera_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_default", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_sarcophagus_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_spaceship_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_tire-driftmas2023_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_tire-old_premium", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "beast_vip", "vehicleId": "beast" }, { "partId": "wheel", "variantId": "rally_tire-hcr", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-motorcycle", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-old", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-safari", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-simple", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-tractor", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-luxury_epic", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_default", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_itasha_tire-premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-abstract_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-bomber_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-china", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-driftmas2021_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-frank", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-goth", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-green", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-halloween", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-heavy", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-milk_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-nikita", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-samurai_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire-vip_big", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire_lava_premium", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire_scifi", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "rally_tire_workshop", "vehicleId": "rally" }, { "partId": "wheel", "variantId": "formula_tire-goth", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-hcr", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-motorcycle", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-old", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-safari", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-simple", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-steampunk", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-tractor", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_default", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-bundle", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-cny", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-survivor_premium", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-villain_premium", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "formula_tire-vip_small", "vehicleId": "formula" }, { "partId": "wheel", "variantId": "musclecar_tire-hcr", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-motorcycle", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-old", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-safari", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-simple", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-tractor", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_default", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-camo_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-derby_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-goth", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-halloween_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-lucky_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-skully_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-tiger_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-marshal_premium", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "musclecar_tire-vip", "vehicleId": "musclecar" }, { "partId": "wheel", "variantId": "racing_truck_tire-hcr", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-monster", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-old", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-tractor", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-amusement_park_premium", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-cny2021_premium", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-cowboy", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-diwali-2024_premium", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-shiny", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire-vip", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "racing_truck_tire_halloween", "vehicleId": "racing_truck" }, { "partId": "wheel", "variantId": "hotrod_tire-goth", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-hcr", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-motorcycle", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-simple", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-steampunk", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-king", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_default", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-cny2022_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-docshocks_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-heavymetal_mythic", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-mecha_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-mummy_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-new_survivor", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-nikita_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire-survivor", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire_illusion_premium", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "hotrod_tire_vip", "vehicleId": "hotrod" }, { "partId": "wheel", "variantId": "electric_car_default", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-atom_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-bomberman_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-caustic_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-cookie_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-robot_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-scifi_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-unicorn_premium", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "electric_car_tire-vip", "vehicleId": "electric_car" }, { "partId": "wheel", "variantId": "lambo_tire-goth", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-hcr", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-motorcycle", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-simple", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-steampunk", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-king", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_default", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-cny2020", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-knight_premium", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-kobra_premium", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-nikita", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-vip_small", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "lambo_tire-xmas2018", "vehicleId": "lambo" }, { "partId": "wheel", "variantId": "moonlander_default", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_lights", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_simple", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tractor", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-lunar_premium", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-moonrabbit_premium", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-nautilus_premium", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "moonlander_tire-vip", "vehicleId": "moonlander" }, { "partId": "wheel", "variantId": "rockbouncer_tire-common", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-rare", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-grunge-red_epic", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-grunge_epic", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_default", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-blue17_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-christmas24_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-cny2024_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-green_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-purple12_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-rough_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-strawberry_premium", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "rockbouncer_tire-vip_big", "vehicleId": "rockbouncer" }, { "partId": "wheel", "variantId": "raider_tire-dark_common", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-decorative_common", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-star_common", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-geometric_pink_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-geometric_red_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-geometric_yellow_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-orange_rare", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-hex_epic", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-mech_green_epic", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-mech_white_epic", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-cheese_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-cny2025_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-default", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-fish_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-gold_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-hazardeer_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-spirit_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "raider_tire-vip_premium", "vehicleId": "raider" }, { "partId": "wheel", "variantId": "glider_tire-common", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-bent_blue_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-bent_burgundy_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-bent_mint_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-colorful_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-star_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-wooden_rare", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-rebel_epic", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-requisitioned_epic", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_default", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-christmas25_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-cyber_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-magic-premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-rustbucket_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-vip", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "glider_tire-wasp_premium", "vehicleId": "glider" }, { "partId": "wheel", "variantId": "trusty_default", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_default2", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-phantom_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-pinata2025_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-vip", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_wheel-inferno_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "trusty_tire-dirt_premium", "vehicleId": "trusty" }, { "partId": "wheel", "variantId": "atv_tire-road_common", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-camo_epic", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-circuit_epic", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_default", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-futuristic_premium", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-greek_premium", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-halloween25_mythic", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-shark_premium", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "atv_tire-VIP", "vehicleId": "atv" }, { "partId": "wheel", "variantId": "super_offroad_tire-cny26_premium", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-roller", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-roller_rusty", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-gear", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-gear_grimy", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_default", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-tactical_blue_premium", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-tactical_green_premium", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "super_offroad_tire-vip", "vehicleId": "super_offroad" }, { "partId": "wheel", "variantId": "stock_default", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-circuit-green_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-circuit-orange_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-wave_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-abstract_epic", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-6-7-premium", "vehicleId": "stock" }, { "partId": "wheel", "variantId": "stock_tire-vip", "vehicleId": "stock" } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_parts", "tuningParts": [ { "id": "jeep_magnet", "amount": 1 }, { "id": "jeep_heavyweight", "amount": 1 }, { "id": "jeep_glide", "amount": 1 }, { "id": "jeep_rollcage", "amount": 1 }, { "id": "jeep_air_control", "amount": 1 }, { "id": "jeep_winter_tyres", "amount": 1 }, { "id": "jeep_start_boost", "amount": 1 }, { "id": "jeep_wheelie_boost", "amount": 1 }, { "id": "jeep_fume_boost", "amount": 1 }, { "id": "jeep_flip_speed_boost", "amount": 1 }, { "id": "jeep_jump", "amount": 1 }, { "id": "jeep_perfect_landing_boost", "amount": 1 }, { "id": "jeep_turbo_boost", "amount": 1 }, { "id": "jeep_afterburner", "amount": 1 }, { "id": "jeep_spoiler", "amount": 1 }, { "id": "jeep_thrusters", "amount": 1 }, { "id": "jeep_fuel_boost", "amount": 1 }, { "id": "jeep_coin_boost", "amount": 1 }, { "id": "jeep_nitro", "amount": 1 }, { "id": "jeep_amplifier", "amount": 1 }, { "id": "jeep_echo", "amount": 1 }, { "id": "scooter_magnet", "amount": 1 }, { "id": "scooter_heavyweight", "amount": 1 }, { "id": "scooter_glide", "amount": 1 }, { "id": "scooter_rollcage", "amount": 1 }, { "id": "scooter_air_control", "amount": 1 }, { "id": "scooter_winter_tyres", "amount": 1 }, { "id": "scooter_start_boost", "amount": 1 }, { "id": "scooter_wheelie_boost", "amount": 1 }, { "id": "scooter_fume_boost", "amount": 1 }, { "id": "scooter_flip_speed_boost", "amount": 1 }, { "id": "scooter_jump", "amount": 1 }, { "id": "scooter_perfect_landing_boost", "amount": 1 }, { "id": "scooter_turbo_boost", "amount": 1 }, { "id": "scooter_afterburner", "amount": 1 }, { "id": "scooter_spoiler", "amount": 1 }, { "id": "scooter_thrusters", "amount": 1 }, { "id": "scooter_fuel_boost", "amount": 1 }, { "id": "scooter_coin_boost", "amount": 1 }, { "id": "scooter_nitro", "amount": 1 }, { "id": "scooter_amplifier", "amount": 1 }, { "id": "scooter_echo", "amount": 1 }, { "id": "bus_magnet", "amount": 1 }, { "id": "bus_glide", "amount": 1 }, { "id": "bus_air_control", "amount": 1 }, { "id": "bus_start_boost", "amount": 1 }, { "id": "bus_wheelie_boost", "amount": 1 }, { "id": "bus_fume_boost", "amount": 1 }, { "id": "bus_flip_speed_boost", "amount": 1 }, { "id": "bus_jump", "amount": 1 }, { "id": "bus_perfect_landing_boost", "amount": 1 }, { "id": "bus_turbo_boost", "amount": 1 }, { "id": "bus_afterburner", "amount": 1 }, { "id": "bus_thrusters", "amount": 1 }, { "id": "bus_fuel_boost", "amount": 1 }, { "id": "bus_coin_boost", "amount": 1 }, { "id": "bus_nitro", "amount": 1 }, { "id": "bus_amplifier", "amount": 1 }, { "id": "bus_echo", "amount": 1 }, { "id": "superjeep_magnet", "amount": 1 }, { "id": "superjeep_heavyweight", "amount": 1 }, { "id": "superjeep_glide", "amount": 1 }, { "id": "superjeep_air_control", "amount": 1 }, { "id": "superjeep_winter_tyres", "amount": 1 }, { "id": "superjeep_start_boost", "amount": 1 }, { "id": "superjeep_wheelie_boost", "amount": 1 }, { "id": "superjeep_fume_boost", "amount": 1 }, { "id": "superjeep_flip_speed_boost", "amount": 1 }, { "id": "superjeep_jump", "amount": 1 }, { "id": "superjeep_perfect_landing_boost", "amount": 1 }, { "id": "superjeep_turbo_boost", "amount": 1 }, { "id": "superjeep_afterburner", "amount": 1 }, { "id": "superjeep_spoiler", "amount": 1 }, { "id": "superjeep_thrusters", "amount": 1 }, { "id": "superjeep_fuel_boost", "amount": 1 }, { "id": "superjeep_coin_boost", "amount": 1 }, { "id": "superjeep_nitro", "amount": 1 }, { "id": "superjeep_amplifier", "amount": 1 }, { "id": "superjeep_echo", "amount": 1 }, { "id": "tractor_rollcage", "amount": 1 }, { "id": "tractor_magnet", "amount": 1 }, { "id": "tractor_glide", "amount": 1 }, { "id": "tractor_winter_tyres", "amount": 1 }, { "id": "tractor_start_boost", "amount": 1 }, { "id": "tractor_wheelie_boost", "amount": 1 }, { "id": "tractor_fume_boost", "amount": 1 }, { "id": "tractor_flip_speed_boost", "amount": 1 }, { "id": "tractor_jump", "amount": 1 }, { "id": "tractor_perfect_landing_boost", "amount": 1 }, { "id": "tractor_turbo_boost", "amount": 1 }, { "id": "tractor_afterburner", "amount": 1 }, { "id": "tractor_spoiler", "amount": 1 }, { "id": "tractor_fuel_boost", "amount": 1 }, { "id": "tractor_coin_boost", "amount": 1 }, { "id": "tractor_nitro", "amount": 1 }, { "id": "tractor_amplifier", "amount": 1 }, { "id": "tractor_echo", "amount": 1 }, { "id": "motocross_magnet", "amount": 1 }, { "id": "motocross_heavyweight", "amount": 1 }, { "id": "motocross_glide", "amount": 1 }, { "id": "motocross_rollcage", "amount": 1 }, { "id": "motocross_air_control", "amount": 1 }, { "id": "motocross_winter_tyres", "amount": 1 }, { "id": "motocross_start_boost", "amount": 1 }, { "id": "motocross_wheelie_boost", "amount": 1 }, { "id": "motocross_fume_boost", "amount": 1 }, { "id": "motocross_flip_speed_boost", "amount": 1 }, { "id": "motocross_jump", "amount": 1 }, { "id": "motocross_perfect_landing_boost", "amount": 1 }, { "id": "motocross_turbo_boost", "amount": 1 }, { "id": "motocross_afterburner", "amount": 1 }, { "id": "motocross_thrusters", "amount": 1 }, { "id": "motocross_fuel_boost", "amount": 1 }, { "id": "motocross_coin_boost", "amount": 1 }, { "id": "motocross_nitro", "amount": 1 }, { "id": "motocross_amplifier", "amount": 1 }, { "id": "motocross_echo", "amount": 1 }, { "id": "dunebuggy_magnet", "amount": 1 }, { "id": "dunebuggy_heavyweight", "amount": 1 }, { "id": "dunebuggy_glide", "amount": 1 }, { "id": "dunebuggy_air_control", "amount": 1 }, { "id": "dunebuggy_winter_tyres", "amount": 1 }, { "id": "dunebuggy_start_boost", "amount": 1 }, { "id": "dunebuggy_wheelie_boost", "amount": 1 }, { "id": "dunebuggy_fume_boost", "amount": 1 }, { "id": "dunebuggy_flip_speed_boost", "amount": 1 }, { "id": "dunebuggy_jump", "amount": 1 }, { "id": "dunebuggy_perfect_landing_boost", "amount": 1 }, { "id": "dunebuggy_turbo_boost", "amount": 1 }, { "id": "dunebuggy_afterburner", "amount": 1 }, { "id": "dunebuggy_spoiler", "amount": 1 }, { "id": "dunebuggy_thrusters", "amount": 1 }, { "id": "dunebuggy_fuel_boost", "amount": 1 }, { "id": "dunebuggy_coin_boost", "amount": 1 }, { "id": "dunebuggy_nitro", "amount": 1 }, { "id": "dunebuggy_amplifier", "amount": 1 }, { "id": "dunebuggy_echo", "amount": 1 }, { "id": "sportscar_magnet", "amount": 1 }, { "id": "sportscar_heavyweight", "amount": 1 }, { "id": "sportscar_glide", "amount": 1 }, { "id": "sportscar_rollcage", "amount": 1 }, { "id": "sportscar_winter_tyres", "amount": 1 }, { "id": "sportscar_start_boost", "amount": 1 }, { "id": "sportscar_wheelie_boost", "amount": 1 }, { "id": "sportscar_fume_boost", "amount": 1 }, { "id": "sportscar_flip_speed_boost", "amount": 1 }, { "id": "sportscar_jump", "amount": 1 }, { "id": "sportscar_perfect_landing_boost", "amount": 1 }, { "id": "sportscar_turbo_boost", "amount": 1 }, { "id": "sportscar_afterburner", "amount": 1 }, { "id": "sportscar_thrusters", "amount": 1 }, { "id": "sportscar_fuel_boost", "amount": 1 }, { "id": "sportscar_coin_boost", "amount": 1 }, { "id": "sportscar_nitro", "amount": 1 }, { "id": "sportscar_amplifier", "amount": 1 }, { "id": "sportscar_echo", "amount": 1 }, { "id": "monster_magnet", "amount": 1 }, { "id": "monster_heavyweight", "amount": 1 }, { "id": "monster_glide", "amount": 1 }, { "id": "monster_rollcage", "amount": 1 }, { "id": "monster_air_control", "amount": 1 }, { "id": "monster_winter_tyres", "amount": 1 }, { "id": "monster_start_boost", "amount": 1 }, { "id": "monster_wheelie_boost", "amount": 1 }, { "id": "monster_fume_boost", "amount": 1 }, { "id": "monster_flip_speed_boost", "amount": 1 }, { "id": "monster_jump", "amount": 1 }, { "id": "monster_perfect_landing_boost", "amount": 1 }, { "id": "monster_turbo_boost", "amount": 1 }, { "id": "monster_afterburner", "amount": 1 }, { "id": "monster_spoiler", "amount": 1 }, { "id": "monster_thrusters", "amount": 1 }, { "id": "monster_fuel_boost", "amount": 1 }, { "id": "monster_coin_boost", "amount": 1 }, { "id": "monster_nitro", "amount": 1 }, { "id": "monster_amplifier", "amount": 1 }, { "id": "monster_echo", "amount": 1 }, { "id": "upsidedown_magnet", "amount": 1 }, { "id": "upsidedown_glide", "amount": 1 }, { "id": "upsidedown_air_control", "amount": 1 }, { "id": "upsidedown_start_boost", "amount": 1 }, { "id": "upsidedown_wheelie_boost", "amount": 1 }, { "id": "upsidedown_fume_boost", "amount": 1 }, { "id": "upsidedown_flip_speed_boost", "amount": 1 }, { "id": "upsidedown_winter_tyres", "amount": 1 }, { "id": "upsidedown_perfect_landing_boost", "amount": 1 }, { "id": "upsidedown_turbo_boost", "amount": 1 }, { "id": "upsidedown_afterburner", "amount": 1 }, { "id": "upsidedown_thrusters", "amount": 1 }, { "id": "upsidedown_fuel_boost", "amount": 1 }, { "id": "upsidedown_coin_boost", "amount": 1 }, { "id": "upsidedown_nitro", "amount": 1 }, { "id": "upsidedown_amplifier", "amount": 1 }, { "id": "upsidedown_echo", "amount": 1 }, { "id": "pickup_truck_magnet", "amount": 1 }, { "id": "pickup_truck_heavyweight", "amount": 1 }, { "id": "pickup_truck_glide", "amount": 1 }, { "id": "pickup_truck_air_control", "amount": 1 }, { "id": "pickup_truck_winter_tyres", "amount": 1 }, { "id": "pickup_truck_start_boost", "amount": 1 }, { "id": "pickup_truck_wheelie_boost", "amount": 1 }, { "id": "pickup_truck_fume_boost", "amount": 1 }, { "id": "pickup_truck_flip_speed_boost", "amount": 1 }, { "id": "pickup_truck_jump", "amount": 1 }, { "id": "pickup_truck_perfect_landing_boost", "amount": 1 }, { "id": "pickup_truck_turbo_boost", "amount": 1 }, { "id": "pickup_truck_afterburner", "amount": 1 }, { "id": "pickup_truck_spoiler", "amount": 1 }, { "id": "pickup_truck_thrusters", "amount": 1 }, { "id": "pickup_truck_fuel_boost", "amount": 1 }, { "id": "pickup_truck_coin_boost", "amount": 1 }, { "id": "pickup_truck_nitro", "amount": 1 }, { "id": "pickup_truck_amplifier", "amount": 1 }, { "id": "pickup_truck_echo", "amount": 1 }, { "id": "chopper_rollcage", "amount": 1 }, { "id": "chopper_magnet", "amount": 1 }, { "id": "chopper_glide", "amount": 1 }, { "id": "chopper_air_control", "amount": 1 }, { "id": "chopper_winter_tyres", "amount": 1 }, { "id": "chopper_start_boost", "amount": 1 }, { "id": "chopper_wheelie_boost", "amount": 1 }, { "id": "chopper_fume_boost", "amount": 1 }, { "id": "chopper_flip_speed_boost", "amount": 1 }, { "id": "chopper_perfect_landing_boost", "amount": 1 }, { "id": "chopper_turbo_boost", "amount": 1 }, { "id": "chopper_afterburner", "amount": 1 }, { "id": "chopper_thrusters", "amount": 1 }, { "id": "chopper_fuel_boost", "amount": 1 }, { "id": "chopper_coin_boost", "amount": 1 }, { "id": "chopper_nitro", "amount": 1 }, { "id": "chopper_amplifier", "amount": 1 }, { "id": "chopper_echo", "amount": 1 }, { "id": "minitank_magnet", "amount": 1 }, { "id": "minitank_heavyweight", "amount": 1 }, { "id": "minitank_glide", "amount": 1 }, { "id": "minitank_rollcage", "amount": 1 }, { "id": "minitank_air_control", "amount": 1 }, { "id": "minitank_start_boost", "amount": 1 }, { "id": "minitank_wheelie_boost", "amount": 1 }, { "id": "minitank_fume_boost", "amount": 1 }, { "id": "minitank_flip_speed_boost", "amount": 1 }, { "id": "minitank_jump", "amount": 1 }, { "id": "minitank_perfect_landing_boost", "amount": 1 }, { "id": "minitank_turbo_boost", "amount": 1 }, { "id": "minitank_afterburner", "amount": 1 }, { "id": "minitank_thrusters", "amount": 1 }, { "id": "minitank_fuel_boost", "amount": 1 }, { "id": "minitank_coin_boost", "amount": 1 }, { "id": "minitank_nitro", "amount": 1 }, { "id": "minitank_amplifier", "amount": 1 }, { "id": "minitank_echo", "amount": 1 }, { "id": "lowrider_magnet", "amount": 1 }, { "id": "lowrider_heavyweight", "amount": 1 }, { "id": "lowrider_glide", "amount": 1 }, { "id": "lowrider_rollcage", "amount": 1 }, { "id": "lowrider_air_control", "amount": 1 }, { "id": "lowrider_winter_tyres", "amount": 1 }, { "id": "lowrider_start_boost", "amount": 1 }, { "id": "lowrider_wheelie_boost", "amount": 1 }, { "id": "lowrider_fume_boost", "amount": 1 }, { "id": "lowrider_flip_speed_boost", "amount": 1 }, { "id": "lowrider_perfect_landing_boost", "amount": 1 }, { "id": "lowrider_turbo_boost", "amount": 1 }, { "id": "lowrider_afterburner", "amount": 1 }, { "id": "lowrider_thrusters", "amount": 1 }, { "id": "lowrider_fuel_boost", "amount": 1 }, { "id": "lowrider_coin_boost", "amount": 1 }, { "id": "lowrider_nitro", "amount": 1 }, { "id": "lowrider_amplifier", "amount": 1 }, { "id": "lowrider_echo", "amount": 1 }, { "id": "snowmobile_magnet", "amount": 1 }, { "id": "snowmobile_heavyweight", "amount": 1 }, { "id": "snowmobile_glide", "amount": 1 }, { "id": "snowmobile_rollcage", "amount": 1 }, { "id": "snowmobile_air_control", "amount": 1 }, { "id": "snowmobile_start_boost", "amount": 1 }, { "id": "snowmobile_wheelie_boost", "amount": 1 }, { "id": "snowmobile_fume_boost", "amount": 1 }, { "id": "snowmobile_flip_speed_boost", "amount": 1 }, { "id": "snowmobile_perfect_landing_boost", "amount": 1 }, { "id": "snowmobile_turbo_boost", "amount": 1 }, { "id": "snowmobile_afterburner", "amount": 1 }, { "id": "snowmobile_thrusters", "amount": 1 }, { "id": "snowmobile_fuel_boost", "amount": 1 }, { "id": "snowmobile_coin_boost", "amount": 1 }, { "id": "snowmobile_nitro", "amount": 1 }, { "id": "snowmobile_amplifier", "amount": 1 }, { "id": "snowmobile_echo", "amount": 1 }, { "id": "monowheel_magnet", "amount": 1 }, { "id": "monowheel_glide", "amount": 1 }, { "id": "monowheel_air_control", "amount": 1 }, { "id": "monowheel_winter_tyres", "amount": 1 }, { "id": "monowheel_start_boost", "amount": 1 }, { "id": "monowheel_wheelie_boost", "amount": 1 }, { "id": "monowheel_fume_boost", "amount": 1 }, { "id": "monowheel_flip_speed_boost", "amount": 1 }, { "id": "monowheel_jump", "amount": 1 }, { "id": "monowheel_turbo_boost", "amount": 1 }, { "id": "monowheel_afterburner", "amount": 1 }, { "id": "monowheel_spoiler", "amount": 1 }, { "id": "monowheel_thrusters", "amount": 1 }, { "id": "monowheel_fuel_boost", "amount": 1 }, { "id": "monowheel_coin_boost", "amount": 1 }, { "id": "monowheel_nitro", "amount": 1 }, { "id": "monowheel_amplifier", "amount": 1 }, { "id": "monowheel_echo", "amount": 1 }, { "id": "beast_magnet", "amount": 1 }, { "id": "beast_heavyweight", "amount": 1 }, { "id": "beast_glide", "amount": 1 }, { "id": "beast_air_control", "amount": 1 }, { "id": "beast_winter_tyres", "amount": 1 }, { "id": "beast_start_boost", "amount": 1 }, { "id": "beast_wheelie_boost", "amount": 1 }, { "id": "beast_fume_boost", "amount": 1 }, { "id": "beast_flip_speed_boost", "amount": 1 }, { "id": "beast_jump", "amount": 1 }, { "id": "beast_perfect_landing_boost", "amount": 1 }, { "id": "beast_turbo_boost", "amount": 1 }, { "id": "beast_afterburner", "amount": 1 }, { "id": "beast_spoiler", "amount": 1 }, { "id": "beast_thrusters", "amount": 1 }, { "id": "beast_fuel_boost", "amount": 1 }, { "id": "beast_coin_boost", "amount": 1 }, { "id": "beast_nitro", "amount": 1 }, { "id": "beast_amplifier", "amount": 1 }, { "id": "beast_echo", "amount": 1 }, { "id": "rally_magnet", "amount": 1 }, { "id": "rally_heavyweight", "amount": 1 }, { "id": "rally_glide", "amount": 1 }, { "id": "rally_air_control", "amount": 1 }, { "id": "rally_winter_tyres", "amount": 1 }, { "id": "rally_start_boost", "amount": 1 }, { "id": "rally_wheelie_boost", "amount": 1 }, { "id": "rally_fume_boost", "amount": 1 }, { "id": "rally_flip_speed_boost", "amount": 1 }, { "id": "rally_jump", "amount": 1 }, { "id": "rally_perfect_landing_boost", "amount": 1 }, { "id": "rally_turbo_boost", "amount": 1 }, { "id": "rally_afterburner", "amount": 1 }, { "id": "rally_spoiler", "amount": 1 }, { "id": "rally_thrusters", "amount": 1 }, { "id": "rally_fuel_boost", "amount": 1 }, { "id": "rally_coin_boost", "amount": 1 }, { "id": "rally_nitro", "amount": 1 }, { "id": "rally_amplifier", "amount": 1 }, { "id": "rally_echo", "amount": 1 }, { "id": "formula_magnet", "amount": 1 }, { "id": "formula_heavyweight", "amount": 1 }, { "id": "formula_glide", "amount": 1 }, { "id": "formula_rollcage", "amount": 1 }, { "id": "formula_air_control", "amount": 1 }, { "id": "formula_winter_tyres", "amount": 1 }, { "id": "formula_start_boost", "amount": 1 }, { "id": "formula_fume_boost", "amount": 1 }, { "id": "formula_flip_speed_boost", "amount": 1 }, { "id": "formula_jump", "amount": 1 }, { "id": "formula_wheelie_boost", "amount": 1 }, { "id": "formula_perfect_landing_boost", "amount": 1 }, { "id": "formula_turbo_boost", "amount": 1 }, { "id": "formula_afterburner", "amount": 1 }, { "id": "formula_thrusters", "amount": 1 }, { "id": "formula_fuel_boost", "amount": 1 }, { "id": "formula_coin_boost", "amount": 1 }, { "id": "formula_nitro", "amount": 1 }, { "id": "formula_amplifier", "amount": 1 }, { "id": "formula_echo", "amount": 1 }, { "id": "musclecar_magnet", "amount": 1 }, { "id": "musclecar_heavyweight", "amount": 1 }, { "id": "musclecar_glide", "amount": 1 }, { "id": "musclecar_rollcage", "amount": 1 }, { "id": "musclecar_air_control", "amount": 1 }, { "id": "musclecar_winter_tyres", "amount": 1 }, { "id": "musclecar_start_boost", "amount": 1 }, { "id": "musclecar_wheelie_boost", "amount": 1 }, { "id": "musclecar_fume_boost", "amount": 1 }, { "id": "musclecar_flip_speed_boost", "amount": 1 }, { "id": "musclecar_jump", "amount": 1 }, { "id": "musclecar_perfect_landing_boost", "amount": 1 }, { "id": "musclecar_turbo_boost", "amount": 1 }, { "id": "musclecar_afterburner", "amount": 1 }, { "id": "musclecar_spoiler", "amount": 1 }, { "id": "musclecar_thrusters", "amount": 1 }, { "id": "musclecar_fuel_boost", "amount": 1 }, { "id": "musclecar_coin_boost", "amount": 1 }, { "id": "musclecar_nitro", "amount": 1 }, { "id": "musclecar_amplifier", "amount": 1 }, { "id": "musclecar_echo", "amount": 1 }, { "id": "racing_truck_magnet", "amount": 1 }, { "id": "racing_truck_heavyweight", "amount": 1 }, { "id": "racing_truck_glide", "amount": 1 }, { "id": "racing_truck_air_control", "amount": 1 }, { "id": "racing_truck_winter_tyres", "amount": 1 }, { "id": "racing_truck_start_boost", "amount": 1 }, { "id": "racing_truck_wheelie_boost", "amount": 1 }, { "id": "racing_truck_fume_boost", "amount": 1 }, { "id": "racing_truck_flip_speed_boost", "amount": 1 }, { "id": "racing_truck_jump", "amount": 1 }, { "id": "racing_truck_perfect_landing_boost", "amount": 1 }, { "id": "racing_truck_turbo_boost", "amount": 1 }, { "id": "racing_truck_afterburner", "amount": 1 }, { "id": "racing_truck_thrusters", "amount": 1 }, { "id": "racing_truck_fuel_boost", "amount": 1 }, { "id": "racing_truck_coin_boost", "amount": 1 }, { "id": "racing_truck_nitro", "amount": 1 }, { "id": "racing_truck_amplifier", "amount": 1 }, { "id": "racing_truck_echo", "amount": 1 }, { "id": "hotrod_magnet", "amount": 1 }, { "id": "hotrod_heavyweight", "amount": 1 }, { "id": "hotrod_glide", "amount": 1 }, { "id": "hotrod_rollcage", "amount": 1 }, { "id": "hotrod_air_control", "amount": 1 }, { "id": "hotrod_winter_tyres", "amount": 1 }, { "id": "hotrod_start_boost", "amount": 1 }, { "id": "hotrod_wheelie_boost", "amount": 1 }, { "id": "hotrod_fume_boost", "amount": 1 }, { "id": "hotrod_flip_speed_boost", "amount": 1 }, { "id": "hotrod_jump", "amount": 1 }, { "id": "hotrod_perfect_landing_boost", "amount": 1 }, { "id": "hotrod_thrusters", "amount": 1 }, { "id": "hotrod_fuel_boost", "amount": 1 }, { "id": "hotrod_coin_boost", "amount": 1 }, { "id": "hotrod_nitro", "amount": 1 }, { "id": "hotrod_amplifier", "amount": 1 }, { "id": "hotrod_echo", "amount": 1 }, { "id": "electric_car_magnet", "amount": 1 }, { "id": "electric_car_heavyweight", "amount": 1 }, { "id": "electric_car_glide", "amount": 1 }, { "id": "electric_car_rollcage", "amount": 1 }, { "id": "electric_car_air_control", "amount": 1 }, { "id": "electric_car_winter_tyres", "amount": 1 }, { "id": "electric_car_start_boost", "amount": 1 }, { "id": "electric_car_wheelie_boost", "amount": 1 }, { "id": "electric_car_fume_boost", "amount": 1 }, { "id": "electric_car_flip_speed_boost", "amount": 1 }, { "id": "electric_car_jump", "amount": 1 }, { "id": "electric_car_perfect_landing_boost", "amount": 1 }, { "id": "electric_car_spoiler", "amount": 1 }, { "id": "electric_car_thrusters", "amount": 1 }, { "id": "electric_car_coin_boost", "amount": 1 }, { "id": "electric_car_nitro", "amount": 1 }, { "id": "electric_car_amplifier", "amount": 1 }, { "id": "electric_car_echo", "amount": 1 }, { "id": "superbike_magnet", "amount": 1 }, { "id": "superbike_glide", "amount": 1 }, { "id": "superbike_air_control", "amount": 1 }, { "id": "superbike_rollcage", "amount": 1 }, { "id": "superbike_winter_tyres", "amount": 1 }, { "id": "superbike_start_boost", "amount": 1 }, { "id": "superbike_wheelie_boost", "amount": 1 }, { "id": "superbike_fume_boost", "amount": 1 }, { "id": "superbike_flip_speed_boost", "amount": 1 }, { "id": "superbike_perfect_landing_boost", "amount": 1 }, { "id": "superbike_turbo_boost", "amount": 1 }, { "id": "superbike_afterburner", "amount": 1 }, { "id": "superbike_thrusters", "amount": 1 }, { "id": "superbike_fuel_boost", "amount": 1 }, { "id": "superbike_coin_boost", "amount": 1 }, { "id": "superbike_nitro", "amount": 1 }, { "id": "superbike_amplifier", "amount": 1 }, { "id": "superbike_echo", "amount": 1 }, { "id": "lambo_magnet", "amount": 1 }, { "id": "lambo_heavyweight", "amount": 1 }, { "id": "lambo_glide", "amount": 1 }, { "id": "lambo_rollcage", "amount": 1 }, { "id": "lambo_air_control", "amount": 1 }, { "id": "lambo_winter_tyres", "amount": 1 }, { "id": "lambo_start_boost", "amount": 1 }, { "id": "lambo_wheelie_boost", "amount": 1 }, { "id": "lambo_fume_boost", "amount": 1 }, { "id": "lambo_flip_speed_boost", "amount": 1 }, { "id": "lambo_jump", "amount": 1 }, { "id": "lambo_perfect_landing_boost", "amount": 1 }, { "id": "lambo_turbo_boost", "amount": 1 }, { "id": "lambo_afterburner", "amount": 1 }, { "id": "lambo_thrusters", "amount": 1 }, { "id": "lambo_fuel_boost", "amount": 1 }, { "id": "lambo_coin_boost", "amount": 1 }, { "id": "lambo_nitro", "amount": 1 }, { "id": "lambo_amplifier", "amount": 1 }, { "id": "lambo_echo", "amount": 1 }, { "id": "moonlander_magnet", "amount": 1 }, { "id": "moonlander_air_control", "amount": 1 }, { "id": "moonlander_start_boost", "amount": 1 }, { "id": "moonlander_wheelie_boost", "amount": 1 }, { "id": "moonlander_fume_boost", "amount": 1 }, { "id": "moonlander_flip_speed_boost", "amount": 1 }, { "id": "moonlander_perfect_landing_boost", "amount": 1 }, { "id": "moonlander_afterburner", "amount": 1 }, { "id": "moonlander_thrusters", "amount": 1 }, { "id": "moonlander_coin_boost", "amount": 1 }, { "id": "moonlander_amplifier", "amount": 1 }, { "id": "moonlander_echo", "amount": 1 }, { "id": "rockbouncer_magnet", "amount": 1 }, { "id": "rockbouncer_heavyweight", "amount": 1 }, { "id": "rockbouncer_glide", "amount": 1 }, { "id": "rockbouncer_air_control", "amount": 1 }, { "id": "rockbouncer_start_boost", "amount": 1 }, { "id": "rockbouncer_wheelie_boost", "amount": 1 }, { "id": "rockbouncer_fume_boost", "amount": 1 }, { "id": "rockbouncer_flip_speed_boost", "amount": 1 }, { "id": "rockbouncer_jump", "amount": 1 }, { "id": "rockbouncer_perfect_landing_boost", "amount": 1 }, { "id": "rockbouncer_turbo_boost", "amount": 1 }, { "id": "rockbouncer_afterburner", "amount": 1 }, { "id": "rockbouncer_spoiler", "amount": 1 }, { "id": "rockbouncer_thrusters", "amount": 1 }, { "id": "rockbouncer_fuel_boost", "amount": 1 }, { "id": "rockbouncer_coin_boost", "amount": 1 }, { "id": "rockbouncer_nitro", "amount": 1 }, { "id": "rockbouncer_amplifier", "amount": 1 }, { "id": "rockbouncer_echo", "amount": 1 }, { "id": "hoverbike_magnet", "amount": 1 }, { "id": "hoverbike_air_control", "amount": 1 }, { "id": "hoverbike_rollcage", "amount": 1 }, { "id": "hoverbike_start_boost", "amount": 1 }, { "id": "hoverbike_wheelie_boost", "amount": 1 }, { "id": "hoverbike_fume_boost", "amount": 1 }, { "id": "hoverbike_flip_speed_boost", "amount": 1 }, { "id": "hoverbike_turbo_boost", "amount": 1 }, { "id": "hoverbike_afterburner", "amount": 1 }, { "id": "hoverbike_fuel_boost", "amount": 1 }, { "id": "hoverbike_coin_boost", "amount": 1 }, { "id": "hoverbike_nitro", "amount": 1 }, { "id": "hoverbike_amplifier", "amount": 1 }, { "id": "hoverbike_echo", "amount": 1 }, { "id": "raider_magnet", "amount": 1 }, { "id": "raider_heavyweight", "amount": 1 }, { "id": "raider_glide", "amount": 1 }, { "id": "raider_air_control", "amount": 1 }, { "id": "raider_winter_tyres", "amount": 1 }, { "id": "raider_start_boost", "amount": 1 }, { "id": "raider_wheelie_boost", "amount": 1 }, { "id": "raider_fume_boost", "amount": 1 }, { "id": "raider_flip_speed_boost", "amount": 1 }, { "id": "raider_jump", "amount": 1 }, { "id": "raider_perfect_landing_boost", "amount": 1 }, { "id": "raider_turbo_boost", "amount": 1 }, { "id": "raider_afterburner", "amount": 1 }, { "id": "raider_spoiler", "amount": 1 }, { "id": "raider_thrusters", "amount": 1 }, { "id": "raider_fuel_boost", "amount": 1 }, { "id": "raider_coin_boost", "amount": 1 }, { "id": "raider_nitro", "amount": 1 }, { "id": "raider_amplifier", "amount": 1 }, { "id": "raider_echo", "amount": 1 }, { "id": "glider_magnet", "amount": 1 }, { "id": "glider_heavyweight", "amount": 1 }, { "id": "glider_winter_tyres", "amount": 1 }, { "id": "glider_start_boost", "amount": 1 }, { "id": "glider_wheelie_boost", "amount": 1 }, { "id": "gliderfume_boost", "amount": 1 }, { "id": "glider_jump", "amount": 1 }, { "id": "glider_perfect_landing_boost", "amount": 1 }, { "id": "glider_turbo_boost", "amount": 1 }, { "id": "glider_afterburner", "amount": 1 }, { "id": "glider_thrusters", "amount": 1 }, { "id": "glider_fuel_boost", "amount": 1 }, { "id": "glider_coin_boost", "amount": 1 }, { "id": "glider_nitro", "amount": 1 }, { "id": "glider_amplifier", "amount": 1 }, { "id": "glider_echo", "amount": 1 }, { "id": "trusty_magnet", "amount": 1 }, { "id": "trusty_heavyweight", "amount": 1 }, { "id": "trusty_glide", "amount": 1 }, { "id": "trusty_spoiler", "amount": 1 }, { "id": "trusty_air_control", "amount": 1 }, { "id": "trusty_winter_tyres", "amount": 1 }, { "id": "trusty_start_boost", "amount": 1 }, { "id": "trusty_wheelie_boost", "amount": 1 }, { "id": "trusty_fume_boost", "amount": 1 }, { "id": "trusty_flip_speed_boost", "amount": 1 }, { "id": "trusty_jump", "amount": 1 }, { "id": "trusty_perfect_landing_boost", "amount": 1 }, { "id": "trusty_turbo_boost", "amount": 1 }, { "id": "trusty_afterburner", "amount": 1 }, { "id": "trusty_thrusters", "amount": 1 }, { "id": "trusty_fuel_boost", "amount": 1 }, { "id": "trusty_coin_boost", "amount": 1 }, { "id": "trusty_nitro", "amount": 1 }, { "id": "trusty_amplifier", "amount": 1 }, { "id": "trusty_echo", "amount": 1 }, { "id": "atv_magnet", "amount": 1 }, { "id": "atv_heavyweight", "amount": 1 }, { "id": "atv_glide", "amount": 1 }, { "id": "atv_rollcage", "amount": 1 }, { "id": "atv_air_control", "amount": 1 }, { "id": "atv_winter_tyres", "amount": 1 }, { "id": "atv_start_boost", "amount": 1 }, { "id": "atv_wheelie_boost", "amount": 1 }, { "id": "atv_fume_boost", "amount": 1 }, { "id": "atv_flip_speed_boost", "amount": 1 }, { "id": "atv_jump", "amount": 1 }, { "id": "atv_perfect_landing_boost", "amount": 1 }, { "id": "atv_turbo_boost", "amount": 1 }, { "id": "atv_afterburner", "amount": 1 }, { "id": "atv_spoiler", "amount": 1 }, { "id": "atv_thrusters", "amount": 1 }, { "id": "atv_fuel_boost", "amount": 1 }, { "id": "atv_coin_boost", "amount": 1 }, { "id": "atv_nitro", "amount": 1 }, { "id": "atv_amplifier", "amount": 1 }, { "id": "atv_echo", "amount": 1 }, { "id": "super_offroad_magnet", "amount": 1 }, { "id": "super_offroad_heavyweight", "amount": 1 }, { "id": "super_offroad_glide", "amount": 1 }, { "id": "super_offroad_air_control", "amount": 1 }, { "id": "super_offroad_start_boost", "amount": 1 }, { "id": "super_offroad_wheelie_boost", "amount": 1 }, { "id": "super_offroad_fume_boost", "amount": 1 }, { "id": "super_offroad_flip_speed_boost", "amount": 1 }, { "id": "super_offroad_jump", "amount": 1 }, { "id": "super_offroad_perfect_landing_boost", "amount": 1 }, { "id": "super_offroad_turbo_boost", "amount": 1 }, { "id": "super_offroad_afterburner", "amount": 1 }, { "id": "super_offroad_thrusters", "amount": 1 }, { "id": "super_offroad_fuel_boost", "amount": 1 }, { "id": "super_offroad_coin_boost", "amount": 1 }, { "id": "super_offroad_nitro", "amount": 1 }, { "id": "super_offroad_amplifier", "amount": 1 }, { "id": "super_offroad_echo", "amount": 1 }, { "id": "stock_magnet", "amount": 1 }, { "id": "stock_heavyweight", "amount": 1 }, { "id": "stock_glide", "amount": 1 }, { "id": "stock_air_control", "amount": 1 }, { "id": "stock_winter_tyres", "amount": 1 }, { "id": "stock_start_boost", "amount": 1 }, { "id": "stock_wheelie_boost", "amount": 1 }, { "id": "stock_fume_boost", "amount": 1 }, { "id": "stock_flip_speed_boost", "amount": 1 }, { "id": "stock_jump", "amount": 1 }, { "id": "stock_perfect_landing_boost", "amount": 1 }, { "id": "stock_turbo_boost", "amount": 1 }, { "id": "stock_afterburner", "amount": 1 }, { "id": "stock_thrusters", "amount": 1 }, { "id": "stock_fuel_boost", "amount": 1 }, { "id": "stock_coin_boost", "amount": 1 }, { "id": "stock_nitro", "amount": 1 }, { "id": "stock_amplifier", "amount": 1 }, { "id": "stock_echo", "amount": 1 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_shardsAll", "styleShards": [ { "rarity": "rare", "amount": 200 }, { "rarity": "epic", "amount": 200 }, { "rarity": "legendary", "amount": 200 }, { "rarity": "mythic", "amount": 200 }, { "rarity": "rare", "amount": 200 }, { "rarity": "epic", "amount": 200 }, { "rarity": "legendary", "amount": 200 }, { "rarity": "mythic", "amount": 200 }, { "rarity": "rare", "amount": 200 }, { "rarity": "epic", "amount": 200 }, { "rarity": "legendary", "amount": 200 }, { "rarity": "mythic", "amount": 200 }, { "rarity": "rare", "amount": 200 }, { "rarity": "epic", "amount": 200 }, { "rarity": "legendary", "amount": 200 }, { "rarity": "mythic", "amount": 200 }, { "rarity": "rare", "amount": 200 }, { "rarity": "epic", "amount": 200 }, { "rarity": "legendary", "amount": 200 }, { "rarity": "mythic", "amount": 200 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_maps", "unlockAdventureMaps": [ "nationalpark", "forest", "city", "mountain_01", "underwater", "winter_01", "mines", "route66", "beach", "trailerpark", "glacier", "workshop", "moonabase", "savanna", "darkforest", "amusement_distance", "arena_distance", "cuptown_distance", "moonbase", "forest_trials", "hard_city", "hard_winter", "hard_arena" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_themes", "unlockEditorThemes": [ "forest", "city", "mountain", "underwater", "winter", "mine", "desert", "beach", "bayou", "glacier", "workshop", "moon", "savanna", "darkforest", "amusementpark", "arena", "cuptown", "nationalpark" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_cosmetics", "unlockHomeBackgrounds": [ "rustic_rafter", "rustic_wall", "rustic_floor", "garageband_rafter", "garageband_wall", "garageband_floor", "arcade_rafter", "arcade_wall", "arcade_floor", "bomber_rafter", "bomber_wall", "bomber_floor" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_09", "unlockHomeProps": [ { "id": "arcade_air_hockey", "amount": 100 }, { "id": "arcade_cabinet_boxing", "amount": 100 }, { "id": "arcade_cabinet_cute", "amount": 100 }, { "id": "arcade_cabinet_fighting", "amount": 100 }, { "id": "arcade_cabinet_rare", "amount": 100 }, { "id": "arcade_ceiling_lamp", "amount": 100 }, { "id": "arcade_dancing_game", "amount": 100 }, { "id": "arcade_framed_poster", "amount": 100 }, { "id": "arcade_lightgun", "amount": 100 }, { "id": "arcade_neon_sign", "amount": 100 }, { "id": "arcade_pinball", "amount": 100 }, { "id": "arcade_table_soccer", "amount": 100 }, { "id": "arcade_trash_can", "amount": 100 }, { "id": "arcade_vroom_poster", "amount": 100 }, { "id": "arcade_wall_exitsign", "amount": 100 }, { "id": "arcade_whack-a-mole", "amount": 100 }, { "id": "garageband_bass_electric", "amount": 100 }, { "id": "garageband_cars_poster", "amount": 100 }, { "id": "garageband_drumset", "amount": 100 }, { "id": "garageband_effects_pedal", "amount": 100 }, { "id": "garageband_guitar", "amount": 100 }, { "id": "garageband_guitar_acoustic", "amount": 100 }, { "id": "garageband_guitar_electric", "amount": 100 }, { "id": "garageband_headphones", "amount": 100 }, { "id": "garageband_neon_sign", "amount": 100 }, { "id": "garageband_record_player", "amount": 100 }, { "id": "garageband_sampler", "amount": 100 }, { "id": "garageband_shoe_poster", "amount": 100 }, { "id": "garageband_small_amp", "amount": 100 }, { "id": "garageband_sofa", "amount": 100 }, { "id": "garageband_speaker", "amount": 100 }, { "id": "garageband_stage_microphone", "amount": 100 }, { "id": "garageband_stool", "amount": 100 }, { "id": "garageband_synthesizer", "amount": 100 }, { "id": "garageband_thumb_piano", "amount": 100 }, { "id": "garageband_turntable", "amount": 100 }, { "id": "garageband_vinyl", "amount": 100 }, { "id": "garageband_vinyl_display", "amount": 100 }, { "id": "garageband_wall_light", "amount": 100 }, { "id": "garageband_wall_signs", "amount": 100 }, { "id": "rustic_antique_clock", "amount": 100 }, { "id": "rustic_coffee_machine", "amount": 100 }, { "id": "rustic_dart_board", "amount": 100 }, { "id": "rustic_espresso_machine", "amount": 100 }, { "id": "rustic_firewood", "amount": 100 }, { "id": "rustic_fish_trophy", "amount": 100 }, { "id": "rustic_foot_chair", "amount": 100 }, { "id": "rustic_framed_landscape_photo", "amount": 100 }, { "id": "rustic_framed_surrealist_art", "amount": 100 }, { "id": "rustic_glass_planter", "amount": 100 }, { "id": "rustic_lantern", "amount": 100 }, { "id": "rustic_motivational_sign", "amount": 100 }, { "id": "rustic_roof_light", "amount": 100 }, { "id": "rustic_roof_light_plants", "amount": 100 }, { "id": "rustic_roof_planter", "amount": 100 }, { "id": "rustic_rocking_chair", "amount": 100 }, { "id": "rustic_sandwich", "amount": 100 }, { "id": "rustic_simple_fridge", "amount": 100 }, { "id": "rustic_simple_wall_rack", "amount": 100 }, { "id": "rustic_sunflower_basket", "amount": 100 }, { "id": "rustic_wall_axe", "amount": 100 }, { "id": "rustic_wall_lantern", "amount": 100 }, { "id": "rustic_wooden_dresser", "amount": 100 }, { "id": "rustic_wooden_radio", "amount": 100 }, { "id": "stock_air_conditioner", "amount": 100 }, { "id": "stock_cardboard_box", "amount": 100 }, { "id": "stock_car_calendar", "amount": 100 }, { "id": "stock_ceiling_fan", "amount": 100 }, { "id": "stock_ceiling_monitor", "amount": 100 }, { "id": "stock_clock", "amount": 100 }, { "id": "stock_cooler", "amount": 100 }, { "id": "stock_cork_board", "amount": 100 }, { "id": "stock_dartboard", "amount": 100 }, { "id": "stock_fluorescent_light", "amount": 100 }, { "id": "stock_framed_car_poster", "amount": 100 }, { "id": "stock_gas_canister", "amount": 100 }, { "id": "stock_jukebox", "amount": 100 }, { "id": "stock_key_holder", "amount": 100 }, { "id": "stock_metal_closet", "amount": 100 }, { "id": "stock_neon_sign", "amount": 100 }, { "id": "stock_oil_barrel", "amount": 100 }, { "id": "stock_old_car_radio", "amount": 100 }, { "id": "stock_paint_cans", "amount": 100 }, { "id": "stock_peg_board", "amount": 100 }, { "id": "stock_plastic_canister", "amount": 100 }, { "id": "stock_potted_cactus", "amount": 100 }, { "id": "stock_swivel_stool", "amount": 100 }, { "id": "stock_tire_stack", "amount": 100 }, { "id": "stock_tool_box", "amount": 100 }, { "id": "stock_tool_cart", "amount": 100 }, { "id": "stock_traffic_light", "amount": 100 }, { "id": "stock_trash_bin", "amount": 100 }, { "id": "stock_wall_mounted_phone", "amount": 100 }, { "id": "stock_wall_mounted_radiator", "amount": 100 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_10", "currencies": [ { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 }, { "currency": "research_points", "amount": 5000 } ] }, "maxCollectAmount": 10000 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_coins", "coinAmount": 100000000 }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_gems", "gemAmount": 15000 }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_scrap", "currencies": [ { "currency": "scrap", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_special_tickets", "currencies": [ { "currency": "special_tickets", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_adventure_token", "currencies": [ { "currency": "adventure_token", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_challenge_tickets", "currencies": [ { "currency": "challenge_tickets", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_event_points", "currencies": [ { "currency": "event_points", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_vehicle_blueprint", "currencies": [ { "currency": "vehicle_blueprint", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_video_skips", "currencies": [ { "currency": "video_skips", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_gacha_token", "currencies": [ { "currency": "gacha_token", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_team_coins", "currencies": [ { "currency": "team_coins", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_chest_key", "currencies": [ { "currency": "chest_key", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_reroll_parts_token", "currencies": [ { "currency": "reroll_parts_token", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_winstreak_shield", "currencies": [ { "currency": "winstreak_shield", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_coin_doubler", "currencies": [ { "currency": "coin_doubler", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rank_doubler", "currencies": [ { "currency": "rank_doubler", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_gem_spawn_token", "currencies": [ { "currency": "gem_spawn_token", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_collectible_coin_doubler", "currencies": [ { "currency": "collectible_coin_doubler", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_style_points", "currencies": [ { "currency": "style_points", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_event_tickets", "currencies": [ { "currency": "event_tickets", "amount": 100000 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_common", "chests": [ "common" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_uncommon", "chests": [ "uncommon" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rare", "chests": [ "rare" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epic", "chests": [ "epic" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_champion", "chests": [ "champion" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_tutorial", "chests": [ "tutorial" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_xmas", "chests": [ "xmas" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendary", "chests": [ "legendary" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_free", "chests": [ "free" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_vip", "chests": [ "vip" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_vip2", "chests": [ "vip2" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_video", "chests": [ "video" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_tutorial_looks", "chests": [ "tutorial_looks" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_tutorial_tuningparts", "chests": [ "tutorial_tuningparts" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_xpromo", "chests": [ "xpromo" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mega", "chests": [ "mega" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendary_team", "chests": [ "legendary_team" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_vip_diamond", "chests": [ "vip_diamond" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_team_support", "chests": [ "team_support" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_style", "chests": [ "style" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythic", "chests": [ "mythic" ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_jeep", "vehicleChests": [ { "chestId": "rare", "vehicleId": "jeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_scooter", "vehicleChests": [ { "chestId": "rare", "vehicleId": "scooter", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_bus", "vehicleChests": [ { "chestId": "rare", "vehicleId": "bus", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_superjeep", "vehicleChests": [ { "chestId": "rare", "vehicleId": "superjeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_tractor", "vehicleChests": [ { "chestId": "rare", "vehicleId": "tractor", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_motocross", "vehicleChests": [ { "chestId": "rare", "vehicleId": "motocross", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_dunebuggy", "vehicleChests": [ { "chestId": "rare", "vehicleId": "dunebuggy", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_sportscar", "vehicleChests": [ { "chestId": "rare", "vehicleId": "sportscar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_monster", "vehicleChests": [ { "chestId": "rare", "vehicleId": "monster", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_upsidedown", "vehicleChests": [ { "chestId": "rare", "vehicleId": "upsidedown", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_pickup_truck", "vehicleChests": [ { "chestId": "rare", "vehicleId": "pickup_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_chopper", "vehicleChests": [ { "chestId": "rare", "vehicleId": "chopper", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_minitank", "vehicleChests": [ { "chestId": "rare", "vehicleId": "minitank", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_lowrider", "vehicleChests": [ { "chestId": "rare", "vehicleId": "lowrider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_snowmobile", "vehicleChests": [ { "chestId": "rare", "vehicleId": "snowmobile", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_monowheel", "vehicleChests": [ { "chestId": "rare", "vehicleId": "monowheel", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_beast", "vehicleChests": [ { "chestId": "rare", "vehicleId": "beast", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_rally", "vehicleChests": [ { "chestId": "rare", "vehicleId": "rally", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_formula", "vehicleChests": [ { "chestId": "rare", "vehicleId": "formula", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_musclecar", "vehicleChests": [ { "chestId": "rare", "vehicleId": "musclecar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_racing_truck", "vehicleChests": [ { "chestId": "rare", "vehicleId": "racing_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_hotrod", "vehicleChests": [ { "chestId": "rare", "vehicleId": "hotrod", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_electric_car", "vehicleChests": [ { "chestId": "rare", "vehicleId": "electric_car", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_superbike", "vehicleChests": [ { "chestId": "rare", "vehicleId": "superbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_lambo", "vehicleChests": [ { "chestId": "rare", "vehicleId": "lambo", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_moonlander", "vehicleChests": [ { "chestId": "rare", "vehicleId": "moonlander", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_rockbouncer", "vehicleChests": [ { "chestId": "rare", "vehicleId": "rockbouncer", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_hoverbike", "vehicleChests": [ { "chestId": "rare", "vehicleId": "hoverbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_raider", "vehicleChests": [ { "chestId": "rare", "vehicleId": "raider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_glider", "vehicleChests": [ { "chestId": "rare", "vehicleId": "glider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_trusty", "vehicleChests": [ { "chestId": "rare", "vehicleId": "trusty", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_atv", "vehicleChests": [ { "chestId": "rare", "vehicleId": "atv", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_super_offroad", "vehicleChests": [ { "chestId": "rare", "vehicleId": "super_offroad", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_rareVC_stock", "vehicleChests": [ { "chestId": "rare", "vehicleId": "stock", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_jeep", "vehicleChests": [ { "chestId": "epic", "vehicleId": "jeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_scooter", "vehicleChests": [ { "chestId": "epic", "vehicleId": "scooter", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_bus", "vehicleChests": [ { "chestId": "epic", "vehicleId": "bus", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_superjeep", "vehicleChests": [ { "chestId": "epic", "vehicleId": "superjeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_tractor", "vehicleChests": [ { "chestId": "epic", "vehicleId": "tractor", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_motocross", "vehicleChests": [ { "chestId": "epic", "vehicleId": "motocross", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_dunebuggy", "vehicleChests": [ { "chestId": "epic", "vehicleId": "dunebuggy", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_sportscar", "vehicleChests": [ { "chestId": "epic", "vehicleId": "sportscar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_monster", "vehicleChests": [ { "chestId": "epic", "vehicleId": "monster", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_upsidedown", "vehicleChests": [ { "chestId": "epic", "vehicleId": "upsidedown", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_pickup_truck", "vehicleChests": [ { "chestId": "epic", "vehicleId": "pickup_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_chopper", "vehicleChests": [ { "chestId": "epic", "vehicleId": "chopper", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_minitank", "vehicleChests": [ { "chestId": "epic", "vehicleId": "minitank", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_lowrider", "vehicleChests": [ { "chestId": "epic", "vehicleId": "lowrider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_snowmobile", "vehicleChests": [ { "chestId": "epic", "vehicleId": "snowmobile", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_monowheel", "vehicleChests": [ { "chestId": "epic", "vehicleId": "monowheel", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_beast", "vehicleChests": [ { "chestId": "epic", "vehicleId": "beast", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_rally", "vehicleChests": [ { "chestId": "epic", "vehicleId": "rally", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_formula", "vehicleChests": [ { "chestId": "epic", "vehicleId": "formula", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_musclecar", "vehicleChests": [ { "chestId": "epic", "vehicleId": "musclecar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_racing_truck", "vehicleChests": [ { "chestId": "epic", "vehicleId": "racing_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_hotrod", "vehicleChests": [ { "chestId": "epic", "vehicleId": "hotrod", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_electric_car", "vehicleChests": [ { "chestId": "epic", "vehicleId": "electric_car", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_superbike", "vehicleChests": [ { "chestId": "epic", "vehicleId": "superbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_lambo", "vehicleChests": [ { "chestId": "epic", "vehicleId": "lambo", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_moonlander", "vehicleChests": [ { "chestId": "epic", "vehicleId": "moonlander", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_rockbouncer", "vehicleChests": [ { "chestId": "epic", "vehicleId": "rockbouncer", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_hoverbike", "vehicleChests": [ { "chestId": "epic", "vehicleId": "hoverbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_raider", "vehicleChests": [ { "chestId": "epic", "vehicleId": "raider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_glider", "vehicleChests": [ { "chestId": "epic", "vehicleId": "glider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_trusty", "vehicleChests": [ { "chestId": "epic", "vehicleId": "trusty", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_atv", "vehicleChests": [ { "chestId": "epic", "vehicleId": "atv", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_super_offroad", "vehicleChests": [ { "chestId": "epic", "vehicleId": "super_offroad", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_epicVC_stock", "vehicleChests": [ { "chestId": "epic", "vehicleId": "stock", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_jeep", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "jeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_scooter", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "scooter", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_bus", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "bus", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_superjeep", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "superjeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_tractor", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "tractor", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_motocross", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "motocross", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_dunebuggy", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "dunebuggy", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_sportscar", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "sportscar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_monster", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "monster", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_upsidedown", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "upsidedown", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_pickup_truck", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "pickup_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_chopper", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "chopper", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_minitank", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "minitank", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_lowrider", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "lowrider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_snowmobile", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "snowmobile", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_monowheel", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "monowheel", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_beast", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "beast", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_rally", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "rally", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_formula", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "formula", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_musclecar", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "musclecar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_racing_truck", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "racing_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_hotrod", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "hotrod", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_electric_car", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "electric_car", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_superbike", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "superbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_lambo", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "lambo", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_moonlander", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "moonlander", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_rockbouncer", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "rockbouncer", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_hoverbike", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "hoverbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_raider", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "raider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_glider", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "glider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_trusty", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "trusty", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_atv", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "atv", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_super_offroad", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "super_offroad", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_legendaryVC_stock", "vehicleChests": [ { "chestId": "legendary", "vehicleId": "stock", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_jeep", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "jeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_scooter", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "scooter", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_bus", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "bus", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_superjeep", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "superjeep", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_tractor", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "tractor", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_motocross", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "motocross", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_dunebuggy", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "dunebuggy", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_sportscar", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "sportscar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_monster", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "monster", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_upsidedown", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "upsidedown", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_pickup_truck", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "pickup_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_chopper", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "chopper", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_minitank", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "minitank", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_lowrider", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "lowrider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_snowmobile", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "snowmobile", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_monowheel", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "monowheel", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_beast", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "beast", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_rally", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "rally", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_formula", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "formula", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_musclecar", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "musclecar", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_racing_truck", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "racing_truck", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_hotrod", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "hotrod", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_electric_car", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "electric_car", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_superbike", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "superbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_lambo", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "lambo", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_moonlander", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "moonlander", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_rockbouncer", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "rockbouncer", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_hoverbike", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "hoverbike", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_raider", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "raider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_glider", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "glider", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_trusty", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "trusty", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_atv", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "atv", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_super_offroad", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "super_offroad", "targetIndex": 0 } ] }, "maxCollectAmount": -1 }, { "rewardCondition": { "criteria": 0, "type": "score" }, "lootDefinition": { "id": "event_reward_mythicVC_stock", "vehicleChests": [ { "chestId": "mythic", "vehicleId": "stock", "targetIndex": 0 } ] }, "maxCollectAmount": -1 } ] } ]] end local json = {} local function escape_str(s) s = s:gsub('\\', '\\\\') s = s:gsub('"', '\\"') s = s:gsub('\b', '\\b') s = s:gsub('\f', '\\f') s = s:gsub('\n', '\\n') s = s:gsub('\r', '\\r') s = s:gsub('\t', '\\t') return s end function json.encode(value) local t = type(value) if t == "nil" then return "null" elseif t == "boolean" then return tostring(value) elseif t == "number" then return tostring(value) elseif t == "string" then return '"' .. escape_str(value) .. '"' elseif t == "table" then local isArray = true local maxIndex = 0 for k, v in pairs(value) do if type(k) ~= "number" then isArray = false break else if k > maxIndex then maxIndex = k end end end local items = {} if isArray then for i = 1, maxIndex do table.insert(items, json.encode(value[i])) end return "[" .. table.concat(items, ",") .. "]" else for k, v in pairs(value) do table.insert(items, '"' .. escape_str(k) .. '":' .. json.encode(v)) end return "{" .. table.concat(items, ",") .. "}" end else print("Unsupported data type: " .. t) end end function json.decode(input) local pos = 1 local parseValue, parseString, parseNumber, parseArray, parseObject, skipWhitespace function skipWhitespace() while pos <= #input and input:sub(pos,pos):match("%s") do pos = pos + 1 end end function parseValue() skipWhitespace() local c = input:sub(pos,pos) if c == '"' then return parseString() elseif c == '{' then return parseObject() elseif c == '[' then return parseArray() elseif c:match("[%d%-]") then return parseNumber() elseif input:sub(pos,pos+3) == "true" then pos = pos+4; return true elseif input:sub(pos,pos+4) == "false" then pos = pos+5; return false elseif input:sub(pos,pos+3) == "null" then pos = pos+4; return nil else print("Invalid JSON at position " .. pos) end end function parseString() pos = pos + 1 local startPos = pos local result = "" while pos <= #input do local c = input:sub(pos,pos) if c == '"' then result = result .. input:sub(startPos, pos-1) pos = pos + 1 return result elseif c == '\\' then result = result .. input:sub(startPos, pos-1) pos = pos + 1 local esc = input:sub(pos,pos) if esc == '"' then result = result .. '"' elseif esc == '\\' then result = result .. '\\' elseif esc == '/' then result = result .. '/' elseif esc == 'b' then result = result .. '\b' elseif esc == 'f' then result = result .. '\f' elseif esc == 'n' then result = result .. '\n' elseif esc == 'r' then result = result .. '\r' elseif esc == 't' then result = result .. '\t' else print("Invalid escape sequence: \\"..esc) end pos = pos + 1 startPos = pos else pos = pos + 1 end end print("Unterminated string") end function parseNumber() local startPos = pos while pos <= #input and input:sub(pos,pos):match("[0-9eE%+%-%.]") do pos = pos + 1 end local numStr = input:sub(startPos, pos-1) local num = tonumber(numStr) if not num then print("Invalid number: " .. numStr) end return num end function parseArray() pos = pos + 1 local arr = {} skipWhitespace() if input:sub(pos,pos) == "]" then pos = pos+1; return arr end while true do table.insert(arr, parseValue()) skipWhitespace() local c = input:sub(pos,pos) if c == "]" then pos = pos + 1; break elseif c == "," then pos = pos + 1 else print("Expected ',' or ']' in array at position " .. pos) end end return arr end function parseObject() pos = pos + 1 local obj = {} skipWhitespace() if input:sub(pos,pos) == "}" then pos = pos+1; return obj end while true do skipWhitespace() local key = parseString() skipWhitespace() if input:sub(pos,pos) ~= ":" then print("Expected ':' after key at position "..pos) end pos = pos + 1 local value = parseValue() obj[key] = value skipWhitespace() local c = input:sub(pos,pos) if c == "}" then pos = pos + 1; break elseif c == "," then pos = pos + 1 else print("Expected ',' or '}' in object at position " .. pos) end end return obj end return parseValue() end local Crypto = nil local Shell = nil if luajava then local success_crypto, res_crypto = pcall(function() return luajava.bindClass("org.vekendian.Crypto") end) if success_crypto then Crypto = res_crypto end local success_shell, res_shell = pcall(function() return luajava.bindClass("org.vekendian.Shell") end) if success_shell then Shell = res_shell end end local function fileSize(path) local f = io.open(path, "rb") if not f then return -1 end local size = f:seek("end") f:close() return size or -1 end local function checkRoot() local result = Shell.su("id") return result and result:find("uid=0") ~= nil end local function fileExists(path) local f = io.open(path, "rb") if f then f:close(); return true end return Shell.su("[ -f \"" .. path .. "\" ] && echo yes || echo no") == "yes" end local function dirExists(path) return Shell.su("[ -d \"" .. path .. "\" ] && echo yes || echo no") == "yes" end function patchText(v) _G.p_text = type(v) == "table" and (v.value or "") or (v or "") _G.p_loc = type(v) == "table" and (v.localize or "") or "" _G.p_text = _G.p_text:gsub("%s*%(Patched%)", "") _G.p_text = _G.p_text .. " (Patched)" return { value = _G.p_text, localize = _G.p_loc } end function unlock() local hasRoot = checkRoot() gg.toast("🔎Scanning active files...") local eventsPaths = { "/data/data/com.fingersoft.hcr2/files/content_cache/json/events/", "/data/data/com.waxmoon.ma.gp/rootfs/data/user/0/com.fingersoft.hcr2/fcontent_cache/json/events/", "/data/user/0/com.fingersoft.hcr2/fcontent_cache/json/events/", "/data/user/0/com.waxmoon.ma.gp/rootfs/data/user/0/com.fingersoft.hcr2/files/content_cache/json/events/" } local successList = {} local failedList = {} local custom_rewards = rewards() local jsonMod = nil local ok, err = pcall(function() jsonMod = json.decode(custom_rewards) end) if not ok or not jsonMod then table.insert(failedList, "❌Failed to decode rewards JSON") jsonMod = nil end local safeWorkspace = gg.EXT_FILES_DIR .. "/.void_cache/" if hasRoot then Shell.su("mkdir -p \"" .. safeWorkspace .. "\"") Shell.su("chmod 777 \"" .. safeWorkspace .. "\"") if not dirExists(safeWorkspace) then table.insert(failedList, "❌FATAL: Workspace creation failed: " .. safeWorkspace) return end end _G.unlockTmp = {} for _, path in ipairs(eventsPaths) do _G.unlockTmp.active = path .. "active_events.json" _G.unlockTmp.active_decrypted = hasRoot and (safeWorkspace .. ".active_events") or (path .. ".active_events") _G.unlockTmp.targetActivePath = _G.unlockTmp.active _G.unlockTmp.activeMovedViaRoot = false _G.unlockTmp.testOpen = io.open(_G.unlockTmp.active, "r") if _G.unlockTmp.testOpen then _G.unlockTmp.testOpen:close() elseif hasRoot then _G.unlockTmp.secureActiveCopy = safeWorkspace .. "active_events.json" Shell.su("cp \"" .. _G.unlockTmp.active .. "\" \"" .. _G.unlockTmp.secureActiveCopy .. "\"") Shell.su("chmod 777 \"" .. _G.unlockTmp.secureActiveCopy .. "\"") if not fileExists(_G.unlockTmp.secureActiveCopy) then table.insert(failedList, "❌Root copy failed: " .. _G.unlockTmp.active) goto continue_path end _G.unlockTmp.targetActivePath = _G.unlockTmp.secureActiveCopy _G.unlockTmp.activeMovedViaRoot = true else table.insert(failedList, "❌File inaccessible at path: " .. path) goto continue_path end if not fileExists(_G.unlockTmp.targetActivePath) then table.insert(failedList, "❌Pre-decrypt: source not found: " .. _G.unlockTmp.targetActivePath) goto continue_path end if fileSize(_G.unlockTmp.targetActivePath) <= 0 then table.insert(failedList, "❌Pre-decrypt: source is empty (0 bytes): " .. _G.unlockTmp.targetActivePath) goto continue_path end _G.unlockTmp.meta = Crypto.decrypt(_G.unlockTmp.targetActivePath, _G.unlockTmp.active_decrypted) if _G.unlockTmp.activeMovedViaRoot then os.remove(_G.unlockTmp.targetActivePath) end if _G.unlockTmp.meta then _G.unlockTmp.activeFile = io.open(_G.unlockTmp.active_decrypted, "r") if _G.unlockTmp.activeFile then _G.unlockTmp.activeContent = _G.unlockTmp.activeFile:read("*a") _G.unlockTmp.activeFile:close() os.remove(_G.unlockTmp.active_decrypted) _G.unlockTmp.jsonActive = nil _G.unlockTmp.ok2, _G.unlockTmp.err2 = pcall(function() _G.unlockTmp.jsonActive = json.decode(_G.unlockTmp.activeContent) end) if not _G.unlockTmp.ok2 or not _G.unlockTmp.jsonActive then table.insert(failedList, "❌Failed to decode active_events.json at path: " .. path) goto continue_path end _G.unlockTmp.gameEvents = _G.unlockTmp.jsonActive.gameEvents or {} if #_G.unlockTmp.gameEvents == 0 then table.insert(failedList, "❌No active events found at path: " .. path) goto continue_path end _G.unlockTmp.labels = {} for i = 1, #_G.unlockTmp.gameEvents do _G.unlockTmp.labels[i] = tostring(_G.unlockTmp.gameEvents[i]) end _G.unlockTmp.selections = gg.multiChoice(_G.unlockTmp.labels, nil, "Select your current Event:\nCurrent Path: " .. path) if not _G.unlockTmp.selections then table.insert(failedList, "❌User cancelled selection for path: " .. path) goto continue_path end if not jsonMod then table.insert(failedList, "❌Embedded rewards not available, skipping patches for path: " .. path) goto continue_path end _G.unlockTmp.eventRewards = jsonMod.eventRewards _G.unlockTmp.selectionsExist = false for _, selected in pairs(_G.unlockTmp.selections) do if selected then _G.unlockTmp.selectionsExist = true; break end end if _G.unlockTmp.selectionsExist then _G.unlockTmp.fileTaskDone = false _G.unlockTmp.loopOk, _G.unlockTmp.loopErr = pcall(function() for idx, selected in pairs(_G.unlockTmp.selections) do if selected then _G.unlockTmp.eventName = _G.unlockTmp.gameEvents[idx] if _G.unlockTmp.eventName then _G.unlockTmp.eventPath = path .. _G.unlockTmp.eventName .. ".json" _G.unlockTmp.targetEventPath = _G.unlockTmp.eventPath _G.unlockTmp.secureEventCopy = safeWorkspace .. _G.unlockTmp.eventName .. ".json" _G.unlockTmp.decryptedPath = hasRoot and (safeWorkspace .. "." .. _G.unlockTmp.eventName) or (path .. "." .. _G.unlockTmp.eventName) _G.unlockTmp.eventMovedViaRoot = false _G.unlockTmp.testEventOpen = io.open(_G.unlockTmp.eventPath, "r") if _G.unlockTmp.testEventOpen then _G.unlockTmp.testEventOpen:close() elseif hasRoot then Shell.su("cp \"" .. _G.unlockTmp.eventPath .. "\" \"" .. _G.unlockTmp.secureEventCopy .. "\"") Shell.su("chmod 777 \"" .. _G.unlockTmp.secureEventCopy .. "\"") if not fileExists(_G.unlockTmp.secureEventCopy) then LOG.warn("EventPatch", "❌Root event copy FAILED for: " .. _G.unlockTmp.secureEventCopy) table.insert(failedList, "❌Root copy failed: " .. _G.unlockTmp.eventPath) goto next_event end _G.unlockTmp.targetEventPath = _G.unlockTmp.secureEventCopy _G.unlockTmp.eventMovedViaRoot = true else table.insert(failedList, "❌Skipped unreadable event: " .. _G.unlockTmp.eventName) goto next_event end if not fileExists(_G.unlockTmp.targetEventPath) then table.insert(failedList, "❌Pre-decrypt: event not found: " .. _G.unlockTmp.targetEventPath) goto next_event end if fileSize(_G.unlockTmp.targetEventPath) <= 0 then table.insert(failedList, "❌Pre-decrypt: event is empty (0 bytes): " .. _G.unlockTmp.targetEventPath) goto next_event end _G.unlockTmp.eventMeta = Crypto.decrypt(_G.unlockTmp.targetEventPath, _G.unlockTmp.decryptedPath) if _G.unlockTmp.eventMovedViaRoot then os.remove(_G.unlockTmp.targetEventPath) end if _G.unlockTmp.eventMeta then _G.unlockTmp.eventFile = io.open(_G.unlockTmp.decryptedPath, "r+") if _G.unlockTmp.eventFile then _G.unlockTmp.writeOk, _G.unlockTmp.writeErr = pcall(function() _G.unlockTmp.eventContent = _G.unlockTmp.eventFile:read("*a") _G.unlockTmp.jsonEvent = json.decode(_G.unlockTmp.eventContent) _G.unlockTmp.jsonEvent.eventRewards = _G.unlockTmp.eventRewards _G.unlockTmp.jsonEvent.minRankToJoin = 0 _G.unlockTmp.jsonEvent.rankBrackets = 2 _G.unlockTmp.jsonEvent.name = patchText(_G.unlockTmp.jsonEvent.name) _G.unlockTmp.jsonEvent.description = patchText(_G.unlockTmp.jsonEvent.description) _G.unlockTmp.encodedEvent = json.encode(_G.unlockTmp.jsonEvent) _G.unlockTmp.eventFile:seek("set", 0) _G.unlockTmp.eventFile:write(_G.unlockTmp.encodedEvent) _G.unlockTmp.eventFile:flush() _G.unlockTmp.eventFile:close() if _G.unlockTmp.eventMovedViaRoot and hasRoot then _G.unlockTmp.secureEncryptedOut = safeWorkspace .. _G.unlockTmp.eventName .. "_patched.json" Crypto.encrypt(_G.unlockTmp.decryptedPath, _G.unlockTmp.secureEncryptedOut, _G.unlockTmp.eventMeta) Shell.su("cp \"" .. _G.unlockTmp.secureEncryptedOut .. "\" \"" .. _G.unlockTmp.eventPath .. "\"") Shell.su("chmod 660 \"" .. _G.unlockTmp.eventPath .. "\"") os.remove(_G.unlockTmp.secureEncryptedOut) else Crypto.encrypt(_G.unlockTmp.decryptedPath, _G.unlockTmp.eventPath, _G.unlockTmp.eventMeta) end table.insert(successList, _G.unlockTmp.eventName) end) if not _G.unlockTmp.writeOk then pcall(function() _G.unlockTmp.eventFile:close() end) table.insert(failedList, "Failed processing " .. _G.unlockTmp.eventName .. ": " .. tostring(_G.unlockTmp.writeErr)) end os.remove(_G.unlockTmp.decryptedPath) else table.insert(failedList, "❌Cannot open decrypted file: " .. _G.unlockTmp.decryptedPath) end else table.insert(failedList, "❌Failed to decrypt event: " .. _G.unlockTmp.eventName) end end end ::next_event:: end end) if not _G.unlockTmp.loopOk then table.insert(failedList, "Critical file processing loop crash: " .. tostring(_G.unlockTmp.loopErr)) end _G.unlockTmp.fileTaskDone = true while not _G.unlockTmp.fileTaskDone do gg.sleep(50) end end else table.insert(failedList, "❌Cannot open active_events.json at path: " .. path) end else table.insert(failedList, "❌Failed to decrypt active_events.json at path: " .. path) end ::continue_path:: end if hasRoot then Shell.su("rm -rf \"" .. safeWorkspace .. "\"") end local resultMsg = "" if #successList > 0 then resultMsg = resultMsg .. "✅Successfully:\n" for _, name in ipairs(successList) do resultMsg = resultMsg .. "- " .. name .. "\n" end resultMsg = resultMsg .. "\n" end _G.unlockTmp = nil if #successList > 0 then print(resultMsg) gg.alert("❗The game will now be killed.\n\n❗Restart it to see the patch effects.") gg.processKill() gg.sleep(1000) os.exit() else gg.alert("Failed\n\nFailed to patch, try again.", "OK") end end function restoreEvents() local hasRoot = checkRoot() gg.toast("🔎Scanning active files...") local eventsPaths = { "/data/data/com.fingersoft.hcr2/files/content_cache/json/events/", "/data/user/0/com.fingersoft.hcr2/files/content_cache/json/events/", "/data/user/0/com.waxmoon.ma.gp/rootfs/data/user/0/com.fingersoft.hcr2/files/content_cache/json/events/" } local successList = {} local failedList = {} local state = {} local safeWorkspace = gg.EXT_FILES_DIR .. "/.void_cache/" if hasRoot then Shell.su("mkdir -p \"" .. safeWorkspace .. "\"") Shell.su("chmod 777 \"" .. safeWorkspace .. "\"") if not dirExists(safeWorkspace) then table.insert(failedList, "❌FATAL: Workspace creation failed: " .. safeWorkspace) gg.alert("❌FATAL: Could not create workspace directory.\n" .. safeWorkspace) return end end for _, path in ipairs(eventsPaths) do state.active = path .. "active_events.json" state.active_decrypted = hasRoot and (safeWorkspace .. ".active_events") or (path .. ".active_events") state.targetActivePath = state.active state.activeMovedViaRoot = false state.testOpen = io.open(state.active, "r") if state.testOpen then state.testOpen:close() elseif hasRoot then state.secureActiveCopy = safeWorkspace .. "active_events.json" Shell.su("cp \"" .. state.active .. "\" \"" .. state.secureActiveCopy .. "\"") Shell.su("chmod 777 \"" .. state.secureActiveCopy .. "\"") if not fileExists(state.secureActiveCopy) then table.insert(failedList, "❌Root copy failed: " .. state.active) goto continue_path end state.targetActivePath = state.secureActiveCopy state.activeMovedViaRoot = true else table.insert(failedList, "❌File inaccessible at path: " .. path) goto continue_path end if not fileExists(state.targetActivePath) then table.insert(failedList, "❌Pre-decrypt: source not found: " .. state.targetActivePath) goto continue_path end if fileSize(state.targetActivePath) <= 0 then table.insert(failedList, "❌Pre-decrypt: source is empty (0 bytes): " .. state.targetActivePath) goto continue_path end state.meta = Crypto.decrypt(state.targetActivePath, state.active_decrypted) if state.activeMovedViaRoot then os.remove(state.targetActivePath) end if state.meta then state.activeFile = io.open(state.active_decrypted, "r") if state.activeFile then state.activeContent = state.activeFile:read("*a") state.activeFile:close() os.remove(state.active_decrypted) state.jsonActive = nil state.ok, state.err = pcall(function() state.jsonActive = json.decode(state.activeContent) end) if state.ok and state.jsonActive then state.gameEvents = state.jsonActive.gameEvents or {} if #state.gameEvents > 0 then state.labels = {} for i = 1, #state.gameEvents do state.labels[i] = tostring(state.gameEvents[i]) end state.selections = gg.multiChoice(state.labels, nil, "Select files to restore:\nPath: " .. path) if state.selections then for idx, selected in pairs(state.selections) do if selected then state.eventName = state.gameEvents[idx] if state.eventName then state.eventPath = path .. state.eventName .. ".json" state.removed, state.remErr = os.remove(state.eventPath) if not state.removed and hasRoot then Shell.su("rm \"" .. state.eventPath .. "\"") state.check = Shell.su("[ -f \"" .. state.eventPath .. "\" ] && echo yes || echo no") if state.check == "no" then state.removed = true else state.remErr = "❌Root removal failed" end end if state.removed then table.insert(successList, state.eventName) else table.insert(failedList, "❌Failed to delete " .. state.eventName .. ": " .. tostring(state.remErr)) end end end end end else table.insert(failedList, "❌No active events found at path: " .. path) end else table.insert(failedList, "❌Failed to decode active_events.json at path: " .. path) end else table.insert(failedList, "❌Cannot open active_events.json at path: " .. path) end else table.insert(failedList, "❌Failed to decrypt active_events.json at path: " .. path) end ::continue_path:: end if hasRoot then Shell.su("rm -rf \"" .. safeWorkspace .. "\"") end local resultMsg = "" if #successList > 0 then resultMsg = resultMsg .. "✅Successfully Restored:\n" for _, name in ipairs(successList) do resultMsg = resultMsg .. "- " .. name .. ".json\n" end resultMsg = resultMsg .. "\n" end if #failedList > 0 then resultMsg = resultMsg .. "❌Failed:\n" for _, e in ipairs(failedList) do resultMsg = resultMsg .. "- " .. e .. "\n" end end gg.alert(resultMsg) if #successList > 0 then print(resultMsg) gg.alert("❗The game will now be killed.\n\n❗Restart it and all Rewards will be restored!") gg.processKill() gg.sleep(1000) os.exit() end end MainMenu() while true do if gg.isVisible(true) then gg.setVisible(false) MainMenu() end local start = os.clock() while os.clock() - start < 0.1 do end end