[QB] Adding qb-inventory crafting in Base Building
This snippet will help you setup the Weapons crafting and the normal Crafting from qb-inventory as events to use on other scripts like hrs_base_building
In qb-inventory
qb-inventory\client\main.lua
OLD CODE:
local function ItemsToItemInfo()
local itemInfos = {
[1] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 22x, " ..QBCore.Shared.Items["plastic"]["label"] .. ": 32x."},
[2] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 30x, " ..QBCore.Shared.Items["plastic"]["label"] .. ": 42x."},
[3] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 30x, " ..QBCore.Shared.Items["plastic"]["label"] .. ": 45x, "..QBCore.Shared.Items["aluminum"]["label"] .. ": 28x."},
[4] = {costs = QBCore.Shared.Items["electronickit"]["label"] .. ": 2x, " ..QBCore.Shared.Items["plastic"]["label"] .. ": 52x, "..QBCore.Shared.Items["steel"]["label"] .. ": 40x."},
[5] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 10x, " ..QBCore.Shared.Items["plastic"]["label"] .. ": 50x, "..QBCore.Shared.Items["aluminum"]["label"] .. ": 30x, "..QBCore.Shared.Items["iron"]["label"] .. ": 17x, "..QBCore.Shared.Items["electronickit"]["label"] .. ": 1x."},
[6] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 36x, " ..QBCore.Shared.Items["steel"]["label"] .. ": 24x, "..QBCore.Shared.Items["aluminum"]["label"] .. ": 28x."},
[7] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 32x, " ..QBCore.Shared.Items["steel"]["label"] .. ": 43x, "..QBCore.Shared.Items["plastic"]["label"] .. ": 61x."},
[8] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 50x, " ..QBCore.Shared.Items["steel"]["label"] .. ": 37x, "..QBCore.Shared.Items["copper"]["label"] .. ": 26x."},
[9] = {costs = QBCore.Shared.Items["iron"]["label"] .. ": 60x, " ..QBCore.Shared.Items["glass"]["label"] .. ": 30x."},
[10] = {costs = QBCore.Shared.Items["aluminum"]["label"] .. ": 60x, " ..QBCore.Shared.Items["glass"]["label"] .. ": 30x."},
[11] = {costs = QBCore.Shared.Items["iron"]["label"] .. ": 33x, " ..QBCore.Shared.Items["steel"]["label"] .. ": 44x, "..QBCore.Shared.Items["plastic"]["label"] .. ": 55x, "..QBCore.Shared.Items["aluminum"]["label"] .. ": 22x."},
[12] = {costs = QBCore.Shared.Items["iron"]["label"] .. ": 50x, " ..QBCore.Shared.Items["steel"]["label"] .. ": 50x, "..QBCore.Shared.Items["screwdriverset"]["label"] .. ": 3x, "..QBCore.Shared.Items["advancedlockpick"]["label"] .. ": 2x."},
}
local items = {}
for _, item in pairs(Config.CraftingItems) do
local itemInfo = QBCore.Shared.Items[item.name:lower()]
items[item.slot] = {
name = itemInfo["name"],
amount = tonumber(item.amount),
info = itemInfos[item.slot],
label = itemInfo["label"],
description = itemInfo["description"] or "",
weight = itemInfo["weight"],
type = itemInfo["type"],
unique = itemInfo["unique"],
useable = itemInfo["useable"],
image = itemInfo["image"],
slot = item.slot,
costs = item.costs,
threshold = item.threshold,
points = item.points,
}
end
Config.CraftingItems = items
end
NEW CODE:
local function ItemsToItemInfo()
local items = {}
for _, item in pairs(Config.CraftingItems) do
local itemInfo = QBCore.Shared.Items[item.name:lower()]
local info = ""
for k,v in pairs(item.costs) do
info = info .. QBCore.Shared.Items[k]["label"]..": "..v.."x "
end
items[item.slot] = {
name = itemInfo["name"],
amount = tonumber(item.amount),
info = {costs = info},
label = itemInfo["label"],
description = itemInfo["description"] or "",
weight = itemInfo["weight"],
type = itemInfo["type"],
unique = itemInfo["unique"],
useable = itemInfo["useable"],
image = itemInfo["image"],
slot = item.slot,
costs = item.costs,
threshold = item.threshold,
points = item.points,
}
end
Config.CraftingItems = items
end
OLD CODE:
local function SetupAttachmentItemsInfo()
local itemInfos = {
[1] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 140x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 250x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 60x"},
[2] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 165x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 285x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 75x"},
[3] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 190x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 305x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 85x, " .. QBCore.Shared.Items["smg_extendedclip"]["label"] .. ": 1x"},
[4] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 205x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 340x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 110x, " .. QBCore.Shared.Items["smg_extendedclip"]["label"] .. ": 2x"},
[5] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 230x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 365x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 130x"},
[6] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 255x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 390x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 145x"},
[7] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 270x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 435x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 155x"},
[8] = {costs = QBCore.Shared.Items["metalscrap"]["label"] .. ": 300x, " .. QBCore.Shared.Items["steel"]["label"] .. ": 469x, " .. QBCore.Shared.Items["rubber"]["label"] .. ": 170x"},
}
local items = {}
for _, item in pairs(Config.AttachmentCrafting["items"]) do
local itemInfo = QBCore.Shared.Items[item.name:lower()]
items[item.slot] = {
name = itemInfo["name"],
amount = tonumber(item.amount),
info = itemInfos[item.slot],
label = itemInfo["label"],
description = itemInfo["description"] or "",
weight = itemInfo["weight"],
unique = itemInfo["unique"],
useable = itemInfo["useable"],
image = itemInfo["image"],
slot = item.slot,
costs = item.costs,
threshold = item.threshold,
points = item.points,
}
end
Config.AttachmentCrafting["items"] = items
end
NEW CODE:
local function SetupAttachmentItemsInfo()
local items = {}
for _, item in pairs(Config.AttachmentCrafting["items"]) do
local itemInfo = QBCore.Shared.Items[item.name:lower()]
local info = ""
for k,v in pairs(item.costs) do
info = info .. QBCore.Shared.Items[k]["label"]..": "..v.."x "
end
items[item.slot] = {
name = itemInfo["name"],
amount = tonumber(item.amount),
info = {costs = info},
label = itemInfo["label"],
description = itemInfo["description"] or "",
weight = itemInfo["weight"],
unique = itemInfo["unique"],
useable = itemInfo["useable"],
image = itemInfo["image"],
slot = item.slot,
costs = item.costs,
threshold = item.threshold,
points = item.points,
}
end
Config.AttachmentCrafting["items"] = items
end
DELETE THIS:
CreateThread(function()
if Config.UseTarget then
exports['qb-target']:AddTargetModel(Config.CraftingObject, {
options = {
{
event = "inventory:client:craftTarget",
icon = "fas fa-tools",
label = Lang:t("menu.craft"),
},
},
distance = 2.5,
})
else
while true do
local sleep = 1000
if LocalPlayer.state['isLoggedIn'] then
local pos = GetEntityCoords(PlayerPedId())
local craftObject = GetClosestObjectOfType(pos, 2.0, Config.CraftingObject, false, false, false)
if craftObject ~= 0 then
local objectPos = GetEntityCoords(craftObject)
if #(pos - objectPos) < 1.5 then
sleep = 0
DrawText3Ds(objectPos.x, objectPos.y, objectPos.z + 1.0, Lang:t("interaction.craft"))
if IsControlJustReleased(0, 38) then
local crafting = {}
crafting.label = Lang:t("label.craft")
crafting.items = GetThresholdItems()
TriggerServerEvent("inventory:server:OpenInventory", "crafting", math.random(1, 99), crafting)
sleep = 100
end
end
end
end
Wait(sleep)
end
end
end)
CreateThread(function()
while true do
local sleep = 1000
if LocalPlayer.state['isLoggedIn'] then
local pos = GetEntityCoords(PlayerPedId())
local distance = #(pos - Config.AttachmentCraftingLocation)
if distance < 10 then
if distance < 1.5 then
sleep = 0
DrawText3Ds(Config.AttachmentCraftingLocation.x, Config.AttachmentCraftingLocation.y, Config.AttachmentCraftingLocation.z, Lang:t("interaction.craft"))
if IsControlJustPressed(0, 38) then
local crafting = {}
crafting.label = Lang:t("label.a_craft")
crafting.items = GetAttachmentThresholdItems()
TriggerServerEvent("inventory:server:OpenInventory", "attachment_crafting", math.random(1, 99), crafting)
sleep = 100
end
end
end
end
Wait(sleep)
end
end)
INSERT NEW CODE AT THE BOTTOM OF THE FILE:
RegisterNetEvent('inventory:client:craftTarget',function()
local crafting = {}
crafting.label = Lang:t("label.craft")
crafting.items = GetThresholdItems()
TriggerServerEvent("inventory:server:OpenInventory", "crafting", math.random(1, 99), crafting)
end)
RegisterNetEvent('inventory:client:craftWeapon',function()
local crafting = {}
crafting.label = Lang:t("label.a_craft")
crafting.items = GetAttachmentThresholdItems()
TriggerServerEvent("inventory:server:OpenInventory", "attachment_crafting", math.random(1, 99), crafting)
end)
In HRS_base_building
hrs_base_building\config.lua
["prop_tool_bench02_ld"] = {
item = "prop_tool_bench02_ld",
life = 10000.0,
type = "crafting",
subtype = "findGroud",
noFoundationNeed = true,
TriggerEvent = {
type = "client",
event = "inventory:client:craftTarget",
args = {}, --- agrs in order
entityAsArg = "hrs_base_entity" --- in the arguments, this word will be replaced by the Entity
},
crafting = {
{name = "wood",count = 20}
}
},
["gr_prop_gr_bench_02a"] = {
item = "gr_prop_gr_bench_02a",
life = 20000.0,
type = "crafting",
subtype = "findGroud",
noFoundationNeed = true,
TriggerEvent = {
type = "client",
event = "inventory:client:craftWeapon",
args = {},
entityAsArg = "hrs_base_entity" --- in the arguments, this word will be replaced by the Entity
},
crafting = {
{name = "wood",count = 20},
{name = "metalscrap",count = 20}
}
},
Previous[QB/ESX] Adding ox_inventory crafting in Base BuildingNext[ESX] Adding core_crafting crafting in Base Building
Last updated