บูธขายสินค้า

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

โมดูล MerchBooth สำหรับนักพัฒนา ช่วยให้คุณสามารถเสนอ สินทรัพย์ของอวาตาร์, บัตรผ่าน, และ ผลิตภัณฑ์สำหรับนักพัฒนา เพื่อขายโดยตรงภายในประสบการณ์ของคุณ ผู้เล่นสามารถเรียกดูสินค้าได้, ดูตัวอย่างสินทรัพย์บนอวาตาร์ของตนเอง, ซื้อสินค้า, และใช้หรือสวมใส่ได้ทันที — ทั้งหมดนี้โดยไม่ต้องออกจากประสบการณ์ของคุณ ซึ่งสามารถช่วยให้คุณ สร้างรายได้ จากประสบการณ์ของคุณและได้รับรายได้จากค่าคอมมิชชั่น 40% ที่เกี่ยวข้องกับการขายสินค้าของผู้สร้างคนอื่น

การใช้งานโมดูล

การติดตั้ง

ในการใช้โมดูล MerchBooth ในประสบการณ์:

  1. จากเมนู หน้าต่าง ของ Studio หรือแถบเครื่องมือ หน้าแรก, เปิด Toolbox และเลือกแท็บ Creator Store.

  2. ตรวจสอบให้แน่ใจว่าได้เลือกการจัดเรียง โมเดล, จากนั้นคลิกปุ่ม ดูทั้งหมด สำหรับ หมวดหมู่.

  3. ค้นหาและคลิกที่ไอคอน Packages.

  4. ค้นหาโมดูล Merch Booth และคลิกที่มัน หรือดึงและวางไปที่มุมมอง 3 มิติ.

  5. ในหน้าต่าง Explorer, ย้ายโมเดล 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
    })

เพิ่มสินค้า

บูธขายสินค้าจะขาดอะไรไปได้ถ้าไม่มีสินค้า? ส่วนถัดไปจะอธิบายวิธีการเพิ่ม สินทรัพย์ของอวาตาร์, บัตรผ่าน, และ ผลิตภัณฑ์สำหรับนักพัฒนา ลงในบูธขายสินค้าของคุณ

สินทรัพย์อวาตาร์

สินค้าต่างๆ เช่น เสื้อผ้าและอุปกรณ์เสริม ต้องถูกเพิ่มผ่าน asset ID ที่ตั้งอยู่ในหน้ารายละเอียดของรายการใน Avatar Shop.

  1. สร้าง Script ภายใน ServerScriptService และวางโค้ดต่อไปนี้ลงไป.

    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. คัดลอก ID สินค้าจาก URL เว็บไซต์ Avatar Shop. ตัวอย่างเช่น ID ของ Roblox Baseball Cap คือ 607702162.

  3. วางแต่ละ ID ที่คัดลอกมาในรายการที่คั่นด้วยลูกน้ำภายในตาราง items. โดยเริ่มต้น สินค้าจะแสดงในหน้าต่างแค็ตตาล็อกในลำดับตัวอักษร แต่คุณสามารถปรับแต่งการจัดเรียงด้วยฟังก์ชัน setCatalogSort.

    Script - Add Avatar Assets

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

บัตรผ่าน

การเพิ่ม บัตรผ่าน ต้องการ ID ของบัตรผ่านซึ่งสามารถหาได้ใน แดชบอร์ดผู้สร้าง.

  1. สร้าง Script ภายใน ServerScriptService และวางโค้ดต่อไปนี้.

    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. เลื่อนเมาส์ไปที่รูปขนาดย่อของบัตรผ่าน, คลิกปุ่ม และเลือก คัดลอก Asset ID จากเมนูบริบท.

  5. วางแต่ละ ID ที่คัดลอกมาในรายการที่คั่นด้วยลูกน้ำภายในตาราง items และ รวม Enum.InfoType.GamePass เป็นพารามิเตอร์ที่สองสำหรับ addItemAsync เพื่อระบุว่าสินค้าเหล่านี้เป็นบัตรผ่าน. โดยเริ่มต้น สินค้าจะปรากฏในหน้าต่างแค็ตตาล็อกในลำดับตัวอักษร แต่การจัดเรียงสามารถปรับเปลี่ยนได้ผ่าน setCatalogSort.

    Script - Add Passes

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    4343758, -- ColdFyre Armor
    28521575, -- Slime Shield
    }
    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. สร้าง Script ภายใน ServerScriptService และวางโค้ดต่อไปนี้.

    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. เลื่อนเมาส์ไปที่รูปขนาดย่อของผลิตภัณฑ์, คลิกปุ่ม และเลือก คัดลอก Asset ID จากเมนูบริบท.

  5. วางแต่ละ ID ที่คัดลอกมาในรายการที่คั่นด้วยลูกน้ำภายในตาราง items และ รวม Enum.InfoType.Product เป็นพารามิเตอร์ที่สองสำหรับ addItemAsync เพื่อระบุว่าสินค้าเหล่านี้เป็นผลิตภัณฑ์สำหรับนักพัฒนา. โดยเริ่มต้น สินค้าจะปรากฏในหน้าต่างแค็ตตาล็อกในลำดับตัวอักษร แต่คุณสามารถปรับเปลี่ยนการจัดเรียงได้ด้วยฟังก์ชัน setCatalogSort.

    Script - Add Developer Products

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    1236602053, -- Mana Refill
    1257880672, -- Healing Potion
    }
    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 ของส่วนให้เป็นค่าต่ำสุดเพื่อซ่อนมันจากผู้เล่นในประสบการณ์ นอกจากนี้ยังปิดคุณสมบัติ CanCollide และ CanQuery ของมัน เพื่อไม่ให้วัตถุชนกันกับมันและไม่ให้การตรวจสอบเรย์ตรวจจับมัน.

  4. แทรก LocalScript ใหม่ภายใต้ StarterPlayerScripts.

  5. ในสคริปต์ใหม่, วางโค้ดต่อไปนี้ซึ่งใช้เหตุการณ์ Touched และ TouchEnded เพื่อตรวจจับเมื่อมีตัวละครเข้า/ออกจากพื้นที่ และเรียก openMerchBooth และ closeMerchBooth เพื่อเปิด/ปิด 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)

Prompt ตามระยะทาง

แทนที่จะใช้มุมมองแค็ตตาล็อก 2 มิติ คุณสามารถเพิ่ม prompt ตามระยะทาง บนวัตถุในประสบการณ์ สิ่งนี้กระตุ้นให้ผู้เล่นค้นหาสินค้าในสภาพแวดล้อม 3 มิติ, ดูตัวอย่างสินค้าบนอวาตาร์ของตนเอง, ซื้อสินค้า, และสวมใส่ได้ทันที ดู addProximityButton สำหรับรายละเอียด.

เปลี่ยนเอฟเฟกต์การสวมใส่

โดยเริ่มต้น บูธขายสินค้าจะแสดงเอฟเฟกต์ประกายทั่วไปเมื่อผู้เล่นสวมใส่สินค้าจากมัน เพื่อเปลี่ยนเอฟเฟกต์ ตั้งค่า particleEmitterTemplate เป็นอินสแตนซ์ของ ParticleEmitter ของคุณในการเรียก configure.

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

โดยเริ่มต้น บูธขายสินค้าจะซ่อน ScreenGuis และ CoreGuis ทั้งหมดเมื่อ UI ของมันปรากฏขึ้น รวมถึงแชท, กระดานผู้นำ, และอื่นๆ ที่รวมอยู่ใน Roblox หากคุณต้องการปิดการทำงานนี้ให้ตั้งค่า hideOtherUis เป็น false ในการเรียก configure.

LocalScript - ConfigureMerchBooth

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

การเคลื่อนไหวของตัวละคร

อาจเป็นประโยชน์ในการป้องกันไม่ให้ตัวละครเคลื่อนไหวเมื่อพวกเขาอยู่ในบูธขายสินค้า สามารถทำได้โดยการตั้งค่า disableCharacterMovement เป็น true ในการเรียก configure.

LocalScript - ConfigureMerchBooth

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

API Reference

ประเภท

รายการ

รายการในบูธขายสินค้าได้รับการแทนที่ด้วยพจนานุกรมที่มีคู่คีย์-ค่า ดังนี้ โดยสามารถรวบรวมรายการผ่านฟังก์ชัน getItems หรือเหตุการณ์ itemAdded.

คีย์ประเภทคำบรรยาย
assetIdnumberID แค็ตตาล็อกของรายการ, ใช้สำหรับ addItemAsync.
titlestringชื่อรายการตามที่ปรากฏในแค็ตตาล็อก.
pricenumberราคาของรายการใน Robux.
descriptionstringคำบรรยายของรายการตามที่ปรากฏในแค็ตตาล็อก.
assetTypestringสตริงที่แทนประเภทอุปกรณ์เสริมของรายการ.
isOwnedboolผู้เล่นปัจจุบันมีรายการนี้อยู่หรือไม่.
creatorNamestringชื่อผู้สร้างรายการตามที่แสดงในแค็ตตาล็อก.
creatorTypeEnum.CreatorTypeประเภทของผู้สร้างสำหรับรายการ.

Enums

MerchBooth.Controls

ใช้ร่วมกับ setControlKeyCodes เพื่อปรับเปลี่ยนปุ่มและปุ่มเกมแพดสำหรับการโต้ตอบกับบูธขายสินค้า.

ชื่อสรุป
ProximityPromptsปุ่มและ/หรือปุ่มเกมแพดที่ใช้เปิดมุมมองรายการเมื่อมีการตั้งค่า proximity prompts.
OpenMerchBoothปุ่มและ/หรือปุ่มเกมแพดที่ใช้เปิดบูธขายสินค้า.
CloseMerchBoothปุ่มและ/หรือปุ่มเกมแพดที่ใช้ปิดบูธขายสินค้า.
Filterปุ่มและ/หรือปุ่มเกมแพดที่ใช้ฟังก์ชัน 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)

Overrides default client-side configuration options through the following keys/values in the config table. ฟังก์ชันนี้สามารถเรียกได้จาก 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สีพื้นหลังสำหรับปุ่มขนาดเล็กเช่นปุ่มราคาในมุมมองแค็ตตาล็อกหรือปุ่ม ลองใส่ (Color3).[34, 34, 34]
secondaryButtonTextColorสีข้อความสำหรับปุ่มขนาดเล็กเช่นปุ่มราคาในมุมมองแค็ตตาล็อกหรือปุ่ม ลองใส่ (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 Baseball Cap
4819740796, -- Robox
1374269, -- Kitty Ears
11884330, -- Nerd Glasses
10476359, -- Paper Hat
}
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 Armor
28521575, -- Slime Shield
}
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, -- Mana Refill
1257880672, -- Healing Potion
}
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 โดยการลบแผ่นในมุมมองแค็ตตาล็อกและ prompt proximity prompts ที่เชื่อมโยงกับมัน ฟังก์ชันนี้สามารถเรียกได้จาก 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)

เพิ่ม prompt ตามระยะทาง บน adornee ที่กำหนดซึ่งจะกระตุ้นการแสดงมุมมองการซื้อของรายการที่มี ID สินค้าตามที่กำหนด สิ่งนี้สามารถใช้เป็นทางเลือกสำหรับมุมมองแค็ตตาล็อก 2 มิติ กระตุ้นให้ผู้เล่นค้นหาสินค้าในสภาพแวดล้อม 3 มิติ

โปรดทราบว่ารายการต้องถูกเพิ่มผ่าน addItemAsync ก่อนถึงจะสามารถกำหนดปุ่ม proximity ให้กับมันได้ ดู removeProximityButton เพื่อยกเลิกการทำ prompt ระยะใกล้จากวัตถุ.

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)

ลบ prompt ตามระยะทาง ที่สร้างผ่าน 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
-- หลังจากเวลาผ่านไป, ลบ prompt
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction: function): boolean

ตั้งค่าฟังก์ชันการจัดเรียง sortFunction ที่จะใช้ในมุมมองแค็ตตาล็อก ฟังก์ชันการจัดเรียงที่ให้มาสามารถใช้ตรรกะที่อิงจากข้อมูล รายการ เช่น ราคา หรือ ชื่อ. ฟังก์ชันนี้สามารถเรียกได้จาก LocalScript เท่านั้น.

นี่คือตัวอย่างการจัดเรียงแค็ตตาล็อก:

Price Low-to-High

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

กำหนดค่าแป้นพิมพ์และปุ่มสำหรับการโต้ตอบกับบูธขายสินค้า พารามิเตอร์แรกต้องเป็น enum MerchBooth.Controls และพารามิเตอร์ที่สองเป็นตารางที่ประกอบด้วยคีย์ keyboard และ/หรือ gamepad พร้อมกับ enum Enum.KeyCode ที่เกี่ยวข้อง.

Enum (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)

เปิด/ปิดปุ่มแค็ตตาล็อกที่ด้านขวาของหน้าจอ สิ่งนี้มีประโยชน์เมื่อเรียกใช้งาน ปุ่มที่กำหนดเอง หรือควบคุมการแสดงบูธขายสินค้าถึง พื้นที่ หรือ prompt ตามระยะทาง. สามารถเรียกใช้ฟังก์ชันนี้จาก 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 ทั้งหมด รวมถึง prompt ตามระยะทาง และตัดการเชื่อมโยงเหตุการณ์ทั้งหมด. ฟังก์ชันนี้สามารถเรียกได้จาก 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: numberID สินค้าของรายการ.
itemInfo: tableพจนานุกรมของข้อมูล รายการ เช่น ราคา หรือ ชื่อ.
Script

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

itemRemoved

เกิดขึ้นเมื่อมีการลบรายการผ่าน removeItem. เหตุการณ์นี้เชื่อมโยงได้เฉพาะใน Script.

พารามิเตอร์
assetId: numberID สินค้าของรายการ.
Script

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

merchBoothOpened

เกิดขึ้นเมื่อเปิดมุมมองแค็ตตาล็อก หรือ มุมมองรายละเอียดรายการ.

LocalScript

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

merchBoothClosed

เกิดขึ้นเมื่อปิดมุมมองแค็ตตาล็อก หรือ มุมมองรายละเอียดรายการ.

LocalScript

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

catalogViewOpened

เกิดขึ้นเมื่อเปิดมุมมองแค็ตตาล็อก.

LocalScript

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

catalogViewClosed

เกิดขึ้นเมื่อปิดมุมมองแค็ตตาล็อก.

LocalScript

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

itemViewOpened

เกิดขึ้นเมื่อเปิดมุมมองรายละเอียดรายการ.

LocalScript

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

itemViewClosed

เกิดขึ้นเมื่อปิดมุมมองรายละเอียดรายการ.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewClosed:Connect(function()
print("Item view closed")
end)
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ