تمام، فهمت. تريد إضافة وظيفة لحذف كائنات معينة (بلوكات) من Workspace عندما يموت اللاعب (يصل صحته إلى 0).
سنقوم بتعديل دالة HandleDeath لتنفيذ هذا. سأفترض أن البلوكات التي تريد حذفها موجودة داخل Model معين في Workspace لتنظيمها. يمكنك تغيير اسم الـ Model حسب حاجتك.
التعديلات:
Model باسم محدد (مثلاً: "BlocksToDeleteOnDeath") في Workspace.Model وحذفها باستخدام :Destroy().كيفية الاستخدام:
Explorer داخل Roblox Studio، اذهب إلى Workspace.Workspace واختر Insert Object -> Model.BlocksToDeleteOnDeath (أو الاسم الذي حددته في متغير BlocksContainerName داخل السكربت إذا غيرته).الآن، عندما يموت اللاعب، سيقوم السكربت بالبحث عن Model بهذا الاسم في Workspace وحذف كل شيء بداخله قبل عرض شاشة الموت.
حسنًا، فهمت الآن. أنت لا تريد تعديل سكربت شاشة الموت، بل لديك سكربت آخر يتحكم في مولد طاقة، وتريد إضافة وظيفة إليه:
Model محددة من Workspace. أنت ستحدد أسماء هذه الـ Models.سأقوم بإنشاء سكربت جديد لهذه الوظيفة. يجب وضع هذا السكربت في ServerScriptService ليعمل على مستوى الخادم ويتمكن من حذف الكائنات من Workspace لجميع اللاعبين.
الخطوات:
Script جديد في ServerScriptService.while لتقليل الطاقة كل ثانيتين.Models المحددة وحذفها.كيفية الاستخدام:
Script جديد داخل ServerScriptService في Roblox Studio.local MODEL_NAME_... واستبدل "اسم_الموديل_..." بالأسماء الحقيقية للـ Models الثلاثة الموجودة في Workspace والتي تريد حذفها. تأكد من تطابق الأسماء تمامًا (حالة الأحرف مهمة).Models المحددة.ملاحظات:
Models التي تريد حذفها موجودة مباشرة داخل Workspace وليس داخل Model آخر. إذا كانت داخل Model آخر، ستحتاج لتعديل الكود للبحث عنها في المسار الصحيح (مثل Workspace.SomeContainerModel:FindFirstChild(modelName)).deletionTriggered.print داخل الحلقة لمراقبة مستوى الطاقة في نافذة Output.script.Disabled = true في نهاية StartPowerDrain إذا أردت إيقاف السكربت تمامًا بعد نفاذ الطاقة وتنفيذ الحذف.أحسنت، هذا هو السكربت الصحيح لمولد الطاقة.
ضع هذا السكربت (PowerGeneratorScript.lua) داخل ServerScriptService في نافذة Explorer في Roblox Studio.
ServerScriptService هو المكان المخصص للسكربتات التي يجب أن تعمل على الخادم وتؤثر على اللعبة بأكملها لجميع اللاعبين، مثل التحكم في كائنات Workspace أو إدارة منطق اللعبة العام.
ممتاز. لعرض النسبة المئوية للطاقة على بلوكة (جزء Part) في Workspace، ستحتاج إلى:
Part) في Workspace ليكون بمثابة شاشة العرض.SurfaceGui): يجب إضافة SurfaceGui إلى بلوكة العرض هذه.TextLabel): يجب إضافة TextLabel داخل SurfaceGui. هذا الملصق هو الذي سيعرض النص الفعلي للنسبة المئوية.التعديل على السكربت:
سنضيف متغيرات جديدة في بداية السكربت لتحديد اسم بلوكة العرض، واسم SurfaceGui، واسم TextLabel. ثم سنقوم بتحديث نص TextLabel داخل حلقة استنزاف الطاقة.
كيفية الاستخدام:
ServerScriptService بالكود الجديد أعلاه.local DISPLAY_PART_NAME = "PowerDisplayPart" واستبدل "PowerDisplayPart" بالاسم الحقيقي للـ Part الذي تريد استخدامه كشاشة عرض في Workspace.local SURFACE_GUI_NAME = "StatusGui" واستبدل "StatusGui" بالاسم الحقيقي للـ SurfaceGui الموجود على هذا الـ Part.local TEXT_LABEL_NAME = "PercentageLabel" واستبدل "PercentageLabel" بالاسم الحقيقي للـ TextLabel الموجود داخل هذا الـ SurfaceGui.Part بالاسم الذي حددته في DISPLAY_PART_NAME داخل Workspace.SurfaceGui إلى هذا الـ Part وقم بتسميته بالاسم الذي حددته في SURFACE_GUI_NAME.TextLabel إلى SurfaceGui وقم بتسميته بالاسم الذي حددته في TEXT_LABEL_NAME.SurfaceGui (مثل Face) و TextLabel (مثل TextSize, TextColor3, TextScaled, Size, Position) لتظهر النسبة المئوية بالشكل الذي تريده على البلوكة.TextLabel كل ثانيتين أثناء استنزاف الطاقة.*نعم، بالتأكيد يمكن استخدام BillboardGui بدلاً من SurfaceGui. الميزة الرئيسية لـ BillboardGui هي أن الواجهة ستواجه دائمًا كاميرا اللاعب، مما يجعلها مرئية من أي زاوية تقريبًا.
التعديلات على السكربت:
التغييرات بسيطة جدًا. سنقوم فقط بتغيير اسم المتغير ونوع الكائن الذي نبحث عنه في دالة SetupDisplay.
كيفية الاستخدام:
ServerScriptService بالكود الجديد أعلاه.DISPLAY_PART_NAME ليشير إلى اسم الـ Part الذي تريد أن تظهر الواجهة فوقه أو مرتبطة به.BILLBOARD_GUI_NAME ليشير إلى اسم الـ BillboardGui الذي ستضيفه.TEXT_LABEL_NAME ليشير إلى اسم الـ TextLabel داخل BillboardGui.Part بالاسم الذي حددته في DISPLAY_PART_NAME داخل Workspace.BillboardGui: انقر بزر الماوس الأيمن على الـ Part في نافذة Explorer واختر Insert Object -> BillboardGui.BillboardGui: قم بتسميته بالاسم الذي حددته في BILLBOARD_GUI_NAME.TextLabel: انقر بزر الماوس الأيمن على BillboardGui الذي أضفته للتو واختر Insert Object -> TextLabel.TextLabel: قم بتسميته بالاسم الذي حددته في TEXT_LABEL_NAME.BillboardGui:
Adornee في BillboardGui لتكون هي الـ Part الذي أضفتها إليه (عادة يتم هذا تلقائيًا إذا أضفتها مباشرة للـ Part).Size (عادة باستخدام Scale مثل {1, 0}, {0.5, 0}) و StudsOffset (مثل 0, 3, 0 لرفعها فوق الـ Part) في BillboardGui لتحديد حجم وموضع الواجهة بالنسبة للـ Part.Enabled في BillboardGui محددة (checked).TextLabel: عدّل خصائص TextLabel (مثل Size, Position, TextSize, TextColor3, BackgroundTransparency, TextScaled) لتظهر النسبة المئوية بالشكل المطلوب.BillboardGui وستبقى مواجهة للكاميرا.*تمام، فهمت المطلوب. تريد سكربتًا جديدًا يقوم بالتالي:
TextLabel (في BillboardGui أو SurfaceGui) لعرض رسالة "تم فتح ممر سري".Part معين من Workspace.Model معين (كان مخفيًا أو في مكان آخر مثل ServerStorage).ServerScriptService لأنه يتحكم في كائنات Workspace ويجب أن يعمل مرة واحدة للخادم بأكمله.إليك السكربت الذي يقوم بذلك:
كيفية الاستخدام:
Script جديد داخل ServerScriptService.PART_TO_DELETE_NAME: غيّر "SecretWall" إلى الاسم الحقيقي للـ Part الذي تريد حذفه من Workspace.MODEL_TO_REVEAL_NAME: غيّر "SecretPassage" إلى الاسم الحقيقي للـ Model الذي تريد إظهاره. هام: يجب أن يكون هذا الـ Model موجودًا داخل ServerStorage قبل تشغيل اللعبة.STATUS_TEXTLABEL_PATH: غيّر "StatusDisplayPart.StatusBillboard.StatusLabel" إلى المسار الصحيح للـ TextLabel الذي تريد تحديثه. ابدأ من Workspace واكتب أسماء الكائنات مفصولة بنقطة (.) حتى تصل إلى الـ TextLabel. مثال: Workspace.MyGenerator.DisplayGui.InfoLabel.Part بالاسم المحدد في PART_TO_DELETE_NAME داخل Workspace.ServerStorage: انقل الـ Model الذي تريد إظهاره (بالاسم المحدد في MODEL_TO_REVEAL_NAME) إلى مجلد ServerStorage في نافذة Explorer.TextLabel في المسار المحدد في STATUS_TEXTLABEL_PATH.Output توضح ما يحدث.*