Stand de mercancía

El módulo para desarrolladores de Stand de productos te permite poner a la venta recursos de avatares, pases y productos de desarrollo directamente dentro de tu experiencia. Los jugadores pueden examinar los objetos, previsualizarlos en su propio avatar, comprarlos y usarlos o equiparlos al instante, todo ello sin salir de tu experiencia. Esto puede ayudarte a monetizar tu experiencia y obtener ingresos a través de la comisión de afiliación del 40 % asociada a la venta de los objetos de otros creadores.

Uso del módulo

Instalación

Sigue estos pasos para usar el módulo Stand de productos en una experiencia:

  1. En la pestaña Ver, abre la Caja de herramientas y selecciona la pestaña Mercado.

    Botón de activación de Caja de herramientas en Studio
  2. Asegúrate de que la clasificación de Modelos esté seleccionada y, a continuación, haz clic en el botón Ver todo para las Categorías.

  3. Busca y haz clic en el mosaico MÓDULOS DE DESARROLLO.

  4. Busca el módulo Stand de productos y haz clic en él o arrástralo y suéltalo en la vista 3D.

  5. En la ventana del Explorador, mueve todo el modelo de MerchBooth a ServerScriptService. Al ejecutar la experiencia, el módulo se distribuirá a varios servicios y comenzará a ejecutarse.

Configuración

El módulo está preconfigurado para funcionar en la mayoría de los casos de uso, pero puede personalizarse fácilmente mediante la función de configuración. Por ejemplo, para crear un tema más claro y desactivar el botón predeterminado Filtro en el área superior izquierda de la vista de catálogo:

  1. En StarterPlayerScripts, crea un nuevo LocalScript y cámbiale el nombre a ConfigureMerchBooth.

  2. Pega el siguiente código en el script nuevo.

    LocalScript - ConfigureMerchBooth

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    MerchBooth.configure({
    backgroundColor = Color3.fromRGB(220, 210, 200),
    textSize = 17,
    textFont = Enum. Font.Fondamento,
    textColor = Color3.fromRGB(20, 20, 20),
    useFilters = false
    })

Añadir objetos

¿Qué es un stand de productos sin productos? Las siguientes secciones describen cómo añadir recursos de avatares, pases y productos de desarrollo a tu stand de productos.

Recursos de los avatares

Los objetos como la ropa y los accesorios deben añadirse a través de su identificación de recurso ubicada en la página de detalles del artículo en la Tienda de avatares.

  1. Crea un Script dentro de ServerScriptService y pégalo en el siguiente código.

    Script - Add Avatar Assets

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    local items = {
    }
    for _, assetId in ipairs(items) do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    print(errorMessage)
    end
    end
  2. Copia los identificadores de los recursos de los objetos de la URL del sitio web de la Tienda de avatares. Por ejemplo, la identificación de la Gorra de Béisbol de Roblox es 607702162.

  3. Pega cada identificación copiada en una lista delimitada por comas dentro de la tabla items. De forma predeterminada, los objetos aparecen en la vista del catálogo en orden alfabético, pero puedes personalizar la clasificación con setCatalogSort.

    Script - Add Avatar Assets

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    local items = {
    607702162, -- Roblox Baseball Cap
    4819740796, -- Robox
    1374269, -- Kitty Ears
    11884330, -- Nerd Glasses
    10476359, -- Paper Hat
    }
    for _, assetId in ipairs(items) do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    print(errorMessage)
    end
    end

Pases

Para añadir pases se necesitan ID de pase que puedes encontrar en el Interfaz de creación.

  1. Crea un Script dentro de ServerScriptService y pégalo en el siguiente código.

    Script - Add Passes

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    local items = {
    }
    for _, assetId in ipairs(items) do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    print(errorMessage)
    end
    end
  2. Ve a la Interfaz de creación y selecciona la experiencia.

  3. En la columna de la izquierda, haz clic en Objetos asociados y luego selecciona PASES.

  4. Haz clic derecho en un pase y selecciona Copiar identificación del recurso.

  5. e incluye Enum.InfoType.GamePass como segundo parámetro para addItemAsync para indicar que los objetos son pases. De forma predeterminada, los objetos aparecerán en la vista del catálogo en orden alfabético, pero la clasificación podrá personalizarse mediante setCatalogSort.

    Script - Add Passes

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    local items = {
    4343758, -- ColdFyre Armor
    28521575, -- Slime Shield
    }
    for _, assetId in ipairs(items) do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum. InfoType.GamePass)
    end)
    if not success then
    print(errorMessage)
    end
    end

Productos de desarrollo

Para añadir productos de desarrollo, se requieren identificadores de productos, que se pueden encontrar en la Interfaz de creación.

  1. Crea un Script dentro de ServerScriptService y pégalo en el siguiente código.

    Script - Add Developer Products

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    local items = {
    }
    for _, assetId in ipairs(items) do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    print(errorMessage)
    end
    end
  2. Ve a la Interfaz de creación y selecciona la experiencia.

  3. En la columna de la izquierda, haz clic en Objetos asociados, luego selecciona PRODUCTOS DE DESARROLLO.

  4. Haz clic derecho en un producto y selecciona Copiar identificación del recurso.

  5. e incluye Enum.InfoType.Product como segundo parámetro para addItemAsync para indicar que los objetos son productos de desarrollo. De forma predeterminada, los objetos aparecen en la vista del catálogo en orden alfabético, pero puedes personalizar la clasificación con setCatalogSort.

    Script - Add Developer Products

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    local items = {
    1236602053, -- Mana Refill
    1257880672, -- Healing Potion
    }
    for _, assetId in ipairs(items) do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum. InfoType.Product)
    end)
    if not success then
    print(errorMessage)
    end
    end

Botón de catálogo personalizado

De forma predeterminada, un botón del catálogo del lado derecho permite a los usuarios abrir el stand en cualquier momento.

En algunos casos, puede ser útil eliminar este botón y conectar el tuyo:

  1. Crea un nuevo botón como se describe en Botones e introducción de texto.

  2. Crea un LocalScript como hijo del objeto botón.

  3. Pega el siguiente código en el script nuevo.

    LocalScript - Custom Catalog Button

    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    -- Remove the default catalog button
    MerchBooth.toggleCatalogButton(false)
    -- Connect the custom button
    script. Parent.Activated:Connect(function()
    MerchBooth.openMerchBooth()
    end)

Regiones comprables

Una forma útil de impulsar las compras en tu experiencia es mostrar automáticamente el stand de productos cuando un usuario entra en un área.

Sigue estos pasos para crear una región comprable:

  1. Crea un bloque Anchored que abarque la región de detección.

    Bloqueo para detectar cuando los jugadores se acercan a la parte delantera del mostrador de la tienda
  2. Mediante el Editor de etiquetas, accesible desde la pestaña Ver, aplica la etiqueta ShopRegion al bloque para que CollectionService la detecte.

  3. Desactiva las propiedades CanCollide y CanQuery de la parte para que los objetos no colisionen físicamente con ella y las emisiones de rayos no la detecten. Establece también su Transparency al máximo para ocultarla a los usuarios en la experiencia.

  4. Inserta un nuevo LocalScript en StarterPlayerScripts.

  5. En el nuevo script, pega el siguiente código que usa los eventos Touched y TouchEnded para detectar cuando los usuarios entran o salen de la región y llaman a openMerchBooth y closeMerchBooth para abrir o cerrar la GUI del stand.

    LocalScript

    local Players = game: GetService("Players")
    local ReplicatedStorage = game: GetService("ReplicatedStorage")
    local CollectionService = game: GetService("CollectionService")
    local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
    -- Remove the default catalog button
    MerchBooth.toggleCatalogButton(false)
    -- Iterate through all tagged parts
    for _, region in ipairs(CollectionService:GetTagged("ShopRegion")) do
    region. Touched:Connect(function(otherPart)
    local character = Players. LocalPlayer.Character
    if character and character:FindFirstChild("HumanoidRootPart") == otherPart then
    MerchBooth.openMerchBooth()
    end
    end)
    region. TouchEnded:Connect(function(otherPart)
    local character = Players. LocalPlayer.Character
    if character and character:FindFirstChild("HumanoidRootPart") == otherPart then
    MerchBooth.closeMerchBooth()
    end
    end)
    end

Avisos de proximidad

Como alternativa a la vista del catálogo en 2D, puedes añadir indicadores de proximidad sobre los objetos de la experiencia. Esto anima a los usuarios a descubrir objetos en el entorno 3D, previsualizarlos en su propio avatar, comprarlos y equiparlos al instante. Consulta addProximityButton para obtener más información.

Cambiar el efecto de equipo

De forma predeterminada, el stand de productos muestra un efecto de chispa genérico cuando un usuario equipa un objeto de él. Para cambiar el efecto, establece particleEmitterTemplate en tu propia instancia de un ParticleEmitter en una llamada de configuración.

LocalScript - ConfigureMerchBooth

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local myParticleEmitter = Instance.new("ParticleEmitter")
myParticleEmitter. SpreadAngle = Vector2.new(22, 22)
myParticleEmitter. Lifetime = NumberRange.new(0.5, 1.5)
myParticleEmitter. Shape = Enum. ParticleEmitterShape.Sphere
myParticleEmitter. Transparency = NumberSequence.new(0, 1)
myParticleEmitter. RotSpeed = NumberRange.new(200, 200)
MerchBooth.configure({
particleEmitterTemplate = myParticleEmitter
})

Visibilidad de la GUI

De forma predeterminada, el stand de productos oculta todo ScreenGuis y CoreGuis cuando aparece su interfaz de usuario, incluido el chat, la clasificación y otros incluidos por Roblox. Si deseas desactivar este comportamiento, establece hideOtherUis en false en una llamada de configuración.

LocalScript - ConfigureMerchBooth

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.configure({
hideOtherUis = false
})

Movimiento del personaje

Puede ser ventajoso evitar que un personaje se mueva mientras está en el stand de productos. Esto puede hacerse estableciendo disableCharacterMovement a true en una llamada de configuración.

LocalScript - ConfigureMerchBooth

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.configure({
disableCharacterMovement = true
})

Referencia API

Tipos

Objeto

Los objetos en el stand de productos se representan mediante un diccionario con los siguientes pares clave-valor. Los objetos se pueden reunir a través de la función getItems o el evento itemAdded.

ClaveTipoDescripción
assetIdnumberIdentificación del catálogo del objeto, como se pasó a addItemAsync.
titlestringEl título del objeto tal y como aparece en el catálogo.
pricenumberPrecio del objeto en Robux.
descriptionstringDescripción del objeto tal como aparece en el catálogo.
assetTypestringCadena que representa el tipo de accesorio del objeto.
isOwnedboolSi el usuario actual posee el objeto.
creatorNamestringCreador de objetos, como se muestra en el catálogo.
creatorTypeEnum.CreatorTypeTipo de creador para el objeto.

Enumeraciones

MerchBooth.Controls

Se usa junto con setControlKeyCodes para personalizar las teclas y los botones del controlador para juego para interactuar con el stand de productos.

NombreResumen
ProximityPromptsTecla o botón del controlador para juego para abrir la vista del objeto cuando están configurados los indicadores de proximidad.
OpenMerchBoothTecla o botón del controlador para juego para abrir el stand de productos.
CloseMerchBoothTecla o botón del controlador para cerrar el stand de productos.
FilterTecla o botón del controlador para juego para usar el menú desplegable predeterminado Filtro en el área superior izquierda de la vista del catálogo.
ViewItemTecla o botón del controlador para juego para abrir la vista de un objeto del stand de productos específicos.
LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum. KeyCode.Q,
gamepad = Enum. KeyCode.ButtonL1
})

Funciones

configure

configure(config:table)

Invalida la configuración predeterminada del lado del cliente mediante los siguientes claves/valores de la tabla config. A esta función solo se puede acceder desde un LocalScript.

Apariencia

ClaveDescripciónDefault
backgroundColorColor de fondo principal de la ventana (Color3).[0, 0, 0]
cornerRadiusRadio de la esquina para la ventana principal (UDim).(0, 16)
cornerRadiusSmallRadio de la esquina para los elementos dentro de la ventana (UDim).(0, 8)
textFontFuente del "texto principal", como precios, descripciones y otra información general (Enum.Font).Gotham
textSizeTamaño del texto principal.14
textColorColor del texto principal (Color3).[255, 255, 255]
secondaryTextColorColor utilizado para algunas variaciones del texto principal (Color3).[153, 153, 158]
headerFontFuente del texto del encabezado utilizado para el título de la ventana (Enum.Font).GothamMedium
headerTextSizeTamaño del texto del encabezado utilizado para el título de la ventana.18
titleFontFuente del texto del título utilizado para los nombres de los objetos en la página de detalles del objeto (Enum.Font).GothamBold
titleTextSizeTamaño del texto del título utilizado para los nombres de los objetos en la página de detalles del objeto.28
buttonColorColor de fondo para los botones más grandes en un estado clicable, como el botón de compra principal en la vista del objeto (Color3).[255, 255, 255]
buttonTextColorColor del texto para los botones más grandes en un estado clicable, como el botón de compra principal en la vista del objeto (Color3).[0, 0, 0]
secondaryButtonColorColor de fondo para los botones más pequeños, como los botones de precio en la vista del catálogo o el botón **Probar ** (Color3).[34, 34, 34]
secondaryButtonTextColorColor del texto para los botones más pequeños, como los botones de precio en la vista del catálogo o el botón **Probar ** (Color3).[255, 255, 255]
inactiveButtonColorColor de fondo para todos los botones en un estado no clicable (Color3).[153, 153, 158]
inactiveButtonTextColorColor del texto para todos los botones en un estado no clicable (Color3).[255, 255, 255]
particleEmitterTemplateInstancia personalizada ParticleEmitter opcional que aparece y se juega al equipar.

Avisos de proximidad

ClaveDescripciónDefault
proximityButtonActivationDistanceDistancia máxima a la que el personaje de un jugador puede estar del indicador adornado para que este aparezca.10
proximityButtonExclusivityEnum.ProximityPromptExclusivity especificando qué indicadores se pueden mostrar al mismo tiempo.OnePerButton
proximityButtonOffsetDesplazamiento de píxeles aplicado a la interfaz de usuario del indicador (Vector2).(0, 0)
proximityButtonPulseCount¿Cuántos "pulsos" se producen alrededor de los botones de proximidad antes de detenerse?3

Comportamiento

ClaveDescripciónDefault
useFiltersActiva o desactiva el botón Filtro que se muestra en el catálogo.true
disableCharacterMovementSi es true, evita que el personaje se mueva mientras el stand de productos está abierto.false
hideOtherUisSi es true, el stand de productos oculta todo ScreenGuis y CoreGuis cuando aparece su interfaz de usuario.true
closeWhenFarFromPromptSi es true y si el jugador abrió una vista de objeto a través de un indicador de proximidad, el stand de productos se cerrará automáticamente cuando el jugador se aleje del indicador más que su distancia de activación.true
LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.configure({
backgroundColor = Color3.fromRGB(255, 255, 255),
textSize = 16,
textFont = Enum. Font.Roboto,
textColor = Color3.fromRGB(20, 20, 20),
hideOtherUis = false,
})

addItemAsync

addItemAsync(assetId:number, productType:Enum.InfoType, hideFromCatalog:boolean)

Añade de forma asíncrona un objeto al stand de productos para que pueda comprarse en la experiencia. assetId es la identificación del recurso del objeto, productType es la enumeración del objeto Enum.InfoType y hideFromCatalog se puede usar para ocultar el objeto en la vista del catálogo.

Consulta Añadir objetos para obtener más información, ya que el uso varía ligeramente para los recursos frente a los pases del juego o los productos de desarrollo.

Script - Add Avatar Assets

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local items = {
607702162, -- Roblox Baseball Cap
4819740796, -- Robox
1374269, -- Kitty Ears
11884330, -- Nerd Glasses
10476359, -- Paper Hat
}
for _, assetId in ipairs(items) do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId)
end)
if not success then
print(errorMessage)
end
end
Script - Add Passes

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local items = {
4343758, -- ColdFyre Armor
28521575, -- Slime Shield
}
for _, assetId in ipairs(items) do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum. InfoType.GamePass)
end)
if not success then
print(errorMessage)
end
end
Script - Add Developer Products

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local items = {
1236602053, -- Mana Refill
1257880672, -- Healing Potion
}
for _, assetId in ipairs(items) do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum. InfoType.Product)
end)
if not success then
print(errorMessage)
end
end

getItems

getItems():table

Devuelve un diccionario que representa todos los objetos registrados actualmente. Cada clave es la identificación del recurso de un objeto en forma de cadena y el valor de cada clave es un Objeto. A esta función solo se puede acceder desde un Script.

Script

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local items = MerchBooth.getItems()
print(items)
end

removeItem

removeItem(assetId:number)

Anula el registro de un objeto añadido anteriormente con addItemAsync, eliminando su mosaico en la vista del catálogo y cualquier indicador de proximidad que se le haya asignado. Esta función solo se puede acceder desde un Script.

Script

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
-- After some time, remove the item
task.wait(5)
MerchBooth.removeItem(4819740796)
end

addProximityButton

addProximityButton(adornee: BasePart|Model|Attachment, assetId: number)

Añade un indicador de proximidad sobre el proporcionado adornee que activará la visualización de la vista de compra de un objeto, dada su identificación del recurso. Esto se puede usar como una alternativa a la vista del catálogo en 2D, animando a los usuarios a descubrir objetos en el entorno 3D.

Ten en cuenta que un objeto se debe añadir a través de addItemAsync antes de que se le pueda asignar un botón de proximidad. Consulta también removeProximityButton para eliminar el indicador de proximidad de un objeto.

Script

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local item = workspace: FindFirstChild("Robox")
if item then
MerchBooth.addProximityButton(item, 4819740796)
end
end

removeProximityButton

removeProximityButton(adornee: BasePart|Model|Attachment)

Elimina un indicador de proximidad generado a través de addProximityButton. A esta función solo se puede acceder desde un Script.

Script

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local item = workspace: FindFirstChild("Robox")
if item then
MerchBooth.addProximityButton(item, 4819740796)
end
-- After some time, remove the prompt
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction:function):boolean

Establece la función de clasificación sortFunction que se usará en la vista del catálogo. La función de clasificación proporcionada puede usar la lógica en función de la información del objeto, como price o title. A esta función solo se puede acceder desde un LocalScript.

A continuación se muestran algunos ejemplos para clasificar el catálogo:

Price Low-to-High

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.setCatalogSort(function(a, b)
return a.price < b.price
end)
Price High-to-Low

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.setCatalogSort(function(a, b)
return a.price > b.price
end)
Price Low-to-High & Alphabetical

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.setCatalogSort(function(a, b)
return if a.price == b.price then a.title < b.title else a.price < b.price
end)

setControlKeyCodes

setControlKeyCodes(control:MerchBooth.Controls, keyCodes:table)

Configura los valores de las teclas y botones para las interacciones con el stand de productos. El primer parámetro debe ser una enumeración MerchBooth.Controls y el segundo parámetro una tabla que contenga las claves keyboard y/o gamepad con las Enum.KeyCode enumaraciones correspondientes.

Enumeración (control)Claves/valores keyCodes predeterminados
MerchBooth.Controls.ProximityPromptskeyboard = Enum. KeyCode.E
gamepad = Enum. KeyCode.ButtonY
MerchBooth.Controls.OpenMerchBoothgamepad = Enum. KeyCode.ButtonY
MerchBooth.Controls.CloseMerchBoothgamepad = Enum. KeyCode.ButtonB
MerchBooth.Controls.Filtergamepad = Enum. KeyCode.ButtonX
MerchBooth.Controls.ViewItemgamepad = Enum. KeyCode.ButtonA
LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum. KeyCode.Q,
gamepad = Enum. KeyCode.ButtonL1,
})

openMerchBooth

openMerchBooth():

Abre la ventana del stand de productos (si está cerrada) y navega a la vista del catálogo. A esta función solo se puede acceder desde un LocalScript.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId)
end)
if not success then
print(errorMessage)
end
MerchBooth.openMerchBooth()

openItemView

openItemView(itemId:number)

Navegará a la vista de un solo objeto del itemId proporcionado, abriendo la ventana del stand de productos si está cerrada actualmente. A esta función solo se puede acceder desde un LocalScript.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
MerchBooth.openItemView(4819740796)
end

toggleCatalogButton

toggleCatalogButton(enabled:boolean)

Activa o desactiva el botón del catálogo situado en el lado derecho de la pantalla. Esto resulta útil cuando se implementa un botón personalizado o se limita la aparición del stand de productos a regiones o indicadores de proximidad. Solo se puede llamar desde un LocalScript.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.toggleCatalogButton(false)

isMerchBoothOpen

isMerchBoothOpen():Tuple

Devuelve true si el catálogo o la vista del objeto están abiertos. Si la vista del objeto está abierta, la identificación del recurso del objeto se devuelve como el segundo valor. A esta función solo se puede acceder desde un LocalScript.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
MerchBooth.openItemView(4819740796)
local isOpen, itemId = MerchBooth.isMerchBoothOpen()
print(isOpen, itemId)
end

closeMerchBooth

closeMerchBooth():

Cierra la ventana del stand de productos. A esta función solo se puede acceder desde un LocalScript.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.closeMerchBooth()

isMerchBoothEnabled

isMerchBoothEnabled():boolean

Esta función se puede usar junto con setEnabled para verificar si el stand de productos está activado actualmente o no. Solo se puede llamar desde un LocalScript.

setEnabled

setEnabled(enabled:boolean)

Establece si todo el stand de productos está activado o no. Cuando se desactiva, esta función elimina toda la interfaz de usuario, incluidos los indicadores de proximidad, y desconecta todos los eventos. A esta función solo se puede acceder desde un LocalScript.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
local isEnabled = MerchBooth.isMerchBoothEnabled()
if isEnabled then
MerchBooth.setEnabled(false)
end

Eventos

itemAdded

itemAdded(assetId:number, itemInfo:table):RBXScriptSignal

Se activa cuando un objeto se añade a través de addItemAsync. Este evento solo se puede conectar en un Script.

Parámetros
assetId: numberIdentificación del recurso del objeto.
itemInfo: tableDiccionario de información del objeto, como price o title.
Script

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.itemAdded:Connect(function(assetId, itemInfo)
print("Item added with asset ID of", assetId)
print(itemInfo)
end)

itemRemoved

itemRemoved(assetId:number):RBXScriptSignal

Se activa cuando un objeto se elimina a través de removeItem. Este evento solo se puede conectar en un Script.

Parámetros
assetId: numberIdentificación del recurso del objeto.
Script

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.itemRemoved:Connect(function(assetId)
print("Item removed with asset ID of", assetId)
end)

merchBoothOpened

merchBoothOpened():RBXScriptSignal

Se activa cuando se abre la vista catálogo o la vista de detalles del objeto.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.merchBoothOpened:Connect(function()
print("Booth view opened")
end)

merchBoothClosed

merchBoothClosed():RBXScriptSignal

Se activa cuando se cierra el catálogo o de detalles del objeto.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.merchBoothClosed:Connect(function()
print("Booth view closed")
end)

catalogViewOpened

catalogViewOpened():RBXScriptSignal

Se activa cuando se abre la vista del catálogo.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.catalogViewOpened:Connect(function()
print("Catalog view opened")
end)

catalogViewClosed

catalogViewClosed():RBXScriptSignal

Se activa cuando se cierra la vista del catálogo.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.catalogViewClosed:Connect(function()
print("Catalog view closed")
end)

itemViewOpened

itemViewOpened():RBXScriptSignal

Se activa cuando se abre la vista de detalles del objeto.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.itemViewOpened:Connect(function()
print("Item view opened")
end)

itemViewClosed

itemViewClosed():RBXScriptSignal

Se activa cuando se cierra la vista de detalles del objeto.

LocalScript

local ReplicatedStorage = game: GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))
MerchBooth.itemViewClosed:Connect(function()
print("Item view closed")
end)