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

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

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

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

الصق الكود التالي في البرنامج النصي الجديد.
LocalScript - ConfigureMerchBoothlocal 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})
إضافة عناصر
ماذا عن كشك البضائع بدون بضائع؟ توضح الأقسام التالية كيفية إضافة أصول الأفاتار والتصاريح والمنتجات المطورة إلى كشك البضائع الخاص بك.
أصول الأفاتار
يجب إضافة عناصر مثل الملابس والإكسسوارات من خلال معرف الأثر الخاص بها الموجود في صفحة تفاصيل العنصر في متجر الأفاتار.
أنشئ Script داخل ServerScriptService والصق الكود التالي.
Script - Add Avatar Assetslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local items = {}for _, assetId in items dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenwarn(errorMessage)endendانسخ معرفات الأثر من متاجر الأفاتار الخاصة بهم من عنوان URL لموقع الويب متجر الأفاتار. على سبيل المثال، معرف قبعة البيسبول Roblox هو 607702162.

الصق كل معرف تم نسخه في قائمة مفصولة بفواصل داخل جدول items. بشكل افتراضي، تظهر العناصر في عرض الكتالوج بترتيب أبجدي، ولكن يمكنك تخصيص الفرز باستخدام setCatalogSort.
Script - Add Avatar Assetslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local items = {607702162, -- قبعة بيسبول Roblox4819740796, -- Robox1374269, -- آذان القطط11884330, -- نظارات nerd10476359, -- قبعة ورقية}for _, assetId in items dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenwarn(errorMessage)endend
التصاريح
يتطلب إضافة التصاريح معرفات التصريح التي يمكن العثور عليها في لوحة تحكم المبدعين.
أنشئ Script داخل ServerScriptService والصق الكود التالي.
Script - Add Passeslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local items = {}for _, assetId in items dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenwarn(errorMessage)endendانتقل إلى لوحة تحكم المبدعين وحدد التجربة.
في العمود الأيسر، تحت تحقيق الدخل، اختر التصاريح.
مرر فوق الصورة المصغرة للتصريح، انقر على زر ⋯ واختر نسخ معرف الأثر من القائمة السياقية.

الصق كل معرف تم نسخه في قائمة مفصولة بفواصل داخل جدول items وتضمن Enum.InfoType.GamePass كوسيط ثاني لـ addItemAsync للإشارة إلى أن العناصر هي تصاريح. بشكل افتراضي، ستظهر العناصر في عرض الكتالوج بترتيب أبجدي، ولكن يمكن تخصيص الفرز عبر setCatalogSort.
Script - Add Passeslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local items = {4343758, -- درع ColdFyre28521575, -- درع طيني}for _, assetId in items dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId, Enum.InfoType.GamePass)end)if not success thenwarn(errorMessage)endend
المنتجات المطورة
يتطلب إضافة المنتجات المطورة معرفات المنتجات التي يمكن العثور عليها في لوحة تحكم المبدعين.
أنشئ Script داخل ServerScriptService والصق الكود التالي.
Script - Add Developer Productslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local items = {}for _, assetId in items dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId)end)if not success thenwarn(errorMessage)endendانتقل إلى لوحة تحكم المبدعين وحدد التجربة.
في العمود الأيسر، تحت تحقيق الدخل، اختر المنتجات المطورة.
مرر فوق صورة المنتج، انقر على زر ⋯ واختر نسخ معرف الأثر من القائمة السياقية.

الصق كل معرف تم نسخه في قائمة مفصولة بفواصل داخل جدول items وتضمن Enum.InfoType.Product كوسيط ثاني لـ addItemAsync للإشارة إلى أن العناصر هي منتجات مطورة. بشكل افتراضي، تظهر العناصر في عرض الكتالوج بترتيب أبجدي، ولكن يمكنك تخصيص الفرز باستخدام setCatalogSort.
Script - Add Developer Productslocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local items = {1236602053, -- تعبئة الطاقة1257880672, -- جرعة الشفاء}for _, assetId in items dolocal success, errorMessage = pcall(function()MerchBooth.addItemAsync(assetId, Enum.InfoType.Product)end)if not success thenwarn(errorMessage)endend
زر كتالوج مخصص
بشكل افتراضي، يتيح زر كتالوج الموجود في الجانب الأيمن للاعبين فتح الكشك في أي وقت.

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

الصق الكود التالي في البرنامج النصي الجديد.
LocalScript - Custom Catalog Buttonlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)-- إزالة زر الكتالوج الافتراضيMerchBooth.toggleCatalogButton(false)-- ربط الزر المخصصscript.Parent.Activated:Connect(function()MerchBooth.openMerchBooth()end)
مناطق قابلة للتسوق
طريقة مفيدة لتحفيز المشتريات في تجربتك هي إظهار كشك البضائع تلقائيًا عندما يدخل اللاعب منطقة.
لإنشاء منطقة قابلة للتسوق:
أنشئ كتل Anchored تغطي منطقة الكشف. تأكد من أن الكتلة تقع بعالي بما يكفي للتصادم مع PrimaryPart لنماذج الشخصيات (HumanoidRootPart بشكل افتراضي).

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


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

في البرنامج النصي الجديد، الصق الكود التالي الذي يستخدم Touched و TouchEnded للكشف عن متى تدخل الشخصيات/تغادر المنطقة، ويتصل بـ openMerchBooth و closeMerchBooth لفتح/إغلاق واجهة المستخدم للكشك.
LocalScriptlocal 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.Characterif character and otherPart == character.PrimaryPart thenMerchBooth.openMerchBooth()endend)region.TouchEnded:Connect(function(otherPart)local character = Players.LocalPlayer.Characterif character and otherPart == character.PrimaryPart thenMerchBooth.closeMerchBooth()endend)end-- المرور عبر المناطق الموصوفة مسبقًاfor _, region in CollectionService:GetTagged("ShopRegion") dosetupRegion(region)end-- اكتشاف متى تتدفق المناطق غير المتداولةCollectionService:GetInstanceAddedSignal("ShopRegion"):Connect(setupRegion)
مطالبات القرب
بدلاً من عرض الكتالوج ثنائي الأبعاد، يمكنك إضافة مطالبات قرب فوق الكائنات داخل التجربة. يشجع هذا اللاعبين على اكتشاف العناصر في البيئة ثلاثية الأبعاد، ومشاهدتها على أفاتارهم، وشرائها، وتجهيزها مباشرة. ارجع إلى addProximityButton للحصول على التفاصيل.
تغيير تأثير التجهيز
بشكل افتراضي، يظهر كشك البضائع تأثير بريق عام عندما يقوم اللاعب بتجهيز عنصر منه. لتغيير التأثير، اضبط particleEmitterTemplate على نسختك الخاصة من ParticleEmitter في اتصال configure.
LocalScript - ConfigureMerchBoothlocal 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.SpheremyParticleEmitter.Transparency = NumberSequence.new(0, 1)myParticleEmitter.RotSpeed = NumberRange.new(200, 200)MerchBooth.configure({particleEmitterTemplate = myParticleEmitter})
رؤية واجهة المستخدم
بشكل افتراضي، يقوم كشك البضائع بإخفاء جميع ScreenGuis و CoreGuis عندما تظهر واجهته، بما في ذلك الدردشة، لوحة التقدير، وغيرها المضمنة بواسطة Roblox. إذا كنت ترغب في تعطيل هذه السلوك، اضبط hideOtherUis على false في اتصال configure.
LocalScript - ConfigureMerchBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)MerchBooth.configure({hideOtherUis = false})
حركة الشخصية
يمكن أن يكون من المفيد منع الشخصية من الحركة أثناء تواجدهم في كشك البضائع. يمكن القيام بذلك عن طريق ضبط disableCharacterMovement على true في اتصال configure.
LocalScript - ConfigureMerchBoothlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)MerchBooth.configure({disableCharacterMovement = true})
مرجع API
الأنواع
عنصر
تمثل العناصر في كشك البضائع قاموسًا مع أزواج المفتاح والقيمة التالية. يمكن جمع العناصر من خلال وظيفة getItems أو حدث itemAdded.
| المفتاح | النوع | الوصف |
|---|---|---|
| assetId | رقم | معرف الكتالوج للعنصر، كما تم تمريره إلى addItemAsync. |
| title | سلسلة | عنوان العنصر كما يظهر في الكتالوج. |
| price | رقم | سعر العنصر بالروبكس. |
| description | سلسلة | وصف العنصر كما يظهر في الكتالوج. |
| assetType | سلسلة | سلسلة تمثل نوع إكسسوار العنصر. |
| isOwned | bool | ما إذا كان اللاعب الحالي يمتلك العنصر. |
| creatorName | سلسلة | اسم منشئ العنصر كما يظهر في الكتالوج. |
| creatorType | Enum.CreatorType | نوع المنشئ للعنصر. |
التعدادات
MerchBooth.Controls
تستخدم مع setControlKeyCodes لتخصيص المفاتيح وأزرار جهاز الألعاب للتفاعل مع كشك البضائع.
| الاسم | الملخص |
|---|---|
| ProximityPrompts | المفتاح و/أو زر جهاز الألعاب لفتح عرض العنصر عندما يتم تهيئة مطالبات القرب. |
| OpenMerchBooth | المفتاح و/أو زر جهاز الألعاب لفتح كشك البضائع. |
| CloseMerchBooth | المفتاح و/أو زر جهاز الألعاب لإغلاق كشك البضائع. |
| Filter | المفتاح و/أو زر جهاز الألعاب لاستخدام زر التصفية الافتراضي في الجزء العلوي الأيسر من عرض الكتالوج. |
| ViewItem | المفتاح و/أو زر جهاز الألعاب لفتح عرض عنصر كشك البضائع المحدد. |
LocalScriptlocal 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 تظهر وتلعب عند التجهيز. |
LocalScriptlocal 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.ProximityPrompts | keyboard = Enum.KeyCode.E gamepad = Enum.KeyCode.ButtonY |
| MerchBooth.Controls.OpenMerchBooth | gamepad = Enum.KeyCode.ButtonY |
| MerchBooth.Controls.CloseMerchBooth | gamepad = Enum.KeyCode.ButtonB |
| MerchBooth.Controls.Filter | gamepad = Enum.KeyCode.ButtonX |
| MerchBooth.Controls.ViewItem | gamepad = Enum.KeyCode.ButtonA |
LocalScriptlocal 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.
LocalScriptlocal 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.
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)MerchBooth.closeMerchBooth()
isMerchBoothEnabled
isMerchBoothEnabled(): boolean
يمكن استخدام هذه الوظيفة جنبًا إلى جنب مع setEnabled للتحقق مما إذا كان كشك البضائع مفعلًا حاليًا أم لا. يمكن استدعاؤها فقط من LocalScript.
setEnabled
setEnabled(enabled: boolean)
تحدد ما إذا كان كشك البضائع مفعلًا أم لا. عند تعطيله، تزيل هذه الوظيفة واجهة المستخدم بالكامل، بما في ذلك مطالبات القرب، وتفصل جميع الأحداث. يمكن استدعاؤها فقط من LocalScript.
LocalScriptlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local MerchBooth = require(ReplicatedStorage.MerchBooth)local isEnabled = MerchBooth.isMerchBoothEnabled()if isEnabled thenMerchBooth.setEnabled(false)end
الأحداث
itemAdded
يتم استدعاؤه عند إضافة عنصر من خلال addItemAsync. يمكن الاتصال بهذا الحدث فقط في Script.
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)