لمساعدة في إنشاء تجارب تنافسية قائمة على القتال، تتوفر عدة أسلحة معتمدة للاستخدام في أي تجربة. يتميز النظام الأساسي بأسلحة تعتمد على المقذوفات مع كاميرا فوق الكتف، ويمكن تعيين سرعة المقذوفات بشكل مرتفع بما يكفي لمحاكاة أسلحة التصوير بالرأس مثل البنادق الليزر.

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

هيكل المجلد لنظام الأسلحة
مجلد WeaponsSystem هو مجلد موحد يحتوي على الأصول، والإعدادات، والبرامج النصية التي تمكّن جميع الأسلحة المعتمدة في التجربة. إذا وُجد في ServerScriptService، فإنه يتجاوز أي مجلدات WeaponsSystem المكافئة التي قد تكون موجودة ضمن أسلحة فردية.

يحتوي مجلد WeaponsSystem على العناصر التالية:
- WeaponTypes (Folder) – تحدد جميع أنواع الأسلحة.
- ServerWeaponsScript (Script)
- Version (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
داخل مجلد WeaponsSystem، يتم التحكم في جوانب مختلفة بواسطة ModuleScripts التالية:
| الجانب | يتم التعامل معه بشكل رئيسي ضمن... |
|---|---|
| وظيفية الأسلحة |
|
| الكاميرا فوق الكتف |
|
| واجهة الأسلحة |
|
هيكل السلاح
الأسلحة المعتمدة هي Tools وتسمى كما ستظهر في حقيبة اللاعب. كل سلاح هيكلته تتبع تسلسل هرمي مشابه.
نوع السلاح
تتوافق خاصية WeaponType StringValue مع ModuleScript للسلاح في مجلد WeaponsSystem/WeaponTypes. القيمة الأساسية هما BulletWeapon و BowWeapon.
نموذج السلاح
يحتوي كل سلاح على Model يتكون من جزء أو أكثر من BaseParts لتشكيل السلاح المادي. يجب تعيين واحد من هؤلاء كـ PrimaryPart للنموذج.

يتضمن النموذج أيضًا النسخ المهمة التالية التي قد يتم توصيلها بواحد من BaseParts للنموذج:
- نسخ إضافية لأي خيارات متخصصة.
مقبض السلاح
تحدد قطعة Handle مكان حمل الشخصية للاعب للسلاح. يجب أن تكون Part، ويجب أن تُسمى مقبض، ويجب أن تكون طفلاً مباشراً للسلاح (الأداة).
مجلد التكوين
يحتوي مجلد التكوين على أنواع "القيمة" المحددة لسلوك السلاح. بجانب القيم الافتراضية، يمكنك إضافة عناصر تكوين إضافية لـ خيارات متخصصة عند الاقتضاء.
وفيما يلي الإعدادات الأساسية والقيم الافتراضية لها:
| العنصر | الوصف | الافتراضي |
|---|---|---|
| سعة الذخيرة | عدد الطلقات في كل "مخزن ذخيرة" قبل أن يتعين على اللاعب إعادة التحميل. لاحظ أن الذخيرة غير محدودة وهذا لا يحدد مقدار الذخيرة التي يحملها اللاعب. | 30 |
| وضع النار | اختر من إما نصف آلي (طلقة واحدة لكل نقرة/لمسة)، أوتوماتيكي (نيران مستمرة)، أو شرط تخزين (دفعة من الطلقات تساوي NumBurstShots في كل نقرة/لمسة). | نصف آلي |
| فترة تبريد الطلقة | أدنى وقت انتظار بين النقرات. بالنسبة للأسلحة مع وضع النار الأوتوماتيكي، فهذا هو أيضًا الوقت بين الطلقات أثناء الضغط على زر النار أو الضغط باستمرار. | 0.1 |
| فترة تبريد الطلقات المتعددة | الوقت بين كل طلقة في دفعة؛ يهم فقط إذا قمت بتعيين وضع النار إلى شرط تخزين. | قيمة فترة تبريد الطلقة |
| عدد الطلقات لكل دفعة | عدد الطلقات في كل نقرة/دفعة؛ يهم فقط إذا قمت بتعيين وضع النار إلى شرط تخزين. | 3 |
| ضرر الضرب | مقدار الضرر الذي تسببه كل ضربة مباشرة. | 10 |
| أقصى مسافة للضرر الكامل | أقصى مسافة ستسبب الطلقات فيها ضررًا كاملًا. أي شيء يتم ضربه خارج هذه المسافة سيتلقى ضررًا أقل وأقل كلما اقتربت المسافة من أقصى مسافة للضرر الصفري. | 1000 |
| أقصى مسافة للضرر الصفري | أي شيء يتم ضربه عند أو بعد هذه المسافة لن يتلقى أي ضرر. | 10000 |
| سرعة الرصاص | السرعة التي تسير بها الرصاص/المقذوفات عند الإطلاق. تعيين هذا لقيمة مرتفعة جدًا مثل 20000 يحاكي أسلحة التصوير بالرأس مثل البنادق الليزر. | 1000 |
| أقصى مسافة | أقصى مسافة تسير بها الرصاص/المقذوفات قبل الاختفاء. | 2000 |
| أقل تباعد | أقل مقدار للتباعد للسلاح. | 0 |
| أقصى تباعد | أقصى مقدار للتباعد للسلاح. | قيمة أقل تباعد |
| عامل الجاذبية | مقدار تأثير الجاذبية على كل رصاصة/مقذوف. على سبيل المثال، هذه القيمة بالنسبة لـ القوس والنشاب هي 1 لأن السهام تنحني أثناء الطيران، ولكن هذه القيمة بالنسبة لـ قاذف الصواريخ هي 0 لأن الصواريخ المدفوعة تسير بشكل مستقيم. | 0 |
| يحتوي على منظار | حدد الخيار صحيح إذا كنت تريد استخدام المنظار المشار إليه في واجهة نظام الأسلحة. | false |
| رسوم إعادة التحميل | اسم المسار المتحرك لإعادة التحميل في Assets/Animations من مجلد النظام. | ReloadRifle |
| تتبع الهدف | اسم المسار المتحرك للتتبع الهدف في Assets/Animations من مجلد النظام. | AimRifle |
| تتبع تقريب الهدف | اسم المسار المتحرك للتقريب أثناء التتبع في Assets/Animations من مجلد النظام. | RifleAimDownSights |
| أقل ارتداد | أقل ارتداد يضاف لكل طلقة. | 0.05 |
| أقصى ارتداد | أقصى ارتداد يضاف لكل طلقة. | 0.5 |
| إجمالي الحد الأقصى للارتداد | إجمالي الارتداد المتراكم الأقصى. لن يتجاوز الارتداد الحالي للسلاح هذه القيمة. | 2 |
| تآكل الارتداد | معامل التآكل للاحتباس؛ بشكل أساسي معدل انخفاض الارتداد بعد الإطلاق. | 0.825 |
| فترة تأخير الارتداد | وقت الانتظار بعد الإطلاق/النقر قبل إضافة الارتداد إلى الكاميرا. | 0.07 |
| وقت التشغيل | مدة الوقت التي تلي تجهيز السلاح قبل أن يتمكن اللاعب من إطلاق النار. هذا يمنع اللاعبين من إطلاق طلقة واحدة من عدة أسلحة مختلفة بشكل سريع. | 0.2 |
| سرعة تكرار الصوت المجهز | مقدار تغير طبقة الصوت لصوت Fired للسلاح. ضع هذا على 0 لتشغيله دائمًا بنفس الطبقة. | 0.1 |
| عدد المقذوفات | عدد الرصاص/المقذوفات التي ستطلق في نفس الوقت عند النقر/اللمس مرة واحدة. هذا مفيد للأسلحة مثل البندقية الهجومية التي تطلق عدة رصاصات في نفس الوقت. لاحظ أن طلقة واحدة ستستخدم دائمًا ذخيرتها بدقة بغض النظر عن هذه القيمة. | 1 |
خيارات متخصصة
يمكنك إضافة/تعديل الخيارات التالية لأي سلاح. تتطلب هذه التخصيصات تعديل إما Model للسلاح أو Configuration للسلاح أو كليهما. بعض الإعدادات تعتمد على أخرى، مثل [جزيئات الفوهة](#مادة الفوهة) التي تتطلب الأطفال الضرورية لـ تأثيرات الضرب/المقذوفات والأصوات.
الرسوم المتحركة والمونات الميكانيكية
الجزيء bolt في السلاح هو الجزء الذي يتحرك للأمام والخلف في كل مرة يتم إطلاقه.
- منحدرات نموذج السلاح Weapon Model
| Bolt | BasePart الذي يتحرك عند إطلاق السلاح. | |
| BoltMotor | Motor6D يستخدم للتصميم لدفع الجزيء. تأكد من تعيين Part0 إلى PrimaryPart ونوع Part1 إلى جزء Bolt. | |
| BoltMotorStart | Attachment تحدد موضعها في BasePart الأبوين حيث يكون الجزيء في حالة راحة. | |
| BoltMotorTarget | Attachment تحدد موضعها في BasePart الأبوين حيث يتحرك الجزيء إلى عند التصوير. | |
| BoltOpenSound | Sound الذي يتم تشغيله عندما يتم فتح الجزيء. | اختياري |
| BoltCloseSound | Sound الذي يتم تشغيله عندما يتم إغلاق الجزيء. | اختياري |
- الأطفال في مجلد التكوين للسلاح
| العنصر | الوصف | الافتراضي |
|---|---|---|
| ActionOpenTime | الوقت الذي يستغرقه الجزيء للانتقال إلى وضعه المفتوح. | 0.025 |
| ActionCloseTime | الوقت الذي يستغرقه الجزيء للانتقال إلى وضعه المغلق. | 0.075 |
استخراج علب الرصاص
يمكن أن تتضمن الأسلحة علب رصاص مادية يتم إخراجها عند الإطلاق وتسقط على الأرض.
- منحدرات نموذج السلاح Weapon Model
| CasingEjectPoint | Attachment تحدد موضعها في BasePart الأبوين حيث تريد إخراج علب الرصاص. لاحظ أن اتجاهها يحدد الاتجاه الذي تخرج منه العلب. |
- الأطفال في مجلد التكوين للسلاح
| العنصر | الوصف | الافتراضي |
|---|---|---|
| CasingEffect | اسم الجزء BasePart المخصص في الأصول/التأثيرات/علب ضمن مجلد النظام. | |
| CasingEjectSpeedMin | أدنى سرعة لإخراج العلب | 15 |
| CasingEjectSpeedMax | أقصى سرعة لإخراج العلب | 18 |
| CasingHitSound | Sound يتم تشغيله عند اصطدام العلب بالأرض. | اختياري |
تأثيرات المقذوفات/الضرب والأصوات
يمكنك تكوين مقذوفات مادية لأي سلاح، بالإضافة إلى Sounds و Beams و ParticleEmitters لتأثيرات الضرب والتأثيرات الخاصة الأخرى.
- الأطفال في مجلد التكوين للسلاح
| العنصر | الوصف | الافتراضي |
|---|---|---|
| ShotEffect | اسم تأثير الطلقة المخزن في الأصول/التأثيرات/Shots ضمن مجلد النظام. | |
| ShouldMovePart | حدد صحيح إذا كان يجب أن يتحرك ShotEffect للسلاح مع المقذوف أو خاطئ إذا لم يكن كذلك. يجب عليك فقط ضبط هذا على صحيح إذا كان هناك كائن مرئي يتحرك مع كل طلقة، مثل سهم أو صاروخ. | false |
| BeamFadeTime | الوقت الذي يستغرقه Beam0 أو Beam1 (انظر بالأسفل) للاختفاء بعد ضرب المقذوف/الطلقة لشيء ما. بشكل افتراضي، لن يتم تطبيق أي تلاشي يدوي من خلال الكود. | 0 |
| BeamWidth0 | سمك Beam0 أو Beam1 عند Attachment0 (انظر بالأسفل). | 1.5 |
| BeamWidth1 | سمك Beam0 أو Beam1 عند Attachment1 (انظر بالأسفل). | 1.8 |
| NumHitParticles | عدد الجزيئات التي ستصدرها HitParticles (انظر بالأسفل) الناشر. | 3 |
| HitParticlesUsePartColor | حدد صحيح إذا كنت تريد أن تكون جزيئات الضرب بلون السطح المضروب؛ خاطئ إذا كنت تريد جزيئات الضرب ألا تغير اللون. | صحيح |
جزيئات تأثير الطلقة
نسخ من ShotEffect المحدد التي ذُكرت في القسم السابق
| Flying | Sound الذي يتم تشغيله بينما تسير الرصاصة/المقذوف. | اختياري |
| Beam0 | أول فتحة لجزيء Beam خلف الرصاصة/المقذوف. لا تنسى تعيين Attachment0 و Attachment1. | اختياري |
| Beam1 | ثاني فتحة لجزيء Beam خلف الرصاصة/المقذوف. لا تنسى تعيين Attachment0 و Attachment1. | اختياري |
| Attachment0 | Attachment موضعه في BasePart الأبوين يحدد الجزء الخلفي من الجزيئات المتخلفة؛ تأكد من تعيين Beam.Attachment0 على كلا من Beam0 و Beam1 لذلك. | اختياري |
| Attachment1 | Attachment موضعه في BasePart الأبوين يحدد الجزء الأمامي من الجزيئات المتخلفة؛ تأكد من تعيين Beam.Attachment1 على كلا من Beam0 و Beam1 لذلك. | اختياري |
| TrailParticles | ParticleEmitter الذي يتم تعيينه كطفل مباشر لـ Attachment0؛ سوف يقوم بإصدار الجزيئات أثناء تحرك الرصاصة/المقذوف. | اختياري |
| LeadingParticles | ParticleEmitter الذي يتم تعيينه كطفل مباشر لـ Attachment1؛ سوف يقوم بإصدار الجزيئات أثناء تحرك الرصاصة/المقذوف. | اختياري |
| HitEffect | Attachment موضعه سيحدد موقع Beam.Attachment1 لـ Beam0 عندما تضرب الرصاصة/المقذوف. يجب أن تحدد Beam0 ووصلة التجهيزات الخاصة بها لكي تعمل بشكل صحيح. | اختياري |
| HitSound | Sound التي يتم تعيينها كطفل مباشر لـ HitEffect؛ تُشغل عندما تضرب الرصاصة/المقذوف. | اختياري |
| HitParticles | Sound التي يتم تعيينها كطفل مباشر لـ HitEffect؛ تصدر عندما تضرب الرصاصة/المقذوف. | اختياري |
| [ProjectilePart] | أي Part أو MeshPart تريد أن تظهر كمقذوف مادي. تأكد من تعيين ShouldMovePart الذي تم الإشارة إليه في القسم السابق إلى صحيح إذا كان لديك كائن مرئي هنا. | اختياري |
جزيئات الفوهة
هذا الخيار يقوم بإصدار جزيئات من ParticleEmitter المحدد عند TipAttachment Attachment للسلاح عندما يتم إطلاقه.
نسخ الإعدادات:

لبناء تأثير الطلقة المحدد، أضف أصل ParticleEmitter في WeaponsSystem/Assets/Effects/Shots باسم MuzzleParticles.

التألق من الفوهة
هذا الخيار ينشئ تأثير وميض Beam عند إطلاق السلاح.
نسخ النموذج:

- MuzzleFlash0 (Attachment) — تستخدم لتحديد أحد جانبي وميض الفوهة. لا يهم الموضع.
- MuzzleFlash1 (Attachment) — تستخدم لتحديد الجانب المعاكس من وميض الفوهة. لا يهم الموضع.
نسخ الضبط:

- MuzzleFlashRotation0 (NumberValue) (اختياري) — الحد الأدنى لدوران وميض الفوهة؛ الافتراضي هو -math.pi.
- MuzzleFlashRotation1 (NumberValue) (اختياري) — الحد الأقصى لدوران وميض الفوهة؛ الافتراضي هو math.pi.
جزيئات الذيل
هذا الخيار ينشئ أثرًا بطول متغير من السلاح إلى نقطة تأثير المقذوف.
نسخ الضبط:

- TrailLength (NumberValue) (اختياري) — طول الأثر خلف الرصاصة/المقذوف؛ الافتراضي هو nil مما يعني أن طول الأثر سيتم حسابه باستخدام TrailLengthFactor.
- TrailLengthFactor (NumberValue) (اختياري) — سيتم تعيين طول الأثر إلى هذه القيمة مضروبة في المسافة التي سارت بها الرصاصة/المقذوف في الإطار الأخير؛ الافتراضي هو 1. لاحظ أن هذا سيتم تجاوزه إذا قمت بتضمين TrailLength.
- ShowEntireTrailUntilHit (BoolValue) (اختياري) — حدد صحيح لعرض الأثر من رأس السلاح حتى حيثما يكون المقذوف؛ سيتجاوز ذلك كلا من TrailLength و TrailLengthFactor وسيتوقف الأثر فقط لغضب المقذوف. حدد خاطئ لاستخدام أحد الخيارين أعلاه لحساب طول الأثر. الافتراضي هو خاطئ.
علامات الضرب
يظهر هذا الإضافة البصرية على السطح حيث تضرب المقذوفات وهو مفيد للسهام، وثقوب الرصاص، وعلامات الحروق، وما إلى ذلك.
نسخ الضبط:

- HitMarkEffect (StringValue) (اختياري) — اسم تأثير علامة الضرب المخزن في WeaponsSystem/Assets/Effects/HitMarks؛ الافتراضي هو BulletHole.
- AlignHitMarkToNormal (BoolValue) (اختياري) — حدد صحيح إذا كان يجب أن تكون علامة الضرب دائمًا متوافقة بشكل مسطح مع السطح مثل ثقب الرصاصة، أو خاطئ إذا كان يجب أن تظهر علامة الضرب ملتصقة بالسطح من الاتجاه الذي أتت منه المقذوفة (مثل السهم). الافتراضي هو صحيح.
يمكنك إضافة الأصل الاختياري التالي ضمن WeaponsSystem/Assets/Effects/HitMarks:

- Glow (Decal) (اختياري) — تظهر على السطح المضروب بشكل غير شفاف كليًا، ثم بسرعة تصبح أكثر شفافية، مثل تأثير مضيء على السطح يتلاشى بسرعة. مفيد الأشياء مثل إظهار علامة حمراء متوهجة حيث تضرب المتفجرات.
- BulletHole (Decal) (اختياري) — تظهر على السطح المضروب بشكل غير شفاف كليًا، وبعد 4 ثوانٍ، تتلاشى إلى الشفافية خلال 1 ثانية.
- ImpactBillboard (BillboardGui) (اختياري) — تظهر على السطح المضروب، تواجه دائمًا نحو الكاميرا.
- Impact (ImageLabel) (اختياري) — طفل مباشر لـ ImpactBillboard؛ يبدأ بشكل غير شفاف كليًا، ويكبر إلى الحجم الكامل لـ ImpactBillboard خلال 0.1 ثانية، ثم يتقلص إلى نصف حجمه ويتلاشى إلى الشفافية التامة خلال 0.1 ثانية.
- أي Part/MeshPart/SpecialMesh التي تريد أن تظهر كمقذوف مادي (اختياري). على سبيل المثال، تضمين سهم MeshPart وتعيين AlignHitMarkToNormal الذي تم الإشارة إليه أعلاه إلى خاطئ سيجعل السهم يبرز من السطح من الاتجاه الذي أصابته.
المقذوفات المتفجرة
يمكن أن تتضمن المقذوفات كائن انفجار لإلحاق الضرر بشخصيات اللاعبين في منطقة حول نقطة التأثير.
نسخ الضبط:

- ExplodeOnImpact (BoolValue) (اختياري) — حدد صحيح إذا كنت تريد أن تنفجر الرصاص/المقذوفات للسلاح عند التأثير، خاطئ خلاف ذلك، الافتراضي هو خاطئ.
- BlastDamage (NumberValue) (اختياري) — مقدار الضرر الذي يسبب للأشياء في مركز الانفجار. لاحظ أن الانفجار يلحق ضررًا أقل كلما ابتعدت الأشياء المضروبة عن مركز الانفجار. الافتراضي هو 100.
سلاح الشحن
سلاح الشحن مثل بندقية السكة يجب أن يتم شحنه بين الطلقات قبل أن يتمكن من الإطلاق مرة أخرى.
نسخ النموذج:

- Charging (Sound) (اختياري) — يتم تشغيلها بينما يتم شحن السلاح.
- Discharging (Sound) (اختياري) — يتم تشغيلها أثناء تفريغ السلاح، على سبيل المثال إذا كنت تشحن السلاح جزئيًا فقط وتترك زر الإطلاق.
- ChargeComplete (Sound) (اختياري) — يتم تشغيلها عندما يصل السلاح إلى الشحن الكامل.
- DischargeComplete (Sound) (اختياري) — يتم تشغيلها عندما يتم تفريغ السلاح بالكامل.
- ChargeGlow (BasePart) (اختياري) — سيتقلص هذا الكائن تدريجيًا عندما يتم شحن السلاح، بحيث يصبح غير شفاف بالكامل عند الشحن 100%.
- ChargeCompleteParticles (ParticleEmitter) (اختياري) — تصدر عندما ينتهي السلاح من الشحن. يمكن أن يكون هذا الناشر طفلًا لأي نموذج BasePart أو طفلًا من Attachment ضمن BasePart.
- DischargeCompleteParticles (ParticleEmitter) (اختياري) — تصدر عندما يتم تفريغ السلاح بالكامل. يمكن أن يكون هذا الناشر طفلًا لأي نموذج BasePart أو طفلًا من Attachment ضمن BasePart.
- ChargingParticles (ParticleEmitter) (اختياري) — تصدر بينما يتم شحن السلاح. يمكنك تضمين العديد من الناشرين بهذا الاسم وسيتسجدم كل منهم أثناء الشحن. يمكن أن يكون هذا الناشر طفلًا لأي نموذج BasePart أو طفلًا من Attachment ضمن BasePart.
نسخ الضبط:

- ChargeRate (NumberValue) — معدل شحن السلاح. يجب تحديد هذه القيمة للإشارة إلى أن السلاح يستخدم الشحن.
- DischargeRate (NumberValue) (اختياري) — معدل التفريغ للسلاح؛ الافتراضي هو 0 مما يعني أن السلاح لن يتفريغ على الإطلاق.
- ChargePassively (BoolValue) (اختياري) — حدد صحيح إذا كنت تريد أن يتم شحن السلاح بشكل نشط لكي يطلق على الفور عندما تنقر، أو خاطئ إذا كنت تريد النقر/اللمس لشحن السلاح وإطلاقه عند الوصول للشحن الكامل. الافتراضي هو خاطئ.
- ChargingParticlesRatePerCharge (IntValue) (اختياري) — عدد الجزيئات التي ستصدر من جميع الناشرين ChargingParticles مضروبة في الشحن الحالي للسلاح. الافتراضي هو 20، مما يعني أنه إذا كانت الشحنة للسلاح عند 10%، سيصدر كل ناشر من الناشرين جزيئين (20×0.1)، وإذا كانت الشحنة للسلاح عند 90%، سيصدر كل ناشر من الناشرين 18 جزيءًا (20×0.9).
- FireDischarge (NumberValue) (اختياري) — مقدار الشحن الذي سيفقده السلاح بعد إطلاق طلقة مشحونة بالكامل؛ الافتراضي هو 1.
- NumChargeCompleteParticles (IntValue) (اختياري) — عدد الجزيئات التي سيصدرها الناشر ChargeCompleteParticles عند شحن السلاح بالكامل. الافتراضي هو 25.
- NumDischargeCompleteParticles (IntValue) (اختياري) — عدد الجزيئات التي سيصدرها الناشر DischargeCompleteParticles عند تفريغ السلاح بالكامل. الافتراضي هو 25.
سلاح القوس
يمكن أن تتضمن سلاح القوس مثل القوس والنشاب تركيبة خيط وأذرع واقعية، فضلاً عن سهم مرئي موصول للخيط.
بالإضافة إلى إضافة نموذج النسخ، تحتاج إلى تطبيق ما يلي:
- اجعل السلاح سلاحًا قابلًا للشحن. على سبيل المثال، أضف ChargeRate المطلوبة ضمن تكوين السلاح الذي يحدد سرعة سحب الخيط. بالإضافة إلى ذلك، فكر في إضافة نسخ اختيارية لنموذج السلاح مثل صوت Charging للخيط/الأذرع عند سحبها.
نسخ النموذج:

- LeftString (Beam) (اختياري) — نصف الخيط المرئي الأيسر.
- RightString (Beam) (اختياري) — نصف الخيط المرئي الأيمن.
- Arrow (BasePart) (اختياري) — السهم الذي يظهر عند سحب القوس بالكامل. لاحظ أن هذا فقط للظهور البصري على القوس (السهم الذي تم إطلاقه فعليًا سيكون ShotEffect كما هو مبين في تأثيرات الضرب/المقذوفات والأصوات).
- String1 (Attachment) (اختياري) — النقطة المركزية للخيط.
- Arms (Part) (اختياري) — جزء فقط يعمل كمؤشر داخلي بأن ذراعي القوس سيتم تحريكه. يمكن أن يحتوي على الأطفال المباشرين التالية:
- LeftString0 (Attachment) (اختياري) — النقطة حيث يتم توصيل الجانب الأيسر من الخيط بالقوس.
- RightString0 (Attachment) (اختياري) — النقطة حيث يتم توصيل الجانب الأيمن من الخيط بالقوس.
- LeftLoose (Attachment) (اختياري) — النقطة حيث ينبغي أن يكون LeftString0 عندما يكون القوس في حالة راحة.
- RightLoose (Attachment) (اختياري) — النقطة حيث ينبغي أن يكون RightString0 عندما يكون القوس في حالة راحة.
- LeftTight (Attachment) (اختياري) — النقطة حيث ينبغي أن يكون LeftString0 عندما يتم سحب القوس بالكامل.
- RightTight (Attachment) (اختياري) — النقطة حيث ينبغي أن يكون RightString0 عندما يتم سحب القوس بالكامل.
- [SpecialMesh] (SpecialMesh) (اختياري) — الجزء من القوس الذي سينحني فعليًا عند شد القوس. لاحظ أنه يجب عليك تحديد الأربعة التالية من الكائنات Vector3Value لجعل هذا يتحرك.
واجهة نظام الأسلحة
يتفاعل نظام الأسلحة المركزي مع هذا النظام لتحديث واجهة المستخدم بناءً على أشياء مثل تباعد السلاح، والمؤشرات حينما يتم ضربك أو تضرب الآخرين، وما إلى ذلك.
واجهة WeaponsSystemGui هي كائن ScreenGui في WeaponsSystem/Assets يتم توصيله بـ PlayerGui عند بدء التجربة. تحتوي WeaponsSystemGui على 4 أبناء:
- ScalingElements - مجلد Folder لعناصر الشاشة.
- LargeTouchscreen - إطار Frame للأزرار على الشاشات الكبيرة.
- SmallTouchscreen - إطار Frame للأزرار على الشاشات الصغيرة.
عناصر التوسيع
ScalingElements هو مجلد Folder متصل بـ WeaponsSystemGui بالأبناء التالية:
| الاسم | نوع المنصة | الوصف |
|---|---|---|
| DirectionalIndicators | Folder | مجلد Folder حيث يتم تخزين جميع مؤشرات الاتجاه. |
| Crosshair | Frame | إطار Frame يحتوي على الكائنات التالية: [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | إطار Frame يحتوي على الكائنات التالية: [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel التي تظهر وتبدأ بالتلاشي عندما ينجح اللاعب في ضرب شخصية لاعب آخر. |
LargeTouchscreen
LargeTouchscreen هو إطار Frame يحتوي على الأزرار التي تظهر على الشاشات الكبيرة. يحتوي LargeTouchscreen على الأبناء التالية:
- AimButton (ImageButton)
- FireButton (ImageButton)
Scope
Scope هو إطار Frame يحتوي ScopeImage (ImageLabel) الذي يظهر عند تقريب السلاح مع HasScope مفعلًا (انظر هيكل السلاح).
Scope تحتوي على الأبناء التالية:
| الاسم | نوع المنصة | الوصف |
|---|---|---|
| ScopeInstance | Frame | إطار Frame يحتوي على الأصول التالية المستخدمة عند التقريب على سلاح مع HasScope مفعل: [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
SmallTouchscreen
SmallTouchScreen هو إطار Frame يحتوي على الأزرار التي تظهر على الشاشات الصغيرة. يحتوي SmallTouchscreen على الأبناء التالية:
- AimButton (ImageButton)
- FireButton (ImageButton)
إنشاء مؤشر الاتجاه
تستخدم مؤشرات الاتجاه لإظهار اتجاه شيء ما حول نقطة هدف اللاعب. على سبيل المثال، إذا أطلق شخص النار عليك، يمكن أن يظهر نصف دائري أحمر حول نقطة الهدف للإشارة إلى اتجاه الطلقة. تشمل الأمثلة الأخرى مؤشرات تظهر اتجاه خطوات القدم، أو إطلاق نار غير مباشر، أو حتى أشياء بيئية مثل الصناديق.
لإنشاء مؤشر جديد، أضف إطار مؤشر جديد Frame في WeaponsSystemGui/ScalingElements/DirectionalIndicators بالهيكل التالي:
| الاسم | نوع المنصة | الوصف |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | صورة لمؤشر الاتجاه. قد يتطلب تدوير الصورة في الاستوديو تعديلات ما لم تقم بتحميل الصورة بحيث تواجه للأسفل ولا يوجد حولها مساحة فارغة تقريبًا. يجب أن تحتوي هذه الصورة على UIAspectRatioConstraint الخاص بها أيضًا. |
| [Configuration] | Configuration | تحتوي على الخصائص الاختيارية للتعديل. انظر تهيئة المؤشر لمزيد من المعلومات. |
بعد إنشائه، يمكنك تنشيط مؤشر عبر الأمر التالي داخل WeaponsSystem/Libraries/WeaponsGui حيث يكون indicatorName هو اسم السلسلة للمؤشر المفعّل وworldPos هو الموقع العالمي الذي يجب أن تشير إليه مؤشر الاتجاه:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
تهيئة المؤشر
يمكن تعديل DirectionalIndicators بشكل أكبر عن طريق تعديل كائن Configuration المتصل تحت [Indicator]. جميع هذه الإعدادات لها قيمة افتراضية، لذلك لا حاجة لتعيين التكوينات عند عدم تعديل إعداد.
يمكن تعيين الإعدادات التالية:
| الاسم | نوع المنصة | الوصف |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | عدد مستويات المسافة من مركز الشاشة (كل مستوى مسافة هو حوالي 0.03 مقياس الشاشة)؛ الافتراضي هو 6. |
| FadeTime | NumberValue | وقت تلاشي المؤشر بعد تفعيله وزمن TimeBeforeFade؛ الافتراضي هو 1. |
| Name | StringValue | اسم مؤشر الاتجاه كما تريد الإشارة إليه في الكود؛ الافتراضي هو اسم الإطار الأساسي للمؤشر. |
| TimeBeforeFade | NumberValue | عدد الثواني التي سيظهر فيها المؤشر قبل أن يتلاشى؛ الافتراضي هو 1. |
| TransparencyBeforeFade | NumberValue | شفافية المؤشر قبل أن يبدأ في التلاشي؛ الافتراضي هو 0. |
| WidthLevel | NumberValue | عدد مستويات العرض من المركز (كل مستوى عرض هو حوالي 0.03 مقياس الشاشة)؛ الافتراضي هو قيمة DistanceLevelFromCenter. |
عرض لافتة الضرر
تستخدم لافتة الضرر لإظهار الأرقام الصغيرة فوق رأس الشخصية عندما تتعرض للأذى. ستظهر هذه فقط للاعب الذي ألحق الأذى بشخصية لاعب آخر، وليس للاعبين المتفرجين.
تتم معالجة لافتات الضرر في WeaponsSystem/Libraries/DamageBillboardHandler ويمكن تفعيلها من أي كود من جانب العميل كما يلي، حيث يكون damage هي مقدار الضرر الذي تم إلحاقه وadornmentPart هو الجزء الذي سيتم تزيينه بالإعلان، مثل رأس الضحية:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
الكاميرا على الكتف
الكاميرا على الكتف هي كاميرا من منظور ثالث تراقب من فوق كتف اللاعب الأيمن. لتخصيص الكاميرا على الكتف، قم بتعديل المتغيرات تحت تعليق -- "معلمات التكوين (ثوابت)" في دالة ShoulderCamera.new() ضمن WeaponsSystem/Libraries/ShoulderCamera. يمكنك تعديل أمور مثل مجال الرؤية، والإزاحة من الشخصية، وسرعة المشي أثناء الجري أو التقريب، وما إلى ذلك.
التحكم في الجري والتقريب
بشكل افتراضي، يضيف نظام الأسلحة إمكانية "الجري"، بحيث يمكن للاعبين الجري عن طريق الضغط على مفتاح Shift، أو الدفع بالكامل على العصا الديناميكية (الجوال)، أو الدفع بالكامل على عصا التحكم اليسرى (وحدة التحكم). إذا كنت ترغب في تعطيل الجري، فقم بتعيين قيمة SprintEnabled ضمن WeaponsSystem/Configuration إلى خاطئ.
يقلل النظام أيضًا من سرعة اللاعب أثناء التصويب/التقريب، ولكن يمكنك تعطيل هذا السلوك عن طريق تعيين قيمة SlowZoomWalkEnabled إلى خاطئ.









