Jump to content

Search the Community

Showing results for tags 'شرح'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Multi Theft Auto: San Andreas 1.x
    • Support for MTA:SA 1.x
    • User Guides
    • Open Source Contributors
    • Suggestions
    • [Read-Only] Ban appeals
  • General MTA
    • News
    • Media
    • Site/Forum/Discord/Mantis/Wiki related
    • MTA Chat
    • Other languages
  • MTA Community
    • Scripting
    • Maps
    • Resources
    • Other Creations & GTA modding
    • Competitive gameplay
    • Servers
  • Other
    • General
    • Multi Theft Auto 0.5r2
    • Third party GTA mods
  • Archive
    • Archived Items
    • Trash

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Gang


Location


Occupation


Interests

Found 9 results

  1. ‫ :جدول المُحتويات ‫ مقدمة تحليلية: كيف تُربط MTA:SA مع Discord باستخدام Webhook؟‬ ‫ المفهوم العام (اللوجيك الأساسي)‬ ‫ تحليل الكود خطوة بخطوة‬ ‫ خلاصة المنطق كاملًا‬ ‫ ملاحظات إضافية للمطور‬ ‫ مصادر مهمة‬ ‫ مقدمة تحليلية: كيف تُربط MTA:SA مع Discord باستخدام Webhook؟‬ ‫‬ ‫السلام عليكم ورحمة الله وبركاته ‫في هذا المشروع، نريد تمكين اللاعب من إرسال رسالة من داخل اللعبة إلى قناة في Discord. لتحقيق هذا سنستخدم:‬ ‫‬ ‫- أمر داخل اللعبة (command)‬ ‫- كود Lua في سيرفر MTA‬ ‫- خدمة Webhook من Discord‬ ‫- دالة `fetchRemote` في MTA لإرسال البيانات إلى Discord‬ ‫ ‫ المفهوم العام (اللوجيك الأساسي):‬ ‫‬ ‫1. اللاعب يكتب أمر داخل اللعبة مثل `/discord مرحباً`.‬ ‫2. السكربت يقرأ هذا الأمر ويستخرج الرسالة.‬ ‫3. السكربت يُنشئ رسالة منسّقة (باستخدام JSON).‬ ‫4. يتم إرسال هذه الرسالة إلى Discord عبر رابط Webhook.‬ ‫5. Discord يعرض الرسالة داخل القناة المحددة.‬ ‫ ‫ تحليل الكود خطوة بخطوة:‬ ‫‬ ‫ رابط الويب هوك‬ ‫ local discordWebhook = "https://discord.com/api/webhooks/...." ‫- هذا هو الرابط الأساسي.‬ ‫- Discord يوفّره لك لكل قناة تريد استقبال الرسائل فيها.‬ ‫- يتم تخزينه في متغير `discordWebhook` لاستخدامه لاحقًا عند الإرسال.‬ ‫‬ ‫‬ ‫ دالة تنفيذ الأمر‬ ‫ function sendMessageToDiscord(player, command, ...)‬ ‫‬ ‫- هذه الدالة يتم ربطها بالأمر `/discord`.‬ ‫- يتم تنفيذها تلقائيًا عندما يكتب اللاعب الأمر.‬ ‫- البراميتر `player` هو كائن اللاعب الذي نفّذ الأمر.‬ ‫- البراميتر `...` يمثل كل الكلمات التي كتبها اللاعب بعد الأمر.‬ ‫‬ ‬ ‫‬ ‫ جمع الرسالة‬ local message = table.concat({...}, " ") ‬‫ ‫- يتم دمج الكلمات التي كتبها اللاعب إلى جملة واحدة.‬ ‫- مثلًا: `/discord السلام عليكم يا شباب` → تصبح `"السلام عليكم يا شباب"`.‬ ‫‬ ‫ التحقق من وجود رسالة‬ if message == "" then outputChatBox("اكتب رسالة! مثال: /discord مرحبا", player, 255, 0, 0) return end ‫- إذا لم يكتب اللاعب أي شيء، يتم عرض تنبيه داخل اللعبة.‬ ‫- يتم إيقاف تنفيذ الدالة (باستخدام `return`).‬ ‫‬ ‫ تجهيز بيانات الرسالة‬ ‫local playerName = getPlayerName(player)‬ ‫- نحصل على اسم اللاعب الذي كتب الرسالة.‬ ‫‬ ‫ إعداد شكل الرسالة (باستخدام `embeds`)‬ ‫ local webhookData = { username = "MTA:SA Server", -- اسم البوت في Discord embeds = {{ title = "رسالة من اللاعب", description = message, color = 3447003, -- لون الشريط (أزرق) author = {name = playerName}, footer = {text = "MTA:SA Discord Bot"}, timestamp = os.date("!%Y-%m-%dT%H:%M:%SZ") -- وقت الإرسال بصيغة ISO }} } ‬ ‫ هذا الجزء هو أهم جزء، لأن Discord يستخدم ما يسمى بـ `embeds` لتنسيق الرسائل، ويتضمن:‬ ‫‬ ‫‫+----------------+----------------------------------------+‬ ‫| العنصر | وظيفته |‬ ‫+----------------+----------------------------------------+‬ ‫| username | اسم البوت في الديسكورد |‬ ‫| title | عنوان الرسالة داخل الـ Embed |‬ ‫| description | نص الرسالة الحقيقي |‬ ‫| color | لون الشريط الجانبي (بالـ Hex) |‬ ‫| author.name | اسم مرسل الرسالة (اللاعب) |‬ ‫| footer.text | تذييل صغير |‬ ‫| timestamp | وقت الإرسال بشكل احترافي |‬ ‫+----------------+----------------------------------------+‬ ‫‬ ‫ إرسال البيانات باستخدام fetchRemote‬ ‫‬ fetchRemote(discordWebhook, { method = "POST", headers = {["Content-Type"] = "application/json"}, postData = toJSON(webhookData):sub(2, -2) }, function(responseData, responseInfo) ... end) ‫ ما الذي يحدث هنا بالضبط؟‬ ‫‬ ‫‫fetchRemote: دالة من MTA لإرسال طلب HTTP إلى عنوان خارجي (هنا Discord).‬ ‫method = "POST": نوع الطلب الذي نستخدمه لإرسال بيانات إلى الخادم (Discord في هذه الحالة).‬ ‫headers: نقوم بإخبار Discord بأن نوع البيانات التي نرسلها هي JSON.‬ ‫postData: نقوم بتحويل البيانات إلى JSON باستخدام دالة toJSON، ثم نحذف الأقواس الزائدة [] باستخدام :sub(2, -2) لتهيئة البيانات بشكل صحيح.‬ ‫function(responseData, responseInfo): هذه دالة "رد الفعل"، التي تُنفذ عندما يرد Discord على الطلب.‬ ‫‬ ‫ التعامل مع النتيجة‬ if responseInfo.success then outputChatBox("تم إرسال رسالتك إلى Discord!", player, 0, 255, 0) ‫- إذا تم إرسال الرسالة بنجاح، يُبلغ اللاعب برسالة نجاح.‬ ‫‬ ‫ التعامل مع الأخطاء‬ else local statusCode = responseInfo.statusCode or "غير معروف" outputChatBox("فشل الإرسال! (الكود: " .. statusCode .. ")", player, 255, 0, 0) ‫- إذا فشل الإرسال، يتم طباعة الكود الخطأ، مثل:‬ ‫‬‫400: خطأ في البيانات (ربما الرسالة فارغة أو JSON غير صالح).‬ ‫401 / 404: رابط Webhook غير صحيح أو تم حذفه.‬ ‫429: تم إرسال عدد كبير جدًا من الرسائل (تم تجاوز الحد المسموح به).‬‬ ‫ ‫ ربط الأمر مع الدالة‬ ‫‬ addCommandHandler("discord", sendMessageToDiscord) ‫‬ ‫- هذا السطر هو الذي يربط `/discord` مع الدالة التي كتبناها.‬ ‫- أي شخص يكتب هذا الأمر يتم تنفيذ الكود أعلاه له.‬ ‫‬ ‬ ‫‬ ‫ خلاصة المنطق كاملًا:‬ ‫‬ ‫‬ ‫‬ ‫ ملاحظات إضافية للمطور:‬ ‫‬ ‫- Webhooks يمكن استخدامها لعدة استخدامات مثل:‬ ‫ - إرسال تنبيهات عند دخول أو خروج اللاعبين.‬ ‫ - إرسال رسائل النظام.‬ ‫ - تتبع الأخطاء في السكربتات. ‬ ‫‬ ‫- يمكنك تحسين السكربت بإضافة:‬ ‫ - صورة اللاعب.‬ ‫ - أزرار تفاعلية (عبر Discord Buttons).‬ ‫ - أكثر من Embed في نفس الرسالة.‬ ‫‬ ‫ ‬‫ مصادر مهمة:‬ ‫- رابط السكريبت كامل على جيت هب مع الشرح‬ ‫- رابط السكربت على موقع المودات‬ ‫‬ ‫بالتوفيق لكم ‬ ‬
  2. [Tut] كيف تغير سكنات الشخصيات اولا: gta saابحث عن اى سكن للعبه لما تحمله لازم يكون عندك ملفين بالامتدادات التالية DFF TXD روح على ملف المود اللى عايز تحط فيه السكن اعمل ملف .lua وسمية اى حاجه مثال : skins.lua meta اضف السكريبت لملف بالطريقه دى <script src="اسم السكريبت.lua" type="client" /> كمان لازم تضيف الملفين اللى حملناهم <file src="اسم الملف.txd" /> <file src="اسم الملف.dff" /> احفط الملف بعدها روح افتح السكريبت ضيف فاكشن وسميه اى حاجه وهنضيف فيه اربع اوامر engineLoadTXD engineImportTXD engineLoadDFF engineReplaceMode اول أمر بيحمل ملف التيكستير الجديد (TXD) الثانى بيستبدله بواحد موجود فى اللعبه الثانى بيحمل ملف الموديل (DFF) والثالث بيستدبدله بموديل شخصيه قديم لو عايز تعرف عنهم اكتر engineLoadTXD engineImportTXD engineLoadDFF EngineReplaceModel تعمل ايفينت يشغل الفاكشن لما المود يشتغل addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), الفاكشن) هيبقى المثال الكامل كدا function replaceModel() txd = engineLoadTXD("اسم الملف.txd", الاى دى) engineImportTXD(txd, الاى دى) dff = engineLoadDFF("اسم الملف.dff", الاى دى ) engineReplaceModel(dff, الاى دى) end addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), replaceModel) ملاحظة : هتسبدل "اسم الملف" بأمداد الملف او اسمه لو كان فى نفس فولدر المود لكن لو فى فولدرمتفرع لازم تكتب الفولدر بعدين "/" بعدين اسم الملف زى ما فى الصوره ID كمان هستبدل "الاى دى" ب الشخصيه اللى عايز تحط عليها الاسكن عشان تعرف اى دى شخصيه معينه روح على قائمه الشخصيات من هنا https://wiki.multitheftauto.com/wiki/All_Skins_Page على سبيل المثال نقول نستبدلها بسكن سى جى رقم 0 هنحط فى مكان كلمه "الاى دى" صفر احفظ كل الملفات بعدين افتح اللعبه وجرب المود JESSE! JESSE LOOK JESSE, i'm in MTA بعدها حول شخصيتك لاى دى الشخصيه اللى استبدلتها اضغط اف 1 وبعدها skins بعدها حط الاى دى وهتلاقى الاسكن اشتغل لو عندك اى مشاكل اكتبها فى التعليقات وهرد عليك ان شاء الله لو مش رديت عليك كلمنى ديسكورد Ahmed khedr#7067
  3. السلام عليكم ورحمة الله وبركاته النهارده هقدم لكم شرح من قبل صديقي EL-MoBHeR شرح break, return, tonumber, tostring شرح بالفيديو تفضلوا لينك: ادعموه شباب فيه شروحات ومودات منشوره بالقناه ادعموه ليستمر
  4. اما بعد اليوم جايب لكم شرح بسيط وخفيف الي هو لاحظتم ف سيرفر : "وزارة الهجولة والتدشير" انك لمن تضغط انتحار اكثر من مرة يجيك كلام انتظار هذا الكلام اليوم بشرح كيف تخليه يجي اول شي ي غالي تحتاج هذا المود الي يشغل الـ كلام الي من اليمين لليسار https://up.top4top.net/downloadf-889anzpw1-zip.html وبعدين نحتاج كود لـ تفعيل هذي نحذف outputchatbox ونحط exports["outputMessage"]:outputMessage exports["outputMessage"]:outputMessage طبعا هذا الشرح مماثل لـ "شرح كيف تخلي الكلام يجي ع اليمين" الي شرحته يوم الاثنين لو استفدت اكتب لي لو تعليق بسيط وملاحظة بسيطة : هذا الكود والمود يمديك تستخدمه ل الشات الخاص لو جاك رسالة يجيك الليبل واشياء ثانية ويالله سلام عليكم
  5. سلام عليكم ورحمة الله وبركاتة الحمدالله تم تصميم ماب زومبي بكفائة عالية ومهتم جدآ بأدق التفاصيل اترككم مع صور الماب الماب للبيع الي بيشترية مع التكسدات وكل شي يكلمني سكايب [email protected] الماب حصري
  6. أما بعد اليوم جايب لكم شرح بسيط وخفيف وطبعا بالعنوان هو "ِكيفية اظهار الاسباب لـ "ميوت","كيك","باند/"الى اخره اول شي نحتاج ملف messages.xml مسارها في الـ FTP mods/deathmatch/resources/[admin]/admin/conf طبعا تفتح الـ ملف ويجيك اشياء قدامك وصراحة اتوقع انك منت عارف واحد من عشرة اول شي نبي نحط سبب للباند اول شي نروح إلى كلمة الباند وهي : <group action="ban" r="255" g="0" b="0"> هذا للباند ثم يجي بعدها سطرين <all>$player has been banned$by_admin_4all. $data2 $data</all> <log>ADMIN: $admin has banned $player $data $data2</log> -- ملاحظة ذول الاكواد المعدلين الاكواد الاصلية تكون كذا <all>$player has been banned$by_admin_4all. $data2</all> <log>ADMIN: $admin has banned $player $data $data2</log> طبعا الي فوق معدل يمديك تاخذه وبالعافية عليك لكن لو تبيء تتعلم شوف اول شي احنا الكود الاصلي يكون بس data2 لكن احنا نضيف $data مثل ما موضح فـ الكود بعدين نجرب واشتغل ^^ وبالنسبة لاكواد الكيك والميوت الميوت بحط الاكواد الاصلية والمعدلة ^.^ -- الاصلية <all>$player has been muted$by_admin_4all. $data2</all> <log>ADMIN: $admin has muted $player $data $data2</log> -- المعدلة <all>$player has been muted$by_admin_4all. $data</all> <log>ADMIN: $admin has muted $player $data $data2</log> هنا عدلنا السطر الاولاني كان data2 وصار data والكيك -- اصلية <all>$player has been kicked$by_admin_4all.</all> <log>ADMIN: $admin has kicked $player $data</log> --معدلة <all>$player has been kicked$by_admin_4all. $data</all> <log>ADMIN: $admin has kicked $player $data</log> وش سوينا هنا ؟؟؟ تلاحظون ف الاصلية ماكان فيه data وضفنا data وصار معنا إن شاء الله يكون اعجبكم ولاتنسون تعليقكم واذا كان في خطأ نبهوني اخوكم فخامه الروقي سلام عليكم
  7. قم بعمل سيرفر حياة واقعية بخمسة دقائق فقط وحصريا على أستضافة FPSSERVER شاهد الفيديو طريقة عمل سيرفر حياة واقعية https://www.youtube.com/watch?v=67vc_MCnxkE
  8. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته .. كيفكم شباب ؟ ان شاء الله تكونو بأتم الصحة والعافية .. راح اشرحلكم اهم الاشياء في math نبدأ بسم الله أول شيء ال math.ceil ► يقرب العدد العشري الى اقرب عدد صحيح : تقولي كيف يعني ؟ يعني الارقام الي زي كذا 1.6 تتحول الى 2 مافهمت ؟ هذا يحول الرقم على حسب العدد العشري فأذا كان من 1 - 4 فيصير نفس الرقم الي هو عليه مثلاً : 1.3 local s = math.ceil(1.3) print ( s) -- 1 والارقام من 5 - 9 تتحول الى الرقم التالي مثلاً : 1.9 local s = math.ceil(1.9) print ( s) -- 2 math.floor ► يحذف الفاصلة العدد العشري تقولي كيف ؟ مثلاً : 2.9 local s = math.floor (2.9) print(s) -- 2 , -- ليس مثل ال -- math.ceil -- فهو للتقريب اما هذا للحذف math.random ► لجلب الرقم العشوائي من بين رقمين واضح جداً مثلاً : 200 - 400 راح يجيب رقم عشوائي local s = math.random (200,400) print ( s ) --398 math.min ► يجلب اصغر رقم من المجموعة او من رقمين مثلاً : local s = math.min (200,400,600,700) print ( s ) --200 math.max ► يجلب اكبر رقم من المجموعة او من رقمين مثلاً : local s = math.max (200,400,600,700) print ( s) --700 وكذا يكون وصلنا الى ختام الشرح ... وشكر خاص الى نصور .. واهداء للجميع من في المنتدى .. وسلام خير الختام ,,
  9. السلام عليكم ورحمة الله وبركاته بدون أي مقدمات هو كود واحد وبعض المبرمجين م يعرفون outputChatBox("هنا تحط الكلام او الحقوق",0,255,255,true) وتحطه بملف صيغته كلنت وبدون أي إضافات متى شغلت المود او دخلت يطلع الكلام:)
×
×
  • Create New...