local Module = require(121652996197382)
local API = Module.API
local AddonId = 5378 -- This is required for interacting with the API
local Menu = nil
local OrderModule = require(game.ServerScriptService:WaitForChild("OrderLogModule"))
local orders = {
}
local Menu = API:Invoke("GetMenu", { ID=AddonId })
local function GetItem(ID)
for _, Category in pairs(Menu) do
if Category and Category.Items then -- Check if Category and its Items exist
for _, Item in pairs(Category.Items) do
if Item and Item.ID == ID then -- Check if Item and its ID exist
return Item
end
end
end
end
return nil
end
return {
Name = "Order Logging",
-- Triggers when the order handler is ready.
Initialise = function(ID)
AddonId = ID
Menu = API:Invoke("GetMenu", { ID=AddonId })
end,
-- Triggers when a new order is placed.
OrderCreated = function(Order)
local items = {}
local itemsToProcess = Order.Items
for _, itemData in pairs(itemsToProcess) do
local itemId = itemData.ID
local fullItemDetails = GetItem(itemId) -- Use the fixed GetItem function
if fullItemDetails then
table.insert(items, fullItemDetails.Name)
else
warn("Item with ID:", itemId, "not found in the menu.")
end
end
game.ReplicatedStorage.test:Fire(Order)
local order = OrderModule.createOrder(Order.Player, Order.Player, {
items = items,
status = "waiting_for_preparation",
})
local player = Order.Player
orders[player] = order.id
items = {}
end,
-- Triggers when an order is removed by an admin (NOT COMPLETED).
OrderRemoved = function(Order)
OrderModule.setCancelled(orders[Order.Player])
orders[Order.Player] = nil
end,
-- Triggers when an order is claimed.
OrderClaimed = function(Order, Player)
OrderModule.setPreparing(orders[Order.Player], Player) -- Or spoof a player object (see docs - Creating an Order, Using User Object)
end,
-- Triggers when an order is unclaimed by an admin.
OrderUnclaimed = function(Order, Player)
OrderModule.setReprepare(orders[Order.Player])
end,
-- Triggers when an order is completed.
OrderCompleted = function(Order, Player)
OrderModule.setComplete(orders[Order.Player])
orders[Order.Player] = nil
end,
-- Triggers whenever an order is created or updated. All orders are returned.
OrdersUpdated = function(Orders)
end,
}