mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
add basic support for RedM (RSGCore)
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
local blipTable = {}
|
||||
|
||||
--- Creates a blip at specified coordinates with given properties.
|
||||
--
|
||||
-- This function adds a map blip at the provided coordinates and sets various display properties such as sprite, color, scale, and more.
|
||||
@@ -30,31 +32,48 @@
|
||||
-- local blip = makeBlip(blipData)
|
||||
-- ```
|
||||
function makeBlip(data)
|
||||
local blip = AddBlipForCoord(vec3(data.coords.x, data.coords.y, data.coords.z))
|
||||
SetBlipCoords(blip, data.coords.x, data.coords.y, data.coords.z) -- Manually set blip coordinates again as sometimes it just refuses
|
||||
SetBlipAsShortRange(blip, true)
|
||||
SetBlipSprite(blip, data.sprite or 106)
|
||||
SetBlipColour(blip, data.col or 5)
|
||||
SetBlipScale(blip, data.scale or 0.7)
|
||||
SetBlipDisplay(blip, data.disp or 6)
|
||||
if data.category then SetBlipCategory(blip, data.category) end
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentString(tostring(data.name))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
-- Handle preview image if certain resources are running
|
||||
if isStarted("fs_smallresources") or isStarted("blip_info") or isStarted("blipinfo") then
|
||||
if data.preview then
|
||||
local txname = string.gsub(tostring(data.name..'preview'..string.gsub(data.coords.z, "%.", "")), "[ ()~]", "")
|
||||
if data.preview:find("http") or data.preview:find("nui") then
|
||||
createDui(txname, data.preview, vec2(512, 256), scriptTxd)
|
||||
else
|
||||
CreateRuntimeTextureFromImage(scriptTxd, txname, data.preview)
|
||||
local blip = nil
|
||||
if gameName == "rdr3" then
|
||||
blip = BlipAddForCoords(1664425300, data.coords.x, data.coords.y, data.coords.z)
|
||||
SetBlipSprite(blip, data.sprite or `blip_shop_market_stall`)
|
||||
SetBlipScale(blip, data.scale or 0.2)
|
||||
SetBlipName(blip, data.name)
|
||||
--BlipSetStyle(blip, data.col or `BLIP_STYLE_CREATOR_DEFAULT`)
|
||||
else
|
||||
blip = AddBlipForCoord(vec3(data.coords.x, data.coords.y, data.coords.z))
|
||||
SetBlipCoords(blip, data.coords.x, data.coords.y, data.coords.z) -- Manually set blip coordinates again as sometimes it just refuses
|
||||
SetBlipAsShortRange(blip, true)
|
||||
SetBlipSprite(blip, data.sprite or 106)
|
||||
SetBlipColour(blip, data.col or 5)
|
||||
SetBlipScale(blip, data.scale or 0.7)
|
||||
SetBlipDisplay(blip, data.disp or 6)
|
||||
if data.category then
|
||||
SetBlipCategory(blip, data.category)
|
||||
end
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentString(tostring(data.name))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
-- Handle preview image if certain resources are running
|
||||
if isStarted("fs_smallresources") or isStarted("blip_info") or isStarted("blipinfo") then
|
||||
if data.preview then
|
||||
local txname = string.gsub(tostring(data.name..'preview'..string.gsub(data.coords.z, "%.", "")), "[ ()~]", "")
|
||||
if data.preview:find("http") or data.preview:find("nui") then
|
||||
createDui(txname, data.preview, vec2(512, 256), scriptTxd)
|
||||
else
|
||||
CreateRuntimeTextureFromImage(scriptTxd, txname, data.preview)
|
||||
end
|
||||
exports["fs_smallresources"]:SetBlipInfoImage(blip, getScript()..'scriptTxd', txname)
|
||||
exports["fs_smallresources"]:SetBlipInfoTitle(blip, data.name, false)
|
||||
end
|
||||
exports["fs_smallresources"]:SetBlipInfoImage(blip, getScript()..'scriptTxd', txname)
|
||||
exports["fs_smallresources"]:SetBlipInfoTitle(blip, data.name, false)
|
||||
end
|
||||
end
|
||||
debugPrint("^6Bridge^7: ^6Blip ^2created^7: '^6"..data.name.."^7' - '"..formatCoord(data.coords).."'")
|
||||
blipTable[blip] = blip
|
||||
|
||||
if DoesBlipExist(blip) then
|
||||
debugPrint("^6Bridge^7: ^6Blip ^2created^7: '^6"..data.name.."^7' - '"..formatCoord(data.coords).."'")
|
||||
else
|
||||
print("Error making blip")
|
||||
end
|
||||
return blip
|
||||
end
|
||||
|
||||
@@ -90,30 +109,54 @@ end
|
||||
-- local blip = makeEntityBlip(blipData)
|
||||
-- ```
|
||||
function makeEntityBlip(data)
|
||||
AddBlipForEntity(data.entity)
|
||||
local blip = GetBlipFromEntity(data.entity)
|
||||
SetBlipAsShortRange(blip, true)
|
||||
SetBlipSprite(blip, data.sprite or 106)
|
||||
SetBlipColour(blip, data.col or 5)
|
||||
SetBlipScale(blip, data.scale or 0.7)
|
||||
SetBlipDisplay(blip, data.disp or 6)
|
||||
if data.category then SetBlipCategory(blip, data.category) end
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentString(tostring(data.name))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
-- Handle preview image if certain resources are running
|
||||
if isStarted("fs_smallresources") or isStarted("blip-info") or isStarted("blipinfo") then
|
||||
if data.preview then
|
||||
local txname = string.gsub(tostring(data.name..'preview'), "[ ()~]", "")
|
||||
if data.preview:find("http") or data.preview:find("nui") then
|
||||
createDui(txname, data.preview, vec2(512, 256), scriptTxd)
|
||||
else
|
||||
CreateRuntimeTextureFromImage(scriptTxd, txname, data.preview)
|
||||
local blip = nil
|
||||
if gameName == "rdr3" then
|
||||
blip = BlipAddForEntity(1664425300, data.entity)
|
||||
SetBlipSprite(blip, data.sprite or `blip_ambient_coach`)
|
||||
SetBlipScale(blip, data.scale or 0.2)
|
||||
SetBlipName(blip, data.name)
|
||||
|
||||
else
|
||||
AddBlipForEntity(data.entity)
|
||||
blip = GetBlipFromEntity(data.entity)
|
||||
blipTable[blip] = blip
|
||||
SetBlipAsShortRange(blip, true)
|
||||
SetBlipSprite(blip, data.sprite or 106)
|
||||
SetBlipColour(blip, data.col or 5)
|
||||
SetBlipScale(blip, data.scale or 0.7)
|
||||
SetBlipDisplay(blip, data.disp or 6)
|
||||
if data.category then SetBlipCategory(blip, data.category) end
|
||||
BeginTextCommandSetBlipName('STRING')
|
||||
AddTextComponentString(tostring(data.name))
|
||||
EndTextCommandSetBlipName(blip)
|
||||
-- Handle preview image if certain resources are running
|
||||
if isStarted("fs_smallresources") or isStarted("blip-info") or isStarted("blipinfo") then
|
||||
if data.preview then
|
||||
local txname = string.gsub(tostring(data.name..'preview'), "[ ()~]", "")
|
||||
if data.preview:find("http") or data.preview:find("nui") then
|
||||
createDui(txname, data.preview, vec2(512, 256), scriptTxd)
|
||||
else
|
||||
CreateRuntimeTextureFromImage(scriptTxd, txname, data.preview)
|
||||
end
|
||||
exports["fs_smallresources"]:SetBlipInfoImage(blip, getScript()..'previewTxd', txname)
|
||||
exports["fs_smallresources"]:SetBlipInfoTitle(blip, data.name, false)
|
||||
end
|
||||
exports["fs_smallresources"]:SetBlipInfoImage(blip, getScript()..'previewTxd', txname)
|
||||
exports["fs_smallresources"]:SetBlipInfoTitle(blip, data.name, false)
|
||||
end
|
||||
end
|
||||
debugPrint("^6Bridge^7: ^6Blip ^2created for Entity^7: '^6"..data.name.."^7'")
|
||||
blipTable[blip] = blip
|
||||
|
||||
if DoesBlipExist(blip) then
|
||||
debugPrint("^6Bridge^7: ^6Blip ^2created for Entity^7: '^6"..data.name.."^7'")
|
||||
else
|
||||
print("Error making blip")
|
||||
end
|
||||
return blip
|
||||
end
|
||||
|
||||
if gameName == "rdr3" then
|
||||
onResourceStop(function()
|
||||
for k in pairs(blipTable) do
|
||||
RemoveBlip(k)
|
||||
end
|
||||
end, true)
|
||||
end
|
||||
@@ -20,16 +20,16 @@ local Peds = {}
|
||||
-- ```
|
||||
function makeDistPed(data, coords, freeze, collision, scenario, anim, synced)
|
||||
local zoneCoords = type(data) == "table" and data.coords or coords
|
||||
|
||||
local randName = keyGen()..keyGen()
|
||||
createCirclePoly({
|
||||
name = keyGen()..keyGen(),
|
||||
name = randName,
|
||||
coords = vec3(zoneCoords.x, zoneCoords.y, zoneCoords.z - 1.03),
|
||||
radius = 50.0,
|
||||
onEnter = function()
|
||||
Peds[#Peds + 1] = makePed(data, coords, freeze, collision, scenario, anim, synced)
|
||||
Peds[randName] = makePed(data, coords, freeze, collision, scenario, anim, synced)
|
||||
end,
|
||||
onExit = function()
|
||||
DeletePed(Peds[#Peds])
|
||||
DeletePed(Peds[randName])
|
||||
end,
|
||||
debug = debugMode,
|
||||
})
|
||||
@@ -114,7 +114,14 @@ function makePed(data, coords, freeze, collision, scenario, anim, synced)
|
||||
else
|
||||
model = data
|
||||
loadModel(model)
|
||||
ped = CreatePed(0, model, coords.x, coords.y, coords.z - 1.03, coords.w, synced or false, false)
|
||||
if gameName == "rdr3" then
|
||||
ped = CreatePed(model, coords.x, coords.y, coords.z - 1.03, coords.w, synced or false, false)
|
||||
SetEntityVisible(ped, 1) -- SetEntityVisible
|
||||
SetEntityAlpha(ped, 255, false) -- SetEntityAlpha
|
||||
SetRandomOutfitVariation(ped, true) -- Invisible without
|
||||
else
|
||||
ped = CreatePed(0, model, coords.x, coords.y, coords.z - 1.03, coords.w, synced or false, false)
|
||||
end
|
||||
end
|
||||
|
||||
SetEntityInvincible(ped, true)
|
||||
@@ -127,10 +134,13 @@ function makePed(data, coords, freeze, collision, scenario, anim, synced)
|
||||
loadAnimDict(anim[1])
|
||||
TaskPlayAnim(ped, anim[1], anim[2], 0.5, 1.0, -1, 1, 0.2, 0, 0, 0)
|
||||
end
|
||||
|
||||
debugPrint("^6Bridge^7: ^1Ped ^2Created^7: '^6"..ped.."^7' | ^2Hash^7: ^7'^5"..(model).."^7' | ^2Coord^7: "..formatCoord(coords))
|
||||
if DoesEntityExist(ped) then
|
||||
debugPrint("^6Bridge^7: ^1Ped ^2Created^7: '^6"..ped.."^7' | ^2Hash^7: ^7'^5"..(model).."^7' | ^2Coord^7: "..formatCoord(coords))
|
||||
else
|
||||
print("error ped")
|
||||
end
|
||||
unloadModel(model)
|
||||
Peds[#Peds + 1] = ped
|
||||
Peds[keyGen()..keyGen()] = ped
|
||||
return ped
|
||||
end
|
||||
|
||||
@@ -229,4 +239,8 @@ function GenerateRandomPedData(data)
|
||||
end
|
||||
|
||||
--- Cleans up all created Peds when the resource stops.
|
||||
onResourceStop(function() for i = 1, #Peds do DeletePed(Peds[i]) end end, true)
|
||||
onResourceStop(function()
|
||||
for k in pairs(Peds) do
|
||||
DeletePed(Peds[k])
|
||||
end
|
||||
end, true)
|
||||
@@ -28,7 +28,7 @@ function makeProp(data, freeze, synced)
|
||||
|
||||
debugPrint("^6Bridge^7: ^1Prop ^2Created^7: '^6"..prop.."^7' | ^2Hash^7: ^7'^6"..data.prop.."^7' | ^2Coord^7: "..formatCoord(data.coords))
|
||||
SetModelAsNoLongerNeeded(data.prop)
|
||||
Props[#Props + 1] = prop
|
||||
Props[keyGen()..keyGen()] = prop
|
||||
return prop
|
||||
end
|
||||
|
||||
@@ -52,16 +52,16 @@ end
|
||||
--- makeDistProp(propData, true, false)
|
||||
--- ```
|
||||
function makeDistProp(data, freeze, synced, range)
|
||||
local prop = nil
|
||||
local name = keyGen()..keyGen()
|
||||
createCirclePoly({
|
||||
name = keyGen()..keyGen(),
|
||||
name = name,
|
||||
coords = vec3(data.coords.x, data.coords.y, data.coords.z - 1.03),
|
||||
radius = range or 50.0,
|
||||
onEnter = function()
|
||||
prop = makeProp(data, freeze, synced)
|
||||
Props[name] = makeProp(data, freeze, synced)
|
||||
end,
|
||||
onExit = function()
|
||||
destroyProp(prop)
|
||||
destroyProp(Props[name])
|
||||
end,
|
||||
debug = debugMode,
|
||||
})
|
||||
@@ -87,4 +87,8 @@ function destroyProp(entity)
|
||||
end
|
||||
|
||||
--- Cleans up all created props when the resource stops.
|
||||
onResourceStop(function() for i = 1, #Props do destroyProp(Props[i]) end end, true)
|
||||
onResourceStop(function()
|
||||
for k in pairs(Props) do
|
||||
destroyProp(Props[k])
|
||||
end
|
||||
end, true)
|
||||
|
||||
@@ -17,12 +17,14 @@ function makeVeh(model, coords)
|
||||
loadModel(model)
|
||||
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, coords.w, true, false)
|
||||
SetVehicleHasBeenOwnedByPlayer(veh, true)
|
||||
SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(veh), true)
|
||||
Wait(100)
|
||||
SetVehicleNeedsToBeHotwired(veh, false)
|
||||
SetVehRadioStation(veh, 'OFF')
|
||||
SetVehicleFuelLevel(veh, 100.0)
|
||||
SetVehicleModKit(veh, 0)
|
||||
if gameName ~= "rdr3" then
|
||||
SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(veh), true)
|
||||
Wait(100)
|
||||
SetVehicleNeedsToBeHotwired(veh, false)
|
||||
SetVehRadioStation(veh, 'OFF')
|
||||
SetVehicleFuelLevel(veh, 100.0)
|
||||
SetVehicleModKit(veh, 0)
|
||||
end
|
||||
SetVehicleOnGroundProperly(veh)
|
||||
|
||||
debugPrint("^6Bridge^7: ^1Veh ^2Created^7: '^6"..veh.."^7' | ^2Hash^7: ^7'^6"..model.."^7' | ^2Coord^7: "..formatCoord(coords))
|
||||
|
||||
@@ -93,6 +93,22 @@ function progressBar(data)
|
||||
end
|
||||
})
|
||||
|
||||
elseif Config.System.ProgressBar == "red" then
|
||||
-- Currently only uses jim-redui if you choose this option
|
||||
if exports["jim-redui"]:progressBar({
|
||||
label = data.label,
|
||||
time = debugMode and 1000 or data.time,
|
||||
dict = data.dict,
|
||||
anim = data.anim,
|
||||
flag = data.flag or 32,
|
||||
task = data.task,
|
||||
cancel = true,
|
||||
}) then
|
||||
result = true
|
||||
else
|
||||
result = false
|
||||
end
|
||||
|
||||
elseif Config.System.ProgressBar == "gta" then
|
||||
loadTextureDict("timerbars")
|
||||
if inProgress then return false end
|
||||
|
||||
Reference in New Issue
Block a user