Guides / Commands & Data

‎/execute: لماذا يهم ترتيب as/at وكيف تعمل store فعليًا

معظم سلاسل execute المعطلة تأتي من الخلط بين من ينفذ الأمر وأين يتم تنفيذه. إليك ما يغيره كل أمر فرعي، والترتيب الذي يصلحه.

/execute هو أمر واحد يتظاهر بأنه لغة برمجة نصية. تقريبًا كل فشل يعود إلى أمرين فرعيين يبدوان وكأنهما يفعلان نفس الشيء ولكنهما لا يفعلان.

as يغير مَن. at يغير أين.

  • as <target> — يبدل المنفذ. @s يعني الآن هذا الكيان. الموضع لا يتغير.
  • at <target> — يبدل الموضع، الدوران، والبعد. المنفذ لا يتغير.

لذا هذا لا يفعل شيئًا مفيدًا:

execute as @e[type=zombie] run setblock ~ ~ ~ stone

يتم تشغيله مرة واحدة لكل زومبي، ولكن دائمًا عند قدميك أنت، لذا يضع كتلة واحدة مرارًا وتكرارًا. الحل هو كلاهما:

execute as @e[type=zombie] at @s run setblock ~ ~ ~ stone

at @s يعيد التثبيت إلى الزومبي الذي اختاره as للتو. as … at @s هو الاقتران الأكثر شيوعًا في الأمر بأكمله، ونسيان at @s هو الخطأ الأكثر شيوعًا.

الترتيب من اليسار إلى اليمين، وهو مركب

الأوامر الفرعية تعمل بالتسلسل، كل منها يعدل السياق الذي يراه التالي:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — تمريرة واحدة لكل لاعب
  2. at @s — الانتقال إلى هذا اللاعب
  3. positioned ^ ^ ^3 — 3 كتل أمام المكان الذي ينظرون إليه

بدّل الخطوتين 2 و 3 وسيتم قياس إزاحة علامة الإقحام من دورانك بدلاً من دورانهم.

علامة الإقحام مقابل علامة المد

  • ~ ~ ~ — بالنسبة إلى الموضع، محاذاة لمحاور العالم
  • ^ ^ ^ — بالنسبة إلى الاتجاه: يسار، أعلى، أمام

إحداثيات علامة الإقحام هي السبب في أن positioned ^ ^ ^3 تعني "أمام" و ~ ~ ~3 تعني "3 كتل جنوبًا". خلط الرمزين في ثلاثية إحداثيات واحدة هو خطأ في بناء الجملة.

store هي قيمة إرجاع، وليست متغيرًا

store يلتقط ما يرجعه الأمر — عادةً عدد نجاح أو قيمة نتيجة:

execute store result score @s Count run data get entity @s Inventory

شيئان يخطئ فيهما الناس:

  • result مقابل success. result هو الرقم الذي ينتجه الأمر؛ success هو 1 أو 0 لما إذا كان قد تم تشغيله. عد الكيانات يتطلب result.
  • store يأتي قبل run، وينطبق على الأمر بعد run، وليس على سلسلة الأوامر الفرعية.

if مقابل unless يوقفان الدائرة القصيرة

if و unless يقومان بالتصفية — تتوقف السلسلة هناك عندما يفشل الاختبار. بنود if المتعددة هي AND. لا يوجد OR؛ يتطلب ذلك أمرين منفصلين أو محددًا.

execute as @a if entity @s[gamemode=survival] if score @s Lives matches 1.. run ...

قم ببناء السلسلة أمرًا فرعيًا في كل مرة، مع السياق الموضح في كل خطوة، في منشئ الأوامر المتقدم — يغطي أيضًا البيانات، العناصر، الغنائم، الجدولة، الجسيمات، وتشغيل الصوت من نفس النموذج.

أوامر متقدمة — Execute و Data →

More guides

Browse all →

تبحث عن أدوات ماينكرافت أخرى؟

مجموعة من المولّدات والعارضات والمحوّلات تعمل في المتصفح — كلها مجانية.