MerchBooth 개발자 모듈을 사용하면 경험 내에서 직접 판매할 아바타 애셋, 출입증, 개발자 제품을 제공할 수 있습니다. 플레이어는 체험을 떠나지 않고도 아이템 탐색, 자신의 아바타에서 자산 미리 보기, 아이템 구매, 즉시 사용 또는 장착을 해 볼 수 있습니다. 이를 통해 체험을 수익화하고, 다른 크리에이터의 아이템 판매에 40%의 제휴 수수료를 부과해 수익을 얻을 수 있습니다.
모듈 사용
설치
체험 내에서 MerchBooth 모듈을 사용하려면:
보기 탭에서 도구 상자를 열고 마켓플레이스 탭을 선택합니다.
모델 정렬이 선택되었는지 확인한 다음 카테고리에서 모두 보기 버튼을 클릭합니다.
DEV MODULES 타일을 찾아 클릭합니다.
Merch Booth 모듈을 찾아 클릭하거나 3D 보기로 끌어다 놓습니다.
탐색기 창에서 전체 MerchBooth 모델을 ServerScriptService로 이동시킵니다. 체험을 실행하면 모듈이 다양한 서비스에 배포되고 실행되기 시작합니다.
구성
이러한 모듈은 대부분의 사용 사례에서 작동하도록 미리 구성되어 있지만, 구성 함수를 통해 더욱 쉽게 사용자 지정할 수 있습니다. 예를 들어, 더 밝은 테마를 생성하거나 카탈로그 보기 왼쪽 상단 영역의 기본 필터 버튼을 비활성화하려면 다음을 수행하십시오.
StarterPlayerScripts에서 새 LocalScript을(를) 생성하고 ConfigureMerchBooth로 이름을 바꿉니다.
새로운 스크립트에 다음의 코드를 붙여 넣습니다.
LocalScript - ConfigureMerchBoothlocal 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를 통해 추가해야 합니다.
ServerScriptService 내에서 Script을(를) 생성하고 다음 코드를 붙여 넣습니다.
Script - Add Avatar Assetslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))local items = {}for _, assetId in ipairs(items) dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenprint(errorMessage)endendAvatar Shop 웹사이트 URL에서 아이템 자산 ID를 복사합니다. 예를 들어, Roblox Baseball Cap의 ID는 607702162입니다.
복사한 각 ID를 items 테이블 내의 쉼표로 구분된 목록에 붙여 넣습니다. 기본적으로 아이템은 카탈로그 보기에 알파벳 순으로 표시되지만 setCatalogSort를 사용하여 정렬을 사용자 지정할 수 있습니다.
Script - Add Avatar Assetslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))local items = {607702162, -- Roblox Baseball Cap4819740796, -- Robox1374269, -- Kitty Ears11884330, -- Nerd Glasses10476359, -- Paper Hat}for _, assetId in ipairs(items) dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenprint(errorMessage)endend
패스
패스를 추가하려면 크리에이터 대시보드에서 찾을 수 있는 패스 ID가 필요합니다.
ServerScriptService 내에서 Script을(를) 생성하고 다음 코드를 붙여 넣습니다.
Script - Add Passeslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))local items = {}for _, assetId in ipairs(items) dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenprint(errorMessage)endend크리에이터 대시보드로 이동하여 체험을 선택합니다.
왼쪽 열에서 연결된 아이템을 클릭한 다음 패스를 선택합니다.
패스를 마우스 오른쪽 버튼으로 클릭하고 애셋 ID 복사를 선택합니다.
addItemAsync의 두 번째 매개 변수로 Enum.InfoType.GamePass을(를) 포함시켜 아이템이 출입증이라는 것을 표시합니다. 기본적으로 아이템은 카탈로그 보기에 알파벳순으로 표시되지만, setCatalogSort를 사용해 정렬을 사용자 지정할 수 있습니다.
Script - Add Passeslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))local items = {4343758, -- ColdFyre Armor28521575, -- Slime Shield}for _, assetId in ipairs(items) dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)end)if not success thenprint(errorMessage)endend
개발자 제품
개발자 상품을 추가하려면 크리에이터 대시보드에서 찾을 수 있는 상품 ID가 필요합니다.
ServerScriptService 내에서 Script을(를) 생성하고 다음 코드를 붙여 넣습니다.
Script - Add Developer Productslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))local items = {}for _, assetId in ipairs(items) dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenprint(errorMessage)endend크리에이터 대시보드로 이동하여 체험을 선택합니다.
왼쪽 열에서 연결된 아이템을 클릭한 다음, 개발자 제품을 선택합니다.
제품을 마우스 오른쪽 버튼으로 클릭하고, 자산 ID 복사를 선택합니다.
addItemAsync의 두 번째 매개 변수로 Enum.InfoType.Product을(를) 포함시켜 아이템이 개발자 제품이라는 것을 표시합니다. 기본적으로 아이템은 카탈로그 보기에 알파벳 순으로 표시되지만 setCatalogSort를 사용하여 정렬을 사용자 지정할 수 있습니다.
Script - Add Developer Productslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))local items = {1236602053, -- Mana Refill1257880672, -- Healing Potion}for _, assetId in ipairs(items) dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)end)if not success thenprint(errorMessage)endend
사용자 지정 카탈로그 버튼
기본적으로는 오른쪽 카탈로그 버튼을 통해 사용자는 언제든지 부스를 열 수 있습니다.
경우에 따라 이러한 버튼을 제거하고 원하는 대로 연결하는 것도 유용합니다.
버튼 및 텍스트 입력 항목에 설명된 대로 새 버튼을 생성합니다.
단추 개체의 자식 개체로 LocalScript를 생성합니다.
새로운 스크립트에 다음의 코드를 붙여 넣습니다.
LocalScript - Custom Catalog Buttonlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))-- Remove the default catalog buttonMerchBooth.toggleCatalogButton(false)-- Connect the custom buttonscript.Parent.Activated:Connect(function()MerchBooth.openMerchBooth()end)
상점 거래 가능 지역
체험 내에서 구매를 유도하는 유용한 방법 중 하나는 사용자가 지역에 들어왔을 때 Merch Booth를 자동으로 표시하는 것입니다.
상점 거래 가능 지역을 생성하려면:
감지 영역을 포함하는 Anchored 블록을 생성합니다.
보기 탭에서 액세스할 수 있는 태그 편집기를 사용하여, CollectionService이(가) 감지할 수 있도록 태그 ShopRegion을(를) 블록에 적용합니다.
개체가 물리적으로 충돌하지 않고 레이캐스트에 감지되지 않도록 부품의 CanCollide 및 CanQuery 속성을 비활성화합니다. 또한 체험 내에서 이를 사용자에게서 숨기려면 Transparency을(를) 최대로 설정하십시오.
StarterPlayerScripts 이하에 LocalScript을(를) 새로 삽입합니다.
새 스크립트에서 다음 코드를 붙여 넣어, Touched 및 TouchEnded 이벤트를 사용하여 사용자의 지역 출입을 감지하게 하고 openMerchBooth 및 closeMerchBooth를 호출하여 부스 GUI를 열고 닫을 수 있도록 합니다.
LocalScriptlocal Players = game:GetService("Players")local ReplicatedStorage = game:GetService("ReplicatedStorage")local CollectionService = game:GetService("CollectionService")local MerchBooth = require(ReplicatedStorage:WaitForChild("MerchBooth"))-- Remove the default catalog buttonMerchBooth.toggleCatalogButton(false)-- Iterate through all tagged partsfor _, region in ipairs(CollectionService:GetTagged("ShopRegion")) doregion.Touched:Connect(function(otherPart)local character = Players.LocalPlayer.Characterif character and character:FindFirstChild("HumanoidRootPart") == otherPart thenMerchBooth.openMerchBooth()endend)region.TouchEnded:Connect(function(otherPart)local character = Players.LocalPlayer.Characterif character and character:FindFirstChild("HumanoidRootPart") == otherPart thenMerchBooth.closeMerchBooth()endend)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.SpheremyParticleEmitter.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 | 문자열 | 아이템의 액세서리 유형을 나타내는 문자열. |
isOwned | void | 현재 사용자가 아이템을 소유하고 있는지 여부. |
creatorName | 문자열 | 카탈로그에 표시된 아이템 생성자. |
creatorType | Enum.CreatorType | 아이템 생성자 유형. |
열거형
MerchBooth.Controls
setControlKeyCodes와 함께 사용하여 Merch Booth와 상호 작용하기 위한 키 및 게임 패드 버튼을 사용자 지정.
이름 | 요약 |
---|---|
ProximityPrompts | 근접 프롬프트가 구성된 경우 아이템 보기를 여는 키 또는 게임 패드 버튼. |
OpenMerchBooth | Merch Booth를 여는 키 또는 게임 패드 버튼. |
CloseMerchBooth | Merch 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 |
proximityButtonExclusivity | Enum.ProximityPromptExclusivity 동시에 표시할 수 있는 프롬프트를 지정합니다. | OnePerbutton |
proximityButtonOffset | 프롬프트의 UI에 적용된 픽셀 오프셋(Vector2). | (0, 0) |
proximityButtonPulseCount | 중지하기 전에 근접 버튼 주변에서 발생하는 '펄스'의 수. | 3 |
행동
키 | 설명 | 기본 |
---|---|---|
useFilters | 카탈로그에 표시된 필터 버튼을 켜거나 끕니다. | 참 |
disableCharacterMovement | true인 경우, Merch Booth가 열려 있는 동안 캐릭터가 움직이지 못하게 합니다. | 거짓 |
hideOtherUis | true인 경우, Merch Booth는 UI가 나타날 때 ScreenGuis와(과) CoreGuis을(를) 모두 숨깁니다. | 참 |
closeWhenFarFromPrompt | true인 경우 및 플레이어가 근접 프롬프트를 통해 아이템 보기를 연 경우, 플레이어가 활성화 거리보다 프롬프트 개체에서 더 멀리 이동하면 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.ProximityPrompts | keyboard = Enum.KeyCode.E gamepad = Enum.KeyCode.ButtonY |
MerchBooth.Controls.OpenMerchBooth | gamepad = Enum.KeyCode.ButtonY |
MerchBooth.Controls.CloseMerchBooth | gamepad = Enum.KeyCode.ButtonB |
MerchBooth.Controls.Filter | gamepad = Enum.KeyCode.ButtonX |
MerchBooth.Controls.ViewItem | gamepad = 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 thenMerchBooth.setEnabled(false)end
이벤트
itemAdded
itemAdded(assetId:number, itemInfo:table):RBXScriptSignal
addItemAsync를 통해 아이템이 추가되면 발동됩니다. 해당 이벤트는 Script에서만 연결할 수 있습니다.
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)