머천트 부스

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

MerchBooth 개발자 모듈을 사용하면 아바타 자산, 패스개발자 제품을 게임 내에서 직접 판매할 수 있습니다. 플레이어는 아이템을 탐색하고, 자신의 아바타에 자산을 미리 보기하고, 아이템을 구매하고, 즉시 사용하거나 장착할 수 있습니다 — 모두 게임을 떠나지 않고 가능합니다. 이는 게임을 수익화하고 다른 제작자의 아이템 판매와 관련된 40% 제휴 수수료를 통해 수익을 얻는 데 도움이 될 수 있습니다.

모듈 사용법

설치

게임에서 MerchBooth 모듈을 사용하려면:

  1. Studio의 메뉴 또는 탭 도구 모음에서 툴박스를 열고 제작자 상점 탭을 선택합니다.

  2. 모델 정렬이 선택되어 있는지 확인한 후, 카테고리모두 보기 버튼을 클릭합니다.

  3. 패키지 타일을 찾아 클릭합니다.

  4. Merch Booth 모듈을 찾아 클릭하거나 3D 뷰로 드래그 앤 드롭합니다.

  5. 탐색기 창에서 전체 MerchBooth 모델을 ReplicatedStorage로 이동합니다. 게임을 실행하면 모듈이 실행되기 시작합니다.

구성

모듈은 대부분의 사용 사례에 맞게 미리 구성되어 있지만, configure 함수를 통해 쉽게 사용자 정의할 수 있습니다. 예를 들어, 더 밝은 테마를 만들고 카탈로그 뷰의 왼쪽 상단 영역에 있는 기본 필터 버튼을 비활성화하려면:

  1. StarterPlayerScripts에서 새 LocalScript를 만들고 이름을 ConfigureMerchBooth로 변경합니다.

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

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

아이템 추가

머천트 부스가 없으면 머천트 부스가 아닙니다! 다음 섹션에서는 아바타 자산, 패스개발자 제품을 머천트 부스에 추가하는 방법을 설명합니다.

아바타 자산

의류 및 액세서리와 같은 아이템은 아바타 상점의 아이템 세부 정보 페이지에 있는 자산 ID를 통해 추가해야 합니다.

  1. ServerScriptService 내에 Script를 만들고 다음 코드를 붙여넣습니다.

    Script - Add Avatar Assets
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end
  2. 아바타 상점 웹사이트 URL에서 아이템 자산 ID를 복사합니다. 예를 들어, Roblox 야구 모자의 ID는 607702162입니다.

  3. 복사한 각 ID를 items 테이블 내의 쉼표로 구분된 목록에 붙여넣습니다. 기본적으로 아이템은 카탈로그 뷰에서 알파벳 순으로 표시되지만, setCatalogSort를 사용하여 정렬을 사용자 정의할 수 있습니다.

    Script - Add Avatar Assets
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    607702162, -- Roblox 야구 모자
    4819740796, -- Robox
    1374269, -- 고양이 귀
    11884330, -- 너드 안경
    10476359, -- 종이 모자
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end

패스

패스를 추가하려면 제작자 대시보드에서 찾을 수 있는 패스 ID가 필요합니다.

  1. ServerScriptService 내에 Script를 만들고 다음 코드를 붙여넣습니다.

    Script - Add Passes
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end
  2. 제작자 대시보드로 이동하여 게임을 선택합니다.

  3. 왼쪽 열에서 수익화 아래의 패스를 선택합니다.

  4. 패스의 썸네일 위에 마우스를 올리고 버튼을 클릭한 후 컨텍스트 메뉴에서 자산 ID 복사를 선택합니다.

  5. 복사한 각 ID를 items 테이블 내의 쉼표로 구분된 목록에 붙여넣고, addItemAsync에서 두 번째 매개변수로 Enum.InfoType.GamePass를 포함하여 아이템이 패스임을 나타냅니다. 기본적으로 아이템은 카탈로그 뷰에서 알파벳 순으로 표시되지만, 정렬은 setCatalogSort를 통해 사용자 정의할 수 있습니다.

    Script - Add Passes
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    4343758, -- ColdFyre 갑옷
    28521575, -- 슬라임 방패
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)
    end)
    if not success then
    warn(errorMessage)
    end
    end

개발자 제품

개발자 제품을 추가하려면 제작자 대시보드에서 찾을 수 있는 제품 ID가 필요합니다.

  1. ServerScriptService 내에 Script를 만들고 다음 코드를 붙여넣습니다.

    Script - Add Developer Products
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end
  2. 제작자 대시보드로 이동하여 게임을 선택합니다.

  3. 왼쪽 열에서 수익화 아래의 개발자 제품을 선택합니다.

  4. 제품의 썸네일 위에 마우스를 올리고 버튼을 클릭한 후 컨텍스트 메뉴에서 자산 ID 복사를 선택합니다.

  5. 복사한 각 ID를 items 테이블 내의 쉼표로 구분된 목록에 붙여넣고, addItemAsync에서 두 번째 매개변수로 Enum.InfoType.Product를 포함하여 아이템이 개발자 제품임을 나타냅니다. 기본적으로 아이템은 카탈로그 뷰에서 알파벳 순으로 표시되지만, setCatalogSort를 사용하여 정렬을 사용자 정의할 수 있습니다.

    Script - Add Developer Products
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    1236602053, -- 마나 리필
    1257880672, -- 치유 물약
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)
    end)
    if not success then
    warn(errorMessage)
    end
    end

사용자 정의 카탈로그 버튼

기본적으로 오른쪽에 있는 카탈로그 버튼을 통해 플레이어는 언제든지 부스를 열 수 있습니다.

경우에 따라 이 버튼을 제거하고 자신의 버튼을 연결하는 것이 유용할 수 있습니다:

  1. 버튼에서 설명한 대로 새 버튼을 만듭니다.

  2. 버튼 객체의 자식으로 LocalScript를 만듭니다.

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

    LocalScript - Custom Catalog Button
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- 기본 카탈로그 버튼 제거
    MerchBooth.toggleCatalogButton(false)
    -- 사용자 정의 버튼 연결
    script.Parent.Activated:Connect(function()
    MerchBooth.openMerchBooth()
    end)

쇼핑 가능한 지역

게임 내에서 구매를 유도하는 유용한 방법은 플레이어가 특정 지역에 들어갈 때 자동으로 머천트 부스를 표시하는 것입니다.

쇼핑 가능한 지역을 만들려면:

  1. 감지 영역을 포함하는 Anchored 블록을 만듭니다. 블록이 캐릭터 모델의 PrimaryPart와 충돌할 수 있을 만큼 충분히 높아야 합니다 (HumanoidRootPart가 기본값입니다).

    플레이어가 상점 카운터 앞에 접근할 때 감지하는 블록
  2. 블록의 속성의 태그 섹션을 사용하여 ShopRegion 태그를 블록에 적용하여 CollectionService가 이를 감지할 수 있도록 합니다.

  3. 블록의 Transparency를 최대값으로 설정하여 게임에서 플레이어에게 숨깁니다. 또한 CanCollideCanQuery 속성을 비활성화하여 물체가 물리적으로 충돌하지 않도록 하고 레이캐스트가 이를 감지하지 않도록 합니다.

  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.MerchBooth)
    -- 기본 카탈로그 버튼 제거
    MerchBooth.toggleCatalogButton(false)
    local function setupRegion(region: BasePart)
    region.Touched:Connect(function(otherPart)
    local character = Players.LocalPlayer.Character
    if character and otherPart == character.PrimaryPart then
    MerchBooth.openMerchBooth()
    end
    end)
    region.TouchEnded:Connect(function(otherPart)
    local character = Players.LocalPlayer.Character
    if character and otherPart == character.PrimaryPart then
    MerchBooth.closeMerchBooth()
    end
    end)
    end
    -- 기존 태그가 있는 상점 지역을 반복합니다.
    for _, region in CollectionService:GetTagged("ShopRegion") do
    setupRegion(region)
    end
    -- 비스트리밍 상점 지역이 스트리밍될 때 감지합니다.
    CollectionService:GetInstanceAddedSignal("ShopRegion"):Connect(setupRegion)

근접 프롬프트

2D 카탈로그 뷰 대신 게임 내 객체 위에 근접 프롬프트를 추가할 수 있습니다. 이는 플레이어가 3D 환경에서 아이템을 발견하고, 자신의 아바타에 미리 보기하고, 구매하고, 즉시 장착하도록 유도합니다. 자세한 내용은 addProximityButton을 참조하세요.

장착 효과 변경

기본적으로 머천트 부스는 플레이어가 아이템을 장착할 때 일반적인 반짝임 효과를 보여줍니다. 효과를 변경하려면 configure 호출에서 particleEmitterTemplate을 자신의 ParticleEmitter 인스턴스로 설정하세요.

LocalScript - ConfigureMerchBooth
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.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 가시성

기본적으로 머천트 부스는 UI가 나타날 때 모든 ScreenGuisCoreGuis를 숨깁니다. 여기에는 채팅, 리더보드 및 Roblox에서 포함한 기타 항목이 포함됩니다. 이 동작을 비활성화하려면 configure 호출에서 hideOtherUisfalse로 설정하세요.

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

캐릭터 이동

머천트 부스에 있는 동안 캐릭터의 이동을 방지하는 것이 유리할 수 있습니다. 이는 configure 호출에서 disableCharacterMovementtrue로 설정하여 수행할 수 있습니다.

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

API 참조

유형

아이템

머천트 부스의 아이템은 다음 키-값 쌍을 가진 사전으로 표현됩니다. 아이템은 getItems 함수 또는 itemAdded 이벤트를 통해 수집할 수 있습니다.

유형설명
assetIdnumber아이템의 카탈로그 ID, addItemAsync에 전달된 값입니다.
titlestring카탈로그에 표시되는 아이템 제목입니다.
pricenumber아이템 가격 (Robux)입니다.
descriptionstring카탈로그에 표시되는 아이템 설명입니다.
assetTypestring아이템의 액세서리 유형을 나타내는 문자열입니다.
isOwnedbool현재 플레이어가 아이템을 소유하고 있는지 여부입니다.
creatorNamestring카탈로그에 표시되는 아이템 제작자입니다.
creatorTypeEnum.CreatorType아이템의 제작자 유형입니다.

열거형

MerchBooth.Controls

머천트 부스와 상호작용하기 위한 키 및 게임패드 버튼을 사용자 정의하기 위해 setControlKeyCodes와 함께 사용됩니다.

이름요약
ProximityPrompts근접 프롬프트가 구성될 때 아이템 뷰를 열기 위한 키 및/또는 게임패드 버튼입니다.
OpenMerchBooth머천트 부스를 열기 위한 키 및/또는 게임패드 버튼입니다.
CloseMerchBooth머천트 부스를 닫기 위한 키 및/또는 게임패드 버튼입니다.
Filter카탈로그 뷰의 왼쪽 상단 영역에 표시되는 기본 필터 드롭다운을 사용하기 위한 키 및/또는 게임패드 버튼입니다.
ViewItem특정 머천트 부스 아이템 뷰를 열기 위한 키 및/또는 게임패드 버튼입니다.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1
})

함수

configure

configure(config: table)

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

설명기본값
backgroundColor창의 기본 배경색 (Color3).[0, 0, 0]
cornerRadius주 창의 모서리 반경 (UDim).(0, 16)
cornerRadiusSmall창 내부 요소의 모서리 반경 (UDim).(0, 8)
textFont가격, 설명 및 기타 일반 정보와 같은 "주 텍스트"의 글꼴 (Enum.Font).Gotham
textSize주 텍스트의 크기입니다.14
textColor주 텍스트의 색상 (Color3).[255, 255, 255]
secondaryTextColor주 텍스트의 일부 변형에 사용되는 색상 (Color3).[153, 153, 158]
headerFont창 제목에 사용되는 헤더 텍스트의 글꼴 (Enum.Font).GothamMedium
headerTextSize창 제목에 사용되는 헤더 텍스트의 크기입니다.18
titleFont아이템 세부 정보 페이지의 아이템 이름에 사용되는 제목 텍스트의 글꼴 (Enum.Font).GothamBold
titleTextSize아이템 세부 정보 페이지의 아이템 이름에 사용되는 제목 텍스트의 크기입니다.28
buttonColor아이템 뷰의 기본 구매 버튼과 같은 클릭 가능한 상태의 더 큰 버튼의 배경색 (Color3).[255, 255, 255]
buttonTextColor아이템 뷰의 기본 구매 버튼과 같은 클릭 가능한 상태의 더 큰 버튼의 텍스트 색상 (Color3).[0, 0, 0]
secondaryButtonColor카탈로그 뷰의 가격 버튼이나 Try On 버튼과 같은 더 작은 버튼의 배경색 (Color3).[34, 34, 34]
secondaryButtonTextColor카탈로그 뷰의 가격 버튼이나 Try On 버튼과 같은 더 작은 버튼의 텍스트 색상 (Color3).[255, 255, 255]
inactiveButtonColor클릭할 수 없는 상태의 모든 버튼의 배경색 (Color3).[153, 153, 158]
inactiveButtonTextColor클릭할 수 없는 상태의 모든 버튼의 텍스트 색상 (Color3).[255, 255, 255]
particleEmitterTemplate장착 시 나타나고 재생되는 선택적 사용자 정의 ParticleEmitter 인스턴스입니다.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.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)

아이템을 머천트 부스에 비동기적으로 추가하여 게임에서 구매할 수 있도록 합니다. assetId는 아이템의 자산 ID이며, productType은 아이템의 Enum.InfoType 열거형이고, hideFromCatalog는 카탈로그 뷰에서 아이템을 숨기는 데 사용할 수 있습니다.

자산게임 패스 또는 개발자 제품에 대한 사용법이 약간 다르므로 아이템 추가를 참조하세요.

Script - Add Avatar Assets
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
607702162, -- Roblox 야구 모자
4819740796, -- Robox
1374269, -- 고양이 귀
11884330, -- 너드 안경
10476359, -- 종이 모자
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId)
end)
if not success then
warn(errorMessage)
end
end
Script - Add Passes
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
4343758, -- ColdFyre 갑옷
28521575, -- 슬라임 방패
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)
end)
if not success then
warn(errorMessage)
end
end
Script - Add Developer Products
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
1236602053, -- 마나 리필
1257880672, -- 치유 물약
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)
end)
if not success then
warn(errorMessage)
end
end

getItems

getItems(): table

현재 등록된 모든 아이템을 나타내는 사전을 반환합니다. 각 키는 아이템의 자산 ID이며, 각 키의 값은 아이템입니다. 이 함수는 Script에서만 호출할 수 있습니다.

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

removeItem

removeItem(assetId: number)

addItemAsync를 통해 이전에 추가된 아이템을 등록 해제하여 카탈로그 뷰에서의 타일과 해당 아이템에 할당된 모든 근접 프롬프트를 제거합니다. 이 함수는 Script에서만 호출할 수 있습니다.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
-- 잠시 후 아이템 제거
task.wait(5)
MerchBooth.removeItem(4819740796)
end

addProximityButton

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

주어진 adornee 위에 근접 프롬프트를 추가하여 해당 자산 ID에 대한 아이템 구매 뷰를 표시하도록 트리거합니다. 이는 2D 카탈로그 뷰의 대안으로 사용될 수 있으며, 플레이어가 3D 환경에서 아이템을 발견하도록 유도합니다.

아이템은 addItemAsync를 통해 추가된 후에야 근접 버튼을 할당할 수 있습니다. removeProximityButton을 참조하여 객체에서 근접 프롬프트를 제거할 수 있습니다.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local MerchBooth = require(ReplicatedStorage.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 Workspace = game:GetService("Workspace")
local MerchBooth = require(ReplicatedStorage.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
-- 잠시 후 프롬프트 제거
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction: function): boolean

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

카탈로그 정렬을 위한 몇 가지 예는 다음과 같습니다.

가격 낮은 순
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price < b.price
end)
가격 높은 순
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price > b.price
end)
가격 낮은 순 및 알파벳 순
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.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)

머천트 부스와의 상호작용을 위한 키 및 버튼 값을 구성합니다. 첫 번째 매개변수는 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.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1,
})

openMerchBooth

openMerchBooth()

머천트 부스 창을 엽니다(닫혀 있는 경우) 및 카탈로그 뷰로 이동합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

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

openItemView

openItemView(itemId: number)

주어진 itemId의 단일 아이템 뷰로 이동하며, 현재 닫혀 있는 경우 머천트 부스 창을 엽니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

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

toggleCatalogButton

toggleCatalogButton(enabled: boolean)

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

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

isMerchBoothOpen

isMerchBoothOpen(): Tuple

카탈로그 또는 아이템 뷰가 열려 있으면 true를 반환합니다. 아이템 뷰가 열려 있으면 두 번째 값으로 아이템의 자산 ID가 반환됩니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.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()

머천트 부스 창을 닫습니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

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

isMerchBoothEnabled

isMerchBoothEnabled(): boolean

이 함수는 setEnabled와 함께 사용하여 머천트 부스가 현재 활성화되어 있는지 여부를 확인하는 데 사용할 수 있습니다. LocalScript에서만 호출할 수 있습니다.

setEnabled

setEnabled(enabled: boolean)

머천트 부스 전체가 활성화되거나 비활성화되도록 설정합니다. 비활성화되면 이 함수는 모든 UI를 제거하고, 근접 프롬프트를 포함하여 모든 이벤트를 연결 해제합니다. 이 함수는 LocalScript에서만 호출할 수 있습니다.

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

이벤트

itemAdded

addItemAsync를 통해 아이템이 추가될 때 발생합니다. 이 이벤트는 Script에서만 연결할 수 있습니다.

매개변수
assetId: number아이템 자산 ID입니다.
itemInfo: tableprice 또는 title과 같은 아이템 정보의 사전입니다.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemAdded:Connect(function(assetId, itemInfo)
print("자산 ID가", assetId인 아이템이 추가되었습니다.")
print(itemInfo)
end)

itemRemoved

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

매개변수
assetId: number아이템 자산 ID입니다.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemRemoved:Connect(function(assetId)
print("자산 ID가", assetId인 아이템이 제거되었습니다.")
end)

merchBoothOpened

카탈로그 또는 아이템 세부 정보 뷰가 열릴 때 발생합니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothOpened:Connect(function()
print("부스 뷰가 열렸습니다.")
end)

merchBoothClosed

카탈로그 또는 아이템 세부 정보 뷰가 닫힐 때 발생합니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothClosed:Connect(function()
print("부스 뷰가 닫혔습니다.")
end)

catalogViewOpened

카탈로그 뷰가 열릴 때 발생합니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewOpened:Connect(function()
print("카탈로그 뷰가 열렸습니다.")
end)

catalogViewClosed

카탈로그 뷰가 닫힐 때 발생합니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewClosed:Connect(function()
print("카탈로그 뷰가 닫혔습니다.")
end)

itemViewOpened

아이템 세부 정보 뷰가 열릴 때 발생합니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewOpened:Connect(function()
print("아이템 뷰가 열렸습니다.")
end)

itemViewClosed

아이템 세부 정보 뷰가 닫힐 때 발생합니다.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewClosed:Connect(function()
print("아이템 뷰가 닫혔습니다.")
end)
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.