Compare commits

...

19 Commits

Author SHA1 Message Date
Jim Shield
9ec7bddfe6 Merge pull request #61 from GhostInLowGear/GhostInLowGear-patch-1 2025-10-22 16:40:03 +01:00
Jim Shield
d46aa8c2cb Merge pull request #60 from oosayeroo/main 2025-10-22 16:38:57 +01:00
Jim Shield
0793554855 Merge pull request #59 from desypher/rcore_clothing_support 2025-10-22 16:36:49 +01:00
GhostInLowGear
9efc3c94cd Update playerfunctions.lua
Add tgg billing
2025-10-22 11:34:06 -04:00
Jim Shield
7e320bcb99 Version Bump
`2.1.07` - `2.1.08`
2025-10-21 16:09:33 +01:00
oosayeroo
9c66499fab Merge branch 'jimathy:main' into main 2025-10-21 11:14:30 +01:00
Jim Shield
54f96f7e77 When using lookEnt() also face players head 2025-10-20 20:10:02 +01:00
Jim Shield
dffed24fb3 Add callback to get society balance in client side 2025-10-18 23:12:38 +01:00
Jim Shield
aae2bd5021 Fix debugMode never being set after last change 2025-10-18 12:16:05 +01:00
oosayeroo
258a510452 add hunger + thirst to getPlayer
- added for esx, qb, qbox, rsg
2025-10-14 14:06:16 +01:00
oosayeroo
2ac3843fb2 Merge branch 'jimathy:main' into main 2025-10-14 09:33:15 +01:00
Jim Shield
732b07c957 Create check for broken/missing config file 2025-10-14 03:51:22 +01:00
Jim Shield
8e8010f837 Start adding stashEditMetadata()
Need help with this one

`ox_inv` provides an easy function for this but most inventories don't seem to support editing specific items in a stash

`qb-inv` currently you need to forcibly edit the sql

others I'm I'm not too sure about yet
2025-10-13 12:33:04 +01:00
desypher
696b469309 Added support for rcore_clothing in wardrobe
I have tested this on my local, feel free to merge it if you're happy to add support for rcore_clothing!
2025-10-12 01:15:30 +02:00
Jim Shield
e05815cfbd Fix getStash forcing fallback functions to run 2025-10-11 17:23:26 +01:00
oosayeroo
8d48b0d692 Merge branch 'jimathy:main' into main 2025-10-07 15:23:02 +01:00
oosayeroo
40ca0eb04d Merge branch 'jimathy:main' into main 2025-10-06 15:37:57 +01:00
oosayeroo
f53f29a4b2 Merge branch 'jimathy:main' into main 2025-10-03 13:42:13 +01:00
oosayeroo
2cf80881e4 Input.lua : allow default in oxlib "number" type 2025-09-25 02:17:48 +01:00
9 changed files with 159 additions and 24 deletions

22
.gitattributes vendored
View File

@@ -1,12 +1,16 @@
# VCS / CI noise # VCS / CI noise
.gitattributes export-ignore /.gitattributes export-ignore
.gitignore export-ignore /.gitignore export-ignore
.github/** export-ignore /.gitmodules export-ignore
.gitmodules export-ignore /.github export-ignore
# Dev tooling/config # Dev tooling/config
.vscode/** export-ignore /.vscode export-ignore
*.code-workspace export-ignore *.code-workspace export-ignore
.editorconfig export-ignore /.editorconfig export-ignore
.eslintrc* export-ignore /.eslintrc* export-ignore
.prettier* export-ignore /.prettier* export-ignore
# Omit release-only helpers
/server/restaurantchecker.lua export-ignore
/server/installitems.lua export-ignore

View File

@@ -1,6 +1,6 @@
name "Jim_Bridge" name "Jim_Bridge"
author "Jimathy" author "Jimathy"
version "2.1.07" version "2.1.08"
description "Framework Bridge By Jimathy" description "Framework Bridge By Jimathy"
fx_version "cerulean" fx_version "cerulean"
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.' rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'

View File

@@ -638,6 +638,8 @@ function lookEnt(entity)
debugPrint("^6Bridge^7: ^2Turning Player to^7: '^6"..formatCoord(entity).."^7'") debugPrint("^6Bridge^7: ^2Turning Player to^7: '^6"..formatCoord(entity).."^7'")
Wait(1500) Wait(1500)
end end
-- Make players head face the coord for 5 seconds
TaskLookAtCoord(ped, entity.x, entity.y, entity.z, 5000, 1, 1)
else else
if DoesEntityExist(entity) then if DoesEntityExist(entity) then
local entCoords = GetEntityCoords(entity) local entCoords = GetEntityCoords(entity)
@@ -646,6 +648,9 @@ function lookEnt(entity)
debugPrint("^6Bridge^7: ^2Turning Player to^7: '^6"..entity.."^7' - '"..formatCoord(entCoords).."^7'") debugPrint("^6Bridge^7: ^2Turning Player to^7: '^6"..entity.."^7' - '"..formatCoord(entCoords).."^7'")
Wait(1500) Wait(1500)
end end
-- Make players head face the coord for 5 seconds
TaskLookAtEntity(ped, entity, 5000, 1, 1)
end end
end end
end end

View File

@@ -64,6 +64,7 @@ function createInput(title, opts)
label = (opts[i].label or opts[i].text)..(opts[i].txt and " - "..opts[i].txt or ""), label = (opts[i].label or opts[i].text)..(opts[i].txt and " - "..opts[i].txt or ""),
isRequired = opts[i].isRequired, isRequired = opts[i].isRequired,
name = opts[i].name, name = opts[i].name,
default = opts[i].default,
options = opts[i].options, options = opts[i].options,
} }
end end

View File

@@ -103,6 +103,10 @@ local InvFunc = {
-- Add fallback if ox can't find the stash and returns a boolean -- Add fallback if ox can't find the stash and returns a boolean
return type(stash) == "table" and stash.items or {} return type(stash) == "table" and stash.items or {}
end, end,
stashEditMetadata =
function(stash, slot, metadata)
exports[OXInv]:SetMetadata(stash, slot, metadata)
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
@@ -207,6 +211,13 @@ local InvFunc = {
function(stashName) function(stashName)
return exports[CoreInv]:getInventory(stashName) return exports[CoreInv]:getInventory(stashName)
end, end,
stashEditMetadata =
function(stash, slot, metadata)
local itemData = exports[CoreInv]:getItemBySlot(stash, slot) or {}
if itemData then
exports[CoreInv]:setItem(stash, itemData.item, itemData.count, metadata)
end
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
-- --
@@ -306,6 +317,10 @@ local InvFunc = {
function(stashName) function(stashName)
return exports[OrigenInv]:getInventory(stashName) return exports[OrigenInv]:getInventory(stashName)
end, end,
stashEditMetadata =
function(stash, slot, metadata)
exports[OrigenInv]:setMetadata(stash, slot, metadata)
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
-- --
@@ -416,6 +431,10 @@ local InvFunc = {
function(stashName) function(stashName)
return exports[CodeMInv]:GetStashItems(stashName) return exports[CodeMInv]:GetStashItems(stashName)
end, end,
stashEditMetadata =
function(stash, slot, metadata)
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
-- --
@@ -529,6 +548,10 @@ local InvFunc = {
function(stashName) function(stashName)
return exports[TgiannInv]:GetSecondaryInventoryItems("stash", stashName) return exports[TgiannInv]:GetSecondaryInventoryItems("stash", stashName)
end, end,
stashEditMetadata =
function(stash, slot, metadata)
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
-- --
@@ -692,6 +715,10 @@ local InvFunc = {
return result and json.decode(result) or {} return result and json.decode(result) or {}
end end
end, end,
stashEditMetadata =
function(stash, slot, metadata)
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
-- --
@@ -880,6 +907,23 @@ local InvFunc = {
end end
end end
end, end,
stashEditMetadata =
function(stash, slot, metadata)
local stashData = getStash(stash)
for i = 1, #stashData do
if stashData[i].slot == slot then
print("found slot")
stashData[i].info = metadata
end
jsonPrint(stashData[i])
end
debugPrint("^6Bridge^7: ^3stashEditMetadata^7: ^2Saving ^3QB^2 stash '^6"..stash.."^7'")
MySQL.Async.insert('INSERT INTO stashitems (stash, items) VALUES (:stash, :items) ON DUPLICATE KEY UPDATE items = :items', {
['stash'] = stash,
['items'] = json.encode(stashData)
})
end,
stashAddItem = stashAddItem =
function(stashItems, stashName, items) function(stashItems, stashName, items)
-- --
@@ -2246,6 +2290,16 @@ function openStash(data)
end end
function stashEditMetadata(stash, slot, metadata)
for i = 1, #InvFunc do
local inv = InvFunc[i]
if isStarted(inv.invName) then
inv.stashEditMetadata(stash, slot, metadata)
return
end
end
end
-- Wrapper function for opening stash from the server. -- Wrapper function for opening stash from the server.
-- Messy but not much else I can do about it. -- Messy but not much else I can do about it.
RegisterNetEvent(getScript()..":server:openServerStash", function(data) RegisterNetEvent(getScript()..":server:openServerStash", function(data)
@@ -2315,7 +2369,7 @@ function getStash(stashName)
if isStarted(inv.invName) then if isStarted(inv.invName) then
debugPrint("^6Bridge^7: ^2Retrieving ^3"..inv.invName.." ^2Stash^7:", stashName) debugPrint("^6Bridge^7: ^2Retrieving ^3"..inv.invName.." ^2Stash^7:", stashName)
stashItems = inv.getStash(stashName) stashItems = inv.getStash(stashName)
break goto skip
end end
end end
@@ -2331,7 +2385,7 @@ function getStash(stashName)
end end
end end
::skip::
if stashItems then if stashItems then
for _, item in pairs(stashItems) do for _, item in pairs(stashItems) do
local itemInfo = Items[item.name:lower()] local itemInfo = Items[item.name:lower()]

View File

@@ -221,6 +221,10 @@ local billPlayerFunc = {
function(data) function(data)
TriggerEvent("codem-billing:client:OpenMenu") TriggerEvent("codem-billing:client:OpenMenu")
end, end,
tgg =
function(data)
exports["tgg-billing"]:OpenBillingMenu()
end,
} }
--- BillPlayer --- BillPlayer
@@ -605,6 +609,8 @@ local getPlayerFunc = {
onDuty = info.job.onDuty, onDuty = info.job.onDuty,
--account = info.charinfo.account, --account = info.charinfo.account,
citizenId = info.identifier, citizenId = info.identifier,
hunger = info.status.hunger,
thirst = info.status.thirst,
} }
return Player return Player
end, end,
@@ -635,7 +641,9 @@ local getPlayerFunc = {
--account = info.charinfo.account, --account = info.charinfo.account,
citizenId = info.identifier, citizenId = info.identifier,
isDead = IsEntityDead(PlayerPedId()), isDead = IsEntityDead(PlayerPedId()),
isDown = IsPedDeadOrDying(PlayerPedId(), true) isDown = IsPedDeadOrDying(PlayerPedId(), true),
hunger = info.status.hunger,
thirst = info.status.thirst,
} }
return Player return Player
end, end,
@@ -719,6 +727,8 @@ local getPlayerFunc = {
isDead = info.PlayerData.metadata["isdead"], isDead = info.PlayerData.metadata["isdead"],
isDown = info.PlayerData.metadata["inlaststand"], isDown = info.PlayerData.metadata["inlaststand"],
charInfo = info.charinfo, charInfo = info.charinfo,
hunger = info.metadata["hunger"],
thirst = info.metadata["thirst"],
} }
return Player return Player
end, end,
@@ -747,6 +757,8 @@ local getPlayerFunc = {
isDead = info.metadata["isdead"], isDead = info.metadata["isdead"],
isDown = info.metadata["inlaststand"], isDown = info.metadata["inlaststand"],
charInfo = info.charinfo, charInfo = info.charinfo,
hunger = info.metadata["hunger"],
thirst = info.metadata["thirst"],
} }
return Player return Player
end, end,
@@ -778,6 +790,8 @@ local getPlayerFunc = {
isDead = info.metadata["isdead"], isDead = info.metadata["isdead"],
isDown = info.metadata["inlaststand"], isDown = info.metadata["inlaststand"],
charInfo = info.charinfo, charInfo = info.charinfo,
hunger = info.metadata["hunger"],
thirst = info.metadata["thirst"],
} }
end end
return Player return Player
@@ -809,6 +823,8 @@ local getPlayerFunc = {
isDead = info.metadata["isdead"], isDead = info.metadata["isdead"],
isDown = info.metadata["inlaststand"], isDown = info.metadata["inlaststand"],
charInfo = info.charinfo, charInfo = info.charinfo,
hunger = info.metadata["hunger"],
thirst = info.metadata["thirst"],
} }
return Player return Player
end, end,
@@ -840,6 +856,8 @@ local getPlayerFunc = {
isDead = info.metadata["isdead"], isDead = info.metadata["isdead"],
isDown = info.metadata["inlaststand"], isDown = info.metadata["inlaststand"],
charInfo = info.charinfo, charInfo = info.charinfo,
hunger = info.metadata["hunger"],
thirst = info.metadata["thirst"],
} }
end end
return Player return Player
@@ -871,6 +889,8 @@ local getPlayerFunc = {
isDead = info.metadata["isdead"], isDead = info.metadata["isdead"],
isDown = info.metadata["inlaststand"], isDown = info.metadata["inlaststand"],
charInfo = info.charinfo, charInfo = info.charinfo,
hunger = info.metadata["hunger"],
thirst = info.metadata["thirst"],
} }
return Player return Player
end, end,
@@ -972,6 +992,12 @@ local wardrobeFunc = {
TriggerEvent("illenium-appearance:client:openOutfitMenu") TriggerEvent("illenium-appearance:client:openOutfitMenu")
end, end,
}, },
{
name = "rcore_clothing",
openWardrobe = function()
TriggerEvent('rcore_clothing:openChangingRoom')
end,
}
} }
--- Opens the clothing customization menu --- Opens the clothing customization menu
@@ -984,4 +1010,5 @@ function openClothing()
break break
end end
end end
end
end

View File

@@ -263,4 +263,14 @@ function fundSociety(society, amount)
end end
print("^1Error^7: ^3FundSociety^7: ^2No supported banking script found") print("^1Error^7: ^3FundSociety^7: ^2No supported banking script found")
end
if isServer() then
createCallback(getScript()..":server:getAccount", function(source, society)
if society then
local getMoney = getSocietyAccount(society)
return getMoney
end
return 0
end)
end end

View File

@@ -33,15 +33,51 @@ Exports = {
} }
-- Required variables -- Required variables
debugMode = Config.System.Debug debugMode = false
QBInvNew = true QBInvNew = true
InventoryWeight = 120000 InventoryWeight = 120000
-- Corruptted transfer file Checks -- Not Ready Yet ⚠️
--CreateThread(function()
-- local res = GetCurrentResourceName()
-- local ok, val = pcall(function()
-- return exports[res]:ping_encrypted()
-- end)
--
-- if not ok or val ~= "ok" then
-- print("\n^6===============================================================================")
-- print(("\n^1Corruption Warning^7: ^1[^7%s^1] Encrypted files failed to initialize.^7\n"):format(res))
-- print("^3Common causes^7:")
-- print(" • Possible corrupt files")
-- print(" • Damaged or partial upload (FTP/zip/unzip issue).")
-- print(" • Outdated artifact version\n")
-- print("^2How To Fix^7:")
-- print(" • Update your server artifact version")
-- print(" • Re-download asset from Keymaster")
-- print(" • Use WinSCP to upload")
-- print(" • Avoid editing any encrypted files")
-- print(" • Restart the server")
-- print("\n^6===============================================================================^7\n")
-- end
--end)
-- Missing/Broken Config file check
if not Config or not Config.System then
print("\n^6=================================================================================")
print("^6=================================================================================\n")
print(" ^1ERROR^7: jim_bridge ^1can't find the ^7Config^1 table in ^7"..GetCurrentResourceName())
print(" ^1It is either missing, or there is an error inside it stopping it from loading^7\n")
print("^6=================================================================================")
print("^6=================================================================================^7\n")
end
-- [[ Server.Cfg Convar Check ]]-- -- [[ Server.Cfg Convar Check ]]--
-- Check server convars for hard set defaults, otherwise it uses per script configurations -- Check server convars for hard set defaults, otherwise it uses per script configurations
if Config and Config.System then if Config and Config.System then
debugMode = Config.System.Debug
if Config.System.Debug then if Config.System.Debug then
if GetConvar("jim_DisableDebug", "false") == "true" then if GetConvar("jim_DisableDebug", "false") == "true" then
debugMode = false debugMode = false
@@ -50,7 +86,6 @@ if Config and Config.System then
Config.System.EventDebug = false Config.System.EventDebug = false
end end
end end
Config.System.Menu = GetConvar("jim_menuScript", Config.System.Menu) Config.System.Menu = GetConvar("jim_menuScript", Config.System.Menu)
Config.System.Notify = GetConvar("jim_notifyScript", Config.System.Notify or "gta") Config.System.Notify = GetConvar("jim_notifyScript", Config.System.Notify or "gta")
Config.System.ProgressBar = GetConvar("jim_progressBarScript", Config.System.ProgressBar or "gta") Config.System.ProgressBar = GetConvar("jim_progressBarScript", Config.System.ProgressBar or "gta")

View File

@@ -1,11 +1,10 @@
2.1.07 2.1.08
- Support for new embeded shop recipes - Fix getStash() always trying to use fallback functions
- Add checks for targets set with minZ and maxZ set too high or low - Start adding stashEditMetadata() function - wip
- New target function `createPropTarget()` which creates a box target based on a prop model - Add check for broken/missing config.lua in scripts
- Add CodeM as option for billing - Add fix for debugMode breaking if no config file
- Add 17Mov progressbar support - Add a callback to check for society bank balances
- Fix OrigenInv calling OX_Inv to get player inventory - Add player head movement for `lookEnt()` to continue looking after turning
- Allow "Grab Boxes" to have custom slots and weight
https://github.com/jimathy/jim_bridge/releases/latest https://github.com/jimathy/jim_bridge/releases/latest