# F.A.Q > Frequently asked questions about ml_crafting Category: CRAFTING · Source: https://miciomods.it/docs/ml-crafting-faq · Last updated: 2026-07-28 ## Setup **How do I change the language?** Set `Config.Language` in `shared/config.lua`. See the `locales/` folder. **shared/config.lua** ```lua Config.Language = 'en' ``` **How do I open the admin panel?** Run `/craftadmin` (configurable via `Config.Command`). Access requires the `Config.Admin.Permission` framework group, or the ACE permission if `Config.Admin.AcePermission` is set. The panel has seven tabs: workstations, map, recipes, blueprints, settings, importer and model builder. **Where is everything saved, config or database?** Bench types, bench locations, categories, recipes, blueprints and custom station models are saved in the database by the admin panel and survive restarts and updates. The config holds global behavior, ranges, features, queue rules, blueprint and portable-station defaults. When both define the same thing (fuel, durability, pickup rules, queue limits), the database value wins. **Can I import data from another crafting script?** The admin panel's import tab scans your database for the crafting tables and imports categories, recipes, bench types and blueprints, marking entries that already exist. Other scripts are not supported by the importer. ## Stations & Recipes **How do I create my first workbench?** Open `/craftadmin`, create a workstation type in the workstations tab and pick a station model, then place a location for it, directly in 3D with the in-game placement mode (free move, surface snap or gizmo). Assign categories to the bench type, then build recipes in the recipes tab. Every save is pushed to players immediately. **How do players place their own benches?** Enable `Config.Features.PortableStations` and give players the `ml_workstation` item with `metadata.stationType` set to a bench type id, or bind a dedicated item to the bench type in the admin panel. Using the item starts a ghost-preview placement. Owners pick their station back up in `DefaultPickupTimeOwner` seconds; if the pickup rule allows it, others can steal one after a longer timer, and the theft is logged. **What are OR-ingredients?** A recipe slot can accept any one of several items, iron or steel or scrap. In the recipe editor, drag ingredients into the same alternative group. At craft time the player's available option is used, the choice is pinned for that craft, and refunds return exactly what was consumed. **What do the three ingredient modes do?** - `consume`: The item is removed - `degrade`: A tool loses durability instead of being consumed. The most worn copy is drained first, and the recipe can remove it at zero - `check`: The item must be present but is never taken, licenses, special tools **How do variant outputs work?** Results in the same result group are rolled as one weighted-random pick per craft, one backpack color out of the whole palette, not all of them. Results outside any group roll independently with their own percentage, which is how byproducts are made. Output metadata supports random ranges, random list picks and probability buckets, generated fresh per item. **How do fuel and durability work on a bench?** Both are optional per bench type, configured in the admin panel. Fuel benches hold a number of crafting seconds and accept consumable items, ml_fuel jerrycans, or both; a craft cannot start without enough fuel. Durability drains while crafting; at zero the station stops until repaired with the configured materials. **Can someone steal a finished craft from the queue?** Only when `Config.Queue.AllowSteal = true`. Anyone at the bench can then collect another player's ready craft, and the action is written to the theft log. Disable it to make queues private; `Config.Queue.SharedView` separately controls whether other players' entries are visible at all. ## Skills **How does the ml_skills integration work?** With `Config.ExternalSkills.Enabled = true`, levels and skill checks are read from ml_skills and recipe XP is paid into it. A recipe can require a level, a category level or a specific unlocked skill, and can stay hidden until the skill is learned. XP routes to the ml_skills category resolved from the recipe's required skill or category mapping. **Which skill bonuses exist?** Four types, set per recipe in the editor and active while the bound skill is unlocked: `time_reduction` (faster crafting, capped at 90%), `extra_xp`, `extra_quantity` and `ingredient_reduction`. Several bonuses of the same type stack additively. **Does it work without ml_skills?** Yes. Set `Config.ExternalSkills.Enabled = false` and enable `Config.Progression` to use the built-in level system (global and per-category XP stored in the database), or leave both off and gate recipes with blueprints only. **Why is no XP being awarded?** When ml_crafting cannot resolve an ml_skills category for a recipe, it skips the XP and prints a yellow `[ml_crafting][XP]` line in the server console explaining why. Bind a required skill on the recipe, or map the category in `Config.ExternalSkills.Mapping.PerCategory`. XP is also logged once per queue entry, so a collected craft can never pay twice. ## Updates **How do I update the script?** - Download the latest version from the CFX Portal - Backup `shared/config.lua`, `shared/config_models.lua`, `server/config_server.lua` and the `open/` folder - Replace all files, restore your backups, restart the resource Benches, recipes, blueprints, queues and player progression live in the database and survive updates. Schema changes are applied automatically on start.