Ludwig Furnituremanagement

:couch_and_lamp: Ludwig´s Furniture Management


The Complete Furniture Commerce Solution for RedM

Stop fiddling with furniture configs across a dozen different scripts.

LUDWIG_FURNITUREMANAGEMENT is the definitive central hub for buying, placing, and managing props. It provides a seamless, unified experience for your players and a robust API for developers to hook into.

Links

:shopping_cart: Buy on Tebex (closed)

:shopping_cart: Buy on Tebex (open code)

:speech_balloon: Join my Discord

:rocket: Key Features

  • In-World NPC Stores Spawn furniture vendors at any location with custom coords, animations, scenarios, and map blips.

  • Live 3D Preview Players can rotate and zoom props directly in-world before adding them to the basket. Every store has a dedicated preview zone so nothing feels abstract.

  • Category & Search System Furniture is organised into categories (beds, chairs, bathroom, and more). Players can filter by keyword inside the buy panel for fast browsing.

  • 20 Categories with 1300+ Items Preconfigured Categorized Furniture-Items with custom Labels (german), pricing etc. Easy to expand and edit (some Assets are Free Spooni Stuff like “badewanne1”.

  • Basket Checkout Add multiple items at different quantities, see the running total, and purchase everything in one go. No repeated menu-diving.

  • VORP-Native Full VORP Core + vorp_inventory integration out of the box — money checks, item grants with metadata, carry-weight validation. No patching required.

  • Open Developer API Expose your own housing/camp resource to the furniture management UI (move / sell / pickup) with a single client-side export call. Callbacks give you full control.

  • Per-Store Catalogues Assign individual category lists (or all categories) to each store. Blacklist categories per location. One config file, total flexibility.


Buy Menu

Managing Menu

:hammer_and_wrench: Technical Excellence

:red_circle: Native VORP Support

Ludwig Furnitureselling integrates seamlessly with VORP Core and vorp_inventory right out of the box. Money deductions, item grants, metadata — all handled through the shared VORP-bridge that is open in both versions.

:bridge_at_night: Open Developer Exports

Don´t want to maintain UIs for all your Resources ? Just use the initUi client export with your own spawned entities and receive typed callbacks for every player action.


:memo: How It Works

  1. Browse the Store: Player walks up to an NPC vendor and opens the buy panel.
  2. Preview Items: Hover a furniture card — the prop spawns at the preview point and the camera focuses on it. Rotate and zoom with the mouse.
  3. Fill the Basket: Add items at any quantity, watch the total update live.
  4. Checkout: One click purchases the entire basket. Items land in inventory with model metadata attached.
  5. Place at Home: Player uses the inventory item → placement is handled using gs_gizmo inside furnituremanagement → Your Provider gets the Info to handle the rest.

:gear: Examples

Store Config

 ["Ludwig´s Store"] = {
        coords = vector3(-726.2164306640625, -1275.0068359375, 43.57690048217773),
        npc = {
            heading = 358.8620,
            ped = "cs_watson_02",
            animDict = "script_amb@stores@store_shadyshop",
            animName = "base",
            scenario = "WORLD_HUMAN_SMOKE" --scenario will beat animation
        },
        blip = {
            show = true,
            overwriteName = false, -- optional
            sprite = "blip_chest", -- optional
            color = false          -- optional
        },
        props = {
            previewPropCoords = vector3(-722.9008, -1272.0609, 43.5769),
            heading = 1.6307,
        },
        configs = "all" -- or table selecting specific categories
        blacklist = { "campfire", "tent" } -- dont show these categories
    }, 


Item Config:

Config.fencesFurniture = {
    ["p_barricadewood_lrg01x"] = {
        costToBuy = 2,
        sellFor = false,
        label = "Eine mannshohe Holzwand",
        description = false,
        icon = false,
        canPickup = false -- optional value that shall allow pickup instead of sell
    },
    ["p_hitchingpost04x"] = {
        costToBuy = 8,
        sellFor = false,
        label = "Anbindepfosten",
        description = false,
        icon = false,
        canPickup = false -- optional value that shall allow pickup instead of sell
    },
}

How to call UI from your script

         exports.ludwig_furnituremanagement:initUi {
            uniqueId      = "testHouse123",
            furnitureList = testFurniture,

            onPickup      = function(uniqueId, uniqueFurnId, handle, _, model)
                print("Picked up:", uniqueId, uniqueFurnId, handle, model)
            end,

            onDelete      = function(uniqueId, uniqueFurnId, handle, _, model)
                print("Sold:", uniqueId, uniqueFurnId, handle, model)
            end,

            onMove        = function(uniqueId, uniqueFurnId, handle, cfg, model, newPosition, newRotation)
                print("Moved:", uniqueId, uniqueFurnId, handle, model,
                    "New Pos:", newPosition.x, newPosition.y, newPosition.z,
                    "New Rot:", newRotation.x, newRotation.y, newRotation.z, "Config:", json.encode(cfg))
            end,
        }

example Outputs from Functions above:

Moved:	testHouse123	test_item_3	6289922	p_hitchingpost04x	New Pos:	-727.60760498047	-1283.3571777344	42.713634490967	New Rot:	0.0	0.0	0.0	Config:	{"label":"Anbindepfosten","description":false,"canPickup":false,"furniture":"p_hitchingpost04x","sellFor":5.6,"costToBuy":8,"icon":false}
Sold:	testHouse123	test_item_3	4431874	p_hitchingpost04x

Checklist

  • I have reviewed the latest version of the Releases rules.
  • I have included a detailed description of my work as described in the rules.
  • I have included a download link or a store link.
  • I have filled out the required information at the end of the topic

If you’re selling your resource, please include the following information at the end of your post:

Code is accessible Yes & No (2 versions)
Subscription-based No
Lines (approximately) Number of lines
Requirements ox_lib, murphy_interact, vorp_core, gs_gizmo
Support Yes
1 Like