-
Posts
467 -
Joined
-
Days Won
22
Everything posted by xLive
-
registry.db لو سويت إعادة تشغيل للسكربت ما راح تنحذف، لأن الفنكشن راح يحفظ القيمة والمفتاح في ملف قاعدة بيانات الحسابات SQL الأفضل تستخدم فنكشنات قواعد البيانات Account data راح يحفظها لكن صعب جدًا تتعامل مع شي مثل كذا لأن هو مفتاح وقيمة واحدة فقط، لكن قاعدة البيانات راح تقدر تسوي جدول كامل وتضيف عواميد وكذا :ذا مثال بسيط يوضح الكلام يلي اقصده على سبيل المثال ايدي حسابي 1 والباقي اظن واضحة لمن تطلب بقاعدة البيانات راح تجيب ايدي الحساب حق الاعب وتطلب من قاعدة البيانات تعطيك العواميد يلي الحساب فيها يتطابق 1، وراح يعطيك قائمة السيارات يلي عنده بجدول مو لغة برمجة لكن سهلة جدًا تتعلمها وممكن تقدر تشوف شروحات لها في الإنترنت أو هنا ،SQL عشان تستخدمها، تحتاج تتعلم لغة الـ ما راح أقول إن مالها فايدة، راح تحتاجها في حال كنت تبي تحفظ البيانات مؤقتًا وتحتاج تحصل على المعلومة في أسرع وقت أو في أكثر من سكربت مثل ما شرحت سابقًا
-
خطأ، مو مثلهم تختلف عنهم setElementData تحفظ قيمة معينة على كائن معين مؤقتًا وتقدر تزامنها للجانب الآخر كلاينت-سيرفر / سيرفر-كلاينت بحيث يمديك لو حطيت القيمة بالسيرفر تقدر تجيبها بالكلاينت مباشرة تقدر تشوف توضيح أكثر هنا خاصة عالمزامنة لأنها مهمة طبعًا يمديك تستخدم الجداول عشان تحفظ القيم مؤقتًا بدال الوظيفة يلي بالأعلى وهي الأفضل لأنها اسرع في الحصول فيه شرح اجنبي لو تعرف اللغة الإنجليزية جدًا ممتاز شرح الموضوع هذا setAccountData / SQL و وظائف قواعد البيانات كلاهما تحفظ القيم بقاعدة البيانات بحيث تقدر تجيبها بأي وقت حتى لو طلع الاعب لكن عيب قاعدة البيانات إنها سيرفر سايد فقط، وبطيئة في الحصول ف مفروض ماتستخدمها في شي يتكرر كل فترة يلي ذكرناها فوق element data على سبيل المثال عندك نقاط تبي تحفظها إذا سجل الاعب الدخول تحصل على النقاط من قاعدة البيانات وبعدها تحفظها مؤقتًا عليه عبر الجداول أو وإذا جيت تعدل النقاط تعدلهم عبرها، وتحفظهم في قاعدة البيانات عند الخروج طبعا وش الفرق بين setAccountData و SQL وظائف الـ؟ SQL اصلا تستخدم الـ account data element data وعيبها الوحيد إنها تستخدم المفاتيح مثل الـ بتكون لك حرية كاملة بتحديد الأشياء يلي تحتاج تحفظها SQL وظائف الـ setAccountData وفيه اشياء ملزم إنك تستخدمها مثلًا لو راح تسوي نظام حسابات خاص فيك ما راح يشتغل لأنه يشتغل على نظام الحسابات الإفتراضية فقط
-
:بالبداية، شوف هذا الموضوع إذا حطيت اكواد برمجية، عشان كودك يكون أسهل للقراءة للأعضاء .ماتحتاج تعدل موضوعك حاليًا لأن عدلت لك الموضوع وضبطتها لك ذي المرة :بالنسبة لأكوادك قبل ماتستعمل أي وظيفة باللعبة، شوف الجانب حقها وين يشتغل بالضبط سيرفر أو كلاينت أو كلاهما؟ كيف أعرف؟ getServerName تفتح صفحة الويكي حقت الفنكشن يلي بتستعمله على سبيل المثال getPlayerCount لاحظ؟ مكتوب جانب السيرفر فقط، نفس الشي لـ الوظيفة الثانية طيب اوك وش الحل حاليًا؟ بالنسبة لعدد الاعبين تقدر تجيب عدد الاعبين كذا local players = #getElementsByType("player") -- getElementsByType يعطينا جدول فيه الاعبين المتصلين بالخادم -- علامة الـ # راح تظهر لك حجم الجدول وعدد القيم داخله (عدد الاعبين في الحالة هذي) onClientRender طبعًا الطريقة يلي سويتها أنت وهي تحديث عدد الاعبين في حدث سيئة، لأن الفنكشن هذا يشتغل كل فريم وأنت ماتحتاجه أبدًا الأفضل تحديث الليبل حق عدد الاعبين عند دخول/خروج لاعب onClientPlayerJoin onClientPlayerQuit بالنسبة للحصول على اسم الخادم عطاك موضوع مشابه الأخ اوسكار
-
تنبيه بسيط السورس كذا ماراح يكون معرف في الانيموس فنكشن، ممكن انت جربته وطلع الشات وحسبته ضبط ،والارقمنت له قيمة إفتراضية يلي هي الروت، عشان كذا طلع لك nil لكن لا، قيمة السورس ? تقدر تجرب تطبع القيمة حقت السورس عشان تتأكد :المفروض يكون كذا function hi() bindKey(source, "n", "down", function (player) outputChatBox ("testt", player, 255, 255, 255, true) end) end addEventHandler ("onPlayerLogin", root, hi) تقريبا @SCiأكتشف المشكلة بالكود يلي عرضه قبل شوي هذا الحدث إذا اشتغل مود، الايفنت نفسه ماراح يعطيك أي معلومة عن الاعب لأنه خاص بالمودات فقط getElementsByType لازم تجيب كل الاعبين وتسوي لهم لوب هذا الفنكشن يجيبهم لك :مثال بسيط -- server function keymes() local players = getElementsByType("player") -- راح يعطيك جدول يتكون من الاعبين المتصلين بالخادم for index,player in ipairs (players) do -- نسوي لوب (تكرار) على جدول الاعبين bindKey(player, "e", "down", function (player) outputChatBox ("test", player, 255, 255, 255, true) end) end end addEventHandler ("onResourceStart", resourceRoot, keymes) لاحظ إني عدلت بعد في أخر سطر استبدلت root -> resourceRoot لجميع الكائنات وبما إن الحدث هذا يشتغل للمودات فقط راح يشتغل لأي مود مو لسكربتك فقط root ليش؟ لكائنات المود نفسه وبما إن الحدث زي ماقلنا يشتغل للمودات راح يشتغل الايفنت لنفس المود فقط ،resourceRoot لكن ممكن تفهم أكثر مع رسمة شجرة الكائنات لا تنسى تضيف الزر بعد في حدث الدخول onPlayerJoin أو onPlayerLogin لأن الايفنت زي ماذكرت راح يشتغل في حالة السكربت اشتغل فقط لو فيه لاعب دخل بعدها ما راح يشتغل له يمديك حتى تخلي فنكشن الزر بحدث منفصل عشان ماتكرر الكود كل شوي مثال function myFunction(player) -- تطلع شات هنا أو تسوي يلي تبغاه end -- بعدها في أي ايفنت تقدر تتكتب اسم الفنكشن فقط، بدون ماتحتاج تعيد كتابة الفنكشن من جديد bindPlayer(player,"e","down",myFunction)
-
? مثال حلو، يعتمد بعد على الفكرة يلي بتسويها على سبيل المثال فكرتك يلي سويتها راح تشتغل بالسيرفر والكلاينت ومايهم التأخير، لكن وش يفرق؟ لو سويتها بالسيرفر جميع الاعبين راح يشوفونه، وإذا كلاينت راح يشوفه هو نفسه فقط (لأن الكلاينت يعتبر جهاز الاعب)
-
،أي بالضبط، لكن ما أنصحك تستعمله بالسيرفر إذا ماكنت تحتاجه .لأن راح تشوف تأخير وممكن يكون كبير إذا كان الاعب عنده مشاكل بلاتصال على سبيل المثال تبي تخلي السيارة تقفز، سويها كلاينت، لأن الاعب يتوقع إن السيارة تقفز على طول
-
Happy new year everyone! ?
-
هذا متغير عبارة عن الاعب يلي طلب التريقر من الكلاينت client التريقر يلي يكون من الكلاينت يكون فيه متغير خفي اسمه triggerServerEvent("getCar",localPlayer) الثاني هنا عبارة عن مصدر الحدث Argument sourcePlayer عشان كذا قيمة Parameter ف التريقر حقك مافيه أي وما اشتغل كودك ،nil
-
:إذا جيت تسوي وظيفة(فنكشن) تقدر تسميهم أي شي تبغاه لكن تلتزم بشروط تسمية المتغيرات بداية الاسم ماتبدأ برقم يمكن إستعمال حروف اللغة الإنجليزية وأرقام ورمز _ فقط مايتعدى حد معين أعتقد 256 end مايكون الاسم اسم محجوز باللغة مثل
-
،بعد كلام الأخ يلي فوق القسمة تعتبر شي مهم جدًا في الرياضيات، وإستعمالك لها يعتمد عالفكرة يلي بتسويها .راح تحتاجها في أغلب العمليات الحسابية في البرمجة مثل قياسات الشاشة وغيرها .في البرمجة بالغالب راح تتعامل مع متغيرات وليس ثوابت فقط، عشان كذا ماراح تقدر تحط رقم ثابت وخلاص ،مثال بسيط: تبي تسوي سكربت يوزع مبلغ معين على فريق بالتساوي، كيف تعرف المبلغ يلي تعطيهم؟ بالقسمة طبعًا .تجيب عدد الاعبين بالفريق لأنه متغير وتقسمه على المبلغ الموجود عندك عدد الاعبين بالفريق راح يكون ثابت في حالة وحدة فقط وهي إذا انت واثق يوم توزع كل مرة الفريق بيكون فيه عدد ثابت مثل خمس لاعبين لكن ماعتقد بتسوي كذا؟
-
وظيفته تدمير الكائنات وتحريرها من الرام destroyElement وظيفته يفعل/يعطل كائن بحيث ماتقدر تضغط guiSetEnabled
-
شرح ممتاز إذا كنت جديد في اللغة لكن باللغة الإنجليزية
-
Texture الملابس ماتقدر تغير المجسم حقها تقدر تغير فقط الـ ،لكن في طريقة يسونها أغلب السيرفرات يبغالها تركيز شوي وفهم هي بكل اختصار يسوي سكن جديد ويكون فارغ تماماً من الملابس وتفاصيل الوجه زي الشعر ويسوي اوبجيكتات مثلا للشعر والملابس لأشكال مختلفة ويلصقها بالسكن على سبيل المثال جاكيت يكون سادة بدون اي شي Texture وعبر الشادرز يغير بحيث ياخذ الوان جديدة
-
@SCi تم نقل موضوعك لقسم البرمجة .لا تستخدم قسم دروس في البرمجة إلا عند كتابة الشروحات وليس لطلب المساعدة بالنسبة لسؤالك، هذي الفنكشنات يلي راح تحتاجها addCommandHandler تضيف أمر engineLoadIFP -- يضيف ملف IFP setPedAnimation -- يطبق الحركة للاعب أو البيد
- 1 reply
-
- 1
-
@SCi مرحباً بك في المنتدى تم نقل موضوعك لقسم البرمجة، قسم دروس البرمجة خاص بالمواضيع التعليمية التي تخص البرمجة فقط
-
@Abdelhak_ZK مرحباً بك في المنتدى، تم نقل موضوعك لقسم البرمجة العربي. للحصول على مساعدة أفضل أعرض الجزء الذي به المشكلة مثل ماذكر لك الأخ بالأعلى .وأخطاء الدي بق إن وجد
-
،@yoyo2021 مرحباً بك في المنتدى .تم نقل موضوعك للقسم الرئيسي، قسم المساهمات خاص لنشر المساهمات فقط
-
في شي باللعبة اسمه الاكسبورت، هذا راح يخليك تتصل بين السكربتات بالبداية أصنع فنكشن في السكربت يلي راح تتصل له openSettingsWindow الفنكشن مثلاً خلينا نقول يفك اللوحة خلينا نقول اسم الفنكشن خلصت منه الآن تحتاج تضيفه في ملف الميتا عشان تقدر تستعمله في السكربتات الأخرى <export function="openSettingsWindow" type="client"/> الآن بكل بساطة تستعمل الأكسبورت من السكربت الأخر مثلاً إذا جيت تضغط زر تضيف فقط exports.resourceName:openSettingsWindow() resourceName هو اسم السكربت يلي راح تتصل فيه openSettingsWindow اسم الفنكشن في السكربت الآخر call طبعا هو ذا اسم الفنكشن الأساسي .تقدر تشوف بصفحته أمثلة وشرح أكثر، لكن له إستعمال اخر يخليك تكتب اسم السكربت أسهل لك ملاحظة: الاكسبورت يكون فقط في نفس الجانب فقط كلاينت-كلاينت / سيرفر-سيرفر triggerEvent يمديك أيضاً تستعمل الأيفنتات عبر فنكشن
-
Hello ?, DGS functions are almost the same as CEGUI ones. You can use the "guieditor" to create whatever you want, then you can convert it to DGS manually DGS Functions and GUI Functions DGS Events and GUI Events or using the G2D as The_GTA mentioned.