111 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 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)
 | 
