GTA V Solo Missions & Casino Heist Patch Script for Improved 1.70 DLC
With the launch of GTA V’s Enhanced Money Front DLC (v1.70–1.71), many of you are wondering how to bypass the forced multiplayer mechanic and play things solo. Using open-source tools (Yim Menu) and support for scripting, and Lua’s syntax, a new script has now surfaced which gives you the ability to access Solo Missions, and it contains a Casino Heist board patch, with reliable results. This article will present how the script works, what it allows, and how to run this safely in your offline experience per your single-player/hybrid gaming. If you’ve enjoyed writing scripts in Yim Menu, then this will definitely make it worth your time to give it a shot. in this Script you will be able to launch the heists solo without needed of any other players to join the heists such as Casino heists, doomsday, autoshop or any other certain small missions which requires 2- 4 players you could be able to launch them solo without worrying or waiting any more in the waiting screens this also makes the person or the host to play with a peace of mind or not to worry about the sudden drops of the players from the game and this makes to restart but introducing of this script it made them more comfortable to play solo when ever they are filled to try. This Solo Launcher Script is highly useful in such areas where the person is introvert and never wanted to try to mingle with other players or has a mindset of sigma, if you’re looking into easy money methods, which has been designed specifically for GTA V Online Mode. With the script you could be able to do that like you can use the instant finish mode to instantly helps you to pass the heists without any worries or something and this gives you a quick alot of money from 1.5 million to 3.5 million per heists check and this also has the feature called as enable casino patch which means you could setup the heist preps and cuts according to your wish from now which is also a great implementation from the developer adn this serves as a time-saving solution that eliminates the repetitive grind often associated with heists completion and long boring missions. Talking more about this it also works with friends like if you want to have instant finish that helps to your friends and randoms to help you with quick easy money and also enables them toi earn quick money by easily enabling the option of instant finish once the heist is been started this way yourself and the other teammate can earn some loads of money within a quick period of time this makes the game more interesting to buy out all the luxury lifestyle in the game and once the thing is done just remove the fsl and try to play solo and grind the money using the instant finish button and make sure to follow the cut limits of the heists, thank you !!🎯 What does the script do?
This Lua script gives you a new tab in your menu labelled “Solo Missions”. In this tab, you will be able to enable solo friendly mission mechanics, force checkpoints, instantly complete objectives or fail missions for testing purposes. It also offers a toggleable Casino Heist Patch that will allow you into the final planning board, solo — which under normal conditions can only be done with multiple players and focused on online matchmaking.🛠️ Features included
Solo Missions Toggle – Adjusts global variables which will allow online missions to be played solo. Skip to Next Checkpoint – Skips mission flow using a script-local bit toggle. Instant Finish – Marks missions as complete with maximum team score and an auto-exit logic. Force Fail – allows users to purposely fail and stop missions while in progress. Casino Heist Patch – enables single player preparation for the last board in the Heist planning.Supports Both the modes like FSL / Non -FSL
Able to Save the Progress and money earned from the missions
Casino Heist Patch Enabled
Casino Heist Mantrap 2 Swipe door keycards patched
Select the Casino preps and Adjust Cuts now
Enhanced the Ability to change the Mission mode even when your on the Missions
Undetected for Battleye Engine to Detect
🔍 The Script
The script is written in Lua and uses pattern scanning, global/local memory offsets, and bitwise operations to overwrite Rockstar’s mission scripts: It targets the fmmclauncher script that launches multiplayer style missions. Edits global parameters such as minNumParticipants and numberOfTeams to 1. The script patches memory by swapping bytes to force unlocks in the Casino Heist logic. The script has the ability to be reloaded and will revert patches. Patches are only active on the existing menu. Each time the application is run, these changes and patches happen only on the current execution session.📌 How to Use
Ensure you are on GTA V Enhanced v1.70 or v1.71. Ensure you have Yim Menu installed with lua support enabled. Put the Lua script provided inside your /scripts/ directory. Load into story mode and open Yim Menu. Go to the “Solo Missions” tab. Enable the options you want using the check boxes and buttons. For Casino Heist: make sure to enable patch before launching, and disable patch after concluding.📷 Use as Intended
Play missions like Casino Heist and contact missions solo, without being matched with anybody in online. Test mission scripting, stat values, or checkpoints, without using public servers. Practice your setups and learn heist layouts solo without affecting others.⚠️ Safety Notice
The script was designed to only be used in an offline testing environment or on its own. Don’t use them in public lobbies in GTA Online. Nowhere was it intended to be used this way, and doing so can land you in a ban or flag your Rockstar account. Use only in Story Mode or private modded environments. Be sure to disable the Casino Patch immediately upon usage. Regularly back up your save data as well as your mod setup.📁 Download & Script Information
The script was written for build 3570.0, and will not allow usage on any other build to help prevent a memory mismatch crash. It utilizes: script.isactive() to provide controller checks locals.setint() and locals.setbits() to manipulate internal script value globals.setint() to manipulate the mission on execution (in progress) Patch object utilizing byte mask and enablepatch() toggle logic📌 Concluding Thoughts
Overall, Rockstar’s Enhanced single player mode was designed to be single player, that’s just how it is. Therefore, play was always highly restricted. However, the limitation of solo play for online content can be lifted cleanly, safely, and most importantly, it is highly effective. It does not matter if you want to test missions, skip checkpoints, or just want to successfully complete a Casino Heist solo. This is a very powerful onboarding in your GTA toolbox. Be sure that your build matches, use it safely, and leverage to now enjoy a lot more flexibly modded single-player experience.📎 Need Help?
Join our official Discord to receive updated versions, features, and support. Join GTA Radars DiscordHow can I do a solo heist in legacy
Answer :
One more question. How do you get 14 million from apartment even?
Code :
local SOLO_MISSIONS = gui.add_tab("Solo Missions")
function locals.set_bits(scriptName, index, ...)
local value = locals.get_int(scriptName, index)
for _, bit in ipairs({ ... }) do
value = value | (1 << bit)
end
locals.set_int(scriptName, index, value)
end
local function GetBuildNumber()
local pBnum = memory.scan_pattern("8B C3 33 D2 C6 44 24 20"):add(0x24):rip()
return pBnum:get_string()
end
local function IsOnline()
return network.is_session_started() and not script.is_active("maintransition")
end
local function GetMissionScript()
if script.is_active("fm_mission_controller") then
return "fm_mission_controller"
end
if script.is_active("fm_mission_controller_2020") then
return "fm_mission_controller_2020"
end
return nil
end
local TARGET_BUILD = "3570.0"
local CURRENT_BUILD = GetBuildNumber()
local FMMC_LAUNCHER = "fmmc_launcher"
local SoloMissions = false
local patchEnabled = false
local casinoHeistPatch = nil
-- search in fmmc_launcher.c
local scrGlobals = {
nextContentID = 4718592 + 131931, -- "nrcid" ... StringCopy(Global_...[... /*6*/]
minNumParticipants = 4718592 + 3536, -- Global_... = "minNu"
numPlayersPerTeam = 4718592 + 3542, -- regex: else\s+?{\s+?HUD::ADD_TEXT_COMPONENT_INTEGER\(Global_
criticalMinimumForTeam = 4718592 + 184007, -- "tcmin" ... Global_...[...] = 0;
numberOfTeams = 4718592 + 3539, -- Global_... = "dtn"
maxNumberOfTeams = 4718592 + 3540, -- Global_... = "tnum"
}
local function MissionHeaderMinPlayers(index)
return 794954 + 4 + 1 + index * 95 + 75 -- [5] = -1279529723; ... Global_... = 1;
end
local scrLocals = {
["fmmc_launcher"] = {
minPlayers = 19990 + 15, -- regex: Local_\d+?\.f_\d+? = 1;\s+?Global_\d+?\.f_\d+? = 1;
missionVariation = 19990 + 34, -- regex: HUD_MG_TENNIS.+?\s+.+?Local_\d+?\.f_\d+? \+ 1
},
["fm_mission_controller"] = {
serverBitSet = 19787 + 1,
serverBitSet2 = 19787 + 2,
nextMission = 19787 + 1062, -- regex: (Local_\d+?\.f_\d+?) < 6 && \1 >= 0
teamScore = 19787 + 1232 + 1, -- regex: < 4\)\s+?{\s+?(Local_\d+?\.f_\d+?\[.+?\]) = \(?\1 \+ .+?\)?;
},
["fm_mission_controller_2020"] = {
serverBitSet = 54353 + 1,
serverBitSet2 = 54353 + 2,
nextMission = 54353 + 1589, -- regex: same as above
teamScore = 54353 + 1776 + 1, -- regex: same as above
}
}
SOLO_MISSIONS:add_imgui(function()
if CURRENT_BUILD ~= TARGET_BUILD then
ImGui.Text("SoloMissions is outdated.")
return
end
if not IsOnline() then
ImGui.Text("Unavailable in Single Player.")
return
end
SoloMissions, _ = ImGui.Checkbox("Solo Missions", SoloMissions)
if ImGui.Button("Skip to Next Checkpoint") then
local mscript = GetMissionScript()
if not mscript then return end
locals.set_bits(mscript, scrLocals[mscript].serverBitSet2, 17)
end
if ImGui.Button("Instant Finish") then
local mscript = GetMissionScript()
if not mscript then return end
for i = 0, 5 do
globals.set_string(scrGlobals.nextContentID + 1 + i * 6, "", 0)
end
locals.set_int(mscript, scrLocals[mscript].nextMission, 5)
locals.set_int(mscript, scrLocals[mscript].teamScore, 999999)
locals.set_bits(mscript, scrLocals[mscript].serverBitSet, 9, 16)
end
ImGui.SameLine()
if ImGui.Button("Force Fail") then
local mscript = GetMissionScript()
if not mscript then return end
locals.set_bits(mscript, scrLocals[mscript].serverBitSet, 16, 20)
end
ImGui.Dummy(1, 10)
ImGui.SeparatorText("Casino Heist Patch")
ImGui.Spacing()
patchEnabled, Clicked = ImGui.Checkbox(
("%s Patch"):format(patchEnabled and "Disable" or "Enable"),
patchEnabled
)
if Clicked then
if patchEnabled then
if casinoHeistPatch then
casinoHeistPatch:enable_patch()
return
end
casinoHeistPatch = scr_patch:new(
"fmmc_launcher",
"SCJJAT",
"2D 01 03 00 00 5D ? ? ? 2A 06 56 05 00 5D ? ? ? 20 2A 06 56 05 00 5D",
5,
{ 0x71, 0x2E, 0x01, 0x01 }
)
else
if casinoHeistPatch then
casinoHeistPatch:disable_patch()
end
end
end
ImGui.Dummy(1, 10)
ImGui.Text("Allows you to set up the final planning board.")
ImGui.Text("Make sure it's enabled before launching the heist\nand disabled after completing the heist.")
ImGui.Text("It is not recommended to keep it enabled continuously.")
end)
if CURRENT_BUILD == TARGET_BUILD then -- don't create the thread if the script is outdated
script.register_looped("SOLO_MISSIONS", function()
if SoloMissions then
if script.is_active(FMMC_LAUNCHER) then
local index = locals.get_int(FMMC_LAUNCHER, scrLocals[FMMC_LAUNCHER].missionVariation)
if index > 0 then
locals.set_int(FMMC_LAUNCHER, scrLocals[FMMC_LAUNCHER].minPlayers, 1)
globals.set_int(MissionHeaderMinPlayers(index), 1)
end
end
globals.set_int(scrGlobals.minNumParticipants, 1)
globals.set_int(scrGlobals.numPlayersPerTeam + 1, 1)
globals.set_int(scrGlobals.criticalMinimumForTeam + 1, 0)
globals.set_int(scrGlobals.numberOfTeams, 1)
globals.set_int(scrGlobals.maxNumberOfTeams, 1)
end
end)
end
event.register_handler(menu_event.ScriptsReloaded, function()
if casinoHeistPatch then
casinoHeistPatch:disable_patch()
end
end)
Instructions : How to Inject Script With Menu
Step 1 : Make Sure you have Copied the already Yim Menu files and everything like FSL, Then Inject the Menu asusual on the LaunchpadStep 2 : Later on Join the FreeMode Session / Lobby / Solo Session as your comfortable with any of it then try to Open Yim Menu by Pressing “INSERT” Key, Then open the Settings > Lua Scripts > Open Lua Scripts Folder, once the Folder has been opened then copy and paste the script which you have downloaded into that scripts folder, as on the picture below
Video of the Script
Credits to Dev – #TCRoic Sharing the Script
📥Download Links: