Stand de merchandising

Le module MerchBooth développeur vous permet d'offrir des accessoires d'avatar, des passes et des produits pour développeurs à vendre directement dans votre expérience. Les joueurs peuvent parcourir les articles, prévisualiser les ressources sur leur propre avatar, acheter des articles et les utiliser ou les équiper instantanément — le tout sans quitter votre expérience. Cela peut vous aider à [monétiser](../../production/monet

Utilisation du module

Installation

Pour utiliser le module MerchBooth dans une expérience :

  1. Dans l'onglet Voir, ouvrez la Boîte à outils et sélectionnez l'onglet Marketplace.

    Bouton activer/désactiver la Boîte à outils dans Studio
  2. Assurez-vous que le filtre Modèles est sélectionné, puis cliquez sur le bouton Voir tout pour afficher les catégories.

  3. Localisez et cliquez sur la vignette MODULES DEV.

  4. Localisez le module Stand de merchandising et cliquez dessus, ou faites-le glisser dans la vue 3D.

  5. Dans la fenêtre Explorateur, déplacez l'intégralité du modèle MerchBooth dans ServerScriptService. Lors de l'exécution de l'expérience, le module se distribuera lui-même vers divers services et commencera à s'exécuter.

Paramétrage

Le module est préconfiguré pour fonctionner dans la plupart des cas d'utilisation, mais il peut être facilement modifier grâce à la fonction configurer. Par exemple, pour créer un thème plus léger et désactiver le bouton Filtre par défaut dans la zone supérieure gauche de la vue du catalogue :

  1. Dans StarterPlayerScripts, créez un nouveau LocalScript et renommez-le ConfigureMerchBooth.

  2. Collez le code suivant dans le nouveau script.

    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
    })

Ajouter des objets

Qu'est-ce qu'un stand de merchandising sans produits dérivés ? Les sections suivantes décrivent comment ajouter des éléments d'avatar, des passes et des produits développeur à votre stand de merchandising.

Éléments d'avatar

Les objets tels que les vêtements et accessoires doivent être ajoutés par le biais de leur ID d'élément situé sur la page de détails de l'objet dans la Boutique d'avatar.

  1. Créez un Script dans ServerScriptService et collez le code suivant.

    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. Copiez les ID de l'élément depuis leur URL dans la Boutique d'avatar. Par exemple, l'ID de Roblox Baseball Cap est 607702162.

  3. Collez chaque ID copié dans une liste délimitée par des virgules dans le tableau items. Par défaut, les objets apparaissent dans le catalogue dans l'ordre alphabétique, mais vous pouvez personnaliser l'ordre avec 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

Passes

L'ajout de passes nécessite des ID de passe qui sont situés dans l'Interface de création.

  1. Créez un Script dans ServerScriptService et collez le code suivant.

    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. Accédez à l'Interface de création et sélectionnez l'expérience.

  3. Dans la colonne de gauche, cliquez sur Objets associés, puis sélectionnez PASSES.

  4. Cliquez droit sur un passe et sélectionnez Copier l'ID de l'élément.

  5. et incluez Enum.InfoType.GamePass comme deuxième paramètre pour addItemAsync afin d'indiquer que les objets sont des passes. Les objets apparaîtront par défaut dans le catalogue dans l'ordre alphabétique, mais le tri peut être personnalisé via 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

Produits développeur

L'ajout de produits développeur nécessite des ID de produit qui sont situés dans l'Interface de création.

  1. Créez un Script dans ServerScriptService et collez le code suivant.

    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. Accédez à l'Interface de création et sélectionnez l'expérience.

  3. Dans la colonne de gauche, cliquez sur Objets associés, puis sélectionnez PRODUITS DÉVELOPPEUR.

  4. Cliquez droit sur un produit et sélectionnez Copier l'ID de l'élément.

  5. et incluez Enum.InfoType.Product comme deuxième paramètre pour addItemAsync afin d'indiquer que les objets sont des produits développeur. Par défaut, les objets apparaissent dans le catalogue dans l'ordre alphabétique, mais vous pouvez personnaliser l'ordre avec 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

Bouton de personnalisation du catalogue

Par défaut, un bouton de catalogue situé à droite permet aux utilisateurs d'ouvrir le stand à tout moment.

Dans certains cas, il peut être utile de supprimer ce bouton et de lier le vôtre :

  1. Créez un nouveau bouton comme décrit dans Boutons et Entrée de texte.

  2. Créez un LocalScript en tant qu'enfant du bouton objet.

  3. Collez le code suivant dans le nouveau script.

    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)

Espaces pour les achats

Un moyen pour générer des achats dans votre expérience est d'afficher automatiquement le stand de merchandising lorsqu'un utilisateur entre dans une zone.

Pour créer un espace d'achat :

  1. Créez un bloc Anchored qui englobe l'espace de détection.

    Bloc pour détecter les joueurs qui s'approchent du comptoir de la boutique
  2. À l'aide de l'Éditeur de tags, accessible à partir de l'onglet Voir, appliquez le tag ShopRegion au bloc afin que CollectionService le détecte.

  3. Désactivez les propriétés CanCollide et CanQuery de la pièce afin que les objets n'entrent pas en collision avec elle et que les raycasts ne la détectent pas. Définissez également son Transparency au maximum pour la cacher des utilisateurs dans l'expérience.

  4. Insérez un nouveau LocalScript sous StarterPlayerScripts.

  5. Dans le nouveau script, collez le code suivant qui utilise les événements Touched et TouchEnded pour détecter lorsque les utilisateurs entrent/sortent de l'espace et appellent openMerchBooth et closeMerchBooth pour ouvrir/fermer la GUI du 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

Messages de proximité

Vous pouvez ajouter des invites de proximité sur les objets de l'expérience en tant qu'alternative à la vue du catalogue 2D. Cela encourage les utilisateurs à découvrir des objets dans l'environnement 3D, à les prévisualiser sur leur propre avatar, à les acheter et à les équiper directement. Voir addProximityButton pour plus de détails.

Modifier l'effet d'équipement

Le stand de merchandising affiche un effet de scintillement par défaut lorsqu'un utilisateur s'équipe d'un objet. Pour modifier l'effet, définissez particleEmitterTemplate sur votre propre instance d'un ParticleEmitter dans un appel de configuration.

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
})

Visibilité de la GUI

Le stand de merchandising masque tous les ScreenGuis et CoreGuis par défaut lorsque leurs UI s'affichent, y compris le chat, le classement et les autres éléments inclus par Roblox. Si vous souhaitez désactiver ce comportement, définissez hideOtherUis sur false dans un appel de configuration.

LocalScript - ConfigureMerchBooth

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

Mouvement du personnage

Il peut être avantageux d'empêcher un personnage de se déplacer lorsqu'il se trouve dans le stand de merchandising. Cela peut être fait en définissant disableCharacterMovement sur true dans un appel de configuration.

LocalScript - ConfigureMerchBooth

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

Référence API

Types

Objet

Les objets dans le stand de merchandising sont représentés par un dictionnaire avec les paires clé-valeur suivantes. Les objets peuvent être rassemblés par le biais de la fonction getItems ou de l'événement itemAdded.

CléTypeDescription
assetIdVector3int16ID du catalogue de l'objet, comme transféré vers addItemAsync.
titlechaîneNom de l'objet tel qu'il apparaît dans le catalogue.
priceVector3int16Prix de l'objet en Robux.
descriptionchaîneDescription de l'objet tel qu'il apparaît dans le catalogue.
assetTypechaîneChaîne représentant le type d'accessoire de l'objet.
isOwnedintIndique si l'utilisateur actuel possède l'objet.
creatorNamechaîneCréateur d'objets comme indiqué dans le catalogue.
creatorTypeEnum.CreatorTypeType de créateur pour l'objet.

Enums

MerchBooth.Controls

Utilisé avec setControlKeyCodes pour personnaliser les clés et les boutons de gamepad pour interagir avec le stand de merchandising.

NomRésumé
ProximityPromptsBouton de la clé et/ou du gamepad pour ouvrir la vue de l'objet lorsque des invites de proximitésont paramétrées.
OpenMerchBoothBouton de la clé et/ou du gamepad pour ouvrir le stand de merchandising.
CloseMerchBoothBouton de la clé et/ou du gamepad pour fermer le stand de merchandising.
FilterBouton de la clé et/ou du gamepad pour utiliser le menu par défaut Filtre dans la zone supérieure gauche du catalogue.
ViewItemBouton de la clé et/ou du gamepad pour ouvrir une vue d'objet du stand de merchandising spécifique.
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
})

Fonctions

configurer

configure(config:table)

Remplace les options de paramétrage par défaut du côté client par le biais des clés/valeurs suivantes dans le tableau config. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

Apparence

CléDescriptionPar défaut
backgroundColorCouleur principale de l'arrière-plan de la fenêtre (Color3).[0, 0, 0]
cornerRadiusRayon d'angle de la fenêtre principale (UDim).(0, 16)
cornerRadiusSmallRayon d'angle pour les éléments à l'intérieur de la fenêtre (UDim).(0, 8)
textFontPolice du « texte principal » comme les prix, les descriptions et autres informations générales (Enum.Font).Gotham
textSizeTaille du texte principal.13
textColorCouleur du texte principal (Color3).[255, 255, 255]
secondaryTextColorCouleur utilisée pour certaines variations du Color3texte principal[153, 153, 158]
headerFontPolice du texte d'en-tête utilisé pour le titre de la fenêtre (Enum.Font).GothamMedium
headerTextSizeTaille du texte d'en-tête utilisé pour le titre de la fenêtre.18
titleFontPolice du texte du titre utilisé pour le nom des objets sur la page de détail de l'objet (Enum.Font).GothamBold
titleTextSizeTaille du texte du titre utilisée pour le nom des objets sur la page de détail de l'objet.28
buttonColorCouleur d'arrière-plan pour les plus grands boutons cliquables, comme le bouton d'achat principal dans la vue de l'objet (Color3).[255, 255, 255]
buttonTextColorCouleur du texte pour les plus grands boutons cliquables, comme le bouton d'achat principal dans la vue de l'objet (Color3).[0, 0, 0]
secondaryButtonColorCouleur d'arrière-plan pour les boutons plus petits comme les boutons de prix dans le catalogue ou le bouton Essayer (Color3).[34, 34, 34]
secondaryButtonTextColorCouleur du texte pour les boutons plus petits comme les boutons de prix dans le catalogue ou le bouton Essayer (Color3).[255, 255, 255]
inactiveButtonColorCouleur d'arrière-plan pour tous les boutons non cliquables (Color3).[153, 153, 158]
inactiveButtonTextColorCouleur du texte pour tous les boutons non cliquables (Color3).[255, 255, 255]
particleEmitterTemplateInstance ParticleEmitter personnalisée optionnelle qui apparaît et se lance lors de l'équipement d'un objet.

Messages de proximité

CléDescriptionPar défaut
proximityButtonActivationDistanceDistance maximale entre le personnage d'un joueur et l'invite pour que l'invite apparaisse."10"
proximityButtonExclusivityEnum.ProximityPromptExclusivityspécifie les invites qui peuvent être affichées en même temps.OnePerButton
proximityButtonOffsetDécalage des pixels appliqué à l'UI de l'invite (Vector2).(0, 0)
proximityButtonPulseCountCombien d'« impulsions » se produisent autour des boutons de proximité avant de s'arrêter.3

Comportement

CléDescriptionPar défaut
useFiltersActive ou désactive le bouton Filtre affiché dans le catalogue.vrai
disableCharacterMovementSi true, empêche le personnage de se déplacer lorsque le stand de merchandising est ouvert.faux
hideOtherUisSi true, le stand de merchandising masque tous les ScreenGuis et CoreGuis quand son UI apparaît.vrai
closeWhenFarFromPromptSi true et si le joueur a ouvert une vue d'objet par le biais d'une invite de proximité, le stand de merchandising se fermera automatiquement quand le joueur s'éloignera de l'objet et de sa distance d'activation.vrai
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)

Ajoute un objet de manière asynchrone au stand de merchandising afin qu'il soit éligible à l'achat dans l'expérience. assetId est l'ID élément de l'objet, productType est l'enum Enum.InfoType de l'objet, et hideFromCatalog peut être utilisé pour masquer l'objet dans le catalogue.

Voir Ajouter des objets pour plus de détails, car l'utilisation varie légèrement entre les éléments, les passes de jeu et les produits développeur.

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

Fournit un dictionnaire représentant tous les objets actuellement enregistrés. Chaque clé est l'ID élément d'un objet sous forme de chaîne, et la valeur de chaque clé est un objet. Cette fonction peut uniquement être appelée à partir d'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)

Efface un objet précédemment ajouté avec addItemAsync, supprimant sa tuile dans le catalogue et toute invite de proximité assignée. Cette fonction peut uniquement être appelée à partir d'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)

Ajoute une invite de proximité au adornee donné qui déclenchera l'affichage de la vue d'achat d'un objet, compte tenu de son ID d'élément. Cela peut être utilisé comme une alternative à la vue du catalogue 2D, encourageant les utilisateurs à découvrir des objets dans l'environnement 3D.

Notez qu'un objet doit être ajouté via addItemAsync avant qu'un bouton de proximité puisse lui être assigné. Voir également removeProximityButton pour supprimer l'invite de proximité d'un objet.

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:``Class.BasePart|Model|Attachment)

Supprime une invite de proximité générée par addProximityButton. Cette fonction peut uniquement être appelée à partir d'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

Définit la fonction de tri sortFunction à utiliser dans le catalogue. La fonction de tri peut utiliser une logique basée sur les informations d'objet comme price ou title. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

Voici quelques exemples pour trier le catalogue :

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(contration:MerchBooth.Controls, keyCodes:table)

Paramètre les valeurs de clé et de bouton pour les interactions avec le stand de merchandising. Le premier paramètre doit être un MerchBooth.Commandes enum, et le deuxième un tableau regroupant les clés keyboard et/ou gamepad avec les enums Enum.KeyCode correspondants.

Enum (control)Clés/valeurs keyCodes par défaut
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():

Ouvre la fenêtre du stand de merchandising (si elle est fermée) et accède au catalogue. Cette fonction peut uniquement être appelée à partir d'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)

Accède à la vue d'objet unique du itemId donné, ouvrant la fenêtre du stand de merchandising si elle est fermée. Cette fonction peut uniquement être appelée à partir d'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)

Active ou désactive le bouton du catalogue sur le côté droit de l'écran. Ceci est utile lorsque vous implémentez un bouton personnalisé ou limitez l'apparence du stand de merchandising aux espaces ou aux invites de proximité. Peut uniquement être appelé à partir d'un LocalScript.

LocalScript

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

isMerchBoothOpen

isMerchBoothOpen():Tuple

Renvoie true si le catalogue ou la vue de l'objet est ouverte. Si la vue de l'objet est ouverte, l'ID élément de l'objet est fourni comme deuxième valeur. Cette fonction peut uniquement être appelée à partir d'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():

Ferme la fenêtre du stand de merchandising. Cette fonction peut uniquement être appelée à partir d'un LocalScript.

LocalScript

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

isMerchBoothEnabled

isMerchBoothEnabled():boolean

Cette fonction peut être utilisée en tandem avec setEnabled pour vérifier si le stand de merchandising est activé ou non. Peut uniquement être appelé à partir d'un LocalScript.

setEnabled

setEnabled(enabled:boolean)

Définit si l'intégralité du stand de merchandising est activé ou non. Lorsqu'elle est désactivée, cette fonction supprime l'UI entier, y compris les invites de proximité, et dissocie tous les événements. Cette fonction peut uniquement être appelée à partir d'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

Événements

itemAdded

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

Se déclenche lorsqu'un objet est ajouté par addItemAsync. Cet événement peut uniquement être lié dans un Script.

Paramètres
assetId: numberID élément de l'objet.
itemInfo: tableDictionnaire des informations d'](#item)objet[ comme price ou 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 déclenche lorsqu'un objet est supprimé par removeItem. Cet événement peut uniquement être lié dans un Script.

Paramètres
assetId: numberID élément de l'objet.
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 déclenche lorsque le catalogue ou la vue des détails de l'objet sont ouverts.

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 déclenche lorsque le catalogue ou la vue des détails de l'objet sont fermés.

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 déclenche lorsque le catalogue est ouvert.

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 déclenche lorsque le catalogue est fermé.

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 déclenche lorsque la vue des détails de l'objet est ouverte.

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 déclenche lorsque la vue des détails de l'objet est fermée.

LocalScript

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