1
0
Fork 0
forked from Simnation/Main
Main/resources/[inventory]/nordi_weapon_repair/server.lua

112 lines
3.9 KiB
Lua
Raw Normal View History

2025-07-19 01:49:57 +02:00
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)