Files
UltimateMenu/Nenyoo/lib/Ultimate_Menu_Legacy.lua
L7NEG cf2e354173 Expand legacy heist tools and refresh offsets
Add heist cut and payout controls, safer finale actions, loot options, and teleport menus. Refresh legacy offsets and move event and business controls to tunables, with compatibility and menu-guard updates.
2026-09-30 11:40:18 +03:00

9003 lines
343 KiB
Lua

-- GTA V global and script-local addresses are loaded from game_offsets.offsets.
function MPX()
local PI = stats.get_int("MPPLY_LAST_MP_CHAR")
if PI == 1 then
return "MP1_"
end
return "MP0_"
end
function SkipCutscene()
script.run_in_fiber(function(script)
if CUTSCENE.IS_CUTSCENE_PLAYING() then
CUTSCENE.STOP_CUTSCENE_IMMEDIATELY()
script:sleep(100)
CUTSCENE.REMOVE_CUTSCENE()
end
end)
end
function SPX()
local player_ped = PLAYER.PLAYER_PED_ID()
if player_ped == 0 then
return "SP0_"
end
local PI = ENTITY.GET_ENTITY_MODEL(player_ped)
if PI == joaat("Player_One") then
return "SP1_"
elseif PI == joaat("Player_Two") then
return "SP2_"
end
return "SP0_"
end
local bypassOnlineCheckbox = nil
function checkOnline()
if bypassOnlineCheckbox and bypassOnlineCheckbox:is_enabled() then
return false
end
if
SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
or not ENTITY.DOES_ENTITY_EXIST(PLAYER.PLAYER_PED_ID())
then
ImGui.Text("Waiting for game...")
return true
end
if not network.is_session_started() then
ImGui.Text("\nUnavailable in Single Player.\n\n")
return true
end
return false
end
function checkStoryMode()
if
SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
or not ENTITY.DOES_ENTITY_EXIST(PLAYER.PLAYER_PED_ID())
then
ImGui.Text("Waiting for game...")
return true
end
if network.is_session_started() then
ImGui.Text("\nUnavailable in MultiPlayer.\n\n")
return true
end
return false
end
-- Silent offline check: returns true if offline, but shows NO text
function isOffline()
if bypassOnlineCheckbox and bypassOnlineCheckbox:is_enabled() then
return false
end
if
SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
or not ENTITY.DOES_ENTITY_EXIST(PLAYER.PLAYER_PED_ID())
then
return true
end
if not network.is_session_started() then
return true
end
return false
end
-- Shared guard: ensures exactly ONE warning callback per tab
local online_guards = {}
function ensureOnlineGuard(tab)
if not online_guards[tab] then
online_guards[tab] = true
tab:add_imgui(function()
checkOnline() -- only this one shows the warning text
end)
end
end
-- Story Mode widget system
local story_widgets = {}
local story_initialized = {}
function isStoryBlocked()
if
SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
or not ENTITY.DOES_ENTITY_EXIST(PLAYER.PLAYER_PED_ID())
then
return true
end
if network.is_session_started() then
return true
end
return false
end
local story_guards = {}
function ensureStoryGuard(tab)
if not story_guards[tab] then
story_guards[tab] = true
tab:add_imgui(function()
checkStoryMode()
end)
end
end
function initStoryTab(tab)
if not story_initialized[tab] then
story_initialized[tab] = true
story_widgets[tab] = {}
ensureStoryGuard(tab)
tab:add_imgui(function()
if isStoryBlocked() then
return
end
for _, widget in ipairs(story_widgets[tab]) do
if widget.type == "button" then
if ImGui.Button(widget.label) then
widget.callback()
end
elseif widget.type == "sameline" then
ImGui.SameLine()
elseif widget.type == "separator" then
ImGui.Separator()
elseif widget.type == "text" then
ImGui.Text(widget.label)
elseif widget.type == "checkbox" then
local changed
widget.state, changed = ImGui.Checkbox(widget.label, widget.state)
elseif widget.type == "input_int" then
widget.value, _ = ImGui.InputInt(widget.label, widget.value)
end
end
end)
end
end
function addStoryButton(tab, label, callback)
initStoryTab(tab)
table.insert(story_widgets[tab], { type = "button", label = label, callback = callback })
end
function addStorySameline(tab)
initStoryTab(tab)
table.insert(story_widgets[tab], { type = "sameline" })
end
function addStorySeparator(tab)
initStoryTab(tab)
table.insert(story_widgets[tab], { type = "separator" })
end
function addStoryText(tab, label)
initStoryTab(tab)
table.insert(story_widgets[tab], { type = "text", label = label })
end
function addStoryCheckbox(tab, label, default_value)
initStoryTab(tab)
local checkbox_obj = {
type = "checkbox",
label = label,
state = default_value or false,
is_enabled = function(self)
return self.state
end,
set_enabled = function(self, val)
self.state = val
end,
}
table.insert(story_widgets[tab], checkbox_obj)
return checkbox_obj
end
function addStoryInputInt(tab, label, default_value)
initStoryTab(tab)
local input_obj = {
type = "input_int",
label = label,
value = default_value or 0,
get_value = function(self)
return self.value
end,
set_value = function(self, val)
self.value = val
end,
}
table.insert(story_widgets[tab], input_obj)
return input_obj
end
function makeStoryTab(tab)
local wrapped = {}
function wrapped:add_tab(name)
return makeStoryTab(tab:add_tab(name))
end
function wrapped:add_button(label, callback)
addStoryButton(tab, label, callback)
end
function wrapped:add_checkbox(label, default_value)
return addStoryCheckbox(tab, label, default_value)
end
function wrapped:add_input_int(label, default_value)
return addStoryInputInt(tab, label, default_value)
end
function wrapped:add_text(label)
addStoryText(tab, label)
end
function wrapped:add_separator()
addStorySeparator(tab)
end
function wrapped:add_sameline()
addStorySameline(tab)
end
function wrapped:add_imgui(callback)
ensureStoryGuard(tab)
tab:add_imgui(function()
if isStoryBlocked() then
return
end
callback()
end)
end
return wrapped
end
local online_widgets = {}
function initOnlineTab(tab)
if not online_widgets[tab] then
online_widgets[tab] = {}
ensureOnlineGuard(tab) -- shared guard shows the warning
tab:add_imgui(function()
if isOffline() then
return
end -- silent check, no duplicate text
for _, widget in ipairs(online_widgets[tab]) do
if widget.type == "button" then
if ImGui.Button(widget.label) then
widget.callback()
end
elseif widget.type == "sameline" then
ImGui.SameLine()
elseif widget.type == "separator" then
ImGui.Separator()
elseif widget.type == "text" then
ImGui.Text(widget.label)
elseif widget.type == "checkbox" then
local changed
widget.state, changed = ImGui.Checkbox(widget.label, widget.state)
elseif widget.type == "input_int" then
widget.value, _ = ImGui.InputInt(widget.label, widget.value)
end
end
end)
end
end
function addOnlineButton(tab, label, callback)
initOnlineTab(tab)
table.insert(online_widgets[tab], { type = "button", label = label, callback = callback })
end
function addOnlineSameline(tab)
initOnlineTab(tab)
table.insert(online_widgets[tab], { type = "sameline" })
end
function addOnlineSeparator(tab)
initOnlineTab(tab)
table.insert(online_widgets[tab], { type = "separator" })
end
function addOnlineText(tab, label)
initOnlineTab(tab)
table.insert(online_widgets[tab], { type = "text", label = label })
end
function addOnlineCheckbox(tab, label, default_value)
initOnlineTab(tab)
local checkbox_obj = {
type = "checkbox",
label = label,
state = default_value or false,
is_enabled = function(self)
return self.state
end,
set_enabled = function(self, val)
self.state = val
end,
}
table.insert(online_widgets[tab], checkbox_obj)
return checkbox_obj
end
function addOnlineInputInt(tab, label, default_value)
initOnlineTab(tab)
local input_obj = {
type = "input_int",
label = label,
value = default_value or 0,
get_value = function(self)
return self.value
end,
set_value = function(self, val)
self.value = val
end,
}
table.insert(online_widgets[tab], input_obj)
return input_obj
end
function makeOnlineTab(tab)
local wrapped = {}
function wrapped:add_tab(name)
return makeOnlineTab(tab:add_tab(name))
end
function wrapped:add_button(label, callback)
addOnlineButton(tab, label, callback)
end
function wrapped:add_checkbox(label, default_value)
return addOnlineCheckbox(tab, label, default_value)
end
function wrapped:add_input_int(label, default_value)
return addOnlineInputInt(tab, label, default_value)
end
function wrapped:add_text(label)
addOnlineText(tab, label)
end
function wrapped:add_separator()
addOnlineSeparator(tab)
end
function wrapped:add_sameline()
addOnlineSameline(tab)
end
function wrapped:add_imgui(callback)
ensureOnlineGuard(tab) -- shared guard shows the warning
tab:add_imgui(function()
if isOffline() then
return
end -- silent check, no duplicate text
callback()
end)
end
return wrapped
end
function SN_ApplyApartmentCutsCherax(c1, c2, c3, c4, isFleeca)
if isFleeca then
c3 = 0
c4 = 0
end
globals.set_int(ACg5, c1)
globals.set_int(ACg6, c2)
globals.set_int(ACg7, c3)
globals.set_int(ACg8, c4)
end
function SN_ApartmentMaxCutCherax(doubleWeek)
local payoutsByHash = {
[1328892776] = { 100625, 201250, 251563 },
[964111671] = { 350000, 700000, 875000 },
[1131632450] = { 472500, 945000, 1181250 },
[1967927346] = { 353500, 707000, 883750 },
[1182286714] = { 750000, 1500000, 1875000 },
}
local key = globals.get_int(ACDg + (PLAYER.PLAYER_ID() * 77) + 24 + 2)
local diff = globals.get_int(AHDg) + 1
if diff < 1 or diff > 3 then
diff = 3
end
local row = payoutsByHash[key]
if row == nil then
return nil
end
local payout = row[diff]
local cut = math.floor(3000000 / (payout / 100) / (doubleWeek and 2 or 1))
return cut, key
end
function SN_ApplyCayoCutsCherax(c1, c2, c3, c4)
globals.set_int(CPCg1, c1)
globals.set_int(CPCg2, c2)
globals.set_int(CPCg3, c3)
globals.set_int(CPCg4, c4)
end
function SN_CayoMaxCutCherax()
local target = stats.get_int(MPX() .. "H4CNF_TARGET")
local isHard = (stats.get_int(MPX() .. "H4_PROGRESS") & 4096) ~= 0
local diff = isHard and 2 or 1
local payouts = {
[0] = { 630000, 693000 },
[1] = { 700000, 770000 },
[2] = { 770000, 847000 },
[3] = { 1300000, 1430000 },
[4] = { 1100000, 1210000 },
[5] = { 1900000, 2090000 },
}
local row = payouts[target]
if row == nil then
return nil
end
local payout = row[diff]
local maxPayout = 2550000
local cut = math.floor(maxPayout / (payout / 100))
local final = math.floor(payout * (cut / 100))
local difference = 1000
local found = false
local guard = 0
while not found and guard < 2000 do
guard = guard + 1
local pavel = math.floor(final * 0.02)
local fee = math.floor(final * 0.10)
local net = final - (pavel + fee)
if net >= maxPayout - difference and net <= maxPayout then
found = true
else
cut = cut + 1
final = math.floor(payout * (cut / 100))
if cut > 500 then
cut = math.floor(maxPayout / (payout / 100))
final = math.floor(payout * (cut / 100))
difference = difference + 1000
end
end
end
return cut
end
function changeSession(session)
script.run_in_fiber(function(script)
globals.set_int(CSg1, session)
if session == -1 then
globals.set_int(CSg3, -1)
end
script:sleep(1000)
globals.set_int(CSg2, 1)
script:sleep(1000)
globals.set_int(CSg2, 0)
end)
end
function stats_set_packed_bools(packed_bool_start, packed_bool_finish, bool)
for i = packed_bool_start, packed_bool_finish do
stats.set_packed_stat_bool(i, bool)
end
end
function globals_set_ints(global_start, global_finish, step, value)
for i = global_start, global_finish, step do
globals.set_int(i, value)
end
end
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
L7NEG = gui.get_tab("Ultimate Menu 1.73 By L7NEG")
L7NEG:add_text(" Ultimate Menu 1.73 " .. (ULTIMATE_MENU_EDITION or "Legacy") .. " ")
L7NEG:add_text(" v3")
bypassOnlineCheckbox = L7NEG:add_checkbox("Bypass Online Check")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Self = makeOnlineTab(L7NEG:add_tab("Self Menu"))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AGCT = Self:add_checkbox("Unlock Gender Change")
script.register_looped("UnlockGenderChange", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
local want = AGCT:is_enabled() and 52 or 0
if want ~= _genderPrev then
stats.set_int(MPX() .. "ALLOW_GENDER_CHANGE", want)
_genderPrev = want
end
script:sleep(500)
end)
RTPT = Self:add_checkbox("Remove Transaction Error")
script.register_looped("RemoveTransactionError", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
if RTPT:is_enabled() then
globals.set_int(4516981, 0)
globals.set_int(4516982, 0)
globals.set_int(4516983, 0)
end
script:sleep(500)
end)
Self:add_button("Remove Published And Players Job Liked To You", function()
stats.set_int("MPPLY_AWD_FM_CR_DM_MADE", 0)
stats.set_int("MPPLY_AWD_FM_CR_RACES_MADE", 0)
stats.set_int("MPPLY_NUM_CAPTURES_CREATED", 0)
stats.set_int("MPPLY_LTS_CREATED", 0)
stats.set_int("MPPLY_AWD_FM_CR_PLAYED_BY_PEEP", 0)
stats.set_int("MPPLY_AWD_FM_CR_MISSION_SCORE", 0)
stats.set_int("MPPLY_FM_MISSION_LIKES", 0)
end)
Self:add_button("Remove Orbital Cannon Cooldown", function()
stats.set_int(MPX() .. "ORBITAL_CANNON_COOLDOWN", 0)
end)
Self:add_button("Refill Nightclub Popularity", function()
stats.set_int(MPX() .. "CLUB_POPULARITY", 1000)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Self:add_button("Refill Inventory/Armour", function()
stats.set_int(MPX() .. "NO_BOUGHT_YUM_SNACKS", 30)
stats.set_int(MPX() .. "NO_BOUGHT_HEALTH_SNACKS", 15)
stats.set_int(MPX() .. "NO_BOUGHT_EPIC_SNACKS", 5)
stats.set_int(MPX() .. "NUMBER_OF_CHAMP_BOUGHT", 5)
stats.set_int(MPX() .. "NUMBER_OF_ORANGE_BOUGHT", 11)
stats.set_int(MPX() .. "NUMBER_OF_BOURGE_BOUGHT", 10)
stats.set_int(MPX() .. "NUMBER_OF_SPRUNK_BOUGHT", 10)
stats.set_int(MPX() .. "CIGARETTES_BOUGHT", 20)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_1_COUNT", 10)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_2_COUNT", 10)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_3_COUNT", 10)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_4_COUNT", 10)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_5_COUNT", 10)
stats.set_int(MPX() .. "BREATHING_APPAR_BOUGHT", 20)
end)
Self:add_button("Refill Inv/Armour x1000", function()
stats.set_int(MPX() .. "NO_BOUGHT_YUM_SNACKS", 1000)
stats.set_int(MPX() .. "NO_BOUGHT_HEALTH_SNACKS", 1000)
stats.set_int(MPX() .. "NO_BOUGHT_EPIC_SNACKS", 1000)
stats.set_int(MPX() .. "NUMBER_OF_CHAMP_BOUGHT", 1000)
stats.set_int(MPX() .. "NUMBER_OF_ORANGE_BOUGHT", 1000)
stats.set_int(MPX() .. "NUMBER_OF_BOURGE_BOUGHT", 1000)
stats.set_int(MPX() .. "NUMBER_OF_SPRUNK_BOUGHT", 1000)
stats.set_int(MPX() .. "CIGARETTES_BOUGHT", 1000)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_1_COUNT", 1000)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_2_COUNT", 1000)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_3_COUNT", 1000)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_4_COUNT", 1000)
stats.set_int(MPX() .. "MP_CHAR_ARMOUR_5_COUNT", 1000)
stats.set_int(MPX() .. "BREATHING_APPAR_BOUGHT", 1000)
end)
Self:add_separator()
Self:add_text("Bad Sport!")
BadSportCombo = 0
Self:add_imgui(function()
ImGui.PushItemWidth(140)
BadSportCombo = ImGui.Combo("##BadSport", BadSportCombo, { "Remove", "Add" }, 2)
end)
function BadSport(State, Overall, Bool)
script.run_in_fiber(function(script)
gui.show_message("Bad Sport!", "Awaiting Session Change")
script:sleep(1000)
stats.set_int("MPPLY_BADSPORT_MESSAGE", State)
stats.set_float("MPPLY_OVERALL_BADSPORT", Overall)
stats.set_bool("MPPLY_CHAR_IS_BADSPORT", Bool)
globals.set_int(CSg1, 11)
globals.set_int(CSg2, 1)
script:sleep(300)
globals.set_int(CSg2, 0)
end)
end
Self:add_sameline()
Self:add_button("Execute", function()
if BadSportCombo == 0 then
BadSport(0, 0, false)
else
BadSport(1, 3000, true)
end
end)
StoryCharacters = makeStoryTab(L7NEG:add_tab("Story Mode"))
StoryCharacters:add_imgui(function()
local CurrentSPMoneyValue = stats.get_int(SPX() .. "TOTAL_CASH")
local used
CurrentSPMoneyValue, used = ImGui.SliderInt("Current Character Cash", CurrentSPMoneyValue, 1, 2147483646)
if used then
stats.set_int(SPX() .. "TOTAL_CASH", CurrentSPMoneyValue)
end
end)
StoryCharacters:add_separator()
StoryCharacters:add_button("Add 1 Mil Cash $", function()
stats.set_int(SPX() .. "TOTAL_CASH", stats.get_int(SPX() .. "TOTAL_CASH") + 1000000)
end)
StoryCharacters:add_button("Add 10 Mil Cash $", function()
stats.set_int(SPX() .. "TOTAL_CASH", stats.get_int(SPX() .. "TOTAL_CASH") + 10000000)
end)
StoryCharacters:add_button("Add 100 Mil Cash $", function()
stats.set_int(SPX() .. "TOTAL_CASH", stats.get_int(SPX() .. "TOTAL_CASH") + 100000000)
end)
StoryCharacters:add_button("Add 1 Bil Cash $", function()
stats.set_int(SPX() .. "TOTAL_CASH", stats.get_int(SPX() .. "TOTAL_CASH") + 1000000000)
end)
StoryCharacters:add_separator()
StoryCharacters:add_button("Max Current Character Skills", function()
stats.set_int(SPX() .. "SPECIAL_ABILITY_UNLOCKED", 100)
stats.set_float(SPX() .. "DIST_RUNNING", 175 * 100)
stats.set_int(SPX() .. "TIME_UNDERWATER", 30 * 60 * 1000 * 100)
stats.set_int(SPX() .. "UNARMED_HITS", 20 * 100)
stats.set_int(SPX() .. "NUMBER_NEAR_MISS", 50 * 100)
stats.set_int(SPX() .. "PLANE_LANDINGS", 10 * 100)
stats.set_int(SPX() .. "KILLS_STEALTH", 2 * 100)
stats.set_int(SPX() .. "HITS_MISSION", 40 * 100)
stats.set_int(SPX() .. "HITS_PEDS_VEHICLES", 80 * 100)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RecoveryMenu = makeOnlineTab(L7NEG:add_tab("Recovery Menu"))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local rp = {
0,
800,
2100,
3800,
6100,
9500,
12500,
16000,
19800,
24000,
28500,
33400,
38700,
44200,
50200,
56400,
63000,
69900,
77100,
84700,
92500,
100700,
109200,
118000,
127100,
136500,
146200,
156200,
166500,
177100,
188000,
199200,
210700,
222400,
234500,
246800,
259400,
272300,
285500,
299000,
312700,
326800,
341000,
355600,
370500,
385600,
401000,
416600,
432600,
448800,
465200,
482000,
499000,
516300,
533800,
551600,
569600,
588000,
606500,
625400,
644500,
663800,
683400,
703300,
723400,
743800,
764500,
785400,
806500,
827900,
849600,
871500,
893600,
916000,
938700,
961600,
984700,
1008100,
1031800,
1055700,
1079800,
1104200,
1128800,
1153700,
1178800,
1204200,
1229800,
1255600,
1281700,
1308100,
1334600,
1361400,
1388500,
1415800,
1443300,
1471100,
1499100,
1527300,
}
function getRP(level)
if level < #rp then
return rp[level]
else
return math.floor(25 * (level ^ 2) + 23575 * level - 1023150)
end
end
RankSetter = RecoveryMenu:add_tab("Set Rank menu")
local rpLevelValue = 1
RankSetter:add_imgui(function()
if isOffline() then
return
end
ImGui.Text("Your current Rank is " .. stats.get_int(MPX() .. "CHAR_RANK_FM"))
ImGui.Separator()
rpLevelValue, _ = ImGui.InputInt("Rank", rpLevelValue)
if ImGui.Button("Set Rank") then
local rankValue = rpLevelValue
if rankValue <= 0 or rankValue > 8000 then
gui.show_message(
"ERROR",
"Your RP level " .. rankValue .. " cannot be set because it is outside the valid range (1-8000)."
)
else
stats.set_int(MPX() .. "CHAR_SET_RP_GIFT_ADMIN", getRP(rankValue))
stats.set_int("MPPLY_GLOBALXP", getRP(rankValue))
globals.set_int(CSg1, 11)
globals.set_int(CSg2, 1)
globals.set_int(CSg2, 0)
gui.show_message(
"Rank Correction",
"Your Rank was set to " .. rankValue .. ", Click change session For Your New Rank."
)
end
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CrewRankSetter = RecoveryMenu:add_tab("Set Crew Rank menu")
local crewRpLevelValue = 1
CrewRankSetter:add_imgui(function()
if isOffline() then
return
end
ImGui.Text("Your Current Crew Rank is " .. stats.get_int("MPPLY_CURRENT_CREW_RANK"))
ImGui.Separator()
crewRpLevelValue, _ = ImGui.InputInt("Rank##Crew", crewRpLevelValue)
if ImGui.Button("Set Slot 1 Crew Rank") then
local rankValue = crewRpLevelValue
if rankValue <= 0 or rankValue > 8000 then
gui.show_message(
"ERROR",
"Your Crew level " .. rankValue .. " cannot be set because it is outside the valid range (1-8000)."
)
else
stats.set_int("MPPLY_CREW_LOCAL_XP_0", getRP(rankValue))
gui.show_message("Crew Rank Setter", "Your Crew Slot 1 Rank was set to " .. rankValue .. ", .")
end
end
if ImGui.Button("Set Slot 2 Crew Rank") then
local rankValue = crewRpLevelValue
if rankValue <= 0 or rankValue > 8000 then
gui.show_message(
"ERROR",
"Your Crew level " .. rankValue .. " cannot be set because it is outside the valid range (1-8000)."
)
else
stats.set_int("MPPLY_CREW_LOCAL_XP_1", getRP(rankValue))
gui.show_message("Crew Rank Setter", "Your Crew Slot 2 Rank was set to " .. rankValue .. ", .")
end
end
if ImGui.Button("Set Slot 3 Crew Rank") then
local rankValue = crewRpLevelValue
if rankValue <= 0 or rankValue > 8000 then
gui.show_message(
"ERROR",
"Your Crew level " .. rankValue .. " cannot be set because it is outside the valid range (1-8000)."
)
else
stats.set_int("MPPLY_CREW_LOCAL_XP_2", getRP(rankValue))
gui.show_message("Crew Rank Setter", "Your Crew Slot 3 Rank was set to " .. rankValue .. ", .")
end
end
if ImGui.Button("Set Slot 4 Crew Rank") then
local rankValue = crewRpLevelValue
if rankValue <= 0 or rankValue > 8000 then
gui.show_message(
"ERROR",
"Your Crew level " .. rankValue .. " cannot be set because it is outside the valid range (1-8000)."
)
else
stats.set_int("MPPLY_CREW_LOCAL_XP_3", getRP(rankValue))
gui.show_message("Crew Rank Setter", "Your Crew Slot 4 Rank was set to " .. rankValue .. ", .")
end
end
if ImGui.Button("Set Slot 5 Crew Rank") then
local rankValue = crewRpLevelValue
if rankValue <= 0 or rankValue > 8000 then
gui.show_message(
"ERROR",
"Your Crew level " .. rankValue .. " cannot be set because it is outside the valid range (1-8000)."
)
else
stats.set_int("MPPLY_CREW_LOCAL_XP_4", getRP(rankValue))
gui.show_message("Crew Rank Setter", "Your Crew Slot 5 Rank was set to " .. rankValue .. ", .")
end
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SkillsMenu = RecoveryMenu:add_tab("Skills Menu")
SkillsMenu:add_button("Max Current Skills", function()
stats.set_int(MPX() .. "SCRIPT_INCREASE_STAM", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STRN", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_LUNG", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_DRIV", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_FLY", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_SHO", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STL", 100)
gui.show_message("Skills", "Skills should've been maximized")
end)
SkillsMenu:add_button("Reset Skills", function()
stats.set_int(MPX() .. "SCRIPT_INCREASE_STAM", 0)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STRN", 0)
stats.set_int(MPX() .. "SCRIPT_INCREASE_LUNG", 0)
stats.set_int(MPX() .. "SCRIPT_INCREASE_DRIV", 0)
stats.set_int(MPX() .. "SCRIPT_INCREASE_FLY", 0)
stats.set_int(MPX() .. "SCRIPT_INCREASE_SHO", 0)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STL", 0)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OnlineServicesMenu = L7NEG:add_tab("Online Services Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CasinoServicesMenu = makeOnlineTab(OnlineServicesMenu:add_tab("Casino Services Menu"))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local cslots = "casino_slots"
CasinoServicesMenu:add_text("Casino Chips")
chipsVal = 1800
CasinoServicesMenu:add_imgui(function()
if isOffline() then
return
end
chipsVal, used = ImGui.SliderInt("Casino Chips Buy Limit", chipsVal, 1800, 2147483647)
if used then
tunables.set_int("VC_CASINO_CHIP_MAX_BUY", chipsVal)
tunables.set_int("VC_CASINO_CHIP_MAX_BUY_PENTHOUSE", chipsVal)
end
end)
CasinoServicesMenu:add_button("Bypass Casino Cooldown", function()
stats.set_int("MPPLY_CASINO_CHIPS_WON_GD", 0)
stats.set_int("MPPLY_CASINO_CHIPS_WONTIM", 0)
stats.set_int("MPPLY_CASINO_GMBLNG_GD", 0)
stats.set_int("MPPLY_CASINO_BAN_TIME", 0)
stats.set_int("MPPLY_CASINO_CHIPS_PURTIM", 0)
stats.set_int("MPPLY_CASINO_CHIPS_PUR_GD", 0)
stats.set_int("MPPLY_CASINO_CHIPS_SOLD", 0)
stats.set_int("MPPLY_CASINO_CHIPS_SELTIM", 0)
end)
CasinoServicesMenu:add_text("Winning too much too quickly might get you banned, enable this at your own risk.")
CasinoServicesMenu:add_separator()
CasinoServicesMenu:add_text("Slots")
CasinoServicesMenu:add_button("Rig Slot Machines", function()
for i = 3, 196 do
if i ~= 67 and i ~= 132 then
locals.set_int(cslots, slots_random_results_table + i, 6)
end
end
end)
CasinoServicesMenu:add_button("Lose Slot Machines", function()
for i = 3, 196 do
if i ~= 67 and i ~= 132 then
locals.set_int(cslots, slots_random_results_table + i, 0)
end
end
end)
CasinoServicesMenu:add_separator()
CasinoServicesMenu:add_text("Lucky Wheel")
CasinoServicesMenu:add_button("Give Podium Vehicle", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 18)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
CasinoServicesMenu:add_sameline()
CasinoServicesMenu:add_button("Give Mystery Prize", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 11)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
CasinoServicesMenu:add_sameline()
CasinoServicesMenu:add_button("Give $50,000", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 19)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
CasinoServicesMenu:add_sameline()
CasinoServicesMenu:add_button("Give 25,000 Chips", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 15)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
CasinoServicesMenu:add_button("Give 15,000RP", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 17)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
CasinoServicesMenu:add_sameline()
CasinoServicesMenu:add_button("Give Discount", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 4)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
CasinoServicesMenu:add_sameline()
CasinoServicesMenu:add_button("Give Clothing", function()
script.run_in_fiber(function(script)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("casino_lucky_wheel")) ~= 0 then
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize, 8)
locals.set_int("casino_lucky_wheel", prize_wheel_win_state + prize_wheel_prize_state, 11)
end
end)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CollectiblesMenu = makeOnlineTab(L7NEG:add_tab("Collectibles"))
CollectiblesMenu:add_text("Los Santos Collectibles")
CollectiblesMenu:add_separator()
CollectiblesMenu:add_button("Collect All Action Figures", function()
for i = 0, 99 do
stats.set_bool(MPX() .. "PROP_FIGURE_" .. i, true)
end
end)
CollectiblesMenu:add_button("Collect All Signal Jammers", function()
for i = 0, 49 do
stats.set_bool(MPX() .. "JAMMER_IDENTIFIED_" .. i, true)
end
end)
CollectiblesMenu:add_button("Collect All Playing Cards", function()
for i = 0, 53 do
stats.set_bool(MPX() .. "CH_CARD_ID_" .. i, true)
end
end)
CollectiblesMenu:add_button("Collect All Props", function()
for i = 0, 9 do
stats.set_bool(MPX() .. "PROP_HIDDEN_SOL_ID_" .. i, true)
end
end)
CollectiblesMenu:add_button("Collect All Movie Props", function()
for i = 1, 10 do
stats.set_int(MPX() .. "MOVIE_PROP_COLLECTED_" .. i, -1)
end
end)
CollectiblesMenu:add_button("Collect All LD Organics", function()
for i = 0, 99 do
stats.set_bool(MPX() .. "LD_ORGANIC_COLLECTED_" .. i, true)
end
end)
CollectiblesMenu:add_button("Collect Ghost Exposed", function()
for i = 0, 9 do
stats.set_bool(MPX() .. "GHOST_EXPOSED_" .. i, true)
end
end)
CollectiblesMenu:add_separator()
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EventsMenu = makeOnlineTab(L7NEG:add_tab("Events Menu"))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SnowToggleMenu = EventsMenu:add_tab("Snow Toggle Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SNOWCB = SnowToggleMenu:add_checkbox("Snow")
local snowPrev = nil
script.register_looped("snow", function(script)
script:yield()
local want = SNOWCB:is_enabled() and 1 or 0
if want ~= snowPrev then
tunables.set_bool("TURN_SNOW_ON_OFF", want == 1)
snowPrev = want
end
script:sleep(100)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
halloweenWeatherMenu = EventsMenu:add_tab("Halloween Weather Toggle Menu")
-- Animated rainbow
function rainbow_color(offset)
local time = os.clock() * 2
local r = math.sin(time + offset) * 0.5 + 0.5
local g = math.sin(time + offset + 2.094) * 0.5 + 0.5
local b = math.sin(time + offset + 4.188) * 0.5 + 0.5
return r, g, b, 1.0
end
function help_marker(text)
ImGui.SameLine()
local r, g, b, a = rainbow_color(0)
ImGui.PushStyleColor(ImGuiCol.Text, r, g, b, a)
ImGui.Text("[?]")
ImGui.PopStyleColor()
if ImGui.IsItemHovered() then
ImGui.BeginTooltip()
ImGui.PushTextWrapPos(ImGui.GetFontSize() * 35)
ImGui.TextUnformatted(text)
ImGui.PopTextWrapPos()
ImGui.EndTooltip()
end
end
-- Info text
halloweenWeatherMenu:add_text("")
halloweenWeatherMenu:add_text("Halloween Weather Information")
halloweenWeatherMenu:add_text("")
halloweenWeatherMenu:add_text("In GTA Online, Halloween weather only works")
halloweenWeatherMenu:add_text("between 7:00 PM and 7:30 AM in-game time.")
halloweenWeatherMenu:add_text("")
halloweenWeatherMenu:add_text("Toggle below to force it on during that window.")
halloweenWeatherMenu:add_text("It will stay active as long as the toggle is ON.")
halloweenWeatherMenu:add_text("")
-- Current time display
halloweenWeatherMenu:add_imgui(function()
local hour = CLOCK.GET_CLOCK_HOURS()
local minute = CLOCK.GET_CLOCK_MINUTES()
local ampm = "AM"
local hour12 = hour
if hour >= 12 then
ampm = "PM"
if hour > 12 then
hour12 = hour - 12
end
end
if hour12 == 0 then
hour12 = 12
end
ImGui.TextColored(
1.0,
0.8,
0.0,
1.0,
"Current In-Game Time: " .. string.format("%02d:%02d %s", hour12, minute, ampm)
)
if hour >= 19 or hour < 7 then
ImGui.TextColored(0.0, 1.0, 0.0, 1.0, "Status: Halloween weather is available NOW")
else
ImGui.TextColored(1.0, 0.5, 0.0, 1.0, "Status: Halloween weather is NOT available")
ImGui.TextColored(1.0, 1.0, 1.0, 1.0, "Wait until 7:00 PM in-game time")
end
ImGui.Separator()
end)
HALLOWEATHERC = halloweenWeatherMenu:add_checkbox("Enable")
local halloweatherPrev = nil
script.register_looped("halloweather_force", function(script)
script:yield()
local want = HALLOWEATHERC:is_enabled() and 1 or 0
if want ~= halloweatherPrev then
tunables.set_bool("SSP2WEATHER", want == 1)
halloweatherPrev = want
end
script:sleep(100)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Create the Trick or Treat Menu tab
trickOrTreatMenu = EventsMenu:add_tab("Trick or Treat Menu")
-- Add Trick or Treat checkbox with help marker
TRICKORTREATCB = trickOrTreatMenu:add_checkbox("Trick or Treat")
-- Add help marker for the checkbox
trickOrTreatMenu:add_imgui(function()
help_marker(
"Enables the Trick or Treat event. This allows you to collect Halloween pumpkins from the Halloween event."
)
end)
script.register_looped("trick_or_treat", function(script)
script:yield()
local want = TRICKORTREATCB:is_enabled() and 1 or 0
if want ~= _trickPrev then
tunables.set_bool("COLLECTABLES_TRICK_OR_TREAT", want == 1)
_trickPrev = want
end
script:sleep(100)
end)
-- Jack o'Lantern locations array (200 locations)
jackolantern_locations = {
vec3:new(1434.581177, -1494.808960, 61.924484),
vec3:new(1318.091797, -1557.906860, 49.406536),
vec3:new(1297.748535, -1621.982666, 52.924953),
vec3:new(1312.340576, -1701.004272, 56.537983),
vec3:new(1256.791260, -1760.271851, 47.959789),
vec3:new(1204.294312, -1672.812622, 41.058277),
vec3:new(1232.604492, -1593.003418, 52.067909),
vec3:new(1152.968140, -1529.164673, 33.691978),
vec3:new(1183.517090, -1461.732788, 33.594597),
vec3:new(1210.140625, -1390.762085, 34.076641),
vec3:new(411.362427, -1485.312622, 28.570503),
vec3:new(323.141052, -1759.944092, 28.016262),
vec3:new(428.983459, -1723.205811, 27.929178),
vec3:new(495.846832, -1817.259521, 27.187927),
vec3:new(387.837158, -1883.815430, 24.304468),
vec3:new(326.185211, -1947.658691, 23.467230),
vec3:new(379.337311, -2069.736328, 19.941431),
vec3:new(294.090973, -2098.108154, 15.802926),
vec3:new(221.574402, -2036.115112, 16.712660),
vec3:new(180.028915, -1930.020508, 19.712641),
vec3:new(150.242844, -1868.382568, 22.930975),
vec3:new(25.318865, -1894.664185, 21.286211),
vec3:new(-18.668180, -1855.332764, 23.662672),
vec3:new(-79.454300, -1641.520874, 28.009012),
vec3:new(-158.293228, -1680.115479, 35.666103),
vec3:new(-193.209412, -1609.052246, 32.701607),
vec3:new(-63.751331, -1452.771973, 30.823833),
vec3:new(-123.541191, -1490.525513, 32.473259),
vec3:new(-223.600693, -1500.161133, 30.692902),
vec3:new(-294.518921, -1332.482910, 29.970270),
vec3:new(1014.117920, -423.848389, 63.675259),
vec3:new(1266.007446, -428.332397, 68.079376),
vec3:new(1370.628906, -558.052185, 73.039597),
vec3:new(1324.806519, -580.172913, 71.912575),
vec3:new(1204.557251, -620.731323, 64.821854),
vec3:new(967.759155, -547.430298, 58.004089),
vec3:new(961.077148, -594.268860, 58.192711),
vec3:new(999.061157, -727.578979, 56.227200),
vec3:new(1143.774292, -981.787659, 44.845215),
vec3:new(845.798950, -1019.603210, 26.234652),
vec3:new(805.100342, -1075.361694, 27.369886),
vec3:new(480.726227, -975.737000, 26.683889),
vec3:new(389.172333, -972.175659, 28.140848),
vec3:new(360.894836, -1070.573853, 28.238062),
vec3:new(244.050507, -1071.695679, 27.986931),
vec3:new(264.044403, -1028.192871, 27.911451),
vec3:new(75.252281, -1026.460449, 28.174519),
vec3:new(-16.975662, -977.996521, 28.062405),
vec3:new(66.998047, -961.704041, 28.057564),
vec3:new(130.983887, -567.115417, 42.440754),
vec3:new(-191.763809, -764.868286, 29.154016),
vec3:new(-232.445236, -911.110535, 31.010803),
vec3:new(-552.145813, -815.285950, 29.390755),
vec3:new(-731.544312, -676.678467, 28.973450),
vec3:new(-1025.704224, -921.141296, 3.741233),
vec3:new(-962.515381, -942.297180, 0.845313),
vec3:new(-841.248718, -1206.873657, 5.163064),
vec3:new(-969.639954, -1094.212158, 0.8505334),
vec3:new(-1075.960327, -1026.114990, 3.245211),
vec3:new(-1150.731567, -992.529785, 0.850194),
vec3:new(-1125.693848, -1090.169067, 0.850338),
vec3:new(-1207.256836, -1136.133057, 6.418141),
vec3:new(-1185.031738, -1560.465698, 3.061427),
vec3:new(-1337.111938, -1282.580566, 3.536002),
vec3:new(-1291.436401, -1115.384399, 5.380210),
vec3:new(-1505.406006, -938.584167, 8.059047),
vec3:new(-1581.442627, -951.199219, 11.717396),
vec3:new(-1187.069458, -564.099121, 26.317165),
vec3:new(-1340.669434, -408.527100, 35.059433),
vec3:new(-1534.179565, -425.168396, 34.291149),
vec3:new(-1977.575928, -534.048889, 10.412008),
vec3:new(-1886.251953, -367.071625, 47.764736),
vec3:new(-1686.079102, -292.055634, 50.593338),
vec3:new(-1729.297974, -191.002090, 57.047939),
vec3:new(-1549.251831, -89.285751, 53.629169),
vec3:new(-1465.009766, -30.447273, 53.408463),
vec3:new(-1473.790649, 62.652233, 51.955498),
vec3:new(-1565.397949, 41.662537, 57.540710),
vec3:new(-1539.457520, 128.534393, 55.480267),
vec3:new(-1649.843994, 148.785080, 60.872307),
vec3:new(749.970276, 220.890854, 85.730003),
vec3:new(348.487152, 442.021454, 146.400879),
vec3:new(327.944977, 536.017639, 152.462311),
vec3:new(215.329636, 621.132812, 186.248245),
vec3:new(7.990458, 544.689697, 174.240616),
vec3:new(56.627422, 454.376404, 145.430801),
vec3:new(169.621765, 488.189667, 141.616394),
vec3:new(125.038742, 64.603813, 78.442604),
vec3:new(85.067253, -93.484367, 59.143009),
vec3:new(14.717505, -5.760206, 68.813988),
vec3:new(-436.087738, -67.952057, 41.706535),
vec3:new(-373.813538, 44.969456, 53.129925),
vec3:new(-175.594559, 89.340088, 68.998276),
vec3:new(-565.616150, 168.983398, 65.538330),
vec3:new(-598.232544, 275.290619, 80.810440),
vec3:new(-146.931183, 288.287903, 95.503975),
vec3:new(-87.271278, 425.587616, 111.912392),
vec3:new(-252.625534, 397.004730, 109.946564),
vec3:new(-369.354126, 347.407196, 108.114899),
vec3:new(-573.230042, 402.716095, 99.368492),
vec3:new(-584.765686, 496.261749, 105.802574),
vec3:new(-352.459045, 469.861053, 111.272270),
vec3:new(-178.125549, 503.593872, 135.551987),
vec3:new(-136.874252, 595.974915, 203.303223),
vec3:new(-247.243790, 619.652405, 186.510178),
vec3:new(-346.281616, 625.225159, 170.056915),
vec3:new(-445.562164, 684.065796, 151.650650),
vec3:new(-491.010986, 740.993591, 161.535828),
vec3:new(-579.493774, 736.161072, 182.526932),
vec3:new(-549.261047, 827.965210, 196.220291),
vec3:new(-149.519211, 995.026306, 235.537567),
vec3:new(-821.168213, 814.200195, 199.545700),
vec3:new(-703.407898, 591.646423, 140.869995),
vec3:new(-716.630310, 490.652618, 107.965691),
vec3:new(-821.048706, 268.837524, 84.892586),
vec3:new(-863.629517, 387.783356, 86.129707),
vec3:new(-882.328552, 518.721924, 91.141586),
vec3:new(-937.415100, 589.408447, 100.195312),
vec3:new(-887.551086, 701.678711, 149.417191),
vec3:new(-1020.178894, 716.203674, 162.686401),
vec3:new(-1166.027588, 729.194946, 154.211594),
vec3:new(-1291.383911, 648.885010, 140.199905),
vec3:new(-1124.626709, 575.734802, 103.055000),
vec3:new(-1024.506104, 502.218384, 79.255287),
vec3:new(-966.512451, 434.859009, 78.671555),
vec3:new(-1023.245361, 359.682251, 70.056602),
vec3:new(-1130.484985, 391.969757, 69.441147),
vec3:new(-1178.350708, 290.212646, 68.198738),
vec3:new(-1215.850708, 460.558350, 90.553658),
vec3:new(-1312.920288, 452.977936, 97.879066),
vec3:new(-1499.075195, 520.862732, 116.972198),
vec3:new(-1813.917847, 344.151672, 87.253471),
vec3:new(-1961.207275, 249.182205, 83.922012),
vec3:new(-2005.261841, 447.706787, 100.982285),
vec3:new(-1974.006348, 627.074402, 121.236298),
vec3:new(-1523.962524, 854.170227, 180.294525),
vec3:new(-3084.227539, 222.587875, 12.690159),
vec3:new(-3034.164795, 492.005524, 5.467818),
vec3:new(-2999.262695, 694.002991, 24.150764),
vec3:new(-3234.858887, 934.295593, 15.850909),
vec3:new(-3202.787109, 1151.574829, 8.355104),
vec3:new(-3180.688232, 1291.906372, 13.120326),
vec3:new(-2551.712402, 1912.145386, 167.768417),
vec3:new(-1872.429932, 2029.911011, 138.037140),
vec3:new(-1112.209106, 2686.990479, 17.318859),
vec3:new(-262.114075, 2194.963135, 129.098648),
vec3:new(-267.503265, 2626.278564, 60.810768),
vec3:new(-462.839874, 2856.521973, 33.321205),
vec3:new(-327.331085, 2820.612305, 57.069534),
vec3:new(-289.165649, 2837.083496, 54.012520),
vec3:new(-38.089405, 2866.223145, 57.879650),
vec3:new(200.134537, 3031.658691, 42.007084),
vec3:new(245.562866, 3167.225342, 41.543571),
vec3:new(36.286015, 3668.123779, 38.331520),
vec3:new(92.681717, 3741.556885, 38.248653),
vec3:new(439.687134, 3574.860352, 31.938606),
vec3:new(470.906616, 2611.910889, 41.949657),
vec3:new(561.570679, 2599.967529, 41.738277),
vec3:new(734.955811, 2523.633057, 71.924843),
vec3:new(721.653381, 2332.206543, 50.450310),
vec3:new(790.147888, 2182.331055, 50.818352),
vec3:new(841.859131, 2114.335449, 51.001461),
vec3:new(1352.933716, 1147.012451, 112.459045),
vec3:new(1529.204956, 1728.803955, 108.681503),
vec3:new(1531.197266, 2219.515381, 75.833237),
vec3:new(1421.380981, 3666.921387, 38.428417),
vec3:new(1664.273926, 3824.378662, 33.593254),
vec3:new(1762.277954, 3872.228516, 33.132488),
vec3:new(1925.091553, 3917.555664, 31.198433),
vec3:new(1914.172241, 3825.941162, 31.136677),
vec3:new(1773.624268, 3740.501953, 33.356308),
vec3:new(1856.470215, 3681.635254, 32.958481),
vec3:new(1999.776611, 3776.771484, 30.880787),
vec3:new(1991.811035, 3057.610840, 45.760735),
vec3:new(2168.261475, 3380.211670, 45.134487),
vec3:new(2178.444824, 3499.422119, 44.197418),
vec3:new(2590.153320, 3169.243896, 49.646759),
vec3:new(2620.696533, 3282.523926, 53.951210),
vec3:new(2985.502930, 3484.042236, 70.081779),
vec3:new(2420.516602, 4020.245605, 35.535358),
vec3:new(2638.094482, 4247.965332, 43.502384),
vec3:new(3689.367188, 4563.361328, 23.881674),
vec3:new(3315.741455, 5172.885254, 17.129362),
vec3:new(2234.621094, 5609.286133, 53.348442),
vec3:new(2451.511963, 4961.811035, 44.201416),
vec3:new(1967.214966, 4621.931641, 39.482288),
vec3:new(1664.723511, 4773.646973, 40.687389),
vec3:new(1723.661011, 4642.196777, 42.564026),
vec3:new(1311.947632, 4361.838867, 39.552631),
vec3:new(724.281311, 4185.006348, 39.409229),
vec3:new(-771.858582, 5511.423340, 33.605061),
vec3:new(-342.642487, 6163.851074, 30.190174),
vec3:new(-402.742828, 6314.299805, 27.649906),
vec3:new(-306.322205, 6331.539551, 31.189320),
vec3:new(-245.945114, 6410.604492, 29.897928),
vec3:new(-105.598267, 6313.783691, 30.190372),
vec3:new(-112.187599, 6460.697266, 30.168459),
vec3:new(-50.652882, 6582.884766, 29.876881),
vec3:new(54.402122, 6642.595215, 30.223076),
vec3:new(1706.896240, 6422.760254, 31.335125),
}
-- Jack o'Lantern location names (200 locations)
jackolantern_names = {}
for i = 1, 200 do
jackolantern_names[i] = "Location " .. string.format("%03d", i)
end
-- Variables
jackolantern_selected_loc = 0
-- Add ImGui for Jack o'Lantern teleports
trickOrTreatMenu:add_imgui(function()
ImGui.Separator()
ImGui.Text("Jack o'Lantern Teleports")
help_marker(
"Teleport to any of the 200 Jack o'Lantern collectible locations. These are Halloween pumpkins that spawn during the event."
)
ImGui.Separator()
ImGui.Text("Select Jack o'Lantern Location:")
help_marker("Choose a location from the dropdown list to teleport to.")
ImGui.SetNextItemWidth(265)
jackolantern_selected_loc =
ImGui.Combo("##jackolantern_selected_loc", jackolantern_selected_loc, jackolantern_names, 200)
ImGui.SameLine()
if ImGui.Button("Teleport to Location") then
script.run_in_fiber(function()
local coords = jackolantern_locations[jackolantern_selected_loc + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
help_marker("Teleports you to the selected Jack o'Lantern location.")
ImGui.Separator()
ImGui.Text("Quick Teleport Buttons (1-20):")
help_marker("Quickly teleport to any of the first 20 Jack o'Lantern locations.")
-- Quick teleport buttons in rows of 5 (first 20 locations)
for i = 0, 19 do
if i % 5 == 0 then
ImGui.Text(" ")
end
if ImGui.Button(jackolantern_names[i + 1]) then
script.run_in_fiber(function()
local coords = jackolantern_locations[i + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
if i % 5 ~= 4 and i < 19 then
ImGui.SameLine()
end
end
ImGui.Separator()
ImGui.Text("Quick Teleport Buttons (21-40):")
help_marker("Quickly teleport to any of the next 20 Jack o'Lantern locations.")
-- Quick teleport buttons in rows of 5 (next 20 locations)
for i = 20, 39 do
if i % 5 == 0 then
ImGui.Text(" ")
end
if ImGui.Button(jackolantern_names[i + 1]) then
script.run_in_fiber(function()
local coords = jackolantern_locations[i + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
if i % 5 ~= 4 and i < 39 then
ImGui.SameLine()
end
end
ImGui.Separator()
ImGui.Text("Total Jack o'Lantern Locations: 200")
if ImGui.Button("Teleport to Random Jack o'Lantern") then
script.run_in_fiber(function()
local random_index = math.random(1, 200)
local coords = jackolantern_locations[random_index]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
gui.show_message("Jack o'Lantern", "Teleported to " .. jackolantern_names[random_index])
end)
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
snowmenMenu = EventsMenu:add_tab("Snowmen Collectibles")
-- Snowman locations array
snowmen_locations = {
vec3:new(-955.5352, -782.4186, 15.925326),
vec3:new(-819.9067, 165.35524, 71.26295),
vec3:new(-247.92003, -1561.2175, 32.22973),
vec3:new(901.3996, -288.05026, 65.643715),
vec3:new(1275.6772, -642.3789, 68.208786),
vec3:new(1993.1008, 3829.6396, 32.167336),
vec3:new(-375.47916, 6230.158, 31.490055),
vec3:new(-1414.4647, 5094.9272, 60.674263),
vec3:new(-1946.0231, 594.93756, 119.79223),
vec3:new(-1100.889, -1401.0138, 5.215467),
vec3:new(-780.418, 877.2859, 203.18001),
vec3:new(-455.12027, 1130.5625, 325.89175),
vec3:new(221.46722, -107.01075, 69.763985),
vec3:new(1560.3787, 6447.053, 23.9866),
vec3:new(3301.7886, 5149.8853, 18.34274),
vec3:new(1703.0568, 4671.928, 43.15301),
vec3:new(224.9161, 3107.3345, 42.18394),
vec3:new(2360.0037, 2522.7166, 46.66731),
vec3:new(1510.8555, 1725.0353, 109.89355),
vec3:new(-48.96374, 1964.4028, 189.87181),
vec3:new(-1516.2083, 2140.2168, 56.11924),
vec3:new(-2826.2356, 1424.6211, 100.706116),
vec3:new(-2957.531, 723.6389, 28.792404),
vec3:new(1341.4302, -1583.5093, 54.135414),
vec3:new(178.00232, -895.9712, 30.69326),
}
-- Snowman location names (numbered 01-25)
snowmen_names = {}
for i = 1, 25 do
snowmen_names[i] = "Location " .. string.format("%02d", i)
end
-- Variables
snowmen_selected_loc = 0
-- Add the checkbox for enabling snowmen collectibles
SNOWMENCB = snowmenMenu:add_checkbox("Enable Snowmen Collectibles")
-- Add help marker for the checkbox
snowmenMenu:add_imgui(function()
help_marker(
"Enables the Snowmen Collectibles event. This allows you to collect snowmen by blowing them up or driving your car through them during the winter event."
)
end)
script.register_looped("snowmen_collectibles", function(script)
script:yield()
local want = SNOWMENCB:is_enabled() and 1 or 0
if want ~= _snowmenPrev then
tunables.set_bool("COLLECTABLES_SNOWMEN", want == 1)
_snowmenPrev = want
end
script:sleep(100)
end)
-- Add ImGui for the snowman teleports
snowmenMenu:add_imgui(function()
ImGui.Separator()
ImGui.Text("Snowman Teleports")
help_marker(
"Teleport to any of the 25 Snowman collectible locations. These are snowmen that spawn during the winter event. You can destroy them by blowing them up or driving through them with your vehicle."
)
ImGui.Separator()
ImGui.Text("Select Snowman Location:")
help_marker("Choose a location from the dropdown list to teleport to.")
ImGui.SetNextItemWidth(265)
snowmen_selected_loc = ImGui.Combo("##snowmen_selected_loc", snowmen_selected_loc, snowmen_names, 25)
ImGui.SameLine()
if ImGui.Button("Teleport to Location") then
script.run_in_fiber(function()
local coords = snowmen_locations[snowmen_selected_loc + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
help_marker("Teleports you to the selected Snowman location.")
ImGui.Separator()
ImGui.Text("Quick Teleport Buttons:")
help_marker(
"Quickly teleport to any Snowman location to destroy them by blowing them up or driving through them."
)
-- Add quick teleport buttons in rows of 5
for i = 0, 24 do
if i % 5 == 0 then
ImGui.Text(" ")
end
if ImGui.Button(snowmen_names[i + 1]) then
script.run_in_fiber(function()
local coords = snowmen_locations[i + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
if i % 5 ~= 4 and i < 24 then
ImGui.SameLine()
end
end
ImGui.Separator()
ImGui.Text("Total Snowman Locations: 25")
if ImGui.Button("Teleport to Random Snowman") then
script.run_in_fiber(function()
local random_index = math.random(1, 25)
local coords = snowmen_locations[random_index]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
gui.show_message("Snowman", "Teleported to " .. snowmen_names[random_index])
end)
end
help_marker(
"Teleports you to a random Snowman location. Blow them up or drive through them to collect them all!"
)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
YetiHuntMenu = EventsMenu:add_tab("Yeti Hunt Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Yeti Hunt locations array
yeti_locations = {
vec3:new(-1562.69, 4699.04, 50.426),
vec3:new(-1359.869, 4733.429, 46.919),
vec3:new(-1715.398, 4501.203, 0.096),
vec3:new(-1282.18, 4487.826, 12.643),
vec3:new(-1569.665, 4478.485, 20.215),
vec3:new(-1345.828, 4838.062, 137.522),
vec3:new(-1507.88, 4730.23, 45.54),
}
-- Yeti location names
yeti_names = {
"Clue Location 1",
"Clue Location 2",
"Clue Location 3",
"Clue Location 4",
"Clue Location 5",
"Yeti Fight Location (1)",
"Yeti Fight Location (2)",
}
-- Variables
yeti_selected_loc = 0
-- Add Yeti Hunt checkbox with help marker
YETIHUNTCB = YetiHuntMenu:add_checkbox("Enable Yeti Hunt Event")
-- Add help marker for the checkbox
YetiHuntMenu:add_imgui(function()
help_marker(
"Enables the Yeti Hunt event. This allows you to hunt the Yeti and collect clues during the event."
)
end)
script.register_looped("yeti_hunt", function(script)
script:yield()
local want = YETIHUNTCB:is_enabled() and 1 or 0
if want ~= _yetiPrev then
tunables.set_bool(1833904680, want == 1)
_yetiPrev = want
end
script:sleep(100)
end)
-- Add ImGui for Yeti Hunt teleports
YetiHuntMenu:add_imgui(function()
ImGui.Separator()
ImGui.Text("Yeti Hunt Teleports")
help_marker("Teleport to any of the Yeti Hunt clue locations or the final Yeti fight locations.")
ImGui.Separator()
ImGui.Text("Select Yeti Location:")
help_marker("Choose a location from the dropdown list to teleport to.")
ImGui.SetNextItemWidth(265)
yeti_selected_loc = ImGui.Combo("##yeti_selected_loc", yeti_selected_loc, yeti_names, 7)
ImGui.SameLine()
if ImGui.Button("Teleport to Location") then
script.run_in_fiber(function()
local coords = yeti_locations[yeti_selected_loc + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
help_marker("Teleports you to the selected Yeti location.")
ImGui.Separator()
ImGui.Text("Quick Teleport Buttons:")
help_marker("Quickly teleport to any Yeti clue location or the fight locations.")
-- Add quick teleport buttons in rows of 3 (all 7 locations)
for i = 0, 6 do
if i % 3 == 0 then
ImGui.Text(" ")
end
if ImGui.Button(yeti_names[i + 1]) then
script.run_in_fiber(function()
local coords = yeti_locations[i + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
if i % 3 ~= 2 and i < 6 then
ImGui.SameLine()
end
end
ImGui.Separator()
ImGui.Text("Total Yeti Locations: 7 (5 Clues + 2 Fight)")
if ImGui.Button("Teleport to Random Yeti Location") then
script.run_in_fiber(function()
local random_index = math.random(1, 7)
local coords = yeti_locations[random_index]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
gui.show_message("Yeti Hunt", "Teleported to " .. yeti_names[random_index])
end)
end
help_marker("Teleports you to a random Yeti location. Find all the clues to hunt the Yeti!")
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AUM = RecoveryMenu:add_tab("Awards Unlocker Menu")
AUM:add_button("Victory", function()
stats.set_int(MPX() .. "AWD_FM_DM_WINS", 50)
stats.set_int(MPX() .. "AWD_FM_TDM_WINS", 50)
stats.set_int(MPX() .. "AWD_FM_TDM_MVP", 50)
stats.set_int(MPX() .. "AWD_RACES_WON", 50)
stats.set_int(MPX() .. "AWD_FMWINAIRRACE", 25)
stats.set_int(MPX() .. "AWD_FMWINSEARACE", 25)
stats.set_int(MPX() .. "AWD_FM_GTA_RACES_WON", 50)
stats.set_bool(MPX() .. "AWD_FMKILL3ANDWINGTARACE", true)
stats.set_int(MPX() .. "AWD_FMRALLYWONDRIVE", 25)
stats.set_int(MPX() .. "AWD_FMRALLYWONNAV", 25)
stats.set_bool(MPX() .. "AWD_FMWINCUSTOMRACE", true)
stats.set_int(MPX() .. "AWD_FMWINRACETOPOINTS", 25)
stats.set_bool(MPX() .. "CL_RACE_MODDED_CAR", true)
stats.set_int(MPX() .. "AWD_FM_RACE_LAST_FIRST", 25)
stats.set_bool(MPX() .. "AWD_FMRACEWORLDRECHOLDER", true)
stats.set_int(MPX() .. "AWD_FM_RACES_FASTEST_LAP", 50)
stats.set_bool(MPX() .. "AWD_FMWINALLRACEMODES", true)
stats.set_int(MPX() .. "AWD_FMHORDWAVESSURVIVE", 10)
stats.set_int(MPX() .. "NUMBER_SLIPSTREAMS_IN_RACE", 100)
stats.set_int(MPX() .. "NUMBER_TURBO_STARTS_IN_RACE", 50)
stats.set_int(MPX() .. "AWD_NO_ARMWRESTLING_WINS", 25)
stats.set_int(MPX() .. "MOST_ARM_WRESTLING_WINS", 25)
stats.set_int(MPX() .. "AWD_WIN_AT_DARTS", 25)
stats.set_int(MPX() .. "AWD_FM_GOLF_WON", 25)
stats.set_int(MPX() .. "AWD_FM_TENNIS_WON", 25)
stats.set_bool(MPX() .. "AWD_FM_TENNIS_5_SET_WINS", true)
stats.set_bool(MPX() .. "AWD_FM_TENNIS_STASETWIN", true)
stats.set_int(MPX() .. "AWD_FM_SHOOTRANG_CT_WON", 25)
stats.set_int(MPX() .. "AWD_FM_SHOOTRANG_RT_WON", 25)
stats.set_int(MPX() .. "AWD_FM_SHOOTRANG_TG_WON", 25)
stats.set_bool(MPX() .. "AWD_FM_SHOOTRANG_GRAN_WON", true)
stats.set_bool(MPX() .. "AWD_FMWINEVERYGAMEMODE", true)
stats.set_int(MPX() .. "AWD_WIN_CAPTURES", 50)
stats.set_int(MPX() .. "AWD_WIN_CAPTURE_DONT_DYING", 25)
stats.set_int(MPX() .. "AWD_WIN_LAST_TEAM_STANDINGS", 50)
stats.set_int(MPX() .. "AWD_ONLY_PLAYER_ALIVE_LTS", 50)
stats.set_int(MPX() .. "AWD_KILL_TEAM_YOURSELF_LTS", 25)
stats.set_int(MPX() .. "AIR_LAUNCHES_OVER_40M", 25)
stats.set_int(MPX() .. "AWD_CARS_EXPORTED", 50)
stats.set_int(MPX() .. "AWD_LESTERDELIVERVEHICLES", 25)
stats.set_int(MPX() .. "TOTAL_RACES_WON", 500)
stats.set_int(MPX() .. "TOTAL_RACES_LOST", 250)
stats.set_int(MPX() .. "TOTAL_CUSTOM_RACES_WON", 500)
stats.set_int(MPX() .. "TOTAL_DEATHMATCH_LOST", 250)
stats.set_int(MPX() .. "TOTAL_DEATHMATCH_WON", 500)
stats.set_int(MPX() .. "TOTAL_TDEATHMATCH_LOST", 250)
stats.set_int(MPX() .. "TOTAL_TDEATHMATCH_WON", 500)
stats.set_int(MPX() .. "SHOOTINGRANGE_WINS", 500)
stats.set_int(MPX() .. "SHOOTINGRANGE_LOSSES", 250)
stats.set_int(MPX() .. "TENNIS_MATCHES_WON", 500)
stats.set_int(MPX() .. "TENNIS_MATCHES_LOST", 250)
stats.set_int(MPX() .. "GOLF_WINS", 500)
stats.set_int(MPX() .. "GOLF_LOSSES", 250)
stats.set_int(MPX() .. "DARTS_TOTAL_WINS", 500)
stats.set_int(MPX() .. "DARTS_TOTAL_MATCHES", 750)
stats.set_int(MPX() .. "SHOOTINGRANGE_TOTAL_MATCH", 800)
stats.set_int(MPX() .. "BJ_WINS", 500)
stats.set_int(MPX() .. "BJ_LOST", 250)
stats.set_int(MPX() .. "RACE_2_POINT_WINS", 500)
stats.set_int(MPX() .. "RACE_2_POINT_LOST", 250)
stats.set_int(MPX() .. "KILLS_PLAYERS", 3593)
stats.set_int(MPX() .. "DEATHS_PLAYER", 1002)
stats.set_int(MPX() .. "MISSIONS_CREATED", 500)
stats.set_int(MPX() .. "LTS_CREATED", 500)
stats.set_int(MPX() .. "FM_MISSION_LIKES", 1500)
end)
AUM:add_button("General", function()
stats.set_bool(MPX() .. "AWD_FM25DIFFERENTDM", true)
stats.set_int(MPX() .. "CR_DIFFERENT_DM", 25)
stats.set_bool(MPX() .. "AWD_FM25DIFFERENTRACES", true)
stats.set_int(MPX() .. "CR_DIFFERENT_RACES", 25)
stats.set_int(MPX() .. "AWD_PARACHUTE_JUMPS_20M", 25)
stats.set_int(MPX() .. "AWD_PARACHUTE_JUMPS_50M", 25)
stats.set_int(MPX() .. "AWD_FMBASEJMP", 25)
stats.set_bool(MPX() .. "AWD_FMATTGANGHQ", true)
stats.set_bool(MPX() .. "AWD_FM6DARTCHKOUT", true)
stats.set_int(MPX() .. "AWD_FM_GOLF_BIRDIES", 25)
stats.set_bool(MPX() .. "AWD_FM_GOLF_HOLE_IN_1", true)
stats.set_int(MPX() .. "AWD_FM_TENNIS_ACE", 25)
stats.set_int(MPX() .. "AWD_FMBBETWIN", 50000)
stats.set_int(MPX() .. "AWD_LAPDANCES", 25)
stats.set_int(MPX() .. "AWD_FMCRATEDROPS", 25)
stats.set_bool(MPX() .. "AWD_FMPICKUPDLCCRATE1ST", true)
stats.set_bool(MPX() .. "AWD_FM25DIFITEMSCLOTHES", true)
stats.set_int(MPX() .. "AWD_NO_HAIRCUTS", 25)
stats.set_bool(MPX() .. "AWD_BUY_EVERY_GUN", true)
stats.set_bool(MPX() .. "AWD_DRIVELESTERCAR5MINS", true)
stats.set_bool(MPX() .. "AWD_FMTATTOOALLBODYPARTS", true)
stats.set_int(MPX() .. "AWD_DROPOFF_CAP_PACKAGES", 100)
stats.set_int(MPX() .. "AWD_PICKUP_CAP_PACKAGES", 100)
stats.set_int(MPX() .. "AWD_MENTALSTATE_TO_NORMAL", 50)
stats.set_bool(MPX() .. "AWD_STORE_20_CAR_IN_GARAGES", true)
stats.set_int(MPX() .. "AWD_TRADE_IN_YOUR_PROPERTY", 25)
stats.set_bool(MPX() .. "AWD_DAILYOBJWEEKBONUS", true)
stats.set_bool(MPX() .. "AWD_DAILYOBJMONTHBONUS", true)
stats.set_int(MPX() .. "AWD_FM_CR_DM_MADE", 25)
stats.set_int(MPX() .. "AWD_FM_CR_RACES_MADE", 25)
stats.set_int(MPX() .. "AWD_FM_CR_PLAYED_BY_PEEP", 1598)
stats.set_int(MPX() .. "AWD_FM_CR_MISSION_SCORE", 100)
stats.set_bool(MPX() .. "CL_DRIVE_RALLY", true)
stats.set_bool(MPX() .. "CL_PLAY_GTA_RACE", true)
stats.set_bool(MPX() .. "CL_PLAY_BOAT_RACE", true)
stats.set_bool(MPX() .. "CL_PLAY_FOOT_RACE", true)
stats.set_bool(MPX() .. "CL_PLAY_TEAM_DM", true)
stats.set_bool(MPX() .. "CL_PLAY_VEHICLE_DM", true)
stats.set_bool(MPX() .. "CL_PLAY_MISSION_CONTACT", true)
stats.set_bool(MPX() .. "CL_PLAY_A_PLAYLIST", true)
stats.set_bool(MPX() .. "CL_PLAY_POINT_TO_POINT", true)
stats.set_bool(MPX() .. "CL_PLAY_ONE_ON_ONE_DM", true)
stats.set_bool(MPX() .. "CL_PLAY_ONE_ON_ONE_RACE", true)
stats.set_bool(MPX() .. "CL_SURV_A_BOUNTY", true)
stats.set_bool(MPX() .. "CL_SET_WANTED_LVL_ON_PLAY", true)
stats.set_bool(MPX() .. "CL_GANG_BACKUP_GANGS", true)
stats.set_bool(MPX() .. "CL_GANG_BACKUP_LOST", true)
stats.set_bool(MPX() .. "CL_GANG_BACKUP_VAGOS", true)
stats.set_bool(MPX() .. "CL_CALL_MERCENARIES", true)
stats.set_bool(MPX() .. "CL_PHONE_MECH_DROP_CAR", true)
stats.set_bool(MPX() .. "CL_GONE_OFF_RADAR", true)
stats.set_bool(MPX() .. "CL_FILL_TITAN", true)
stats.set_bool(MPX() .. "CL_MOD_CAR_USING_APP", true)
stats.set_bool(MPX() .. "CL_MOD_CAR_USING_APP", true)
stats.set_bool(MPX() .. "CL_BUY_INSURANCE", true)
stats.set_bool(MPX() .. "CL_BUY_GARAGE", true)
stats.set_bool(MPX() .. "CL_ENTER_FRIENDS_HOUSE", true)
stats.set_bool(MPX() .. "CL_CALL_STRIPPER_HOUSE", true)
stats.set_bool(MPX() .. "CL_CALL_FRIEND", true)
stats.set_bool(MPX() .. "CL_SEND_FRIEND_REQUEST", true)
stats.set_bool(MPX() .. "CL_W_WANTED_PLAYER_TV", true)
stats.set_bool(MPX() .. "FM_INTRO_CUT_DONE", true)
stats.set_bool(MPX() .. "FM_INTRO_MISS_DONE", true)
stats.set_bool(MPX() .. "SHOOTINGRANGE_SEEN_TUT", true)
stats.set_bool(MPX() .. "TENNIS_SEEN_TUTORIAL", true)
stats.set_bool(MPX() .. "DARTS_SEEN_TUTORIAL", true)
stats.set_bool(MPX() .. "ARMWRESTLING_SEEN_TUTORIAL", true)
stats.set_bool(MPX() .. "HAS_WATCHED_BENNY_CUTSCE", true)
stats.set_int(MPX() .. "NO_PHOTOS_TAKEN", 100)
stats.set_int(MPX() .. "BOUNTSONU", 200)
stats.set_int(MPX() .. "BOUNTPLACED", 500)
stats.set_int(MPX() .. "BETAMOUNT", 500)
stats.set_int(MPX() .. "CRARMWREST", 500)
stats.set_int(MPX() .. "CRBASEJUMP", 500)
stats.set_int(MPX() .. "CRDARTS", 500)
stats.set_int(MPX() .. "CRDM", 500)
stats.set_int(MPX() .. "CRGANGHIDE", 500)
stats.set_int(MPX() .. "CRGOLF", 500)
stats.set_int(MPX() .. "CRHORDE", 500)
stats.set_int(MPX() .. "CRMISSION", 500)
stats.set_int(MPX() .. "CRSHOOTRNG", 500)
stats.set_int(MPX() .. "CRTENNIS", 500)
stats.set_int(MPX() .. "NO_TIMES_CINEMA", 500)
end)
AUM:add_button("Weapons", function()
stats.set_int(MPX() .. "CHAR_WEAP_UNLOCKED", -1)
stats.set_int(MPX() .. "CHAR_WEAP_UNLOCKED2", -1)
stats.set_int(MPX() .. "CHAR_WEAP_UNLOCKED3", -1)
stats.set_int(MPX() .. "CHAR_WEAP_UNLOCKED4", -1)
stats.set_int(MPX() .. "CHAR_WEAP_ADDON_1_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_WEAP_ADDON_2_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_WEAP_ADDON_3_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_WEAP_ADDON_4_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_WEAP_FREE", -1)
stats.set_int(MPX() .. "CHAR_WEAP_FREE2", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_FREE", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_FREE2", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_FREE3", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_FREE4", -1)
stats.set_int(MPX() .. "CHAR_WEAP_PURCHASED", -1)
stats.set_int(MPX() .. "CHAR_WEAP_PURCHASED2", -1)
stats.set_int(MPX() .. "WEAPON_PICKUP_BITSET", -1)
stats.set_int(MPX() .. "WEAPON_PICKUP_BITSET2", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_UNLOCKED", -1)
stats.set_int(MPX() .. "NO_WEAPONS_UNLOCK", -1)
stats.set_int(MPX() .. "NO_WEAPON_MODS_UNLOCK", -1)
stats.set_int(MPX() .. "NO_WEAPON_CLR_MOD_UNLOCK", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_UNLOCKED2", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_UNLOCKED3", -1)
stats.set_int(MPX() .. "CHAR_FM_WEAP_UNLOCKED4", -1)
stats.set_int(MPX() .. "CHAR_KIT_1_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_2_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_3_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_4_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_5_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_6_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_7_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_8_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_9_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_10_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_11_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_12_FM_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_KIT_FM_PURCHASE", -1)
stats.set_int(MPX() .. "CHAR_WEAP_FM_PURCHASE", -1)
stats.set_int(MPX() .. "CHAR_WEAP_FM_PURCHASE2", -1)
stats.set_int(MPX() .. "CHAR_WEAP_FM_PURCHASE3", -1)
stats.set_int(MPX() .. "CHAR_WEAP_FM_PURCHASE4", -1)
stats.set_int(MPX() .. "FIREWORK_TYPE_1_WHITE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_1_RED", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_1_BLUE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_2_WHITE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_2_RED", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_2_BLUE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_3_WHITE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_3_RED", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_3_BLUE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_4_WHITE", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_4_RED", 1000)
stats.set_int(MPX() .. "FIREWORK_TYPE_4_BLUE", 1000)
stats.set_int(MPX() .. "WEAP_FM_ADDON_PURCH", -1)
for i = 2, 19 do
stats.set_int(MPX() .. "WEAP_FM_ADDON_PURCH" .. i, -1)
end
for j = 1, 19 do
stats.set_int(MPX() .. "CHAR_FM_WEAP_ADDON_" .. j .. "_UNLCK", -1)
end
for m = 1, 41 do
stats.set_int(MPX() .. "CHAR_KIT_" .. m .. "_FM_UNLCK", -1)
end
for l = 2, 41 do
stats.set_int(MPX() .. "CHAR_KIT_FM_PURCHASE" .. l, -1)
end
end)
AUM:add_button("Crimes", function()
stats.set_int(MPX() .. "AWD_FMTIME5STARWANTED", 120)
stats.set_int(MPX() .. "AWD_5STAR_WANTED_AVOIDANCE", 50)
stats.set_int(MPX() .. "AWD_FMSHOOTDOWNCOPHELI", 25)
stats.set_int(MPX() .. "AWD_VEHICLES_JACKEDR", 500)
stats.set_int(MPX() .. "AWD_SECURITY_CARS_ROBBED", 25)
stats.set_int(MPX() .. "AWD_HOLD_UP_SHOPS", 20)
stats.set_int(MPX() .. "AWD_ODISTRACTCOPSNOEATH", 25)
stats.set_int(MPX() .. "AWD_ENEMYDRIVEBYKILLS", 100)
stats.set_int(MPX() .. "CHAR_WANTED_LEVEL_TIME5STAR", 18000000)
stats.set_int(MPX() .. "CARS_COPS_EXPLODED", 300)
stats.set_int(MPX() .. "BIKES_EXPLODED", 100)
stats.set_int(MPX() .. "BOATS_EXPLODED", 168)
stats.set_int(MPX() .. "HELIS_EXPLODED", 98)
stats.set_int(MPX() .. "PLANES_EXPLODED", 138)
stats.set_int(MPX() .. "QUADBIKE_EXPLODED", 50)
stats.set_int(MPX() .. "BICYCLE_EXPLODED", 48)
stats.set_int(MPX() .. "SUBMARINE_EXPLODED", 28)
stats.set_int(MPX() .. "TIRES_POPPED_BY_GUNSHOT", 500)
stats.set_int(MPX() .. "NUMBER_CRASHES_CARS", 300)
stats.set_int(MPX() .. "NUMBER_CRASHES_BIKES", 300)
stats.set_int(MPX() .. "BAILED_FROM_VEHICLE", 300)
stats.set_int(MPX() .. "NUMBER_CRASHES_QUADBIKES", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_COP_VEHICLE", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_CARS", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_BIKES", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_BOATS", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_HELIS", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_PLANES", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_QUADBIKES", 300)
stats.set_int(MPX() .. "NUMBER_STOLEN_BICYCLES", 300)
stats.set_int(MPX() .. "MC_CONTRIBUTION_POINTS", 1000)
stats.set_int(MPX() .. "MEMBERSMARKEDFORDEATH", 700)
stats.set_int(MPX() .. "MCKILLS", 500)
stats.set_int(MPX() .. "MCDEATHS", 700)
stats.set_int(MPX() .. "RIVALPRESIDENTKILLS", 700)
stats.set_int(MPX() .. "RIVALCEOANDVIPKILLS", 700)
stats.set_int(MPX() .. "CLUBHOUSECONTRACTSCOMPLETE", 700)
stats.set_int(MPX() .. "CLUBHOUSECONTRACTEARNINGS", 32698547)
stats.set_int(MPX() .. "CLUBCHALLENGESCOMPLETED", 700)
stats.set_int(MPX() .. "MEMBERCHALLENGESCOMPLETED", 700)
stats.set_int(MPX() .. "GHKILLS", 500)
stats.set_int(MPX() .. "HORDELVL", 10)
stats.set_int(MPX() .. "HORDKILLS", 500)
stats.set_int(MPX() .. "UNIQUECRATES", 500)
stats.set_int(MPX() .. "BJWINS", 500)
stats.set_int(MPX() .. "HORDEWINS", 500)
stats.set_int(MPX() .. "MCMWINS", 500)
stats.set_int(MPX() .. "GANGHIDWINS", 500)
stats.set_int(MPX() .. "KILLS", 800)
stats.set_int(MPX() .. "HITS_PEDS_VEHICLES", 100)
stats.set_int(MPX() .. "SHOTS", 1000)
stats.set_int(MPX() .. "HEADSHOTS", 100)
stats.set_int(MPX() .. "KILLS_ARMED", 650)
stats.set_int(MPX() .. "SUCCESSFUL_COUNTERS", 100)
stats.set_int(MPX() .. "KILLS_PLAYERS", 3593)
stats.set_int(MPX() .. "DEATHS_PLAYER", 1002)
stats.set_int(MPX() .. "KILLS_STEALTH", 100)
stats.set_int(MPX() .. "KILLS_INNOCENTS", 500)
stats.set_int(MPX() .. "KILLS_ENEMY_GANG_MEMBERS", 500)
stats.set_int(MPX() .. "KILLS_FRIENDLY_GANG_MEMBERS", 500)
stats.set_int(MPX() .. "KILLS_BY_OTHERS", 100)
stats.set_int(MPX() .. "BIGGEST_VICTIM_KILLS", 500)
stats.set_int(MPX() .. "ARCHENEMY_KILLS", 500)
stats.set_int(MPX() .. "KILLS_COP", 4500)
stats.set_int(MPX() .. "KILLS_SWAT", 500)
stats.set_int(MPX() .. "STARS_ATTAINED", 5000)
stats.set_int(MPX() .. "STARS_EVADED", 4000)
stats.set_int(MPX() .. "VEHEXPORTED", 500)
stats.set_int(MPX() .. "TOTAL_NO_SHOPS_HELD_UP", 100)
stats.set_int(MPX() .. "CR_GANGATTACK_CITY", 1000)
stats.set_int(MPX() .. "CR_GANGATTACK_COUNTRY", 1000)
stats.set_int(MPX() .. "CR_GANGATTACK_LOST", 1000)
stats.set_int(MPX() .. "CR_GANGATTACK_VAGOS", 1000)
stats.set_int(MPX() .. "NO_NON_CONTRACT_RACE_WIN", 500)
stats.set_int(MPX() .. "DIED_IN_DROWNING", 833)
stats.set_int(MPX() .. "DIED_IN_DROWNINGINVEHICLE", 833)
stats.set_int(MPX() .. "DIED_IN_EXPLOSION", 833)
stats.set_int(MPX() .. "DIED_IN_FALL", 833)
stats.set_int(MPX() .. "DIED_IN_FIRE", 833)
stats.set_int(MPX() .. "DIED_IN_ROAD", 833)
stats.set_int(MPX() .. "GRENADE_ENEMY_KILLS", 50)
stats.set_int(MPX() .. "MICROSMG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "SMG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "ASLTSMG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "CRBNRIFLE_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "ADVRIFLE_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "MG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "CMBTMG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "ASLTMG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "RPG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "PISTOL_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "PLAYER_HEADSHOTS", 500)
stats.set_int(MPX() .. "SAWNOFF_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "STKYBMB_ENEMY_KILLS", 50)
stats.set_int(MPX() .. "UNARMED_ENEMY_KILLS", 50)
stats.set_int(MPX() .. "SNIPERRFL_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "HVYSNIPER_ENEMY_KILLS", 500)
end)
AUM:add_button("Vehicles", function()
stats.set_int(MPX() .. "AWD_50_VEHICLES_BLOWNUP", 500)
stats.set_int(MPX() .. "CARS_EXPLODED", 500)
stats.set_int(MPX() .. "AWD_CAR_EXPORT", 100)
stats.set_int(MPX() .. "AWD_FMDRIVEWITHOUTCRASH", 30)
stats.set_int(MPX() .. "AWD_PASSENGERTIME", 4)
stats.set_int(MPX() .. "AWD_TIME_IN_HELICOPTER", 4)
stats.set_int(MPX() .. "AWD_VEHICLE_JUMP_OVER_40M", 25)
stats.set_int(MPX() .. "MOST_FLIPS_IN_ONE_JUMP", 5)
stats.set_int(MPX() .. "MOST_SPINS_IN_ONE_JUMP", 5)
stats.set_int(MPX() .. "CHAR_FM_VEHICLE_1_UNLCK", -1)
stats.set_int(MPX() .. "CHAR_FM_VEHICLE_2_UNLCK", -1)
stats.set_int(MPX() .. "NO_CARS_REPAIR", 1000)
stats.set_int(MPX() .. "VEHICLES_SPRAYED", 500)
stats.set_int(MPX() .. "NUMBER_NEAR_MISS_NOCRASH", 500)
stats.set_int(MPX() .. "USJS_FOUND", 50)
stats.set_int(MPX() .. "USJS_COMPLETED", 50)
stats.set_int(MPX() .. "USJS_TOTAL_COMPLETED", 50)
stats.set_int(MPX() .. "CRDEADLINE", 5)
stats.set_int(MPX() .. "FAVOUTFITBIKETIMECURRENT", 2069146067)
stats.set_int(MPX() .. "FAVOUTFITBIKETIME1ALLTIME", 2069146067)
stats.set_int(MPX() .. "FAVOUTFITBIKETYPECURRENT", 2069146067)
stats.set_int(MPX() .. "FAVOUTFITBIKETYPEALLTIME", 2069146067)
stats.set_int(MPX() .. "LONGEST_WHEELIE_DIST", 1000)
stats.set_int(MPX() .. "RACES_WON", 50)
stats.set_int(MPX() .. "COUNT_HOTRING_RACE", 20)
stats.set_bool(MPX() .. "AWD_FMFURTHESTWHEELIE", true)
stats.set_bool(MPX() .. "AWD_FMFULLYMODDEDCAR", true)
end)
AUM:add_button("Combat", function()
stats.set_int(MPX() .. "AWD_100_HEADSHOTS", 500)
stats.set_int(MPX() .. "AWD_FMOVERALLKILLS", 1000)
stats.set_int(MPX() .. "AWD_FMKILLBOUNTY", 25)
stats.set_int(MPX() .. "AWD_FM_DM_3KILLSAMEGUY", 50)
stats.set_int(MPX() .. "AWD_FM_DM_KILLSTREAK", 100)
stats.set_int(MPX() .. "AWD_FM_DM_STOLENKILL", 50)
stats.set_int(MPX() .. "AWD_FM_DM_TOTALKILLS", 500)
stats.set_bool(MPX() .. "AWD_FMKILLSTREAKSDM", true)
stats.set_bool(MPX() .. "AWD_FMMOSTKILLSGANGHIDE", true)
stats.set_bool(MPX() .. "AWD_FMMOSTKILLSSURVIVE", true)
stats.set_int(MPX() .. "AWD_FMREVENGEKILLSDM", 50)
stats.set_int(MPX() .. "AWD_KILL_CARRIER_CAPTURE", 100)
stats.set_int(MPX() .. "AWD_NIGHTVISION_KILLS", 100)
stats.set_int(MPX() .. "AWD_KILL_PSYCHOPATHS", 100)
stats.set_int(MPX() .. "AWD_TAKEDOWNSMUGPLANE", 50)
stats.set_int(MPX() .. "AWD_100_KILLS_PISTOL", 500)
stats.set_int(MPX() .. "AWD_100_KILLS_SMG", 500)
stats.set_int(MPX() .. "AWD_100_KILLS_SHOTGUN", 500)
stats.set_int(MPX() .. "ASLTRIFLE_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "AWD_100_KILLS_SNIPER", 500)
stats.set_int(MPX() .. "MG_ENEMY_KILLS", 500)
stats.set_int(MPX() .. "AWD_25_KILLS_STICKYBOMBS", 50)
stats.set_int(MPX() .. "AWD_50_KILLS_GRENADES", 50)
stats.set_int(MPX() .. "AWD_50_KILLS_ROCKETLAUNCH", 50)
stats.set_int(MPX() .. "AWD_20_KILLS_MELEE", 50)
stats.set_int(MPX() .. "AWD_CAR_BOMBS_ENEMY_KILLS", 25)
stats.set_int(MPX() .. "MELEEKILLS", 700)
stats.set_int(MPX() .. "HITS", 10000)
stats.set_int(MPX() .. "DEATHS", 499)
stats.set_int(MPX() .. "HIGHEST_SKITTLES", 900)
stats.set_int(MPX() .. "NUMBER_NEAR_MISS", 1000)
end)
HAUM = AUM:add_tab("Heists Awards Unlocker Menu")
APARTMENTAUM = HAUM:add_tab("Apartment Heist Menu")
APARTMENTAUM:add_button("Unlock All Apartment Heists Awards", function()
stats.set_int(MPX() .. "AWD_FINISH_HEISTS", 50)
stats.set_int(MPX() .. "AWD_FINISH_HEIST_SETUP_JOB", 50)
stats.set_int(MPX() .. "AWD_COMPLETE_HEIST_NOT_DIE", -1)
stats.set_bool(MPX() .. "AWD_FINISH_HEIST_NO_DAMAGE", true)
stats.set_int(MPX() .. "AWD_WIN_GOLD_MEDAL_HEISTS", 25)
stats.set_int(MPX() .. "AWD_DO_HEIST_AS_MEMBER", 25)
stats.set_int(MPX() .. "AWD_DO_HEIST_AS_THE_LEADER", 25)
stats.set_bool(MPX() .. "AWD_SPLIT_HEIST_TAKE_EVENLY", true)
stats.set_bool(MPX() .. "AWD_ACTIVATE_2_PERSON_KEY", true)
stats.set_int(MPX() .. "AWD_CONTROL_CROWDS", 25)
stats.set_bool(MPX() .. "AWD_ALL_ROLES_HEIST", true)
stats.set_int(MPX() .. "HEIST_COMPLETION", 25)
stats.set_int(MPX() .. "HEISTS_ORGANISED", -1)
stats.set_int(MPX() .. "HEIST_START", -1)
stats.set_int(MPX() .. "HEIST_END", -1)
stats.set_int(MPX() .. "CUTSCENE_MID_PRISON", -1)
stats.set_int(MPX() .. "CUTSCENE_MID_HUMANE", -1)
stats.set_int(MPX() .. "CUTSCENE_MID_NARC", -1)
stats.set_int(MPX() .. "CUTSCENE_MID_ORNATE", -1)
stats.set_int(MPX() .. "CR_FLEECA_PREP_1", -1)
stats.set_int(MPX() .. "CR_FLEECA_PREP_2", -1)
stats.set_int(MPX() .. "CR_FLEECA_FINALE", -1)
stats.set_int(MPX() .. "CR_PRISON_PLANE", -1)
stats.set_int(MPX() .. "CR_PRISON_BUS", -1)
stats.set_int(MPX() .. "CR_PRISON_STATION", -1)
stats.set_int(MPX() .. "CR_PRISON_UNFINISHED_BIZ", -1)
stats.set_int(MPX() .. "CR_PRISON_FINALE", -1)
stats.set_int(MPX() .. "CR_HUMANE_KEY_CODES", -1)
stats.set_int(MPX() .. "CR_HUMANE_ARMORDILLOS", -1)
stats.set_int(MPX() .. "CR_HUMANE_EMP", -1)
stats.set_int(MPX() .. "CR_HUMANE_VALKYRIE", -1)
stats.set_int(MPX() .. "CR_HUMANE_FINALE", -1)
stats.set_int(MPX() .. "CR_NARC_COKE", -1)
stats.set_int(MPX() .. "CR_NARC_TRASH_TRUCK", -1)
stats.set_int(MPX() .. "CR_NARC_BIKERS", -1)
stats.set_int(MPX() .. "CR_NARC_WEED", -1)
stats.set_int(MPX() .. "CR_NARC_STEAL_METH", -1)
stats.set_int(MPX() .. "CR_NARC_FINALE", -1)
stats.set_int(MPX() .. "CR_PACIFIC_TRUCKS", -1)
stats.set_int(MPX() .. "CR_PACIFIC_WITSEC", -1)
stats.set_int(MPX() .. "CR_PACIFIC_HACK", -1)
stats.set_int(MPX() .. "CR_PACIFIC_BIKES", -1)
stats.set_int(MPX() .. "CR_PACIFIC_CONVOY", -1)
stats.set_int(MPX() .. "CR_PACIFIC_FINALE", -1)
stats.set_int("MPPLY_HEIST_ACH_TRACKER", -1)
stats.set_int("MPPLY_WIN_GOLD_MEDAL_HEISTS", 25)
stats.set_bool("MPPLY_AWD_FLEECA_FIN", true)
stats.set_bool("MPPLY_AWD_PRISON_FIN", true)
stats.set_bool("MPPLY_AWD_HUMANE_FIN", true)
stats.set_bool("MPPLY_AWD_SERIESA_FIN", true)
stats.set_bool("MPPLY_AWD_PACIFIC_FIN", true)
stats.set_bool("MPPLY_AWD_HST_ORDER", true)
stats.set_bool("MPPLY_AWD_COMPLET_HEIST_MEM", true)
stats.set_bool("MPPLY_AWD_COMPLET_HEIST_1STPER", true)
stats.set_bool("MPPLY_AWD_HST_SAME_TEAM", true)
stats.set_bool("MPPLY_AWD_HST_ULT_CHAL", true)
stats.set_bool(MPX() .. "AWD_MATCHING_OUTFIT_HEIST", true)
stats.set_bool(MPX() .. "HEIST_PLANNING_DONE_PRINT", true)
stats.set_bool(MPX() .. "HEIST_PLANNING_DONE_HELP_0", true)
stats.set_bool(MPX() .. "HEIST_PLANNING_DONE_HELP_1", true)
stats.set_bool(MPX() .. "HEIST_PRE_PLAN_DONE_HELP_0", true)
stats.set_bool(MPX() .. "HEIST_CUTS_DONE_FINALE", true)
stats.set_bool(MPX() .. "HEIST_IS_TUTORIAL", true)
stats.set_bool(MPX() .. "HEIST_STRAND_INTRO_DONE", true)
stats.set_bool(MPX() .. "HEIST_CUTS_DONE_ORNATE", true)
stats.set_bool(MPX() .. "HEIST_CUTS_DONE_PRISON", true)
stats.set_bool(MPX() .. "HEIST_CUTS_DONE_BIOLAB", true)
stats.set_bool(MPX() .. "HEIST_CUTS_DONE_NARCOTIC", true)
stats.set_bool(MPX() .. "HEIST_CUTS_DONE_TUTORIAL", true)
stats.set_bool(MPX() .. "HEIST_AWARD_DONE_PREP", true)
stats.set_bool(MPX() .. "HEIST_AWARD_BOUGHT_IN", true)
stats.set_int(MPX() .. "HEIST_PLANNING_STAGE", -1)
end)
DIAMONHDAUM = HAUM:add_tab("Diamond Casino Heist")
DIAMONHDAUM:add_button("Unlock All Diamond Casino Heist Awards", function()
stats.set_int(MPX() .. "CAS_HEIST_NOTS", -1)
stats.set_int(MPX() .. "CAS_HEIST_FLOW", -1)
stats.set_int(MPX() .. "SIGNAL_JAMMERS_COLLECTED", 50)
stats.set_int(MPX() .. "AWD_PREPARATION", 40)
stats.set_int(MPX() .. "AWD_ASLEEPONJOB", 20)
stats.set_int(MPX() .. "AWD_DAICASHCRAB", 100000)
stats.set_int(MPX() .. "AWD_BIGBRO", 40)
stats.set_int(MPX() .. "AWD_SHARPSHOOTER", 40)
stats.set_int(MPX() .. "AWD_RACECHAMP", 40)
stats.set_int(MPX() .. "AWD_BATSWORD", 1000000)
stats.set_int(MPX() .. "AWD_COINPURSE", 950000)
stats.set_int(MPX() .. "AWD_ASTROCHIMP", 3000000)
stats.set_int(MPX() .. "AWD_MASTERFUL", 40000)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE0", -1)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE1", -1)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE2", -1)
stats.set_int(MPX() .. "H3_VEHICLESUSED", -1)
stats.set_int(MPX() .. "H3_CR_STEALTH_1A", 100)
stats.set_int(MPX() .. "H3_CR_STEALTH_2B_RAPP", 100)
stats.set_int(MPX() .. "H3_CR_STEALTH_2C_SIDE", 100)
stats.set_int(MPX() .. "H3_CR_STEALTH_3A", 100)
stats.set_int(MPX() .. "H3_CR_STEALTH_4A", 100)
stats.set_int(MPX() .. "H3_CR_STEALTH_5A", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_1A", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_2A", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_2B", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_3A", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_3B", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_4A", 100)
stats.set_int(MPX() .. "H3_CR_SUBTERFUGE_5A", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_1A", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_2A1", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_2A2", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_2BP", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_2C", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_3A", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_4A", 100)
stats.set_int(MPX() .. "H3_CR_DIRECT_5A", 100)
stats.set_int(MPX() .. "CR_ORDER", 100)
stats.set_bool(MPX() .. "AWD_SCOPEOUT", true)
stats.set_bool(MPX() .. "AWD_CREWEDUP", true)
stats.set_bool(MPX() .. "AWD_MOVINGON", true)
stats.set_bool(MPX() .. "AWD_PROMOCAMP", true)
stats.set_bool(MPX() .. "AWD_GUNMAN", true)
stats.set_bool(MPX() .. "AWD_SMASHNGRAB", true)
stats.set_bool(MPX() .. "AWD_INPLAINSI", true)
stats.set_bool(MPX() .. "AWD_UNDETECTED", true)
stats.set_bool(MPX() .. "AWD_ALLROUND", true)
stats.set_bool(MPX() .. "AWD_ELITETHEIF", true)
stats.set_bool(MPX() .. "AWD_PRO", true)
stats.set_bool(MPX() .. "AWD_SUPPORTACT", true)
stats.set_bool(MPX() .. "AWD_SHAFTED", true)
stats.set_bool(MPX() .. "AWD_COLLECTOR", true)
stats.set_bool(MPX() .. "AWD_DEADEYE", true)
stats.set_bool(MPX() .. "AWD_PISTOLSATDAWN", true)
stats.set_bool(MPX() .. "AWD_TRAFFICAVOI", true)
stats.set_bool(MPX() .. "AWD_CANTCATCHBRA", true)
stats.set_bool(MPX() .. "AWD_WIZHARD", true)
stats.set_bool(MPX() .. "AWD_APEESCAPE", true)
stats.set_bool(MPX() .. "AWD_MONKEYKIND", true)
stats.set_bool(MPX() .. "AWD_AQUAAPE", true)
stats.set_bool(MPX() .. "AWD_KEEPFAITH", true)
stats.set_bool(MPX() .. "AWD_TRUELOVE", true)
stats.set_bool(MPX() .. "AWD_NEMESIS", true)
stats.set_bool(MPX() .. "AWD_FRIENDZONED", true)
stats.set_bool(MPX() .. "VCM_FLOW_CS_RSC_SEEN", true)
stats.set_bool(MPX() .. "VCM_FLOW_CS_BWL_SEEN", true)
stats.set_bool(MPX() .. "VCM_FLOW_CS_MTG_SEEN", true)
stats.set_bool(MPX() .. "VCM_FLOW_CS_OIL_SEEN", true)
stats.set_bool(MPX() .. "VCM_FLOW_CS_DEF_SEEN", true)
stats.set_bool(MPX() .. "VCM_FLOW_CS_FIN_SEEN", true)
stats.set_bool(MPX() .. "HELP_FURIA", true)
stats.set_bool(MPX() .. "HELP_MINITAN", true)
stats.set_bool(MPX() .. "HELP_YOSEMITE2", true)
stats.set_bool(MPX() .. "HELP_ZHABA", true)
stats.set_bool(MPX() .. "HELP_IMORGEN", true)
stats.set_bool(MPX() .. "HELP_SULTAN2", true)
stats.set_bool(MPX() .. "HELP_VAGRANT", true)
stats.set_bool(MPX() .. "HELP_VSTR", true)
stats.set_bool(MPX() .. "HELP_STRYDER", true)
stats.set_bool(MPX() .. "HELP_SUGOI", true)
stats.set_bool(MPX() .. "HELP_KANJO", true)
stats.set_bool(MPX() .. "HELP_FORMULA", true)
stats.set_bool(MPX() .. "HELP_FORMULA2", true)
stats.set_bool(MPX() .. "HELP_JB7002", true)
for i = 0, 4 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "CASINOHSTPSTAT_BOOL" .. i, true, j)
end
end
end)
CAYOAUM = HAUM:add_tab("Cayo Heist Menu")
CAYOAUM:add_button("Unlock All Cayo Heist Awards", function()
stats.set_bool(MPX() .. "AWD_INTELGATHER", true)
stats.set_bool(MPX() .. "AWD_COMPOUNDINFILT", true)
stats.set_bool(MPX() .. "AWD_LOOT_FINDER", true)
stats.set_bool(MPX() .. "AWD_MAX_DISRUPT", true)
stats.set_bool(MPX() .. "AWD_THE_ISLAND_HEIST", true)
stats.set_bool(MPX() .. "AWD_GOING_ALONE", true)
stats.set_bool(MPX() .. "AWD_TEAM_WORK", true)
stats.set_bool(MPX() .. "AWD_MIXING_UP", true)
stats.set_bool(MPX() .. "AWD_TEAM_WORK", true)
stats.set_bool(MPX() .. "AWD_MIXING_UP", true)
stats.set_bool(MPX() .. "AWD_PRO_THIEF", true)
stats.set_bool(MPX() .. "AWD_CAT_BURGLAR", true)
stats.set_bool(MPX() .. "AWD_ONE_OF_THEM", true)
stats.set_bool(MPX() .. "AWD_GOLDEN_GUN", true)
stats.set_bool(MPX() .. "AWD_ELITE_THIEF", true)
stats.set_bool(MPX() .. "AWD_PROFESSIONAL", true)
stats.set_bool(MPX() .. "AWD_HELPING_OUT", true)
stats.set_bool(MPX() .. "AWD_COURIER", true)
stats.set_bool(MPX() .. "AWD_PARTY_VIBES", true)
stats.set_bool(MPX() .. "AWD_HELPING_HAND", true)
stats.set_bool(MPX() .. "AWD_ELEVENELEVEN", true)
stats.set_bool(MPX() .. "COMPLETE_H4_F_USING_VETIR", true)
stats.set_bool(MPX() .. "COMPLETE_H4_F_USING_LONGFIN", true)
stats.set_bool(MPX() .. "COMPLETE_H4_F_USING_ANNIH", true)
stats.set_bool(MPX() .. "COMPLETE_H4_F_USING_ALKONOS", true)
stats.set_bool(MPX() .. "COMPLETE_H4_F_USING_PATROLB", true)
stats.set_int(MPX() .. "AWD_LOSTANDFOUND", 500000)
stats.set_int(MPX() .. "AWD_SUNSET", 1800000)
stats.set_int(MPX() .. "AWD_TREASURE_HUNTER", 1000000)
stats.set_int(MPX() .. "AWD_WRECK_DIVING", 1000000)
stats.set_int(MPX() .. "AWD_KEINEMUSIK", 1800000)
stats.set_int(MPX() .. "AWD_PALMS_TRAX", 1800000)
stats.set_int(MPX() .. "AWD_MOODYMANN", 1800000)
stats.set_int(MPX() .. "AWD_FILL_YOUR_BAGS", 1000000000)
stats.set_int(MPX() .. "AWD_WELL_PREPARED", 80)
stats.set_int(MPX() .. "H4_H4_DJ_MISSIONS", -1)
stats.set_int(MPX() .. "H4CNF_APPROACH", -1)
stats.set_int(MPX() .. "H4_MISSIONS", -1)
stats.set_int(MPX() .. "H4_PLAYTHROUGH_STATUS", 100)
for i = 0, 2 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "HISLANDPSTAT_BOOL" .. i, true, j)
end
end
end)
DOOMSDAYAUM = HAUM:add_tab("Doomsday Heist Awards Menu")
DOOMSDAYAUM:add_button("Unlock All Doomsday Heist Awards", function()
stats.set_int(MPX() .. "GANGOPS_HEIST_STATUS", -1)
stats.set_int(MPX() .. "GANGOPS_HEIST_STATUS", -229384)
stats.set_int(MPX() .. "GANGOPS_FM_MISSION_PROG", -1)
stats.set_int(MPX() .. "GANGOPS_FLOW_MISSION_PROG", -1)
stats.set_int("MPPLY_GANGOPS_ALLINORDER", 100)
stats.set_int("MPPLY_GANGOPS_LOYALTY", 100)
stats.set_int("MPPLY_GANGOPS_CRIMMASMD", 100)
stats.set_int("MPPLY_GANGOPS_LOYALTY2", 100)
stats.set_int("MPPLY_GANGOPS_LOYALTY3", 100)
stats.set_int("MPPLY_GANGOPS_CRIMMASMD2", 100)
stats.set_int("MPPLY_GANGOPS_CRIMMASMD3", 100)
stats.set_int("MPPLY_GANGOPS_SUPPORT", 100)
stats.set_int(MPX() .. "CR_GANGOP_MORGUE", 10)
stats.set_int(MPX() .. "CR_GANGOP_DELUXO", 10)
stats.set_int(MPX() .. "CR_GANGOP_SERVERFARM", 10)
stats.set_int(MPX() .. "CR_GANGOP_IAABASE_FIN", 10)
stats.set_int(MPX() .. "CR_GANGOP_STEALOSPREY", 10)
stats.set_int(MPX() .. "CR_GANGOP_FOUNDRY", 10)
stats.set_int(MPX() .. "CR_GANGOP_RIOTVAN", 10)
stats.set_int(MPX() .. "CR_GANGOP_SUBMARINECAR", 10)
stats.set_int(MPX() .. "CR_GANGOP_SUBMARINE_FIN", 10)
stats.set_int(MPX() .. "CR_GANGOP_PREDATOR", 10)
stats.set_int(MPX() .. "CR_GANGOP_BMLAUNCHER", 10)
stats.set_int(MPX() .. "CR_GANGOP_BCCUSTOM", 10)
stats.set_int(MPX() .. "CR_GANGOP_STEALTHTANKS", 10)
stats.set_int(MPX() .. "CR_GANGOP_SPYPLANE", 10)
stats.set_int(MPX() .. "CR_GANGOP_FINALE", 10)
stats.set_int(MPX() .. "CR_GANGOP_FINALE_P2", 10)
stats.set_int(MPX() .. "CR_GANGOP_FINALE_P3", 10)
stats.set_bool("MPPLY_AWD_GANGOPS_IAA", true)
stats.set_bool("MPPLY_AWD_GANGOPS_SUBMARINE", true)
stats.set_bool("MPPLY_AWD_GANGOPS_MISSILE", true)
stats.set_bool("MPPLY_AWD_GANGOPS_ALLINORDER", true)
stats.set_bool("MPPLY_AWD_GANGOPS_LOYALTY", true)
stats.set_bool("MPPLY_AWD_GANGOPS_LOYALTY2", true)
stats.set_bool("MPPLY_AWD_GANGOPS_LOYALTY3", true)
stats.set_bool("MPPLY_AWD_GANGOPS_CRIMMASMD", true)
stats.set_bool("MPPLY_AWD_GANGOPS_CRIMMASMD2", true)
stats.set_bool("MPPLY_AWD_GANGOPS_CRIMMASMD3", true)
stats.set_bool("MPPLY_AWD_GANGOPS_SUPPORT", true)
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "GANGOPSPSTAT_BOOL0", true, j)
end
stats.set_masked_int(MPX() .. "DLCSMUGCHARPSTAT_INT260", 3, 16, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT260", 3, 24, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT260", 3, 32, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT260", 3, 40, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT260", 3, 48, 8)
end)
DLCAUM = AUM:add_tab("DLC Awards Menu")
DLCAUM:add_button("The Kortz Center Heist", function()
stats.set_bool(MPX() .. "AWD_SCOPING", true)
stats.set_int(MPX() .. "AWD_PREPPER", 20)
stats.set_bool(MPX() .. "AWD_ADAPTABLE", true)
stats.set_bool(MPX() .. "AWD_KORTZCENTERHEIST", true)
stats.set_bool(MPX() .. "AWD_FINDSAWAY", true)
stats.set_bool(MPX() .. "AWD_WHOSTHERE", true)
stats.set_bool(MPX() .. "AWD_ELITETHIEF", true)
stats.set_bool(MPX() .. "AWD_NOLIFER", true)
stats.set_bool(MPX() .. "AWD_SOLITUDE", true)
stats.set_bool(MPX() .. "AWD_COORDINATION", true)
stats.set_bool(MPX() .. "AWD_FLEXIBLETHIEF", true)
stats.set_int(MPX() .. "AWD_REPEATOFFENDER", 20)
stats.set_int(MPX() .. "AWD_FULLBAGS", 5000000)
stats.set_bool(MPX() .. "AWD_HIDDENINPLAINSIGHT", true)
stats.set_int(MPX() .. "AWD_CURATOR", 5)
stats.set_int(MPX() .. "AWD_LAPIDARY", 5)
stats.set_bool(MPX() .. "AWD_PACIFIST", true)
stats.set_bool(MPX() .. "AWD_PUTRIDPILFERING", true)
stats.set_bool(MPX() .. "AWD_METEORITICS", true)
end)
DLCAUM:add_button("A Safehouse In The Hills", function()
stats.set_bool(MPX() .. "AWD_NEGATIVEPRESS", true)
stats.set_bool(MPX() .. "AWD_USESELFDRIVINGVEH", true)
stats.set_bool(MPX() .. "AWD_LIONSDEN", true)
stats.set_bool(MPX() .. "AWD_TAKEOUTLEADEXPLO", true)
stats.set_bool(MPX() .. "AWD_SUBWAYTRAIN", true)
stats.set_bool(MPX() .. "AWD_SUBWAYSTUNTJUMP", true)
stats.set_bool(MPX() .. "AWD_TRASHCOLLECTORS", true)
stats.set_bool(MPX() .. "AWD_ALLTRASHCOLLECTED", true)
stats.set_bool(MPX() .. "AWD_FIBFINALE", true)
stats.set_bool(MPX() .. "AWD_HELPER", true)
stats.set_bool(MPX() .. "AWD_FIBFINALECHALLENGE", true)
stats.set_bool(MPX() .. "AWD_MANSIONDEFEND", true)
stats.set_bool(MPX() .. "AWD_DEFLOWMOTIONKILLS", true)
stats.set_bool(MPX() .. "AWD_YOUVEMADEIT", true)
stats.set_bool(MPX() .. "AWD_ANIMALLOVER", true)
stats.set_bool(MPX() .. "AWD_MANSADVERSARYWIN", true)
stats.set_bool(MPX() .. "AWD_ONTHECLOCK", true)
stats.set_int(MPX() .. "AWD_TAXIDESTRUCTION", 20)
stats.set_int(MPX() .. "AWD_YOGA", 50)
stats.set_int(MPX() .. "AWD_JUICEDUP", 100)
stats.set_int(MPX() .. "AWD_MANADVERSARYDEFUSE", 10)
stats.set_int(MPX() .. "AWD_FIREFIGHTER", 20)
stats.set_int(MPX() .. "AWD_ALPHAMAIL", 20)
stats.set_int(MPX() .. "AWD_LOSSANTOSMETEOR", 20)
end)
DLCAUM:add_button("Agents of Sabotage", function()
for i = 9542, 9546 do
stats.set_packed_stat_bool(i, true)
end
stats.set_packed_stat_bool(9549, true)
stats.set_packed_stat_int(24903, 25)
stats.set_packed_stat_int(24904, 2)
stats.set_int(MPX() .. "HACKER24_GEN_BS", 8160)
stats.set_bool(MPX() .. "AWD_FINEART", true)
stats.set_bool(MPX() .. "AWD_BRUTEFORCE", true)
stats.set_bool(MPX() .. "AWD_PROJECTBREAK", true)
stats.set_bool(MPX() .. "AWD_BLACKBOXFILE", true)
stats.set_bool(MPX() .. "AWD_BONUSPOINTS", true)
stats.set_int(MPX() .. "AWD_DARNELLBROSINC", 50)
stats.set_int(MPX() .. "AWD_GET_READY", 50)
end)
DLCAUM:add_button("After Hours", function()
stats.set_int(MPX() .. "AWD_DANCE_TO_SOLOMUN", 120)
stats.set_int(MPX() .. "AWD_DANCE_TO_TALEOFUS", 120)
stats.set_int(MPX() .. "AWD_DANCE_TO_DIXON", 120)
stats.set_int(MPX() .. "AWD_DANCE_TO_BLKMAD", 120)
stats.set_int(MPX() .. "AWD_CLUB_DRUNK", 200)
stats.set_int(MPX() .. "NIGHTCLUB_VIP_APPEAR", 700)
stats.set_int(MPX() .. "NIGHTCLUB_JOBS_DONE", 700)
stats.set_int(MPX() .. "NIGHTCLUB_EARNINGS", 5721002)
stats.set_int(MPX() .. "HUB_SALES_COMPLETED", 1001)
stats.set_int(MPX() .. "HUB_EARNINGS", 20721002)
stats.set_int(MPX() .. "DANCE_COMBO_DURATION_MINS", 3600000)
stats.set_int(MPX() .. "NIGHTCLUB_PLAYER_APPEAR", 100)
stats.set_int(MPX() .. "LIFETIME_HUB_GOODS_SOLD", 784672)
stats.set_int(MPX() .. "LIFETIME_HUB_GOODS_MADE", 507822)
stats.set_int(MPX() .. "DANCEPERFECTOWNCLUB", 120)
stats.set_int(MPX() .. "NUMUNIQUEPLYSINCLUB", 120)
stats.set_int(MPX() .. "DANCETODIFFDJS", 4)
stats.set_int(MPX() .. "NIGHTCLUB_HOTSPOT_TIME_MS", 3600000)
stats.set_int(MPX() .. "NIGHTCLUB_CONT_TOTAL", 20)
stats.set_int(MPX() .. "NIGHTCLUB_CONT_MISSION", -1)
stats.set_int(MPX() .. "CLUB_CONTRABAND_MISSION", 1000)
stats.set_int(MPX() .. "HUB_CONTRABAND_MISSION", 1000)
stats.set_bool(MPX() .. "AWD_CLUB_HOTSPOT", true)
stats.set_bool(MPX() .. "AWD_CLUB_CLUBBER", true)
stats.set_bool(MPX() .. "AWD_CLUB_COORD", true)
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "BUSINESSBATPSTAT_BOOL0", true, j)
stats.set_bool_masked(MPX() .. "BUSINESSBATPSTAT_BOOL1", true, j)
end
if stats.get_masked_int(MPX() .. "BUSINESSBATPSTAT_INT380", 0, 8) < 20 then
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT380", 20, 0, 8)
end
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 50, 8, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 100, 16, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 20, 24, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 80, 32, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 60, 40, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 40, 48, 8)
stats.set_masked_int(MPX() .. "BUSINESSBATPSTAT_INT379", 10, 56, 8)
end)
DLCAUM:add_button("Arena War", function()
stats.set_int(MPX() .. "ARN_BS_TRINKET_TICKERS", -1)
stats.set_int(MPX() .. "ARN_BS_TRINKET_SAVED", -1)
stats.set_int(MPX() .. "AWD_WATCH_YOUR_STEP", 50)
stats.set_int(MPX() .. "AWD_TOWER_OFFENSE", 50)
stats.set_int(MPX() .. "AWD_READY_FOR_WAR", 50)
stats.set_int(MPX() .. "AWD_THROUGH_A_LENS", 50)
stats.set_int(MPX() .. "AWD_SPINNER", 50)
stats.set_int(MPX() .. "AWD_YOUMEANBOOBYTRAPS", 50)
stats.set_int(MPX() .. "AWD_MASTER_BANDITO", 50)
stats.set_int(MPX() .. "AWD_SITTING_DUCK", 50)
stats.set_int(MPX() .. "AWD_CROWDPARTICIPATION", 50)
stats.set_int(MPX() .. "AWD_KILL_OR_BE_KILLED", 50)
stats.set_int(MPX() .. "AWD_MASSIVE_SHUNT", 50)
stats.set_int(MPX() .. "AWD_YOURE_OUTTA_HERE", 200)
stats.set_int(MPX() .. "AWD_WEVE_GOT_ONE", 50)
stats.set_int(MPX() .. "AWD_ARENA_WAGEWORKER", 1000000)
stats.set_int(MPX() .. "AWD_TIME_SERVED", 1000)
stats.set_int(MPX() .. "AWD_TOP_SCORE", 55000)
stats.set_int(MPX() .. "AWD_CAREER_WINNER", 1000)
stats.set_int(MPX() .. "ARENAWARS_SP", 0)
stats.set_int(MPX() .. "ARENAWARS_SKILL_LEVEL", 20)
stats.set_int(MPX() .. "ARENAWARS_SP_LIFETIME", 100)
stats.set_int(MPX() .. "ARENAWARS_AP", 0)
stats.set_int(MPX() .. "ARENAWARS_AP_TIER", 1000)
stats.set_int(MPX() .. "ARENAWARS_AP_LIFETIME", 5055000)
stats.set_int(MPX() .. "ARENAWARS_CARRER_UNLK", -1)
stats.set_int(MPX() .. "ARN_W_THEME_SCIFI", 1000)
stats.set_int(MPX() .. "ARN_W_THEME_APOC", 1000)
stats.set_int(MPX() .. "ARN_W_THEME_CONS", 1000)
stats.set_int(MPX() .. "ARN_W_PASS_THE_BOMB", 1000)
stats.set_int(MPX() .. "ARN_W_DETONATION", 1000)
stats.set_int(MPX() .. "ARN_W_ARCADE_RACE", 1000)
stats.set_int(MPX() .. "ARN_W_CTF", 1000)
stats.set_int(MPX() .. "ARN_W_TAG_TEAM", 1000)
stats.set_int(MPX() .. "ARN_W_DESTR_DERBY", 1000)
stats.set_int(MPX() .. "ARN_W_CARNAGE", 1000)
stats.set_int(MPX() .. "ARN_W_MONSTER_JAM", 1000)
stats.set_int(MPX() .. "ARN_W_GAMES_MASTERS", 1000)
stats.set_int(MPX() .. "ARN_L_PASS_THE_BOMB", 500)
stats.set_int(MPX() .. "ARN_L_DETONATION", 500)
stats.set_int(MPX() .. "ARN_L_ARCADE_RACE", 500)
stats.set_int(MPX() .. "ARN_L_CTF", 500)
stats.set_int(MPX() .. "ARN_L_TAG_TEAM", 500)
stats.set_int(MPX() .. "ARN_L_DESTR_DERBY", 500)
stats.set_int(MPX() .. "ARN_L_CARNAGE", 500)
stats.set_int(MPX() .. "ARN_L_MONSTER_JAM", 500)
stats.set_int(MPX() .. "ARN_L_GAMES_MASTERS", 500)
stats.set_int(MPX() .. "NUMBER_OF_CHAMP_BOUGHT", 1000)
stats.set_int(MPX() .. "ARN_SPECTATOR_KILLS", 1000)
stats.set_int(MPX() .. "ARN_LIFETIME_KILLS", 1000)
stats.set_int(MPX() .. "ARN_LIFETIME_DEATHS", 500)
stats.set_int(MPX() .. "ARENAWARS_CARRER_WINS", 1000)
stats.set_int(MPX() .. "ARENAWARS_CARRER_WINT", 1000)
stats.set_int(MPX() .. "ARENAWARS_MATCHES_PLYD", 1000)
stats.set_int(MPX() .. "ARENAWARS_MATCHES_PLYDT", 1000)
stats.set_int(MPX() .. "ARN_SPEC_BOX_TIME_MS", 86400000)
stats.set_int(MPX() .. "ARN_SPECTATOR_DRONE", 1000)
stats.set_int(MPX() .. "ARN_SPECTATOR_CAMS", 1000)
stats.set_int(MPX() .. "ARN_SMOKE", 1000)
stats.set_int(MPX() .. "ARN_DRINK", 1000)
stats.set_int(MPX() .. "ARN_VEH_MONSTER", 1000)
stats.set_int(MPX() .. "ARN_VEH_MONSTER", 1000)
stats.set_int(MPX() .. "ARN_VEH_MONSTER", 1000)
stats.set_int(MPX() .. "ARN_VEH_CERBERUS", 1000)
stats.set_int(MPX() .. "ARN_VEH_CERBERUS2", 1000)
stats.set_int(MPX() .. "ARN_VEH_CERBERUS3", 1000)
stats.set_int(MPX() .. "ARN_VEH_BRUISER", 1000)
stats.set_int(MPX() .. "ARN_VEH_BRUISER2", 1000)
stats.set_int(MPX() .. "ARN_VEH_BRUISER3", 1000)
stats.set_int(MPX() .. "ARN_VEH_SLAMVAN4", 1000)
stats.set_int(MPX() .. "ARN_VEH_SLAMVAN5", 1000)
stats.set_int(MPX() .. "ARN_VEH_SLAMVAN6", 1000)
stats.set_int(MPX() .. "ARN_VEH_BRUTUS", 1000)
stats.set_int(MPX() .. "ARN_VEH_BRUTUS2", 1000)
stats.set_int(MPX() .. "ARN_VEH_BRUTUS3", 1000)
stats.set_int(MPX() .. "ARN_VEH_SCARAB", 1000)
stats.set_int(MPX() .. "ARN_VEH_SCARAB2", 1000)
stats.set_int(MPX() .. "ARN_VEH_SCARAB3", 1000)
stats.set_int(MPX() .. "ARN_VEH_DOMINATOR4", 1000)
stats.set_int(MPX() .. "ARN_VEH_DOMINATOR5", 1000)
stats.set_int(MPX() .. "ARN_VEH_DOMINATOR6", 1000)
stats.set_int(MPX() .. "ARN_VEH_IMPALER2", 1000)
stats.set_int(MPX() .. "ARN_VEH_IMPALER3", 1000)
stats.set_int(MPX() .. "ARN_VEH_IMPALER4", 1000)
stats.set_int(MPX() .. "ARN_VEH_ISSI4", 1000)
stats.set_int(MPX() .. "ARN_VEH_ISSI5", 1000)
stats.set_int(MPX() .. "ARN_VEH_ISSI", 61000)
stats.set_int(MPX() .. "ARN_VEH_IMPERATOR", 1000)
stats.set_int(MPX() .. "ARN_VEH_IMPERATOR2", 1000)
stats.set_int(MPX() .. "ARN_VEH_IMPERATOR3", 1000)
stats.set_int(MPX() .. "ARN_VEH_ZR380", 1000)
stats.set_int(MPX() .. "ARN_VEH_ZR3802", 1000)
stats.set_int(MPX() .. "ARN_VEH_ZR3803", 1000)
stats.set_int(MPX() .. "ARN_VEH_DEATHBIKE", 1000)
stats.set_int(MPX() .. "ARN_VEH_DEATHBIKE2", 1000)
stats.set_int(MPX() .. "ARN_VEH_DEATHBIKE3", 1000)
stats.set_bool(MPX() .. "AWD_BEGINNER", true)
stats.set_bool(MPX() .. "AWD_FIELD_FILLER", true)
stats.set_bool(MPX() .. "AWD_ARMCHAIR_RACER", true)
stats.set_bool(MPX() .. "AWD_LEARNER", true)
stats.set_bool(MPX() .. "AWD_SUNDAY_DRIVER", true)
stats.set_bool(MPX() .. "AWD_THE_ROOKIE", true)
stats.set_bool(MPX() .. "AWD_BUMP_AND_RUN", true)
stats.set_bool(MPX() .. "AWD_GEAR_HEAD", true)
stats.set_bool(MPX() .. "AWD_DOOR_SLAMMER", true)
stats.set_bool(MPX() .. "AWD_HOT_LAP", true)
stats.set_bool(MPX() .. "AWD_ARENA_AMATEUR", true)
stats.set_bool(MPX() .. "AWD_PAINT_TRADER", true)
stats.set_bool(MPX() .. "AWD_SHUNTER", true)
stats.set_bool(MPX() .. "AWD_JOCK", true)
stats.set_bool(MPX() .. "AWD_WARRIOR", true)
stats.set_bool(MPX() .. "AWD_T_BONE", true)
stats.set_bool(MPX() .. "AWD_MAYHEM", true)
stats.set_bool(MPX() .. "AWD_WRECKER", true)
stats.set_bool(MPX() .. "AWD_CRASH_COURSE", true)
stats.set_bool(MPX() .. "AWD_ARENA_LEGEND", true)
stats.set_bool(MPX() .. "AWD_PEGASUS", true)
stats.set_bool(MPX() .. "AWD_UNSTOPPABLE", true)
stats.set_bool(MPX() .. "AWD_CONTACT_SPORT", true)
stats.set_masked_int(MPX() .. "ARENAWARSPSTAT_INT", 1, 35, 8)
for i = 0, 8 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "ARENAWARSPSTAT_BOOL" .. i, true, j)
end
end
end)
DLCAUM:add_button("Diamond Casino n Resort", function()
stats.set_int(MPX() .. "AWD_ODD_JOBS", 50)
stats.set_int(MPX() .. "VCM_FLOW_PROGRESS", -1)
stats.set_int(MPX() .. "VCM_STORY_PROGRESS", 5)
stats.set_bool(MPX() .. "AWD_FIRST_TIME1", true)
stats.set_bool(MPX() .. "AWD_FIRST_TIME2", true)
stats.set_bool(MPX() .. "AWD_FIRST_TIME3", true)
stats.set_bool(MPX() .. "AWD_FIRST_TIME4", true)
stats.set_bool(MPX() .. "AWD_FIRST_TIME5", true)
stats.set_bool(MPX() .. "AWD_FIRST_TIME6", true)
stats.set_bool(MPX() .. "AWD_ALL_IN_ORDER", true)
stats.set_bool(MPX() .. "AWD_SUPPORTING_ROLE", true)
stats.set_bool(MPX() .. "AWD_LEADER", true)
stats.set_bool(MPX() .. "AWD_SURVIVALIST", true)
Paragon = stats.get_bool(MPX() .. "CAS_VEHICLE_REWARD")
if Paragon == true then
stats.set_bool(MPX() .. "CAS_VEHICLE_REWARD", true)
else
stats.set_bool(MPX() .. "CAS_VEHICLE_REWARD", false)
end
for i = 0, 6 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "CASINOPSTAT_BOOL" .. i, true, j)
end
end
end)
DLCAUM:add_button("Arcade", function()
stats.set_int(MPX() .. "AWD_PREPARATION", 50)
stats.set_int(MPX() .. "AWD_ASLEEPONJOB", 20)
stats.set_int(MPX() .. "AWD_DAICASHCRAB", 100000)
stats.set_int(MPX() .. "AWD_BIGBRO", 40)
stats.set_int(MPX() .. "AWD_SHARPSHOOTER", 40)
stats.set_int(MPX() .. "AWD_RACECHAMP", 40)
stats.set_int(MPX() .. "AWD_BATSWORD", 1000000)
stats.set_int(MPX() .. "AWD_COINPURSE", 950000)
stats.set_int(MPX() .. "AWD_ASTROCHIMP", 3000000)
stats.set_int(MPX() .. "AWD_MASTERFUL", 40000)
stats.set_int(MPX() .. "SCGW_NUM_WINS_GANG_0", 50)
stats.set_int(MPX() .. "SCGW_NUM_WINS_GANG_1", 50)
stats.set_int(MPX() .. "SCGW_NUM_WINS_GANG_2", 50)
stats.set_int(MPX() .. "SCGW_NUM_WINS_GANG_3", 50)
stats.set_int(MPX() .. "CH_ARC_CAB_CLAW_TROPHY", -1)
stats.set_int(MPX() .. "CH_ARC_CAB_LOVE_TROPHY", -1)
stats.set_int(MPX() .. "IAP_MAX_MOON_DIST", 2147483647)
stats.set_int(MPX() .. "SCGW_INITIALS_0", 69644)
stats.set_int(MPX() .. "SCGW_INITIALS_1", 50333)
stats.set_int(MPX() .. "SCGW_INITIALS_2", 63512)
stats.set_int(MPX() .. "SCGW_INITIALS_3", 46136)
stats.set_int(MPX() .. "SCGW_INITIALS_4", 21638)
stats.set_int(MPX() .. "SCGW_INITIALS_5", 2133)
stats.set_int(MPX() .. "SCGW_INITIALS_6", 1215)
stats.set_int(MPX() .. "SCGW_INITIALS_7", 2444)
stats.set_int(MPX() .. "SCGW_INITIALS_8", 38023)
stats.set_int(MPX() .. "SCGW_INITIALS_9", 2233)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_0", 0)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_1", 64)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_2", 8457)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_3", 91275)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_4", 53260)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_5", 78663)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_6", 25103)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_7", 102401)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_8", 12672)
stats.set_int(MPX() .. "FOOTAGE_INITIALS_9", 74380)
stats.set_int(MPX() .. "FOOTAGE_SCORE_0", 284544)
stats.set_int(MPX() .. "FOOTAGE_SCORE_1", 275758)
stats.set_int(MPX() .. "FOOTAGE_SCORE_2", 100000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_3", 90000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_4", 80000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_5", 70000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_6", 60000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_7", 50000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_8", 40000)
stats.set_int(MPX() .. "FOOTAGE_SCORE_9", 30000)
for i = 0, 9 do
stats.set_int(MPX() .. "IAP_INITIALS_" .. i, 50)
stats.set_int(MPX() .. "IAP_SCORE_" .. i, 50)
stats.set_int(MPX() .. "IAP_SCORE_" .. i, 50)
stats.set_int(MPX() .. "SCGW_SCORE_" .. i, 50)
stats.set_int(MPX() .. "DG_DEFENDER_INITIALS_" .. i, 69644)
stats.set_int(MPX() .. "DG_DEFENDER_SCORE_" .. i, 50)
stats.set_int(MPX() .. "DG_MONKEY_INITIALS_" .. i, 69644)
stats.set_int(MPX() .. "DG_MONKEY_SCORE_" .. i, 50)
stats.set_int(MPX() .. "DG_PENETRATOR_INITIALS_" .. i, 69644)
stats.set_int(MPX() .. "DG_PENETRATOR_SCORE_" .. i, 50)
stats.set_int(MPX() .. "GGSM_INITIALS_" .. i, 69644)
stats.set_int(MPX() .. "GGSM_SCORE_" .. i, 50)
stats.set_int(MPX() .. "TWR_INITIALS_" .. i, 69644)
stats.set_int(MPX() .. "TWR_SCORE_" .. i, 50)
end
stats.set_bool(MPX() .. "AWD_SCOPEOUT", true)
stats.set_bool(MPX() .. "AWD_CREWEDUP", true)
stats.set_bool(MPX() .. "AWD_MOVINGON", true)
stats.set_bool(MPX() .. "AWD_PROMOCAMP", true)
stats.set_bool(MPX() .. "AWD_GUNMAN", true)
stats.set_bool(MPX() .. "AWD_SMASHNGRAB", true)
stats.set_bool(MPX() .. "AWD_INPLAINSI", true)
stats.set_bool(MPX() .. "AWD_UNDETECTED", true)
stats.set_bool(MPX() .. "AWD_ALLROUND", true)
stats.set_bool(MPX() .. "AWD_ELITETHEIF", true)
stats.set_bool(MPX() .. "AWD_PRO", true)
stats.set_bool(MPX() .. "AWD_SUPPORTACT", true)
stats.set_bool(MPX() .. "AWD_SHAFTED", true)
stats.set_bool(MPX() .. "AWD_COLLECTOR", true)
stats.set_bool(MPX() .. "AWD_DEADEYE", true)
stats.set_bool(MPX() .. "AWD_PISTOLSATDAWN", true)
stats.set_bool(MPX() .. "AWD_TRAFFICAVOI", true)
stats.set_bool(MPX() .. "AWD_CANTCATCHBRA", true)
stats.set_bool(MPX() .. "AWD_WIZHARD", true)
stats.set_bool(MPX() .. "AWD_APEESCAP", true)
stats.set_bool(MPX() .. "AWD_MONKEYKIND", true)
stats.set_bool(MPX() .. "AWD_AQUAAPE", true)
stats.set_bool(MPX() .. "AWD_KEEPFAITH", true)
stats.set_bool(MPX() .. "AWD_TRUELOVE", true)
stats.set_bool(MPX() .. "AWD_NEMESIS", true)
stats.set_bool(MPX() .. "AWD_FRIENDZONED", true)
stats.set_bool(MPX() .. "IAP_CHALLENGE_0", true)
stats.set_bool(MPX() .. "IAP_CHALLENGE_1", true)
stats.set_bool(MPX() .. "IAP_CHALLENGE_2", true)
stats.set_bool(MPX() .. "IAP_CHALLENGE_3", true)
stats.set_bool(MPX() .. "IAP_CHALLENGE_4", true)
stats.set_bool(MPX() .. "IAP_GOLD_TANK", true)
stats.set_bool(MPX() .. "SCGW_WON_NO_DEATHS", true)
for i = 0, 4 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "CASINOHSTPSTAT_BOOL" .. i, true, j)
end
end
for i = 0, 6 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "CASINOPSTAT_BOOL" .. i, true, j)
end
end
end)
DLCAUM:add_button("LS Summer Special", function()
stats.set_bool(MPX() .. "AWD_KINGOFQUB3D", true)
stats.set_bool(MPX() .. "AWD_QUBISM", true)
stats.set_bool(MPX() .. "AWD_QUIBITS", true)
stats.set_bool(MPX() .. "AWD_GODOFQUB3D", true)
stats.set_bool(MPX() .. "AWD_ELEVENELEVEN", true)
stats.set_bool(MPX() .. "AWD_GOFOR11TH", true)
stats.set_masked_int(MPX() .. "SU20PSTAT_INT", 1, 35, 8)
for i = 0, 1 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "SU20PSTAT_BOOL" .. i, true, j)
stats.set_bool_masked(MPX() .. "SU20TATTOOSTAT_BOOL" .. i, true, j)
end
end
end)
DLCAUM:add_button("LS Tuners", function()
stats.set_int(MPX() .. "AWD_CAR_CLUB_MEM", 100)
stats.set_int(MPX() .. "AWD_SPRINTRACER", 50)
stats.set_int(MPX() .. "AWD_STREETRACER", 50)
stats.set_int(MPX() .. "AWD_PURSUITRACER", 50)
stats.set_int(MPX() .. "AWD_TEST_CAR", 240)
stats.set_int(MPX() .. "AWD_AUTO_SHOP", 50)
stats.set_int(MPX() .. "AWD_GROUNDWORK", 40)
stats.set_int(MPX() .. "AWD_CAR_EXPORT", 100)
stats.set_int(MPX() .. "AWD_ROBBERY_CONTRACT", 100)
stats.set_int(MPX() .. "AWD_FACES_OF_DEATH", 100)
stats.set_bool(MPX() .. "AWD_CAR_CLUB", true)
stats.set_bool(MPX() .. "AWD_PRO_CAR_EXPORT", true)
stats.set_bool(MPX() .. "AWD_UNION_DEPOSITORY", true)
stats.set_bool(MPX() .. "AWD_MILITARY_CONVOY", true)
stats.set_bool(MPX() .. "AWD_FLEECA_BANK", true)
stats.set_bool(MPX() .. "AWD_FREIGHT_TRAIN", true)
stats.set_bool(MPX() .. "AWD_BOLINGBROKE_ASS", true)
stats.set_bool(MPX() .. "AWD_IAA_RAID", true)
stats.set_bool(MPX() .. "AWD_METH_JOB", true)
stats.set_bool(MPX() .. "AWD_BUNKER_RAID", true)
stats.set_bool(MPX() .. "AWD_STRAIGHT_TO_VIDEO", true)
stats.set_bool(MPX() .. "AWD_MONKEY_C_MONKEY_DO", true)
stats.set_bool(MPX() .. "AWD_TRAINED_TO_KILL", true)
stats.set_bool(MPX() .. "AWD_DIRECTOR", true)
for i = 0, 8 do
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "TUNERPSTAT_BOOL" .. i, true, j)
end
end
end)
DLCAUM:add_button("Contract", function()
stats.set_int(MPX() .. "AWD_CONTRACTOR", 50)
stats.set_int(MPX() .. "AWD_COLD_CALLER", 50)
stats.set_int(MPX() .. "AWD_PRODUCER", 60)
stats.set_int(MPX() .. "FIXERTELEPHONEHITSCOMPL", 10)
stats.set_int(MPX() .. "PAYPHONE_BONUS_KILL_METHOD", 10)
stats.set_int(MPX() .. "PAYPHONE_BONUS_KILL_METHOD", -1)
stats.set_int(MPX() .. "FIXER_GENERAL_BS", -1)
stats.set_int(MPX() .. "FIXER_COMPLETED_BS", -1)
stats.set_int(MPX() .. "FIXER_STORY_BS", -1)
stats.set_int(MPX() .. "FIXER_STORY_STRAND", -1)
stats.set_int(MPX() .. "FIXER_STORY_COOLDOWN", -1)
stats.set_int(MPX() .. "FIXER_COUNT", 510)
stats.set_int(MPX() .. "FIXER_SC_VEH_RECOVERED", 85)
stats.set_int(MPX() .. "FIXER_SC_VAL_RECOVERED", 85)
stats.set_int(MPX() .. "FIXER_SC_GANG_TERMINATED", 85)
stats.set_int(MPX() .. "FIXER_SC_VIP_RESCUED", 85)
stats.set_int(MPX() .. "FIXER_SC_ASSETS_PROTECTED", 85)
stats.set_int(MPX() .. "FIXER_SC_EQ_DESTROYED", 85)
stats.set_int(MPX() .. "FIXER_EARNINGS", 19734860)
stats.set_bool(MPX() .. "AWD_TEEING_OFF", true)
stats.set_bool(MPX() .. "AWD_PARTY_NIGHT", true)
stats.set_bool(MPX() .. "AWD_BILLIONAIRE_GAMES", true)
stats.set_bool(MPX() .. "AWD_HOOD_PASS", true)
stats.set_bool(MPX() .. "AWD_STUDIO_TOUR", true)
stats.set_bool(MPX() .. "AWD_DONT_MESS_DRE", true)
stats.set_bool(MPX() .. "AWD_BACKUP", true)
stats.set_bool(MPX() .. "AWD_SHORTFRANK_1", true)
stats.set_bool(MPX() .. "AWD_SHORTFRANK_2", true)
stats.set_bool(MPX() .. "AWD_SHORTFRANK_3", true)
stats.set_bool(MPX() .. "AWD_CONTR_KILLER", true)
stats.set_bool(MPX() .. "AWD_DOGS_BEST_FRIEND", true)
stats.set_bool(MPX() .. "AWD_MUSIC_STUDIO", true)
stats.set_bool(MPX() .. "AWD_SHORTLAMAR_1", true)
stats.set_bool(MPX() .. "AWD_SHORTLAMAR_2", true)
stats.set_bool(MPX() .. "AWD_SHORTLAMAR_3", true)
stats.set_bool(MPX() .. "BS_FRANKLIN_DIALOGUE_0", true)
stats.set_bool(MPX() .. "BS_FRANKLIN_DIALOGUE_1", true)
stats.set_bool(MPX() .. "BS_FRANKLIN_DIALOGUE_2", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_SETUP", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_STRAND", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_PARTY", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_PARTY_2", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_PARTY_F", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_BILL", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_BILL_2", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_BILL_F", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_HOOD", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_HOOD_2", true)
stats.set_bool(MPX() .. "BS_IMANI_D_APP_HOOD_F", true)
for j = 0, 63 do
stats.set_bool_masked(MPX() .. "FIXERPSTAT_BOOL0", true, j)
stats.set_bool_masked(MPX() .. "FIXERPSTAT_BOOL1", true, j)
stats.set_bool_masked(MPX() .. "FIXERTATTOOSTAT_BOOL0", true, j)
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FAUT = RecoveryMenu:add_tab("Full Account Unlock Menu")
FAUT:add_imgui(function()
if isOffline() then
return
end
if ImGui.Button("Unlock WM 29 Pistol") then
script.run_in_fiber(function(WM29)
script.execute_as_script("shop_controller", function()
if NETSHOPPING.NET_GAMESERVER_BASKET_IS_ACTIVE() then
NETSHOPPING.NET_GAMESERVER_BASKET_END()
end
local state, id = NETSHOPPING.NET_GAMESERVER_BEGIN_SERVICE(
-1,
joaat("CATEGORY_WEAPON"),
joaat("WP_WT_PISTOLXM3_t0_v0"),
joaat("NET_SHOP_ACTION_SPEND"),
0,
4
)
if state then
NETSHOPPING.NET_GAMESERVER_CHECKOUT_START(id)
gui.show_message("WM29", "WM29 is now Unlocked Change Session To Apply Changes.")
end
end)
end)
end
if ImGui.Button("Unlock The Shocker") then
script.run_in_fiber(function(THESHOCKER)
script.execute_as_script("shop_controller", function()
if NETSHOPPING.NET_GAMESERVER_BASKET_IS_ACTIVE() then
NETSHOPPING.NET_GAMESERVER_BASKET_END()
end
local state, id = NETSHOPPING.NET_GAMESERVER_BEGIN_SERVICE(
-1,
joaat("CATEGORY_WEAPON"),
joaat("WP_WT_STUNROD_t1_v1"),
joaat("NET_SHOP_ACTION_SPEND"),
0,
4
)
if state then
NETSHOPPING.NET_GAMESERVER_CHECKOUT_START(id)
gui.show_message("The Shocker", "The Shocker is now Unlocked Change Session To Apply Changes.")
end
end)
end)
end
if ImGui.Button("Unlock The Snowball Launcher") then
script.run_in_fiber(function(SNOWBALLLAUNCHER)
script.execute_as_script("shop_controller", function()
if NETSHOPPING.NET_GAMESERVER_BASKET_IS_ACTIVE() then
NETSHOPPING.NET_GAMESERVER_BASKET_END()
end
local state, id = NETSHOPPING.NET_GAMESERVER_BEGIN_SERVICE(
-1,
joaat("CATEGORY_WEAPON"),
joaat("WP_WT_SNOWLAUNCHER_t0_v0"),
joaat("NET_SHOP_ACTION_SPEND"),
0,
4
)
if state then
NETSHOPPING.NET_GAMESERVER_CHECKOUT_START(id)
gui.show_message(
"Snowball Launcher",
"Snowball Launcher is now Unlocked Change Session To Apply Changes."
)
end
end)
end)
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CSU = FAUT:add_tab("Character's Stats")
CSU:add_imgui(function()
if isOffline() then
return
end
if ImGui.Button("Max Character Skills") then
stats.set_int(MPX() .. "SCRIPT_INCREASE_DRIV", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_FLY", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_LUNG", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_SHO", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STAM", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STL", 100)
stats.set_int(MPX() .. "SCRIPT_INCREASE_STRN", 100)
gui.show_message("Character Skills", "Your Character Skills Is Maxxed Out.")
end
end)
AcMenu = CSU:add_tab("Achievements")
Acv0 = false
AcMenu:add_imgui(function()
if isOffline() then
return
end
if ImGui.Button("Unlock All Achievements") then
script.run_in_fiber(function(script)
for i = 0, 77 do
script:sleep(200)
globals.set_int(AG, i)
if i == 77 then
gui.show_message("Achievements", "Unlocked 77 Achievements")
end
end
end)
end
end)
AcMMenu = AcMenu:add_tab("One By One Menu")
AcMMenu:add_button("Welcome to Los Santos", function()
globals.set_int(AG, 1)
end)
AcMMenu:add_button("A Friendship Resurrected", function()
globals.set_int(AG, 2)
end)
AcMMenu:add_button("A Fair Day's Pay", function()
globals.set_int(AG, 3)
end)
AcMMenu:add_button("The Moment of Truth", function()
globals.set_int(AG, 4)
end)
AcMMenu:add_button("To Live or Die in Los Santos", function()
globals.set_int(AG, 5)
end)
AcMMenu:add_button("Diamond Hard", function()
globals.set_int(AG, 6)
end)
AcMMenu:add_button("Subversive", function()
globals.set_int(AG, 7)
end)
AcMMenu:add_button("Blitzed", function()
globals.set_int(AG, 8)
end)
AcMMenu:add_button("Small Town, Big Job", function()
globals.set_int(AG, 9)
end)
AcMMenu:add_button("The Government Gimps", function()
globals.set_int(AG, 10)
end)
AcMMenu:add_button("The Big One!", function()
globals.set_int(AG, 11)
end)
AcMMenu:add_button("Solid Gold, Baby!", function()
globals.set_int(AG, 12)
end)
AcMMenu:add_button("Career Criminal", function()
globals.set_int(AG, 13)
end)
AcMMenu:add_button("San Andreas Sightseer", function()
globals.set_int(AG, 14)
end)
AcMMenu:add_button("All's Fare in Love and War", function()
globals.set_int(AG, 15)
end)
AcMMenu:add_button("TP Industries Arms Race", function()
globals.set_int(AG, 16)
end)
AcMMenu:add_button("Multi-Disciplined", function()
globals.set_int(AG, 17)
end)
AcMMenu:add_button("From Beyond the Stars", function()
globals.set_int(AG, 18)
end)
AcMMenu:add_button("A Mystery, Solved", function()
globals.set_int(AG, 19)
end)
AcMMenu:add_button("Waste Management", function()
globals.set_int(AG, 20)
end)
AcMMenu:add_button("Red Mist", function()
globals.set_int(AG, 21)
end)
AcMMenu:add_button("Show Off", function()
globals.set_int(AG, 22)
end)
AcMMenu:add_button("Kifflom!", function()
globals.set_int(AG, 23)
end)
AcMMenu:add_button("Three Man Army", function()
globals.set_int(AG, 24)
end)
AcMMenu:add_button("Out of Your Depth", function()
globals.set_int(AG, 25)
end)
AcMMenu:add_button("Altruist Acolyte", function()
globals.set_int(AG, 26)
end)
AcMMenu:add_button("A Lot of Cheddar", function()
globals.set_int(AG, 27)
end)
AcMMenu:add_button("Trading Pure Alpha", function()
globals.set_int(AG, 28)
end)
AcMMenu:add_button("Pimp My Sidearm", function()
globals.set_int(AG, 29)
end)
AcMMenu:add_button("Wanted:Alive Or Alive", function()
globals.set_int(AG, 30)
end)
AcMMenu:add_button("Los Santos Customs", function()
globals.set_int(AG, 31)
end)
AcMMenu:add_button("Close Shave", function()
globals.set_int(AG, 32)
end)
AcMMenu:add_button("Off the Plane", function()
globals.set_int(AG, 33)
end)
AcMMenu:add_button("Three-Bit Gangster", function()
globals.set_int(AG, 34)
end)
AcMMenu:add_button("Making Moves", function()
globals.set_int(AG, 35)
end)
AcMMenu:add_button("Above the Law", function()
globals.set_int(AG, 36)
end)
AcMMenu:add_button("Numero Uno", function()
globals.set_int(AG, 37)
end)
AcMMenu:add_button("The Midnight Club", function()
globals.set_int(AG, 38)
end)
AcMMenu:add_button("Unnatural Selection", function()
globals.set_int(AG, 39)
end)
AcMMenu:add_button("Backseat Driver", function()
globals.set_int(AG, 40)
end)
AcMMenu:add_button("Run Like The Wind", function()
globals.set_int(AG, 41)
end)
AcMMenu:add_button("Clean Sweep", function()
globals.set_int(AG, 42)
end)
AcMMenu:add_button("Decorated", function()
globals.set_int(AG, 43)
end)
AcMMenu:add_button("Stick Up Kid", function()
globals.set_int(AG, 44)
end)
AcMMenu:add_button("Enjoy Your Stay", function()
globals.set_int(AG, 45)
end)
AcMMenu:add_button("Crew Cut", function()
globals.set_int(AG, 46)
end)
AcMMenu:add_button("Full Refund", function()
globals.set_int(AG, 47)
end)
AcMMenu:add_button("Dialling Digits", function()
globals.set_int(AG, 48)
end)
AcMMenu:add_button("American Dream", function()
globals.set_int(AG, 49)
end)
AcMMenu:add_button("A New Perspective", function()
globals.set_int(AG, 50)
end)
AcMMenu:add_button("Be Prepared", function()
globals.set_int(AG, 51)
end)
AcMMenu:add_button("In the Name of Science", function()
globals.set_int(AG, 52)
end)
AcMMenu:add_button("Dead Presidents", function()
globals.set_int(AG, 53)
end)
AcMMenu:add_button("Parole Day", function()
globals.set_int(AG, 54)
end)
AcMMenu:add_button("Shot Caller", function()
globals.set_int(AG, 55)
end)
AcMMenu:add_button("Four Way", function()
globals.set_int(AG, 56)
end)
AcMMenu:add_button("Live a Little", function()
globals.set_int(AG, 57)
end)
AcMMenu:add_button("Can't Touch This", function()
globals.set_int(AG, 58)
end)
AcMMenu:add_button("Mastermind", function()
globals.set_int(AG, 59)
end)
AcMMenu:add_button("Vinewood Visionary", function()
globals.set_int(AG, 60)
end)
AcMMenu:add_button("Majestic", function()
globals.set_int(AG, 61)
end)
AcMMenu:add_button("Humans of Los Santos", function()
globals.set_int(AG, 62)
end)
AcMMenu:add_button("First Time Director", function()
globals.set_int(AG, 63)
end)
AcMMenu:add_button("Animal Lover", function()
globals.set_int(AG, 64)
end)
AcMMenu:add_button("Ensemble Piece", function()
globals.set_int(AG, 65)
end)
AcMMenu:add_button("Cult Movie", function()
globals.set_int(AG, 66)
end)
AcMMenu:add_button("Location Scout", function()
globals.set_int(AG, 67)
end)
AcMMenu:add_button("Method Actor", function()
globals.set_int(AG, 68)
end)
AcMMenu:add_button("Cryptozoologist", function()
globals.set_int(AG, 69)
end)
AcMMenu:add_button("Getting Started", function()
globals.set_int(AG, 70)
end)
AcMMenu:add_button("The Data Breaches", function()
globals.set_int(AG, 71)
end)
AcMMenu:add_button("The Bogdan Problem", function()
globals.set_int(AG, 72)
end)
AcMMenu:add_button("The Doomsday Scenario", function()
globals.set_int(AG, 73)
end)
AcMMenu:add_button("A World Worth Saving", function()
globals.set_int(AG, 74)
end)
AcMMenu:add_button("Orbital Obliteration", function()
globals.set_int(AG, 75)
end)
AcMMenu:add_button("Elitist", function()
globals.set_int(AG, 76)
end)
AcMMenu:add_button("Masterminds", function()
globals.set_int(AG, 77)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local current_objectives_global = 2359296 --("am_challenges")
local weekly_objectives_global = 2732111 --("am_challenges")
local objectives_state_global = 1574746 --("am_challenges")
FAUT:add_imgui(function()
if isOffline() then
return
end
if ImGui.Button("Complete All Daily & Weekly Challenges") then
script.run_in_fiber(function(script)
for i = 0, 2 do --Unlock all daily rewards.
local objective =
globals.get_int(current_objectives_global + (1 + (0 * 5574)) + 681 + 4248 + (1 + (i * 3)))
globals.set_int(objectives_state_global + 1 + (1 + (i * 1)), objective)
end
globals.set_int(objectives_state_global, 1)
globals.set_int(
weekly_objectives_global + (1 + (0 * 6)) + 1,
globals.get_int(weekly_objectives_global + (1 + (0 * 6)) + 2)
) --Unlock Weekly Objective
gui.show_message("Challenges", "All Daily And Weekly Challenges Are Now Completed.")
end)
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
LSCMUnlockeRecoveryMenu = RecoveryMenu:add_tab("LSCM Unlocker Menu")
LSCMUnlockeRecoveryMenu:add_button("Unlock All Rep Lvl 1000", function()
for i = FMg + 31047, FMg + 31076 do
globals.set_float(i, 100000)
end
gui.show_message(
"LSCM",
"LVL 1000 Activated Just Sit In The Test Drive Vehicle And Enter LSCM Track To See The Changes."
)
end)
LSCMUnlockeRecoveryMenu:add_button("LSCM Prize Ride Unlock", function()
stats.set_bool(MPX() .. "CARMEET_PV_CHLLGE_CMPLT", true)
stats.set_bool(MPX() .. "CARMEET_PV_CLMED", false)
gui.show_message("LSCM", "Your Prize Car Is Now Unlocked.")
end)
LSCMUnlockeRecoveryMenu:add_button("Unlock Trade Prices for Headlights", function()
stats_set_packed_bools(24980, 24991, true)
gui.show_message("LSCM", "Trade Prices For Headlights Are Now Unlocked.")
end)
LSCMNote = LSCMUnlockeRecoveryMenu:add_tab("Read Me Tutorial")
LSCMNote:add_text("Buy a membership, activate, sit in")
LSCMNote:add_text("a test car and go to the track")
LSCMNote:add_text("If your level is not 1, then activate")
LSCMNote:add_text("and buy something in the LSCM store")
LSCMNote:add_text("If you've used LS Tuner awards unlock")
LSCMNote:add_text("before, all unlocks will be temporary only")
LSCMNote:add_text("--- Manual Online Override ---")
LSCMNote:add_text("To manually set/bypass the online state,")
LSCMNote:add_text("toggle 'Bypass Online Check' in the main tab.")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
L7NEG7 = makeOnlineTab(L7NEG:add_tab("Ultimate Money Methods Menu"))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BusinessesMenu = L7NEG7:add_tab("Businesses Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AirCargoMenu = BusinessesMenu:add_tab("Air Cargo Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local hanvalue = AirCargoMenu:add_input_int("Crate Value")
AirCargoMenu:add_button("Set Value", function()
local HangarCrateVlaue = hanvalue:get_value()
if HangarCrateVlaue < 0 or HangarCrateVlaue > 6000000 then
gui.show_error("Crate Value Setter", "Value must be 0-6000000.")
return
end
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_MIXED", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_ANIMAL_MATERIALS", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_ART_AND_ANTIQUES", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_CHEMICALS", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_COUNTERFEIT_GOODS", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_JEWELRY_AND_GEMSTONES", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_MEDICAL_SUPPLIES", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_NARCOTICS", HangarCrateVlaue)
tunables.set_int("SMUG_SELL_PRICE_PER_CRATE_TOBACCO_AND_ALCOHOL", HangarCrateVlaue)
gui.show_message("Crate Value Setter", "Your Crates Values was set to " .. HangarCrateVlaue .. ".")
end)
AirCargoMenu:add_separator()
RCRT = AirCargoMenu:add_checkbox("Remove Ron's Cut")
script.register_looped("RonCutRemover", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
local want = RCRT:is_enabled() and 0 or 0.025
if want ~= _ronPrev then
tunables.set_float("SMUG_SELL_RONS_CUT", want)
_ronPrev = want
end
script:sleep(500)
end)
AirCargoMenu:add_separator()
PRPGD = AirCargoMenu:add_checkbox("Disable Player RP Gain")
script.register_looped("PlayerRPGainDisabler", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
local want = PRPGD:is_enabled() and 0 or 1
if want ~= _prpgdPrev then
tunables.set_float("XP_MULTIPLIER", want)
_prpgdPrev = want
end
script:sleep(500)
end)
AirCargoMenu:add_separator()
AirCargoMenu:add_button("Open Hangar Screen", function()
SCRIPT.REQUEST_SCRIPT("apparcadebusinesshub")
SYSTEM.START_NEW_SCRIPT("apparcadebusinesshub", 8344)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AirCargoEditorMenu = AirCargoMenu:add_tab("Air Cargo Data Editor")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AirCargoEditorMenu:add_button("Reset Crate Sell Stats-0/0 Sales", function()
stats.set_int(MPX() .. "LFETIME_HANGAR_BUY_COMPLET", 0)
stats.set_int(MPX() .. "LFETIME_HANGAR_BUY_UNDERTAK", 0)
stats.set_int(MPX() .. "LFETIME_HANGAR_SEL_COMPLET", 0)
stats.set_int(MPX() .. "LFETIME_HANGAR_SEL_UNDERTAK", 0)
stats.set_int(MPX() .. "LFETIME_HANGAR_EARNINGS", 0)
stats.set_int(MPX() .. "HANGAR_CONTRABAND_TOTAL", 0)
stats.set_int(MPX() .. "LFETIME_HANGAR_EARN_BONUS", 0)
stats.set_int(MPX() .. "RIVAL_HANGAR_CRATES_STOLEN", 0)
globals.set_int(CSg1, 11)
globals.set_int(CSg2, 1)
globals.set_int(CSg2, 0)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
UseAtYourOwnRiskMenu = L7NEG7:add_tab("Use At Your Own Risk Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CeoManagerMenu = UseAtYourOwnRiskMenu:add_tab("Ceo Manager Menu")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local cs = "appsecuroserv"
local ci = "gb_contraband_sell"
local cb = "gb_contraband_buy"
local am = "am_mp_warehouse"
local am2 = "am_mp_peds"
cratevalue = 0
CeoManagerMenu:add_imgui(function()
if isOffline() then
return
end
cratevalue, used = ImGui.DragInt("Crate Value", cratevalue, 10000, 0, 6000000)
if used then
tunables.set_int("EXEC_CONTRABAND_SALE_VALUE_THRESHOLD1", cratevalue)
end
end)
checkbox = CeoManagerMenu:add_checkbox("Start Ceo Manager")
PRPGD2 = CeoManagerMenu:add_checkbox("Disable Player RP Gain")
script.register_looped("PlayerRPGainDisabler2", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
local want = PRPGD2:is_enabled() and 0 or 1
if want ~= _prpgd2Prev then
tunables.set_float("XP_MULTIPLIER", want)
_prpgd2Prev = want
end
script:sleep(500)
end)
CeoManagerMenu:add_button("Open Warehouse Screen", function()
SCRIPT.REQUEST_SCRIPT("apparcadebusinesshub")
SYSTEM.START_NEW_SCRIPT("apparcadebusinesshub", 8344)
end)
script.register_looped("yimceoloop", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
return
end
-- removed useless call
tunables.set_int("EXEC_BUY_COOLDOWN", 0)
tunables.set_int("EXEC_SELL_COOLDOWN", 0)
if checkbox:is_enabled() == true then
if locals.get_int(ci, 2) == 1 then
locals.set_int(ci, SMC5, 1)
locals.set_int(ci, SMC4, 0)
locals.set_int(ci, SMC3, 0)
locals.set_int(ci, SMC2, 7)
script:sleep(500)
locals.set_int(ci, SMC1, 99999)
end
if locals.get_int(cs, 2) == 1 then
script:sleep(500)
locals.set_int(cs, SMC8, 1)
script:sleep(200)
locals.set_int(cs, SMC7, 1)
script:sleep(200)
locals.set_int(cs, SMC6, 3012)
script:sleep(1000)
end
if locals.get_int(cb, 2) == 1 then
locals.set_int(cb, SMC9, 1)
locals.set_int(cb, SMC10, 111)
locals.set_int(cb, SMC11, 6)
locals.set_int(cb, SMC12, 4)
gui.show_message("Your Warehouse is now full! 111/111 Crates")
end
if locals.get_int(ci, 2) ~= 1 then
script:sleep(500)
if locals.get_int(am, 2) == 1 then
SCRIPT.REQUEST_SCRIPT("appsecuroserv")
SYSTEM.START_NEW_SCRIPT("appsecuroserv", 8344)
SCRIPT.SET_SCRIPT_AS_NO_LONGER_NEEDED("appsecuroserv")
end
end
end
script:sleep(500)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NightClubSafeMenu = UseAtYourOwnRiskMenu:add_tab("NightClub Safe Loop Menu")
SafeAmount = 300000
NCRSCB = NightClubSafeMenu:add_checkbox("Enable Nitghtclub $300k/5s (Safe Remote AFK)")
script.register_looped("nightclubremotelooptest", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
if NCRSCB:is_enabled() == true then
SafeValue = 1845298 + self.get_id() + 260 + 364 + 5 --("am_mp_nightclub") or we can just use TUNEABLE: NIGHTCLUBMAXSAFEVALUE
for i = IncomeStart, IncomeEnd do
globals.set_int(FMg + i, SafeAmount)
end
globals.set_int(FMg + SafeCapacity, SafeAmount)
stats.set_int(MPX() .. "CLUB_PAY_TIME_LEFT", -1)
script:sleep(2500)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("am_mp_nightclub")) > 0 then
locals.set_int("am_mp_nightclub", NLCl, 1)
end
globals.set_int(4516981, 0)
globals.set_int(4516982, 0)
globals.set_int(4516983, 0)
script:sleep(2500)
else
script:sleep(500)
end
end)
NightClubSafeMenu:add_separator()
NightClubSafeMenu:add_button("Open Nightclub Screen", function()
SYSTEM.START_NEW_SCRIPT("appBusinessHub", 1424)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local GVMENU = makeOnlineTab(L7NEG:add_tab("Gun Van Menu"))
local gunvan_locations = {
vec3:new(-29.532, 6435.136, 31.162),
vec3:new(1705.214, 4819.167, 41.75),
vec3:new(1795.522, 3899.753, 33.869),
vec3:new(1335.536, 2758.746, 51.099),
vec3:new(795.583, 1210.78, 338.962),
vec3:new(-3192.67, 1077.205, 20.594),
vec3:new(-789.719, 5400.921, 33.915),
vec3:new(-24.384, 3048.167, 40.703),
vec3:new(2666.786, 1469.324, 24.237),
vec3:new(-1454.966, 2667.503, 3.2),
vec3:new(2340.418, 3054.188, 47.888),
vec3:new(1509.183, -2146.795, 76.853),
vec3:new(1137.404, -1358.654, 34.322),
vec3:new(-57.208, -2658.793, 5.737),
vec3:new(1905.017, 565.222, 175.558),
vec3:new(974.484, -1718.798, 30.296),
vec3:new(779.077, -3266.297, 5.719),
vec3:new(-587.728, -1637.208, 19.611),
vec3:new(733.99, -736.803, 26.165),
vec3:new(-1694.632, -454.082, 40.712),
vec3:new(-1330.726, -1163.948, 4.313),
vec3:new(-496.618, 40.231, 52.316),
vec3:new(275.527, 66.509, 94.108),
vec3:new(260.928, -763.35, 30.559),
vec3:new(-478.025, -741.45, 30.299),
vec3:new(894.94, 3603.911, 32.56),
vec3:new(-2166.511, 4289.503, 48.733),
vec3:new(1465.633, 6553.67, 13.771),
vec3:new(1101.032, -335.172, 66.944),
vec3:new(149.683, -1655.674, 29.028),
}
local van_locations = {
"Paleto Bay - 1",
"Grapeseed - 2",
"Sandy Shores - 3",
"Grand Senora - 4",
"Vinewood Hills - 5",
"Chumash - 6",
"Paleto Forest - 7",
"Zancudo River - 8",
"Power Station - 9",
"Lago Zancudo - 10",
"Grand Senora - 11",
"El Burro Heights - 12",
"Murrieta Heights - 13",
"Elysian Island - 14",
"Tataviam - 15",
"La Mesa - 16",
"Terminal - 17",
"La Puerta - 18",
"La Mesa - 19",
"Del Perro - 20",
"Magellan Ave - 21",
"West Vinewood - 22",
"Downtown Vinewood - 23",
"Pillbox Hill - 24",
"Little Seoul - 25",
"Alamo Sea - 26",
"North Chumash - 27",
"Mount Chiliad - 28",
"Mirror Park - 29",
"Davis - 30",
}
local weapons_data = {
"WEAPON_KNIFE",
"WEAPON_NIGHTSTICK",
"WEAPON_HAMMER",
"WEAPON_BOTTLE",
"WEAPON_DAGGER",
"WEAPON_KNUCKLE",
"WEAPON_MACHETE",
"WEAPON_FLASHLIGHT",
"WEAPON_SWITCHBLADE",
"WEAPON_BATTLEAXE",
"WEAPON_POOLCUE",
"WEAPON_WRENCH",
"WEAPON_HATCHET",
"WEAPON_BAT",
"WEAPON_CROWBAR",
"WEAPON_STUNROD",
"WEAPON_PISTOL",
"WEAPON_PISTOL_MK2",
"WEAPON_COMBATPISTOL",
"WEAPON_APPISTOL",
"WEAPON_PISTOL50",
"WEAPON_SNSPISTOL",
"WEAPON_SNSPISTOL_MK2",
"WEAPON_HEAVYPISTOL",
"WEAPON_VINTAGEPISTOL",
"WEAPON_FLAREGUN",
"WEAPON_MARKSMANPISTOL",
"WEAPON_REVOLVER",
"WEAPON_REVOLVER_MK2",
"WEAPON_DOUBLEACTION",
"WEAPON_RAYPISTOL",
"WEAPON_CERAMICPISTOL",
"WEAPON_NAVYREVOLVER",
"WEAPON_GADGETPISTOL",
"WEAPON_STUNGUN_MP",
"WEAPON_MICROSMG",
"WEAPON_SMG",
"WEAPON_SMG_MK2",
"WEAPON_ASSAULTSMG",
"WEAPON_COMBATPDW",
"WEAPON_MACHINEPISTOL",
"WEAPON_MINISMG",
"WEAPON_MG",
"WEAPON_COMBATMG",
"WEAPON_COMBATMG_MK2",
"WEAPON_GUSENBERG",
"WEAPON_RAYCARBINE",
"WEAPON_ASSAULTRIFLE",
"WEAPON_ASSAULTRIFLE_MK2",
"WEAPON_CARBINERIFLE",
"WEAPON_CARBINERIFLE_MK2",
"WEAPON_ADVANCEDRIFLE",
"WEAPON_SPECIALCARBINE",
"WEAPON_SPECIALCARBINE_MK2",
"WEAPON_BULLPUPRIFLE",
"WEAPON_BULLPUPRIFLE_MK2",
"WEAPON_COMPACTRIFLE",
"WEAPON_MILITARYRIFLE",
"WEAPON_HEAVYRIFLE",
"WEAPON_TACTICALRIFLE",
"WEAPON_PUMPSHOTGUN",
"WEAPON_PUMPSHOTGUN_MK2",
"WEAPON_SAWNOFFSHOTGUN",
"WEAPON_ASSAULTSHOTGUN",
"WEAPON_BULLPUPSHOTGUN",
"WEAPON_MUSKET",
"WEAPON_HEAVYSHOTGUN",
"WEAPON_DBSHOTGUN",
"WEAPON_AUTOSHOTGUN",
"WEAPON_COMBATSHOTGUN",
"WEAPON_SNIPERRIFLE",
"WEAPON_HEAVYSNIPER",
"WEAPON_HEAVYSNIPER_MK2",
"WEAPON_MARKSMANRIFLE",
"WEAPON_MARKSMANRIFLE_MK2",
"WEAPON_PRECISIONRIFLE",
"WEAPON_GRENADELAUNCHER",
"WEAPON_RPG",
"WEAPON_MINIGUN",
"WEAPON_HOMINGLAUNCHER",
"WEAPON_COMPACTLAUNCHER",
"WEAPON_RAYMINIGUN",
"WEAPON_EMPLAUNCHER",
"WEAPON_RAILGUNXM3",
"WEAPON_TECPISTOL",
"WEAPON_FIREWORK",
"WEAPON_BATTLERIFLE",
"WEAPON_SNOWLAUNCHER",
}
selected_loc = 0
selected_slot = 0
is_typing = false
weapon_skins = false
gta_plus_blip = false
livery_lock = false
weapon_editor_popup = false
filter_text = ""
weapon_name = ""
gun_van_loc = 0
function render_weapon_editor()
ImGui.SetNextWindowSize(700, 420)
ImGui.OpenPopup("Weapon Editor")
if
ImGui.BeginPopupModal(
"Weapon Editor",
weapon_editor_popup,
ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.Modal
)
then
selected_slot =
ImGui.Combo("Select Slot", selected_slot, { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }, 10)
filter_text = ImGui.InputText("Weapon Name", filter_text, 100)
if ImGui.IsItemActive() then
is_typing = true
else
is_typing = false
end
if ImGui.BeginListBox("##weapons", 450, 200) then
for index, item in ipairs(weapons_data) do
local display_name = weapons.get_weapon_display_name(item)
if string.find(display_name:lower(), filter_text:lower()) then
if ImGui.Selectable(display_name) then
filter_text = display_name
weapon_name = item
end
end
end
ImGui.EndListBox()
end
if ImGui.Button("Set Weapon") then
local is_weapon_valid = weapons.get_weapon_display_name(weapon_name) ~= ""
if is_weapon_valid then
tunables.set_int("XM22_GUN_VAN_SLOT_WEAPON_TYPE_" .. selected_slot, joaat(weapon_name))
else
gui.show_error("Gun Van", "Invalid weapon.")
end
end
ImGui.SameLine()
if ImGui.Button("Remove Weapon") then
tunables.set_int("XM22_GUN_VAN_SLOT_WEAPON_TYPE_" .. selected_slot, 0)
end
if ImGui.Button("Close") then
selected_slot = 0
filter_text = ""
weapon_name = ""
weapon_editor_popup = false
ImGui.CloseCurrentPopup()
end
ImGui.EndPopup()
end
end
script.register_looped("Gun Van", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
gun_van_loc = globals.get_int(2652581 + 2706)
if is_typing then
PAD.DISABLE_ALL_CONTROL_ACTIONS(0)
end
if weapon_skins then
tunables.set_bool(1490225691, false)
end
if livery_lock then
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("gunclub_shop")) > 0 then
local value = locals.get_int("gunclub_shop", 206 + 747)
if value ~= nil then
value = value | (1 << 8)
locals.set_int("gunclub_shop", 206 + 747, value)
end
end
end
if gta_plus_blip then
local gun_van_sprite = HUD.GET_FIRST_BLIP_INFO_ID(844)
tunables.set_float(15999531, 10000.0)
if HUD.DOES_BLIP_EXIST(gun_van_sprite) then
HUD.SET_BLIP_AS_SHORT_RANGE(gun_van_sprite, false)
end
end
script:sleep(500)
end)
GVMENU:add_imgui(function()
if weapon_editor_popup then
render_weapon_editor()
end
ImGui.Text("Current Location: " .. (gun_van_loc ~= -1 and gun_van_loc + 1 or "N/A"))
ImGui.SetNextItemWidth(265)
selected_loc = ImGui.Combo("##selected_loc", selected_loc, van_locations, 30)
ImGui.SameLine()
if ImGui.Button("Set New Gun Van Location") then
globals.set_int(2652581 + 2706, selected_loc)
end
ImGui.SameLine()
if ImGui.Button("Teleport") then
script.run_in_fiber(function()
local coords = gunvan_locations[selected_loc + 1]
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
end)
end
weapon_skins, on_tick = ImGui.Checkbox("Weapon Skins", weapon_skins)
help_marker("Enables the special liveries for Knife and Baseball Bat.")
if on_tick then
if not weapon_skins then
tunables.set_bool(1490225691, true)
end
end
livery_lock, on_tick = ImGui.Checkbox("Remove Livery Lock", livery_lock)
help_marker(
"Removes the hard-coded lock on special weapon liveries, such as Season's Greetings, Employee of the Month etc."
)
if on_tick then
if not livery_lock then
local value = locals.get_int("gunclub_shop", 206 + 747)
if value ~= nil then
value = value & ~(1 << 8)
locals.set_int("gunclub_shop", 206 + 747, value)
end
end
end
gta_plus_blip, on_tick = ImGui.Checkbox("Blip Always Visible", gta_plus_blip)
help_marker("The Gun Van will always be blipped on the map, just like in GTA+.")
if on_tick then
if not gta_plus_blip then
tunables.set_float(15999531, 500.0)
end
end
discount, on_tick = ImGui.Checkbox("Jewish Trade Skills (-10%)", discount)
help_marker("Allows 10% off off any weapon in gun van")
_discountBackup = _discountBackup or { armour = {}, throwable = {}, weapon = {} }
if on_tick then
if discount then
for i = 0, 4 do
_discountBackup.armour[i] = tunables.get_float("XM22_GUN_VAN_SLOT_ARMOUR_DISCOUNT_" .. i)
tunables.set_float("XM22_GUN_VAN_SLOT_ARMOUR_DISCOUNT_" .. i, 0.1)
end
for i = 0, 2 do
_discountBackup.throwable[i] = tunables.get_float("XM22_GUN_VAN_SLOT_THROWABLE_DISCOUNT_" .. i)
tunables.set_float("XM22_GUN_VAN_SLOT_THROWABLE_DISCOUNT_" .. i, 0.1)
end
for i = 0, 9 do
_discountBackup.weapon[i] = tunables.get_float("XM22_GUN_VAN_SLOT_WEAPON_DISCOUNT_" .. i)
tunables.set_float("XM22_GUN_VAN_SLOT_WEAPON_DISCOUNT_" .. i, 0.1)
end
else
for i = 0, 4 do
tunables.set_float("XM22_GUN_VAN_SLOT_ARMOUR_DISCOUNT_" .. i, _discountBackup.armour[i] or 0.0)
end
for i = 0, 2 do
tunables.set_float("XM22_GUN_VAN_SLOT_THROWABLE_DISCOUNT_" .. i, _discountBackup.throwable[i] or 0.0)
end
for i = 0, 9 do
tunables.set_float("XM22_GUN_VAN_SLOT_WEAPON_DISCOUNT_" .. i, _discountBackup.weapon[i] or 0.0)
end
end
end
ImGui.Separator()
if ImGui.TreeNode("Weapons") then
for i = 0, 9 do
local weapon_hash = tunables.get_int("XM22_GUN_VAN_SLOT_WEAPON_TYPE_" .. i)
if weapon_hash ~= 0 then
local weapon_name = weapons.get_weapon_display_name(weapon_hash)
local weapon_discount =
math.floor(tunables.get_float("XM22_GUN_VAN_SLOT_WEAPON_DISCOUNT_" .. i) * 100.0)
ImGui.Text(i + 1 .. " - " .. weapon_name .. " (" .. weapon_discount .. "%)")
end
end
if ImGui.Button("Edit Weapons") then
weapon_editor_popup = true
end
ImGui.Separator()
ImGui.TreePop()
end
if ImGui.TreeNode("Throwables") then
for i = 0, 2 do
local throwable_hash = tunables.get_int("XM22_GUN_VAN_SLOT_THROWABLE_TYPE_" .. i)
if throwable_hash ~= 0 then
local throwable_name = weapons.get_weapon_display_name(throwable_hash)
local throwable_discount =
math.floor(tunables.get_float("XM22_GUN_VAN_SLOT_THROWABLE_DISCOUNT_" .. i) * 100.0)
ImGui.Text(i + 1 .. " - " .. throwable_name .. " (" .. throwable_discount .. "%)")
end
end
ImGui.Separator()
ImGui.TreePop()
end
if ImGui.TreeNode("Body Armor") then
local armour_discounts = {}
for i = 0, 4 do
armour_discounts[i + 1] = math.floor(tunables.get_float("XM22_GUN_VAN_SLOT_ARMOUR_DISCOUNT_" .. i) * 100.0)
end
ImGui.Text("Super Light Armor (" .. armour_discounts[1] .. "%)")
ImGui.Text("Light Armor (" .. armour_discounts[2] .. "%)")
ImGui.Text("Standard Armor (" .. armour_discounts[3] .. "%)")
ImGui.Text("Heavy Armor (" .. armour_discounts[4] .. "%)")
ImGui.Text("Super Heavy Armor (" .. armour_discounts[5] .. "%)")
ImGui.TreePop()
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---@diagnostic disable: undefined-global, lowercase-global
SCRIPT_NAME = "YimResupplier"
local TAGET_BUILD <const> = "3788.0"
-- ============================================================================
-- JSON LIBRARY (rxi's json.lua)
-- ============================================================================
function JSON()
local json = { _version = "0.1.2" }
local encode
local escape_char_map = {
["\\"] = "\\",
['"'] = '"',
["\b"] = "b",
["\f"] = "f",
["\n"] = "n",
["\r"] = "r",
["\t"] = "t",
}
local escape_char_map_inv = { ["/"] = "/" }
for k, v in pairs(escape_char_map) do
escape_char_map_inv[v] = k
end
function escape_char(c)
return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
end
function encode_nil(val)
return "null"
end
function encode_table(val, stack)
local res = {}
stack = stack or {}
if stack[val] then
error("circular reference")
end
stack[val] = true
if rawget(val, 1) ~= nil or next(val) == nil then
local n = 0
for k in pairs(val) do
if type(k) ~= "number" then
error("invalid table: mixed or invalid key types")
end
n = n + 1
end
if n ~= #val then
error("invalid table: sparse array")
end
for i, v in ipairs(val) do
table.insert(res, encode(v, stack))
end
stack[val] = nil
return "[" .. table.concat(res, ",") .. "]"
else
for k, v in pairs(val) do
if type(k) ~= "string" then
error("invalid table: mixed or invalid key types")
end
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
end
stack[val] = nil
return "{" .. table.concat(res, ",") .. "}"
end
end
function encode_string(val)
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
end
function encode_number(val)
if val ~= val or val <= -math.huge or val >= math.huge then
error("unexpected number value '" .. tostring(val) .. "'")
end
return string.format("%.14g", val)
end
local type_func_map = {
["nil"] = encode_nil,
["table"] = encode_table,
["string"] = encode_string,
["number"] = encode_number,
["boolean"] = tostring,
}
encode = function(val, stack)
local t = type(val)
local f = type_func_map[t]
if f then
return f(val, stack)
end
error("unexpected type '" .. t .. "'")
end
function json.encode(val)
return (encode(val))
end
local parse
function create_set(...)
local res = {}
for i = 1, select("#", ...) do
res[select(i, ...)] = true
end
return res
end
local space_chars = create_set(" ", "\t", "\r", "\n")
local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
local literals = create_set("true", "false", "null")
local literal_map = {
["true"] = true,
["false"] = false,
["null"] = nil,
}
function next_char(str, idx, set, negate)
for i = idx, #str do
if set[str:sub(i, i)] ~= negate then
return i
end
end
return #str + 1
end
function decode_error(str, idx, msg)
local line_count = 1
local col_count = 1
for i = 1, idx - 1 do
col_count = col_count + 1
if str:sub(i, i) == "\n" then
line_count = line_count + 1
col_count = 1
end
end
error(string.format("%s at line %d col %d", msg, line_count, col_count))
end
function codepoint_to_utf8(n)
local f = math.floor
if n <= 0x7f then
return string.char(n)
elseif n <= 0x7ff then
return string.char(f(n / 64) + 192, n % 64 + 128)
elseif n <= 0xffff then
return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
elseif n <= 0x10ffff then
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, f(n % 4096 / 64) + 128, n % 64 + 128)
end
error(string.format("invalid unicode codepoint '%x'", n))
end
function parse_unicode_escape(s)
local n1 = tonumber(s:sub(1, 4), 16)
local n2 = tonumber(s:sub(7, 10), 16)
if n2 then
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
else
return codepoint_to_utf8(n1)
end
end
function parse_string(str, i)
local res = ""
local j = i + 1
local k = j
while j <= #str do
local x = str:byte(j)
if x < 32 then
decode_error(str, j, "control character in string")
elseif x == 92 then
res = res .. str:sub(k, j - 1)
j = j + 1
local c = str:sub(j, j)
if c == "u" then
local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
or str:match("^%x%x%x%x", j + 1)
or decode_error(str, j - 1, "invalid unicode escape in string")
res = res .. parse_unicode_escape(hex)
j = j + #hex
else
if not escape_chars[c] then
decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
end
res = res .. escape_char_map_inv[c]
end
k = j + 1
elseif x == 34 then
res = res .. str:sub(k, j - 1)
return res, j + 1
end
j = j + 1
end
decode_error(str, i, "expected closing quote for string")
end
function parse_number(str, i)
local x = next_char(str, i, delim_chars)
local s = str:sub(i, x - 1)
local n = tonumber(s)
if not n then
decode_error(str, i, "invalid number '" .. s .. "'")
end
return n, x
end
function parse_literal(str, i)
local x = next_char(str, i, delim_chars)
local word = str:sub(i, x - 1)
if not literals[word] then
decode_error(str, i, "invalid literal '" .. word .. "'")
end
return literal_map[word], x
end
function parse_array(str, i)
local res = {}
local n = 1
i = i + 1
while 1 do
local x
i = next_char(str, i, space_chars, true)
if str:sub(i, i) == "]" then
i = i + 1
break
end
x, i = parse(str, i)
res[n] = x
n = n + 1
i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i)
i = i + 1
if chr == "]" then
break
end
if chr ~= "," then
decode_error(str, i, "expected ']' or ','")
end
end
return res, i
end
function parse_object(str, i)
local res = {}
i = i + 1
while 1 do
local key, val
i = next_char(str, i, space_chars, true)
if str:sub(i, i) == "}" then
i = i + 1
break
end
if str:sub(i, i) ~= '"' then
decode_error(str, i, "expected string for key")
end
key, i = parse(str, i)
i = next_char(str, i, space_chars, true)
if str:sub(i, i) ~= ":" then
decode_error(str, i, "expected ':' after key")
end
i = next_char(str, i + 1, space_chars, true)
val, i = parse(str, i)
res[key] = val
i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i)
i = i + 1
if chr == "}" then
break
end
if chr ~= "," then
decode_error(str, i, "expected '}' or ','")
end
end
return res, i
end
local char_func_map = {
['"'] = parse_string,
["0"] = parse_number,
["1"] = parse_number,
["2"] = parse_number,
["3"] = parse_number,
["4"] = parse_number,
["5"] = parse_number,
["6"] = parse_number,
["7"] = parse_number,
["8"] = parse_number,
["9"] = parse_number,
["-"] = parse_number,
["t"] = parse_literal,
["f"] = parse_literal,
["n"] = parse_literal,
["["] = parse_array,
["{"] = parse_object,
}
parse = function(str, idx)
local chr = str:sub(idx, idx)
local f = char_func_map[chr]
if f then
return f(str, idx)
end
decode_error(str, idx, "unexpected character '" .. chr .. "'")
end
function json.decode(str)
if type(str) ~= "string" then
error("expected argument of type string, got " .. type(str))
end
local res, idx = parse(str, next_char(str, 1, space_chars, true))
idx = next_char(str, idx, space_chars, true)
if idx <= #str then
decode_error(str, idx, "trailing garbage")
end
return res
end
return json
end
-- ============================================================================
-- YIMCONFIG SYSTEM
-- ============================================================================
function YimConfig(DEFAULT_CONFIG)
local json = JSON()
local script_json = string.format("%s.json", SCRIPT_NAME)
local yc = {
_version = "1.0.0",
_credits = [[
¤ Universal Config System For YimMenu-Lua ¤
- Original code written by Harmless: https://github.com/harmless05
- Modified for universal use by SAMURAI (xesdoog): https://github.com/xesdoog
- Uses rxi's JSON Library: https://github.com/rxi/json.lua
]],
}
function file_exists(name)
local f = io.open(name, "r")
if f ~= nil then
f:close()
return true
else
return false
end
end
local writeToFile = function(data)
local file, _ = io.open(script_json, "w")
if file == nil then
log.warning("Failed to write to " .. script_json)
gui.show_error("YimConfig", "Failed to write to " .. script_json)
return false
end
file:write(json.encode(data))
file:close()
return true
end
local readFromFile = function()
local file, _ = io.open(script_json, "r")
if file == nil then
return nil
end
local content = file:read("*all")
file:close()
return json.decode(content)
end
local checkAndCreateConfig = function()
if DEFAULT_CONFIG == nil then
gui.show_error(
"YimConfig",
"Missing default config! Please create a default config table in your main script."
)
error("[FATAL] Missing default config! Please create a default config global table in your main script.")
end
local exists = file_exists(script_json)
local config
if not exists then
log.debug("Config file not found! Creating a default config...")
return writeToFile(DEFAULT_CONFIG)
else
config = readFromFile()
if config == nil then
error("[FATAL] Failed to read config file!")
end
for key, defaultValue in pairs(DEFAULT_CONFIG) do
if config[key] == nil then
config[key] = defaultValue
end
end
return writeToFile(config)
end
end
local readAndDecodeConfig = function()
if not checkAndCreateConfig() then
error("Failed to read config file!", 2)
end
return readFromFile()
end
yc.save = function(item_tag, value)
local t = readAndDecodeConfig()
if t then
t[item_tag] = value
if not writeToFile(t) then
log.warning("Failed to save config to " .. script_json)
end
end
end
yc.read = function(item_tag)
local t = readAndDecodeConfig()
if t then
return t[item_tag]
else
log.warning("Failed to read config from " .. script_json)
end
end
yc.reset = function()
writeToFile(DEFAULT_CONFIG)
end
yc.encode = json.encode
yc.decode = json.decode
return yc
end
-- ============================================================================
-- UTILITY FUNCTIONS
-- ============================================================================
local TAGET_BUILD = "3889"
function formatMoney(value)
return "$" .. tostring(value):reverse():gsub("%d%d%d", "%1,"):reverse():gsub("^,", "")
end
function coloredText(text, wrap_size, color)
ImGui.PushStyleColor(ImGuiCol.Text, color[1] / 255, color[2] / 255, color[3] / 255, color[4])
ImGui.PushTextWrapPos(ImGui.GetFontSize() * wrap_size)
ImGui.TextWrapped(text)
ImGui.PopTextWrapPos()
ImGui.PopStyleColor(1)
end
function selfTP(keepVehicle, setHeading, coords, heading)
script.run_in_fiber(function(selftp)
STREAMING.REQUEST_COLLISION_AT_COORD(coords.x, coords.y, coords.z)
selftp:sleep(300)
if setHeading then
if heading == nil then
heading = 0
end
ENTITY.SET_ENTITY_HEADING(self.get_ped(), heading)
end
if keepVehicle then
PED.SET_PED_COORDS_KEEP_VEHICLE(self.get_ped(), coords.x, coords.y, coords.z)
else
TASK.CLEAR_PED_TASKS_IMMEDIATELY(self.get_ped())
ENTITY.SET_ENTITY_COORDS(self.get_ped(), coords.x, coords.y, coords.z, false, false, false, true)
end
end)
end
function getCEOvalue_G(crates)
local G
if crates ~= nil then
if crates == 1 then
G = 15821
end
if crates == 2 then
G = 15822
end
if crates == 3 then
G = 15823
end
if crates == 4 or crates == 5 then
G = 15824
end
if crates == 6 or crates == 7 then
G = 15825
end
if crates == 8 or crates == 9 then
G = 15826
end
if crates >= 10 and crates <= 14 then
G = 15827
end
if crates >= 15 and crates <= 19 then
G = 15828
end
if crates >= 20 and crates <= 24 then
G = 15829
end
if crates >= 25 and crates <= 29 then
G = 15830
end
if crates >= 30 and crates <= 34 then
G = 15831
end
if crates >= 35 and crates <= 39 then
G = 15832
end
if crates >= 40 and crates <= 44 then
G = 15833
end
if crates >= 45 and crates <= 49 then
G = 15834
end
if crates >= 50 and crates <= 59 then
G = 15835
end
if crates >= 60 and crates <= 69 then
G = 15836
end
if crates >= 70 and crates <= 79 then
G = 15837
end
if crates >= 80 and crates <= 89 then
G = 15838
end
if crates >= 90 and crates <= 99 then
G = 15839
end
if crates >= 100 and crates <= 110 then
G = 15840
end
if crates == 111 then
G = 15841
end
else
G = 0
end
return G
end
-- ============================================================================
-- MAIN SCRIPT
-- ============================================================================
local DEFAULT_CONFIG = {
cashUpdgrade1 = false,
cashUpdgrade2 = false,
cokeUpdgrade1 = false,
cokeUpdgrade2 = false,
methUpdgrade1 = false,
methUpdgrade2 = false,
weedUpdgrade1 = false,
weedUpdgrade2 = false,
fdUpdgrade1 = false,
fdUpdgrade2 = false,
bunkerUpdgrade1 = false,
bunkerUpdgrade2 = false,
acidUpdgrade = false,
}
local CFG = YimConfig(DEFAULT_CONFIG)
log.info(
string.format("Ultimate_Menu_Legacy.lua: YimConfig v%s successfully loaded\n%s", CFG._version, CFG._credits)
)
yim_resupplier = L7NEG:add_tab("YimResupplier")
hangarOwned = false
fCashOwned = false
cokeOwned = false
methOwned = false
weedOwned = false
fdOwned = false
bunkerOwned = false
acidOwned = false
hangarTotal = 0
cashTotal = 0
cokeTotal = 0
methTotal = 0
weedTotal = 0
fdTotal = 0
bunkerTotal = 0
acidTotal = 0
cashUpdgrade1 = CFG.read("cashUpdgrade1")
cashUpdgrade2 = CFG.read("cashUpdgrade2")
cokeUpdgrade1 = CFG.read("cokeUpdgrade1")
cokeUpdgrade2 = CFG.read("cokeUpdgrade2")
methUpdgrade1 = CFG.read("methUpdgrade1")
methUpdgrade2 = CFG.read("methUpdgrade2")
weedUpdgrade1 = CFG.read("weedUpdgrade1")
weedUpdgrade2 = CFG.read("weedUpdgrade2")
fdUpdgrade1 = CFG.read("fdUpdgrade1")
fdUpdgrade2 = CFG.read("fdUpdgrade2")
bunkerUpdgrade1 = CFG.read("bunkerUpdgrade1")
bunkerUpdgrade2 = CFG.read("bunkerUpdgrade2")
acidUpdgrade = CFG.read("acidUpdgrade")
yim_resupplier:add_imgui(function()
if
network.is_session_started()
and not (SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0)
then
hangarOwned = stats.get_int(MPX() .. "PROP_HANGAR") ~= 0
fCashOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT0") ~= 0
cokeOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT1") ~= 0
methOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT2") ~= 0
weedOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT3") ~= 0
fdOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT4") ~= 0
bunkerOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT5") ~= 0
acidOwned = stats.get_int(MPX() .. "PROP_FAC_SLOT6") ~= 0
ImGui.BeginTabBar("YimResupplier", ImGuiTabBarFlags.None)
if ImGui.BeginTabItem("Manage Supplies") then
local wh1Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE0") or 0
local wh2Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE1") or 0
local wh3Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE2") or 0
local wh4Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE3") or 0
local wh5Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE4") or 0
local hangarSupply = stats.get_int(MPX() .. "HANGAR_CONTRABAND_TOTAL") or 0
local cashSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY0") or 0
local dfSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY1") or 0
local methSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY2") or 0
local weedSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY3") or 0
local cokeSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY4") or 0
local bunkerSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY5") or 0
local acidSupply = stats.get_int(MPX() .. "MATTOTALFORFACTORY6") or 0
local ceoSupply = (wh1Supplies + wh2Supplies + wh3Supplies + wh4Supplies + wh5Supplies)
ImGui.Spacing()
ImGui.Text("Hangar Cargo")
ImGui.Separator()
if hangarOwned then
ImGui.Text("Current Supplies:")
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.ProgressBar((hangarSupply / 50), 140, 30)
if hangarSupply < 50 then
if ImGui.Button("Source Random Crate(s)") then
script.run_in_fiber(function()
stats.set_bool_masked(MPX() .. "DLC22022PSTAT_BOOL3", true, 9)
end)
end
ImGui.SameLine()
hangarLoop, used = ImGui.Checkbox("Auto-Fill", hangarLoop)
if hangarLoop then
script.run_in_fiber(function(hangarSupp)
repeat
stats.set_bool_masked(MPX() .. "DLC22022PSTAT_BOOL3", true, 9)
hangarSupp:sleep(969)
until hangarSupply == 50 or hangarLoop == false
end)
end
else
if hangarLoop then
hangarLoop = false
end
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
if ImGui.Button("Teleport##hangar") then
script.run_in_fiber(function()
local hangarBlip = HUD.GET_FIRST_BLIP_INFO_ID(569)
local hangarLoc
if HUD.DOES_BLIP_EXIST(hangarBlip) then
hangarLoc = HUD.GET_BLIP_COORDS(hangarBlip)
selfTP(true, false, hangarLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Hangar.")
end
ImGui.Spacing()
ImGui.Text("CEO Warehouses")
ImGui.Separator()
ImGui.Text("Current Supplies:")
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.ProgressBar((ceoSupply / 555), 140, 30)
if ceoSupply < 555 then
if ImGui.Button("Source Random Crate(s)##ceo") then
script.run_in_fiber(function(fillceo)
for i = 12, 16 do
stats.set_bool_masked(MPX() .. "FIXERPSTAT_BOOL1", true, i)
fillceo:sleep(500)
end
end)
end
ImGui.SameLine()
ceoLoop, used = ImGui.Checkbox("Auto-Fill##ceo", ceoLoop)
if ceoLoop then
script.run_in_fiber(function(ceoloop)
repeat
for i = 12, 16 do
stats.set_bool_masked(MPX() .. "FIXERPSTAT_BOOL1", true, i)
ceoloop:sleep(500)
end
ceoloop:sleep(969)
until ceoSupply == 555 or ceoLoop == false
end)
end
else
if ceoLoop then
ceoLoop = false
end
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
if ImGui.Button("Teleport To Office") then
script.run_in_fiber(function()
local ceoBlip = HUD.GET_FIRST_BLIP_INFO_ID(475)
local ceoLoc
if HUD.DOES_BLIP_EXIST(ceoBlip) then
ceoLoc = HUD.GET_BLIP_COORDS(ceoBlip)
selfTP(true, false, ceoLoc)
end
end)
end
end
ImGui.Spacing()
ImGui.Text("MC Supplies")
ImGui.Separator()
if fCashOwned then
ImGui.Text("Fake Cash:")
ImGui.SameLine()
ImGui.Dummy(55, 1)
ImGui.SameLine()
ImGui.ProgressBar((cashSupply / 100), 140, 30)
if math.ceil(cashSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##FakeCash") then
globals.set_int(YIM_RESUPPLIER_SLOT(0), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##fc") then
script.run_in_fiber(function()
local fcBlip = HUD.GET_FIRST_BLIP_INFO_ID(500)
local fcLoc
if HUD.DOES_BLIP_EXIST(fcBlip) then
fcLoc = HUD.GET_BLIP_COORDS(fcBlip)
selfTP(false, false, fcLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Fake Cash business.")
end
if cokeOwned then
ImGui.Text("Cocaine:")
ImGui.SameLine()
ImGui.Dummy(73, 1)
ImGui.SameLine()
ImGui.ProgressBar((cokeSupply / 100), 140, 30)
if math.ceil(cokeSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##Cocaine") then
globals.set_int(YIM_RESUPPLIER_SLOT(4), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##coke") then
script.run_in_fiber(function()
local cokeBlip = HUD.GET_FIRST_BLIP_INFO_ID(497)
local cokeLoc
if HUD.DOES_BLIP_EXIST(cokeBlip) then
cokeLoc = HUD.GET_BLIP_COORDS(cokeBlip)
selfTP(false, false, cokeLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Cocaine business.")
end
if methOwned then
ImGui.Text("Meth:")
ImGui.SameLine()
ImGui.Dummy(95, 1)
ImGui.SameLine()
ImGui.ProgressBar((methSupply / 100), 140, 30)
if math.ceil(methSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##Meth") then
globals.set_int(YIM_RESUPPLIER_SLOT(2), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##meth") then
script.run_in_fiber(function()
local methBlip = HUD.GET_FIRST_BLIP_INFO_ID(499)
local methLoc
if HUD.DOES_BLIP_EXIST(methBlip) then
methLoc = HUD.GET_BLIP_COORDS(methBlip)
selfTP(false, false, methLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Meth business.")
end
if weedOwned then
ImGui.Text("Weed:")
ImGui.SameLine()
ImGui.Dummy(90, 1)
ImGui.SameLine()
ImGui.ProgressBar((weedSupply / 100), 140, 30)
if math.ceil(weedSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##Weed") then
globals.set_int(YIM_RESUPPLIER_SLOT(3), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##weed") then
script.run_in_fiber(function()
local weedBlip = HUD.GET_FIRST_BLIP_INFO_ID(496)
local weedLoc
if HUD.DOES_BLIP_EXIST(weedBlip) then
weedLoc = HUD.GET_BLIP_COORDS(weedBlip)
selfTP(false, false, weedLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Weed business.")
end
if fdOwned then
ImGui.Text("Document Forgery: ")
ImGui.SameLine()
ImGui.ProgressBar((dfSupply / 100), 140, 30)
if math.ceil(dfSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##DocumentForgery") then
globals.set_int(YIM_RESUPPLIER_SLOT(1), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##fd") then
script.run_in_fiber(function()
local fdBlip = HUD.GET_FIRST_BLIP_INFO_ID(498)
local fdLoc
if HUD.DOES_BLIP_EXIST(fdBlip) then
fdLoc = HUD.GET_BLIP_COORDS(fdBlip)
selfTP(false, false, fdLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Document Forgery office.")
end
if bunkerOwned then
ImGui.Text("Bunker:")
ImGui.SameLine()
ImGui.Dummy(80, 1)
ImGui.SameLine()
ImGui.ProgressBar((bunkerSupply / 100), 140, 30)
if math.ceil(bunkerSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##Bunker") then
globals.set_int(YIM_RESUPPLIER_SLOT(5), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##bunker") then
script.run_in_fiber(function()
local bunkerBlip = HUD.GET_FIRST_BLIP_INFO_ID(557)
local bunkerLoc
if HUD.DOES_BLIP_EXIST(bunkerBlip) then
bunkerLoc = HUD.GET_BLIP_COORDS(bunkerBlip)
selfTP(true, false, bunkerLoc)
end
end)
end
end
else
ImGui.Text("You don't own a Bunker.")
end
if acidOwned then
ImGui.Text("Acid Lab:")
ImGui.SameLine()
ImGui.Dummy(70, 1)
ImGui.SameLine()
ImGui.ProgressBar((acidSupply / 100), 140, 30)
if math.ceil(acidSupply) < 100 then
ImGui.SameLine()
if ImGui.Button(" Fill ##AcidLab") then
globals.set_int(YIM_RESUPPLIER_SLOT(6), 1)
end
ImGui.SameLine()
ImGui.Dummy(5, 1)
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
if ImGui.Button("Teleport##acid") then
script.run_in_fiber(function()
local acidBlip = HUD.GET_FIRST_BLIP_INFO_ID(848)
local acidLoc
if HUD.DOES_BLIP_EXIST(acidBlip) then
acidLoc = HUD.GET_BLIP_COORDS(acidBlip)
selfTP(true, false, acidLoc)
end
end)
end
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.Dummy(1, 10)
coloredText(
"WARNING!\10Teleport buttons might be broken in public sessions.",
40,
{ 255, 204, 0, 0.8 }
)
end
else
ImGui.Text("You don't own an Acid Lab.")
end
ImGui.EndTabItem()
end
if ImGui.BeginTabItem("Production Overview") then
--------------------------------------- Hangar ----------------------------------------------------------------------
if hangarOwned then
ImGui.Text("Hangar:")
local hangarCargo = stats.get_int(MPX() .. "HANGAR_CONTRABAND_TOTAL") or 0
hangarTotal = hangarCargo * 30000
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(hangarCargo / 50),
160,
25,
tostring(hangarCargo) .. " Crates (" .. tostring(math.floor(hangarCargo / 0.5)) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(hangarTotal))
end
--------------------------------------- CEO ----------------------------------------------------------------------
ImGui.Separator()
ImGui.Text("CEO:")
local wh1Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE0") or 0
local wh2Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE1") or 0
local wh3Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE2") or 0
local wh4Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE3") or 0
local wh5Supplies = stats.get_int(MPX() .. "CONTOTALFORWHOUSE4") or 0
if wh1Supplies ~= nil and wh1Supplies > 0 then
wh1Value = (globals.get_int(262145 + (getCEOvalue_G(wh1Supplies))))
else
wh1Value = 0
end
if wh2Supplies ~= nil and wh2Supplies > 0 then
wh2Value = (globals.get_int(262145 + (getCEOvalue_G(wh2Supplies))))
else
wh2Value = 0
end
if wh3Supplies ~= nil and wh3Supplies > 0 then
wh3Value = (globals.get_int(262145 + (getCEOvalue_G(wh3Supplies))))
else
wh3Value = 0
end
if wh4Supplies ~= nil and wh4Supplies > 0 then
wh4Value = (globals.get_int(262145 + (getCEOvalue_G(wh4Supplies))))
else
wh4Value = 0
end
if wh5Supplies ~= nil and wh5Supplies > 0 then
wh5Value = (globals.get_int(262145 + (getCEOvalue_G(wh5Supplies))))
else
wh5Value = 0
end
local ceoSupply = (wh1Supplies + wh2Supplies + wh3Supplies + wh4Supplies + wh5Supplies)
ceoTotal = (
(wh1Value * wh1Supplies)
+ (wh2Value * wh2Supplies)
+ (wh3Value * wh3Supplies)
+ (wh4Value * wh4Supplies)
+ (wh5Value * wh5Supplies)
)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(ceoSupply / 555),
160,
25,
tostring(ceoSupply) .. " Crates (" .. tostring(math.floor((ceoSupply / 555) * 100)) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(ceoTotal))
--------------------------------------- Fake Cash -------------------------------------------------------------------
if fCashOwned then
ImGui.Separator()
ImGui.Text("Fake Cash:")
ImGui.SameLine()
cashUpdgrade1, used = ImGui.Checkbox("Equipment Upgrade##cash", cashUpdgrade1)
ImGui.SameLine()
if used then
CFG.save("cashUpdgrade1", cashUpdgrade1)
end
cashUpdgrade2, used = ImGui.Checkbox("Staff Upgrade##cash", cashUpdgrade2)
if used then
CFG.save("cashUpdgrade2", cashUpdgrade2)
end
if cashUpdgrade1 then
cashOffset1 = globals.get_int(262145 + 17415)
else
cashOffset1 = 0
end
if cashUpdgrade2 then
cashOffset2 = globals.get_int(262145 + 17421)
else
cashOffset2 = 0
end
local cashProduct = stats.get_int(MPX() .. "PRODTOTALFORFACTORY0") or 0
cashTotal = ((globals.get_int(262145 + 17409) + cashOffset1 + cashOffset2) * cashProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(cashProduct / 40),
160,
25,
tostring(cashProduct) .. " Boxes (" .. tostring(math.floor(cashProduct * 2.5)) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(cashTotal))
end
---------------------------------------Coke----------------------------------------------------------------------
if cokeOwned then
ImGui.Separator()
ImGui.Text("Cocaine: ")
ImGui.SameLine()
cokeUpdgrade1, used = ImGui.Checkbox("Equipment Upgrade##coke", cokeUpdgrade1)
ImGui.SameLine()
if used then
CFG.save("cokeUpdgrade1", cokeUpdgrade1)
end
cokeUpdgrade2, used = ImGui.Checkbox("Staff Upgrade##coke", cokeUpdgrade2)
if used then
CFG.save("cokeUpdgrade2", cokeUpdgrade2)
end
if cokeUpdgrade1 then
cokeOffset1 = globals.get_int(262145 + 17416)
else
cokeOffset1 = 0
end
if cokeUpdgrade2 then
cokeOffset2 = globals.get_int(262145 + 17422)
else
cokeOffset2 = 0
end
local cokeProduct = stats.get_int(MPX() .. "PRODTOTALFORFACTORY1") or 0
cokeTotal = ((globals.get_int(262145 + 17410) + cokeOffset1 + cokeOffset2) * cokeProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(cokeProduct / 10),
160,
25,
tostring(cokeProduct) .. " Kilos (" .. tostring(cokeProduct * 10) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(cokeTotal))
end
---------------------------------------Meth-----------------------------------------------------------------------
if methOwned then
ImGui.Separator()
ImGui.Text("Meth: ")
ImGui.SameLine()
methUpdgrade1, used = ImGui.Checkbox("Equipment Upgrade##meth", methUpdgrade1)
ImGui.SameLine()
if used then
CFG.save("methUpdgrade1", methUpdgrade1)
end
methUpdgrade2, used = ImGui.Checkbox("Staff Upgrade##meth", methUpdgrade2)
if used then
CFG.save("methUpdgrade2", methUpdgrade2)
end
if methUpdgrade1 then
methOffset1 = globals.get_int(262145 + 17417)
else
methOffset1 = 0
end
if methUpdgrade2 then
methOffset2 = globals.get_int(262145 + 17423)
else
methOffset2 = 0
end
local methProduct = stats.get_int(MPX() .. "PRODTOTALFORFACTORY2") or 0
methTotal = ((globals.get_int(262145 + 17411) + methOffset1 + methOffset2) * methProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(methProduct / 20),
160,
25,
tostring(methProduct) .. " Pounds (" .. tostring(methProduct * 5) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(methTotal))
end
---------------------------------------Weed------------------------------------------------------------------------
if weedOwned then
ImGui.Separator()
ImGui.Text("Weed: ")
ImGui.SameLine()
weedUpdgrade1, used = ImGui.Checkbox("Equipment Upgrade##weed", weedUpdgrade1)
ImGui.SameLine()
if used then
CFG.save("weedUpdgrade1", weedUpdgrade1)
end
weedUpdgrade2, used = ImGui.Checkbox("Staff Upgrade##weed", weedUpdgrade2)
if used then
CFG.save("weedUpdgrade2", weedUpdgrade2)
end
if weedUpdgrade1 then
weedOffset1 = globals.get_int(262145 + 17418)
else
weedOffset1 = 0
end
if weedUpdgrade2 then
weedOffset2 = globals.get_int(262145 + 17424)
else
weedOffset2 = 0
end
local weedProduct = stats.get_int("MPX_PRODTOTALFORFACTORY3")
weedTotal = ((globals.get_int(262145 + 17412) + weedOffset1 + weedOffset2) * weedProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(weedProduct / 80),
160,
25,
tostring(weedProduct) .. " Pounds (" .. tostring(math.floor(weedProduct / 8 * 10)) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(weedTotal))
end
---------------------------------------Document Forgery------------------------------------------------------------
if fdOwned then
ImGui.Separator()
ImGui.Text("Fake ID: ")
ImGui.SameLine()
fdUpdgrade1, used = ImGui.Checkbox("Equipment Upgrade##fd", fdUpdgrade1)
ImGui.SameLine()
if used then
CFG.save("fdUpdgrade1", fdUpdgrade1)
end
fdUpdgrade2, used = ImGui.Checkbox("Staff Upgrade##fd", fdUpdgrade2)
if used then
CFG.save("fdUpdgrade2", fdUpdgrade2)
end
if fdUpdgrade1 then
fdOffset1 = globals.get_int(262145 + 17414)
else
fdOffset1 = 0
end
if fdUpdgrade2 then
fdOffset2 = globals.get_int(262145 + 17420)
else
fdOffset2 = 0
end
local fdProduct = stats.get_int("MPX_PRODTOTALFORFACTORY4")
fdTotal = ((globals.get_int(262145 + 17408) + fdOffset1 + fdOffset2) * fdProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(fdProduct / 60),
160,
25,
tostring(fdProduct) .. " Boxes (" .. tostring(math.floor(fdProduct / 6 * 10)) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(fdTotal))
end
---------------------------------------Bunker-----------------------------------------------------------------------
if bunkerOwned then
ImGui.Separator()
ImGui.Text("Bunker: ")
ImGui.SameLine()
bunkerUpdgrade1, used = ImGui.Checkbox("Equipment Upgrade##bunker", bunkerUpdgrade1)
ImGui.SameLine()
if used then
CFG.save("bunkerUpdgrade1", bunkerUpdgrade1)
end
bunkerUpdgrade2, used = ImGui.Checkbox("Staff Upgrade##bunker", bunkerUpdgrade2)
if used then
CFG.save("bunkerUpdgrade2", bunkerUpdgrade2)
end
if bunkerUpdgrade1 then
bunkerOffset1 = globals.get_int(262145 + 21345)
else
bunkerOffset1 = 0
end
if bunkerUpdgrade2 then
bunkerOffset2 = globals.get_int(262145 + 21344)
else
bunkerOffset2 = 0
end
local bunkerProduct = stats.get_int("MPX_PRODTOTALFORFACTORY5")
bunkerTotal = ((globals.get_int(262145 + 21343) + bunkerOffset1 + bunkerOffset2) * bunkerProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(bunkerProduct / 100),
160,
25,
tostring(bunkerProduct) .. " Crates (" .. tostring(bunkerProduct) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text("BC: " .. formatMoney(bunkerTotal) .. "\nLS: " .. formatMoney(math.floor(bunkerTotal * 1.5)))
end
---------------------------------------Acid Lab-------------------------------------------------------------------
if acidOwned then
ImGui.Separator()
ImGui.Text("Acid Lab: ")
ImGui.SameLine()
acidUpdgrade, used = ImGui.Checkbox("Equipment Upgrade##acid", acidUpdgrade)
if used then
CFG.save("acidUpdgrade", acidUpdgrade)
end
if acidUpdgrade then
acidOffset = globals.get_int(262145 + 17419)
else
acidOffset = 0
end
local acidProduct = stats.get_int("MPX_PRODTOTALFORFACTORY6")
acidTotal = ((globals.get_int(262145 + 17413) + acidOffset) * acidProduct)
ImGui.Text("Product:")
ImGui.SameLine()
ImGui.Dummy(5, 1)
ImGui.SameLine()
ImGui.ProgressBar(
(acidProduct / 100),
160,
25,
tostring(acidProduct) .. " Sheets (" .. tostring(math.floor(acidProduct / 16 * 10)) .. "%)"
)
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
ImGui.Text("Value:")
ImGui.SameLine()
ImGui.Text(formatMoney(acidTotal))
end
ImGui.Spacing()
ImGui.Separator()
ImGui.Text("Nightclub Hubs (read-only):")
local hubNames = {"Cargo", "Weapons", "Coke", "Meth", "Weed", "Forged Docs", "Cash"}
for i = 0, 6 do
local prod = stats.get_int(MPX() .. "HUB_PROD_TOTAL_" .. i) or 0
ImGui.Text(hubNames[i + 1] .. ": " .. tostring(prod))
end
ImGui.Separator()
ImGui.Text("CEO Warehouses (breakdown):")
local ceoNames = {"WH1", "WH2", "WH3", "WH4", "WH5"}
local ceoVals = {wh1Supplies, wh2Supplies, wh3Supplies, wh4Supplies, wh5Supplies}
for i = 1, 5 do
ImGui.Text(ceoNames[i] .. ": " .. tostring(ceoVals[i] or 0) .. " crates")
end
ImGui.Separator()
ImGui.Text("Vehicle Warehouse (read-only):")
local vehCount = 0
for i = 0, 39 do
if stats.get_int(MPX() .. "IE_WH_OWNED_VEHICLE_" .. i) ~= 0 then
vehCount = vehCount + 1
end
end
ImGui.Text("Stored vehicles: " .. tostring(vehCount) .. " / 40")
ImGui.Separator()
local finalAmt = (
hangarTotal
+ ceoTotal
+ cashTotal
+ cokeTotal
+ methTotal
+ weedTotal
+ fdTotal
+ bunkerTotal
+ acidTotal
)
ImGui.Spacing()
ImGui.Text("Total Profit = " .. formatMoney(finalAmt))
ImGui.EndTabItem()
end
if ImGui.BeginTabItem("Business Safes") then
if stats.get_int("MPX_PROP_NIGHTCLUB") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ Nightclub ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(50, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##nc") then
script.run_in_fiber(function()
local ncBlip = HUD.GET_FIRST_BLIP_INFO_ID(614)
local ncLoc
if HUD.DOES_BLIP_EXIST(ncBlip) then
ncLoc = HUD.GET_BLIP_COORDS(ncBlip)
selfTP(false, false, ncLoc)
end
end)
end
end
local currentNcPop = stats.get_int("MPX_CLUB_POPULARITY")
local popDiff = 1000 - currentNcPop
local currNcSafeMoney = stats.get_int("MPX_CLUB_SAFE_CASH_VALUE")
ImGui.Text("Popularity: ")
ImGui.SameLine()
ImGui.Dummy(35, 1)
ImGui.SameLine()
ImGui.ProgressBar(currentNcPop / 1000, 160, 25, tostring(currentNcPop))
if currentNcPop < 1000 then
ImGui.SameLine()
if ImGui.Button("Max Popularity") then
stats.set_int("MPX_CLUB_POPULARITY", currentNcPop + popDiff)
gui.show_success("YimResupplier", "Nightclub popularity increased.")
end
end
ImGui.Text("Safe: ")
ImGui.SameLine()
ImGui.Dummy(75, 1)
ImGui.SameLine()
ImGui.ProgressBar(currNcSafeMoney / 250000, 160, 25, formatMoney(currNcSafeMoney))
ImGui.Separator()
end
if stats.get_int("MPX_PROP_ARCADE") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ Arcade ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(60, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##arcade") then
script.run_in_fiber(function()
local arBlip = HUD.GET_FIRST_BLIP_INFO_ID(740)
local arLoc
if HUD.DOES_BLIP_EXIST(arBlip) then
arLoc = HUD.GET_BLIP_COORDS(arBlip)
selfTP(false, false, arLoc)
end
end)
end
end
local currArSafeMoney = stats.get_int("MPX_ARCADE_SAFE_CASH_VALUE")
ImGui.Text("Safe: ")
ImGui.SameLine()
ImGui.Dummy(75, 1)
ImGui.SameLine()
ImGui.ProgressBar(currArSafeMoney / 100000, 160, 25, formatMoney(currArSafeMoney))
ImGui.Separator()
end
if stats.get_int("MPX_PROP_SECURITY_OFFICE") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ Agency ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(60, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##agnc") then
script.run_in_fiber(function()
local agncBlip = HUD.GET_FIRST_BLIP_INFO_ID(826)
local agncLoc
if HUD.DOES_BLIP_EXIST(agncBlip) then
agncLoc = HUD.GET_BLIP_COORDS(agncBlip)
selfTP(false, false, agncLoc)
end
end)
end
end
local currAgSafeMoney = stats.get_int("MPX_FIXER_SAFE_CASH_VALUE")
ImGui.Text("Safe: ")
ImGui.SameLine()
ImGui.Dummy(75, 1)
ImGui.SameLine()
ImGui.ProgressBar(currAgSafeMoney / 250000, 160, 25, formatMoney(currAgSafeMoney))
ImGui.Separator()
end
if stats.get_int(MPX() .. "HACKER_DEN_OWNED") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ Hacker Den ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(45, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##hackerden") then
script.run_in_fiber(function()
selfTP(false, false, vec3:new(719.3386, -983.1850, 24.1402))
end)
end
end
local currHdSafeMoney = stats.get_int(MPX() .. "HDEN24_SAFE_CASH_VALUE")
local hdMax = tunables.get_int(-792265290)
if hdMax == 0 then hdMax = 250000 end
ImGui.Text("Safe: ")
ImGui.SameLine()
ImGui.Dummy(75, 1)
ImGui.SameLine()
ImGui.ProgressBar(currHdSafeMoney / hdMax, 160, 25, formatMoney(currHdSafeMoney))
ImGui.Separator()
end
if stats.get_int("MPX_PROP_CLUBHOUSE") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ MC Clubhouse ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(10, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##mc") then
script.run_in_fiber(function()
local mcBlip = HUD.GET_FIRST_BLIP_INFO_ID(492)
local mcLoc
if HUD.DOES_BLIP_EXIST(mcBlip) then
mcLoc = HUD.GET_BLIP_COORDS(mcBlip)
selfTP(false, false, mcLoc)
end
end)
end
end
local currClubHouseBarProfit = stats.get_int("MPX_BIKER_BAR_RESUPPLY_CASH")
ImGui.Text("Bar Earnings: ")
ImGui.SameLine()
ImGui.Dummy(15, 1)
ImGui.SameLine()
ImGui.ProgressBar(currClubHouseBarProfit / 100000, 160, 25, formatMoney(currClubHouseBarProfit))
ImGui.Separator()
end
if stats.get_int("MPX_PROP_BAIL_OFFICE") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ Bail Office ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(40, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##bail") then
script.run_in_fiber(function()
local bailBlip = HUD.GET_FIRST_BLIP_INFO_ID(893)
local bailLoc
if HUD.DOES_BLIP_EXIST(bailBlip) then
bailLoc = HUD.GET_BLIP_COORDS(bailBlip)
bailLoc.y = bailLoc.y + 1.2
selfTP(false, false, bailLoc)
end
end)
end
end
local currBailSafe = stats.get_int("MPX_BAIL_SAFE_CASH_VALUE")
ImGui.Text("Safe: ")
ImGui.SameLine()
ImGui.Dummy(75, 1)
ImGui.SameLine()
ImGui.ProgressBar(currBailSafe / 100000, 160, 25, formatMoney(currBailSafe))
ImGui.Separator()
end
if stats.get_int("MPX_SALVAGE_YARD_OWNED") ~= 0 then
ImGui.Spacing()
ImGui.Spacing()
ImGui.Text("¤ Salvage Yard ¤")
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.SameLine()
ImGui.Dummy(20, 1)
ImGui.SameLine()
if ImGui.Button("Teleport##salvage") then
script.run_in_fiber(function()
local slvgBlip = HUD.GET_FIRST_BLIP_INFO_ID(867)
local slvgLoc
if HUD.DOES_BLIP_EXIST(slvgBlip) then
slvgLoc = HUD.GET_BLIP_COORDS(slvgBlip)
selfTP(false, true, slvgLoc, 180)
end
end)
end
end
local currSalvSafe = stats.get_int("MPX_SALVAGE_SAFE_CASH_VALUE")
ImGui.Text("Safe: ")
ImGui.SameLine()
ImGui.Dummy(75, 1)
ImGui.SameLine()
ImGui.ProgressBar(currSalvSafe / 250000, 160, 25, formatMoney(currSalvSafe))
end
ImGui.Separator()
ImGui.Text("Quick Actions (stats only):")
if ImGui.Button("Clear CarWash / Weed / Heli Heat") then
stats.set_packed_stat_int(24924, 0)
stats.set_packed_stat_int(24925, 0)
stats.set_int(MPX() .. "SALV23_VEH_ROBBERY_WEEK_ID", stats.get_int(MPX() .. "SALV23_WEEK_SYNC"))
gui.show_message("YimResupplier", "Heat cleared.")
end
if ImGui.Button("Max Salvage Income") then
stats.set_packed_stat_int(51051, 100)
gui.show_message("YimResupplier", "Salvage income set.")
end
ImGui.Text("Live upgrades (auto-read, manual boxes kept):")
for i = 0, 4 do
local setup = stats.get_int(MPX() .. "FACTORYSETUP" .. i)
local upg = stats.get_int(MPX() .. "FACTORYUPGRADES" .. i)
ImGui.Text("Factory " .. i .. " setup=" .. tostring(setup) .. " upgrades=" .. tostring(upg))
end
if INTERIOR.GET_INTERIOR_FROM_ENTITY(self.get_ped()) == 0 then
ImGui.Dummy(1, 10)
coloredText("WARNING!\10Teleport buttons might be broken in public sessions.", 40, { 255, 204, 0, 0.8 })
end
ImGui.EndTabItem()
end
else
ImGui.Text("\nUnavailable in Single Player.\n\n")
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ReportsMenu = makeOnlineTab(L7NEG:add_tab("Reports Menu"))
ReportsMenu:add_imgui(function()
if isOffline() then
return
end
ImGui.Text("Griefing: " .. stats.get_int("MPPLY_GRIEFING"))
ImGui.Text("Exploiting: " .. stats.get_int("MPPLY_EXPLOITS"))
ImGui.Text("Abusing Bugs: " .. stats.get_int("MPPLY_GAME_EXPLOITS"))
ImGui.Text("Annoying People In Text: " .. stats.get_int("MPPLY_TC_ANNOYINGME"))
ImGui.Text("Hate Speech In Voice: " .. stats.get_int("MPPLY_VC_HATE"))
ImGui.Text("Offensive Language: " .. stats.get_int("MPPLY_OFFENSIVE_LANGUAGE"))
ImGui.Text("Offensive Tagplate: " .. stats.get_int("MPPLY_OFFENSIVE_TAGPLATE"))
ImGui.Text("Offensive Content: " .. stats.get_int("MPPLY_OFFENSIVE_UGC"))
ImGui.Text("Bad Crew Name: " .. stats.get_int("MPPLY_BAD_CREW_NAME"))
ImGui.Text("Bad Crew Motto: " .. stats.get_int("MPPLY_BAD_CREW_MOTTO"))
ImGui.Text("Bad Crew Status: " .. stats.get_int("MPPLY_BAD_CREW_STATUS"))
ImGui.Text("Bad Crew Emblem: " .. stats.get_int("MPPLY_BAD_CREW_EMBLEM"))
ImGui.Separator()
ImGui.Text("Now onto your commends:")
ImGui.Separator()
ImGui.Text("Friendly: " .. stats.get_int("MPPLY_FRIENDLY"))
ImGui.Text("Helpful: " .. stats.get_int("MPPLY_HELPFUL"))
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WareHouseDataEditorMenu = L7NEG7:add_tab("WareHouse Data Editor")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WareHouseDataEditorMenu:add_button("Auto-Reset stats-0/0Sales", function()
stats.set_int(MPX() .. "LIFETIME_BUY_COMPLETE", 0)
stats.set_int(MPX() .. "LIFETIME_BUY_UNDERTAKEN", 0)
stats.set_int(MPX() .. "LIFETIME_SELL_COMPLETE", 0)
stats.set_int(MPX() .. "LIFETIME_SELL_UNDERTAKEN", 0)
stats.set_int(MPX() .. "LIFETIME_CONTRA_EARNINGS", 0)
globals.set_int(CSg1, 11)
globals.set_int(CSg2, 1)
script:sleep(300)
globals.set_int(CSg2, 0)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
L7NEG7N = L7NEG7:add_tab("Tutorial ReadMe")
L7NEG7N:add_text(" Ceo Crates Method ")
L7NEG7N:add_text(" First Enter Your Warehouse ")
L7NEG7N:add_text(" Then Stand In Front Of Your Warehouse Computer And Then Active The Enable Ceo Manager ")
L7NEG7N:add_text("https://l7neg.is-a.dev/discord")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HeistsDataEditorMenu = makeOnlineTab(L7NEG:add_tab("Heists Data Editor Menu"))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
local ApartmentDataEditorMenu = HeistsDataEditorMenu:add_tab("Apartment Heist")
ApartmentDataEditorMenu:add_text("Preps")
ApartmentDataEditorMenu:add_button("Complete Preps", function()
stats.set_int(MPX() .. "HEIST_PLANNING_STAGE", -1)
gui.show_message("Apartment Heist", "Preps should've been completed")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_text("")
ApartmentDataEditorMenu:add_text("For Fleeca:")
ApartmentDataEditorMenu:add_text(
'Pay for the preparation, start the first mission and as soon as you are sent to scout\nchange the session, come back to planning room, press "Complete Preps" near white board and press "E"'
)
ApartmentDataEditorMenu:add_text("For Other Heist:")
ApartmentDataEditorMenu:add_text(
'Start the mission and leave after the 1st cutscene ends, press "Complete Preps" near white board and press "E"'
)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_button("Kill Cooldown", function()
globals.set_int(ACDg + 1 + (PLAYER.PLAYER_ID() * 77) + 76, -1)
gui.show_message("Apartment Heist", "Cooldown should've been killed")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Change Session", function()
changeSession(8)
end)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_text("Team Lives:")
local livesValueApartment = ApartmentDataEditorMenu:add_input_int("Lives")
livesValueApartment:set_value(3)
ApartmentDataEditorMenu:add_button("Set Lives", function()
local v = livesValueApartment:get_value()
if v < 1 then
gui.show_message("Apartment Heist", "Lives must be at least 1!")
else
locals.set_int(FMC, AHLIVESL, v)
gui.show_message("Apartment Heist", "Team lives set to " .. v)
end
end)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_text(
"Works only for you. Allows you to get 12 millions bonus for The Pacific Standard Job on hard difficulty.\nEnable before starting the heist. Has a cooldown."
)
local apartmentBonus = ApartmentDataEditorMenu:add_checkbox("12mil Bonus")
local previousState = false
script.register_looped("SN_Apartment_Bonus", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
return
end
local currentState = apartmentBonus:is_enabled()
if currentState ~= previousState then
stats.set_int(joaat("MPPLY_HEISTFLOWORDERPROGRESS"), currentState and 268435455 or 134217727)
stats.set_bool(joaat("MPPLY_AWD_HST_ORDER"), not currentState)
stats.set_int(joaat("MPPLY_HEISTTEAMPROGRESSBITSET"), currentState and 268435455 or 134217727)
stats.set_bool(joaat("MPPLY_AWD_HST_SAME_TEAM"), not currentState)
stats.set_int(joaat("MPPLY_HEISTNODEATHPROGREITSET"), currentState and 268435455 or 134217727)
stats.set_bool(joaat("MPPLY_AWD_HST_ULT_CHAL"), not currentState)
gui.show_message(
"12mil Bonus",
currentState and "Bonus should've been applied. Don't forget about difficulty"
or "Bonus should've been unapplied"
)
previousState = currentState
end
script:sleep(100)
end)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_button("3mil Payout", function()
local perPlayer, key = SN_ApartmentMaxCutCherax(false)
if perPlayer then
local isFleeca = (key == 1328892776)
SN_ApplyApartmentCutsCherax(perPlayer, perPlayer, perPlayer, perPlayer, isFleeca)
gui.show_message("Apartment Heist", "Cuts should've been applied")
else
gui.show_message("Apartment Heist", "Unknown heist/difficulty")
end
end)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_text("Cuts:")
local apartCut1 = ApartmentDataEditorMenu:add_input_int("Player 1")
local apartCut2 = ApartmentDataEditorMenu:add_input_int("Player 2")
local apartCut3 = ApartmentDataEditorMenu:add_input_int("Player 3")
local apartCut4 = ApartmentDataEditorMenu:add_input_int("Player 4")
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_text("Board Limits:")
ApartmentDataEditorMenu:add_text("Raise before Apply Cuts for over-100% cuts. Reset after the heist.")
local boardCeiling = ApartmentDataEditorMenu:add_input_int("Ceiling")
boardCeiling:set_value(3000000)
local boardCap = ApartmentDataEditorMenu:add_input_int("Max Cut %")
boardCap:set_value(70)
ApartmentDataEditorMenu:add_button("Apply Custom Limits", function()
tunables.set_int("HEIST_PLANNING_SANITY_CEILING", boardCeiling:get_value())
tunables.set_int("MAX_HEIST_CUT_AMOUNT", boardCap:get_value())
gui.show_message("Apartment Heist", "Ceiling: " .. boardCeiling:get_value() .. " Cap: " .. boardCap:get_value())
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Raise Board Limits", function()
tunables.set_int("HEIST_PLANNING_SANITY_CEILING", 10000000)
tunables.set_int("MAX_HEIST_CUT_AMOUNT", 100)
gui.show_message("Apartment Heist", "Board limits should've been raised")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Reset Board Limits", function()
tunables.set_int("HEIST_PLANNING_SANITY_CEILING", 3000000)
tunables.set_int("MAX_HEIST_CUT_AMOUNT", 70)
gui.show_message("Apartment Heist", "Board limits should've been reset")
end)
ApartmentDataEditorMenu:add_button("Read Board Limits", function()
local ceiling = tunables.get_int("HEIST_PLANNING_SANITY_CEILING")
local cap = tunables.get_int("MAX_HEIST_CUT_AMOUNT")
gui.show_message("Apartment Heist", "Ceiling: " .. ceiling .. " Cap: " .. cap)
end)
ApartmentDataEditorMenu:add_button("Apply Cuts", function()
local heistType = 0
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMMCL)) > 0 then
heistType = locals.get_int(FMMCL, HGGs1)
end
local key = globals.get_int(ACDg + (PLAYER.PLAYER_ID() * 77) + 24 + 2)
local isFleeca = (heistType == 1328892776) or (key == 1328892776)
SN_ApplyApartmentCutsCherax(apartCut1:get_value(), apartCut2:get_value(), apartCut3:get_value(), apartCut4:get_value(), isFleeca)
gui.show_message("Apartment Heist", "Cuts should've been applied")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Read Cuts", function()
local b1 = globals.get_int(ACg1)
local b2 = globals.get_int(ACg2)
local b3 = globals.get_int(ACg3)
local b4 = globals.get_int(ACg4)
local a1 = globals.get_int(ACg5)
local a2 = globals.get_int(ACg6)
local a3 = globals.get_int(ACg7)
local a4 = globals.get_int(ACg8)
gui.show_message("Apartment Heist", "Board: " .. b1 .. "/" .. b2 .. "/" .. b3 .. "/" .. b4 .. " Actual: " .. a1 .. "/" .. a2 .. "/" .. a3 .. "/" .. a4)
end)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_text("Presets:")
ApartmentDataEditorMenu:add_button("All - 0%", function()
apartCut1:set_value(0)
apartCut2:set_value(0)
apartCut3:set_value(0)
apartCut4:set_value(0)
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("All - 25%", function()
apartCut1:set_value(25)
apartCut2:set_value(25)
apartCut3:set_value(25)
apartCut4:set_value(25)
end)
ApartmentDataEditorMenu:add_button("All - 85%", function()
apartCut1:set_value(85)
apartCut2:set_value(85)
apartCut3:set_value(85)
apartCut4:set_value(85)
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("All - 100%", function()
apartCut1:set_value(100)
apartCut2:set_value(100)
apartCut3:set_value(100)
apartCut4:set_value(100)
end)
ApartmentDataEditorMenu:add_separator()
ApartmentDataEditorMenu:add_text("Extras")
ApartmentDataEditorMenu:add_button("Bypass Fleeca Hack", function()
locals.set_int(FMC, AFHl, 7)
gui.show_message("Apartment Heist", "Hacking process should've been skipped")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Bypass Fleeca Drill", function()
locals.set_float(FMC, AFDl, 100)
gui.show_message("Apartment Heist", "Drilling process should've been skipped")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Bypass Pacific Hack", function()
locals.set_int(FMC, AFPl, 9)
gui.show_message("Apartment Heist", "Hacking process should've been skipped")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Skip Checkpoint", function()
locals.set_int(FMC, AHSo, locals.get_int(FMC, AHSo) | (1 << 17))
gui.show_message("Apartment Heist", "Checkpoint should've been skipped")
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Unlock All Jobs", function()
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_0", tunables.get_int("ROOT_ID_HASH_THE_FLECCA_JOB"))
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_0_L", 5)
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_1", tunables.get_int("ROOT_ID_HASH_THE_PRISON_BREAK"))
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_1_L", 5)
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_2", tunables.get_int("ROOT_ID_HASH_THE_HUMANE_LABS_RAID"))
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_2_L", 5)
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_3", tunables.get_int("ROOT_ID_HASH_SERIES_A_FUNDING"))
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_3_L", 5)
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_4", tunables.get_int("ROOT_ID_HASH_THE_PACIFIC_STANDARD_JOB"))
stats.set_int(MPX() .. "HEIST_SAVED_STRAND_4_L", 5)
gui.show_message("Apartment Heist", "All jobs should've been unlocked. Don't forget to restart the game")
end)
local soloLaunchToggle = ApartmentDataEditorMenu:add_checkbox("Solo Launch")
script.register_looped("SN_Apartment_SoloLaunch", function(s)
s:yield()
if not soloLaunchToggle:is_enabled() then
s:sleep(500)
return
end
if not network.is_session_started() or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0 then
s:sleep(500)
return
end
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMMCL)) > 0 then
local idx = locals.get_int(FMMCL, HGGs1)
if idx ~= nil and idx > 0 then
locals.set_int(FMMCL, HGGs2, 1)
globals.set_int(794989 + 4 + 1 + (idx * 95) + 75, 1)
end
end
globals.set_int(HGLs1, 1)
globals.set_int(4718592 + 3775 + 1, 1)
globals.set_int(HGLs4, 0)
globals.set_int(HGLs2, 1)
globals.set_int(HGLs3, 1)
s:sleep(500)
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Skip Cutscene", SkipCutscene)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Force Ready", function()
script.run_in_fiber(function(script)
network.force_script_host(FMC)
script:sleep(1000)
for i = 0, 3 do
globals.set_int(AFRg + 1 + (i * 468) + 270, 6)
end
gui.show_message("Apartment Heist", "Everyone should've been forced ready")
end)
end)
ApartmentDataEditorMenu:add_sameline()
ApartmentDataEditorMenu:add_button("Instant Finish", function()
script.run_in_fiber(function(s)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
gui.show_message("Apartment Heist", "Start the finale first!")
return
end
network.force_script_host(FMC)
s:sleep(500)
for i = 0, 5 do
globals.set_string(4718592 + 133252 + 1 + i * 6, "", 0)
end
locals.set_int(FMC, AIFl2, 5)
locals.set_int(FMC, 19808 + 1232 + 1, 999999)
local bits = locals.get_int(FMC, 19808 + 1)
bits = bits | (1 << 9) | (1 << 16)
locals.set_int(FMC, 19808 + 1, bits)
gui.show_message("Apartment Heist", "Heist finished. Wait for load!")
end)
end)
ApartmentDataEditorMenu:add_text("")
ApartmentDataEditorMenu:add_text("Note: After Clicking Unlock All Heists, restart the game")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Agency tab
local AgencyContracts = {
{ name = "None", index = 3 },
{ name = "Nightclub", index = 4 },
{ name = "Marina", index = 12 },
{ name = "Nightlife Leak", index = 28 },
{ name = "Country Club", index = 60 },
{ name = "Guest List", index = 123 },
{ name = "High Society Leak", index = 254 },
{ name = "Davis", index = 508 },
{ name = "Ballas", index = 1020 },
{ name = "South Central Leak", index = 2044 },
{ name = "Studio Time", index = 2045 },
{ name = "Don't Fuck With Dre", index = 4095 },
}
local contractNames = {}
for i, contract in ipairs(AgencyContracts) do
table.insert(contractNames, contract.name)
end
local sContract = 0
local SN_Agency = HeistsDataEditorMenu:add_tab("Agency")
SN_Agency:add_text("Money")
local agencySafe = SN_Agency:add_checkbox("Agency Safe Loop")
script.register_looped("agencyloop", function(script)
script:yield()
if agencySafe:is_enabled() == true then
stats.set_int(MPX() .. "FIXER_COUNT", 500)
stats.set_int(MPX() .. "FIXER_PASSIVE_PAY_TIME_LEFT", -1)
script:sleep(1000)
else
script:sleep(500)
end
end)
SN_Agency:add_separator()
SN_Agency:add_imgui(function()
ImGui.Text("Contract:")
ImGui.SetNextItemWidth(200)
local nSelected, clicked = ImGui.Combo("##AgencyContract", sContract, contractNames, #contractNames)
if clicked then
sContract = nSelected
local contractD = AgencyContracts[sContract + 1]
local contractId = contractD.index
stats.set_int(MPX() .. "FIXER_STORY_BS", contractId)
if contractId < 18 then
stats.set_int(MPX() .. "FIXER_STORY_STRAND", 0)
elseif contractId < 128 then
stats.set_int(MPX() .. "FIXER_STORY_STRAND", 1)
elseif contractId < 2044 then
stats.set_int(MPX() .. "FIXER_STORY_STRAND", 2)
else
stats.set_int(MPX() .. "FIXER_STORY_STRAND", -1)
end
end
end)
SN_Agency:add_button("Complete Preps", function()
stats.set_int(MPX() .. "FIXER_GENERAL_BS", -1)
stats.set_int(MPX() .. "FIXER_COMPLETED_BS", -1)
stats.set_int(MPX() .. "FIXER_STORY_COOLDOWN", -1)
gui.show_message("Agency", "Preps should've been completed")
end)
SN_Agency:add_separator()
SN_Agency:add_text("Payouts:")
local agencyPayoutValue = 0
SN_Agency:add_imgui(function()
agencyPayoutValue, _ = ImGui.InputInt("##AgencyPayout", agencyPayoutValue)
end)
SN_Agency:add_button("Max", function()
agencyPayoutValue = 2500000
gui.show_message("Agency", "Payout should've been maximized. Don't forget to apply")
end)
SN_Agency:add_button("Apply Payout", function()
local payout = agencyPayoutValue
tunables.set_int("FIXER_FINALE_LEADER_CASH_REWARD", payout)
gui.show_message("Agency", "Payout should've been applied")
end)
SN_Agency:add_text("Use 'Apply Payout' after you can see the minimap.")
SN_Agency:add_separator()
SN_Agency:add_button("Instant Finish", function()
locals.set_int(FMC2020, AGFl1, 51338752)
locals.set_int(FMC2020, AGFl2, 50)
gui.show_message("Agency", "Heist should've been finished")
end)
SN_Agency:add_sameline()
SN_Agency:add_button("Skip Cutscene", SkipCutscene)
SN_Agency:add_sameline()
SN_Agency:add_button("Kill Cooldowns", function()
tunables.set_int("FIXER_STORY_COOLDOWN_POSIX", 0)
tunables.set_int("FIXER_SECURITY_CONTRACT_COOLDOWN_TIME", 0)
tunables.set_int("REQUEST_FRANKLIN_PAYPHONE_HIT_COOLDOWN", 0)
stats.set_int(MPX() .. "FIXER_STORY_COOLDOWN", -1)
gui.show_message("Agency", "Cooldowns should've been killed")
end)
SN_Agency:add_separator()
SN_Agency:add_text("After All choices and pressing Complete Preps wait for sometime")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Autoshop tab
local AutoShopContracts = {
{ name = "None", index = -1 },
{ name = "Union Deposit.", index = 0 },
{ name = "Superdol. Deal", index = 1 },
{ name = "Bank Contract", index = 2 },
{ name = "ECU Job", index = 3 },
{ name = "Prison Contrac.", index = 4 },
{ name = "Agency Deal", index = 5 },
{ name = "Lost Contract", index = 6 },
{ name = "Data Contract", index = 7 },
}
local autoSelectedIndex = 0
local SN_Autoshop = HeistsDataEditorMenu:add_tab("Autoshop")
SN_Autoshop:add_imgui(function()
ImGui.Text("Contract:")
autoSelectedIndex = ImGui.Combo(
"##AutoContract",
autoSelectedIndex,
{
AutoShopContracts[1].name,
AutoShopContracts[2].name,
AutoShopContracts[3].name,
AutoShopContracts[4].name,
AutoShopContracts[5].name,
AutoShopContracts[6].name,
AutoShopContracts[7].name,
AutoShopContracts[8].name,
AutoShopContracts[9].name,
},
9
)
end)
SN_Autoshop:add_button("Apply & Complete Preps", function()
local contract = AutoShopContracts[autoSelectedIndex + 1].index
stats.set_int(MPX() .. "TUNER_CURRENT", contract)
stats.set_int(MPX() .. "TUNER_GEN_BS", (contract == 1 and 4351 or 12543))
locals.set_int(TUNERPL, ASRBl, 2)
gui.show_message("Autoshop", "Preps should've been completed")
end)
SN_Autoshop:add_button("Reset Preps", function()
stats.set_int(MPX() .. "TUNER_GEN_BS", 12467)
locals.set_int(TUNERPL, ASRBl, 2)
gui.show_message("Autoshop", "Preps should've been reset")
end)
SN_Autoshop:add_button("Redraw Board", function()
locals.set_int(TUNERPL, ASRBl, 2)
gui.show_message("Autoshop", "Board should've been redrawn")
end)
SN_Autoshop:add_separator()
SN_Autoshop:add_text("Payouts:")
local autoPayoutValue = 0
SN_Autoshop:add_imgui(function()
autoPayoutValue, _ = ImGui.InputInt("##AutoPayout", autoPayoutValue)
end)
SN_Autoshop:add_button("Max", function()
autoPayoutValue = 2000000
gui.show_message("Autoshop", "Payout should've been maximized. Don't forget to apply")
end)
SN_Autoshop:add_button("Apply Payout", function()
local payout = autoPayoutValue
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD0", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD1", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD2", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD3", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD4", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD5", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD6", payout)
tunables.set_int("TUNER_ROBBERY_LEADER_CASH_REWARD7", payout)
tunables.set_float("TUNER_ROBBERY_CONTACT_FEE", 0.0)
gui.show_message("Autoshop", "Payout should've been applied")
end)
SN_Autoshop:add_text("Use 'Apply Payout' after you can see the minimap.")
SN_Autoshop:add_separator()
SN_Autoshop:add_text("Extras")
SN_Autoshop:add_button("Instant Finish", function()
locals.set_int(FMC2020, ASIFl1, 51338977)
locals.set_int(FMC2020, ASIFl2, 101)
gui.show_message("Autoshop", "Heist should've been finished")
end)
SN_Autoshop:add_sameline()
SN_Autoshop:add_button("Skip Cutscene", SkipCutscene)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Salvage Yard --
local SalvageYard = {
robberies = {
{ name = "Cargo Ship", index = 0 },
{ name = "Gangbanger", index = 1 },
{ name = "Duggan", index = 2 },
{ name = "Podium", index = 3 },
{ name = "McTony", index = 4 },
},
vehicles = {
{ name = "LM87", index = 1 },
{ name = "Cinquemila", index = 2 },
{ name = "Autarch", index = 3 },
{ name = "Tigon", index = 4 },
{ name = "Champion", index = 5 },
{ name = "10F", index = 6 },
{ name = "SM722", index = 7 },
{ name = "Omnis e-GT", index = 8 },
{ name = "Growler", index = 9 },
{ name = "Deity", index = 10 },
{ name = "Itali RSX", index = 11 },
{ name = "Coquette D10", index = 12 },
{ name = "Jubilee", index = 13 },
{ name = "Astron", index = 14 },
{ name = "Comet S2 Cabr.", index = 15 },
{ name = "Torero", index = 16 },
{ name = "Cheetah Classic", index = 17 },
{ name = "Turismo Classic", index = 18 },
{ name = "Infernus Classic", index = 19 },
{ name = "Stafford", index = 20 },
{ name = "GT500", index = 21 },
{ name = "Viseris", index = 22 },
{ name = "Mamba", index = 23 },
{ name = "Coquette Black.", index = 24 },
{ name = "Stinger GT", index = 25 },
{ name = "Z-Type", index = 26 },
{ name = "Broadway", index = 27 },
{ name = "Vigero ZX", index = 28 },
{ name = "Buffalo STX", index = 29 },
{ name = "Ruston", index = 30 },
{ name = "Gauntl. Hellfire", index = 31 },
{ name = "Dominator GTT", index = 32 },
{ name = "Roosevelt Valor", index = 33 },
{ name = "Swinger", index = 34 },
{ name = "Stirling GT", index = 35 },
{ name = "Omnis", index = 36 },
{ name = "Tropos Rallye", index = 37 },
{ name = "Jugular", index = 38 },
{ name = "Patriot Mil-Spec", index = 39 },
{ name = "Toros", index = 40 },
{ name = "Caracara 4x4", index = 41 },
{ name = "Sentinel Classic", index = 42 },
{ name = "Weevil", index = 43 },
{ name = "Blista Kanjo", index = 44 },
{ name = "Eudora", index = 45 },
{ name = "Kamacho", index = 46 },
{ name = "Hellion", index = 47 },
{ name = "Ellie", index = 48 },
{ name = "Hermes", index = 49 },
{ name = "Hustler", index = 50 },
{ name = "Turismo Om.", index = 51 },
{ name = "Buffalo EVX", index = 52 },
{ name = "Itali GTO St.", index = 53 },
{ name = "Virtue", index = 54 },
{ name = "Ignus", index = 55 },
{ name = "Zentorno", index = 56 },
{ name = "Neon", index = 57 },
{ name = "Furia", index = 58 },
{ name = "Zorrusso", index = 59 },
{ name = "Thrax", index = 60 },
{ name = "Vagner", index = 61 },
{ name = "Panthere", index = 62 },
{ name = "Itali GTO", index = 63 },
{ name = "S80RR", index = 64 },
{ name = "Tyrant", index = 65 },
{ name = "Entity MT", index = 66 },
{ name = "Torero XO", index = 67 },
{ name = "Neo", index = 68 },
{ name = "Corsita", index = 69 },
{ name = "Paragon R", index = 70 },
{ name = "Franken Stange", index = 71 },
{ name = "Comet Safari", index = 72 },
{ name = "FR36", index = 73 },
{ name = "Hotring Everon", index = 74 },
{ name = "Komoda", index = 75 },
{ name = "Tailgater S", index = 76 },
{ name = "Jester Classic", index = 77 },
{ name = "Jester RR", index = 78 },
{ name = "Euros", index = 79 },
{ name = "ZR350", index = 80 },
{ name = "Cypher", index = 81 },
{ name = "Dominator ASP", index = 82 },
{ name = "Baller ST-D", index = 83 },
{ name = "Casco", index = 84 },
{ name = "Drift Yosemite", index = 85 },
{ name = "Everon", index = 86 },
{ name = "Penumbra FF", index = 87 },
{ name = "V-STR", index = 88 },
{ name = "Dominator GT", index = 89 },
{ name = "Schlagen GT", index = 90 },
{ name = "Cavalcade XL", index = 91 },
{ name = "Clique", index = 92 },
{ name = "Boor", index = 93 },
{ name = "Sugoi", index = 94 },
{ name = "Greenwood", index = 95 },
{ name = "Brigham", index = 96 },
{ name = "Issi Rally", index = 97 },
{ name = "Seminole Fr.", index = 98 },
{ name = "Kanjo SJ", index = 99 },
{ name = "Previon", index = 100 },
},
modifications = {
{ name = "Version 1", index = 0 },
{ name = "Version 2", index = 1 },
{ name = "Version 3", index = 2 },
{ name = "Version 4", index = 3 },
{ name = "Version 5", index = 4 },
},
keeps = {
{ name = "Can't Claim", index = 0 },
{ name = "Can Claim", index = 1 },
},
tunables = {
robbery_slot1_type = 1152433341,
robbery_slot2_type = 852564222,
robbery_slot3_type = 552662330,
vehicle_slot1_type = -1012732012,
vehicle_slot1_value = -1699398139,
vehicle_slot1_cankeep = -1700733442,
vehicle_slot2_type = 1366330161,
vehicle_slot2_value = -1997104504,
vehicle_slot2_cankeep = -1547046832,
vehicle_slot3_type = 1806057372,
vehicle_slot3_value = -1704051341,
vehicle_slot3_cankeep = 1830093543,
cooldown_weekly = "SALV23_VEH_ROBBERY_WEEK_ID",
},
salvage_missions = {
{ script = "fm_content_vehrob_cargo_ship", step1 = 7185 + 1, step2 = 7330 + 1249 },
{ script = "fm_content_vehrob_police", step1 = 9011 + 1, step2 = 9144 + 1305 },
{ script = "fm_content_vehrob_arena", step1 = 7912 + 1, step2 = 8032 + 1314 },
{ script = "fm_content_vehrob_casino_prize", step1 = 9191 + 1, step2 = 9328 + 1258 },
{ script = "fm_content_vehrob_submarine", step1 = 6218 + 1, step2 = 6356 + 1159 },
},
}
local slot_names = { "Slot 1", "Slot 2", "Slot 3" }
local slot1 = {
robbery_index = 0,
vehicle_index = 0,
mod_index = 0,
keep_index = 0,
}
local slot2 = {
robbery_index = 0,
vehicle_index = 0,
mod_index = 0,
keep_index = 0,
}
local slot3 = {
robbery_index = 0,
vehicle_index = 0,
mod_index = 0,
keep_index = 0,
}
local robbery_names = {}
for _, robbery in ipairs(SalvageYard.robberies) do
table.insert(robbery_names, robbery.name)
end
local vehicle_names = {}
for _, vehicle in ipairs(SalvageYard.vehicles) do
table.insert(vehicle_names, vehicle.name)
end
local mod_names = {}
for _, mod in ipairs(SalvageYard.modifications) do
table.insert(mod_names, mod.name)
end
local keep_names = {}
for _, keep in ipairs(SalvageYard.keeps) do
table.insert(keep_names, keep.name)
end
local ssIndex = 0
local SN_Salvage = HeistsDataEditorMenu:add_tab("Salvage Yard")
SN_Salvage:add_imgui(function()
local nIndex, changed = ImGui.Combo("##Slot", ssIndex, slot_names, #slot_names)
if changed then
ssIndex = nIndex
end
local currSlot = ssIndex + 1
local slots = { slot1, slot2, slot3 }
local slot = slots[currSlot]
local nIndex, changed = ImGui.Combo("Robbery", slot.robbery_index, robbery_names, #robbery_names)
if changed then
slot.robbery_index = nIndex
gui.show_message(
"Salvage Yard",
"Selected " .. slot_names[ssIndex + 1] .. " robbery: " .. robbery_names[slot.robbery_index + 1]
)
end
nIndex, changed = ImGui.Combo("Vehicle", slot.vehicle_index, vehicle_names, #vehicle_names)
if changed then
slot.vehicle_index = nIndex
gui.show_message(
"Salvage Yard",
"Selected " .. slot_names[ssIndex + 1] .. " vehicle: " .. vehicle_names[slot.vehicle_index + 1]
)
end
nIndex, changed = ImGui.Combo("Modification", slot.mod_index, mod_names, #mod_names)
if changed then
slot.mod_index = nIndex
gui.show_message(
"Salvage Yard",
"Selected " .. slot_names[ssIndex + 1] .. " modification: " .. mod_names[slot.mod_index + 1]
)
end
nIndex, changed = ImGui.Combo("Status", slot.keep_index, keep_names, #keep_names)
if changed then
slot.keep_index = nIndex
gui.show_message(
"Salvage Yard",
"Selected " .. slot_names[ssIndex + 1] .. " status: " .. keep_names[slot.keep_index + 1]
)
end
if ImGui.Button("Apply Changes") then
local robbery = SalvageYard.robberies[slot.robbery_index + 1].index
local vehicle = SalvageYard.vehicles[slot.vehicle_index + 1].index
local mod = SalvageYard.modifications[slot.mod_index + 1].index
local keep = SalvageYard.keeps[slot.keep_index + 1].index
tunables.set_int(SalvageYard.tunables["robbery_slot" .. currSlot .. "_type"], robbery)
tunables.set_int(SalvageYard.tunables["vehicle_slot" .. currSlot .. "_type"], vehicle + mod * 100)
tunables.set_int(SalvageYard.tunables["vehicle_slot" .. currSlot .. "_cankeep"], keep)
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", slot_names[ssIndex + 1] .. " changes should've been applied")
end
ImGui.SameLine()
if ImGui.Button("Make Available") then
stats.set_int(MPX() .. "SALV23_VEHROB_STATUS" .. (currSlot - 1), 0)
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", slot_names[ssIndex + 1] .. " should've been made Available")
end
end)
SN_Salvage:add_text("")
SN_Salvage:add_text("Preps")
SN_Salvage:add_separator()
SN_Salvage:add_button("Complete Preps", function()
stats.set_int(MPX() .. "SALV23_GEN_BS", -1)
stats.set_int(MPX() .. "SALV23_SCOPE_BS", -1)
stats.set_int(MPX() .. "SALV23_FM_PROG", -1)
stats.set_int(MPX() .. "SALV23_INST_PROG", -1)
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", "Preps should've been completed")
end)
SN_Salvage:add_sameline()
SN_Salvage:add_button("Reset Preps", function()
stats.set_int(MPX() .. "SALV23_GEN_BS", 0)
stats.set_int(MPX() .. "SALV23_SCOPE_BS", 0)
stats.set_int(MPX() .. "SALV23_FM_PROG", 0)
stats.set_int(MPX() .. "SALV23_INST_PROG", 0)
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", "Preps should've been reset")
end)
SN_Salvage:add_button("Reload Screen", function()
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", "Screen should've been reloaded")
end)
SN_Salvage:add_button("Skip Weekly Cooldown", function()
tunables.set_int(SalvageYard.tunables.cooldown_weekly, stats.get_int(MPX() .. "SALV23_WEEK_SYNC") + 1)
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", "Cooldown should've been skipped")
end)
SN_Salvage:add_separator()
SN_Salvage:add_text("Payout")
local sell_value_slot1 = SN_Salvage:add_input_int("Sell Value Slot 1")
sell_value_slot1:set_value(0)
local sell_value_slot2 = SN_Salvage:add_input_int("Sell Value Slot 2")
sell_value_slot2:set_value(0)
local sell_value_slot3 = SN_Salvage:add_input_int("Sell Value Slot 3")
sell_value_slot3:set_value(0)
SN_Salvage:add_button("Apply Sell Values", function()
tunables.set_int(SalvageYard.tunables.vehicle_slot1_value, sell_value_slot1:get_value())
tunables.set_int(SalvageYard.tunables.vehicle_slot2_value, sell_value_slot2:get_value())
tunables.set_int(SalvageYard.tunables.vehicle_slot3_value, sell_value_slot3:get_value())
locals.set_int("vehrob_planning", SYRl1, 2)
gui.show_message("Salvage Yard", "Sell values should've been applied")
end)
SN_Salvage:add_text("")
SN_Salvage:add_text("Misc")
SN_Salvage:add_separator()
SN_Salvage:add_button("Instant Finish", function()
for _, mission in ipairs(SalvageYard.salvage_missions) do
local value = locals.get_int(mission.script, mission.step1)
locals.set_int(mission.script, mission.step1, value | (1 << 11))
locals.set_int(mission.script, mission.step2, 2)
end
gui.show_message("Salvage Yard", "Heist should've been finished")
end)
SN_Salvage:add_sameline()
SN_Salvage:add_button("Instant Sell", function()
local player_ped = PLAYER.PLAYER_PED_ID()
PED.SET_PED_COORDS_KEEP_VEHICLE(player_ped, 1169.0, -2976.0, 6.0)
gui.show_message("Salvage Yard", "Sell mission should've been finished")
end)
SN_Salvage:add_sameline()
SN_Salvage:add_button("Skip Cutscene", SkipCutscene)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Cluckin Bell --
local cluckperps = {
{ id = 0, name = "Slush Fund" },
{ id = 1, name = "Breaking and Entering" },
{ id = 3, name = "Concealed Rewards" },
{ id = 7, name = "Hit And Run" },
{ id = 15, name = "Disorganized Crime" },
{ id = 31, name = "Scene of Crime" },
}
local SN_Cluck = HeistsDataEditorMenu:add_tab("Cluckin Bell Heist")
SN_Cluck:add_text("Complete Preps")
for _, cluckprep in ipairs(cluckperps) do
SN_Cluck:add_button(cluckprep.name, function()
stats.set_int(MPX() .. "SALV23_INST_PROG", cluckprep.id)
end)
SN_Cluck:add_sameline()
end
SN_Cluck:add_separator()
SN_Cluck:add_text("Reset preps")
SN_Cluck:add_button("Reset Preps", function()
stats.set_int(MPX() .. "SALV23_INST_PROG", 0)
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Doomsday --
function DoomsdayActSetter(progress, status)
stats.set_int(MPX() .. "GANGOPS_FLOW_MISSION_PROG", progress)
stats.set_int(MPX() .. "GANGOPS_HEIST_STATUS", status)
stats.set_int(MPX() .. "GANGOPS_FLOW_NOTIFICATIONS", 1557)
end
local SN_Doomsday = HeistsDataEditorMenu:add_tab("Doomsday Heist")
SN_Doomsday:add_text("Doomsday Acts")
SN_Doomsday:add_button("Data Breaches", function()
DoomsdayActSetter(503, 229383)
end)
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Bogdan Problem", function()
DoomsdayActSetter(240, 229378)
end)
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Doomsday Scenario", function()
DoomsdayActSetter(16368, 229380)
end)
local DoomsdayHeists = {
[503] = { 975000, 1218750 },
[240] = { 1425000, 1771250 },
[16368] = { 1800000, 2250000 },
}
function SetDoomsdayMaxPayout()
local heist = stats.get_int(MPX() .. "GANGOPS_FLOW_MISSION_PROG")
local difficulty = globals.get_int(AHDg)
if difficulty == 0 then
difficulty = 1
end
local heistData = DoomsdayHeists[heist]
if heistData == nil then
return
end
local payout = heistData[difficulty]
local maxPayout = 2550000
local cut = math.floor(maxPayout / (payout / 100))
return cut
end
SN_Doomsday:add_separator()
SN_Doomsday:add_text("Custom Cuts:")
local dmsdyCut1 = SN_Doomsday:add_input_int("Cut 1")
local dmsdyCut2 = SN_Doomsday:add_input_int("Cut 2")
local dmsdyCut3 = SN_Doomsday:add_input_int("Cut 3")
local dmsdyCut4 = SN_Doomsday:add_input_int("Cut 4")
local Presets = {
{ name = "All - 0%", index = 0 },
{ name = "All - 85%", index = 85 },
{ name = "All - 100%", index = 100 },
{ name = "2.55mil Payout", index = -1 },
}
local presetNames = {}
for _, preset in ipairs(Presets) do
table.insert(presetNames, preset.name)
end
local sPresetIndex = 0
SN_Doomsday:add_imgui(function()
ImGui.Text("Presets:")
ImGui.SetNextItemWidth(170)
local nIndex, changed = ImGui.Combo("##DoomsdayPreset", sPresetIndex, presetNames, #presetNames)
if changed then
sPresetIndex = nIndex
local selected = Presets[sPresetIndex + 1]
local cutValue = selected.index
if cutValue == -1 then
cutValue = SetDoomsdayMaxPayout()
end
if dmsdyCut1 then
dmsdyCut1:set_value(cutValue)
end
if dmsdyCut2 then
dmsdyCut2:set_value(cutValue)
end
if dmsdyCut3 then
dmsdyCut3:set_value(cutValue)
end
if dmsdyCut4 then
dmsdyCut4:set_value(cutValue)
end
end
end)
SN_Doomsday:add_button("Apply Cuts", function()
globals.set_int(DCg1, dmsdyCut1:get_value())
globals.set_int(DCg2, dmsdyCut2:get_value())
globals.set_int(DCg3, dmsdyCut3:get_value())
globals.set_int(DCg4, dmsdyCut4:get_value())
gui.show_message("Doomsday Heist", "Cuts should've been applied")
end)
-- Lives Editor for Doomsday Heist
SN_Doomsday:add_separator()
SN_Doomsday:add_text("Team Lives:")
local livesValueDoomsday = 3
SN_Doomsday:add_imgui(function()
if isOffline() then
return
end
ImGui.Text("Team Lives:")
livesValueDoomsday, _ = ImGui.InputInt("##DoomsdayLives", livesValueDoomsday)
if ImGui.Button("Set Lives##Doomsday") then
if livesValueDoomsday < 1 then
gui.show_message("Doomsday Heist", "Lives must be at least 1!")
else
locals.set_int(FMC, DDLIVESL, livesValueDoomsday)
gui.show_message("Doomsday Heist", "Team lives set to " .. livesValueDoomsday)
end
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Default is 3. Infinite team lives for the heist (set to 999999 for unlimited)")
end
end)
SN_Doomsday:add_separator()
SN_Doomsday:add_text("Preps")
SN_Doomsday:add_button("Reset Preps", function()
DoomsdayActSetter(240, 0)
gui.show_message("Doomsday Heist", "Preps should've been reset")
end)
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Complete Preps", function()
stats.set_int(MPX() .. "GANGOPS_FM_MISSION_PROG", -1)
end)
SN_Doomsday:add_separator()
SN_Doomsday:add_text("Extras")
SN_Doomsday:add_button("By Act III Pass hack", function()
locals.set_int(FMC, DDSHl, 3)
end)
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Solo Launch", function()
if locals.get_int(FMMCL, HGGs1) ~= nil then
if locals.get_int(FMMCL, HGGs1) ~= 0 then
if locals.get_int(FMMCL, HGGs1) > 1 then
locals.set_int(FMMCL, HGGs2, 1)
globals.set_int(794989 + 4 + 1 + (locals.get_int(FMMCL, HGGs1) * 95) + 75, 1)
end
globals.set_int(HGLs1, 1)
globals.set_int(HGLs2, 1)
globals.set_int(HGLs3, 1)
globals.set_int(HGLs4, 0)
end
end
end)
SN_Doomsday:add_text("Instant Finish: use Act I/II for Data Breaches/Bogdan, Act III for Doomsday Scenario. HOST only. Wait for area to load or you will fail/crash.")
SN_Doomsday:add_button("Instant Finish (Act I/II)", function()
-- FIX Bug#1: old single button mixed Act I/II (80) + Act III (150) values and never
-- took script host -> teleport to unloaded interior -> crash/fail.
-- Act I/II needs 12 + 80 + 99999 + 99999 (no 150, no passed-flag).
script.run_in_fiber(function(dd)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
gui.show_message("Doomsday Heist", "Start the finale first!")
return
end
network.force_script_host(FMC)
dd:sleep(1000)
locals.set_int(FMC, DDIF1, 12)
locals.set_int(FMC, DDIF5, 80)
locals.set_int(FMC, DDIF3, 99999)
locals.set_int(FMC, DDIF4, 99999)
gui.show_message("Doomsday Heist", "Act I/II should be finished. Wait for load, do NOT skip too fast.")
end)
end)
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Instant Finish (Act III Scenario)", function()
-- FIX Bug#1 Act III: needs 12 + 150 + 5 (passed flag DDIF6) + 99999 + 99999 (no 80).
-- Missing DDIF6=5 was the main cause of End-of-World teleport/fail.
script.run_in_fiber(function(dd3)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
gui.show_message("Doomsday Heist", "Start the Doomsday Scenario finale first!")
return
end
network.force_script_host(FMC)
dd3:sleep(1000)
locals.set_int(FMC, DDIF1, 12)
locals.set_int(FMC, DDIF2, 150)
locals.set_int(FMC, DDIF6, 5)
locals.set_int(FMC, DDIF3, 99999)
locals.set_int(FMC, DDIF4, 99999)
gui.show_message("Doomsday Heist", "Act III should be finished. Wait 10-20s for Mount Chiliad bunker to stream!")
end)
end)
SN_Doomsday:add_text("If teleport fails/loads forever: use Skip Checkpoint instead, or walk to yellow marker before pressing.")
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Force Ready", function()
script.run_in_fiber(function(script)
network.force_script_host(FMC)
script:sleep(1000)
for i = 0, 3 do
globals.set_int(DDFRg + 1 + (i * 321) + 43 + 11 + 1 + i, 1)
end
gui.show_message("Doomsday Heist", "Everyone should've been forced ready")
end)
end)
SN_Doomsday:add_sameline()
SN_Doomsday:add_button("Skip Cutscene", SkipCutscene)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Casino Heist --
local CasinoHeistEditorMenu = HeistsDataEditorMenu:add_tab("Casino Heist")
CasinoHeistEditorMenu:add_text("One Click Setups:")
CasinoHeistEditorMenu:add_button("Casino Silent&Sneaky (Diamonds)", function()
stats.set_int(MPX() .. "H3OPT_APPROACH", 1)
stats.set_int(MPX() .. "H3_LAST_APPROACH", 3)
stats.set_int(MPX() .. "H3OPT_TARGET", 3)
stats.set_int(MPX() .. "H3OPT_BITSET1", 127)
stats.set_int(MPX() .. "H3OPT_DISRUPTSHIP", 3)
stats.set_int(MPX() .. "H3OPT_KEYLEVELS", 2)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE2", -1)
stats.set_int(MPX() .. "H3OPT_CREWWEAP", 4)
stats.set_int(MPX() .. "H3OPT_CREWDRIVER", 5)
stats.set_int(MPX() .. "H3OPT_CREWHACKER", 5)
stats.set_int(MPX() .. "H3OPT_VEHS", 2)
stats.set_int(MPX() .. "H3OPT_WEAPS", 1)
stats.set_int(MPX() .. "H3OPT_BITSET0", 262399)
stats.set_int(MPX() .. "H3OPT_MASKS", 2)
end)
CasinoHeistEditorMenu:add_button("Casino The Big Con (Diamonds)", function()
stats.set_int(MPX() .. "H3OPT_APPROACH", 2)
stats.set_int(MPX() .. "H3_LAST_APPROACH", 3)
stats.set_int(MPX() .. "H3OPT_TARGET", 3)
stats.set_int(MPX() .. "H3OPT_BITSET1", 799)
stats.set_int(MPX() .. "H3OPT_DISRUPTSHIP", 3)
stats.set_int(MPX() .. "H3OPT_KEYLEVELS", 2)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE2", -1)
stats.set_int(MPX() .. "H3OPT_CREWWEAP", 4)
stats.set_int(MPX() .. "H3OPT_CREWDRIVER", 5)
stats.set_int(MPX() .. "H3OPT_CREWHACKER", 5)
stats.set_int(MPX() .. "H3OPT_VEHS", 2)
stats.set_int(MPX() .. "H3OPT_WEAPS", 0)
stats.set_int(MPX() .. "H3OPT_BITSET0", 913623)
stats.set_int(MPX() .. "H3OPT_MASKS", 2)
end)
CasinoHeistEditorMenu:add_button("Casino Aggressive (Diamonds)", function()
stats.set_int(MPX() .. "H3OPT_APPROACH", 3)
stats.set_int(MPX() .. "H3_LAST_APPROACH", 1)
stats.set_int(MPX() .. "H3OPT_TARGET", 3)
stats.set_int(MPX() .. "H3OPT_BITSET1", 799)
stats.set_int(MPX() .. "H3OPT_DISRUPTSHIP", 3)
stats.set_int(MPX() .. "H3OPT_KEYLEVELS", 2)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE2", -1)
stats.set_int(MPX() .. "H3OPT_CREWWEAP", 4)
stats.set_int(MPX() .. "H3OPT_CREWDRIVER", 5)
stats.set_int(MPX() .. "H3OPT_CREWHACKER", 5)
stats.set_int(MPX() .. "H3OPT_VEHS", 2)
stats.set_int(MPX() .. "H3OPT_WEAPS", 1)
stats.set_int(MPX() .. "H3OPT_BITSET0", 1835223)
stats.set_int(MPX() .. "H3OPT_MASKS", 2)
end)
CasinoHeistEditorMenu:add_separator()
-- Lives Editor for Casino Heist
CasinoHeistEditorMenu:add_text("Team Lives:")
local livesValueCasino = 3
CasinoHeistEditorMenu:add_imgui(function()
if isOffline() then
return
end
ImGui.Text("Team Lives:")
livesValueCasino, _ = ImGui.InputInt("##CasinoLives", livesValueCasino)
if ImGui.Button("Set Lives##Casino") then
if livesValueCasino < 1 then
gui.show_message("Casino Heist", "Lives must be at least 1!")
else
locals.set_int(FMC, DCLIVESL, livesValueCasino)
gui.show_message("Casino Heist", "Team lives set to " .. livesValueCasino)
end
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Default is 3. Infinite team lives for the heist (set to 999999 for unlimited)")
end
end)
CasinoHeistEditorMenu:add_separator()
DiamondCasinoDifficulties = {
{ name = "Normal", index = 0 },
{ name = "Hard", index = 1 },
}
diamondApproachList = {
{ name = "Silent n Snea.", index = 1 },
{ name = "Big Con", index = 2 },
{ name = "Aggressive", index = 3 },
}
diamondGunmanList = {
{ name = "Karl Abolaji", index = 1 },
{ name = "Charlie Reed", index = 3 },
{ name = "Patrick McRear.", index = 5 },
{ name = "Gustavo Mota", index = 2 },
{ name = "Chester McCoy", index = 4 },
}
diamondLoadoutList = {
{ name = "Micro SMG (S)", index = 1 },
{ name = "Mac. Pistol (S)", index = 1 },
{ name = "Micro SMG", index = 1 },
{ name = "Double Barrel", index = 1 },
{ name = "Sawed-Off", index = 1 },
{ name = "Heavy Revolver", index = 1 },
{ name = "Assau. SMG (S)", index = 3 },
{ name = "Bullpup Sh. (S)", index = 3 },
{ name = "Machine Pistol", index = 3 },
{ name = "Sweeper Shot.", index = 3 },
{ name = "Assault SMG", index = 3 },
{ name = "Pump Shotgun", index = 3 },
{ name = "Combat PDW", index = 5 },
{ name = "Assault Rif. (S)", index = 5 },
{ name = "Sawed-Off", index = 5 },
{ name = "Compact Rifle", index = 5 },
{ name = "Heavy Shotgun", index = 5 },
{ name = "Combat MG", index = 5 },
{ name = "Carbin. Rif. (S)", index = 2 },
{ name = "Assau. Sho. (S)", index = 2 },
{ name = "Carbine Rifle", index = 2 },
{ name = "Assault Shot.", index = 2 },
{ name = "Carbine Rifle", index = 2 },
{ name = "Assault Shot.", index = 2 },
{ name = "Pump Sh. II (S)", index = 4 },
{ name = "Carbine R. II (S)", index = 4 },
{ name = "SMG Mk II", index = 4 },
{ name = "Bullpup Rifle II", index = 4 },
{ name = "Pump Shot. II", index = 4 },
{ name = "Assault Rifle II", index = 4 },
}
diamondDriverList = {
{ name = "Karim Denz", index = 1 },
{ name = "Zach Nelson", index = 4 },
{ name = "Taliana Martinez", index = 2 },
{ name = "Eddie Toh", index = 3 },
{ name = "Chester McCoy", index = 5 },
}
diamondVehiclesList = {
{ name = "Issi Classic", index = 1 },
{ name = "Asbo", index = 1 },
{ name = "Blista Kanjo", index = 1 },
{ name = "Sentinel Class.", index = 1 },
{ name = "Manchez", index = 4 },
{ name = "Stryder", index = 4 },
{ name = "Defiler", index = 4 },
{ name = "Lectro", index = 4 },
{ name = "Retinue Mk II", index = 2 },
{ name = "Drift Yosemite", index = 2 },
{ name = "Sugoi", index = 2 },
{ name = "Jugular", index = 2 },
{ name = "Sultan Classic", index = 3 },
{ name = "Gauntl. Classic", index = 3 },
{ name = "Ellie", index = 3 },
{ name = "Komoda", index = 3 },
{ name = "Zhaba", index = 5 },
{ name = "Vagrant", index = 5 },
{ name = "Outlaw", index = 5 },
{ name = "Everon", index = 5 },
}
diamondHackerList = {
{ name = "Rickie Lukens", index = 1 },
{ name = "Yohan Blair", index = 3 },
{ name = "Christian Feltz", index = 2 },
{ name = "Page Harris", index = 5 },
{ name = "Avi Schwartz.", index = 4 },
}
diamondMasksList = {
{ name = "None", index = 0 },
{ name = "Geometric Set", index = 1 },
{ name = "Hunter Set", index = 2 },
{ name = "Oni Half Mask Set", index = 3 },
{ name = "Emoji Set", index = 4 },
{ name = "Ornate Skull Set", index = 5 },
{ name = "Lucky Fruit Set", index = 6 },
{ name = "Guerilla Set", index = 7 },
{ name = "Clown Set", index = 8 },
{ name = "Animal Set", index = 9 },
{ name = "Riot Set", index = 10 },
{ name = "Oni Full Mask Set", index = 11 },
{ name = "Hockey Set", index = 12 },
}
diamondGuardsList = {
{ name = "Elite", index = 0 },
{ name = "Pro", index = 1 },
{ name = "Unit", index = 2 },
{ name = "Rookie", index = 3 },
}
diamondKeycardsList = {
{ name = "None", index = 0 },
{ name = "Level 1", index = 1 },
{ name = "Level 2", index = 2 },
}
diamondTargetList = {
{ name = "Cash", index = 0 },
{ name = "Arts", index = 2 },
{ name = "Gold", index = 1 },
{ name = "Diamonds", index = 3 },
}
DiamondCasinoCrewCut = {
{ tunable = "CH_LESTER_CUT", default = 5 },
{ tunable = "HEIST3_PREPBOARD_GUNMEN_KARL_CUT", default = 5 },
{ tunable = "HEIST3_PREPBOARD_GUNMEN_GUSTAVO_CUT", default = 9 },
{ tunable = "HEIST3_PREPBOARD_GUNMEN_CHARLIE_CUT", default = 7 },
{ tunable = "HEIST3_PREPBOARD_GUNMEN_CHESTER_CUT", default = 10 },
{ tunable = "HEIST3_PREPBOARD_GUNMEN_PATRICK_CUT", default = 8 },
{ tunable = "HEIST3_DRIVERS_KARIM_CUT", default = 5 },
{ tunable = "HEIST3_DRIVERS_TALIANA_CUT", default = 7 },
{ tunable = "HEIST3_DRIVERS_EDDIE_CUT", default = 9 },
{ tunable = "HEIST3_DRIVERS_ZACH_CUT", default = 6 },
{ tunable = "HEIST3_DRIVERS_CHESTER_CUT", default = 10 },
{ tunable = "HEIST3_HACKERS_RICKIE_CUT", default = 3 },
{ tunable = "HEIST3_HACKERS_CHRISTIAN_CUT", default = 7 },
{ tunable = "HEIST3_HACKERS_YOHAN_CUT", default = 5 },
{ tunable = "HEIST3_HACKERS_AVI_CUT", default = 10 },
{ tunable = "HEIST3_HACKERS_PAIGE_CUT", default = 9 },
}
-- Build name lists for all combos
diamondDifficultyNames = {}
for _, item in ipairs(DiamondCasinoDifficulties) do
table.insert(diamondDifficultyNames, item.name)
end
diamondDifficultyIndex = 0
diamondApproachNames = {}
for _, item in ipairs(diamondApproachList) do
table.insert(diamondApproachNames, item.name)
end
diamondApproachIndex = 0
diamondGunmanNames = {}
for _, item in ipairs(diamondGunmanList) do
table.insert(diamondGunmanNames, item.name)
end
diamondGunmanIndex = 0
local diamondLoadoutIndex = 0
local diamondDriverNames = {}
for _, item in ipairs(diamondDriverList) do
table.insert(diamondDriverNames, item.name)
end
local diamondDriverIndex = 0
local diamondVehiclesIndex = 0
local diamondHackerNames = {}
for _, item in ipairs(diamondHackerList) do
table.insert(diamondHackerNames, item.name)
end
local diamondHackerIndex = 0
local diamondMasksNames = {}
for _, item in ipairs(diamondMasksList) do
table.insert(diamondMasksNames, item.name)
end
local diamondMasksIndex = 0
local diamondGuardsNames = {}
for _, item in ipairs(diamondGuardsList) do
table.insert(diamondGuardsNames, item.name)
end
local diamondGuardsIndex = 0
local diamondKeycardsNames = {}
for _, item in ipairs(diamondKeycardsList) do
table.insert(diamondKeycardsNames, item.name)
end
local diamondKeycardsIndex = 0
local diamondTargetNames = {}
for _, item in ipairs(diamondTargetList) do
table.insert(diamondTargetNames, item.name)
end
local diamondTargetIndex = 0
-- All prep dropdowns in a single add_imgui block so they render in the correct position
CasinoHeistEditorMenu:add_imgui(function()
if isOffline() then
return
end
ImGui.Text("Preps:")
ImGui.Separator()
-- Difficulty
local nIndex, changed =
ImGui.Combo("Difficulty", diamondDifficultyIndex, diamondDifficultyNames, #diamondDifficultyNames)
if changed then
diamondDifficultyIndex = nIndex
end
-- Approach
nIndex, changed = ImGui.Combo("Approach", diamondApproachIndex, diamondApproachNames, #diamondApproachNames)
if changed then
diamondApproachIndex = nIndex
end
-- Gunman
nIndex, changed = ImGui.Combo("Gunman", diamondGunmanIndex, diamondGunmanNames, #diamondGunmanNames)
if changed then
diamondGunmanIndex = nIndex
diamondLoadoutIndex = 0
end
-- Loadout (filtered by gunman)
do
local gIndex = diamondGunmanList[diamondGunmanIndex + 1].index
local filnames = {}
for _, item in ipairs(diamondLoadoutList) do
if item.index == gIndex then
table.insert(filnames, item.name)
end
end
nIndex, changed = ImGui.Combo("Loadout", diamondLoadoutIndex, filnames, #filnames)
if changed then
diamondLoadoutIndex = nIndex
end
end
-- Driver
nIndex, changed = ImGui.Combo("Driver", diamondDriverIndex, diamondDriverNames, #diamondDriverNames)
if changed then
diamondDriverIndex = nIndex
diamondVehiclesIndex = 0
end
-- Vehicles (filtered by driver)
do
local dIndex = diamondDriverList[diamondDriverIndex + 1].index
local filnames = {}
for _, item in ipairs(diamondVehiclesList) do
if item.index == dIndex then
table.insert(filnames, item.name)
end
end
nIndex, changed = ImGui.Combo("Vehicles", diamondVehiclesIndex, filnames, #filnames)
if changed then
diamondVehiclesIndex = nIndex
end
end
-- Hacker
nIndex, changed = ImGui.Combo("Hacker", diamondHackerIndex, diamondHackerNames, #diamondHackerNames)
if changed then
diamondHackerIndex = nIndex
end
-- Masks
nIndex, changed = ImGui.Combo("Masks", diamondMasksIndex, diamondMasksNames, #diamondMasksNames)
if changed then
diamondMasksIndex = nIndex
end
-- Guards
nIndex, changed = ImGui.Combo("Guards", diamondGuardsIndex, diamondGuardsNames, #diamondGuardsNames)
if changed then
diamondGuardsIndex = nIndex
end
-- Keycards
nIndex, changed = ImGui.Combo("Keycards", diamondKeycardsIndex, diamondKeycardsNames, #diamondKeycardsNames)
if changed then
diamondKeycardsIndex = nIndex
end
-- Target
nIndex, changed = ImGui.Combo("Target", diamondTargetIndex, diamondTargetNames, #diamondTargetNames)
if changed then
diamondTargetIndex = nIndex
end
ImGui.Separator()
-- Apply & Complete Preps button (inline so it appears right after the dropdowns)
if ImGui.Button("Apply & Complete Preps") then
local approach = diamondApproachList[diamondApproachIndex + 1].index
local gunman = diamondGunmanList[diamondGunmanIndex + 1].index
local loadout = diamondLoadoutIndex
local driver = diamondDriverList[diamondDriverIndex + 1].index
local vehicles = diamondVehiclesIndex
local hacker = diamondHackerList[diamondHackerIndex + 1].index
local masks = diamondMasksList[diamondMasksIndex + 1].index
local guards = diamondGuardsList[diamondGuardsIndex + 1].index
local keycards = diamondKeycardsList[diamondKeycardsIndex + 1].index
local target = diamondTargetList[diamondTargetIndex + 1].index
local difficulty = DiamondCasinoDifficulties[diamondDifficultyIndex + 1].index
stats.set_int(MPX() .. "H3OPT_POI", -1)
stats.set_int(MPX() .. "H3OPT_ACCESSPOINTS", -1)
stats.set_int(MPX() .. "CAS_HEIST_NOTS", -1)
stats.set_int(MPX() .. "CAS_HEIST_FLOW", -1)
stats.set_int(MPX() .. "H3_LAST_APPROACH", 0)
stats.set_int(MPX() .. "H3_HARD_APPROACH", (difficulty == 0) and 0 or approach)
stats.set_int(MPX() .. "H3OPT_APPROACH", approach)
stats.set_int(MPX() .. "H3OPT_CREWWEAP", gunman)
stats.set_int(MPX() .. "H3OPT_WEAPS", loadout)
stats.set_int(MPX() .. "H3OPT_CREWDRIVER", driver)
stats.set_int(MPX() .. "H3OPT_VEHS", vehicles)
stats.set_int(MPX() .. "H3OPT_CREWHACKER", hacker)
stats.set_int(MPX() .. "H3OPT_TARGET", target)
stats.set_int(MPX() .. "H3OPT_MASKS", masks)
stats.set_int(MPX() .. "H3OPT_DISRUPTSHIP", guards)
stats.set_int(MPX() .. "H3OPT_KEYLEVELS", keycards)
stats.set_int(MPX() .. "H3OPT_BODYARMORLVL", -1)
stats.set_int(MPX() .. "H3OPT_BITSET0", -1)
stats.set_int(MPX() .. "H3OPT_BITSET1", -1)
stats.set_int(MPX() .. "H3OPT_COMPLETEDPOSIX", -1)
locals.set_int(CASPL, DCRBl, 2)
gui.show_message("Diamond Casino Heist", "Preps should've been completed")
end
ImGui.SameLine()
if ImGui.Button("Reset Preps##diamond") then
stats.set_int(MPX() .. "H3_LAST_APPROACH", 0)
stats.set_int(MPX() .. "H3_HARD_APPROACH", 0)
stats.set_int(MPX() .. "H3_APPROACH", 0)
stats.set_int(MPX() .. "H3OPT_APPROACH", 0)
stats.set_int(MPX() .. "H3OPT_CREWWEAP", 0)
stats.set_int(MPX() .. "H3OPT_WEAPS", 0)
stats.set_int(MPX() .. "H3OPT_CREWDRIVER", 0)
stats.set_int(MPX() .. "H3OPT_VEHS", 0)
stats.set_int(MPX() .. "H3OPT_CREWHACKER", 0)
stats.set_int(MPX() .. "H3OPT_MASKS", 0)
stats.set_int(MPX() .. "H3OPT_TARGET", 0)
stats.set_int(MPX() .. "H3OPT_DISRUPTSHIP", 0)
stats.set_int(MPX() .. "H3OPT_BODYARMORLVL", 1)
stats.set_int(MPX() .. "H3OPT_KEYLEVELS", 0)
stats.set_int(MPX() .. "H3OPT_BITSET0", 0)
stats.set_int(MPX() .. "H3OPT_BITSET1", 0)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE0", 0)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE1", 0)
stats.set_int(MPX() .. "H3_BOARD_DIALOGUE2", 0)
stats.set_int("MPPLY_H3_COOLDOWN", 0)
stats.set_int(MPX() .. "H3OPT_COMPLETEDPOSIX", 0)
locals.set_int(CASPL, DCRBl, 2)
gui.show_message("Diamond Casino Heist", "Preps should've been reset")
end
end)
local casinoCrewCuts_enabled = false
local casinoPc1_val = 0
local casinoPc2_val = 0
local casinoPc3_val = 0
local casinoPc4_val = 0
function SetDiamondMaxPayout()
local approach = stats.get_int(MPX() .. "H3OPT_APPROACH")
local hardApproach = stats.get_int(MPX() .. "H3_HARD_APPROACH")
local target = stats.get_int(MPX() .. "H3OPT_TARGET")
local difficulty = (approach == hardApproach) and 2 or 1
local payouts = {
[0] = { 2115000, 2326500 },
[2] = { 2350000, 2585000 },
[1] = { 2585000, 2843500 },
[3] = { 3290000, 3619000 },
}
if payouts[target] == nil then
return 100, 100
end
local payout = payouts[target][difficulty] + 819000
local maxPayout = 3619000
local gunman = stats.get_int(MPX() .. "H3OPT_CREWWEAP")
local driver = stats.get_int(MPX() .. "H3OPT_CREWDRIVER")
local hacker = stats.get_int(MPX() .. "H3OPT_CREWHACKER")
local buyerFee = 0.1
local lesterCut = 0.05
local gunmanCuts = { [1] = 0.05, [3] = 0.07, [5] = 0.08, [2] = 0.09, [4] = 0.1 }
local driverCuts = { [1] = 0.05, [4] = 0.06, [2] = 0.07, [3] = 0.09, [5] = 0.1 }
local hackerCuts = { [1] = 0.03, [3] = 0.05, [2] = 0.07, [5] = 0.09, [4] = 0.1 }
local feePayout = payout - (payout * buyerFee)
local lesterPayout = feePayout * lesterCut
local gunmanPayout = feePayout * (gunmanCuts[gunman] or 0)
local driverPayout = feePayout * (driverCuts[driver] or 0)
local hackerPayout = feePayout * (hackerCuts[hacker] or 0)
local crewPayout = lesterPayout + gunmanPayout + driverPayout + hackerPayout
local hostCut = math.floor(maxPayout / ((feePayout - crewPayout) / 100))
local otherCut = math.floor(maxPayout / (payout / 100))
return hostCut, otherCut
end
local casinoCutPresets = {
{ name = "All - 0%", index = 0 },
{ name = "All - 85%", index = 85 },
{ name = "All - 100%", index = 100 },
{ name = "3.6mil Payout", index = -1 },
}
local casinoCutPresetNames = {}
for _, preset in ipairs(casinoCutPresets) do
table.insert(casinoCutPresetNames, preset.name)
end
local sPresetIndex = 0
CasinoHeistEditorMenu:add_imgui(function()
if isOffline() then
return
end
ImGui.Separator()
ImGui.Text("Cuts:")
-- Remove Crew Cuts checkbox
casinoCrewCuts_enabled, _ = ImGui.Checkbox("Remove Crew Cuts", casinoCrewCuts_enabled)
-- Player cut inputs
casinoPc1_val, _ = ImGui.InputInt("Player Cut 1", casinoPc1_val)
casinoPc2_val, _ = ImGui.InputInt("Player Cut 2", casinoPc2_val)
casinoPc3_val, _ = ImGui.InputInt("Player Cut 3", casinoPc3_val)
casinoPc4_val, _ = ImGui.InputInt("Player Cut 4", casinoPc4_val)
-- Presets
ImGui.Text("Presets:")
ImGui.SetNextItemWidth(170)
local nIndex, changed = ImGui.Combo("##DiamondPreset", sPresetIndex, casinoCutPresetNames, #casinoCutPresetNames)
if changed then
sPresetIndex = nIndex
local selected = casinoCutPresets[sPresetIndex + 1]
local hostCut = selected.index
local otherCut = selected.index
if selected.index == -1 then
hostCut, otherCut = SetDiamondMaxPayout()
casinoCrewCuts_enabled = true
else
casinoCrewCuts_enabled = false
end
casinoPc1_val = hostCut
casinoPc2_val = otherCut
casinoPc3_val = otherCut
casinoPc4_val = otherCut
end
if ImGui.Button("Apply Cuts") then
local cutsValid = true
for _, v in ipairs({casinoPc1_val, casinoPc2_val, casinoPc3_val, casinoPc4_val}) do
if v < 0 or v > 100 then
cutsValid = false
break
end
end
if not cutsValid then
gui.show_error("Casino Heist", "Cuts must be 0-100.")
else
globals.set_int(DCCg1, casinoPc1_val)
globals.set_int(DCCg2, casinoPc2_val)
globals.set_int(DCCg3, casinoPc3_val)
globals.set_int(DCCg4, casinoPc4_val)
gui.show_message("Casino Heist", "Cuts should've been applied")
end
end
end)
script.register_looped("DiamondCasino_Crew", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
for _, cut in ipairs(DiamondCasinoCrewCut) do
if casinoCrewCuts_enabled then
tunables.set_int(cut.tunable, 0)
else
tunables.set_int(cut.tunable, cut.default)
end
end
script:sleep(500)
end)
CasinoHeistEditorMenu:add_imgui(function()
if isOffline() then
return
end
ImGui.Separator()
if ImGui.Button("Reload boards") then
locals.set_int(CASPL, DCRBl, 2)
end
ImGui.SameLine()
if ImGui.Button("Solo Launch") then
if locals.get_int(FMMCL, HGGs1) ~= nil and locals.get_int(FMMCL, HGGs1) ~= 0 then
if locals.get_int(FMMCL, HGGs1) > 1 then
locals.set_int(FMMCL, HGGs2, 1)
globals.set_int(794989 + 4 + 1 + (locals.get_int(FMMCL, HGGs1) * 95) + 75, 1)
end
globals.set_int(HGLs1, 1)
globals.set_int(HGLs2, 1)
globals.set_int(HGLs3, 1)
globals.set_int(HGLs4, 0)
end
end
ImGui.SameLine()
if ImGui.Button("Kill Cooldown") then
stats.set_int(MPX() .. "H3_COMPLETEDPOSIX", -1)
stats.set_int("MPPLY_H3_COOLDOWN", -1)
gui.show_message("Diamond Casino Heist", "Cooldown should've been killed")
end
end)
local CasinoHeistExtra = CasinoHeistEditorMenu:add_tab("Extras")
CasinoHeistExtra:add_text("Hacks")
local casinoAutograbber = CasinoHeistExtra:add_checkbox("Autograbber")
script.register_looped("casinoAg", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
script:sleep(500)
return
end
if casinoAutograbber:is_enabled() then
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
script:sleep(500)
return
end
if locals.get_int(FMC, DCAg) == 3 then
locals.set_int(FMC, DCAg, 4)
elseif locals.get_int(FMC, DCAg) == 4 then
locals.set_float(FMC, DCAs, 2.0)
else
script:sleep(500)
end
else
script:sleep(500)
end
end)
CasinoHeistExtra:add_button("Bypass Fingerprint Hack", function()
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
gui.show_error("Casino Heist", "Mission script not active.")
return
end
if locals.get_int(FMC, DCFHl) == 4 then
locals.set_int(FMC, DCFHl, 5)
else
gui.show_error("Casino Heist", "Fingerprint hack not ready.")
end
end)
CasinoHeistExtra:add_sameline()
CasinoHeistExtra:add_button("Bypass Keypad Hack", function()
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
gui.show_error("Casino Heist", "Mission script not active.")
return
end
if locals.get_int(FMC, DCKHl) ~= 4 then
locals.set_int(FMC, DCKHl, 5)
else
gui.show_error("Casino Heist", "Keypad hack not ready.")
end
end)
CasinoHeistExtra:add_sameline()
CasinoHeistExtra:add_button("Bypass Drill Vault Door", function()
locals.set_int(FMC, DCDVDl1, locals.get_int(FMC, DCDVDl2))
end)
CasinoHeistExtra:add_button("Instant Finish", function()
-- FIX: old code never took script host and only set half the locals per approach -> desync/fail.
script.run_in_fiber(function(casFin)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC)) == 0 then
gui.show_message("Instant Heist Passed", "Start the finale first!")
return
end
network.force_script_host(FMC)
casFin:sleep(1000)
locals.set_int(FMC, DCXf1, 12)
locals.set_int(FMC, DCXf2, 5)
locals.set_int(FMC, DCXf3, 80)
locals.set_int(FMC, DCXf4, 10000000)
locals.set_int(FMC, DCXf5, 99999)
locals.set_int(FMC, DCXf6, 99999)
gui.show_message("Instant Heist Passed", "Activated (HOST). Wait for vault to stream!")
end)
end)
CasinoHeistExtra:add_sameline()
CasinoHeistExtra:add_button("Force Ready", function()
script.run_in_fiber(function(script)
network.force_script_host(FMC)
script:sleep(1000)
for i = 0, 3 do
globals.set_int(CFRg + 1 + (i * 68) + 7 + 1 + i, 1)
end
end)
end)
CasinoHeistExtra:add_sameline()
CasinoHeistExtra:add_button("Skip Cutscene", SkipCutscene)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Cayo Heist --
local CayoPericoCrewCut = {
{ tunable = "IH_DEDUCTION_PAVEL_CUT", default = -0.02 },
{ tunable = "IH_DEDUCTION_FENCING_FEE", default = -0.1 },
}
local cayoPrimaryTargets = {
{ name = "Panther Statue", id = 5 },
{ name = "Medrazo Files", id = 4 },
{ name = "Diamond", id = 3 },
{ name = "Bonds", id = 2 },
{ name = "Necklace", id = 1 },
{ name = "Tequila", id = 0 },
}
function CayoCompletePreps()
stats.set_int(MPX() .. "H4CNF_UNIFORM", -1)
stats.set_int(MPX() .. "H4CNF_GRAPPEL", -1)
stats.set_int(MPX() .. "H4CNF_TROJAN", 5)
stats.set_int(MPX() .. "H4CNF_WEP_DISRP", 3)
stats.set_int(MPX() .. "H4CNF_ARM_DISRP", 3)
stats.set_int(MPX() .. "H4CNF_HEL_DISRP", 3)
stats.set_int(MPX() .. "H4_PLAYTHROUGH_STATUS", 10)
stats.set_int(MPX() .. "H4CNF_BS_GEN", -1)
stats.set_int(MPX() .. "H4CNF_BS_ENTR", 63)
stats.set_int(MPX() .. "H4CNF_BS_ABIL", 63)
stats.set_int(MPX() .. "H4CNF_APPROACH", -1)
end
function CayoTargetsSetter(cash, weed, coke, gold, where)
stats.set_int(MPX() .. "H4LOOT_CASH_" .. where, cash)
stats.set_int(MPX() .. "H4LOOT_CASH_" .. where .. "_SCOPED", cash)
stats.set_int(MPX() .. "H4LOOT_WEED_" .. where, weed)
stats.set_int(MPX() .. "H4LOOT_WEED_" .. where .. "_SCOPED", weed)
stats.set_int(MPX() .. "H4LOOT_COKE_" .. where, coke)
stats.set_int(MPX() .. "H4LOOT_COKE_" .. where .. "_SCOPED", coke)
stats.set_int(MPX() .. "H4LOOT_GOLD_" .. where, gold)
stats.set_int(MPX() .. "H4LOOT_GOLD_" .. where .. "_SCOPED", gold)
end
function CayoPaintingsToggler(Enabled)
if Enabled then
stats.set_int(MPX() .. "H4LOOT_PAINT", 127)
stats.set_int(MPX() .. "H4LOOT_PAINT_SCOPED", 127)
stats.set_int(MPX() .. "H4LOOT_PAINT_V", 189500)
else
stats.set_int(MPX() .. "H4LOOT_PAINT", 0)
stats.set_int(MPX() .. "H4LOOT_PAINT_SCOPED", 0)
stats.set_int(MPX() .. "H4LOOT_PAINT_V", 0)
end
end
local cayoSecondaryTargets = {
{
name = "None",
caps = "NONE",
amount = {
compound = { cash = 0, weed = 0, coke = 0, gold = 0 },
island = { cash = 0, weed = 0, coke = 0, gold = 0 },
},
value = 0,
},
{
name = "Gold",
caps = "GOLD",
amount = {
compound = { cash = 0, weed = 0, coke = 0, gold = 255 },
island = { cash = 0, weed = 0, coke = 0, gold = 16777215 },
},
value = 333333,
},
{
name = "Cocaine",
caps = "COKE",
amount = {
compound = { cash = 0, weed = 0, coke = 255, gold = 0 },
island = { cash = 0, weed = 0, coke = 16777215, gold = 0 },
},
value = 202500,
},
{
name = "Weed",
caps = "WEED",
amount = {
compound = { cash = 0, weed = 255, coke = 0, gold = 0 },
island = { cash = 0, weed = 16777215, coke = 0, gold = 0 },
},
value = 135000,
},
{
name = "Cash",
caps = "CASH",
amount = {
compound = { cash = 255, weed = 0, coke = 0, gold = 0 },
island = { cash = 16777215, weed = 0, coke = 0, gold = 0 },
},
value = 83250,
},
}
local cayoLocations = {
{ name = "Front Gate", x = 4990.0386, y = -5717.6895, z = 19.876024 },
{ name = "El Rubio's Office", x = 5010.12, y = -5750.1353, z = 28.844675 },
{ name = "Primary Target", x = 5006.7, y = -5756.2, z = 15.483983 },
{ name = "Secondary Target", x = 4999.764160, y = -5749.863770, z = 14.840000 },
{ name = "Safe Zone", x = 4771.479, y = -6165.737, z = -39.079613 },
{ name = "Entrance Drinage Pipe", x = 5043.74, y = -5815.3193, z = -10.574497 },
{ name = "Enter Cayo Perico", x = 5053.8516, y = -5772.852, z = -4.1588774 },
{ name = "Elevator", x = 5012.1533, y = -5749.0107, z = 28.945145 },
}
local cayoApproachVehicles = {
{ name = "Longfin", id = 65345 },
{ name = "Patrol Boat", id = 65313 },
{ name = "Stealth Annihilator", id = 65425 },
{ name = "Velum", id = 65289 },
{ name = "Alkonost", id = 65413 },
{ name = "Kosatka", id = 65283 },
{ name = "All Ways", id = 65535 },
}
local cayoWeapons = {
{ name = "Aggressor", id = 1 },
{ name = "Conspirator", id = 2 },
{ name = "Crackshot", id = 3 },
{ name = "Saboteur", id = 4 },
{ name = "Marksman", id = 5 },
}
-- Move these variables outside to maintain state
local sPrimary = 0
local compoundI = 0
local islandI = 0
local sApproach = 0
local sWeapon = 0
local bagValue = 0
local addPaintings = false
local cayocut1 = 0
local cayocut2 = 0
local cayocut3 = 0
local cayocut4 = 0
local cayoCrewCuts = false
local livesValueCayo = 3
local cayoLootTakeValue = 0
function CayoSoloMantrap()
script.run_in_fiber(function(s)
network.force_script_host(FMC2020)
s:sleep(500)
locals.set_int(FMC2020, CPMantrap1, 7)
locals.set_int(FMC2020, CPMantrap2, 1)
gui.show_message("Cayo Perico Heist", "Solo mantrap enabled")
end)
end
function CayoTakeSecondary()
script.run_in_fiber(function(s)
locals.set_int(FMC2020, CPSecondary, 3)
s:sleep(500)
local cur = locals.get_int(FMC2020, CPSecondary)
if cur ~= nil then
locals.set_int(FMC2020, CPSecondary, cur - 1)
end
gui.show_message("Cayo Perico Heist", "Secondary target taken")
end)
end
function CayoSetLootTake(value)
locals.set_int(FMC2020, CPLootTake, value)
gui.show_message("Cayo Perico Heist", "Loot take set to " .. value)
end
function GetCayoTakeText()
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC2020)) > 0 then
return "Current Take: $" .. tostring(locals.get_int(FMC2020, CPLootTake))
end
return "Current Take: N/A (start finale)"
end
function CayoDrawMisc()
ImGui.Separator()
ImGui.Text("Misc")
if ImGui.Button("Solo Mantrap (Dual Keycard)") then
CayoSoloMantrap()
end
ImGui.SameLine()
if ImGui.Button("Take Secondary Target") then
CayoTakeSecondary()
end
ImGui.Text(GetCayoTakeText())
cayoLootTakeValue, _ = ImGui.InputInt("Loot Take", cayoLootTakeValue)
if ImGui.Button("Set Loot Take") then
CayoSetLootTake(cayoLootTakeValue)
end
ImGui.Separator()
end
function CayoRefreshLootValues()
local vals = { CASH = 0, WEED = 0, COKE = 0, GOLD = 0 }
local comp = cayoSecondaryTargets[compoundI + 1]
local isl = cayoSecondaryTargets[islandI + 1]
if comp.caps ~= "NONE" then
vals[comp.caps] = comp.value
end
if isl.caps ~= "NONE" then
vals[isl.caps] = isl.value
end
stats.set_int(MPX() .. "H4LOOT_CASH_V", vals.CASH)
stats.set_int(MPX() .. "H4LOOT_WEED_V", vals.WEED)
stats.set_int(MPX() .. "H4LOOT_COKE_V", vals.COKE)
stats.set_int(MPX() .. "H4LOOT_GOLD_V", vals.GOLD)
end
local CayoHeistEditorMenu = HeistsDataEditorMenu:add_tab("Cayo Perico Heist")
-- Put EVERYTHING inside add_imgui
CayoHeistEditorMenu:add_imgui(function()
if isOffline() then
return
end
-- Cayo Bag Size Editor
ImGui.Text("Cayo Bag Size Editor")
bagValue, _ = ImGui.InputInt("Bag Size", bagValue)
if ImGui.Button("Set Bag Size") then
if bagValue < 0 or bagValue > 10000 then
gui.show_error("Cayo Perico", "Bag size must be 0-10000.")
else
tunables.set_int("HEIST_BAG_MAX_CAPACITY", bagValue)
gui.show_message("Cayo Perico", "Bag size set to " .. bagValue)
end
end
ImGui.Separator()
-- Primary Target
ImGui.Text("Primary Target:")
local primaryNames = {}
for _, target in ipairs(cayoPrimaryTargets) do
table.insert(primaryNames, target.name)
end
local nIndex, changed = ImGui.Combo("##CayoPrimary", sPrimary, primaryNames, #primaryNames)
if changed then
sPrimary = nIndex
local selected = cayoPrimaryTargets[sPrimary + 1]
stats.set_int(MPX() .. "H4CNF_TARGET", selected.id)
gui.show_message("Cayo Perico", "Primary target set to: " .. selected.name)
end
ImGui.Separator()
ImGui.Text("Primary Payouts (direct tunables):")
local cayoPrimaryPayouts = {
{ name = "Panther Statue", tunable = "IH_PRIMARY_TARGET_VALUE_SAPPHIRE_PANTHER_STATUE" },
{ name = "Madrazo Files", tunable = "IH_PRIMARY_TARGET_VALUE_MADRAZO_FILES" },
{ name = "Pink Diamond", tunable = "IH_PRIMARY_TARGET_VALUE_PINK_DIAMOND" },
{ name = "Bearer Bonds", tunable = "IH_PRIMARY_TARGET_VALUE_BEARER_BONDS" },
{ name = "Necklace", tunable = "IH_PRIMARY_TARGET_VALUE_PEARL_NECKLACE" },
{ name = "Tequila", tunable = "IH_PRIMARY_TARGET_VALUE_TEQUILA" },
}
for _, p in ipairs(cayoPrimaryPayouts) do
local cur = tunables.get_int(p.tunable)
local val, used = ImGui.InputInt(p.name, cur)
if used then
if val < 0 or val > 10000000 then
gui.show_error("Cayo Perico", p.name .. " must be 0-10M.")
else
tunables.set_int(p.tunable, val)
gui.show_message("Cayo Perico", p.name .. " payout set to " .. val)
end
end
end
ImGui.Separator()
-- Secondary Targets
local targetNames = {}
for i, target in ipairs(cayoSecondaryTargets) do
table.insert(targetNames, target.name)
end
ImGui.Text("Compound Target:")
local nCompoundI, clickedCompound = ImGui.Combo("##Compound", compoundI, targetNames, #targetNames)
if clickedCompound then
compoundI = nCompoundI
local selected = cayoSecondaryTargets[compoundI + 1]
CayoTargetsSetter(
selected.amount.compound.cash,
selected.amount.compound.weed,
selected.amount.compound.coke,
selected.amount.compound.gold,
"C"
)
CayoRefreshLootValues()
gui.show_message("Cayo Perico", "Compound target set to: " .. selected.name)
end
ImGui.Text("Island Target:")
local nIslandI, clickedIsland = ImGui.Combo("##Island", islandI, targetNames, #targetNames)
if clickedIsland then
islandI = nIslandI
local selected = cayoSecondaryTargets[islandI + 1]
CayoTargetsSetter(
selected.amount.island.cash,
selected.amount.island.weed,
selected.amount.island.coke,
selected.amount.island.gold,
"I"
)
CayoRefreshLootValues()
gui.show_message("Cayo Perico", "Island target set to: " .. selected.name)
end
ImGui.Text("")
addPaintings, _ = ImGui.Checkbox("Paintings", addPaintings)
ImGui.Separator()
-- Difficulty
ImGui.Text("Difficulty:")
if ImGui.Button("Hard") then
stats.set_int(MPX() .. "H4_PROGRESS", 131055)
end
ImGui.SameLine()
if ImGui.Button("Normal") then
stats.set_int(MPX() .. "H4_PROGRESS", 126823)
end
ImGui.Separator()
-- Approach
local approachNames = {}
for _, veh in ipairs(cayoApproachVehicles) do
table.insert(approachNames, veh.name)
end
ImGui.Text("Approach:")
local nIndex2, changed2 = ImGui.Combo("##CayoApproach", sApproach, approachNames, #approachNames)
if changed2 then
sApproach = nIndex2
local selected = cayoApproachVehicles[sApproach + 1]
stats.set_int(MPX() .. "H4_MISSIONS", selected.id)
gui.show_message("Cayo Perico", "Approach set to: " .. selected.name)
end
ImGui.Separator()
-- Weapons
local weaponNames = {}
for _, wep in ipairs(cayoWeapons) do
table.insert(weaponNames, wep.name)
end
ImGui.Text("Weapons:")
local nIndex3, changed3 = ImGui.Combo("##CayoWeapon", sWeapon, weaponNames, #weaponNames)
if changed3 then
sWeapon = nIndex3
local selected = cayoWeapons[sWeapon + 1]
stats.set_int(MPX() .. "H4CNF_WEAPONS", selected.id)
gui.show_message("Cayo Perico", "Weapon loadout set to: " .. selected.name)
end
ImGui.Separator()
-- Preps
ImGui.Text("Preps:")
if ImGui.Button("Complete Preps") then
CayoPaintingsToggler(addPaintings)
CayoCompletePreps()
locals.set_int(HIP, CPRSl, 2)
gui.show_message("Cayo Perico Heist", "Preps should've been completed")
end
ImGui.SameLine()
if ImGui.Button("Reset Preps") then
stats.set_int(MPX() .. "H4_PROGRESS", 0)
stats.set_int(MPX() .. "H4_MISSIONS", 0)
stats.set_int(MPX() .. "H4CNF_APPROACH", 0)
stats.set_int(MPX() .. "H4CNF_TARGET", -1)
stats.set_int(MPX() .. "H4CNF_BS_GEN", 0)
stats.set_int(MPX() .. "H4CNF_BS_ENTR", 0)
stats.set_int(MPX() .. "H4CNF_BS_ABIL", 0)
stats.set_int(MPX() .. "H4_PLAYTHROUGH_STATUS", 0)
locals.set_int(HIP, CPRSl, 2)
gui.show_message("Cayo Perico Heist", "Preps should've been reset")
end
ImGui.Separator()
-- Crew Cuts
ImGui.Text("Removes fencing fee and Pavel's cut")
cayoCrewCuts, _ = ImGui.Checkbox("Remove Crew Cuts", cayoCrewCuts)
-- Note: script.register_looped for this should be handled separately
ImGui.Separator()
ImGui.Text("Cuts:")
ImGui.Text("Transaction limit is 2.55mil.")
cayocut1, _ = ImGui.InputInt("Player 1", cayocut1)
cayocut2, _ = ImGui.InputInt("Player 2", cayocut2)
cayocut3, _ = ImGui.InputInt("Player 3", cayocut3)
cayocut4, _ = ImGui.InputInt("Player 4", cayocut4)
if ImGui.Button("Apply Cuts##Cayo") then
local cayoValid = true
for _, v in ipairs({cayocut1, cayocut2, cayocut3, cayocut4}) do
if v < 0 or v > 100 then
cayoValid = false
break
end
end
if not cayoValid then
gui.show_error("Cayo Perico", "Cuts must be 0-100.")
else
SN_ApplyCayoCutsCherax(cayocut1, cayocut2, cayocut3, cayocut4)
gui.show_message("Cayo Perico", "Cuts should've been applied")
end
end
ImGui.Separator()
ImGui.Text("Presets:")
if ImGui.Button("All - 0%##Cayo") then
cayocut1, cayocut2, cayocut3, cayocut4 = 0, 0, 0, 0
SN_ApplyCayoCutsCherax(0, 0, 0, 0)
gui.show_message("Cayo Perico", "Cuts should've been applied")
end
ImGui.SameLine()
if ImGui.Button("All - 25%##Cayo") then
cayocut1, cayocut2, cayocut3, cayocut4 = 25, 25, 25, 25
SN_ApplyCayoCutsCherax(25, 25, 25, 25)
gui.show_message("Cayo Perico", "Cuts should've been applied")
end
if ImGui.Button("All - 85%##Cayo") then
cayocut1, cayocut2, cayocut3, cayocut4 = 85, 85, 85, 85
SN_ApplyCayoCutsCherax(85, 85, 85, 85)
gui.show_message("Cayo Perico", "Cuts should've been applied")
end
ImGui.SameLine()
if ImGui.Button("All - 100%##Cayo") then
cayocut1, cayocut2, cayocut3, cayocut4 = 100, 100, 100, 100
SN_ApplyCayoCutsCherax(100, 100, 100, 100)
gui.show_message("Cayo Perico", "Cuts should've been applied")
end
if ImGui.Button("2.55mil Payout##Cayo") then
local maxCut = SN_CayoMaxCutCherax()
if maxCut then
cayocut1, cayocut2, cayocut3, cayocut4 = maxCut, maxCut, maxCut, maxCut
cayoCrewCuts = false
SN_ApplyCayoCutsCherax(maxCut, maxCut, maxCut, maxCut)
gui.show_message("Cayo Perico", "Cuts should've been applied (" .. maxCut .. "% each)")
else
gui.show_message("Cayo Perico", "Unknown primary target")
end
end
ImGui.Separator()
-- Reload Planning Screen
ImGui.Text("Reload Planning Screen")
if ImGui.Button("Reload Planning Screen") then
locals.set_int(HIP, CPRSl, 2)
gui.show_message("Cayo Perico Heist", "Screen should've been reloaded")
end
ImGui.Separator()
-- Extras
ImGui.Text("Extras")
if ImGui.Button("Bypass Drainage Cut") then
locals.set_int(FMC2020, CPSTCl, 6)
gui.show_message("Cayo Perico Heist", "Cutting process should've been skipped")
end
ImGui.SameLine()
if ImGui.Button("Bypass Fingerprint Scanner") then
locals.set_int(FMC2020, CPFHl, 5)
gui.show_message("Cayo Perico Heist", "Hacking process should've been skipped")
end
ImGui.SameLine()
if ImGui.Button("Bypass Plasma Cutter") then
locals.set_float(FMC2020, CPPCCl, 100.0)
gui.show_message("Cayo Perico Heist", "Cutting process should've been skipped")
end
ImGui.Separator()
ImGui.Text("Team Lives:")
livesValueCayo, _ = ImGui.InputInt("##CayolivesValue", livesValueCayo)
if ImGui.Button("Set Lives") then
if livesValueCayo < 1 then
gui.show_error("Cayo Perico Heist", "Lives must be at least 1.")
elseif livesValueCayo > 999999 then
gui.show_error("Cayo Perico Heist", "Lives value too high.")
elseif SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC2020)) == 0 then
gui.show_error("Cayo Perico Heist", "Mission script not active.")
else
locals.set_int(FMC2020, CPLIVESL, livesValueCayo)
gui.show_message("Cayo Perico Heist", "Team Lives value set to " .. livesValueCayo)
end
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Default is 3. Infinite team lives for the heist (set to 999999 for unlimited)")
end
if ImGui.Button("Remove All CCTV's") then
for _, ent in pairs(entities.get_all_objects_as_handles()) do
for __, cam in pairs(CamList) do
if ENTITY.GET_ENTITY_MODEL(ent) == cam then
ENTITY.SET_ENTITY_AS_MISSION_ENTITY(ent, true, true)
ENTITY.DELETE_ENTITY(ent)
end
end
end
end
CamList = {
joaat("prop_cctv_cam_01a"),
joaat("prop_cctv_cam_01b"),
joaat("prop_cctv_cam_02a"),
joaat("prop_cctv_cam_03a"),
joaat("prop_cctv_cam_04a"),
joaat("prop_cctv_cam_04c"),
joaat("prop_cctv_cam_05a"),
joaat("prop_cctv_cam_06a"),
joaat("prop_cctv_cam_07a"),
joaat("prop_cs_cctv"),
joaat("p_cctv_s"),
joaat("hei_prop_bank_cctv_01"),
joaat("hei_prop_bank_cctv_02"),
joaat("ch_prop_ch_cctv_cam_02a"),
joaat("xm_prop_x17_server_farm_cctv_01"),
}
if ImGui.Button("Instant Finish") then
-- FIX Bug#2: old code never took script host, so finish desynced and only host got payout.
-- Must be HOST (or force host) and cuts must already be set by HOST.
script.run_in_fiber(function(cayoFin)
if SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMC2020)) == 0 then
gui.show_message("Cayo Perico Heist", "Start the finale first!")
return
end
network.force_script_host(FMC2020)
cayoFin:sleep(1000)
locals.set_int(FMC2020, CPXf1, 9)
locals.set_int(FMC2020, CPXf2, 50)
gui.show_message("Cayo Perico Heist", "Finished (HOST). If crew got 0, HOST forgot to set cuts to 100/100 before finale!")
end)
end
ImGui.SameLine()
if ImGui.Button("Skip Cutscene") then
SkipCutscene()
end
ImGui.SameLine()
if ImGui.Button("Force Ready") then
script.run_in_fiber(function(script)
network.force_script_host(FMC2020)
script:sleep(1000)
for i = 0, 3 do
globals.set_int(CYFRg + 1 + (i * 27) + 7 + 1 + i, 1)
end
gui.show_message("Cayo Perico Heist", "Everyone should've been forced ready")
end)
end
if ImGui.Button("Kill Cooldown (after solo)") then
stats.set_int(MPX() .. "H4_TARGET_POSIX", 1659643454)
stats.set_int(MPX() .. "H4_COOLDOWN", 0)
stats.set_int(MPX() .. "H4_COOLDOWN_HARD", 0)
gui.show_message("Cayo Perico Heist", "Cooldown should've been killed")
end
ImGui.SameLine()
if ImGui.Button("Kill Cooldown (after team)") then
stats.set_int(MPX() .. "H4_TARGET_POSIX", 1659429119)
stats.set_int(MPX() .. "H4_COOLDOWN", 0)
stats.set_int(MPX() .. "H4_COOLDOWN_HARD", 0)
gui.show_message("Cayo Perico Heist", "Cooldown should've been killed")
end
ImGui.Text("After clicking the Kill Cooldown button, go offline and then come back online")
CayoDrawMisc()
-- Teleports
ImGui.Text("Teleports")
for i, location in ipairs(cayoLocations) do
if ImGui.Button(location.name) then
script.run_in_fiber(function()
local ped = PLAYER.PLAYER_PED_ID()
PED.SET_PED_COORDS_KEEP_VEHICLE(ped, location.x, location.y, location.z)
end)
end
if i < 6 or i == 7 then
ImGui.SameLine()
end
end
end)
-- Handle the Crew Cuts loop separately
script.register_looped("SN_CayoPerico_Crew", function(script)
script:yield()
if
not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0
then
return
end
for _, cut in ipairs(CayoPericoCrewCut) do
if cayoCrewCuts then
tunables.set_float(cut.tunable, 0)
else
tunables.set_float(cut.tunable, cut.default)
end
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Kortz Center Heist
-- Glass case display info
glassCaseNames = {
[0] = "Venus d'Algernon",
[1] = "Gemstone",
[2] = "Horse",
[3] = "Coquard Carcanet",
[4] = "Memento Non Mori",
}
glassCaseTypes = {
[0] = "Tall Glass Case",
[1] = "Tall Glass Case",
[2] = "Horizontal Glass Case",
[3] = "Horizontal Glass Case",
[4] = "Horizontal Glass Case",
}
-- Create menu tab
KortzCenterHeistMenu = HeistsDataEditorMenu:add_tab("Kortz Center Heist")
-- State
k26_heist_target = 0
selectedPayoutTarget = 0
autoHacks = false
dataCrackTriggered = false
fingerprintTriggered = false
vaultDoorTriggered = false
heistWasActive = false
bagSizeValue = 100
weeklyMultiplierValue = 4.0
livesValue = 3
kortzLootTakeValue = 0
-- Target names
local targetShortNames = {
"La Dernière Débauche", "Hare Oneself Think", "The Downfall of Rome",
"Brother Brother", "A Cast of Characters", "Gone To Seed",
"True Love", "Breathless", "Consumato", "I Hear Voices",
"Winter, Nowhere", "Pearl Necklace", "Chat on Fruit", "Pumpkin",
"Twindifference", "Stacks Study V", "I, Fruit", "To Beat About Bush",
"In Excess Success", "Juiced", "Winding Road Home", "Teckels",
"Trust", "Until Death", "What Are Melons?", "Outcome Endeavour", "Mi O Melee",
}
-- Base payouts
local targetBasePayouts = {
481250, 304500, 305000, 305500, 306000, 306500, 307000,
307500, 308000, 308500, 309000, 309500, 310000, 310500,
311000, 311500, 312000, 312500, 313000, 313500, 314000,
314500, 315000, 315500, 316000, 365000, 317000,
}
k26Targets = {}
for i = 1, 27 do
k26Targets[i] = { name = targetShortNames[i], id = i - 1, payout = targetBasePayouts[i], index = i }
end
targetNames = {}
for _, target in ipairs(k26Targets) do
table.insert(targetNames, target.name)
end
local payoutModifiers = {}
local payoutCustomValues = {}
for i = 1, 27 do
payoutModifiers[i] = 1.0
payoutCustomValues[i] = 0
end
-- Helper functions
function isKortzHeistActive()
return SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMCV3)) > 0
end
function getCurrentBagSize()
return globals.get_int(KCBGL)
end
function getCurrentLives()
return locals.get_int(FMCV3, KCLIVESL)
end
-- Set payout to Global_262145.f_37405 + (index + 1)
function setPayout(index, value)
globals.set_int(KCPAYOUT_BASE + index + 1, value)
end
function EnableSoloSecondaryTargets()
local target_indices = { 0, 1, 5, 6, 7, 20, 21 }
for _, i in ipairs(target_indices) do
local base = KCSECONDARY_BASE + (i * 333)
globals.set_int(base + 68, 0)
globals.set_int(base + 143, 0)
end
gui.show_message("Kortz Center", "Solo secondary targets enabled")
end
function SetKortzTarget(target_index)
stats.set_int(MPX() .. "K26_HEIST_TARGET", target_index)
locals.set_int(KORTZPL, KCBRL, 2)
gui.show_message("Kortz Center Heist", "Target set to: " .. targetShortNames[target_index + 1])
end
function KortzReloadBoard()
locals.set_int(KORTZPL, KCBRL, 2)
gui.show_message("Kortz Center Heist", "Planning board reloaded")
end
function KortzSkipCooldown()
globals.set_int(KCCDG, 0)
globals.set_int(KCCD2G, 0)
gui.show_message("Kortz Center Heist", "Cooldowns reset to 0")
end
-- Smooth rainbow fade info helper
function RainbowInfo(tooltip)
local r, g, b, _ = rainbow_color(os.clock())
ImGui.TextColored(r, g, b, 1.0, "[?]")
if ImGui.IsItemHovered() then
ImGui.SetTooltip(tooltip)
end
end
-- Toggle dropdown helper
function ToggleBitDropdown(label, stat_name, bit, tooltip)
local current = stats.get_int(MPX() .. stat_name)
local is_set = (current & bit) ~= 0
local options = { "Not Done", "Done" }
local idx = is_set and 1 or 0
local new_idx, changed = ImGui.Combo(label, idx, options, 2)
if changed then
if new_idx == 1 then
stats.set_int(MPX() .. stat_name, current | bit)
gui.show_message("Kortz Center Heist", label .. " completed")
else
stats.set_int(MPX() .. stat_name, current & ~bit)
gui.show_message("Kortz Center Heist", label .. " undone")
end
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip(tooltip)
end
end
-- Auto hack functions
local function KortzSkipDataCrack()
if isKortzHeistActive() then
for b = 0, 7 do
locals.set_int(FMCV3, KCDCL + 1 + (b * 4), 1)
end
locals.set_int(FMCV3, KCDCL, 1)
gui.show_message("Kortz Center Cracker", "Data crack bypassed")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzSkipFingerprint()
if isKortzHeistActive() then
locals.set_int(FMCV3, KCFHL, 5)
gui.show_message("Kortz Center Cracker", "Fingerprint scanner bypassed")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzSkipVaultDoor()
if isKortzHeistActive() then
locals.set_int(FMCV3, KCVLL, 5)
gui.show_message("Kortz Center Cracker", "Vault door bypassed")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzAutoAccessCode()
if isKortzHeistActive() then
locals.set_int(FMCV3, KCAC_BASE + (0 * 2), 0)
locals.set_int(FMCV3, KCAC_BASE + (1 * 2), 0)
locals.set_int(FMCV3, KCAC_BASE + (2 * 2), 0)
PAD.SET_CONTROL_VALUE_NEXT_FRAME(0, 237, 1.0)
gui.show_message("Kortz Center Cracker", "Access code entered: 00-00-00")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzDisableLasers()
if isKortzHeistActive() then
locals.set_int(FMCV3, KCLGL, 4294784)
globals.set_int(KCLDG, 1)
gui.show_message("Kortz Center Cracker", "Laser grid neutralized")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzSetLasersEasy()
locals.set_int(FMMLASERS, KCLDIF1, 1)
locals.set_int(FMMLASERS, KCLDIF2, 0)
gui.show_message("Kortz Center Cracker", "Lasers set to Easy")
end
local function KortzSetLasersHard()
locals.set_int(FMMLASERS, KCLDIF1, 0)
locals.set_int(FMMLASERS, KCLDIF2, 1)
gui.show_message("Kortz Center Cracker", "Lasers set to Hard")
end
local function KortzNoDamageLasers()
locals.set_int(FMMLASERS, KCNoDmg, 1)
gui.show_message("Kortz Center Cracker", "No damage lasers enabled")
end
local function KortzSetLootTake(value)
if isKortzHeistActive() then
locals.set_int(FMCV3, KCLootTake, value)
gui.show_message("Kortz Center Cracker", "Loot take set to " .. value)
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
function GetKortzTakeText()
if isKortzHeistActive() then
return "Current Take: $" .. tostring(locals.get_int(FMCV3, KCLootTake))
end
return "Current Take: N/A (start heist)"
end
local function CutVenus()
if isKortzHeistActive() then
locals.set_float(FMCV3, KCCGL_BASE + (0 * 13) + KCCGL_OFFSET, 100.0)
gui.show_message("Kortz Center Cracker", "Venus d'Algernon cut")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function CutGemstone()
if isKortzHeistActive() then
locals.set_float(FMCV3, KCCGL_BASE + (1 * 13) + KCCGL_OFFSET, 100.0)
gui.show_message("Kortz Center Cracker", "Gemstone cut")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function CutHorse()
if isKortzHeistActive() then
locals.set_float(FMCV3, KCCGL_BASE + (2 * 13) + KCCGL_OFFSET, 100.0)
gui.show_message("Kortz Center Cracker", "Horse cut")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function CutCoquard()
if isKortzHeistActive() then
locals.set_float(FMCV3, KCCGL_BASE + (3 * 13) + KCCGL_OFFSET, 100.0)
gui.show_message("Kortz Center Cracker", "Coquard Carcanet cut")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function CutMemento()
if isKortzHeistActive() then
locals.set_float(FMCV3, KCCGL_BASE + (4 * 13) + KCCGL_OFFSET, 100.0)
gui.show_message("Kortz Center Cracker", "Memento Non Mori cut")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzCutAllGlass()
if isKortzHeistActive() then
for i = 0, 4 do
locals.set_float(FMCV3, KCCGL_BASE + (i * 13) + KCCGL_OFFSET, 100.0)
end
gui.show_message("Kortz Center Cracker", "All glass cases cut")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzTakePrimary()
if isKortzHeistActive() then
locals.set_int(FMCV3, KCPT_STATE, 15)
locals.set_int(FMCV3, KCPT_STATE, 17)
PAD.SET_CONTROL_VALUE_NEXT_FRAME(0, 237, 1.0)
gui.show_message("Kortz Center Cracker", "Primary target acquired")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
local function KortzTakeSecondary()
if isKortzHeistActive() then
locals.set_int(FMCV3, KCST_STATE, 3)
PAD.SET_CONTROL_VALUE_NEXT_FRAME(0, 219, 1.0)
gui.show_message("Kortz Center Cracker", "Secondary target secured")
else
gui.show_message("Kortz Center Cracker", "Heist not active")
end
end
-- Auto hack loop
script.register_looped("KortzCenterAutoHack", function(s)
s:yield()
if not network.is_session_started()
or SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat("maintransition")) > 0 then
return
end
local heistActive = isKortzHeistActive()
if not heistActive and heistWasActive then
dataCrackTriggered = false
fingerprintTriggered = false
vaultDoorTriggered = false
heistWasActive = false
s:sleep(500)
return
end
heistWasActive = heistActive
if not heistActive or not autoHacks then
s:sleep(500)
return
end
if not dataCrackTriggered then
local isActive = false
for b = 0, 7 do
if locals.get_int(FMCV3, KCDCL + 1 + (b * 4)) == 0 then
isActive = true
break
end
end
if isActive then
for b = 0, 7 do
locals.set_int(FMCV3, KCDCL + 1 + (b * 4), 1)
end
locals.set_int(FMCV3, KCDCL, 1)
dataCrackTriggered = true
gui.show_message("Kortz Center Cracker", "Auto: Data crack bypassed")
s:sleep(1000)
return
end
end
if not fingerprintTriggered then
local val = locals.get_int(FMCV3, KCFHL)
if val ~= nil and val >= 0 and val <= 4 then
locals.set_int(FMCV3, KCFHL, 5)
fingerprintTriggered = true
gui.show_message("Kortz Center Cracker", "Auto: Fingerprint bypassed")
s:sleep(1000)
return
end
end
if not vaultDoorTriggered then
local val = locals.get_int(FMCV3, KCVLL)
if val ~= nil and val >= 0 and val <= 4 then
locals.set_int(FMCV3, KCVLL, 5)
vaultDoorTriggered = true
gui.show_message("Kortz Center Cracker", "Auto: Vault door bypassed")
s:sleep(1000)
return
end
end
s:sleep(100)
end)
-- ============================================
-- MAIN UI
-- ============================================
KortzCenterHeistMenu:add_imgui(function()
if isOffline() then return end
local heistActive = isKortzHeistActive()
if heistActive then
ImGui.TextColored(0.0, 1.0, 0.0, 1.0, "HEIST IS ACTIVE")
else
ImGui.TextColored(1.0, 0.5, 0.0, 1.0, "HEIST NOT ACTIVE")
end
ImGui.Dummy(0, 5)
-- PRIMARY TARGET
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "PRIMARY TARGET")
ImGui.SameLine()
RainbowInfo("Select the main painting you want to steal.\nClick SET TARGET to apply it.")
ImGui.Separator()
local nIndex, changed = ImGui.Combo("##PrimaryTarget", k26_heist_target, targetShortNames, #targetShortNames)
if changed then
k26_heist_target = nIndex
end
if ImGui.Button("SET TARGET") then
SetKortzTarget(k26_heist_target)
selectedPayoutTarget = k26_heist_target
end
ImGui.SameLine()
ImGui.Text("Selected: " .. targetShortNames[k26_heist_target + 1])
ImGui.Dummy(0, 8)
-- PAYOUT SETTINGS
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "PAYOUT SETTINGS")
ImGui.SameLine()
RainbowInfo("Adjust the payout for the selected target.")
ImGui.Separator()
selectedPayoutTarget = k26_heist_target
local targetIdx = selectedPayoutTarget + 1
if targetIdx >= 1 and targetIdx <= 27 then
ImGui.Text("Target: " .. targetShortNames[targetIdx])
ImGui.TextColored(0.0, 1.0, 0.0, 1.0, "Payout: $" .. string.format("%.0f", targetBasePayouts[targetIdx]))
ImGui.Text(GetKortzTakeText())
ImGui.Dummy(0, 5)
ImGui.Text("Multiplier:")
payoutModifiers[targetIdx], _ = ImGui.InputFloat("##Multiplier" .. targetIdx, payoutModifiers[targetIdx], 0.1, 0.5, "%.1f")
ImGui.Text("Custom Value:")
payoutCustomValues[targetIdx], _ = ImGui.InputInt("##CustomValue" .. targetIdx, payoutCustomValues[targetIdx], 1000, 10000)
ImGui.Dummy(0, 5)
if ImGui.Button("Apply Multiplier") then
local newPayout = math.floor(targetBasePayouts[targetIdx] * payoutModifiers[targetIdx])
setPayout(targetIdx - 1, newPayout)
KortzReloadBoard()
gui.show_message("Kortz Center Heist", "Payout set to $" .. string.format("%.0f", newPayout))
end
ImGui.SameLine()
if ImGui.Button("Apply Custom Value") then
if payoutCustomValues[targetIdx] > 0 then
setPayout(targetIdx - 1, payoutCustomValues[targetIdx])
KortzReloadBoard()
gui.show_message("Kortz Center Heist", "Payout set to $" .. string.format("%.0f", payoutCustomValues[targetIdx]))
end
end
ImGui.SameLine()
if ImGui.Button("Reset This Target") then
setPayout(targetIdx - 1, targetBasePayouts[targetIdx])
KortzReloadBoard()
payoutModifiers[targetIdx] = 1.0
payoutCustomValues[targetIdx] = 0
gui.show_message("Kortz Center Heist", "Payout reset to base")
end
end
ImGui.Dummy(0, 8)
-- GENERAL SETTINGS
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "GENERAL SETTINGS")
ImGui.SameLine()
RainbowInfo("Adjust bag size, team lives, weekly multiplier, difficulty, and cooldowns.")
ImGui.Separator()
local currentBag = getCurrentBagSize()
ImGui.Text("Bag Capacity: " .. currentBag)
bagSizeValue, _ = ImGui.InputInt("##BagSize", bagSizeValue)
if ImGui.Button("Set Bag Size") then
if bagSizeValue < 0 or bagSizeValue > 10000 then
gui.show_error("Kortz Center Heist", "Bag size must be 0-10000.")
else
globals.set_int(KCBGL, bagSizeValue)
gui.show_message("Kortz Center Heist", "Bag capacity set to " .. bagSizeValue)
end
end
ImGui.Separator()
local currentLives = getCurrentLives()
ImGui.Text("Team Lives: " .. currentLives)
livesValue, _ = ImGui.InputInt("##Lives", livesValue)
if ImGui.Button("Set Lives") then
if livesValue < 1 then
gui.show_error("Kortz Center Heist", "Lives must be at least 1.")
elseif livesValue > 999999 then
gui.show_error("Kortz Center Heist", "Lives value too high.")
elseif SCRIPT.GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(joaat(FMCV3)) == 0 then
gui.show_error("Kortz Center Heist", "Mission script not active.")
else
locals.set_int(FMCV3, KCLIVESL, livesValue)
gui.show_message("Kortz Center Heist", "Team lives set to " .. livesValue)
end
end
ImGui.Separator()
ImGui.Text("Weekly Bonus Multiplier:")
weeklyMultiplierValue, _ = ImGui.InputFloat("##WeeklyMultiplier", weeklyMultiplierValue)
if ImGui.Button("Set Weekly Multiplier") then
globals.set_float(KCWMG, weeklyMultiplierValue)
gui.show_message("Kortz Center Heist", "Weekly multiplier set to " .. weeklyMultiplierValue .. "x")
end
ImGui.Separator()
local hard_stat = stats.get_int(MPX() .. "K26_GENERAL_BS")
local hard_active = (hard_stat & (1 << 28)) ~= 0
if hard_active then
ImGui.TextColored(1.0, 0.3, 0.3, 1.0, "HARD MODE: ACTIVE")
else
ImGui.TextColored(0.0, 1.0, 0.0, 1.0, "NORMAL MODE: ACTIVE")
end
if ImGui.Button("Hard Mode") then
stats.set_int(MPX() .. "K26_GENERAL_BS", stats.get_int(MPX() .. "K26_GENERAL_BS") | (1 << 28))
KortzReloadBoard()
gui.show_message("Kortz Center Heist", "Hard Mode enabled")
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Enable Hard Mode")
end
ImGui.SameLine()
if ImGui.Button("Normal Mode") then
stats.set_int(MPX() .. "K26_GENERAL_BS", stats.get_int(MPX() .. "K26_GENERAL_BS") & ~(1 << 28))
KortzReloadBoard()
gui.show_message("Kortz Center Heist", "Normal Mode enabled")
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Enable Normal Mode")
end
ImGui.Separator()
if ImGui.Button("Skip Cooldown") then
KortzSkipCooldown()
end
ImGui.SameLine()
if ImGui.Button("Unlock All Paintings") then
stats.set_int(MPX() .. "K26_TARGETS_OWNED_BS", -1)
gui.show_message("Kortz Center Heist", "All paintings unlocked")
end
ImGui.Dummy(0, 8)
-- HIGH PRIORITY
ImGui.TextColored(1.0, 0.8, 0.0, 1.0, "HIGH PRIORITY (STRONGLY RECOMMENDED)")
ImGui.SameLine()
RainbowInfo("These preps make the heist much easier.\nStrongly recommended for a smooth run.")
ImGui.Separator()
ToggleBitDropdown("Unmarked Weapons", "K26_ROBBERY_PROG", 128, "Weapons that can't be traced")
ToggleBitDropdown("Getaway Vehicle", "K26_ROBBERY_PROG", 256, "Armored getaway vehicle")
ToggleBitDropdown("Guard Routes", "K26_GENERAL_BS", 32, "Reveals guard patrol patterns")
ToggleBitDropdown("Glass Cutter", "K26_GENERAL_BS", 64, "Tool for cutting display cases")
ToggleBitDropdown("Power Drills", "K26_GENERAL_BS", 128, "Drills for certain locks")
ImGui.Dummy(0, 8)
-- REQUIRED PREPS
ImGui.TextColored(1.0, 0.5, 0.5, 1.0, "REQUIRED PREPS")
ImGui.SameLine()
RainbowInfo("These are mandatory to start the heist.")
ImGui.Separator()
local scope_current = stats.get_int(MPX() .. "K26_ROBBERY_PROG")
local scope_done = (scope_current & 1) ~= 0
local scope_idx = scope_done and 1 or 0
local scope_new, scope_changed = ImGui.Combo("Scope Out Kortz Center", scope_idx, { "Not Done", "Done" }, 2)
if scope_changed then
if scope_new == 1 then
stats.set_int(MPX() .. "K26_ROBBERY_PROG", scope_current | 1)
stats.set_int(MPX() .. "K26_SCOPING_BS", -1)
stats.set_int(MPX() .. "K26_POI_BS", -1)
gui.show_message("Kortz Center Heist", "Scope Out completed")
else
stats.set_int(MPX() .. "K26_ROBBERY_PROG", scope_current & ~1)
gui.show_message("Kortz Center Heist", "Scope Out undone")
end
end
ToggleBitDropdown("Alpha Mail Disguise", "K26_ROBBERY_PROG", 2, "Disguise to enter building")
ToggleBitDropdown("Staff Key Card", "K26_ROBBERY_PROG", 8, "Access to staff areas")
ToggleBitDropdown("Hacking Device", "K26_ROBBERY_PROG", 32, "Required for vault door")
ToggleBitDropdown("Access Code", "K26_ROBBERY_PROG", 64, "Code for security terminal")
ImGui.Dummy(0, 8)
-- OPTIONAL PREPS
ImGui.TextColored(0.6, 0.6, 0.6, 1.0, "OPTIONAL PREPS")
ImGui.SameLine()
RainbowInfo("Optional preps that can help but aren't required.")
ImGui.Separator()
ToggleBitDropdown("Hazmat Suit", "K26_ROBBERY_PROG", 4, "Access to chemical area")
ToggleBitDropdown("Tactical Equipment", "K26_ROBBERY_PROG", 16, "Body armor and gear")
ToggleBitDropdown("Annihilator Stealth", "K26_ROBBERY_PROG", 512, "Stealth helicopter")
ToggleBitDropdown("Manchez", "K26_ROBBERY_PROG", 1024, "Motorcycle")
ToggleBitDropdown("EMP Charges", "K26_ROBBERY_PROG", 2048, "Disable electronics")
ToggleBitDropdown("Guard Shipments", "K26_ROBBERY_PROG", 4096, "Weaken security")
ImGui.Dummy(0, 8)
-- OPTIONAL UPGRADES
ImGui.TextColored(0.6, 0.6, 0.6, 1.0, "OPTIONAL UPGRADES")
ImGui.SameLine()
RainbowInfo("Extra upgrades for loadouts, entrances, and vehicles.")
ImGui.Separator()
ToggleBitDropdown("Vault Keypad", "K26_GENERAL_BS", 16, "Bypass vault keypad")
ToggleBitDropdown("EMP Charges (Upgrade)", "K26_GENERAL_BS", 256, "EMP upgrade")
ToggleBitDropdown("Street Loadout", "K26_GENERAL_BS", 512, "Basic weapons")
ToggleBitDropdown("Security Loadout", "K26_GENERAL_BS", 1024, "Better weapons")
ToggleBitDropdown("Military Loadout", "K26_GENERAL_BS", 2048, "Top weapons")
ToggleBitDropdown("Staff Entrance", "K26_GENERAL_BS", 4096, "Staff entry point")
ToggleBitDropdown("Sewer", "K26_GENERAL_BS", 32768, "Sewer entry point")
ToggleBitDropdown("Manhole Key Location", "K26_GENERAL_BS", 65536, "Find manhole key")
ToggleBitDropdown("Red Manchez", "K26_GENERAL_BS", 131072, "Red motorcycle")
ToggleBitDropdown("Blue Manchez", "K26_GENERAL_BS", 262144, "Blue motorcycle")
ToggleBitDropdown("Green Manchez", "K26_GENERAL_BS", 524288, "Green motorcycle")
ToggleBitDropdown("Yellow Manchez", "K26_GENERAL_BS", 1048576, "Yellow motorcycle")
ToggleBitDropdown("Advanced Avionics", "K26_GENERAL_BS", 8388608, "Better helicopter")
ToggleBitDropdown("Manhole Key", "K26_GENERAL_BS", 134217728, "Sewer access key")
ToggleBitDropdown("Weak Guards", "K26_GENERAL_BS", -2147483648, "Easier guards")
ImGui.Dummy(0, 8)
-- POINTS OF INTEREST
ImGui.TextColored(0.6, 0.6, 0.6, 1.0, "POINTS OF INTEREST")
ImGui.SameLine()
RainbowInfo("Scope all points of interest to unlock optional preps.")
ImGui.Separator()
local poi_current = stats.get_int(MPX() .. "K26_POI_BS")
local poi_idx = (poi_current == -1) and 1 or 0
local poi_new, poi_changed = ImGui.Combo("Points of Interest Scoped", poi_idx, { "Not Done", "Done" }, 2)
if poi_changed then
stats.set_int(MPX() .. "K26_POI_BS", poi_new == 1 and -1 or 0)
gui.show_message("Kortz Center Heist", poi_new == 1 and "POI scoped" or "POI unscoped")
end
ImGui.Dummy(0, 8)
-- SECONDARY TARGETS
ImGui.TextColored(0.6, 0.6, 0.6, 1.0, "SECONDARY TARGETS")
ImGui.SameLine()
RainbowInfo("Scope all secondary targets for extra loot.")
ImGui.Separator()
local scop_current = stats.get_int(MPX() .. "K26_SCOPING_BS")
local scop_idx = (scop_current == -1) and 1 or 0
local scop_new, scop_changed = ImGui.Combo("All Secondary Targets Scoped", scop_idx, { "Not Done", "Done" }, 2)
if scop_changed then
stats.set_int(MPX() .. "K26_SCOPING_BS", scop_new == 1 and -1 or 0)
gui.show_message("Kortz Center Heist", scop_new == 1 and "Secondary targets scoped" or "Secondary targets unscoped")
end
ImGui.Dummy(0, 8)
-- QUICK ACTIONS
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "QUICK ACTIONS")
ImGui.SameLine()
RainbowInfo("Complete all selections or reset to just show selected target.")
ImGui.Separator()
if ImGui.Button("Complete All Selections") then
local general_bits = -1
general_bits = general_bits & ~(1 << 28)
stats.set_int(MPX() .. "K26_GENERAL_BS", general_bits)
stats.set_int(MPX() .. "K26_ROBBERY_PROG", 65535)
stats.set_int(MPX() .. "K26_SCOPING_BS", -1)
stats.set_int(MPX() .. "K26_POI_BS", -1)
stats.set_int(MPX() .. "K26_HEIST_TARGET", k26_heist_target)
KortzReloadBoard()
gui.show_message("Kortz Center Heist", "All selections completed in Normal Mode")
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Complete ALL dropdown selections.\nKeeps Normal Mode active (Hard Mode NOT enabled).")
end
ImGui.SameLine()
if ImGui.Button("Reset (Keep Target Only)") then
stats.set_int(MPX() .. "K26_ROBBERY_PROG", 1)
stats.set_int(MPX() .. "K26_SCOPING_BS", -1)
stats.set_int(MPX() .. "K26_POI_BS", -1)
stats.set_int(MPX() .. "K26_GENERAL_BS", 0)
stats.set_int(MPX() .. "K26_HEIST_TARGET", k26_heist_target)
KortzReloadBoard()
gui.show_message("Kortz Center Heist", "Reset done, target kept: " .. targetShortNames[k26_heist_target + 1])
end
if ImGui.IsItemHovered() then
ImGui.SetTooltip("Reset all preps and upgrades.\nOnly the currently selected target from dropdown will remain.")
end
ImGui.Dummy(0, 8)
-- BOARD MANAGEMENT
ImGui.TextColored(0.6, 0.6, 0.6, 1.0, "BOARD MANAGEMENT")
ImGui.SameLine()
RainbowInfo("Refresh the planning board to see changes.")
ImGui.Separator()
if ImGui.Button("Reload Planning Board") then
KortzReloadBoard()
end
ImGui.Dummy(0, 8)
-- EXTRAS
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "EXTRAS")
ImGui.SameLine()
RainbowInfo("Additional tools for the heist.")
ImGui.Separator()
if ImGui.Button("Skip Cutscene") then
SkipCutscene()
gui.show_message("Kortz Center Heist", "Cutscene skipped")
end
end)
-- ============================================
-- MISSION CRACKER TAB
-- ============================================
KortzCenterCrackerMenu = KortzCenterHeistMenu:add_tab("Mission Cracker")
KortzCenterCrackerMenu:add_imgui(function()
if isOffline() then return end
local heistActive = isKortzHeistActive()
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "AUTO DOOR HACKS")
ImGui.SameLine()
RainbowInfo("Automatically bypass hacks when they appear.")
ImGui.Separator()
autoHacks, _ = ImGui.Checkbox("Enable Auto Door Hacks", autoHacks)
if not heistActive then
ImGui.TextColored(1.0, 0.8, 0.0, 1.0, "Start heist first to use auto hacks")
end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "MANUAL DOOR HACKS")
ImGui.SameLine()
RainbowInfo("Click to bypass hacks manually.")
ImGui.Separator()
if ImGui.Button("Skip Data Crack") then KortzSkipDataCrack() end
ImGui.SameLine()
if ImGui.Button("Skip Fingerprint Hack") then KortzSkipFingerprint() end
ImGui.SameLine()
if ImGui.Button("Skip Vault Door Hack") then KortzSkipVaultDoor() end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "ACCESS & SECURITY")
ImGui.SameLine()
RainbowInfo("Bypass security systems.")
ImGui.Separator()
if ImGui.Button("Auto-Enter Access Code") then KortzAutoAccessCode() end
ImGui.SameLine()
if ImGui.Button("Disable Lasers") then KortzDisableLasers() end
if ImGui.Button("Lasers: Easy") then KortzSetLasersEasy() end
ImGui.SameLine()
if ImGui.Button("Lasers: Hard") then KortzSetLasersHard() end
ImGui.SameLine()
if ImGui.Button("No Damage Lasers") then KortzNoDamageLasers() end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "GLASS CUTTING")
ImGui.SameLine()
RainbowInfo("Cut display case glass instantly.")
ImGui.Separator()
if ImGui.Button("Cut All Glass") then KortzCutAllGlass() end
ImGui.SameLine()
if ImGui.Button("Venus d'Algernon") then CutVenus() end
ImGui.SameLine()
if ImGui.Button("Gemstone") then CutGemstone() end
if ImGui.Button("Horse") then CutHorse() end
ImGui.SameLine()
if ImGui.Button("Coquard Carcanet") then CutCoquard() end
ImGui.SameLine()
if ImGui.Button("Memento Non Mori") then CutMemento() end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "SOLO SECONDARY TARGETS")
ImGui.SameLine()
RainbowInfo("Enable secondary targets for solo play.")
ImGui.Separator()
if ImGui.Button("Enable Solo Secondary Targets (B2 Floor)") then
EnableSoloSecondaryTargets()
end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "TARGETS")
ImGui.SameLine()
RainbowInfo("Grab targets instantly (stand near them).")
ImGui.Separator()
if ImGui.Button("Take Primary Target") then KortzTakePrimary() end
ImGui.SameLine()
if ImGui.Button("Take Secondary Target") then KortzTakeSecondary() end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "LOOT TAKE")
ImGui.SameLine()
RainbowInfo("Set loot take value.")
ImGui.Separator()
ImGui.Text(GetKortzTakeText())
kortzLootTakeValue, _ = ImGui.InputInt("##KortzLootTake", kortzLootTakeValue)
if ImGui.Button("Set Loot Take") then KortzSetLootTake(kortzLootTakeValue) end
ImGui.Dummy(0, 5)
ImGui.TextColored(1.0, 0.8, 0.2, 1.0, "GLASS CASE STATUS")
ImGui.SameLine()
RainbowInfo("Current status of all display cases.")
ImGui.Separator()
for i = 0, 4 do
local progress = locals.get_float(FMCV3, KCCGL_BASE + (i * 13) + KCCGL_OFFSET)
local status = "Available"
local r, g, b = 1.0, 0.0, 0.0
if progress >= 100.0 then
status = "Cut"
r, g, b = 0.0, 1.0, 0.0
elseif progress == 0 then
status = "Empty"
r, g, b = 0.5, 0.5, 0.5
end
ImGui.TextColored(r, g, b, 1.0, glassCaseTypes[i] .. ": " .. glassCaseNames[i] .. " - " .. status)
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Heist Teleports (arcade, casino, robberies) --
HeistTeleportsMenu = HeistsDataEditorMenu:add_tab("Heist Teleports")
local function TP_BlipOrFixed(blipId, fx, fy, fz, keepVehicle)
script.run_in_fiber(function()
local blip = HUD.GET_FIRST_BLIP_INFO_ID(blipId)
if blip ~= 0 and HUD.DOES_BLIP_EXIST(blip) then
local p = HUD.GET_BLIP_COORDS(blip)
selfTP(keepVehicle or false, false, p)
else
selfTP(keepVehicle or false, false, vec3:new(fx, fy, fz))
end
end)
end
local function TP_Fixed(fx, fy, fz, keepVehicle)
script.run_in_fiber(function()
selfTP(keepVehicle or false, false, vec3:new(fx, fy, fz))
end)
end
HeistTeleportsMenu:add_imgui(function()
if isOffline() then return end
ImGui.Text("Arcade / Casino Exterior")
ImGui.Separator()
if ImGui.Button("Arcade (Owned)") then
TP_BlipOrFixed(740, 1721.0, -1653.0, 13.0, false)
end
ImGui.SameLine()
if ImGui.Button("Videogeddon Arcade") then
TP_Fixed(1721.0, -1653.0, 13.0, false)
end
if ImGui.Button("Diamond Casino Entrance") then
TP_Fixed(925.0, 46.0, 81.1, false)
end
ImGui.SameLine()
if ImGui.Button("Casino Parking") then
TP_Fixed(900.0, -103.0, 75.0, true)
end
ImGui.Dummy(1, 8)
ImGui.Text("Casino Interior (from Kiddions)")
ImGui.Separator()
if ImGui.Button("Vault 1") then TP_Fixed(2510.261475, -224.366699, -72.037163, false) end
ImGui.SameLine()
if ImGui.Button("Vault 2") then TP_Fixed(2533.521729, -225.209366, -72.037163, false) end
ImGui.SameLine()
if ImGui.Button("Vault 3") then TP_Fixed(2537.823486, -237.452118, -72.037163, false) end
if ImGui.Button("Vault 4") then TP_Fixed(2534.049561, -248.194931, -72.037163, false) end
ImGui.SameLine()
if ImGui.Button("Vault 5") then TP_Fixed(2520.342773, -255.425705, -72.037178, false) end
ImGui.SameLine()
if ImGui.Button("Vault 6") then TP_Fixed(2509.844238, -250.968552, -72.03717, false) end
if ImGui.Button("Vault Lobby Enter") then TP_Fixed(2521.761719, -287.359192, -60.022976, false) end
ImGui.SameLine()
if ImGui.Button("Vault Lobby Exit") then TP_Fixed(2521.876709, -284.334869, -60.022999, false) end
ImGui.Dummy(1, 8)
ImGui.Text("Cayo Perico (from Kiddions)")
ImGui.Separator()
if ImGui.Button("Main Dock") then TP_Fixed(4947.496094, -5168.458008, 1.23427, true) end
ImGui.SameLine()
if ImGui.Button("Main Loot") then TP_Fixed(5010.06543, -5751.291504, 14.184451, false) end
ImGui.SameLine()
if ImGui.Button("Office") then TP_Fixed(5010.203613, -5753.518555, 27.545284, false) end
if ImGui.Button("Vault Loot") then TP_Fixed(4999.76416, -5747.86377, 14.84, false) end
ImGui.SameLine()
if ImGui.Button("Main Loot Gate") then TP_Fixed(5009.156738, -5753.71582, 14.173852, false) end
ImGui.SameLine()
if ImGui.Button("North Safe") then TP_Fixed(4961.050781, -5791.280762, 24.966309, false) end
if ImGui.Button("Storage 1") then TP_Fixed(5080.922852, -5756.109375, 14.529856, false) end
ImGui.SameLine()
if ImGui.Button("Storage 2") then TP_Fixed(5028.794922, -5735.571777, 16.565603, false) end
ImGui.SameLine()
if ImGui.Button("Storage 3") then TP_Fixed(5008.02002, -5787.345215, 16.531713, false) end
if ImGui.Button("Storage 4") then TP_Fixed(5000.289062, -5749.532715, 13.540483, false) end
ImGui.SameLine()
if ImGui.Button("Power Station") then TP_Fixed(4477.102539, -4597.295898, 4.283014, true) end
ImGui.SameLine()
if ImGui.Button("Comm Tower") then TP_Fixed(5266.018555, -5427.736328, 64.297134, false) end
if ImGui.Button("Cayo Exit") then TP_Fixed(4990.778809, -5716.004395, 18.58021, false) end
ImGui.SameLine()
if ImGui.Button("Cayo Airstrip") then TP_Fixed(4437.779785, -4447.757812, 3.028435, true) end
ImGui.Dummy(1, 8)
ImGui.Text("Classic Robberies")
ImGui.Separator()
if ImGui.Button("Fleeca Bank (Burton)") then
TP_Fixed(147.0, -1045.0, 29.4, false)
end
ImGui.SameLine()
if ImGui.Button("Pacific Standard Bank") then
TP_Fixed(235.0, 217.0, 106.3, false)
end
if ImGui.Button("Doomsday Facility (Owned)") then
TP_BlipOrFixed(590, 1274.0, 4126.0, 31.0, true)
end
ImGui.Dummy(1, 8)
ImGui.Text("Agency / Dre (from Kiddions)")
ImGui.Separator()
if ImGui.Button("Dre 1") then TP_Fixed(507.766602, -605.932678, 23.451139, false) end
ImGui.SameLine()
if ImGui.Button("Dre 2") then TP_Fixed(-927.370483, -2923.859131, 12.644426, false) end
ImGui.SameLine()
if ImGui.Button("Dre 3") then TP_Fixed(-933.519897, -3010.231201, 18.540413, false) end
ImGui.SameLine()
if ImGui.Button("Dre 4") then TP_Fixed(-3036.250488, 111.499924, 10.599296, false) end
if ImGui.Button("ULP Place") then TP_Fixed(101.928909, -662.696899, 43.792946, false) end
ImGui.SameLine()
if ImGui.Button("Intelligence A") then TP_Fixed(102.285995, -743.904236, 44.454739, false) end
ImGui.SameLine()
if ImGui.Button("Intelligence B") then TP_Fixed(853.439697, -2339.465088, 29.033638, true) end
ImGui.Dummy(1, 8)
ImGui.Text("New Robberies")
ImGui.Separator()
if ImGui.Button("Kortz Center Entrance") then
TP_Fixed(-2243.0, -325.0, 33.0, false)
end
ImGui.SameLine()
if ImGui.Button("Cluckin Bell Factory") then
TP_Fixed(-139.0, 6261.0, 31.5, true)
end
if ImGui.Button("Agency (Owned)") then
TP_BlipOrFixed(826, 375.0, -66.0, 92.0, false)
end
ImGui.SameLine()
if ImGui.Button("Auto Shop (Owned)") then
TP_BlipOrFixed(779, 124.0, -1799.0, 29.0, false)
end
if ImGui.Button("Salvage Yard (Owned)") then
TP_BlipOrFixed(867, 1145.0, -1792.0, 23.0, false)
end
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MissionsSelectorAndCooldownMenu = makeOnlineTab(L7NEG:add_tab("Missions Selector And cooldown Menu"))
MissionsSelectorAndCooldownMenu:add_button("Remove Dax Fooligan missions CoolDown ", function()
stats.set_int(MPX() .. "XM22JUGGALOWORKCDTIMER", -1)
end)
MissionsSelectorAndCooldownMenu:add_button("Remove VIP/MC Cooldown", function()
stats.set_int("MPPLY_VIPGAMEPLAYDISABLEDTIMER", 0)
end)
MissionsSelectorAndCooldownMenu:add_button("Skip Yacht Missions", function()
stats.set_int(MPX() .. "YACHT_MISSION_PROG", 0)
stats.set_int(MPX() .. "YACHT_MISSION_FLOW", 21845)
stats.set_int(MPX() .. "CASINO_DECORATION_GIFT_1", -1)
end)
MissionsSelectorAndCooldownMenu:add_button("LSA Operations Instant-Finish", function()
locals.set_int(SMUGOPS, LSAIFl1, 1)
locals.set_int(SMUGOPS, LSAIFl2, -2145370496)
gui.show_message("LSA Operations", "Mission should've been finished")
end)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CreditsMenu = L7NEG:add_tab("Credits")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Yimura = CreditsMenu:add_tab("Yimura and his team/maintainers")
Yimura:add_text("Source:")
Yimura:add_text("https://github.com/Mr-X-GTA/YimMenu")
Yimura:add_text("https://github.com/YimMenu/YimMenuV2")
SILENTSALO = CreditsMenu:add_tab("Silent")
SILENTSALO:add_text("Source:")
SILENTSALO:add_text("https://github.com/SilentSal0/Silent-Night")
SILENTSALO:add_text("Maintained by nightli:")
SILENTSALO:add_text("https://github.com/xnightli06x/Silent-Night")
XESDDOOG = CreditsMenu:add_tab("SAMURAI aka xesdoog")
XESDDOOG:add_text("Source:")
XESDDOOG:add_text("https://github.com/YimMenu-Lua/YimResupplier")
IMAGINENOTHING = CreditsMenu:add_tab("ImagineNothing")
IMAGINENOTHING:add_text("For Kortz Center Heist stats and Locals/globals:")
IMAGINENOTHING:add_text("https://www.unknowncheats.me/forum/4742522-post603.html")
IMAGINENOTHING:add_text("https://www.unknowncheats.me/forum/4746347-post762.html")
SLON = CreditsMenu:add_tab("SLON")
SLON:add_text("Source:")
SLON:add_text("https://www.unknowncheats.me/forum/grand-theft-auto-v/591335-yimceo-ceo-crates-method-yimmenu.html")
Alestarov = CreditsMenu:add_tab("Alestarov")
Alestarov:add_text("Source:")
Alestarov:add_text("https://github.com/YimMenu-Lua/Alestarov-Menu")
YOUMENU = CreditsMenu:add_tab("And You <3")
YOUMENU:add_text(
"Yes You Without You Or Your PRs and support You Give Me This Script Would Be Nothing Fr So Big Thanks To You All"
)
YOUMENU:add_text("You can report Bugs And Make PRs With Features Down Bellow:")
YOUMENU:add_text("https://github.com/UltimateMenu/UltimateMenu/issues")
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------