[QBCore/ESX] Base Building (rust like building system with stash and raid..... )

Sinor-BaseBuilding

  • a prop placement resource with snapping and extended functionality for supported frameworks.

Features

  • Precise Prop Snapping:Ensures accurate placement.
  • Animated Doors & Garages: Includes open/close animations.
  • Clothing Menu: Accessible directly from placed props.
  • Authorization System: Utilizes a tool cupboard prop with a configurable radius.
  • Upgrade System: Progress props from wood to stone to metal.
  • C4 Raid System: Allows for destructible props.
  • Removable Props: Wood building props can be removed.
  • Attached Setup: Configurable setup for props on placement (see Config.attachedSetup).
  • Stash System: Supports QBCore, New QBCore, and OX inventories with configurable stash props (slots and weight).
  • Overlap Prevention: Prevents props from being placed on top of each other (customize with Config.NoOverlapGroups).
  • Restricted Free Placement: Building props that snap to others cannot be freely placed (customize in Config.FreePlacement).
  • Crafting System: Includes a simple crafting system.
  • Custom Props: Features 58 custom props for improved building.
  • V2 props included “free” with building resources.
  • preview system using color indicators to show valid prop placement based on position and other factors.
  • custom event system for adding interactive events to props, such as clothing.
  • permission configurations to require authorization for interactions like upgrading and stash
  • simple electricity system with lights and solar panels.
  • and more with updates.

Supported Frameworks

  • QBCore — new and old “qb-inventory” and “ox_inventory” and “ox_target” and “qb-target”
  • ESX — “ox_inventory” and “ox_target”

Usage

  • Use the items in-game to place props, following the on-screen instructions.
  • Snap props to surfaces or other objects.
  • Interact with props for raiding, upgrading, or other functionalities.

change logs

v2:

  • This base building version features:
  • V2 props included “free” with building resources.
  • A new preview system using color indicators to show valid prop placement based on position and other factors.
  • A custom event system for adding interactive events to props, such as clothing.
  • New permission configurations to require authorization for interactions like upgrading and stash
  • A simple electricity system with lights and solar panels.
  • Other fixes.
  • preview : https://youtu.be/uIKtwBLscC0

change logs: Update 2.1.0:

  • Fixed small bugs and resolved an issue where ox stash was not registering to the database.

change logs: Update 2.2.0:

  • Added a command to reload bases in case of duplication/interaction issues.
  • Minor update to the ox_inventory stash system.
  • Fixed interaction issues on props after upgrade and reduced spam wait time to 5 seconds.

change logs: Update 2.3.0:

  • Translation configuration added.
  • Added JPR inventory support.
  • Fixed minor bugs and glitches.

Configuration

Config = {}

Config.Inventory = "qb" -- "ox_inventory", "qb" ,"new-qb"
Config.TargetSystem = "qb-target" --"ox_target" , "qb-target"
Config.Print = false -- print server and client.
Config.STREAM_DISTANCE = 500 -- load and unload props at this distance , note: the props lod is 200 so no lower then that.
Config.AREA_VALIDATION_RADIUS = 250 -- Validate loaded props at this radius.
Config.UseBlackScreen = true -- player will have a black screen while he load the bases.
Config.RestartCleanup = false --  if true every prop that is not in radius of a ToolCupboard will be cleaned.
Config.ReloadCommand = "unloadbase" -- use this command when theres dublication or no interaction "it happen rarely but still"
Config.NoBuildZones = {
    {coords = vector3(457.28, -808.81, 40.88), radius = 200.0}, 
    {coords = vector3(-418.43, 1153.3, 342.81), radius = 200.0},   
    -- add as more as needed
}
Config.CupboardPermissions = {
    -- place and remove and doors/garages need auth by default
    Stash = true,    -- auth needed to open stash
    Upgrade = true,  -- auth needed to upgrade
}
-- electricity system
Config.electricity = {
    use_electricity = true, -- set to false if you dont need it
    SolarModel = "prop_solarpanel_03", -- solar panel prop model
    solar_range = 50.0, -- the radius of solar panel power
    updateInterval = 0   -- dont change
}
Config.lightTypes = {
    -- 2 types you can add more
    small_light = {
        propName = "sinor_prop_small_light",
        propHash = GetHashKey("sinor_prop_small_light"),
        lightOffset = vector3(0.0, 0.0, 0.6), -- light offset from the prop
        glowOffset = vector3(0.0, 0.0, 0.3), -- small glow on prop offset
        spotLight = {
            color = { r = 255, g = 200, b = 150 }, -- light color
            distance = 100.0, -- at this distance the light can reach
            brightness = 1.0, -- light brightness 
            hardness = 3.0, -- light roundness/hardness from the prop
            radius = 40.0, -- light radius from the prop
            falloff = 1.0, -- idk what is this ngl
            shadow = 1 -- 0 for no shadow
        },
        glow = true -- true then theres small glow on prop
    },
    big_light = {
        propName = "sinor_prop_big_light",
        propHash = GetHashKey("sinor_prop_big_light"),
        lightOffset = vector3(0.0, 0.0, 2.4),
        glowOffset = vector3(0.0, 0.0, 1.4),
        spotLight = {
            color = { r = 255, g = 200, b = 150 },
            distance = 100.0,
            brightness = 2.0,
            hardness = 2.0,
            radius = 30.0,
            falloff = 2.0,
            shadow = 1
        },
        glow = true
    }
}
-- add any event to any prop 
Config.CustomPropEvents = {
    -- clothing event
    clothing = {
        event = 'ClothingEvent',  
        targetEvent = 'illenium-appearance:client:openClothingShopMenu',  
        enabled = true,
        label = "Change Clothes",
        icon = "fas fa-tshirt",
        distance = 3.0,
        props = {'bkr_prop_biker_garage_locker_01'}
    },
    -- example
    -- name = {
    --     event = 'any_name',  
    --     targetEvent = 'The_actual_event_to_call',  
    --     enabled = true or false 
    --     label = "label_for_interaction",
    --     icon = "interaction_icon",
    --     distance = distance_to_interact,
    --     props = {'prop_name'}
    -- },
    
    -- add more if needed
}
Config.Interactions = {
    Distance = 2.5, -- Default interaction distance
    CheckInterval = 1000, -- How often to check for new props (ms)
    Types = {
        doors = {
            enabled = true,
            distance = 3.0,
        },
        garages = {
            enabled = true,
            distance = 3.0,
        },
        stashes = {
            enabled = true,
            distance = 3.0,
        },
        tool_cupboards = {
            model = "sinor_prop_toolcupboard", -- prop model 
            defaultRadius = 50.0, -- auth redius
            authItem = "weapon_hammer", -- needed to intract with the tool cupboard prop
            enabled = true,
            distance = 3.0,
        },
        removable_props = {
            enabled = true,
            distance = 3.0,
        },
        c4_targets = {
            enabled = true,
            distance = 3.0,
        },
        upgrades = {
            enabled = true,
            distance = 3.0,
            item = "weapon_hammer", -- Required item for upgrades
            icon = "fas fa-hammer",
            label = "Upgrade Structure",
        },
    }
}
-- dont change
Config.attachedSetup = {
    -- you can do props attached when placed here
    Foundation_setup = { -- example of stone under foundation "remove if not needed"
        prop = { model = "sinor_prop_foundation_square_wood", position = vector3(0.0, 0.0, 0.0) },
        block = { model = "sinor_prop_block_square", offset = vector3(0.0, 0.0, -3.1) }, 
    },
    triangle_Foundation_setup = {
        prop = { model = "sinor_prop_foundation_triangle_wood", position = vector3(0.0, 0.0, 0.0) },
        block = { model = "sinor_prop_block_triangle", offset = vector3(0.0, 0.0, -3.1) }, 
    },
}
-- Items that can be placed in the world
Config.CupboardItem = "toolcupboard" -- item name
Config.Items = {
    -- electricity
    small_light = { prop = "sinor_prop_small_light" },
    big_light = { prop = "sinor_prop_big_light" },
    solar = { prop = "prop_solarpanel_03" },
    -- decoration
    barbeque = { prop = "prop_bbq_5" },
    fire = { prop = "prop_hobo_stove_01" },
    table = { prop = "prop_tool_bench02_ld" },
    chair = { prop = "hei_prop_hei_skid_chair" },
    sofa = { prop = "apa_mp_h_yacht_sofa_02" },
    plant = { prop = "apa_mp_h_acc_plant_palm_01" },
    coffeemachine = { prop = "hei_heist_kit_coffeemachine_01" },
    lamp = { prop = "v_res_d_lampa" },
    sink = { prop = "prop_ff_sink_02" },
    bench = { prop = "prop_bench_01a" },
    microwave = { prop = "prop_micro_04" },
    speaker = { prop = "prop_speaker_01" },
    tv = { prop = "des_tvsmash_start" },
    bin = { prop = "prop_bin_10a" },
    shelves = { prop = "prop_ff_shelves_01" },
    clothinglocker = { prop = "bkr_prop_biker_garage_locker_01" },
    toolshelf = { prop = "prop_tool_bench01" },
    ------ you can add more decoration from here : https://forge.plebmasters.de/objects
    --- building props   
    tfoundation = { prop = "sinor_prop_foundation_triangle_wood" },
    foundation = { prop = "sinor_prop_foundation_square_wood" },            
    tceiling = { prop = "sinor_prop_ceiling_triangle_wood" }, 
    ceiling = { prop = "sinor_prop_ceiling_square_wood" },                            
    doorway = { prop = "sinor_prop_doorway_wood" },
    wall = { prop = "sinor_prop_wall_wood" }, 
    windowframe = { prop = "sinor_prop_windowframe_wood" },
    wstairs = { prop = "sinor_prop_wallstairs_wood" },
    ustairs = { prop = "sinor_prop_ustairs_wood" },
    lstairs = { prop = "sinor_prop_lstairs_wood" },
    estairs = { prop = "sinor_prop_estairs_wood" },
    halfwall = { prop = "sinor_prop_halfwall_wood" },
    ramp = { prop = "sinor_prop_ramp_wood" },
    roof = { prop = "sinor_prop_roof_wood" },
    troof = { prop = "sinor_prop_triangleroof_wood" },
    roofwall = { prop = "sinor_prop_roofwall_wood" },
    frame = { prop = "sinor_prop_frame_wood" },
    windowbar = { prop = "sinor_prop_windowbar_wood" },
    bigwall = { prop = "sinor_prop_big_wood_wall" },
    gateframe = { prop = "sinor_prop_gate_frame" },
}
Config.Doors = {
    woodendoor = { prop = "sinor_prop_door_wood" },
    metaldoor = { prop = "sinor_prop_door_metal" },
    gatedoor = { prop = "sinor_prop_gate_door" },
}
Config.Garages = {
    woodengarage = { prop = "sinor_prop_garage_wood"},
    metalgarage = { prop = "sinor_prop_garage_metal"}
}
Config.Stashes = {
    ["small_storage"] = {prop = "prop_cs_lester_crate", label = "Small Storage Box", slots = 15, weight = 100000, },
    ["large_storage"] = {prop = "v_res_tre_storagebox", label = "Large Storage Container", slots = 50, weight = 4000000, },
    ["weapon_locker"] = {prop = "prop_gun_case_02", label = "Weapon Locker", slots = 10, weight = 500000,},
    ["fridge"]        = {prop = "prop_fridge_03", label = "Refrigerator", slots = 30, weight = 200000,}
}
-- prop cant be placed on eash other
Config.NoOverlapGroups = {
    foundations = {"sinor_prop_foundation_triangle_wood","sinor_prop_foundation_triangle_stone","sinor_prop_foundation_triangle_metal","sinor_prop_foundation_square_wood","sinor_prop_foundation_square_stone","sinor_prop_foundation_square_metal"},
    walls = {"sinor_prop_wall_wood","sinor_prop_wall_stone","sinor_prop_wall_metal","sinor_prop_doorway_wood","sinor_prop_doorway_stone","sinor_prop_doorway_metal","sinor_prop_windowframe_wood","sinor_prop_windowframe_stone","sinor_prop_windowframe_metal","sinor_prop_halfwall_wood","sinor_prop_halfwal_stone","sinor_prop_halfwal_metal","sinor_prop_roofwall_wood","sinor_prop_roofwall_stone","sinor_prop_roofwall_metal"},
    doors = {"sinor_prop_door_wood","sinor_prop_door_metal"},
    garages = {"sinor_prop_garage_wood","sinor_prop_garage_metal"},-- for some reason garages can be overlapped idk why ill fix it next time"maybe"
    ceiling = {"sinor_prop_ceiling_square_wood","sinor_prop_ceiling_square_stone","sinor_prop_ceiling_square_metal","sinor_prop_ceiling_triangle_wood","sinor_prop_ceiling_triangle_stone","sinor_prop_ceiling_triangle_metal"},
    stairs = {"sinor_prop_ustairs_wood","sinor_prop_ustairs_metal","sinor_prop_lstairs_wood","sinor_prop_lstairs_stone","sinor_prop_lstairs_metal"},
    roofs = {"sinor_prop_roof_wood","sinor_prop_roof_metal","sinor_prop_triangleroof_wood","sinor_prop_triangleroof_stone","sinor_prop_triangleroof_metal"},
    -- add as many as needed
}
--dont change
Config.FreePlacement = {
    ["sinor_prop_foundation_triangle_wood"] = true, 
    ["sinor_prop_foundation_square_wood"] = true, 
    ["sinor_prop_gate_frame"] = true, 
    --add as needed
}
-- raid realted
Config.C4_Item = "raidc4" -- c4 item
Config.C4Delay = 5000 -- expo delay
Config.c4Amount = {
    -- c4 needed for every prop
    -- Wood
    ["sinor_prop_foundation_square_wood"] = 1,
    ["sinor_prop_foundation_triangle_wood"] = 1,
    ["sinor_prop_wall_wood"] = 1,
    ["sinor_prop_doorway_wood"] = 1,
    ["sinor_prop_ceiling_square_wood"] = 1,
    ["sinor_prop_ceiling_triangle_wood"] = 1,
    ["sinor_prop_windowframe_wood"] = 1,
    ["sinor_prop_halfwall_wood"] = 1,
    ["sinor_prop_ustairs_wood"] = 1,
    ["sinor_prop_lstairs_wood"] = 1,
    ["sinor_prop_estairs_wood"] = 1,
    ["sinor_prop_frame_wood"] = 1,
    ["sinor_prop_ramp_wood"] = 1,
    ["sinor_prop_windowbar_wood"] = 1,
    ["sinor_prop_roof_wood"] = 1,
    ["sinor_prop_triangleroof_wood"] = 1,
    ["sinor_prop_roofwall_wood"] = 1,
    ["sinor_prop_wallstairs_wood"] = 1,
    -- stone
    ["sinor_prop_foundation_square_stone"] = 3,
    ["sinor_prop_foundation_triangle_stone"] = 3,
    ["sinor_prop_wall_stone"] = 3,
    ["sinor_prop_doorway_stone"] = 3,
    ["sinor_prop_ceiling_square_stone"] = 3,
    ["sinor_prop_ceiling_triangle_stone"] = 3,
    ["sinor_prop_windowframe_stone"] = 3,
    ["sinor_prop_halfwall_stone"] = 3,
    ["sinor_prop_ustairs_stone"] = 3,
    ["sinor_prop_lstairs_stone"] = 3,
    ["sinor_prop_triangleroof_stone"] = 3,
    ["sinor_prop_roofwall_stone"] = 3,
    ["sinor_prop_wallstairs_stone"] = 3,
    -- metal
    ["sinor_prop_foundation_square_metal"] = 7,
    ["sinor_prop_foundation_triangle_metal"] = 7,
    ["sinor_prop_wall_metal"] = 7,
    ["sinor_prop_doorway_metal"] = 7,
    ["sinor_prop_ceiling_square_metal"] = 7,
    ["sinor_prop_ceiling_triangle_metal"] = 7,
    ["sinor_prop_windowframe_metal"] = 7,
    ["sinor_prop_halfwall_metal"] = 7,
    ["sinor_prop_ustairs_metal"] = 7,
    ["sinor_prop_lstairs_metal"] = 7,
    ["sinor_prop_estairs_metal"] = 1,
    ["sinor_prop_frame_metal"] = 5,
    ["sinor_prop_ramp_metal"] = 4,
    ["sinor_prop_roof_metal"] = 4,
    ["sinor_prop_triangleroof_metal"] = 4,
    ["sinor_prop_roofwall_metal"] = 4,
    ["sinor_prop_windowbar_metal"] = 4,
    ["sinor_prop_wallstairs_metal"] = 4,
    -- garages/door
    ["sinor_prop_door_wood"] = 3,
    ["sinor_prop_door_metal"] = 7,
    ["sinor_prop_garage_wood"] = 4,
    ["sinor_prop_garage_metal"] = 8,
    -- gate and big wall
    ["sinor_prop_gate_door"] = 10,
    ["sinor_prop_big_wood_wall"] = 8,
    ["sinor_prop_gate_frame"] = 8,
}
-- props that can be removed
Config.RemovableProps = {
    -- decoration
    s_container = { prop = "prop_ld_container", item = "weapon_crowbar", label = "S container" },
    trailer = { prop = "prop_trailer_01_new", item = "weapon_crowbar", label = "Trailer" },
    barbeque = { prop = "prop_bbq_5", item = "weapon_crowbar", label = "Barbeque" },
    fire = { prop = "prop_hobo_stove_01", item = "weapon_crowbar", label = "Fire" },
    table = { prop = "prop_tool_bench02_ld", item = "weapon_crowbar", label = "Table" },
    chair = { prop = "hei_prop_hei_skid_chair", item = "weapon_crowbar", label = "Chair" },
    sofa = { prop = "apa_mp_h_yacht_sofa_02", item = "weapon_crowbar", label = "Sofa" },
    plant = { prop = "apa_mp_h_acc_plant_palm_01", item = "weapon_crowbar", label = "Plant" },
    coffeemachine = { prop = "hei_heist_kit_coffeemachine_01", item = "weapon_crowbar", label = "Coffee machine" },
    lamp = { prop = "v_res_d_lampa", item = "weapon_crowbar", label = "Lamp" },
    sink = { prop = "prop_ff_sink_02", item = "weapon_crowbar", label = "Sink" },
    bench = { prop = "prop_bench_01a", item = "weapon_crowbar", label = "Bench" },
    microwave = { prop = "prop_micro_04", item = "weapon_crowbar", label = "Microwave" },
    speaker = { prop = "prop_speaker_01", item = "weapon_crowbar", label = "Speaker" },
    tv = { prop = "des_tvsmash_start", item = "weapon_crowbar", label = "Tv" },
    bin = { prop = "prop_bin_10a", item = "weapon_crowbar", label = "Bin" },
    shelves = { prop = "prop_ff_shelves_01", item = "weapon_crowbar", label = "Shelves" },
    clothinglocker = { prop = "bkr_prop_biker_garage_locker_01", item = "weapon_crowbar", label = "Clothinglocker" },
    toolshelf = { prop = "prop_tool_bench01", item = "weapon_crowbar", label = "Toolshelf" },
    laundry = { prop = "ch_prop_ch_laundry_machine_01a", item = "weapon_crowbar", label = "Laundry" },
    ladder = { prop = "sinor_prop_ladder", item = "weapon_crowbar", label = "Ladder" },
     -- all building props "wood only can be removed"
    block = { prop = "sinor_prop_block_square", item = "weapon_crowbar", label = "Block" },
    tblock = { prop = "sinor_prop_block_triangle", item = "weapon_crowbar", label = "Tblock" },
    tfoundation = { prop = "sinor_prop_foundation_triangle_wood", item = "weapon_crowbar", label = "Tfoundation" },
    tceiling = { prop = "sinor_prop_ceiling_triangle_wood", item = "weapon_crowbar", label = "Tceiling" },
    steps = { prop = "sinor_prop_steps_wood", item = "weapon_crowbar", label = "Steps" },
    foundation = { prop = "sinor_prop_foundation_square_wood", item = "weapon_crowbar", label = "Foundation" },
    doorway = { prop = "sinor_prop_doorway_wood", item = "weapon_crowbar", label = "Doorway" },
    ceiling = { prop = "sinor_prop_ceiling_square_wood", item = "weapon_crowbar", label = "Ceiling" },
    wall = { prop = "sinor_prop_wall_wood", item = "weapon_crowbar", label = "Wall" },
    windowframe = { prop = "sinor_prop_windowframe_wood", item = "weapon_crowbar", label = "Windowframe" },
    wstairs = { prop = "sinor_prop_wallstairs_wood", item = "weapon_crowbar", label = "Wstairs" },
    ustairs = { prop = "sinor_prop_ustairs_wood", item = "weapon_crowbar", label = "Ustairs" },
    lstairs = { prop = "sinor_prop_lstairs_wood", item = "weapon_crowbar", label = "Lstairs" },
    estairs = { prop = "sinor_prop_estairs_wood", item = "weapon_crowbar", label = "Estairs" },
    halfwall = { prop = "sinor_prop_halfwall_wood", item = "weapon_crowbar", label = "Halfwall" },
    ramp = { prop = "sinor_prop_ramp_wood", item = "weapon_crowbar", label = "Ramp" },
    roof = { prop = "sinor_prop_roof_wood", item = "weapon_crowbar", label = "Roof" },
    troof = { prop = "sinor_prop_triangleroof_wood", item = "weapon_crowbar", label = "Troof" },
    roofwall = { prop = "sinor_prop_roofwall_wood", item = "weapon_crowbar", label = "Roofwall" },
    frame = { prop = "sinor_prop_frame_wood", item = "weapon_crowbar", label = "Frame" },
    windowbar = { prop = "sinor_prop_windowbar_wood", item = "weapon_crowbar", label = "Windowbar" },
    bigwall = { prop = "sinor_prop_big_wood_wall", item = "weapon_crowbar", label = "Bigwall" },
    gateframe = { prop = "sinor_prop_gate_frame", item = "weapon_crowbar", label = "Gateframe" },
    -- tool cupboard
    Cupboard = { prop = "sinor_prop_toolcupboard",item = "weapon_crowbar", label = "Tool Cupboard" },
    -- storage
    smallstash = { prop = "prop_cs_lester_crate",item = "weapon_crowbar",label = "Small stash"},
    largestash = { prop = "v_res_tre_storagebox",item = "weapon_crowbar",label = "Large stash"},
    weaponlocker = { prop = "prop_gun_case_02",item = "weapon_crowbar",label = "Weapon stash"},
    fridge = { prop = "prop_fridge_03",item = "weapon_crowbar",label = "Fridge stash"},
    -- doors
    wooddoor = { prop = "sinor_prop_door_wood",item = "weapon_crowbar",label = "wood door"},
    metaldoor = { prop = "sinor_prop_door_metal",item = "weapon_crowbar",label = "metal door"},
    gatedoor = { prop = "sinor_prop_gate_door",item = "weapon_crowbar",label = "gate door"},
    -- garages
    woodgarage = { prop = "sinor_prop_garage_wood",item = "weapon_crowbar",label = "wood garage"},
    metalgarage = {  prop = "sinor_prop_garage_metal",item = "weapon_crowbar",label = "metal garage"},
    -- electricity
    small_light = { prop = "sinor_prop_small_light",item = "weapon_crowbar",label = "small light" },
    big_light = { prop = "sinor_prop_big_light",item = "weapon_crowbar",label = "big light" },
    solar = { prop = "prop_solarpanel_03",item = "weapon_crowbar",label = "solar panel" },
}
-- upgrade related
Config.UpgradeAmount = 50 -- amount of stone or metal needed to upgrade
Config.UpgradeMaterials = {
    -- Wood to Stone upgrades require stone
    ["sinor_prop_foundation_square_wood"] = "stone",
    ["sinor_prop_foundation_triangle_wood"] = "stone",
    ["sinor_prop_wall_wood"] = "stone",
    ["sinor_prop_doorway_wood"] = "stone",
    ["sinor_prop_ceiling_square_wood"] = "stone",
    ["sinor_prop_ceiling_triangle_wood"] = "stone",
    ["sinor_prop_windowframe_wood"] = "stone",
    ["sinor_prop_halfwall_wood"] = "stone",
    ["sinor_prop_lstairs_wood"] = "stone",
    ["sinor_prop_wallstairs_wood"] = "stone",
    ["sinor_prop_triangleroof_wood"] = "stone",
    ["sinor_prop_roofwall_wood"] = "stone",
    -- Stone to Metal upgrades require metal
    ["sinor_prop_foundation_square_stone"] = "metal",
    ["sinor_prop_foundation_triangle_stone"] = "metal",
    ["sinor_prop_wall_stone"] = "metal",
    ["sinor_prop_doorway_stone"] = "metal",
    ["sinor_prop_ceiling_square_stone"] = "metal",
    ["sinor_prop_ceiling_triangle_stone"] = "metal",
    ["sinor_prop_windowframe_stone"] = "metal",
    ["sinor_prop_halfwall_stone"] = "metal",
    ["sinor_prop_lstairs_stone"] = "metal",
    ["sinor_prop_wallstairs_stone"] = "metal",
    ["sinor_prop_triangleroof_stone"] = "metal",
    ["sinor_prop_roofwall_stone"] = "metal",
    -- Wood to Metal upgrades require metal
    ["sinor_prop_ustairs_wood"] = "metal",
    ["sinor_prop_frame_wood"] = "metal",
    ["sinor_prop_ramp_wood"] = "metal",
    ["sinor_prop_windowbar_wood"] = "metal",
    ["sinor_prop_estairs_wood"] = "metal",
    ["sinor_prop_roof_wood"] = "metal",
    
}
-- dont change
Config.upgradeStructure = {
    ["sinor_prop_foundation_square_wood"] = "sinor_prop_foundation_square_stone",["sinor_prop_foundation_square_stone"] = "sinor_prop_foundation_square_metal",
    ["sinor_prop_foundation_triangle_wood"] = "sinor_prop_foundation_triangle_stone",["sinor_prop_foundation_triangle_stone"] = "sinor_prop_foundation_triangle_metal",
    ["sinor_prop_wall_wood"] = "sinor_prop_wall_stone",["sinor_prop_wall_stone"] = "sinor_prop_wall_metal",
    ["sinor_prop_doorway_wood"] = "sinor_prop_doorway_stone",["sinor_prop_doorway_stone"] = "sinor_prop_doorway_metal",
    ["sinor_prop_ceiling_square_wood"] = "sinor_prop_ceiling_square_stone",["sinor_prop_ceiling_square_stone"] = "sinor_prop_ceiling_square_metal",
    ["sinor_prop_ceiling_triangle_wood"] = "sinor_prop_ceiling_triangle_stone",["sinor_prop_ceiling_triangle_stone"] = "sinor_prop_ceiling_triangle_metal",
    ["sinor_prop_windowframe_wood"] = "sinor_prop_windowframe_stone",["sinor_prop_windowframe_stone"] = "sinor_prop_windowframe_metal",
    ["sinor_prop_halfwall_wood"] = "sinor_prop_halfwall_stone",["sinor_prop_halfwall_stone"] = "sinor_prop_halfwall_metal",
    ["sinor_prop_ustairs_wood"] = "sinor_prop_ustairs_metal",
    ["sinor_prop_lstairs_wood"] = "sinor_prop_lstairs_stone",["sinor_prop_lstairs_stone"] = "sinor_prop_lstairs_metal",
    ["sinor_prop_estairs_wood"] = "sinor_prop_estairs_metal",
    ["sinor_prop_frame_wood"] = "sinor_prop_frame_metal",
    ["sinor_prop_ramp_wood"] = "sinor_prop_ramp_metal",
    ["sinor_prop_windowbar_wood"] = "sinor_prop_windowbar_metal",
    ["sinor_prop_wallstairs_wood"] = "sinor_prop_wallstairs_stone",["sinor_prop_wallstairs_stone"] = "sinor_prop_wallstairs_metal",
    ["sinor_prop_roof_wood"] = "sinor_prop_roof_metal",
    ["sinor_prop_triangleroof_wood"] = "sinor_prop_triangleroof_stone",["sinor_prop_triangleroof_stone"] = "sinor_prop_triangleroof_metal",
    ["sinor_prop_roofwall_wood"] = "sinor_prop_roofwall_stone",["sinor_prop_roofwall_stone"] = "sinor_prop_roofwall_metal",
}
-- crafting tables
Config.placed_crafting_model = "prop_tool_bench02_ld" -- Model for crafting tables
Config.craftingTables = {
    { coords = vector3(453.36, -806.78, 26.63), heading = 0 },
    -- Add more as needed
}
Config.craftables = {
equipment = {
    label = "Building equipments",
    icon = "fas fa-hammer",
    items = {
        ["weapon_hammer"] = {
            displayName = "Hammer",
            items = { wood = 10, metal = 6 },
            duration = 2000
        },
        ["weapon_crowbar"] = {
            displayName = "Crow Bar",
            items = { metal = 30 },
            duration = 2000
        },
        ["toolcupboard"] = {
            displayName = "Tool Cup Board",
            items = { wood = 80, metal = 20 },
            duration = 5000
        },
    }
},
Compound = {
    label = "Building Compound",
    icon = "fas fa-hammer",
    items = {
        ["bigwall"] = {
            displayName = "Big Compound Wooden Wall",
            items = { wood = 300, metal = 70 },
            duration = 5000
        },
        ["gateframe"] = {
            displayName = "Compound Wooden Gate Frame",
            items = { wood = 350, metal = 20 },
            duration = 5000
        },
        ["gatedoor"] = {
            displayName = "Compound Wooden Gate Door",
            items = { wood = 400, metal = 80 },
            duration = 5000
        },
    }
},
doors = {
    label = "Building doors and Garages",
    icon = "fas fa-hammer",
    items = {
        ["woodendoor"] = {
            displayName = "Wooden Door",
            items = { wood = 100 },
            duration = 2000
        },
        ["metaldoor"] = {
            displayName = "Metal Door",
            items = { metal = 200 },
            duration = 2000
        },
        ["woodengarage"] = {
            displayName = "Wooden Garage",
            items = { wood = 120},
            duration = 5000
        },
        ["metalgarage"] = {
            displayName = "Metal Garage",
            items = { metal = 230 },
            duration = 5000
        },
    }
},
structures = {
    label = "Building Structures",
    icon = "fas fa-hammer",
    items = {
        ["tfoundation"] = {
            displayName = "Triangle Foundation",
            items = { wood = 60, metal = 10 },
            duration = 5000
        },
        ["tceiling"] = {
            displayName = "Triangle Ceiling",
            items = { wood = 50, metal = 8 },
            duration = 5000
        },
        ["foundation"] = {
            displayName = "Square Foundation",
            items = { wood = 70, metal = 20 },
            duration = 6000
        },
        ["doorway"] = {
            displayName = "Wooden Doorway",
            items = { wood = 40, metal = 10 },
            duration = 4000
        },
        ["ceiling"] = {
            displayName = "Square Ceiling",
            items = { wood = 60, metal = 22 },
            duration = 5000
        },
        ["wall"] = {
            displayName = "Wood Wall",
            items = { wood = 50, metal = 15 },
            duration = 5000
        },
        ["windowframe"] = {
            displayName = "Window Frame",
            items = { wood = 40, metal = 10 },
            duration = 4000
        },
        ["wstairs"] = {
            displayName = "Wall Stairs",
            items = { wood = 55, metal = 10 },
            duration = 5000
        },
        ["ustairs"] = {
            displayName = "U-Shaped Stairs",
            items = { wood = 60, metal = 15 },
            duration = 5000
        },
        ["lstairs"] = {
            displayName = "L-Shaped Stairs",
            items = { wood = 60, metal = 15 },
            duration = 5000
        },
        ["estairs"] = {
            displayName = "E-Shaped Stairs",
            items = { wood = 60, metal = 15 },
            duration = 5000
        },
        ["halfwall"] = {
            displayName = "Half Wall",
            items = { wood = 25, metal = 7 },
            duration = 4000
        },
        ["ramp"] = {
            displayName = "Wooden Ramp",
            items = { wood = 45, metal = 10 },
            duration = 4000
        },
        ["roof"] = {
            displayName = "Roof",
            items = { wood = 70, metal = 20 },
            duration = 6000
        },
        ["troof"] = {
            displayName = "Triangle Roof",
            items = { wood = 60, metal = 15 },
            duration = 5000
        },
        ["roofwall"] = {
            displayName = "Roof Wall",
            items = { wood = 40, metal = 10 },
            duration = 4000
        },
        ["frame"] = {
            displayName = "Wood Frame",
            items = { wood = 30, metal = 10 },
            duration = 3000
        },
        ["windowbar"] = {
            displayName = "Window Bar",
            items = { wood = 20, metal = 5 },
            duration = 3000
        },
    }
},
furniture = {
        label = "Furniture",
        icon = "fas fa-couch",
        items = {
        ["barbeque"] = {
            displayName = "Barbeque",
            items = { wood = 10, metal = 5 },
            duration = 2000
        },
        ["fire"] = {
            displayName = "Fire",
            items = { wood = 5, metal = 2 },
            duration = 1500
        },
        ["table"] = {
            displayName = "Workbench Table",
            items = { wood = 20, metal = 5 },
            duration = 3000
        },
        ["chair"] = {
            displayName = "Chair",
            items = { wood = 8, metal = 2 },
            duration = 1500
        },
        ["sofa"] = {
            displayName = "Sofa",
            items = { wood = 15, metal = 5 },
            duration = 2500
        },
        ["plant"] = {
            displayName = "Palm Plant",
            items = { wood = 5, metal = 1 },
            duration = 1000
        },
        ["coffeemachine"] = {
            displayName = "Coffee Machine",
            items = { metal = 10, wood = 2 },
            duration = 2000
        },
        ["lamp"] = {
            displayName = "Lamp",
            items = { metal = 5, wood = 2 },
            duration = 1000
        },
        ["sink"] = {
            displayName = "Sink",
            items = { metal = 8, wood = 2 },
            duration = 1500
        },
        ["bench"] = {
            displayName = "Bench",
            items = { wood = 12, metal = 3 },
            duration = 1500
        },
        ["microwave"] = {
            displayName = "Microwave",
            items = { metal = 10, wood = 1 },
            duration = 2000
        },
        ["speaker"] = {
            displayName = "Speaker",
            items = { metal = 6, wood = 2 },
            duration = 1200
        },
        ["tv"] = {
            displayName = "Flat TV",
            items = { metal = 12, wood = 3 },
            duration = 2500
        },
        ["bin"] = {
            displayName = "Bin",
            items = { metal = 7, wood = 2 },
            duration = 1200
        },
        ["shelves"] = {
            displayName = "Shelves",
            items = { wood = 10, metal = 3 },
            duration = 1500
        },
        ["clothinglocker"] = {
            displayName = "Clothing Locker",
            items = { wood = 15, metal = 5 },
            duration = 2000
        },
        ["toolshelf"] = {
            displayName = "Tool Shelf",
            items = { wood = 12, metal = 4 },
            duration = 1500
        },
        ["laundry"] = {
            displayName = "Laundry Machine",
            items = { metal = 10, wood = 3 },
            duration = 2000
        },
            -- Add more if needed
        }
    }
    -- Add more categories as needed
}

preview : WatchMe

tebex : BuyMe

images :

  • note this images are with v1 props that are not included any more.

props images

Support

  • For help or to report issues join our Discord you can find it in tebex page.

Other Scripts

Standalone|AdvancedZombieSystem
Standalone|SurvivalHUD
Standalone|VehicleSpawne
QBCore/ESX|UsableItems
QBCore/ESX|VehicleCrafting
QBCore/ESX|Recycler
QBCore/ESX|Gather
Standalone|SafeZone
QBCore/ESX|LootAreas
QBCore/ESX|LootPeds
QBCore/ESX|RadiationZones
Standalone|ZombieSystem
QBCore|Shop
QBCore|WeatherSync
QBCore/ESX|InGameMusic
QBCore/ESX|CamperHousing
standalone|SurvivalHUD
QBCore/ESX|LootBags
Vehicles|ApocalypticVehicles-V1
QBCore/ESX|HorseRiding
QBCore/ESX|Menu

Code is accessible Config
Subscription-based No
Lines (approximately) 3500+
Requirements QBCore/ESX
Support Yes
3 Likes

Can buyers add their own props, and will they snap into place like yours if they’re made correctly? Also, do you make players wait for the builds to spawn when they first load in? Other than that, everything looks very nice!

you can add your own props but you cant snap them no , and players do load the bases at login and the more bases the more time to wait

What is the difference with hugo’s base building?

idk man i seen it but never tested it

any one who would like to see some bases and test the resource theres a test server join our discord and ask for it :blue_heart:

change logs v2

  • This base building version features:
  • V2 props included “free” with building resources.
  • A new preview system using color indicators to show valid prop placement based on position and other factors.
  • A custom event system for adding interactive events to props, such as clothing.
  • New permission configurations to require authorization for interactions like upgrading and stash
  • A simple electricity system with lights and solar panels.
  • Other fixes.
  • preview : https://youtu.be/uIKtwBLscC0

change logs: Update 2.1.0:

  • Fixed small bugs and resolved an issue where ox stash was not registering to the database.

change logs: Update 2.2.0:

  • Added a command to reload bases in case of duplication/interaction issues.
  • Minor update to the ox_inventory stash system.
  • Fixed interaction issues on props after upgrade and reduced spam wait time to 5 seconds.
1 Like

change logs: Update 2.3.0:

  • Translation configuration added.

  • Added JPR inventory support.

  • Fixed minor bugs and glitches.