Kios Merchandise

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Modul MerchBooth pengembang memungkinkan Anda menawarkan aset avatar, pass, dan produk pengembang untuk dijual langsung di dalam permainan Anda. Pemain dapat menjelajahi item, melihat pratinjau aset di avatar mereka sendiri, membeli item, dan langsung menggunakannya atau mengenakannya — semua tanpa meninggalkan permainan Anda. Ini dapat membantu Anda memonetisasi permainan Anda dan mendapatkan pendapatan melalui biaya afiliasi 40% yang terkait dengan penjualan item dari pembuat lain.

Penggunaan modul

Instalasi

Untuk menggunakan modul MerchBooth dalam permainan:

  1. Dari menu Jendela Studio atau toolbar tab Beranda, buka Toolbox dan pilih tab Toko Pembuat.

  2. Pastikan pengurutan Model dipilih, lalu klik tombol Lihat Semua untuk Kategori.

  3. Temukan dan klik ubin Paket.

  4. Temukan modul Kios Merchandise dan klik, atau seret dan lepas ke dalam tampilan 3D.

  5. Di jendela Explorer, pindahkan seluruh model MerchBooth ke ReplicatedStorage. Setelah menjalankan permainan, modul akan mulai berjalan.

Konfigurasi

Modul ini sudah dikonfigurasi untuk bekerja pada sebagian besar kasus penggunaan, tetapi dapat dengan mudah disesuaikan melalui fungsi configure. Misalnya, untuk membuat tema yang lebih ringan dan menonaktifkan tombol Filter default di area kiri atas tampilan katalog:

  1. Di StarterPlayerScripts, buat LocalScript baru dan ganti namanya menjadi ConfigureMerchBooth.

  2. Tempelkan kode berikut ke dalam skrip baru.

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

Tambahkan item

Apa itu kios merchandise tanpa merchandise? Bagian berikut menjelaskan cara menambahkan aset avatar, pass, dan produk pengembang ke kios merchandise Anda.

Aset avatar

Item seperti pakaian dan aksesori harus ditambahkan melalui ID aset mereka yang terletak di halaman detail item di Toko Avatar.

  1. Buat Script di dalam ServerScriptService dan tempelkan kode berikut.

    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. Salin ID aset item dari URL situs web Toko Avatar. Misalnya, ID dari Topi Baseball Roblox adalah 607702162.

  3. Tempelkan setiap ID yang disalin ke dalam daftar yang dipisahkan koma di dalam tabel items. Secara default, item muncul di tampilan katalog dalam urutan alfabetis, tetapi Anda dapat menyesuaikan pengurutan menggunakan setCatalogSort.

    Script - Add Avatar Assets
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    607702162, -- Topi Baseball Roblox
    4819740796, -- Robox
    1374269, -- Telinga Kucing
    11884330, -- Kacamata Konyol
    10476359, -- Topi Kertas
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end

Pass

Menambahkan pass memerlukan ID pass yang dapat ditemukan di Dasbor Pembuat.

  1. Buat Script di dalam ServerScriptService dan tempelkan kode berikut.

    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. Navigasikan ke Dasbor Pembuat dan pilih permainan.

  3. Di kolom kiri, di bawah Monetisasi, pilih Pass.

  4. Arahkan mouse ke thumbnail pass, klik tombol dan pilih Salin ID Aset dari menu konteks.

  5. Tempelkan setiap ID yang disalin ke dalam daftar yang dipisahkan koma di dalam tabel items dan sertakan Enum.InfoType.GamePass sebagai parameter kedua untuk addItemAsync untuk menunjukkan bahwa item tersebut adalah pass. Secara default, item akan muncul di tampilan katalog dalam urutan alfabetis, tetapi pengurutan dapat disesuaikan melalui setCatalogSort.

    Script - Add Passes
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    4343758, -- Armor ColdFyre
    28521575, -- Perisai Slime
    }
    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

Produk Pengembang

Menambahkan produk pengembang memerlukan ID produk yang dapat ditemukan di Dasbor Pembuat.

  1. Buat Script di dalam ServerScriptService dan tempelkan kode berikut.

    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. Navigasikan ke Dasbor Pembuat dan pilih permainan.

  3. Di kolom kiri, di bawah Monetisasi, pilih Produk Pengembang.

  4. Arahkan mouse ke thumbnail produk, klik tombol dan pilih Salin ID Aset dari menu konteks.

  5. Tempelkan setiap ID yang disalin ke dalam daftar yang dipisahkan koma di dalam tabel items dan sertakan Enum.InfoType.Product sebagai parameter kedua untuk addItemAsync untuk menunjukkan bahwa item tersebut adalah produk pengembang. Secara default, item muncul di tampilan katalog dalam urutan alfabetis, tetapi Anda dapat menyesuaikan pengurutan menggunakan setCatalogSort.

    Script - Add Developer Products
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    1236602053, -- Pengisian Mana
    1257880672, -- Ramuan Penyembuhan
    }
    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

Tombol katalog kustom

Secara default, tombol katalog di sisi kanan memungkinkan pemain membuka kios kapan saja.

Dalam beberapa kasus, mungkin berguna untuk menghapus tombol ini dan menghubungkan tombol Anda sendiri:

  1. Buat tombol baru seperti yang dijelaskan dalam Tombol.

  2. Buat LocalScript sebagai anak dari objek tombol.

  3. Tempelkan kode berikut ke dalam skrip baru.

    LocalScript - Custom Catalog Button
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- Hapus tombol katalog default
    MerchBooth.toggleCatalogButton(false)
    -- Hubungkan tombol kustom
    script.Parent.Activated:Connect(function()
    MerchBooth.openMerchBooth()
    end)

Wilayah yang dapat dibeli

Cara yang berguna untuk mendorong pembelian dalam permainan Anda adalah dengan secara otomatis menampilkan kios merchandise ketika pemain memasuki area.

Untuk membuat wilayah yang dapat dibeli:

  1. Buat blok Anchored yang mencakup wilayah deteksi. Pastikan blok tersebut cukup tinggi untuk bertabrakan dengan PrimaryPart dari model karakter (HumanoidRootPart secara default).

    Blok untuk mendeteksi ketika pemain mendekati depan meja toko
  2. Menggunakan bagian Tag dari properti blok, terapkan tag ShopRegion pada blok agar CollectionService mendeteksinya.

  3. Atur Transparency bagian ke maksimum untuk menyembunyikannya dari pemain dalam permainan. Juga nonaktifkan properti CanCollide dan CanQuery sehingga objek tidak bertabrakan secara fisik dengannya dan raycast tidak mendeteksinya.

  4. Sisipkan LocalScript baru di bawah StarterPlayerScripts.

  5. Dalam skrip baru, tempelkan kode berikut yang menggunakan peristiwa Touched dan TouchEnded untuk mendeteksi ketika karakter memasuki/meninggalkan wilayah dan memanggil openMerchBooth dan closeMerchBooth untuk membuka/menutup GUI kios.

    LocalScript
    local Players = game:GetService("Players")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local CollectionService = game:GetService("CollectionService")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- Hapus tombol katalog default
    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
    -- Iterasi melalui wilayah toko yang ditandai yang ada
    for _, region in CollectionService:GetTagged("ShopRegion") do
    setupRegion(region)
    end
    -- Deteksi ketika wilayah toko yang tidak disiarkan disiarkan
    CollectionService:GetInstanceAddedSignal("ShopRegion"):Connect(setupRegion)

Prompt kedekatan

Sebagai alternatif untuk tampilan katalog 2D, Anda dapat menambahkan prompt kedekatan di atas objek dalam permainan. Ini mendorong pemain untuk menemukan item di lingkungan 3D, melihat pratinjau mereka di avatar mereka sendiri, membelinya, dan langsung mengenakannya. Lihat addProximityButton untuk detail.

Ubah efek equip

Secara default, kios merchandise menunjukkan efek kilau umum ketika pemain mengenakan item darinya. Untuk mengubah efek tersebut, atur particleEmitterTemplate ke instansi ParticleEmitter Anda sendiri dalam panggilan 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
})

Visibilitas GUI

Secara default, kios merchandise menyembunyikan semua ScreenGuis dan CoreGuis ketika UI-nya muncul, termasuk obrolan, papan peringkat, dan lainnya yang disertakan oleh Roblox. Jika Anda ingin menonaktifkan perilaku ini, atur hideOtherUis ke false dalam panggilan configure.

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

Gerakan karakter

Mencegah karakter bergerak saat mereka berada di kios merchandise bisa menguntungkan. Ini dapat dilakukan dengan mengatur disableCharacterMovement ke true dalam panggilan configure.

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

Referensi API

Tipe

Item

Item di kios merchandise direpresentasikan oleh sebuah kamus dengan pasangan kunci-nilai berikut. Item dapat dikumpulkan melalui fungsi getItems atau peristiwa itemAdded.

KunciTipeDeskripsi
assetIdnumberID Katalog item, seperti yang diteruskan ke addItemAsync.
titlestringJudul item seperti yang muncul di katalog.
pricenumberHarga item dalam Robux.
descriptionstringDeskripsi item seperti yang muncul di katalog.
assetTypestringString yang mewakili jenis aksesori item.
isOwnedboolApakah pemain saat ini memiliki item tersebut.
creatorNamestringPembuat item seperti yang ditampilkan di katalog.
creatorTypeEnum.CreatorTypeJenis pembuat untuk item tersebut.

Enums

MerchBooth.Controls

Digunakan bersama dengan setControlKeyCodes untuk menyesuaikan tombol dan tombol gamepad untuk berinteraksi dengan kios merchandise.

NamaRingkasan
ProximityPromptsTombol dan/atau tombol gamepad untuk membuka tampilan item ketika prompt kedekatan dikonfigurasi.
OpenMerchBoothTombol dan/atau tombol gamepad untuk membuka kios merchandise.
CloseMerchBoothTombol dan/atau tombol gamepad untuk menutup kios merchandise.
FilterTombol dan/atau tombol gamepad untuk menggunakan dropdown Filter default di area kiri atas tampilan katalog.
ViewItemTombol dan/atau tombol gamepad untuk membuka tampilan item kios tertentu.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1
})

Fungsi

configure

configure(config: table)

Mengganti opsi konfigurasi sisi klien default melalui kunci/nilai berikut dalam tabel config. Fungsi ini hanya dapat dipanggil dari LocalScript.

KunciDeskripsiDefault
backgroundColorWarna latar belakang utama jendela (Color3).[0, 0, 0]
cornerRadiusRadius sudut untuk jendela utama (UDim).(0, 16)
cornerRadiusSmallRadius sudut untuk elemen di dalam jendela (UDim).(0, 8)
textFontFont dari "teks utama" seperti harga, deskripsi, dan informasi umum lainnya (Enum.Font).Gotham
textSizeUkuran teks utama.14
textColorWarna teks utama (Color3).[255, 255, 255]
secondaryTextColorWarna yang digunakan untuk beberapa variasi teks utama (Color3).[153, 153, 158]
headerFontFont dari teks header yang digunakan untuk judul jendela (Enum.Font).GothamMedium
headerTextSizeUkuran teks header yang digunakan untuk judul jendela.18
titleFontFont dari teks judul yang digunakan untuk nama item di halaman detail item (Enum.Font).GothamBold
titleTextSizeUkuran teks judul yang digunakan untuk nama item di halaman detail item.28
buttonColorWarna latar belakang untuk tombol yang lebih besar dalam keadaan dapat diklik, seperti tombol pembelian utama di tampilan item (Color3).[255, 255, 255]
buttonTextColorWarna teks untuk tombol yang lebih besar dalam keadaan dapat diklik, seperti tombol pembelian utama di tampilan item (Color3).[0, 0, 0]
secondaryButtonColorWarna latar belakang untuk tombol yang lebih kecil seperti tombol harga di tampilan katalog atau tombol Coba Di Kepala (Color3).[34, 34, 34]
secondaryButtonTextColorWarna teks untuk tombol yang lebih kecil seperti tombol harga di tampilan katalog atau tombol Coba Di Kepala (Color3).[255, 255, 255]
inactiveButtonColorWarna latar belakang untuk semua tombol dalam keadaan tidak dapat diklik (Color3).[153, 153, 158]
inactiveButtonTextColorWarna teks untuk semua tombol dalam keadaan tidak dapat diklik (Color3).[255, 255, 255]
particleEmitterTemplateInstansi ParticleEmitter kustom opsional yang muncul dan dimainkan saat mengenakan.
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)

Menambahkan item ke kios merchandise secara asinkron sehingga item tersebut memenuhi syarat untuk dibeli dalam permainan. assetId adalah ID aset item, productType adalah enum Enum.InfoType item, dan hideFromCatalog dapat digunakan untuk menyembunyikan item di tampilan katalog.

Lihat Menambahkan Item untuk detail, karena penggunaannya sedikit berbeda untuk aset dibandingkan dengan pass atau produk pengembang.

Script - Add Avatar Assets
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
607702162, -- Topi Baseball Roblox
4819740796, -- Robox
1374269, -- Telinga Kucing
11884330, -- Kacamata Konyol
10476359, -- Topi Kertas
}
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, -- Armor ColdFyre
28521575, -- Perisai Slime
}
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, -- Pengisian Mana
1257880672, -- Ramuan Penyembuhan
}
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

Mengembalikan sebuah kamus yang mewakili semua item yang terdaftar saat ini. Setiap kunci adalah ID aset item sebagai string, dan setiap nilai kunci adalah Item. Fungsi ini hanya dapat dipanggil dari 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)

Membatalkan pendaftaran item yang sebelumnya ditambahkan dengan addItemAsync, menghapus ubin di tampilan katalog dan setiap prompt kedekatan yang ditugaskan padanya. Fungsi ini hanya dapat dipanggil dari Script.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
-- Setelah beberapa waktu, hapus item
task.wait(5)
MerchBooth.removeItem(4819740796)
end

addProximityButton

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

Menambahkan prompt kedekatan di atas adornee yang akan memicu tampilan pembelian item, diberikan ID asetnya. Ini dapat digunakan sebagai alternatif untuk tampilan katalog 2D, mendorong pemain untuk menemukan item di lingkungan 3D.

Perhatikan bahwa item harus ditambahkan melalui addItemAsync sebelum tombol kedekatan dapat ditugaskan padanya. Lihat juga removeProximityButton untuk menghapus prompt kedekatan dari objek.

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)

Menghapus prompt kedekatan yang dihasilkan melalui addProximityButton. Fungsi ini hanya dapat dipanggil dari 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
-- Setelah beberapa waktu, hapus prompt
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction: function): boolean

Mengatur fungsi pengurutan sortFunction yang akan digunakan di tampilan katalog. Fungsi pengurutan yang diberikan dapat menggunakan logika berdasarkan informasi Item seperti price atau title. Fungsi ini hanya dapat dipanggil dari LocalScript.

Berikut adalah beberapa contoh untuk mengurutkan katalog:

Harga Rendah ke Tinggi
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price < b.price
end)
Harga Tinggi ke Rendah
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price > b.price
end)
Harga Rendah ke Tinggi & Alfabetis
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)

Mengonfigurasi nilai tombol dan tombol untuk interaksi dengan kios merchandise. Parameter pertama harus merupakan enum MerchBooth.Controls dan parameter kedua adalah tabel yang berisi kunci keyboard dan/atau gamepad dengan enum Enum.KeyCode yang sesuai.

Enum (control)Default keyCodes Kunci/Nilai
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()

Membuka jendela kios merchandise (jika tertutup) dan menavigasi ke tampilan katalog. Fungsi ini hanya dapat dipanggil dari 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)

Menavigasi ke tampilan item tunggal dari itemId yang diberikan, membuka jendela kios merchandise jika saat ini tertutup. Fungsi ini hanya dapat dipanggil dari 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)

Menyalakan/mematikan tombol katalog di sisi kanan layar. Ini berguna saat menerapkan tombol kustom atau membatasi penampilan kios merchandise ke wilayah atau prompt kedekatan. Hanya dapat dipanggil dari LocalScript.

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

isMerchBoothOpen

isMerchBoothOpen(): Tuple

Mengembalikan true jika baik tampilan katalog atau tampilan item terbuka. Jika tampilan item terbuka, ID aset item dikembalikan sebagai nilai kedua. Fungsi ini hanya dapat dipanggil dari 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()

Menutup jendela kios merchandise. Fungsi ini hanya dapat dipanggil dari LocalScript.

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

isMerchBoothEnabled

isMerchBoothEnabled(): boolean

Fungsi ini dapat digunakan bersamaan dengan setEnabled untuk memeriksa apakah kios merchandise saat ini diaktifkan atau tidak. Hanya dapat dipanggil dari LocalScript.

setEnabled

setEnabled(enabled: boolean)

Mengatur apakah seluruh kios merchandise diaktifkan atau tidak. Ketika dinonaktifkan, fungsi ini menghapus seluruh UI, termasuk prompt kedekatan, dan memutuskan semua peristiwa. Fungsi ini hanya dapat dipanggil dari LocalScript.

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

Peristiwa

itemAdded

Ditembak ketika item ditambahkan melalui addItemAsync. Peristiwa ini hanya dapat dihubungkan dalam Script.

Parameter
assetId: numberID aset item.
itemInfo: tableKamus informasi Item seperti price atau title.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemAdded:Connect(function(assetId, itemInfo)
print("Item ditambahkan dengan ID aset", assetId)
print(itemInfo)
end)

itemRemoved

Ditembak ketika item dihapus melalui removeItem. Peristiwa ini hanya dapat dihubungkan dalam Script.

Parameter
assetId: numberID aset item.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemRemoved:Connect(function(assetId)
print("Item dihapus dengan ID aset", assetId)
end)

merchBoothOpened

Ditembak ketika baik tampilan katalog atau tampilan detail item dibuka.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothOpened:Connect(function()
print("Tampilan kios dibuka")
end)

merchBoothClosed

Ditembak ketika baik tampilan katalog atau tampilan detail item ditutup.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothClosed:Connect(function()
print("Tampilan kios ditutup")
end)

catalogViewOpened

Ditembak ketika tampilan katalog dibuka.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewOpened:Connect(function()
print("Tampilan katalog dibuka")
end)

catalogViewClosed

Ditembak ketika tampilan katalog ditutup.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewClosed:Connect(function()
print("Tampilan katalog ditutup")
end)

itemViewOpened

Ditembak ketika tampilan detail item dibuka.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewOpened:Connect(function()
print("Tampilan item dibuka")
end)

itemViewClosed

Ditembak ketika tampilan detail item ditutup.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewClosed:Connect(function()
print("Tampilan item ditutup")
end)
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.