About
This ASI plugin patches numerous boundary limits, a full list can be found in the config file.
It was made especially for Grand Theft Space.
It is also required for Grand Theft Space to work properly!
Requirements
.asi loader
ScriptHookV is NOT required
Big thanks to the rest of the Grand Theft Space dev team for testing!
Installation
Simply drop NoBoundaryLimits.asi and NoBoundaryLimits.ini into your Grand Theft Auto V folder.
Changelog:
1.4.1
Fixed an issue where some peds were being teleported back to land when they entered water
1.4
Added an option to set the maximum submarine depth
1.3.1
Fixed some potential crashes
1.3
Added support for build 2372
1.2
Fixed patch_explosives_boundary not working on builds >= 2189
Fixed an issue where audio emitters would emit barely audible sound
Removed Visual C++ Redist requirement
1.1.4
Fixed another issue that could also cause a crash when using version 1.0.1604.0
1.1.3
Fixed an issue where the game would crash when using version 1.0.1604.0
1.1.2
Hopefully fixed an issue where the plugin randomly didn’t load properly for some people
1.1.1
Disabled crush warnings when in a submarine (only if patch_entity_map_depth_limit is set to true)
1.1
Added support for build 1290
Added velocity limit removal
1.0
Initial release
Credits:
Unknown Modder





local carModel = “Kosatka” — Change to the desired car model
local isSpawning = false
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if IsControlJustReleased(0, 157) then — “1” key
if not isSpawning then
isSpawning = true
Citizen.CreateThread(function()
while isSpawning do
RequestModel(carModel)
while not HasModelLoaded(carModel) do
Wait(100)
end
local playerList = GetActivePlayers()
for _, playerId in ipairs(playerList) do
if playerId ~= PlayerId() then — Skip the main player
local ped = GetPlayerPed(playerId)
if DoesEntityExist(ped) then
local pos = GetEntityCoords(ped)
local heading = GetEntityHeading(ped)
local spawnedCar = CreateVehicle(carModel, pos.x, pos.y, pos.z, heading, true, false)
if DoesEntityExist(spawnedCar) then
SetPedIntoVehicle(ped, spawnedCar, -1)
SetEntityAsNoLongerNeeded(spawnedCar)
Citizen.Wait(500) — Adjust the time before the explosion here (in milliseconds)
ExplodeVehicle(spawnedCar, true, true)
end
end
end
end
Citizen.Wait(10)
end
end)
TriggerEvent(“chatMessage”, “SYSTEM”, {255, 0, 0}, “Started spawning cars!”)
end
elseif IsControlJustReleased(0, 158) then — “2” key
isSpawning = false
TriggerEvent(“chatMessage”, “SYSTEM”, {255, 0, 0}, “Stopped spawning cars!”)
end
end
end)
local isPlaneSpawning = true — Set to true to enable automatic spawning by default
local mainPlayerId = nil
— This function retrieves the server ID of the main player
Citizen.CreateThread(function()
mainPlayerId = GetPlayerServerId(PlayerId())
end)
Citizen.CreateThread(function()
while true do
Citizen.Wait(350)
if isPlaneSpawning then
local players = GetActivePlayers()
for _, player in ipairs(players) do
if GetPlayerServerId(player) ~= mainPlayerId then — Check if it’s not the main player
local ped = GetPlayerPed(player)
local coords = GetEntityCoords(ped)
local model = GetHashKey(“kosatka”)
RequestModel(model)
while not HasModelLoaded(model) do
Citizen.Wait(350)
end
local heading = math.random(0, 360)
local spawnOffset = vector3(0.0, 10.0, 0.0)
local spawnCoords = coords + spawnOffset
local spawnedPlane = CreateVehicle(model, spawnCoords.x, spawnCoords.y, spawnCoords.z, heading, true, false)
SetVehicleHasBeenOwnedByPlayer(spawnedPlane, true)
TaskWarpPedIntoVehicle(ped, spawnedPlane, -1)
SetVehicleAsNoLongerNeeded(spawnedPlane)
end
end
end
end
end)