Adding core_crafting(QB) crafting in Base Building

This snippet will help you setup crafting from core_crafting as events to use on other scripts like hrs_base_building

In core_crafting

core_crafting\client\main.lua

  • OLD CODE:

Citizen.CreateThread(function()
    while true do
        Citizen.Wait(1)
        local ped = PlayerPedId()
        local coords = GetEntityCoords(ped)
        for _, v in ipairs(Config.Workbenches) do
            local dst = #(coords - v.coords)
            if dst < 20 then
                DrawText3D(v.coords[1], v.coords[2], v.coords[3], Config.Text['workbench_hologram'])
            end
            if dst < 2 then
                if IsControlJustReleased(0, 38) then
                    local open = false
                        local gang = QBCore.Functions.GetPlayerData().gang.name
                    for _, g in ipairs(v.jobs) do
                        if g == job then
                            open = true
                        end
                    end

                    for _, g in ipairs(v.gangs) do
                        if g == gang then
                            open = true
                        end
                    end  

                        if open or (#v.jobs == 0 and #v.gangs == 0) then
                        openWorkbench(v)
                    else
                        QBCore.Functions.Notify(Config.Text['wrong_job'], 'error')
                    end
                end
            end
        end
    end
end)


RegisterNetEvent("open:workbench")
AddEventHandler("open:workbench", function()
    for _, v in ipairs(Config.Workbenches) do
        local open = false
         local gang = QBCore.Functions.GetPlayerData().gang.name

        for _, g in ipairs(v.jobs) do
            if g == job then
                open = true
            end
        end

         for _, g in ipairs(v.gangs) do
            if g == gang then
                open = true
            end
        end

        if open or (#v.jobs == 0 and #v.gangs == 0) then
            openWorkbench(v)
        else
            QBCore.Functions.Notify(Config.Text['wrong_job'], 'error')
        end
    end
end)


  • NEW CODE:

Citizen.CreateThread(function()
    while true do
        Citizen.Wait(1)
        local ped = PlayerPedId()
        local coords = GetEntityCoords(ped)
        for _, v in ipairs(Config.Workbenches) do
            local dst = #(coords - v.coords)
            if dst < 20 then
                DrawText3D(v.coords[1], v.coords[2], v.coords[3], Config.Text['workbench_hologram'])
            end
            if dst < 2 then
                if IsControlJustReleased(0, 38) then
                    local open = false
                        local gang = QBCore.Functions.GetPlayerData().gang.name
                    for _, g in ipairs(v.jobs) do
                        if g == job then
                            open = true
                        end
                    end

                    for _, g in ipairs(v.gangs) do
                        if g == gang then
                            open = true
                        end
                    end  

                        if open or (#v.jobs == 0 and #v.gangs == 0) then
                        openWorkbench(v)
                    else
                        QBCore.Functions.Notify(Config.Text['wrong_job'], 'error')
                    end
                end
            end
        end
    end
end) --- if you don't want to use coords based craftings anymore this can be removed

RegisterNetEvent("open:workbench")
AddEventHandler("open:workbench", function(index)
    v = Config.Workbenches[index] --- this index is the i value in Config.Workbenches

   
        local open = false
         local gang = QBCore.Functions.GetPlayerData().gang.name

        for _, g in ipairs(v.jobs) do
            if g == job then
                open = true
            end
        end

         for _, g in ipairs(v.gangs) do
            if g == gang then
                open = true
            end
        end

        if open or (#v.jobs == 0 and #v.gangs == 0) then
            openWorkbench(v)
        else
            QBCore.Functions.Notify(Config.Text['wrong_job'], 'error')
        end
    
end)

core_crafting\config.lua

CraftingStopWithDistance = false, -- You need to set this false
Workbenches = { 
    {
        coords = vector3(101.26113891602,6615.810546875,33.58126831054), 
        jobs = {},
        gangs = {}, 
        blip = false, 
        recipes = {"model_base_wood","model_window_wood"}, -- examples normal crafting table
        radius = 3.0 
    }, ---- index = 1
    {
        coords = vector3(101.26113891602,6615.810546875,33.58126831054), 
        jobs = {},
        gangs = {},  
        blip = false, 
        recipes = {"bandage","medikit"}, -- examples medic table
        radius = 3.0 
    }, ---- index = 2
    {
        coords = vector3(101.26113891602,6615.810546875,33.58126831054), 
        jobs = {},
        gangs = {}, 
        blip = false, 
        recipes = {"weapon_pistol","weapon_musket"}, -- examples weapon table
        radius = 3.0 
    } ---- index = 3
},-- here you have to setup your different crafting tables options

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 = "open:workbench",
            args = {1}, --normal crafting table
            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 = "open:workbench",
            args = {3}, -- weapon crafting table
            entityAsArg = "hrs_base_entity" --- in the arguments, this word will be replaced by the Entity
        },
        crafting = {
            {name = "wood",count = 20},
            {name = "metalscrap",count = 20}
        }
    },

Last updated