Ticaret Standı

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

MerchBooth geliştirici modülü, oyun içinde doğrudan avatar varlıkları, geçişler ve geliştirici ürünleri sunmanıza olanak tanır. Oyuncular, öğeleri gözden geçirebilir, varlıkları kendi avatarlarında önizleyebilir, öğeleri satın alabilir ve bunları anında kullanabilir veya takabilir — hepsi oyununuzdan çıkmadan. Bu, oyununuzu monetize etmenize ve diğer yaratıcıların öğelerini satmanın %40'lık ortaklık ücreti aracılığıyla gelir elde etmenize yardımcı olabilir.

Modül kullanımı

Kurulum

MerchBooth modülünü bir oyunda kullanmak için:

  1. Studio'nun Pencere menüsünden veya Ana Sayfa sekmesi araç çubuğundan Araç Kutusu'nu açın ve Yaratıcı Mağaza sekmesini seçin.

  2. Modeller sıralamasının seçili olduğundan emin olun, ardından Kategoriler için Hepsini Gör butonuna tıklayın.

  3. Paketler kutusunu bulun ve tıklayın.

  4. Merch Booth modülünü bulun ve tıklayın veya 3D görünümüne sürükleyip bırakın.

  5. Explorer penceresinde, tüm MerchBooth modelini ReplicatedStorage içine taşıyın. Oyun çalıştırıldığında modül çalışmaya başlayacaktır.

Yapılandırma

Modül, çoğu kullanım durumu için önceden yapılandırılmıştır, ancak configure işlevi aracılığıyla kolayca özelleştirilebilir. Örneğin, daha açık bir tema oluşturmak ve katalog görünümünün sol üst alanındaki varsayılan Filtre butonunu devre dışı bırakmak için:

  1. StarterPlayerScripts içinde yeni bir LocalScript oluşturun ve adını ConfigureMerchBooth olarak değiştirin.

  2. Yeni script'e aşağıdaki kodu yapıştırın.

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

Öğeleri ekle

Ticaret standı, ticaret olmadan neye benzer? Aşağıdaki bölümler, ticaret standınıza avatar varlıkları, geçişler ve geliştirici ürünleri eklemeyi açıklamaktadır.

Avatar varlıkları

Giysi ve aksesuarlar gibi öğeler, öğenin detay sayfasında bulunan varlık ID'leri aracılığıyla eklenmelidir. Avatar Mağazası.

  1. ServerScriptService içinde bir Script oluşturun ve aşağıdaki kodu yapıştırın.

    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. Her bir öğe varlık ID'sini Avatar Mağazası web sitesi URL'sinden kopyalayın. Örneğin, Roblox Beyzbol Şapkası'nın ID'si 607702162'dir.

  3. Her kopyalanan ID'yi items tablosunda virgülle ayrılmış bir listeye yapıştırın. Varsayılan olarak, öğeler katalog görünümünde alfabetik sırayla görünür, ancak setCatalogSort kullanarak sıralamayı özelleştirebilirsiniz.

    Script - Add Avatar Assets
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    607702162, -- Roblox Beyzbol Şapkası
    4819740796, -- Robox
    1374269, -- Kedi Kulakları
    11884330, -- Zeki Gözlükler
    10476359, -- Kağıt Şapka
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end

Geçişler

Geçişler eklemek, Yaratıcı Kontrol Paneli'nde bulunan geçiş ID'lerini gerektirir.

  1. ServerScriptService içinde bir Script oluşturun ve aşağıdaki kodu yapıştırın.

    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. Yaratıcı Kontrol Paneli'ne gidin ve oyunu seçin.

  3. Sol sütunda, Monetizasyon altında Geçişler'i seçin.

  4. Bir geçişin küçük resminin üzerine gelin, butonuna tıklayın ve bağlam menüsünden Varlık ID'sini Kopyala seçeneğini seçin.

  5. Her kopyalanan ID'yi items tablosunda virgülle ayrılmış bir listeye yapıştırın ve öğelerin geçiş olduğunu belirtmek için addItemAsync için ikinci parametre olarak Enum.InfoType.GamePass ekleyin. Varsayılan olarak, öğeler katalog görünümünde alfabetik sırayla görünür, ancak sıralama setCatalogSort aracılığıyla özelleştirilebilir.

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

Geliştirici Ürünleri

Geliştirici ürünleri eklemek, Yaratıcı Kontrol Paneli'nde bulunan ürün ID'lerini gerektirir.

  1. ServerScriptService içinde bir Script oluşturun ve aşağıdaki kodu yapıştırın.

    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. Yaratıcı Kontrol Paneli'ne gidin ve oyunu seçin.

  3. Sol sütunda, Monetizasyon altında Geliştirici Ürünleri'ni seçin.

  4. Bir ürünün küçük resminin üzerine gelin, butonuna tıklayın ve bağlam menüsünden Varlık ID'sini Kopyala seçeneğini seçin.

  5. Her kopyalanan ID'yi items tablosunda virgülle ayrılmış bir listeye yapıştırın ve öğelerin geliştirici ürünleri olduğunu belirtmek için addItemAsync için ikinci parametre olarak Enum.InfoType.Product ekleyin. Varsayılan olarak, öğeler katalog görünümünde alfabetik sırayla görünür, ancak sıralama setCatalogSort kullanılarak özelleştirilebilir.

    Script - Add Developer Products
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    1236602053, -- Mana Yenileme
    1257880672, -- İyileştirme İksiri
    }
    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

Özel katalog butonu

Varsayılan olarak, sağ tarafta bir katalog butonu, oyuncuların standı her zaman açmasına olanak tanır.

Bazı durumlarda, bu butonu kaldırmak ve kendi butonunuzu bağlamak faydalı olabilir:

  1. Butonlar bölümünde açıklandığı gibi yeni bir buton oluşturun.

  2. Buton nesnesinin altına bir LocalScript oluşturun.

  3. Yeni script'e aşağıdaki kodu yapıştırın.

    LocalScript - Custom Catalog Button
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- Varsayılan katalog butonunu kaldır
    MerchBooth.toggleCatalogButton(false)
    -- Özel butonu bağla
    script.Parent.Activated:Connect(function()
    MerchBooth.openMerchBooth()
    end)

Alışveriş yapılabilir bölgeler

Oyununuza satın alımları yönlendirmek için, bir oyuncu bir alana girdiğinde otomatik olarak ticaret standını göstermek faydalı bir yoldur.

Alışveriş yapılabilir bir bölge oluşturmak için:

  1. Tespit bölgesini kapsayan bir Anchored bloğu oluşturun. Bloğun, karakter modellerinin PrimaryPart ile çarpışacak kadar yüksek olduğundan emin olun (HumanoidRootPart varsayılan olarak).

    Oyuncuların dükkan tezgahının önüne yaklaştıklarında tespit etmek için blok
  2. Bloğun özelliklerinin Etiketler bölümünü kullanarak, ShopRegion etiketini bloğa uygulayın, böylece CollectionService bunu tespit edebilir.

  3. Parçanın Transparency değerini maksimuma ayarlayarak oyuncuların oyunda görmesini engelleyin. Ayrıca, nesnelerin fiziksel olarak onunla çarpışmaması ve ışın izlerinin onu tespit etmemesi için CanCollide ve CanQuery özelliklerini devre dışı bırakın.

  4. StarterPlayerScripts altında yeni bir LocalScript ekleyin.

  5. Yeni script'e, karakterlerin bölgeye girdiğinde/çıktığında tespit etmek için Touched ve TouchEnded olaylarını kullanan ve openMerchBooth ve closeMerchBooth çağrılarını açıp kapatan aşağıdaki kodu yapıştırın.

    LocalScript
    local Players = game:GetService("Players")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local CollectionService = game:GetService("CollectionService")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- Varsayılan katalog butonunu kaldır
    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
    -- Mevcut etiketli dükkan bölgeleri arasında yineleme yap
    for _, region in CollectionService:GetTagged("ShopRegion") do
    setupRegion(region)
    end
    -- Akışa giren akışta olmayan dükkan bölgelerini tespit et
    CollectionService:GetInstanceAddedSignal("ShopRegion"):Connect(setupRegion)

Yakınlık istemleri

2D katalog görünümüne alternatif olarak, oyun içi nesnelerin üzerine yakınlık istemleri ekleyebilirsiniz. Bu, oyuncuları 3D ortamda öğeleri keşfetmeye, kendi avatarlarında önizlemeye, satın almaya ve anında takmaya teşvik eder. Ayrıntılar için addProximityButton bölümüne bakın.

Ekipman efektini değiştir

Varsayılan olarak, ticaret standı, bir oyuncu bir öğeyi ekip ettiğinde genel bir parıltı efekti gösterir. Etkiyi değiştirmek için, particleEmitterTemplate değerini bir configure çağrısında kendi ParticleEmitter örneğinize ayarlayın.

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 görünürlüğü

Varsayılan olarak, ticaret standı, UI'si göründüğünde tüm ScreenGuis ve CoreGuis'yi gizler, bunlar arasında sohbet, liderlik panosu ve Roblox tarafından dahil edilen diğerleri bulunur. Bu davranışı devre dışı bırakmak istiyorsanız, hideOtherUis değerini false olarak ayarlayın bir configure çağrısında.

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

Karakter hareketi

Bir karakterin ticaret standında bulunduğu süre boyunca hareket etmesini engellemek faydalı olabilir. Bu, disableCharacterMovement değerini true olarak ayarlayarak yapılabilir bir configure çağrısında.

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

API referansı

Türler

Öğeler

Ticaret standındaki öğeler, aşağıdaki anahtar-değer çiftleri ile bir sözlükle temsil edilir. Öğeler, getItems işlevi veya itemAdded olayı aracılığıyla toplanabilir.

AnahtarTürAçıklama
assetIdnumberÖğenin katalog ID'si, addItemAsync ile geçilir.
titlestringÖğenin katalogda göründüğü başlık.
pricenumberÖğenin fiyatı Robux cinsinden.
descriptionstringÖğenin katalogda göründüğü açıklama.
assetTypestringÖğenin aksesuar türünü temsil eden dize.
isOwnedboolMevcut oyuncunun öğeyi sahip olup olmadığı.
creatorNamestringÖğenin katalogda göründüğü yaratıcı adı.
creatorTypeEnum.CreatorTypeÖğenin yaratıcı türü.

Enum'lar

MerchBooth.Controls

Ticaret standı ile etkileşim için tuşları ve oyun kumandası butonlarını özelleştirmek için setControlKeyCodes ile birlikte kullanılır.

AdÖzet
ProximityPromptsyakınlık istemleri yapılandırıldığında öğe görünümünü açmak için tuş ve/veya oyun kumandası butonu.
OpenMerchBoothTicaret standını açmak için tuş ve/veya oyun kumandası butonu.
CloseMerchBoothTicaret standını kapatmak için tuş ve/veya oyun kumandası butonu.
FilterKatalog görünümünün sol üst alanında gösterilen varsayılan Filtre açılır menüsünü kullanmak için tuş ve/veya oyun kumandası butonu.
ViewItemBelirli bir ticaret standı öğe görünümünü açmak için tuş ve/veya oyun kumandası butonu.
LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1
})

Fonksiyonlar

configure

configure(config: table)

Aşağıdaki anahtar/değer çiftleri aracılığıyla varsayılan istemci tarafı yapılandırma seçeneklerini geçersiz kılar. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

AnahtarAçıklamaVarsayılan
backgroundColorPencerenin ana arka plan rengi (Color3).[0, 0, 0]
cornerRadiusAna pencere için köşe yarıçapı (UDim).(0, 16)
cornerRadiusSmallPencere içindeki öğeler için köşe yarıçapı (UDim).(0, 8)
textFontFiyatlar, açıklamalar ve diğer genel bilgiler gibi "ana metin" için yazı tipi (Enum.Font).Gotham
textSizeAna metin boyutu.14
textColorAna metin rengi (Color3).[255, 255, 255]
secondaryTextColorAna metnin bazı varyasyonları için kullanılan renk (Color3).[153, 153, 158]
headerFontPencere başlığı için kullanılan başlık metni yazı tipi (Enum.Font).GothamMedium
headerTextSizePencere başlığı için kullanılan başlık metni boyutu.18
titleFontÖğe detay sayfasındaki öğe adları için kullanılan başlık metni yazı tipi (Enum.Font).GothamBold
titleTextSizeÖğe detay sayfasındaki öğe adları için kullanılan başlık metni boyutu.28
buttonColorBüyük butonlar için tıklanabilir durumda arka plan rengi, örneğin öğe görünümündeki ana satın alma butonu (Color3).[255, 255, 255]
buttonTextColorBüyük butonlar için tıklanabilir durumda metin rengi, örneğin öğe görünümündeki ana satın alma butonu (Color3).[0, 0, 0]
secondaryButtonColorKatalog görünümündeki fiyat butonları veya Denemek butonu gibi daha küçük butonlar için arka plan rengi (Color3).[34, 34, 34]
secondaryButtonTextColorKatalog görünümündeki fiyat butonları veya Denemek butonu gibi daha küçük butonlar için metin rengi (Color3).[255, 255, 255]
inactiveButtonColorTıklanamaz durumda olan tüm butonlar için arka plan rengi (Color3).[153, 153, 158]
inactiveButtonTextColorTıklanamaz durumda olan tüm butonlar için metin rengi (Color3).[255, 255, 255]
particleEmitterTemplateTakıldığında görünen ve oynatılan isteğe bağlı özel ParticleEmitter örneği.
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)

Bir öğeyi ticaret standına asenkron olarak ekler, böylece oyunda satın alınabilir hale gelir. assetId, öğenin varlık ID'sidir, productType, öğenin Enum.InfoType enum'udur ve hideFromCatalog, öğeyi katalog görünümünde gizlemek için kullanılabilir.

Ayrıntılar için Öğeleri Ekleme bölümüne bakın, çünkü kullanım varlıklar ile geçişler veya geliştirici ürünleri arasında biraz farklılık gösterir.

Script - Add Avatar Assets
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
607702162, -- Roblox Beyzbol Şapkası
4819740796, -- Robox
1374269, -- Kedi Kulakları
11884330, -- Zeki Gözlükler
10476359, -- Kağıt Şapka
}
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 Zırhı
28521575, -- Slime Kalkanı
}
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 Yenileme
1257880672, -- İyileştirme İksiri
}
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

Şu anda kayıtlı olan tüm öğeleri temsil eden bir sözlük döndürür. Her anahtar, bir öğenin varlık ID'si olarak bir dize ve her anahtarın değeri bir Öğe dir. Bu işlev yalnızca bir Script içinden çağrılabilir.

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)

Daha önce addItemAsync ile eklenmiş bir öğeyi kayıttan çıkarır, katalog görünümündeki kutusunu ve ona atanan herhangi bir yakınlık istemini kaldırır. Bu işlev yalnızca bir Script içinden çağrılabilir.

Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
-- Bir süre sonra, öğeyi kaldır
task.wait(5)
MerchBooth.removeItem(4819740796)
end

addProximityButton

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

Verilen adornee üzerinde bir yakınlık istemi ekler, bu da bir öğenin satın alma görünümünü tetikler, varlık ID'sine bağlı olarak. Bu, 2D katalog görünümüne alternatif olarak kullanılabilir ve oyuncuları 3D ortamda öğeleri keşfetmeye teşvik eder.

Bir öğe, bir yakınlık butonuna atanabilmesi için addItemAsync ile eklenmelidir. Ayrıca, bir nesneden yakınlık istemini kaldırmak için removeProximityButton bölümüne de bakın.

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 aracılığıyla oluşturulan bir yakınlık istemini kaldırır. Bu işlev yalnızca bir Script içinden çağrılabilir.

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
-- Bir süre sonra, istemi kaldır
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction: function): boolean

Katalog görünümünde kullanılacak sıralama işlevini sortFunction olarak ayarlar. Sağlanan sıralama işlevi, price veya title gibi Öğe bilgisine dayalı mantık kullanabilir. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

Katalogu sıralamak için bazı örnekler:

Fiyat Düşükten Yükseğe
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price < b.price
end)
Fiyat Yüksekten Düşüğe
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setCatalogSort(function(a, b)
return a.price > b.price
end)
Fiyat Düşükten Yükseğe & Alfabetik
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)

Ticaret standı ile etkileşim için tuş ve buton değerlerini yapılandırır. İlk parametre bir MerchBooth.Controls enum'u olmalı ve ikinci parametre, keyboard ve/veya gamepad anahtarlarını içeren ve karşılık gelen Enum.KeyCode enum'larını içeren bir tablo olmalıdır.

Enum (control)Varsayılan keyCodes Anahtarları/Değerleri
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()

Ticaret standı penceresini açar (kapalıysa) ve katalog görünümüne yönlendirir. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

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)

Verilen itemId'nin tekil öğe görünümüne yönlendirir, ticaret standı penceresini açar eğer şu anda kapalıysa. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

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)

Ekranın sağ tarafındaki katalog butonunu açıp kapatır. Bu, özel buton uygularken veya ticaret standının görünümünü bölgeler veya yakınlık istemleri ile sınırlarken faydalıdır. Yalnızca bir LocalScript içinden çağrılabilir.

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

isMerchBoothOpen

isMerchBoothOpen(): Tuple

Katalog veya öğe görünümü açık olduğunda true döndürür. Eğer öğe görünümü açıksa, öğenin varlık ID'si ikinci değer olarak döndürülür. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

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

Ticaret standı penceresini kapatır. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

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

isMerchBoothEnabled

isMerchBoothEnabled(): boolean

Bu işlev, ticaret standının şu anda etkin olup olmadığını kontrol etmek için setEnabled ile birlikte kullanılabilir. Yalnızca bir LocalScript içinden çağrılabilir.

setEnabled

setEnabled(enabled: boolean)

Ticaret standının tamamının etkin olup olmadığını ayarlar. Devre dışı bırakıldığında, bu işlev tüm UI'yi, yakınlık istemleri dahil olmak üzere kaldırır ve tüm olayları keser. Bu işlev yalnızca bir LocalScript içinden çağrılabilir.

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

Olaylar

itemAdded

Bir öğe addItemAsync aracılığıyla eklendiğinde tetiklenir. Bu olay yalnızca bir Script içinde bağlanabilir.

Parametreler
assetId: numberÖğe varlık ID'si.
itemInfo: tableprice veya title gibi Öğe bilgilerini içeren sözlük.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemAdded:Connect(function(assetId, itemInfo)
print("Varlık ID'si", assetId, "olan öğe eklendi")
print(itemInfo)
end)

itemRemoved

Bir öğe removeItem aracılığıyla kaldırıldığında tetiklenir. Bu olay yalnızca bir Script içinde bağlanabilir.

Parametreler
assetId: numberÖğe varlık ID'si.
Script
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemRemoved:Connect(function(assetId)
print("Varlık ID'si", assetId, "olan öğe kaldırıldı")
end)

merchBoothOpened

Katalog veya öğe detay görünümü açıldığında tetiklenir.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothOpened:Connect(function()
print("Stand görünümü açıldı")
end)

merchBoothClosed

Katalog veya öğe detay görünümü kapandığında tetiklenir.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothClosed:Connect(function()
print("Stand görünümü kapandı")
end)

catalogViewOpened

Katalog görünümü açıldığında tetiklenir.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewOpened:Connect(function()
print("Katalog görünümü açıldı")
end)

catalogViewClosed

Katalog görünümü kapandığında tetiklenir.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewClosed:Connect(function()
print("Katalog görünümü kapandı")
end)

itemViewOpened

Öğe detay görünümü açıldığında tetiklenir.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewOpened:Connect(function()
print("Öğe görünümü açıldı")
end)

itemViewClosed

Öğe detay görünümü kapandığında tetiklenir.

LocalScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewClosed:Connect(function()
print("Öğe görünümü kapandı")
end)
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.