Developer

2 min readUpdated Today

Overview

ML Shops provides exports for other resources. Handler hooks live in the open/ folder.

Client Exports

your_script/client.lua
1exports['ml_shops']:openShop(shopId)
  • openShop(shopId): Opens the shop UI for a specific shop
  • GetShopData(shopId): Returns shop configuration data
  • GetTraderData(traderId): Returns trader configuration data
  • GetAllShops(): Returns all registered shops
  • GetAllTraders(): Returns all registered traders
  • GetPlayerDiscount(source, shopId, itemId): Returns the player's current discount for a shop
  • CalculateFinalPrice(source, shopId, itemId): Returns the discounted cost table and the discount percent
  • SetItemStock(shopId, itemName, amount): Overrides item stock
  • AddItemStock(shopId, itemName, amount): Adds stock to an item
  • IsShopOpen(source, shopId): Returns whether the player may use the shop, plus an optional reason
  • TriggerShopRefresh(shopId): Forces a UI refresh for a shop

Server Handlers

Defined in open/server.lua.

open/server.lua
1function OpenServer.BeforeGiveItem(src, item, amount)
2    return true -- return false to block the purchase
3end
4
5function OpenServer.OnActionComplete(src, actionType, data)
6    -- Fired after any shop action completes
7end
  • BeforeGiveItem(src, item, amount): Called before giving a purchased item. Return false to block.
  • OnActionComplete(src, actionType, data): Fires after purchase, stock change, or other actions.

Client Handlers

Defined in open/client.lua.

open/client.lua
1function OpenClient.Notify(message, type)
2    Bridge.Notify(message, type)
3end
4
5function OpenClient.BeforeOpenUI(data)
6    return true -- return false to block shop UI
7end

Shared Handlers

Defined in open/shared.lua.

open/shared.lua
1function OpenHandlers.OnPlayerAction(src, data)
2    return true -- return false to block
3end
4
5function OpenHandlers.ValidateAction(src, actionType)
6    return true -- return false to reject
7end
  • OnPlayerAction: Global hook for any player action
  • ValidateAction: Validates an action before execution

Examples

open/server.lua
1function OpenServer.BeforeGiveItem(src, item, amount)
2    local job = Bridge.GetPlayerJob(src)
3    if job and job.name == 'police' then
4        Bridge.NotifyPlayer(src, 'error', 'Police cannot purchase here.')
5        return false
6    end
7    return true
8end
your_script/client.lua
1exports['ml_shops']:openShop('general_store_1')