opx_infinitycrafting
Server
Last updated on
The crafting contract on the server — register benches, read a bench's view, order and collect.
local crafting = OPX.Api.Get('crafting')From server code inside opx_infinity. A Result is { ok = true, value } or { ok = false, error, detail }.
RegisterBench
Registers a bench and its recipes. Does not yield. Call it from your module's Start, after crafting has published.
crafting.RegisterBench(benchKey, definition)Parameters
- benchKey:
string— letters, digits,_ - . :, up to 64. - definition:
table— see Bench definition.
Returns
Resultinteger(recipe count) — errorsinvalid_bench(detail: first problem),bench_taken
UnregisterBenches
Removes every bench with that owner. Orders already filed stay in the database.
crafting.UnregisterBenches(owner)Parameters
- owner:
string
Returns
Resultinteger(benches removed)
function M.Stop() crafting.UnregisterBenches('mymodule') endUnregisterBench
Drops one bench, when the owner named is the one that registered it.
crafting.UnregisterBench(key, owner)Returns
Result—boolean, whether a bench went; errornot_owner
Benches
Every bench, sorted by key.
crafting.Benches()Returns
Resulttable[]—{ key, owner, label, recipes, queue, anchored }
View
What the menu draws for one player at one bench. Yields.
crafting.View(player, benchKey)Parameters
- player:
integer - benchKey:
string
Returns
Result{ bench, label, queue, cooking, free, recipes, orders }recipes[i]:{ key, label, icon, output, outputLabel, count, seconds, price, money, inputs = { { item, label, need, held } }, ok, error, short }—ok: can be ordered now;error: the refusal code.orders[i]:{ id, recipe, label, output, count, remaining, ready }, soonest first.
Order
Places an order. Yields.
crafting.Order(player, benchKey, recipeKey)Parameters
- player:
integer - benchKey:
string - recipeKey:
string
Returns
Result{ id, seconds }—seconds: time until this order is ready, queue included. Errors: the refusal codes.
local placed = crafting.Order(source, 'mymodule:bench', 'handgun_rounds')
if placed.ok then print(('ready in %d s'):format(placed.value.seconds)) endCollect
Collects a ready order. Yields.
crafting.Collect(player, orderId)Parameters
- player:
integer - orderId:
integer
Returns
Result{ bench, item, count }