AR/addCommandHandler
.تقوم هذه الوظيفة بربط وظيفة معينة وجعلها كوظيفة منفذة لأمر معين, وبذلك عندما يقوم لاعب أو إداري بإستعمال هذا الأمر, سوف يتم تنفيذ الوظيفة المرتبطة بهذا الأمر
Important Note: .لا تقم بإستعمال نفس إسم الوظيفة المُنفِذة (الفنكشن) كإسم للأمر, قد يقود هذا الشيء الى التسبب في إرتباك إذا أُستِعملَت عدة وظائف مُنفِذة عن طريق أمرٌ واحد. إستخدم إسم يصف غاية الوظيفة المُنفِذة بشكلٍ أدق |
- يتم إستعمال الإمر في اللعبه بالطريقة الآتية
...إسم الأمر [الآرجمنت الأول] [الآرجمنت الثاني] [إلخ]
يمكن إستعمال الأمر لوحة تحكم اللاعب (اف 8) أو مباشرة من مربع الدردشة (الشات) بإضافة الرمز (/) في بداية الأمر. بالنسبة للأوامر المدرجة في قسم السيرفر, بإمكان الإداريين الذين يملكون صلاحية للدخول على إستضافة الخادم بإستعمالها عن طريق لوحة التحكم الخادم بنفس الطريقة التي يتم إستعمالها بواسطة لوحة تحكم اللاعب (اف 8).ـ
بناء الجملة
bool addCommandHandler ( string commandName, function handlerFunction [, bool restricted = false, bool caseSensitive = true ] )
معطيات إجبارية
- commandName: هذا إسم الأمر الذي تريد ربط الوظيفة المُنفِذة بِه. هذا هو إسم الأمر الذي يجب كتابته في لوحة التحكم لتشغيل الوظيفة المُنفِذة
- handlerFunction: هذي هي الوظيفة المُنفِذة التي تريد ان يقوم الأمر بتشغيلها, والتي يجب ان تكون مكتوبه أو مُعَرفّه قبل إضافة الأمر. هذا الفنكشن يقوم بأخذ معاملان أساسيان : [اللاعب الذي قام بإستعمال الأمر], [إسم الأمر الذي إستخدمه اللاعب ], مصحوبًا
. بقدر ماتشاء من المعاملات التي يقوم بإضافتها اللاعب ( أُنظر الى المثال في الأسفل ). وهذه المعاملات إختيارية وليست إجبارية
معطيات إختيارية
NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.
- restricted: (قائمة التحكم بالوصول) ACL يحدد ما إذا كان يجب تقييد هذا الأمر افتراضيًا أم لا. استخدم هذا في الأوامر التي يجب ألا يكون الوصول إليها متاحًا للجميع, باستثناء المستخدمين الخاصين المُضافين في
ضمن المجموعة المناسبة لقابلية إستعماله من قبل "ACL" تأكد من إضافة الأمر إلى قائمة التحكم بالوصول ."ACL" متاحًا للجميع إذا نسي مسؤول/مبرمج الخادم تقييدها في "ban" هذا لضمان عدم إستعمال أوامر إدارية من قبل لاعبين عاديين, على سبيل المثال: لن يكون الأمر
-: المستخدمين المُضافين لهذه المجموعة. مثال
<right name = "command.killEveryone" access = "true"> </right>
بشكل إفتراضي "false" اذا لم يتم تحديد هذا الفراغ, فسوف يتم إعتباره كـ
- caseSensitive: (يحدد ما إذا كان معالج الأمر سوف يتجاهل حالة الأحرف ام لا (أحرف كبيرة أو صغيرة
bool addCommandHandler ( string commandName, function handlerFunction [, bool caseSensitive = true ] )
معطيات إجبارية
- commandName: هذا إسم الأمر الذي تريد ربط الوظيفة المُنفِذة بِه. هذا هو إسم الأمر الذي يجب كتابته في لوحة التحكم لتشغيل الوظيفة المُنفِذة
- handlerFunction: هذي هي الوظيفة المُنفِذة التي تريد ان يقوم الأمر بتشغيلها, والتي يجب ان تكون مكتوبه أو مُعَرفّه قبل إضافة الأمر. هذا الفنكشن يقوم بأخذ معاملان أساسيان : [اللاعب الذي قام بإستعمال الأمر], [إسم الأمر الذي إستخدمه اللاعب ], مصحوبًا
. بقدر ماتشاء من المعاملات التي يقوم بإضافتها اللاعب ( أُنظر الى المثال في الأسفل ). وهذه المعاملات إختيارية وليست إجبارية
معطيات إختيارية
NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.
- caseSensitive: (يحدد ما إذا كان معالج الأمر سوف يتجاهل حالة الأحرف ام لا (أحرف كبيرة أو صغيرة
معاملات الوظيفة المُنفِذة
هذه هي المعاملات للوظيفة المُنفِذة التي يتم تشغيلها عند إستعمال الأمر
player playerSource, string commandName [, string arg1, string arg2, ... ]
- playerSource: الذي قام بإستخدام الأمر سواء كان لاعبًا أو عنصر وحدة تحكم الخادم (element) العنصر
- commandName: إسم الأمر الذي تم إستخدامه لتنفيذ هذه الوظيفة, مفيد جدًا اذا كان هناك اكثر من امر مرتبط بوظيفة واحدة
- arg1, arg2, ...: .nil كل كلمة تمت كتابتها بعد إسم الأمر, يتم تمريرها هنا كمتغير منفصل. اذا لم يدخل المُستخدم المعطيات الكافية بعد إسم الأمر, فسوف يحتوي المتغير الذي لم يحظى بأي معطيات بـ
كما هو معروض في مثال 2 قسم السيرفر في الأسفل ,'vararg'يمكنك التعامل مع عدد غير محدد من المعطيات بإستخدام تعبير
string commandName [, string arg1, string arg2, ... ]
- commandName: .إسم الأمر الذي تم إستخدامه لتنفيذ هذه الوظيفة, مفيد جدًا اذا كان هناك اكثر من امر مرتبط بوظيفة واحدة
- arg1, arg2, ...: .nil كل كلمة تمت كتابتها بعد إسم الأمر, يتم تمريرها هنا كمتغير منفصل. اذا لم يدخل المُستخدم المعطيات الكافية بعد إسم الأمر, فسوف يحتوي المتغير الذي لم يحظى بأي معطيات بـ
كما هو معروض في مثال 2 قسم السيرفر في الأسفل ,'vararg'يمكنك التعامل مع عدد غير محدد من المعطيات بإستخدام تعبير
العوائد
بخلاف ذلك false إذا تم إضافة معالج الأمر بنجاح, و true يقوم بإعادة القيمة
الأمثلة
والذي سيقوم بإنشاء بيد (بوت) في نفس موقع اللاعب الذي يقوم بإستعمال الأمر createPed المثال 1 في هذا المثال نقوم بتعريف معالج الأمر للأمر
-- نقوم بتعريف الوظيفة الخاصة بنا والتي سوف تتعامل مع هذا الأمر function createBot( thePlayer, commandName ) -- إذا كان العنصر الذي قام بإستعمال الأمر من نوع لاعب وليس وحدة تحكم الخادم if getElementType(thePlayer) == "player" then -- نأخذ إحداثيات اللاعب local position = Vector3 (getElementPosition ( thePlayer) ) -- نأخذ إستدارة اللاعب local _, _, rotation = getElementRotation( thePlayer) -- نأخذ الدمنشن الخاص باللاعب local dim = getElementDimension(thePlayer) -- نأخذ الإنتيريور الخاص باللاعب local int = getElementInterior(thePlayer) -- (table) نأخذ كل السكنات الصالحة للإستعمال على شكل مصفوفة local allSkins = getValidPedModels ( ) -- نأخذ رقم عشوائي يبدأ من 1 وحتى حجم المصفوفة local randomSkinID = math.random ( #allSkins ) -- نقوم بإنشاء البوت بإستخدام السكن الذي تم إختياره عشوائيًا وننشؤه بنفس موقع وإستدارة اللاعب local theBot createPed ( allSkins[randomSkinID], position, rotation ) -- نقوم بوضع البوت في نفس الدمنشن الخاص باللاعب setElementDimension(theBot, dim) -- نقوم بوضع البوت في نفس الإنتيريور الخاص باللاعب setElementInterior(theBot, int) -- نقوم بطباعة الكلام في صندوق الدردشة الخاص باللاعب outputChatBox ( "! لقد قمت بإنشاء بوت", thePlayer) else -- في حال لم يكن هناك لاعب او تم استعمال الامر من خلال وحدة تحكم الخادم, نقوم بإرسال رساله الى وحدة التحكم تتضمن إسم الأمر الذي تم إستعماله outputServerLog ( "من خلال وحدة تحكم الخادم '"..commandName.."' لايمكنك إستعمال الأمر" ) end end -- 'makeBot' بالأمر 'createBot' نقوم بربط الوظيفة addCommandHandler ( "makeBot", createBot )
سيتم إستكماله قريبًا
تم إنشاء هذه الصفحة من قبل سلمان التميمي - 506