diff --git a/shared/_loaders.lua b/shared/_loaders.lua index fe9d183..c92a227 100644 --- a/shared/_loaders.lua +++ b/shared/_loaders.lua @@ -170,9 +170,4 @@ function waitForLogin() debugPrint("^6Bridge^7: ^2Player Login Detected^7.") return true end -end - - ---local OxPlayer = Ox.GetPlayer() ---jsonPrint(OxPlayer) - +end \ No newline at end of file diff --git a/shared/crafting.lua b/shared/crafting.lua index 74cc73a..6ff6c10 100644 --- a/shared/crafting.lua +++ b/shared/crafting.lua @@ -359,6 +359,10 @@ function makeItem(data) craftProp = makeProp({ prop = prop.model, coords = vec4(0, 0, 0, 0), true, true }) AttachEntityToEntity(craftProp, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), prop.bone), prop.pos.x, prop.pos.y, prop.pos.z, prop.rot.x, prop.rot.y, prop.rot.z, true, true, false, true, 1, true) end + if data.sound then + local s = data.sound + PlaySoundFromEntity(s.soundId, s.audioName, PlayerPedId(), s.audioRef, true, 0) + end if crafting and progressBar({ label = bartext..((metadata and metadata.label) or Items[data.item].label), time = bartime, @@ -389,6 +393,12 @@ function makeItem(data) PlaySoundFromEntity(breakId, "Drill_Pin_Break", PlayerPedId(), "DLC_HEIST_FLEECA_SOUNDSET", 1, 0) canReturn = false end + if data.sound then + StopSound(data.sound.soundId) + end + if data.requiredItemfunc then + data.requiredItemfunc() + end else crafting = false break diff --git a/shared/drawText.lua b/shared/drawText.lua index 1171958..6d6fd85 100644 --- a/shared/drawText.lua +++ b/shared/drawText.lua @@ -5,8 +5,6 @@ various frameworks: QB, OX, GTA, and ESX. ]] -local radarTable = {} -- Table to store image references for drawing text - --- Displays text on the screen using the configured draw text system. --- --- Depending on Config.System.drawText, this function will use different methods to @@ -23,7 +21,7 @@ local radarTable = {} -- Table to store image references for drawing text --- ``` function drawText(image, input, style, oxStyleTable) local text = "" - + if not radarTable then radarTable = {} end if Config.System.drawText == "qb" then -- Concatenate lines for QB system with HTML line breaks. for i = 1, #input do diff --git a/shared/inventories.lua b/shared/inventories.lua index a42a4e6..ab4b07d 100644 --- a/shared/inventories.lua +++ b/shared/inventories.lua @@ -87,33 +87,51 @@ function getPlayerInv(src) if isStarted(OXInv) then foundInv = OXInv - if src then grabInv = exports[OXInv]:GetInventoryItems(src) - else grabInv = exports[OXInv]:GetPlayerItems() end + if src then + grabInv = exports[OXInv]:GetInventoryItems(src) + else + grabInv = exports[OXInv]:GetPlayerItems() + end elseif isStarted(QSInv) then foundInv = QSInv - if src then grabInv = exports[QSInv]:GetInventory(src) - else grabInv = exports[QSInv]:getUserInventory() end + if src then + grabInv = exports[QSInv]:GetInventory(src) + else + grabInv = exports[QSInv]:getUserInventory() + end elseif isStarted(OrigenInv) then foundInv = OrigenInv - if src then grabInv = exports[OrigenInv]:getInventory(src) - else grabInv = exports[OrigenInv]:getInventory() end + if src then + grabInv = exports[OrigenInv]:getInventory(src) + else + grabInv = exports[OrigenInv]:getInventory() + end elseif isStarted(CoreInv) then foundInv = CoreInv - if src then grabInv = exports[CoreInv]:getInventory(src) - else grabInv = exports[CoreInv]:getInventory() end + if src then + grabInv = exports[CoreInv]:getInventory(src) + else + grabInv = exports[CoreInv]:getInventory() + end elseif isStarted(CodeMInv) then foundInv = CodeMInv - if src then grabInv = exports[CodeMInv]:GetInventory(src) - else grabInv = exports[CodeMInv]:GetClientPlayerInventory() end + if src then + grabInv = exports[CodeMInv]:GetInventory(src) + else + grabInv = exports[CodeMInv]:GetClientPlayerInventory() + end elseif isStarted(QBInv) then foundInv = QBInv - if src then grabInv = Core.Functions.GetPlayer(src).PlayerData.items - else grabInv = Core.Functions.GetPlayerData().items end + if src then + grabInv = Core.Functions.GetPlayer(src).PlayerData.items + else + grabInv = Core.Functions.GetPlayerData().items + end elseif isStarted(PSInv) then foundInv = PSInv diff --git a/shared/make/makePed.lua b/shared/make/makePed.lua index 6305c32..0457b89 100644 --- a/shared/make/makePed.lua +++ b/shared/make/makePed.lua @@ -19,9 +19,11 @@ local Peds = {} -- makeDistPed(pedData, pedCoords, true, false, 'WORLD_HUMAN_STAND_IMPATIENT', nil, true) -- ``` function makeDistPed(data, coords, freeze, collision, scenario, anim, synced) + local zoneCoords = type(data) == "table" and data.coords or coords + createCirclePoly({ name = keyGen()..keyGen(), - coords = vec3(data.coords.x, data.coords.y, data.coords.z - 1.03), + 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) diff --git a/shared/make/makeProp.lua b/shared/make/makeProp.lua index ed82ade..6067d3a 100644 --- a/shared/make/makeProp.lua +++ b/shared/make/makeProp.lua @@ -51,12 +51,12 @@ end --- } --- makeDistProp(propData, true, false) --- ``` -function makeDistProp(data, freeze, synced) +function makeDistProp(data, freeze, synced, range) local prop = nil createCirclePoly({ name = keyGen()..keyGen(), coords = vec3(data.coords.x, data.coords.y, data.coords.z - 1.03), - radius = 50.0, + radius = range or 50.0, onEnter = function() prop = makeProp(data, freeze, synced) end, diff --git a/shared/make/progressBars.lua b/shared/make/progressBars.lua index a802b1b..7e425b0 100644 --- a/shared/make/progressBars.lua +++ b/shared/make/progressBars.lua @@ -94,46 +94,73 @@ function progressBar(data) }) elseif Config.System.ProgressBar == "gta" then - local wait = debugMode and 1000 or data.time + loadTextureDict("timerbars") + if inProgress then return false end inProgress = true - if not (data.dead or false) then - lockInv(true) - displaySpinner(data.label) - if data.dict then - playAnim(data.dict, data.anim, -1, (data.flag == 8 and 32 or data.flag) or nil) - end - if data.task then - TaskStartScenarioInPlace(ped, data.task, -1, true) - end - while inProgress and wait > 0 do - wait -= 15 - local waitTimer = 0 + local wait = debugMode and 1000 or data.time + local endTime = GetGameTimer() + wait + local ped = PlayerPedId() + + -- Setup Animation/Task if specified + if data.dict then + playAnim(data.dict, data.anim, -1, data.flag or 32) + elseif data.task then + TaskStartScenarioInPlace(ped, data.task, -1, true) + end + + -- Progress bar rendering loop + CreateThread(function() + while GetGameTimer() < endTime and inProgress do + Wait(0) + local elapsed = GetGameTimer() + local percentage = ((elapsed - (endTime - wait)) / wait) * 100 + + -- Convert to segmented progress (assuming 5 segments here) + local segments = 5 -- Number of segments in the bar + local segmentProgress = {} + local progressPerSegment = 100 / segments + + for i = 1, segments do + local segmentStart = (i - 1) * progressPerSegment + local segmentEnd = i * progressPerSegment + if percentage >= segmentEnd then + segmentProgress[i] = 100 + elseif percentage <= segmentStart then + segmentProgress[i] = 0 + else + segmentProgress[i] = ((percentage - segmentStart) / progressPerSegment) * 100 + end + end + + percentage = percentage >= 100 and 100 or percentage + -- Draw your segmented progress bar + ShowGTAProgressBar(segmentProgress, data.label, ("%.0f%%"):format(percentage)) + + -- Controls to disable during progress DisablePlayerFiring(ped, true) DisableControlAction(0, 25, true) -- Disable aim DisableControlAction(0, 21, true) -- Disable sprint DisableControlAction(0, 30, true) -- Disable move left/right DisableControlAction(0, 31, true) -- Disable move forward/back DisableControlAction(0, 36, true) -- Disable stealth - if data.cam ~= nil then - DisableControlAction(0, 1, true) -- Disable look left/right - DisableControlAction(0, 2, true) -- Disable look up/down - DisableControlAction(0, 106, true) -- Disable vehicle mouse control + + if data.cancel and (IsControlJustReleased(0, 202) or IsControlJustReleased(0, 177) or IsControlJustReleased(0, 73)) then + inProgress = false end - if data.cancel then - if IsControlJustReleased(0, 202) or IsControlJustReleased(0, 77) then -- Cancel key (Backspace or Delete) - inProgress = false - waitTimer = 1500 - displaySpinner(Loc[Config.Lan].error["cancel"]) - end - end - Wait(waitTimer) end - inProgress = false - if data.dict then stopAnim(data.dict, data.anim, ped) end - ClearPedTasks(ped) + end) + + -- Wait for completion or cancel + while GetGameTimer() < endTime and inProgress do + Wait(100) end - stopSpinner() - result = (wait <= 0) + + -- Cleanup animations/tasks + if data.dict then stopAnim(data.dict, data.anim, ped) end + ClearPedTasks(ped) + + result = inProgress + inProgress = false end while result == nil do Wait(10) end @@ -141,26 +168,80 @@ function progressBar(data) -- Cleanup FreezeEntityPosition(ped, false) lockInv(false) - if data.cam then stopTempCam(data.cam) end + if data.cam then + stopTempCam(data.cam) + end if result == false and data.shared then debugPrint("^6Bridge^7: ^2Sending cancel to ^6"..storedPID.."^7") TriggerServerEvent(getScript().."server:sharedProg:cancel", storedPID) end storedPID = nil + if result == false then + currentToken = nil + TriggerServerEvent(getScript()..":clearAuthToken") + end + if result == true and data.request then + TriggerServerEvent(getScript()..":clearAuthToken") + currentToken = triggerCallback(AuthEvent) + end return result end +function ShowGTAProgressBar(currentProg, title, level) + local loc = vec2(0.37, 0.90) + local size = vec2(0.3, 0.03) + + -- Draw background box + DrawSprite("timerbars", "all_black_bg", loc.x +0.028, loc.y-0.01, 0.15, 0.07, 0.0, 255, 255, 255, 255) + DrawSprite("timerbars", "all_black_bg", loc.x +0.170, loc.y-0.01, 0.15, 0.07, 180.0, 255, 255, 255, 255) + + SetTextFont(0) + SetTextProportional(1) + SetTextScale(0.35, 0.35) + SetTextColour(255, 255, 255, 255) + SetTextDropshadow(0, 0, 0, 0, 255) + SetTextDropShadow() + SetTextOutline() + SetTextEntry("STRING") + AddTextComponentString(title) + DrawText(loc.x - size.x / 4 + 0.074, loc.y - 0.034) -- Adjust text position + + SetTextFont(0) + SetTextProportional(1) + SetTextScale(0.35, 0.25) + SetTextColour(255, 255, 255, 255) + SetTextEntry("STRING") + AddTextComponentString(level) + DrawText(loc.x - size.x / 4 + 0.246, loc.y - 0.030) -- Right-aligned additional text + + local segmentWidth = (size.x + 0.05) / (#currentProg * 2) -- Divide the total width by 18 (9 segments * 2 gaps for each) + local gap = segmentWidth / #currentProg -- Smaller gap between segments + + for i = 1, #currentProg do + local segmentX = (loc.x - size.x / 4 ) + 0.075 + (i - 1) * (segmentWidth + gap) + local fillPercentage = currentProg[i] + local progressBarWidth = segmentWidth * (fillPercentage / 100) + + -- Semi-transparent background for each segment + DrawRect(segmentX + segmentWidth / 2, loc.y, segmentWidth, size.y / 3.4, 100, 100, 100, 255) + + -- Filling progress for each segment + if progressBarWidth > 0 then + DrawRect(segmentX + progressBarWidth / 2, loc.y, progressBarWidth, size.y / 3.4, 93, 182, 229, 255) -- Blue progress + end + end +end + --- Stops the current progress bar. --- --- This function cancels the progress bar based on the configured progress bar system, handling any necessary cleanup. -function stopPropgressBar() +function stopProgressBar() if Config.System.ProgressBar == "ox" then exports[OXLibExport]:cancelProgress() elseif Config.System.ProgressBar == "qb" then TriggerEvent("progressbar:client:cancel") elseif Config.System.ProgressBar == "gta" then inProgress = false - BusyspinnerOff() end end @@ -201,9 +282,5 @@ end) --- This event is triggered when the server wants the client to cancel a shared progress bar. RegisterNetEvent(getScript()..":client:sharedProg:Cancel", function() debugPrint("^6Bridge^7: ^2Receiving cancel progressBar^7") - stopPropgressBar() -end) - ---- Cleans up when the resource stops. ---- This event handler ensures that any active spinners or progress bars are stopped when the resource is stopped. -onResourceStop(function() stopSpinner() end, true) + stopProgressBar() +end) \ No newline at end of file diff --git a/shared/notify.lua b/shared/notify.lua index 6d31689..962d61b 100644 --- a/shared/notify.lua +++ b/shared/notify.lua @@ -50,10 +50,18 @@ function triggerNotify(title, message, type, src) TriggerClientEvent('ox_lib:notify', src, { title = title, description = message, type = type or "success" }) end elseif Config.System.Notify == "gta" then - if not src then - TriggerEvent(getScript()..":DisplayGTANotify", title, message) + if isStarted("jim-gtaui") then + if not src then + TriggerEvent("jim-gtaui:Notify", title, message, type) + else + TriggerClientEvent("jim-gtaui:Notify", src, title, message, type) + end else - TriggerClientEvent(getScript()..":DisplayGTANotify", src, title, message) + if not src then + TriggerEvent(getScript()..":DisplayGTANotify", title, message) + else + TriggerClientEvent(getScript()..":DisplayGTANotify", src, title, message) + end end elseif Config.System.Notify == "esx" then if not src then diff --git a/shared/playerfunctions.lua b/shared/playerfunctions.lua index b968701..d846f2b 100644 --- a/shared/playerfunctions.lua +++ b/shared/playerfunctions.lua @@ -154,7 +154,10 @@ end function chargePlayer(cost, moneyType, newsrc) local src = newsrc or source local fundResource = "" - + if cost < 0 then + debugPrint("^1Error^7: ^7SRC: ^3"..src.." ^2Tried to charge a minus value^7", cost) + return + end if moneyType == "cash" then if isStarted(OXInv) then fundResource = OXInv exports[OXInv]:RemoveItem(src, "money", cost) @@ -177,7 +180,14 @@ function chargePlayer(cost, moneyType, newsrc) debugPrint("^6Bridge^7: ^2Charging ^2Player^7: '^6"..cost.."^7'", moneyType, fundResource) end end -RegisterNetEvent(getScript()..":server:ChargePlayer", chargePlayer) +RegisterNetEvent(getScript()..":server:ChargePlayer", function(cost, moneyType, newsrc) + debugPrint(GetInvokingResource()) + if GetInvokingResource() and GetInvokingResource() ~= getScript() and GetInvokingResource() ~= "qb-core" then + debugPrint("^1Error^7: ^1Possible exploit^7, ^1vital function was called from an external resource^7") + return + end + chargePlayer(cost, moneyType, newsrc) +end) --- Funds a player by adding money to their account. --- diff --git a/shared/skillcheck.lua b/shared/skillcheck.lua index d50621b..945d69a 100644 --- a/shared/skillcheck.lua +++ b/shared/skillcheck.lua @@ -1,4 +1,4 @@ - +local activeSkillCheck = false function skillCheck(data) local result = false @@ -29,8 +29,128 @@ function skillCheck(data) else result = false end + elseif Config.System.skillCheck == "gta" then + loadTextureDict("timerbars") + local successes = 0 + local barsRequired = 3 + + for bar = 1, barsRequired do + debugPrint("^6Bridge^7: ^2Starting Bar ^3"..bar.."^7/^3"..barsRequired.."^7") + activeSkillCheck = true + local width, height = 0.2, 0.01 + local x, y = 0.5, 0.8 + + -- Random highlighted zone + local highlightSize = math.random(10, 20) / 100 + local highlightStart = math.random(10, 50) / 100 + local highlightEnd = highlightStart + highlightSize + local highlightAlpha = 0 + local cursorPos = 0.0 + local cursorSpeed = 0.025 + local movingRight = true + + while activeSkillCheck do + Wait(0) + makeInstructionalButtons({ + { keys = { 177 }, text = "Exit" }, + { keys = { 38 }, text = "Confirm" }, + }) + + createScaleBars(x, y, width, height) + + local pulse = (math.sin(GetGameTimer() / 250) + 1) / 2 -- Creates a pulsing effect + highlightAlpha = math.floor(150 + (pulse * 105)) -- Pulsing between 150 and 255 alpha + + -- Draw highlighted zone (success area) with pulsing effect + DrawRect(x - width / 2 + (highlightStart + highlightSize / 2) * width, y, highlightSize * width, height+0.001, 93, 182, 229, highlightAlpha ) + -- Draw moving cursor + DrawRect(x - width / 2 + cursorPos * width, y, 0.002, height + 0.01, 255, 255, 255, 255) + + -- Move cursor + if movingRight then + cursorPos += cursorSpeed + if cursorPos >= 1.0 then movingRight = false end + else + cursorPos -= cursorSpeed + if cursorPos <= 0.0 then movingRight = true end + end + + if IsControlJustPressed(0, 177) then -- Backspace to cancel + local displayTime = GetGameTimer() + 2000 + PlaySoundFrontend(-1, 'Highlight_Cancel', 'DLC_HEIST_PLANNING_BOARD_SOUNDS', 1) + while GetGameTimer() < displayTime do + Wait(0) + + createScaleBars(x, y, width, height) + + DrawRect(x - width / 2 + (highlightStart + highlightSize / 2) * width, y, highlightSize * width, height+0.001, 228, 52, 52, 255) + DrawRect(x - width / 2 + cursorPos * width, y, 0.002, height + 0.01, 255, 255, 255, 255) + + drawSuccessText(x, y, "Failed", 228, 52, 52) + end + return false + end + + -- Check for keypress (E) + if IsControlJustPressed(0, 38) then + activeSkillCheck = false + result = cursorPos >= highlightStart and cursorPos <= highlightEnd + if result then + PlaySoundFrontend(-1, "YES", "HUD_FRONTEND_DEFAULT_SOUNDSET", true) + else + PlaySoundFrontend(-1, 'Highlight_Cancel', 'DLC_HEIST_PLANNING_BOARD_SOUNDS', 1) + end + local displayTime = GetGameTimer() + 2000 + while GetGameTimer() < displayTime do + Wait(0) + + createScaleBars(x, y, width, height) + + -- Draw highlighted zone + DrawRect(x - width / 2 + (highlightStart + highlightSize / 2) * width, y, highlightSize * width, height+0.001, result and 93 or 228, result and 182 or 52, result and 229 or 52, 180) + + -- Draw stationary cursor at result position + DrawRect(x - width / 2 + cursorPos * width, y, 0.002, height + 0.01, 255, 255, 255, 255) + -- Display result text + drawSuccessText(x, y, result and "Success" or "Failed", result and 114 or 228, result and 204 or 52, result and 144 or 52) + end + if result then + successes += 1 + else + return false + end + end + end + end + activeSkillCheck = false + debugPrint("^6Bridge^7: ^2Skill Check Result^7: ^3" .. successes .. "^7/^3" .. barsRequired.."^7") + return successes == barsRequired else result = true end return result +end + +function drawSuccessText(x, y, text, r, g, b) + SetTextFont(8) + SetTextScale(0.45, 0.45) + SetTextColour(r, g, b, 255) + SetTextDropshadow(0, 0, 0, 0, 255) + SetTextEdge(2, 0, 0, 0, 150) + SetTextDropShadow() + SetTextOutline() + SetTextCentre(true) + SetTextEntry("STRING") + SetTextCentre(true) + SetTextEntry("STRING") + AddTextComponentString(text) + DrawText(x, y + 0.03) +end + +function createScaleBars(x, y, width, height) + -- Draw background box + DrawSprite("timerbars", "all_black_bg", x - (width / 4) - 0.006, y, (width / 2) + 0.08, height + 0.04, 0.0, 255, 255, 255, 255) + DrawSprite("timerbars", "all_black_bg", x + (width / 4) + 0.006, y, (width / 2) + 0.08, height + 0.04, 180.0, 255, 255, 255, 255) + -- Draw full bar (dark background) + DrawRect(x, y, width, height, 100, 100, 100, 255) end \ No newline at end of file diff --git a/shared/targets.lua b/shared/targets.lua index ba9781b..304bc99 100644 --- a/shared/targets.lua +++ b/shared/targets.lua @@ -169,7 +169,7 @@ end --- name = 'storageBox', --- heading = 100.0, --- debugPoly = true, ---- minZ = 27.0 +--- minZ = 27.0, --- maxZ = 32.0, --- }, --- }, @@ -388,7 +388,7 @@ function createModelTarget(models, opts, dist) end exports[OXTargetExport]:addModel(models, options) elseif isStarted(QBTargetExport) then - debugPrint("^6Bridge^7: ^2Creating new ^3Entity^2 target with ^6"..QBTargetExport) + debugPrint("^6Bridge^7: ^2Creating new ^3Model^2 target with ^6"..QBTargetExport) local options = { options = opts, distance = dist } exports[QBTargetExport]:AddTargetModel(models, options) end @@ -439,6 +439,25 @@ function removeZoneTarget(target) end end +--- Removes a previously created model target. +--- +--- @param model table The model ID whose target should be removed. +--- +--- @usage +--- ```lua +--- removeModelTarget(model) +--- ``` +function removeModelTarget(model) + if isStarted(QBTargetExport) then + exports[QBTargetExport]:RemoveTargetModel(model, "Test") + end + if isStarted(OXTargetExport) then + exports[OXTargetExport]:removeModel(model, nil) + end + if Config.System.DontUseTarget or (not isStarted(OXTargetExport) and not isStarted(QBTargetExport)) then + TextTargets[entity] = nil + end +end ------------------------------------------------------------- -- Fallback: DrawText3D Targets (Experimental) ------------------------------------------------------------- @@ -455,12 +474,20 @@ if (Config.System.DontUseTarget or (not isStarted(OXTargetExport) and not isStar local closestTarget = nil local closestDist = math.huge + -- Create a shallow copy of TextTargets + local targetsCopy = {} + for k, target in pairs(TextTargets) do + targetsCopy[k] = target + end + -- Identify the closest target in front of the camera. - for _, target in pairs(TextTargets) do + for _, target in pairs(targetsCopy) do local dist = #(pedCoords - target.coords) local vecToTarget = target.coords - camCoords local vecToTargetNormalized = normalizeVector(vecToTarget) - local dot = camForwardVector.x * vecToTargetNormalized.x + camForwardVector.y * vecToTargetNormalized.y + camForwardVector.z * vecToTargetNormalized.z + local dot = camForwardVector.x * vecToTargetNormalized.x + + camForwardVector.y * vecToTargetNormalized.y + + camForwardVector.z * vecToTargetNormalized.z local isFacingTarget = dot > 0.5 -- Threshold for facing target. if dist <= target.dist and isFacingTarget then @@ -472,7 +499,7 @@ if (Config.System.DontUseTarget or (not isStarted(OXTargetExport) and not isStar end -- Render the DrawText3D targets and listen for key presses. - for _, target in pairs(TextTargets) do + for _, target in pairs(targetsCopy) do local isClosest = (target == closestTarget) if #(pedCoords - target.coords) <= target.dist then for i = 1, #target.options do @@ -481,9 +508,12 @@ if (Config.System.DontUseTarget or (not isStarted(OXTargetExport) and not isStar if target.options[i].action then target.options[i].action() end end end - DrawText3D(vec3(target.coords.x, target.coords.y, target.coords.z + 0.7), concatenateText(target.buttontext), isClosest) + DrawText3D(vec3(target.coords.x, target.coords.y, target.coords.z + 0.7), + concatenateText(target.buttontext), + isClosest) end end + Wait(0) end end) diff --git a/shared/wrapperfunctions.lua b/shared/wrapperfunctions.lua index 26bcc28..09f4c2c 100644 --- a/shared/wrapperfunctions.lua +++ b/shared/wrapperfunctions.lua @@ -73,37 +73,6 @@ function registerStash(name, label, slots, weight, owner, coords) end end ---- Registers a shop with the active inventory system. ---- Supports either OXInv or QBInv (with QBInvNew flag). ---- ---- @param name string Unique shop identifier. ---- @param label string Display name for the shop. ---- @param items table List of available shop items. ---- @param society string|nil (Optional) Society identifier for shared shops. ---- @usage ---- ```lua ---- registerShop("weaponShop", "Weapon Shop", weaponItems, "society_weapons") ---- ``` -function registerShop(name, label, items, society) - if isStarted(OXInv) then - debugPrint("^6Bridge^7: ^2Registering ^3OX ^2Store^7:", name, label) - exports[OXInv]:RegisterShop(name, { - name = label, - inventory = items, - society = society, - }) - elseif isStarted(QBInv) and QBInvNew then - debugPrint("^6Bridge^7: ^2Registering ^3QB ^2Store^7:", name, label) - exports[QBInv]:CreateShop({ - name = name, - label = label, - slots = #items, - items = items, - society = society, - }) - end -end - if isServer() then --- Registers an event to create an OX stash from the server. --- When triggered, it calls registerStash with the provided parameters. diff --git a/version.txt b/version.txt index 415b19f..6609db5 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.0 \ No newline at end of file +1.2