From 638b76bc38e72b3d9d8ef49a6d3728b1d819f7a3 Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Mon, 11 Aug 2025 17:38:19 +0200 Subject: [PATCH] es --- .../[gym]/dynyx-gym/client/main.lua | 34 ++++++++++-- .../[gym]/dynyx-gym/server/main.lua | 54 +++++++++++++++++++ 2 files changed, 83 insertions(+), 5 deletions(-) diff --git a/resources/[freizeit]/[gym]/dynyx-gym/client/main.lua b/resources/[freizeit]/[gym]/dynyx-gym/client/main.lua index 02e6e6734..3e10824d1 100644 --- a/resources/[freizeit]/[gym]/dynyx-gym/client/main.lua +++ b/resources/[freizeit]/[gym]/dynyx-gym/client/main.lua @@ -1,5 +1,29 @@ local QBCore = exports['qb-core']:GetCoreObject() +-- Check if player has an item (uses server-side check for compatibility with all inventory systems) +local function checkHasItem(item) + local hasItem = false + local checkComplete = false + + -- Request item check from server + TriggerServerEvent('dynyx_gym:server:CheckItem', item) + + -- Wait for response + RegisterNetEvent('dynyx_gym:client:ItemCheckResult', function(result) + hasItem = result + checkComplete = true + end) + + -- Wait for the response with a timeout + local timeout = 500 -- 500ms timeout + local start = GetGameTimer() + while not checkComplete and GetGameTimer() - start < timeout do + Wait(0) + end + + return hasItem +end + CreateThread(function() for k, v in pairs(Config.Threadmills) do exports['qb-target']:AddBoxZone("treadmill"..k, v.coords - vector3(0.0, 0.0, 1.0), 1, 2, { @@ -91,7 +115,7 @@ CreateThread(function() end) RegisterNetEvent('dynyx-gym:treadmill', function() - local hasItem = QBCore.Functions.HasItem(Config.GymPassItem) + local hasItem = checkHasItem(Config.GymPassItem) if hasItem then Treadmill() else @@ -100,7 +124,7 @@ RegisterNetEvent('dynyx-gym:treadmill', function() end) RegisterNetEvent('dynyx-gym:chinup', function() - local hasItem = QBCore.Functions.HasItem(Config.GymPassItem) + local hasItem = checkHasItem(Config.GymPassItem) if hasItem then Chinup() else @@ -109,7 +133,7 @@ RegisterNetEvent('dynyx-gym:chinup', function() end) RegisterNetEvent('dynyx-gym:chinup2', function() - local hasItem = QBCore.Functions.HasItem(Config.GymPassItem) + local hasItem = checkHasItem(Config.GymPassItem) if hasItem then Chinup2() else @@ -118,7 +142,7 @@ RegisterNetEvent('dynyx-gym:chinup2', function() end) RegisterNetEvent('dynyx-gym:liftweights', function() - local hasItem = QBCore.Functions.HasItem(Config.GymPassItem) + local hasItem = checkHasItem(Config.GymPassItem) if hasItem then LiftWeight() else @@ -127,7 +151,7 @@ RegisterNetEvent('dynyx-gym:liftweights', function() end) RegisterNetEvent('dynyx-gym:yoga', function() - local hasItem = QBCore.Functions.HasItem(Config.GymPassItem) + local hasItem = checkHasItem(Config.GymPassItem) if hasItem then Yoga() else diff --git a/resources/[freizeit]/[gym]/dynyx-gym/server/main.lua b/resources/[freizeit]/[gym]/dynyx-gym/server/main.lua index c74679226..b42c15db4 100644 --- a/resources/[freizeit]/[gym]/dynyx-gym/server/main.lua +++ b/resources/[freizeit]/[gym]/dynyx-gym/server/main.lua @@ -13,6 +13,16 @@ function Notify(source, text, status) print("Config.Notifications is invalid.") end end + +-- Check if TGIANN inventory is available +local function isTGIANNAvailable() + local available = false + pcall(function() + available = exports["tgiann-inventory"] ~= nil + end) + return available +end + RegisterServerEvent('dynyx_gym:BuyGymM', function() local src = source if Config.Inventory == 'qb' then @@ -35,5 +45,49 @@ RegisterServerEvent('dynyx_gym:BuyGymM', function() else Notify(src, 'Not Enough Money', 'error') end + elseif Config.Inventory == 'tgiann' then + if isTGIANNAvailable() then + local money = exports["tgiann-inventory"]:GetItemByName(src, "money") + + if money and money.amount >= Config.GymPassPrice then + local success = exports["tgiann-inventory"]:RemoveItem(src, "money", Config.GymPassPrice) + if success then + exports["tgiann-inventory"]:AddItem(src, Config.GymPassItem, 1) + Notify(src, 'You purchased a gym membership!', 'success') + else + Notify(src, 'Transaction Failed', 'error') + end + else + Notify(src, 'Not Enough Money', 'error') + end + else + print("TGIANN Inventory not available but configured to be used!") + Notify(src, 'System Error', 'error') + end + else + print("Invalid Config.Inventory setting: " .. Config.Inventory) + Notify(src, 'System Error', 'error') end end) + +-- Server-side function to check if player has an item +RegisterNetEvent('dynyx_gym:server:CheckItem', function(item) + local src = source + local hasItem = false + + if Config.Inventory == 'qb' then + local Player = QBCore.Functions.GetPlayer(src) + hasItem = Player.Functions.HasItem(item) + elseif Config.Inventory == 'ox' then + local count = exports.ox_inventory:GetItem(src, item, nil, true) + hasItem = count > 0 + elseif Config.Inventory == 'tgiann' then + if isTGIANNAvailable() then + hasItem = exports["tgiann-inventory"]:HasItem(src, item, 1) + else + print("TGIANN Inventory not available but configured to be used!") + end + end + + TriggerClientEvent('dynyx_gym:client:ItemCheckResult', src, hasItem) +end)