كشك البضائع

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

إن MerchBooth وحدة المطور تتيح لك تقديم أصول الأفاتار والتصاريح والمنتجات المطورة للبيع مباشرة داخل تجربتك. يمكن للاعبين تصفح العناصر، ومعاينة الأصول على أفاتارهم الخاص، وشراء العناصر، واستخدامها أو تجهيزها على الفور — كل ذلك دون مغادرة تجربتك. يمكن أن يساعدك هذا في تحقيق الدخل من تجربتك وتوليد الإيرادات من خلال رسم العمولة بنسبة 40% المرتبطة ببيع عناصر مبدعي آخرين.

استخدام الوحدة

التثبيت

لاستخدام وحدة MerchBooth في تجربة:

  1. من قائمة نافذة في ستوديو أو شريط أدوات الصفحة الرئيسية، افتح صندوق الأدوات وحدد علامة تبويب متجر المبدعين.

  2. تأكد من تحديد فرز النماذج، ثم انقر على زر عرض الكل للـ فئات.

  3. ابحث عن مربع الطرود وانقر عليه.

  4. ابحث عن وحدة كشك البضائع وانقر عليها، أو اسحبها وأفلتها في العرض ثلاثي الأبعاد.

  5. في نافذة المستكشف، قم بنقل النموذج الكامل MerchBooth إلى ReplicatedStorage. عند تشغيل التجربة، ستبدأ الوحدة بالعمل.

التكوين

تم تكوين الوحدة مسبقًا لتعمل مع معظم حالات الاستخدام، ولكن يمكن تخصيصها بسهولة من خلال وظيفة configure. على سبيل المثال، لإنشاء موضوع أخف وتعطيل زر التصفية الافتراضي في الجزء العلوي الأيسر من عرض الكتالوج:

  1. في StarterPlayerScripts، أنشئ LocalScript جديد وأعد تسميته إلى ConfigureMerchBooth.

  2. الصق الكود التالي في البرنامج النصي الجديد.

    LocalScript - ConfigureMerchBooth

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

إضافة عناصر

ماذا عن كشك البضائع بدون بضائع؟ توضح الأقسام التالية كيفية إضافة أصول الأفاتار والتصاريح والمنتجات المطورة إلى كشك البضائع الخاص بك.

أصول الأفاتار

يجب إضافة عناصر مثل الملابس والإكسسوارات من خلال معرف الأثر الخاص بها الموجود في صفحة تفاصيل العنصر في متجر الأفاتار.

  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. انسخ معرفات الأثر من متاجر الأفاتار الخاصة بهم من عنوان URL لموقع الويب متجر الأفاتار. على سبيل المثال، معرف قبعة البيسبول Roblox هو 607702162.

  3. الصق كل معرف تم نسخه في قائمة مفصولة بفواصل داخل جدول items. بشكل افتراضي، تظهر العناصر في عرض الكتالوج بترتيب أبجدي، ولكن يمكنك تخصيص الفرز باستخدام setCatalogSort.

    Script - Add Avatar Assets

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    607702162, -- قبعة بيسبول Roblox
    4819740796, -- Robox
    1374269, -- آذان القطط
    11884330, -- نظارات nerd
    10476359, -- قبعة ورقية
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId)
    end)
    if not success then
    warn(errorMessage)
    end
    end

التصاريح

يتطلب إضافة التصاريح معرفات التصريح التي يمكن العثور عليها في لوحة تحكم المبدعين.

  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. مرر فوق الصورة المصغرة للتصريح، انقر على زر واختر نسخ معرف الأثر من القائمة السياقية.

  5. الصق كل معرف تم نسخه في قائمة مفصولة بفواصل داخل جدول items وتضمن Enum.InfoType.GamePass كوسيط ثاني لـ addItemAsync للإشارة إلى أن العناصر هي تصاريح. بشكل افتراضي، ستظهر العناصر في عرض الكتالوج بترتيب أبجدي، ولكن يمكن تخصيص الفرز عبر setCatalogSort.

    Script - Add Passes

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    4343758, -- درع ColdFyre
    28521575, -- درع طيني
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)
    end)
    if not success then
    warn(errorMessage)
    end
    end

المنتجات المطورة

يتطلب إضافة المنتجات المطورة معرفات المنتجات التي يمكن العثور عليها في لوحة تحكم المبدعين.

  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. مرر فوق صورة المنتج، انقر على زر واختر نسخ معرف الأثر من القائمة السياقية.

  5. الصق كل معرف تم نسخه في قائمة مفصولة بفواصل داخل جدول items وتضمن Enum.InfoType.Product كوسيط ثاني لـ addItemAsync للإشارة إلى أن العناصر هي منتجات مطورة. بشكل افتراضي، تظهر العناصر في عرض الكتالوج بترتيب أبجدي، ولكن يمكنك تخصيص الفرز باستخدام setCatalogSort.

    Script - Add Developer Products

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    local items = {
    1236602053, -- تعبئة الطاقة
    1257880672, -- جرعة الشفاء
    }
    for _, assetId in items do
    local success, errorMessage = pcall(function()
    MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)
    end)
    if not success then
    warn(errorMessage)
    end
    end

زر كتالوج مخصص

بشكل افتراضي، يتيح زر كتالوج الموجود في الجانب الأيمن للاعبين فتح الكشك في أي وقت.

في بعض الحالات، قد يكون من المفيد إزالة هذا الزر وربط زر خاص بك:

  1. أنشئ زرًا جديدًا كما هو موضح في الأزرار.

  2. أنشئ LocalScript كطفل لكائن الزر.

  3. الصق الكود التالي في البرنامج النصي الجديد.

    LocalScript - Custom Catalog Button

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local MerchBooth = require(ReplicatedStorage.MerchBooth)
    -- إزالة زر الكتالوج الافتراضي
    MerchBooth.toggleCatalogButton(false)
    -- ربط الزر المخصص
    script.Parent.Activated:Connect(function()
    MerchBooth.openMerchBooth()
    end)

مناطق قابلة للتسوق

طريقة مفيدة لتحفيز المشتريات في تجربتك هي إظهار كشك البضائع تلقائيًا عندما يدخل اللاعب منطقة.

لإنشاء منطقة قابلة للتسوق:

  1. أنشئ كتل Anchored تغطي منطقة الكشف. تأكد من أن الكتلة تقع بعالي بما يكفي للتصادم مع PrimaryPart لنماذج الشخصيات (HumanoidRootPart بشكل افتراضي).

    كتلة لاكتشاف عندما يقترب اللاعبون من مقدمة الكشك
  2. باستخدام قسم العلامات لخصائص الكتلة، قم بتطبيق العلامة ShopRegion على الكتلة بحيث يمكن لـ CollectionService اكتشافها.

  3. اضبط Transparency للجزء إلى الحد الأقصى لإخفائه عن اللاعبين في التجربة. قم أيضًا بتعطيل خاصيات CanCollide و CanQuery بحيث لا تتصادم الأجسام فعليًا معه ولا تكتشفه أشعة .

  4. أدخل LocalScript جديد أسفل StarterPlayerScripts.

  5. في البرنامج النصي الجديد، الصق الكود التالي الذي يستخدم Touched و TouchEnded للكشف عن متى تدخل الشخصيات/تغادر المنطقة، ويتصل بـ openMerchBooth و closeMerchBooth لفتح/إغلاق واجهة المستخدم للكشك.

    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)

مطالبات القرب

بدلاً من عرض الكتالوج ثنائي الأبعاد، يمكنك إضافة مطالبات قرب فوق الكائنات داخل التجربة. يشجع هذا اللاعبين على اكتشاف العناصر في البيئة ثلاثية الأبعاد، ومشاهدتها على أفاتارهم، وشرائها، وتجهيزها مباشرة. ارجع إلى 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
})

رؤية واجهة المستخدم

بشكل افتراضي، يقوم كشك البضائع بإخفاء جميع ScreenGuis و CoreGuis عندما تظهر واجهته، بما في ذلك الدردشة، لوحة التقدير، وغيرها المضمنة بواسطة 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

الأنواع

عنصر

تمثل العناصر في كشك البضائع قاموسًا مع أزواج المفتاح والقيمة التالية. يمكن جمع العناصر من خلال وظيفة getItems أو حدث itemAdded.

المفتاحالنوعالوصف
assetIdرقممعرف الكتالوج للعنصر، كما تم تمريره إلى addItemAsync.
titleسلسلةعنوان العنصر كما يظهر في الكتالوج.
priceرقمسعر العنصر بالروبكس.
descriptionسلسلةوصف العنصر كما يظهر في الكتالوج.
assetTypeسلسلةسلسلة تمثل نوع إكسسوار العنصر.
isOwnedboolما إذا كان اللاعب الحالي يمتلك العنصر.
creatorNameسلسلةاسم منشئ العنصر كما يظهر في الكتالوج.
creatorTypeEnum.CreatorTypeنوع المنشئ للعنصر.

التعدادات

MerchBooth.Controls

تستخدم مع setControlKeyCodes لتخصيص المفاتيح وأزرار جهاز الألعاب للتفاعل مع كشك البضائع.

الاسمالملخص
ProximityPromptsالمفتاح و/أو زر جهاز الألعاب لفتح عرض العنصر عندما يتم تهيئة مطالبات القرب.
OpenMerchBoothالمفتاح و/أو زر جهاز الألعاب لفتح كشك البضائع.
CloseMerchBoothالمفتاح و/أو زر جهاز الألعاب لإغلاق كشك البضائع.
Filterالمفتاح و/أو زر جهاز الألعاب لاستخدام زر التصفية الافتراضي في الجزء العلوي الأيسر من عرض الكتالوج.
ViewItemالمفتاح و/أو زر جهاز الألعاب لفتح عرض عنصر كشك البضائع المحدد.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.setControlKeyCodes(MerchBooth.Controls.ProximityPrompts, {
keyboard = Enum.KeyCode.Q,
gamepad = Enum.KeyCode.ButtonL1
})

الوظائف

configure

configure(config: table)

يتجاوز خيارات التكوين الافتراضية الخاصة بالعميل من خلال المفاتيح/القيم التالية في جدول config. يمكن استدعاء هذه الوظيفة فقط من LocalScript.

المفتاحالوصفافتراضي
backgroundColorاللون الخلفي الرئيسي للنافذة (Color3).[0, 0, 0]
cornerRadiusنصف قطر الزاوية للنافذة الرئيسية (UDim).(0, 16)
cornerRadiusSmallنصف قطر الزاوية للعناصر داخل النافذة (UDim).(0, 8)
textFontخط النص "الرئيسي" مثل الأسعار، والأوصاف، ومعلومات عامة أخرى (Enum.Font).Gotham
textSizeحجم النص الرئيسي.14
textColorلون النص الرئيسي (Color3).[255, 255, 255]
secondaryTextColorلون يستخدم لبعض تنويعات النص الرئيسي (Color3).[153, 153, 158]
headerFontخط النص الرئيسي المستخدم لعنوان النافذة (Enum.Font).GothamMedium
headerTextSizeحجم النص الرئيسي المستخدم لعنوان النافذة.18
titleFontخط نص العنوان المستخدم لأسماء العناصر في صفحة تفاصيل العنصر (Enum.Font).GothamBold
titleTextSizeحجم نص العنوان المستخدم لأسماء العناصر في صفحة تفاصيل العنصر.28
buttonColorلون الخلفية للأزرار الكبيرة في حالة قابلة للنقر، مثل زر الشراء الرئيسي في عرض العنصر (Color3).[255, 255, 255]
buttonTextColorلون النص لأزرار الكبيرة في حالة قابلة للنقر، مثل زر الشراء الرئيسي في عرض العنصر (Color3).[0, 0, 0]
secondaryButtonColorلون الخلفية للأزرار الصغيرة مثل أزرار الأسعار في عرض الكتالوج أو زر جرب (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 هو معرّف الأثر للعنصر، وproductType هو Enum.InfoType للعنصر، وhideFromCatalog يمكن استخدامه لإخفاء العنصر في عرض الكتالوج.

انظر إلى إضافة عناصر لمزيد من التفاصيل، حيث يختلف الاستخدام قليلاً بالنسبة لـ الأصول مقارنةً بـ التصاريح أو المنتجات المطورة.

Script - Add Avatar Assets

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
607702162, -- قبعة بيسبول Roblox
4819740796, -- Robox
1374269, -- آذان القطط
11884330, -- نظارات nerd
10476359, -- قبعة ورقية
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId)
end)
if not success then
warn(errorMessage)
end
end
Script - Add Passes

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
4343758, -- درع ColdFyre
28521575, -- درع طيني
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)
end)
if not success then
warn(errorMessage)
end
end
Script - Add Developer Products

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local items = {
1236602053, -- تعبئة الطاقة
1257880672, -- جرعة الشفاء
}
for _, assetId in items do
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)
end)
if not success then
warn(errorMessage)
end
end

getItems

getItems(): table

يسترد قاموسًا يمثل جميع العناصر المسجلة حاليًا. كل مفتاح هو معرّف أثر العنصر على شكل سلسلة، وقيمة كل مفتاح هي عنصر. يمكن استدعاء هذه الوظيفة فقط من Script.

Script

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

removeItem

removeItem(assetId: number)

يلغي تسجيل عنصر تم إضافته مسبقًا باستخدام addItemAsync، مما يزيل بلاطة العنصر في عرض الكتالوج وأي مطالبات قرب مخصصة له. يمكن استدعاء هذه الوظيفة فقط من Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
-- بعد فترة من الوقت، اترك العنصر
task.wait(5)
MerchBooth.removeItem(4819740796)
end

addProximityButton

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

يضيف مطالبة قرب فوق الـ adornee التي ستؤدي إلى عرض شراء العنصر، نظرًا لمعرف الأثر الخاص به. يمكن استخدام ذلك كبديل لعرض الكتالوج ثنائي الأبعاد، مما يشجع اللاعبين على اكتشاف العناصر في البيئة ثلاثية الأبعاد.

لاحظ أنه يجب إضافة عنصر عبر addItemAsync قبل أن يمكن تعيين زر القرب له. انظر أيضًا removeProximityButton لإزالة مطالبة القرب من كائن.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local item = Workspace:FindFirstChild("Robox")
if item then
MerchBooth.addProximityButton(item, 4819740796)
end
end

removeProximityButton

removeProximityButton(adornee: BasePart|Model|Attachment)

يزيل مطالبة قرب تم إنشاؤها من خلال addProximityButton. يمكن استدعاء هذه الوظيفة فقط من Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
local success, errorMessage = pcall(function()
MerchBooth.addItemAsync(4819740796)
end)
if success then
local item = Workspace:FindFirstChild("Robox")
if item then
MerchBooth.addProximityButton(item, 4819740796)
end
-- بعد فترة من الوقت، قم بإزالة المطالبة
task.wait(5)
MerchBooth.removeProximityButton(item)
end

setCatalogSort

setCatalogSort(sortFunction: function): boolean

يحدد وظيفة الفرز sortFunction التي سيتم استخدامها في عرض الكتالوج. يمكن أن تستخدم وظيفة الفرز المقدمة منطقًا يعتمد على معلومات العنصر مثل price أو title. يمكن استدعاء هذه الوظيفة فقط من LocalScript.

إليك بعض الأمثلة على فرز الكتالوج:

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)

تقوم بتكوين القيم الخاصة بالمفتاح وزر التحكم للتفاعلات مع كشك البضائع. يجب أن يكون المعامل الأول تعداد MerchBooth.Controls والمعامل الثاني جدول يحتوي على المفاتيح keyboard و/أو gamepad مع القيم 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)

يُبدل زر الكتالوج في الجانب الأيمن من الشاشة. هذا مفيد عند تنفيذ زر مخصص أو تحديد ظهور كشك البضائع لمناطق أو مطالبات قرب. يمكن استدعاؤه فقط من LocalScript.

LocalScript

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

isMerchBoothOpen

isMerchBoothOpen(): Tuple

يُعيد true إذا كان عرض الكتالوج أو عرض العنصر مفتوحًا. إذا كان عرض العنصر مفتوحًا، سيتم إرجاع معرّف أثر العنصر كالقيمة الثانية. يمكن استدعاؤها فقط من 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)

تحدد ما إذا كان كشك البضائع مفعلًا أم لا. عند تعطيله، تزيل هذه الوظيفة واجهة المستخدم بالكامل، بما في ذلك مطالبات القرب، وتفصل جميع الأحداث. يمكن استدعاؤها فقط من LocalScript.

LocalScript

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

الأحداث

itemAdded

يتم استدعاؤه عند إضافة عنصر من خلال addItemAsync. يمكن الاتصال بهذا الحدث فقط في Script.

المعلمات
assetId: numberمعرف أثر العنصر.
itemInfo: tableقاموس معلومات العنصر مثل price أو title.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemAdded:Connect(function(assetId, itemInfo)
print("تمت إضافة العنصر بمعرف الأثر", assetId)
print(itemInfo)
end)

itemRemoved

يتم استدعاؤه عندما يتم إزالة عنصر من خلال removeItem. يمكن الاتصال بهذا الحدث فقط في Script.

المعلمات
assetId: numberمعرف أثر العنصر.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemRemoved:Connect(function(assetId)
print("تمت إزالة العنصر بمعرف الأثر", assetId)
end)

merchBoothOpened

يتم استدعاؤه عند فتح إما الكتالوج أو عرض تفاصيل العنصر.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothOpened:Connect(function()
print("تم فتح عرض الكشك")
end)

merchBoothClosed

يتم استدعاؤه عند إغلاق إما الكتالوج أو عرض تفاصيل العنصر.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.merchBoothClosed:Connect(function()
print("تم إغلاق عرض الكشك")
end)

catalogViewOpened

يتم استدعاؤه عند فتح عرض الكتالوج.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewOpened:Connect(function()
print("تم فتح عرض الكتالوج")
end)

catalogViewClosed

يتم استدعاؤه عند إغلاق عرض الكتالوج.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.catalogViewClosed:Connect(function()
print("تم إغلاق عرض الكتالوج")
end)

itemViewOpened

يتم استدعاؤه عند فتح عرض تفاصيل العنصر.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewOpened:Connect(function()
print("تم فتح عرض العنصر")
end)

itemViewClosed

يتم استدعاؤه عند إغلاق عرض تفاصيل العنصر.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MerchBooth = require(ReplicatedStorage.MerchBooth)
MerchBooth.itemViewClosed:Connect(function()
print("تم إغلاق عرض العنصر")
end)
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.