굿즈 부스

MerchBooth 개발자 모듈을 사용하면 경험 내에서 직접 판매할 아바타 애셋, 출입증, 개발자 제품을 제공할 수 있습니다. 플레이어는 체험을 떠나지 않고도 아이템 탐색, 자신의 아바타에서 자산 미리 보기, 아이템 구매, 즉시 사용 또는 장착을 해 볼 수 있습니다. 이를 통해 체험을 수익화하고, 다른 크리에이터의 아이템 판매에 40%의 제휴 수수료를 부과해 수익을 얻을 수 있습니다.

모듈 사용

설치

체험 내에서 MerchBooth 모듈을 사용하려면:

  1. 보기 탭에서 도구 상자를 열고 마켓플레이스 탭을 선택합니다.

    Studio의 도구상자 토글 버튼
  2. 모델 정렬이 선택되었는지 확인한 다음 카테고리에서 모두 보기 버튼을 클릭합니다.

  3. DEV MODULES 타일을 찾아 클릭합니다.

  4. Merch Booth 모듈을 찾아 클릭하거나 3D 보기로 끌어다 놓습니다.

  5. 탐색기 창에서 전체 MerchBooth 모델을 ServerScriptService로 이동시킵니다. 체험을 실행하면 모듈이 다양한 서비스에 배포되고 실행되기 시작합니다.

구성

이러한 모듈은 대부분의 사용 사례에서 작동하도록 미리 구성되어 있지만, 구성 함수를 통해 더욱 쉽게 사용자 지정할 수 있습니다. 예를 들어, 더 밝은 테마를 생성하거나 카탈로그 보기 왼쪽 상단 영역의 기본 필터 버튼을 비활성화하려면 다음을 수행하십시오.

  1. StarterPlayerScripts에서 새 LocalScript을(를) 생성하고 ConfigureMerchBooth로 이름을 바꿉니다.

  2. 새로운 스크립트에 다음의 코드를 붙여 넣습니다.

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

아이템 추가

상품이 없는 Merch Booth는 무엇입니까? 다음 섹션에서는 Merch Booth에 아바타 자산, 출입증, 개발자 제품을 추가하는 방법을 설명합니다.

아바타 애셋

복장 및 장신구 등의 아이템은 아바타 상점의 아이템 세부 정보 페이지에 있는 애셋 ID를 통해 추가해야 합니다.

  1. ServerScriptService 내에서 Script을(를) 생성하고 다음 코드를 붙여 넣습니다.

    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. Avatar Shop 웹사이트 URL에서 아이템 자산 ID를 복사합니다. 예를 들어, Roblox Baseball Cap의 ID는 607702162입니다.

  3. 복사한 각 ID를 items 테이블 내의 쉼표로 구분된 목록에 붙여 넣습니다. 기본적으로 아이템은 카탈로그 보기에 알파벳 순으로 표시되지만 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

패스

패스를 추가하려면 크리에이터 대시보드에서 찾을 수 있는 패스 ID가 필요합니다.

  1. ServerScriptService 내에서 Script을(를) 생성하고 다음 코드를 붙여 넣습니다.

    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. 크리에이터 대시보드로 이동하여 체험을 선택합니다.

  3. 왼쪽 열에서 연결된 아이템을 클릭한 다음 패스를 선택합니다.

  4. 패스를 마우스 오른쪽 버튼으로 클릭하고 애셋 ID 복사를 선택합니다.

  5. addItemAsync의 두 번째 매개 변수로 Enum.InfoType.GamePass을(를) 포함시켜 아이템이 출입증이라는 것을 표시합니다. 기본적으로 아이템은 카탈로그 보기에 알파벳순으로 표시되지만, 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

개발자 제품

개발자 상품을 추가하려면 크리에이터 대시보드에서 찾을 수 있는 상품 ID가 필요합니다.

  1. ServerScriptService 내에서 Script을(를) 생성하고 다음 코드를 붙여 넣습니다.

    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. 크리에이터 대시보드로 이동하여 체험을 선택합니다.

  3. 왼쪽 열에서 연결된 아이템을 클릭한 다음, 개발자 제품을 선택합니다.

  4. 제품을 마우스 오른쪽 버튼으로 클릭하고, 자산 ID 복사를 선택합니다.

  5. addItemAsync의 두 번째 매개 변수로 Enum.InfoType.Product을(를) 포함시켜 아이템이 개발자 제품이라는 것을 표시합니다. 기본적으로 아이템은 카탈로그 보기에 알파벳 순으로 표시되지만 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

사용자 지정 카탈로그 버튼

기본적으로는 오른쪽 카탈로그 버튼을 통해 사용자는 언제든지 부스를 열 수 있습니다.

경우에 따라 이러한 버튼을 제거하고 원하는 대로 연결하는 것도 유용합니다.

  1. 버튼 및 텍스트 입력 항목에 설명된 대로 새 버튼을 생성합니다.

  2. 단추 개체의 자식 개체로 LocalScript를 생성합니다.

  3. 새로운 스크립트에 다음의 코드를 붙여 넣습니다.

    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)

상점 거래 가능 지역

체험 내에서 구매를 유도하는 유용한 방법 중 하나는 사용자가 지역에 들어왔을 때 Merch Booth를 자동으로 표시하는 것입니다.

상점 거래 가능 지역을 생성하려면:

  1. 감지 영역을 포함하는 Anchored 블록을 생성합니다.

    상점 카운터 앞에 플레이어가 접근하는 것을 감지하기 위한 블록
  2. 보기 탭에서 액세스할 수 있는 태그 편집기를 사용하여, CollectionService이(가) 감지할 수 있도록 태그 ShopRegion을(를) 블록에 적용합니다.

  3. 개체가 물리적으로 충돌하지 않고 레이캐스트에 감지되지 않도록 부품의 CanCollideCanQuery 속성을 비활성화합니다. 또한 체험 내에서 이를 사용자에게서 숨기려면 Transparency을(를) 최대로 설정하십시오.

  4. StarterPlayerScripts 이하에 LocalScript을(를) 새로 삽입합니다.

  5. 새 스크립트에서 다음 코드를 붙여 넣어, TouchedTouchEnded 이벤트를 사용하여 사용자의 지역 출입을 감지하게 하고 openMerchBoothcloseMerchBooth를 호출하여 부스 GUI를 열고 닫을 수 있도록 합니다.

    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

근접 프롬프트

2D 카탈로그 보기의 대안으로, 체험 전반의 개체에 근접 프롬프트를 추가할 수 있습니다. 이를 통해 사용자는 3D 환경 내 아이템 발견, 아바타에서 미리 보기, 구매, 즉시 장착을 해 볼 수 있습니다. 자세한 내용은 addProximityButton을 참조하십시오.

장착 효과 변경

기본적으로는 Merch Booth에 사용자가 상품을 장착하면 기본 반짝임 효과가 표현됩니다. 효과를 변경하려면 구성 호출에서 particleEmitterTemplate을(를) 자신의 ParticleEmitter 인스턴스로 설정하십시오.

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

GUI 가시성

기본적으로 Merch Booth에서는 채팅, 순위표 및 Roblox에 포함된 기타 항목 등의 UI가 나타날 때 ScreenGuis와(과) CoreGuis이(가) 모두 숨겨집니다. 이러한 기능을 비활성화하려면 구성 호출에서 hideOtherUis을(를) false(으)로 설정하십시오.

LocalScript - ConfigureMerchBooth

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

캐릭터 이동

캐릭터가 Merch Booth에 있는 동안 움직이지 않도록 하는 것이 유리합니다. 이는 구성 호출에서 disableCharacterMovement을(를) true(으)로 설정하여 실행할 수 있습니다.

LocalScript - ConfigureMerchBooth

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

API 참조

유형

아이템

Merch Booth의 아이템들은 다음과 같이 키와 값의 쌍으로 이루어진 용어집으로 표시됩니다. 아이템은 getItems 함수 또는 itemAdded 이벤트를 통해 수집할 수 있습니다.

유형설명
assetId숫자addItemAsync에 전달된 아이템의 카탈로그 ID.
title문자열카탈로그에 표시되는 아이템 이름.
price숫자Robux의 아이템 가격.
description문자열카탈로그에 표시되는 아이템 설명.
assetType문자열아이템의 액세서리 유형을 나타내는 문자열.
isOwnedvoid현재 사용자가 아이템을 소유하고 있는지 여부.
creatorName문자열카탈로그에 표시된 아이템 생성자.
creatorTypeEnum.CreatorType아이템 생성자 유형.

열거형

MerchBooth.Controls

setControlKeyCodes와 함께 사용하여 Merch Booth와 상호 작용하기 위한 키 및 게임 패드 버튼을 사용자 지정.

이름요약
ProximityPrompts근접 프롬프트가 구성된 경우 아이템 보기를 여는 키 또는 게임 패드 버튼.
OpenMerchBoothMerch Booth를 여는 키 또는 게임 패드 버튼.
CloseMerchBoothMerch Booth를 닫는 키 또는 게임패드 버튼.
Filter카탈로그 보기의 왼쪽 상단 영역에서 기본 필터 풀다운을 사용하는 키 또는 게임 패드 버튼.
ViewItem특정 Merch Booth 아이템 보기를 여는 키 또는 게임 패드 버튼.
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
})

함수

구성

구성(config:table)

config 테이블의 다음 키/값을 통해 기본 클라이언트 측 구성 옵션을 무효화합니다. 해당 함수는 LocalScript에서만 호출할 수 있습니다.

외형

설명기본
backgroundColor창의 기본 배경색(Color3).[0, 0, 0]
cornerRadius기본 창의 코너 반경(UDim).(0, 16)
cornerRadiusSmall창 내부 요소의 모서리 반경(UDim).(0, 8)
textFont가격, 설명 및 기타 일반 정보 등 '본문'의 글꼴(Enum.Font).Gotham
textSize본문의 크기.13
textColor본문 색상(Color3).[255, 255, 255]
secondaryTextColor본문의 일부 변형 형태에 사용되는 색상(Color3).[153, 153, 158]
headerFont창 제목에 사용되는 헤더 텍스트의 글꼴(Enum.Font).GothamMedium
headerTextSize창 제목에 사용되는 헤더 텍스트의 크기.17
titleFont아이템 세부 정보 페이지에서 아이템 이름에 사용되는 제목 텍스트의 글꼴(Enum.Font).GothamBold
titleTextSize아이템 세부 정보 페이지에서 아이템 이름에 사용되는 제목 텍스트의 크기.28
buttonColor아이템 보기의 기본 구매 버튼 등 클릭 가능한 상태인 더 큰 버튼의 배경색(Color3).[255, 255, 255]
buttonTextColor아이템 보기의 기본 구매 버튼 등 클릭 가능한 상태인 더 큰 버튼의 텍스트 색상(Color3).[0, 0, 0]
secondaryButtonColor카탈로그 보기의 가격 버튼이나 장착해 보기 버튼 등 작은 버튼의 배경 색상(Color3).[34, 34, 34]
secondaryButtonTextColor카탈로그 보기의 가격 버튼이나 장착해 보기 버튼 등 작은 버튼의 텍스트 색상(Color3).[255, 255, 255]
inactiveButtonColor클릭할 수 없는 상태인 모든 버튼의 배경색(Color3).[153, 153, 158]
inactiveButtonTextColor클릭할 수 없는 상태인 모든 버튼의 텍스트 색상(Color3).[255, 255, 255]
particleEmitterTemplate장착 시 나타나고 플레이되는 선택적 사용자 지정 ParticleEmitter 인스턴스.

근접 프롬프트

설명기본
proximityButtonActivationDistance플레이어의 캐릭터가 프롬프트 표시자로부터 떨어져 있을 때 프롬프트가 표시되는 최대 거리.10
proximityButtonExclusivityEnum.ProximityPromptExclusivity 동시에 표시할 수 있는 프롬프트를 지정합니다.OnePerbutton
proximityButtonOffset프롬프트의 UI에 적용된 픽셀 오프셋(Vector2).(0, 0)
proximityButtonPulseCount중지하기 전에 근접 버튼 주변에서 발생하는 '펄스'의 수.3

행동

설명기본
useFilters카탈로그에 표시된 필터 버튼을 켜거나 끕니다.
disableCharacterMovementtrue인 경우, Merch Booth가 열려 있는 동안 캐릭터가 움직이지 못하게 합니다.거짓
hideOtherUistrue인 경우, Merch Booth는 UI가 나타날 때 ScreenGuis와(과) CoreGuis을(를) 모두 숨깁니다.
closeWhenFarFromPrompttrue인 경우 플레이어가 근접 프롬프트를 통해 아이템 보기를 연 경우, 플레이어가 활성화 거리보다 프롬프트 개체에서 더 멀리 이동하면 Merch Booth가 자동으로 닫힙니다.
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)

체험에서 구매할 수 있도록 Merch Booth에 아이템을 비동기식으로 추가합니다. assetId은(는) 아이템의 자산 ID이고 productType은(는) 아이템의 Enum.InfoType 열거형이며 hideFromCatalog은(는) 카탈로그 보기에서 아이템을 숨기는 데 사용합니다.

자산게임 패스 또는 개발자 제품의 사용량이 약간 다르므로, 자세한 내용은 아이템 추가 항목을 참조하십시오.

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

현재 등록된 모든 아이템이 표시된 용어집을 반환합니다. 각 키는 아이템의 문자열로 된 자산 ID이고, 각 키의 값은 아이템입니다. 해당 함수는 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

remove(assetId:number)

이전에 addItemAsync로 추가한 아이템을 등록 취소하여 카탈로그 보기에서 해당 타일 및 할당된 모든 근접 프롬프트를 제거합니다. 해당 함수는 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)

자산 ID가 지정된 아이템의 구매 보기 표시를 트리거하는 근접 프롬프트를 지정된 adornee에 추가합니다. 이는 2D 카탈로그 보기의 대안으로 사용할 수 있으며, 사용자가 3D 환경에서 아이템을 발견하도록 촉진합니다.

근접 버튼을 할당하려면 먼저 addItemAsync를 통해 아이템을 추가해야 합니다. 개체에서 근접 프롬프트를 제거하려면 removeProximityButton도 참조하십시오.

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)

addProximityButton을 통해 생성된 근접 프롬프트를 제거합니다. 해당 함수는 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(sortsort:function):boolean

카탈로그 보기에서 사용할 정렬 함수 sortFunction을(를) 설정합니다. 제공된 정렬 함수는 price 또는 title와(과) 같은 아이템 정보 기반 논리를 사용할 수 있습니다. 해당 함수는 LocalScript에서만 호출할 수 있습니다.

다음은 카탈로그 분류의 몇 가지 예입니다.

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)

Merch Booth와의 상호 작용을 위한 키 및 버튼 값을 구성합니다. 첫 번째 매개변수는 MerchBooth.Controls 열거형이어야 하고, 두 번째 매개변수는 해당 Enum.KeyCode 열거형과 함께 키 keyboard 또는 gamepad을(를) 포함하는 테이블이어야 합니다.

열거형 (control)기본 keyCodes 키/값
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():

Merch Booth 창을 (닫힌 경우) 열고 카탈로그 보기로 이동합니다. 해당 함수는 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)

주어진 itemId의 단일 아이템 보기로 이동하여 현재 닫혀 있는 Merch Booth 창을 엽니다. 해당 함수는 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

oggleCatalogButton(enabledboolean)

화면 오른쪽에 있는 카탈로그 버튼을 켜거나 끕니다. 이는 사용자 지정 버튼을 구현하거나 Merch Booth의 모양을 지역 또는 근접 프롬프트로 제한할 때 유용합니다. LocalScript에서만 호출할 수 있습니다.

LocalScript

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

isMerchBoothOpen

isMerchBoothOpen():Tuple

카탈로그 또는 아이템 보기가 열려 있으면 true(을)를 반환합니다. 아이템 보기가 열려 있으면 아이템의 자산 ID가 두 번째 값으로 반환됩니다. 해당 함수는 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():

Merch Booth 창을 닫습니다. 해당 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

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

isMerchBoothEnabled

isMerchBoothEnabled():boolean

해당 함수는 setEnabled와 함께 사용되어 Merch Booth가 현재 활성화되어 있는지 여부를 확인하게 합니다. LocalScript에서만 호출할 수 있습니다.

setEnabled

setEnabled(enabled:boolean)

전체 Merch Booth 활성화 여부를 설정합니다. 비활성화되면 해당 함수는 근접 프롬프트를 포함한 전체 UI를 제거하고 모든 이벤트의 연결을 끊습니다. 해당 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript

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

이벤트

itemAdded

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

addItemAsync를 통해 아이템이 추가되면 발동됩니다. 해당 이벤트는 Script에서만 연결할 수 있습니다.

**매개변수 **
assetId: number아이템 자산 ID.
itemInfo: tableprice 또는 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

removeItem을 통해 아이템이 제거될 때 발동됩니다. 해당 이벤트는 Script에서만 연결할 수 있습니다.

**매개변수 **
assetId: number아이템 자산 ID.
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

카탈로그 또는 아이템 세부 정보 보기가 열릴 때 발동됩니다.

LocalScript

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

merchBoothClosed

merchBoothClosed():RBXScriptSignal

카탈로그 또는 아이템 세부 정보 보기가 닫힐 때 발동됩니다.

LocalScript

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

catalogViewOpened

catalogViewOpened():RBXScriptSignal

카탈로그 보기가 닫힐 때 발동됩니다.

LocalScript

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

catalogViewClosed

catalogViewClosed():RBXScriptSignal

카탈로그 보기가 열릴 때 발동됩니다.

LocalScript

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

itemViewOpened

itemViewOpened():RBXScriptSignal

아이템 세부 정보 보기가 닫힐 때 발동됩니다.

LocalScript

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

itemViewClosed

itemViewClosed():RBXScriptSignal

아이템 세부 정보 보기가 열릴 때 발동됩니다.

LocalScript

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