local QBCore = exports['qb-core']:GetCoreObject() -- Replace with your framework if different -- Configuration local Config = { RepairKit = { item = "weapon_repair_kit", removeOnUse = true, repairAmount = 100, -- How much to repair (0-100) }, Notifications = { noWeapon = "You don't have a weapon in your hand to repair", repaired = "Weapon repaired successfully", noRepairKit = "You need a repair kit to repair weapons", alreadyRepaired = "This weapon is already in good condition" } } -- Register usable item QBCore.Functions.CreateUseableItem(Config.RepairKit.item, function(source) local src = source local Player = QBCore.Functions.GetPlayer(src) if not Player then return end -- Check if player has the repair kit if not exports["tgiann-inventory"]:HasItem(src, Config.RepairKit.item, 1) then TriggerClientEvent('QBCore:Notify', src, Config.Notifications.noRepairKit, 'error') return end -- Trigger client to get current weapon TriggerClientEvent('weapon_repair:getWeaponInHand', src) end) -- Event to repair weapon RegisterNetEvent('weapon_repair:repairWeapon', function(weaponName) local src = source local Player = QBCore.Functions.GetPlayer(src) if not Player then return end -- Check if player has the repair kit if not exports["tgiann-inventory"]:HasItem(src, Config.RepairKit.item, 1) then TriggerClientEvent('QBCore:Notify', src, Config.Notifications.noRepairKit, 'error') return end -- Get all player items local playerItems = exports["tgiann-inventory"]:GetPlayerItems(src) local weaponFound = false -- Loop through items to find the weapon for slot, itemData in pairs(playerItems) do if itemData.name == weaponName then -- Check if weapon needs repair local durability = itemData.info and itemData.info.durabilityPercent or 100 if durability >= 100 then TriggerClientEvent('QBCore:Notify', src, Config.Notifications.alreadyRepaired, 'error') return end -- Repair the weapon local success = exports["tgiann-inventory"]:RepairWeapon(src, slot, Config.RepairKit.repairAmount) if success then -- Remove repair kit if configured if Config.RepairKit.removeOnUse then exports["tgiann-inventory"]:RemoveItem(src, Config.RepairKit.item, 1) end TriggerClientEvent('QBCore:Notify', src, Config.Notifications.repaired, 'success') -- Play repair animation TriggerClientEvent('weapon_repair:playRepairAnimation', src) end weaponFound = true break end end if not weaponFound then TriggerClientEvent('QBCore:Notify', src, Config.Notifications.noWeapon, 'error') end end) -- Function to repair all weapons in inventory (admin command) RegisterCommand('repairallweapons', function(source, args) local src = source local Player = QBCore.Functions.GetPlayer(src) if not Player then return end -- Check if player is admin if Player.PlayerData.permission ~= "admin" and Player.PlayerData.permission ~= "god" then return end local playerItems = exports["tgiann-inventory"]:GetPlayerItems(src) local weaponsRepaired = 0 for slot, itemData in pairs(playerItems) do if string.match(itemData.name, "weapon_") then exports["tgiann-inventory"]:RepairWeapon(src, slot, 100) weaponsRepaired = weaponsRepaired + 1 end end TriggerClientEvent('QBCore:Notify', src, "Repaired " .. weaponsRepaired .. " weapons", 'success') end, false)