Utility Kitchen

Utility Kitchen

Unlock the true potential of your kitchen.


Card (1)
Frame 2
Youtube Showcase


Screenshots

Contains
  • 50+ Props
  • 5 Preconfigured kitchens
  • 11 Preconfigured items with images
Details
  • 3D Object-based
  • Realistic cooking simulation with dynamic object textures and colors
  • Fully synced between all players in real-time
  • System to build totally customized hamburgers
  • Containers with visual representation of the quantity contained
  • Ability to place tools and furniture where and in what amount you want
  • Ability to create new kitchens
  • Items durability based on cooking quality
  • Food can burn and catch on fire, fire can spread to players (configurable)
  • 3D Progress bar indicating the status of cooking
Config
Config = {}

Config.Debug = false
Config.Target = true
Config.RequireItems = true -- Enable the items requirements and usage
Config.FirePropagateToPlayers = false -- Fire will propagate to all players (also causing fire damage)

Config.RenderScaleforms = 50
Config.CookingAnimationSmoothness = 120 -- higher = smoother but more resource intensive (between 100 and 200 is a good balance)

Config.Translations = {
    ["error_no_space"] = "~r~You dont have enough space in your inventory",
}

-- Used only if Config.RequireItems = true
Config.Containers = {
    label = "Container",
    maxWeight = 6000
}

Config.Kitchens = {
    ["mxc-drivein"] = {
        required = {
            resource = "cfx-mxc-drivein"
        },

        exec = function()
            CreateBurgerTable(vec3(-305.693542, -1469.27686, 29.941721), vec3(0.0, 0.0, 180.0), {
                tableHidden = false,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })
            CreateBurgerTable(vec3(-305.691833, -1468.27991, 29.941721), vec3(0.0, 0.0, 180.0), {
                tableHidden = false,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })

            CreateFryer(vec3(-304.2826, -1471.25049, 30.3790169), vec3(0.0, 0.0, 180.0))
            CreateFryer(vec3(-304.2833, -1470.4043, 30.3790169), vec3(0.0, 0.0, 180.0))

            CreateChipsTable(vec3(-303.806335, -1469.58374, 29.9410744), vec3(0.0, 0.0, -90.0))
            
            CreateGriddle(vec3(-303.214, -1470.875, 30.1634445), vec3(0.0, 0.0, 180.0))
            
            local hangers = {
                vec4(-304.6872, -1468.91357, 32.1144943, 160.0),
                vec4(-302.9592, -1471.248, 32.1144943, 30.0),
                vec4(-303.836548, -1472.57617, 32.1144943, 105.0),
            }

            for k,v in pairs(hangers) do
                CreateHanger(v.xyz, vec3(0.0, 0.0, v.w))
            end


            CreateBin(vec3(-301.8792, -1474.73633, 29.5946846), vec3(0.0, 0.0, -90.0))

            local containers = {
                vec4(-305.521576, -1465.53821, 30.38302, -180),
                vec4(-304.5891, -1465.58179, 30.38302, -90),
            }

            for k,v in pairs(containers) do
                CreateMeatContainer(v.xyz)
            end
        end
    },

    ["fm-aldente"] = {
        required = {
            resource = "cfx-fm-aldente"
        },
        exec = function()
            CreateBurgerTable(vec3(85.04558, 9.432998, 67.98), vec3(0.0, 0.0, 160.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })
            CreateBurgerTable(vec3(84.6805, 8.429944, 67.98), vec3(0.0, 0.0, 160.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })

            CreateChipsTable(vec3(84.1835556, 9.180287, 67.9688), vec3(0.0, 0.0, 340.0), {
                tableHidden = true,
            })

            CreateFryer(vec3(86.1578, 12.0563536, 68.37781), vec3(0.0, 0.0, 250.0))
            CreateFryer(vec3(86.94243, 11.7707739, 68.37781), vec3(0.0, 0.0, 250.0))
            CreateBin(vec3(84.2112, 12.8542, 67.59), vec3(0.0, 0.0, 60.0))
            CreateGriddle(vec3(82.36498, 8.788592, 68.129), vec3(0.0, 0.0, 160.0), {
                tableHidden = true,
            })
            CreateMeatContainer(vec3(84.25836, 7.683892, 68.59619), vec3(0.0, 0.0, 90.0))
            CreateMeatContainer(vec3(84.61391, 7.63812447, 68.59619), vec3(0.0, 0.0, 70.0))
            CreateHanger(vec3(84.7728043, 8.233492, 69.9057), vec3(0.0, 0.0, 10.0))
        end
    },
    ["map4all-rexdiner"] = {
        required = {
            resource = "map4all-rexs-diner"
        },
        exec = function()
            CreateBurgerTable(vec3(2538.357, 2586.34058, 37.89484), vec3(0.0, 0.0, 20.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })
            CreateBurgerTable(vec3(2538.69922, 2585.40015, 37.89484), vec3(0.0, 0.0, 20.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })

            CreateChipsTable(vec3(2535.16528, 2587.71655, 37.89384), vec3(0.0, 0.0, 200.0), {
                tableHidden = true,
            })

            CreateFryer(vec3(2535.58325, 2586.66382, 38.3216476), vec3(0.0, 0.0, 20.0))
            CreateFryer(vec3(2535.88062, 2585.85181, 38.3216476), vec3(0.0, 0.0, 20.0))
            CreateBin(vec3(2536.6530, 2583.128, 37.55), vec3(0.0, 0.0, 25.0))
            CreateGriddle(vec3(2536.48584, 2584.58, 38.10742), vec3(0.0, 0.0, 200.0))
            CreateMeatContainer(vec3(2538.06226, 2587.057, 38.5211563), vec3(0.0, 0.0, 180.0))
            CreateHanger(vec3(2536.50879, 2583.54443, 39.39722), vec3(0.0, 0.0, 125.0))
        end
    },
    ["gabz-hornys"] = {
        required = {
            resource = "cfx-gabz-hornys"
        },
        exec = function()
            CreateBurgerTable(vec3(1250.5426, -355.948, 68.40), vec3(0.0, 0.0, -105.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })
            CreateBurgerTable(vec3(1249.47607, -355.6622, 68.40), vec3(0.0, 0.0, -105.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })

            CreateChipsTable(vec3(1251.89429, -356.2667, 68.392), vec3(0.0, 0.0, -105.0), {
                tableHidden = true,
            })

            CreateFryer(vec3(1246.99036, -354.858978, 68.8840942), vec3(0.0, 0.0, -15.0))

            CreateGriddle(vec3(1253.33142, -355.404877, 68.64), vec3(0.0, 0.0, -15.0), {
                tableHidden = true,
            })

            CreateMeatContainer(vec3(1253.77454, -354.438843, 69.01484), vec3(0.0, 0.0, 140.0))

            CreateHanger(vec3(1253.70776, -355.543518, 70.25574), vec3(0.0, 0.0, 40.0))

            CreateBin(vec3(1248.72046, -355.452118, 68.08), vec3(0.0, 0.0, -105.0))
        end
    },
    ["gabz-burgershot"] = {
        required = {
            resource = "cfx-gabz-burgershot"
        },
        exec = function()
            CreateBurgerTable(vec3(-1189.199, -904.8527, 13.1093311), vec3(0.0, 0.0, -55.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })
            CreateBurgerTable(vec3(-1187.76392, -903.8479, 13.1093311), vec3(0.0, 0.0, -55.0), {
                tableHidden = true,
                containers = {
                    [1] = "mxc_kitchen_prop_burger_littlecontainer_salad",
                    [2] = "mxc_kitchen_prop_burger_littlecontainer_bacon",
                    [3] = "mxc_kitchen_prop_burger_littlecontainer_tomatoes",
                    [4] = "mxc_kitchen_prop_burger_littlecontainer_cheddar",
                    [5] = "mxc_kitchen_prop_burger_littlecontainer_pickles",
                    [6] = "mxc_kitchen_prop_burger_littlecontainer_onions",
                    [7] = "prop_food_ketchup",
                    [8] = "prop_food_mustard",
                }
            })

            CreateChipsTable(vec3(-1186.10364, -899.5079, 13.120888), vec3(0.0, 0.0, -145.0), {
                tableHidden = true,
            })

            CreateFryer(vec3(-1184.84827, -897.090942, 13.5903292), vec3(0.0, 0.0, 215.0))
            CreateFryer(vec3(-1184.3573, -897.7921, 13.5903292), vec3(0.0, 0.0, 215.0))

            CreateGriddle(vec3(-1186.80627, -900.753357, 13.371), vec3(0.0, 0.0, 124.0), {
                tableHidden = true,
            })

            CreateMeatContainer(vec3(-1188.24976, -900.8084, 13.7320385), vec3(0.0, 0.0, 140.0))
            CreateMeatContainer(vec3(-1188.34839, -904.2641, 13.736), vec3(0.0, 0.0, 140.0))
            CreateHanger(vec3(-1185.80933, -902.7412, 14.515), vec3(0.0, 0.0, 40.0))

            CreateBin(vec3(-1190.1466, -904.4678, 12.7984), vec3(0.0, 0.0, 125.0))
        end
    }
}

Config.Interactions = {
    fryer = {
        oil = {
            label = "Pour frying oil",
            icon = "fas fa-droplet",
            distance = 2.0,
            items = {"sunflower_oil"}
        },
        throw_oil = {
            label = "Throw away frying oil",
            icon = "fas fa-droplet",
            distance = 2.0,
        },
        cooking_zone = {
            label = "Place",
            icon = "fas fa-fire-burner",
            distance = 2.0,
        },
        store = {
            label = "Store",
            icon = "fas fa-box-archive",
            distance = 2.0,
        },
    },
    fryer_basket = {
        content = {
            label = "Pour frozen fries",
            icon = "fas fa-snowflake",
            distance = 2.0,
            items = {"frozen_fries"}
        }
    },
    table_fries = {
        box = {
            label = "Insert Fries",
            icon = "fas fa-box",
            distance = 2.0,  
        },
        paper = {
            label = "Drop Fries",
            icon = "fas fa-arrow-down",
            distance = 2.0,
        },
        store = {
            label = "Put down",
            icon = "fas fa-hand",
            distance = 2.0,
        }
    },
    table_burger = {
        start = {
            label = "Start hamburger creation",
            icon = "fa-solid fa-hamburger",
            distance = 3.0,
        },
        cancel = {
            label = "Cancel hamburger creation",
            icon = "fa-solid fa-trash",
            distance = 3.0,
        },
        finish = {
            label = "Finish hamburger creation",
            icon = "fa-solid fa-check",
            distance = 3.0,
        },
        add_patty = {
            label = "Add patty",
            icon = "fa-solid fa-minus",
            distance = 3.0,
        },
        add_base = {
            label = "Add bread bottom",
            icon = "fa-solid fa-hamburger",
            distance = 3.0,
        }
    },
    griddle = {
        cooking_zone = {
            label = "Place",
            icon = "fas fa-fire-burner",
            distance = 2.0,
        }, 
    },
    hanger = {
        deposit = {
            label = "Place spatula",
            icon = "fas fa-screwdriver",
            distance = 2.0,
        }
    },
    bin = {
        trash = {
            label = "Trash",
            icon = "fas fa-trash",
            distance = 2.0,
        }
    },
    littlecontainers = {
        salad = {
            label = "Add lettuce",
            icon = "fas fa-leaf",
            items = {"lettuce"}
        },
        tomatoes = {
            label = "Add tomatoes",
            icon = "fa-regular fa-circle",
            items = {"tomato"}
        },
        cheddar = {
            label = "Add cheddar",
            icon = "fas fa-cheese",
            items = {"cheddar"}
        },
        pickles = {
            label = "Add pickles",
            icon = "fas fa-wand-magic",
            items = {"pickle"}
        },
        onions = {
            label = "Add onions",
            icon = "fas fa-tablets",
            items = {"onion"}
        },
        bacon = {
            label = "Add bacon",
            icon = "fas fa-bacon",
            items = {"bacon"}
        },

        ketchup = {
            label = "Add ketchup",
            icon = "fas fa-splotch",
            items = {"ketchup"}
        },
        mayonnaise = {
            label = "Add mayonnaise",
            icon = "fas fa-splotch",
            items = {"mayonnaise"}
        },
    },
    containers = {
        meat = {
            label = "Take patty",
            icon = "fas fa-minus",
            items = {"patty"}
        }
    },
    shared = {
        pickup = {
            label = "Pickup",
            icon = "fas fa-hand",
            distance = 2.0,
        },
        openInventory = {
            label = "Open inventory",
            icon = "fas fa-box-open",
            distance = 2.0,
        }
    },
}

Config.Items = {
    ["fries"] = {
        usable = true,
        server = function(source, item)
            Config.Functions.RemoveItemFromSlot(source, item.name, 1, item.slot)
        end,
        client = function(item)
            TaskEasyPlayAnim("mp_player_inteat@burger", "mp_player_int_eat_burger_fp")
            local netId = CreateFoodObject("mxc_kitchen_prop_fries_boxed_", item.metadata.cookingRatio, 0x49D9, vec3(0.14, 0.03, 0.04), vec3(-85.0, 137.0, -0.07))
            
            Citizen.Wait(5000)

            UtilityNet.DeleteEntity(netId)
            ClearPedTasks(PlayerPedId())
        end
    },
    ["hamburger"] = {
        usable = true,
        server = function(source, item)
            Config.Functions.RemoveItemFromSlot(source, item.name, 1, item.slot)
        end,
        client = function(item)
            TaskEasyPlayAnim("mp_player_inteat@burger", "mp_player_int_eat_burger_fp")

            -- Default burger when the burger used does not have "layers" metadata, such as when the item has been given by an admin
            if not item.metadata or not item.metadata.layers then
                item.metadata = {
                    layers = {
                        {model = "meat_", cookingRatio = 0.7},
                        {model = "tomatoes"},
                        {model = "salad"},
                        {model = "cheddar"},
                        {model = "pickles"},
                        {model = "bacon"},
                        {model = "ketchup"},
                        {model = "mayonnaise"},
                    }
                }
            end

            local hamburger = CreateHamburgerFromLayers(item.metadata.layers, true)
            local player = PlayerPedId()
            AttachEntityToEntity(hamburger, player, GetPedBoneIndex(player, 0x49D9), vec3(0.10, 0.03, 0.04), vec3(-85.0, 137.0, -0.07), false, false, true, false, 2, true)

            Citizen.Wait(5000)

            DeleteHamburger(hamburger)
            ClearPedTasks(player)

            -- You can use item.metadata.durability to get the durability of the item [0-100] and so the satiety (you can for ex remove hunger based on the durability)
        end
    },
}

Products


Code is accessible No
Subscription-based No
Lines (approximately) 5000+
Requirements utility_lib
Support Yes
Texture size 16x16 to 512x512
Models size 15mb
3 Likes

Nice work, very detailed👍

1 Like

can you pls list all props that are avaible in this script i search in config that you poste i found only this. or i missing somthing??

Standalone ?

Can I work with help texts as with the vending machine or do I have to use a target system?

doesn’t support help texts

1 Like