تساعد قائمة سياق الصورة الرمزية (ACM) المستخدمين على التفاعل مع بعضهم البعض بسهولة. عند تمكين الـ ACM في لعبتك، يمكن للمستخدم الاقتراب من شخصية مستخدم آخر والنقر عليهم لفتح قائمة صغيرة تحتوي على عدة خيارات افتراضية. يمكن للاعب إرسال طلب صداقة، بدء محادثة خاصة، عرض ملف المستخدم، أو التلويح.
بعد تمكين الـ ACM في لعبتك، يمكنك تخصيص الـ ACM بطرق التالية:
- برمجياً فتح وإغلاق الـ ACM لمستخدمين محددين.
- تخصيص مظهر الـ ACM لإنشاء واجهة مستخدم فريدة.
تفعيل قائمة سياق الصورة الرمزية
يجب تمكين قائمة سياق الصورة الرمزية باستخدام خيار StarterGui:SetCore() "AvatarContextMenuEnabled" في LocalScript. يتناسب الـ ACM بشكل أفضل في الألعاب التي لا تحتوي على سلوك مسبق لتعطيل النقر على المستخدمين الآخرين.
استخدم عينة الكود التالية لتمكين الـ ACM في LocalScript:
-- يعمل في LocalScript، من الأفضل ضمن "StarterPlayerScripts"local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuEnabled", true)
إذا كنت بحاجة إلى كشف ما إذا كان الـ ACM مُفعلًا، يمكنك استخدام الكود التالي لإرجاع قيمة Boolean بشأن الحالة الحالية للـ ACM:
---Returns a boolean indicating if the ACM is currently enabled.StarterGui:GetCore(AvatarContextMenuEnabled)
فتح وإغلاق الـ ACM
بمجرد تمكينه، يمكنك فتح وإغلاق الـ ACM برمجياً باستخدام StarterGui.
لفتح الـ ACM برمجياً، استخدم الكود التالي:
-- استخدم StarterGui:SetCore حيث targetPlayer هو كائن Player صالحStarterGui:SetCore("AvatarContextMenuTarget", targetPlayer)
لإغلاق الـ ACM برمجياً، استخدم الكود التالي:
StarterGui:SetCore("AvatarContextMenuTarget", nil)
خيارات القائمة
يمكنك إضافة وإزالة الإجراءات من خلال البرمجة. بشكل افتراضي، تحتوي القائمة على الخيارات التالية:
| خيار القائمة | الوصف |
|---|---|
| صديق | ترسل طلب صداقة للمستخدم المحدد. |
| محادثة | تفتح محادثة خاصة مع المستخدم المحدد في دردشة اللعبة. |
| عرض | يفتح نافذة لفحص مظهر المستخدم المحدد. |
| تلويح | يبدأ حركة تلويح للمستخدم المحدد. |
بمجرد فتح الـ ACM، يمكن للمستخدم التمرير واختيار مستخدمين آخرين في دوامة اختيار الشخصيات. يتم ترتيب الشخصيات على أساس المسافة إلى الشخصية المحددة. تتحديث القائمة فقط عند فتحها وسيتكرر قائمة المستخدمين المتاحين عند التمرير.

إضافة خيارات القائمة
بمجرد تفعيله، يمكن إضافة إجراءات خاصة باللعبة إلى الـ ACM. على سبيل المثال، قد تسمح اللعبة بطلبات التجارة، أو خيارات الإضافة إلى المجموعة، أو تفاعلات خاصة أخرى.
تظهر عينة الكود التالية كيفية إضافة إجراء مخصص إلى قائمة سياق الصورة الرمزية:
local Players = game:GetService("Players")
local StarterGui = game:GetService("StarterGui")
local player = Players.LocalPlayer
-- ربط وظيفة بـ "BindableEvent"
local bindableEvent = Instance.new("BindableEvent")
local function onCustomACMAction(targetPlayer)
-- في هذه المرحلة، يمكنك استدعاء InvokeServer() على RemoteFunction لإخطار الخادم بالاختيار
print("ACM event selected by " .. player.Name .. " on " .. targetPlayer.Name)
end
bindableEvent.Event:Connect(onCustomACMAction)
-- إضافة خيار الـ ACM باستخدام SetCore() مع "AddAvatarContextMenuOption"
local options = {"إجراء ACM مخصص", bindableEvent}
StarterGui:SetCore("AddAvatarContextMenuOption", options)
إزالة خيارات القائمة
يمكنك إزالة الخيارات المخصصة و خيارات الصداقة الافتراضية والدردشة والعرض والتلويح من الـ ACM بالإشارة إلى اسم الإجراء المخصص أو إلى الإعداد الافتراضي لـ Enum.AvatarContextMenuOption.
استخدم الكود التالي لإزالة خيار قائمة افتراضي ومخصص:
-- إزالة خيار "إجراء ACM مخصص"StarterGui:SetCore("RemoveAvatarContextMenuOption", "إجراء ACM مخصص")-- إزالة الخيار الافتراضي "صديق" بالإشارة إلى AvatarContextMenuOption.Friend EnumStarterGui:SetCore("RemoveAvatarContextMenuOption", Enum.AvatarContextMenuOption.Friend)
تخصيص مظهر القائمة
لتغيير مظهر قائمة سياق الصورة الرمزية، استدعِ StarterGui:SetCore() مع الخيار "AvatarContextMenuTheme"، مقدمًا جدولًا من المعلمات والقيم لتعديل مظهر القائمة.
تتضمن واجهة المستخدم للـ ACM الأقسام التالية:

أ. علامة الاسم: اسم المستخدم للشخصية التي يتم التفاعل معها.
ب. إطار الزر: يحتوي على جميع أزرار الـ ACM.
ج. الأزرار: أزرار فردية لإجراءات الـ ACM الافتراضية أو المخصصة.
معلمات المظهر
هذه هي معلمات التخصيص مع الـ ACM:
الخلفية
| BackgroundColor | نوع بيانات Color3 للخلفية العامة لـ ACM (الأكثر فائدة عند عدم استخدام صورة خلفية). |
| BackgroundTransparency | قيمة الشفافية (0–1) للخلفية العامة لـ ACM (الأكثر فائدة عند عدم استخدام صورة خلفية). |
| BackgroundImage | معرف أصل صالح لصورة لخلفية الـ ACM. |
| BackgroundImageTransparency | قيمة الشفافية (0–1) لصورة الخلفية. |
| BackgroundImageScaleType | تعداد Enum.ScaleType لمقياس صورة الخلفية. |
| BackgroundImageSliceCenter | نوع بيانات Rect يحدد مركز الصورة ذات الشرائح التسع عند تعيين BackgroundImageScaleType إلى Enum.ScaleType.Slice. |
علامة الاسم
| NameTagColor | نوع بيانات Color3 للشريط الذي يوضح أي لاعب يتم التفاعل معه. |
| NameUnderlineColor | نوع بيانات Color3 للخط الرقيق بين علامة الاسم وأزرار العمل. |
إطار الزر
| ButtonFrameColor | نوع بيانات Color3 للقطاع (الإطار) الذي يحتوي على أزرار الإجراءات. |
| ButtonFrameTransparency | قيمة الشفافية (0–1) لقطاع إطار الزر. |
الزر
| ButtonColor | نوع بيانات Color3 للخلفية لأزرار إجراءات ACM. |
| ButtonTransparency | قيمة الشفافية (0–1) للون الخلفية لأزرار الإجراءات. |
| ButtonHoverColor | نوع بيانات Color3 لحالة "التمرير فوق" لأزرار الإجراءات. |
| ButtonHoverTransparency | قيمة الشفافية (0–1) للون "التمرير فوق" لأزرار الإجراءات. |
| ButtonUnderlineColor | نوع بيانات Color3 للخط الرقيق الذي يفصل كل زر إجراء. |
| ButtonImage | معرف أصل صالح لصورة لخلفية الأزرار. |
| ButtonImageScaleType | تعداد Enum.ScaleType لمقياس صورة الزر. |
| ButtonImageSliceCenter | نوع بيانات Rect يحدد مركز صورة ذات شرائح تسع عند تعيين ButtonImageScaleType إلى Enum.ScaleType.Slice. |
النص
| Font | تعداد Enum.Font لقيمة علامة الاسم ونص الزر. |
| TextColor | نوع بيانات Color3 لجميع النصوص داخل الـ ACM. |
| TextScale | قيمة عددية لتكبير أحجام النصوص الافتراضية لكل عنصر. |
صورة متنوعة
| LeaveMenuImage | معرف أصل لصورة لزر إغلاق الـ ACM. |
| ScrollLeftImage | معرف أصل لصورة لزر "التمرير لليسار" للدوران. |
| ScrollRightImage | معرف أصل صالح لصورة لزر "التمرير لليمين" للدوران. |
الشخصية المحددة
| SelectedCharacterIndicator | كائن MeshPart الذي يطفو فوق رأس الشخصية للإشارة إلى أنها محددة. |
الحجم والموقع
| Size | نوع بيانات UDim2 للحجم العام لـ ACM. |
| MinSize | نوع بيانات Vector2 يحدد الحد الأدنى لحجم الـ ACM. |
| MaxSize | نوع بيانات Vector2 يحدد الحد الأقصى لحجم الـ ACM. |
| AspectRatio | قيمة عددية تحدد العرض والارتفاع النسبيين لـ ACM. |
| AnchorPoint | نقطة ربط الـ AnchorPoint للـ ACM. |
| OnScreenPosition | نوع بيانات UDim2 يحدد الموضع على الشاشة لـ ACM (الموقع الذي يتحول إليه عند الفتح). |
| OffScreenPosition | نوع بيانات UDim2 يحدد الموضع خارج الشاشة لـ ACM (الموقع الذي يتحول منه/إليه عند الفتح/الإغلاق). |
تخصيص مثال
تخصص عينة الكود التالية ثيم الـ ACM باستخدام بعض المعلمات الأساسية:
local StarterGui = game:GetService("StarterGui")StarterGui:SetCore("AvatarContextMenuTheme", {BackgroundImage = "",BackgroundTransparency = 0.5,BackgroundColor = Color3.fromRGB(111, 145, 242),NameTagColor = Color3.fromRGB(0, 0, 200),NameUnderlineColor = Color3.fromRGB(213, 233, 255),ButtonFrameColor = Color3.fromRGB(15, 24, 65),ButtonFrameTransparency = 0.2,ButtonUnderlineColor = Color3.fromRGB(213, 233, 255),Font = Enum.Font.SciFi})
