Jump to content

xLive

Scripting Moderators
  • Posts

    458
  • Joined

  • Days Won

    21

Posts posted by xLive

  1. On 07/02/2024 at 20:21, MrSAUD1 said:

    فعلا العبة ماتت كنسلو الفكره بروح لعبه معينه مابغى اقول بكون مجهول الهويه ههههههههه

    On 24/01/2024 at 22:35, MR.SAMSUNG said:

    حملتها وتذكرت اني لازم احمل سان اندرس معها ومسحتها 🤣

    وبعد انها صارت ميتة ومدري ايش صار على السيرفرات القديمة زي وزارة الهجولة وطارة ووناسة تايم وغيرهم واغلب الي كانو يلعبوها صارو يلعبون اشياء ثانية

     

    مع اني كنت متحمس وسويت Open Game Panel

    على الخادم حقي قلت اسوي سيرفر بس كنسلت 

    On 24/01/2024 at 22:35, MR.SAMSUNG said:

    وبعد انها صارت ميتة ومدري ايش صار على السيرفرات القديمة زي وزارة الهجولة وطارة ووناسة تايم وغيرهم واغلب الي كانو يلعبوها صارو يلعبون اشياء ثانية

    اللعبة عددها مو مثل السابق أكيد، باقي فيه عدد لكن ما اشوفه يعتبر ميت وموجود عندك إحصائيات حديثة هنا

    On 24/01/2024 at 22:35, MR.SAMSUNG said:

    وبعد انها صارت ميتة ومدري ايش صار على السيرفرات القديمة زي وزارة الهجولة وطارة ووناسة تايم وغيرهم

    تفضيلات الناس تغيرت بشكل كبير، صار الأغلب يفضل لعب الأدوار"الحياة الواقعية" وهذا مو شيء في هذي اللعبة فقط؛ كل لعبة شبيهة لها مثل
    FiveM, RageMP, AltV, Garry's Mod, وغيرهم
    .الأخيرة حتى كانت فيها كثير ألعاب إبداعية وممتعة، لكن حاليًا الأغلبية سحبوا عليها وصار التركيز الأكثر على لعب الأدوار
    (بدأ لمن انتشرت العاب الباتل رويال) PUBG لكن، فيه استثناءات أحيانًا لو كان الخادم فيه فكرة ممتعة، وجذابة للاعبين مثل يلي صار مع خوادم

    وهذا مو يعني فيه أطوار اختفت نهائيًا وما صار فيه أحد يلعبها (مثل الهجولة، الديربي، التكتيك إلخ..)، باقي موجودين لكن عددها مو كثير
     


     

    On 04/08/2023 at 06:50, فاّرس said:

    في لعبه محدوده برمجياً وماتعطيك خيارات كثير كمبرمج

    On 04/08/2023 at 11:42, Spyrax said:

    صحيح,أتفق معك فهذه النقطة وأعاني منها صراحةً .

     

    بداعي الفضول.. ودي أعرف الأشياء يلي ما قدرتوا تسووها؟
    ما أختلف إن فيه حدود للأشياء يلي تسويها(مثل الـ 32 بت)، لكن نادر أشوف إن احد يحتاج زيادة
    :وتقدر منها تسوي أشياء جدًا رهيبة مثل احد المشاريع الحديثة يلي تحت

  2. طيب ممتاز انت الان مفروض بكودك تستعمل
    dxShaderSetValue
    عشان تعطي الشادر النص

    dxDrawImage الارقمنت يلي تعطيه فوق تقدر تحطه هنا
    وبينرسم لك فاللوحة نفس يلي يظهر بالسيارة ما يحتاج تسوي دوران أو تغير الحجم


    إذا تستخدم طريقة ثانية ياليت توضحها وتحط جزء من الكود عشان نشوف كيف النص ينصنع في الزجاج

    On 05/01/2024 at 12:16, ,3ZF said:

     وياريت لو عندك رقم تواصل او اي حساب ثاني غير المنتدى اتواصل معك فيه يكون احسن لان المنتدى ضيع وقتي كثير و انت ترد متأخر للأسف

    أي افضل لأن الظاهر حتى انت ما يوصلك اشعارات
    اسأل في قناة البرمجة العربية وبرد عليك على طول إن شاء الله https://discord.gg/mtasa تفضل ديسكورد اللعبة:
     

  3. On 03/01/2024 at 23:51, ,3ZF said:

    محتاج أظهرها بالسياره و اللوحه برضو يعني الكتابه الي تظهر على السياره تيجي على صورة باق قراوند مثل الفوتوشوب بس في لوحه دجس عادي يعني المطلوب اني كيف اجيب النص الي ع قزاز السياره على صورة باق قراوند أنا ضايفها و كذلك الدوران يكون نفس الي ع السياره

    عشان ترسم على زجاج المركبة فيه طريقتين

    الزجاج يواحد ثاني فيه النص أو اللون يلي اختاره الاعب Texture تستبدل
    حق المركبة؟ Texture كيف تستبدل الـ
    :في طريقتين

    1. TXD عبر ملف
      لكن هذا ما راح ينفع مع فكرتك، لأن راح يتطبق في جميع السيارات بنفس الايدي
    2. عبر الشادر
      من أي مصدر تقدر تستخدم Texture وهنا عندك حرية أكبر تقدر تستبدل الزجاج مثلا بـ
      كلهم تقدر من خلالهم تعطيه الشادر ويستبدله لك dxCreateTexture, dxCreateRenderTarget
      الميزة الأكبر بعد تقدر تحدد الشادر يتطبق لكائن معين، وكذا لو استبدلت الزجاج على سبيل المثال راح يظهر في السيارة المطلوبة فقط

    تمام كيف نطبق الطريقة الثانية؟
    واحد لجميع زجاج السيارة وبعض الأجزاء زي ما تشوف بالصورة Texture خبرتي مو كبيرة في المجسمات، لكن زجاج السيارات للأسف الـ
    4yRQ5iO.png
    فالحل هنا انك تعدل مجسم السيارة وتعدله بحيث يكون كل زجاج له
    خاص عشان تقدر تستبدله وإذا مجسم السيارة عندك معدل عادة بعضهم يكون مسوين هذا الشيء، تقدر تتأكد باستخدام هذا السكربت (يلي مستخدمه بالصورة بالأعلى)Texture
    shader_tex_names
    منه للزجاج المطلوب تبدأ تصنع الشادر Texture إذا لقيت اسم الـ
    engineApplyShaderToWorldTexture وتسوي نفس المثال الأول الموجود في صفحة 
    شرحتها في أول تعليق وأنصحك تجلس تجرب فيه عشان تفهم فكرة الرندر التارقت Texture كيف اعطي الفنكشن يلي فوق نص على هيئة؟
    تقدر ترسمه باللوحة كأنه صورة عادية  Texture وبما انك حولت النص لـ


    Texture فيه طريقة ثانية بدون صداع الشادر واستبدال الـ
    dxDrawMaterialLine3D إنك بكل بساطة تحسب إحداثيات ثلاثيات الأبعاد للزجاج وترسمه باستخدام
    الفنكشن يلي فوق تقدر تعطيه للنافذة Texture ونفس الـ

    الدوان والحجم وغيره هذا كله تطبقه في الرندر تارقت

  4. الظاهر اني فهمتك غلط، انت الآن يعني مسوي نظام التظليل وتظهر بالسيارة وتحتاج تظهرها باللوحة فقط؟
    إذا يب مفروض عندك بالكود وظيفة
    dxSetShaderValue
    هذا مفروض ينعطى له الصورة يلي تكون في المركبة؟ تقدر تستخدمها في
    dxDrawImage

    إذا ما تستخدمها ممكن تحط الجزء يلي تصنع فيه الشادر وتستبدل فيه زجاج المركبة؟
    واعتذر على التأخير

  5. وعليكم السلام
    فقط من خلال الشادر ويبدو إنك تعرف كيف تسوي هذا الشيء Texutre تستبدل الـ
    تستخدم شيء اسمه رندر تارقت Texture لكن لتحويل الدي اكس لـ

    تقدر تعطيه الشادر وتشوفه بالسيارة Texture ايش يعني الرندر تارقت؟ باختصار شديد مثل الورقة تصنعه وتحدد حجم "الورقة" وبعدها ترسم فيه الدي اكس (مرة واحدة لا تضيف حدث الرندر) وخلاص هو
    وإحداثيات الرسم تبدأ من أعلى الشاشة باليسار والدوران والحجم وغيره تحدده من وظائف الدي اكس كأنك ترسمه عالشاشة
    y04412w.png
    dxDrawImage وتقدر أيضًا تعرض الرندر تارقت على الشاشة عشان تعرضها للاعب أو وانت تتأكد إنه صحيح باستخدام

    وأيضًا يفيد في اشياء آخرى الرندر تارقت، مثلًا في صفحة الويكي عنده 4 صور رسمهم في رندر تارقت وبكذا خلاص ما يحتاج
    أربع مرات، يحتاج فقط يرسم الرندر تارقت لأن هو فيه جميع الصور، وكذا يوفر استهلاك معالج أكبر dxDrawImage يستخدم
    الذاكرة العشوائية لكرت الشاشة فإذا ما تحتاجه مثلا السيارة صارت بعيدة أو تدمرت أنصحك تدمر الرندر تارقت والشادر عشان ما يكون فيه استهلاك دون فائدة وكراشات VRAM وبالمقابل يستخدم الـ

  6. وعليكم السلام ورحمة الله وبركاته

    ليش صرت تشوفهم بكثرة؟ السبب مشروح هنا

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

    كيف أحمي خادمي وأتصدى للغش؟ هذا منشور يشرح كيف بشكل بسيط

    .بالتوفيق

  7. 1 hour ago, ,3ZF said:

    تقصد أن لازم استخدم صورة بالأساس مو زر و في هذه الحاله اقدر استخدم الخواص حقتها الي هي الدوران rotation

    طيب أنا ابي اسوي مثل هذه الصوره ... كيف شكلها شكل زر بالأساس و داخلها صوره؟

    https://k.top4top.io/p_29046xgm50.jpg

     

    زر وداخله صورة فقط
    :مثال

    local button = dgsCreateButton (...) -- نصنع زر طبيعي بدون أي كلام
    
    local image = dgsCreateImage(0,0,25,25,"image.png",false,button) -- الإحداثيات مثال، اهم شيء نحدد "أب" للصورة. كذا راح تنصنع داخل الزر
    dgsSetProperty(image,"rotation",90) -- نغير دوران الصورة لـ 90 درجة

     

  8. .وعليكم السلام، التصرف الصحيح ضدها هو منع الغشاشين من فعل أي تأثير
    :وهذا يتم على مرحلتين

    1. حماية السكربتات: مثل ما تم توضيح لك سابقًا؛ أغلب المشاكل والضرر الكبير تتم بسبب سوء كتابة السكربتات ويتم استغلالها من قبل الغشاشين. الحل هنا هو كتابة السكربتات بشكل صحيح لمنع الغشاشين من استغلالهم. وهنا شرح على ذلك
    2. حماية ضد الغش: وهذا ضد الأشياء يلي تتم دون استغلال احد السكربتات، مثل التفجير والطيران وغيره. هذا يتم كشفها بواسطة تحققات لكشف هذي الأشياء
      :نأخذ التفجير على سبيل المثال فيه وظائف تم إضافتها يمكن استعمالها لصنع حماية ضدها مثل
      onExplosion, onPlayerProjectileCreation, onPlayerDetonateSatchels
      جميعها من خلالهم تقدر تسوي منها حماية بسيطة لكشفهم، على سبيل المثال لاعب ارسل صواريخ دبابة؛ لكن هو غير موجود في دبابة من الأساس أو خادمي لا توجد له طريقة بإطلاق صواريخ. وغيرها الكثير من الأشياء تقدر تضيفها

      onPlayerTriggerEventThreshold وفيه أحداث غيرها تقدر تساعدك مثلا 

      وباقي الأشياء على نفس الطريقة يحتاج فقط منطق برمجي ممتاز
  9. triggerServerEvent وعليكم السلام، إذا الاعب ضغط زر إظهار الصورة ترسل تريقر لجانب الخادم
    triggerClientEvent بعدها جانب الخادم يتحقق إذا الاعب عنده الصلاحية يظهر الصورة بعدها ترسل تريقر لكل الاعبين لجانب العميل بإستخدام
    وفي جانب العميل تستقبل الايفنت وتظهر الصورة بشكل عادي

     

    8 minutes ago, KhaledX said:

    وعليكم السلام , جرب هالكود

    local screenVisible = false -- حالة الصورة | False = Not Show | True = Show |
    local imageToShow = "path/to/image.png" -- مسار الصورة
    
    function toggleScreen()
        screenVisible = not screenVisible
        if screenVisible then
            -- عرض الصورة لكل الموجودين بالسيرفر
            for _, player in ipairs(getElementsByType("player")) do
                setElementData(player, "customImage", imageToShow)
            end
            setTimer(hideScreen, 3000, 1) -- مدة عرض الصورة ( 3 ثواني )
        else
            -- اخفاء الصورة عن جميع اللي بالسيرفر
            for _, player in ipairs(getElementsByType("player")) do
                setElementData(player, "customImage", nil)
            end
        end
    end
    
    function hideScreen()
        toggleScreen()
    end
    
    addCommandHandler("showImage", toggleScreen)

     

    إستعمالها هنا سيء جدًا element dataلا أنصح في هذي الطريقة أخ خالد
    لازم يستخدم جانب الخادم ليتحقق من صلاحية الاعب من إظهار الصور للجميع، أو الغشاشين راح يقدروا يستغلوا هذي الطريقة لإظهار الصور

  10. وعليكم السلام
    rulesTable
    وين معرف؟
    handlePunishment و وين يشتغل
    لأن انت تاخذ منه القيمة

    kickPlayer أيضًا لا تسمي وظائفك بنفس اسم وظائف موجودة بالفعل لأن راح يسبب لك مشاكل في إستعمالها مثل

    • Like 1
  11. وعليكم السلام

    ما يتحدث نهائيًا إلا في حال كانremainingTimeUntilNextLotto ركز في كودك، المتغير
    lottoActive مفعل
    وفي كودك ما تظهر الوقت إلا لو كان غير مفعل، يعني مستحيل المتغير يتحدث
    jiNljFy.png
    لكن عالعموم انا اشوف استعمال الوقت غير مناسب هنا والأفضل تستعمل التايمر لأن اصلا تحتاجه
    setTimer
    getTimerDetails التايمر راح يشغل لك وظيفة بعد وقت معين راح يفيدك هنا، وتقدر تعرف منه كم باقي وقت عبر

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

  13. Just now, Everyone said:

    يخوي الموضوع هاد بدأ خلال اخر اسبوعين

    اول مره اشوف مشكله زي هيك

    اللاعب بيعدل تاب اللاعبين بسهولة

    ويتحكم بالداتا عادي

    .الأشياء يلي ذكرتها غير جديدة، موجودة من سنين؛ الشيء الجديد إن فيه ناس يستهدفوا خادمك
    .في حال حميت سكربتاتك بشكل صحيح ما راح تواجه هذي المشاكل

  14. 5 hours ago, Mersad said:

    Thank you so much! That solved my problem. 😊

    The reason I’m not using dgsCreateImage is that I want to create smooth and fluid animations for my background images to make them more visually appealing. As far as I know, this isn’t possible using GUI or DGS elements. Is that correct?

    I don't know what fluid animations mean for images. DGS has a lot of animation functions that can be found here, and you can also create your own animations. For CEGUI, you can use a timer or onClientRender event, along with interpolateBetween, for moving, sizing animations, etc..

    • Like 1
  15. @Mersad Your thread has been moved to the Scripting section. Please use it for scripting questions in the future.


    3 hours ago, Mersad said:

    The DGS elements are appearing behind the dxDraw element that I’m using as a background.

    That's because your draw functions are being executed after DGS finishes its own drawing. You can either change your onClientRender event priority to high or set DGS renderPriority to low using dgsSetRenderSetting. Both will ensure that your draw functions runs before DGS render event, which should make DGS elements render above it:

    addEventHandler("onClientRender", root, drawFunction, false, "high")

    addEventHandler:
    zmC4m8b.png

    By the way, is there any particular reason for not using dgsCreateImage?

  16. 52 minutes ago, , Melvin said:

    function cDamage(attacker, weapon, bodypart, loss)
        if attacker and isElement(attacker) and getElementType(attacker) == "player" and source ~= attacker then
            local sound = playSound("Dam.wav")
            setSoundVolume(sound, 0.5)
        end
    end

    addEventHandler("onClientPlayerDamage", getRootElement(), cDamage)
     

    هذا الكود سيعمل على تشغيل صوت "Dam.wav" بصوت منخفض إذا تعرض لاعب لضرر من لاعب آخر باستخدام أي نوع من الأسلحة. يتم استدعاء الدالة cDamage عند حدوث ضرر على لاعب باستخدام الحدث "onClientPlayerDamage". إذا توافقت الشروط المحددة (المهاجم موجود، وهو لاعب، واللاعب ليس نفسه، وما إلى ذلك)، سيتم تشغيل الصوت المحلي بصوت منخفض.

    chatGPT ياليت تعرف للبرمجة قبل ما تساعد في هذا القسم، لأن جالس تلصق من 
    والإجابة مالها أي علاقة بالمشكلة
     



    المشكلة في هذا السطر فقط

    10 hours ago, Avir14 said:
    source ~= attacker

    تحتاج تتحقق إن الشخص يلي هجم == لاعب الكلاينت وتتحقق إن الشخص يلي تدمج مو الكلاينت نفسه

    source ~= localPlayer and attacker == localPlayer -- نتحقق إن الشخص يلي تدمج هو مو الكلاينت نفسه، ونتحقق إن هو الشخص يلي دمج

     


     

    10 hours ago, xjustiN said:
    addEventHandler ( "onClientPlayerDamage", localPlayer, cDamage )

    كذا صار الحدث مختلف 😛 الان انت ربطت الحدث بلاعب الكلاينت، يعني اذا تدمج هو فقط راح يشتغل الحدث
    root عكس اول كان مربوط بـ 
     



     

    .على العموم @Avir14 انا اشوف استعمال حدث جانب الكلاينت هنا خطأ، راح يشتغل لكن حل غير مناسب؛ لأن جانب الكلاينت ممكن يشوف الاعب تدمج عنده، لكن غير ثابت مثلا انت ملقلق
     onPlayerDamage إذا استعملته فيه احتمالية كبيرة أحيانًا تدمج ويطلع الصوت وبالحقيقة الاعب ما تدمج. الحل المناسب؟ استخدم حدث جانب السيرفر
     وترسل تريقر لجانب الكلاينت  للقاتل باستخدام عشان تشغل الصوت
    triggerClientEvent

    • Like 1
    • Thanks 1
×
×
  • Create New...