Adham Posted April 9, 2016 Share Posted April 9, 2016 (edited) بسم الله الرحمن الرحيم السلام عليكم ورحمة الله تعالى وبركاته الصلاة والسلام على نبي الله محمد صلى الله عليه وسلم اخواني الكرام في هذا المنتدى المبارك الذي جمعنا هنا على الخير إن شاء الله Lua جئت لكم اليوم بشرح عن الجداول في لغة البرمجة و ارجو الله تعالى أن أوفّق في الشرح على اكمل وجه قبل كل شيء علينا أن نعرف ماهي الجداول خارج هذه اللغة Lua وبعد ذلك سنتعرف عليها داخل لغة* نبدأ على بركة الله : 1- Tables الجداول أو ماهي الجداول أساساً و ماهي وظائفها و ما فائدتها ؟ الجداول لها فائدة كبيرة جداً داخل البرمجة وخارجها فهي تساعدك على إختصار العمل و هناك أشياء لا تستطيع صنعها إلا بالجداول Microsoft word جميعنا نعرف برنامج تستطيع من خلال هذا البرنامج صنع جداول كما تريد فمثلاً في الأسفل توجد لدينا صورة لجدول تم صنعه ببرنامج الوورد : كيف أصنع الجدول ؟ ببساطة هذا السطر يصنع الجدول Table = { } Table اسم الجدول هو { } الجدول هو فبدون العلامتين تلك لن تستطيع صنع الجدول لنقول أننا نريد صنع نفس الجدول اللذي بالأعلى Lua في لغة البرمجة أولاً نقوم بصناعة الجدول كما شرحت لكم في الأعلى Table = { } Lua ثانياً نقوم بإدخال الأعمدة وتكون على هذا الشكل في* siteInfo= { ["الحسابات"] = "General10", "6arh", ["كلمات المرور"] = "l123456789", "123456789", ["عدد المشاركات"] = "l500", "1000", } -- إغلاق الجدول = عليك أن تعلم أن كل شيء بعد هذا الرمز يعني يساوي ماقبل هذا الرمز فمثلا إسم المنتدى = طاره ---------------------------------------- Lua فلك أن تتخيل الفرق بين هذا الجدول في لغة Microsoft Word و ذاك الجـدول في برنامج* فجميعها نفس الكلمات ولكن يختلف التصميم فقط في الحقيقة الخفية الجدول عندما تصنعه في اللغة البرمجية لوا فهو نفسه الجدول الذي رأيتهُ في الأعلى وبنفس الشكل و لكنك لا تستطيع أن تراه كما ترى الجدول الذي صنع عبر الوورد =============================== كيف أقوم بإدخال القيمة داخل الجدول ؟ إعلم أن كل ما وجد داخل الجدول هو قيمة بشكل عام ترجع للجدول نفسه ولكن هناك قيم داخل الجدول تكون مفاتيح او بمعنى اصح اعمدة للقيم الخاصة بها فمثلا Table = { ["الحسابات"] = } هذا يعتبر عامود لأنه يساوي القيم التي بداخله وهي = { "General10", "6arh" } وتستطيع ايضاً إستخدام هذه الطريقة وهناك طرق أخرى كثيرة ليس بوسعي ذكرها جميعاً Table = { accounts = {"General10", "6arh"}, passwords = {"123456789", "123456789"}, posts = {"500", "1000"} } و ايضاً تستطيع إدخال القيم بدون المفاتيح ( الأعمدة )ا بهذه الطريقة Table = {"Hello 6arh","Hello people"} أو هذه الطريقة Table = {} Table.accounts = { "General10", "6arh" } و ايضاً Table = { } ["Accounts"] = {"General10", "6arh"} =================== كيف أقوم بإستخراج القيمة من الجدول ؟ : أولاً , تستطيع إستخراج القيم من الجدول بالطرق التالية Table = {* accounts = {"General10", "6arh"},* passwords = {"123456789", "123456789"}, posts = {"500", "1000"} } account = Table.accounts pass = Table.passwords post = Table.posts for c, v in ipairs ( account ) do outputChatBox(v) end for c, v in ipairs ( pass ) do outputChatBox(v) end for c, v in ipairs ( post ) do outputChatBox(v) end أو تستطيع إستخراج القيمة بهذه الطريقة Table = {"Muhammed", "Abdullah"} for _ , v in pairs ( Table ) do outputChatBox(v) end وهذا مثال على درجات الدراسة و كيف نضعها في جدول Table = { {"Quran", 40}, {"Maths", 35}, {"Computer", 30}, {"Psychology", 33}, {"Arabian Language", 40}, {"English", 30}, } for i , v in ipairs ( Table ) do outputChatBox ( "Name : ".. v[1] .. " & Class : "..v[2] ) end تلاحظ هنا مدى الإختصار اللذي تقوم به الجداول يعني بدل ماتكتب الدرجات درجة درجة* تحطها بجدول وتقدر تعدلها وتكتبها مره وحده وتقدر تأتي بالدرجة التي تريد ================================== الآن سنجرب بعض الوظائف التي صممت خصيصاً لهذا الموضوع مثلاً قمنا بتصميم مسابقة و نريد معرفة اللاعبين بداخل المسابقة Data وقمنا بإضافة* للاعبين داخل المسابقة , كل مايدخل لاعب نعطيه داتا وهذا مثال للمسابقة فعندما تدخل في الماركر الموجود في الكود يحطك في المسابقة واسمك راح يطلع بالشات كل ثانية local marker = createMarker(2483.84814 -1667.18225 13.34375, 'cylinder', 2, 255, 0, 0 ) addEventHandler("onMarkerHit", marker, function( *hitElement *) if hitElement and getElementType(hitElement) == "player" then local data = setElementData(hitElement, "MISSION_E", true) local spawn = spawnPlayer(hitElement, 286.12671, -40.40094, 1001.51563, 0, getElementModel(hitElement), 1, 0, getPlayerTeam(hitElement)) if spawn then outputChatBox("[ "..getPlayerName(hitElement).." ] Welcome to mission", root, 255, 0, 0, true) end end end ) ==================================== getPlayersInMission لنلاحظ اننا قمنا بإنشاء وظيفة جديدة بإسم وظيفتها هي جلب اللاعبين الموجودين داخل المسابقة من خلال الداتا و قمنا بإستعمال الجدول داخل هذه الوظيفة لنضع فيه اللاعبين* و من ثم نستخدم الوظيفة في لوب عشان نجيب القيم وهي اللاعبين table.insert إستخدمنا وظيفة لنقوم بإدخال القيمة داخل الجدول والقيمة هي كل اللاعبين داخل السيرفر ولكن بشرط انها لا تأتي الا باللاعب اللذي يوجد لديه الداتا حق المسابقة هذا مثال يأتي بكل السيارات في السيرفر ID ولكن لا يأتي الا بالسيارات التي يكون رقم الخاص بها هو اللذي تحدده في الوظيفة *مثلاً نبي نحجز كل الهايلكسات ونعطيها فريز فلنفرض أن الهايلكس رقم الآي دي حقها 502* function getVehicles ( id ) if id == "number" then local Vehicles = { } for k , v in ipairs ( getElementsByType("vehicle") ) do if getElementModel(v) == id then table.insert(Vehicles, v) end end return Vehicles else return end end setElementFrozen(getVehicles(502), true) هنا أيضاً إستخدمنا الجدول لنضيف السيارات عليه بس بشرط اللي هو if getElementModel(v) == id then اذا اكان رقم السيارة = الرقم اللي كتبته في الوظيفة table.insert(Vehicles, v) تساوي كل القيم داخل الجدول هذا v هنا getElementsByType("vehicle") Table و كل وظيفة لها عودة والعودة في هذه الوظيفة هي يعني جدول و لذلك استخدمنا اللوب لنعرف القيم الخاصة بهذه الوظيفة التي مهمتها جلب العناصر جميعها حسب مانحدد , حددنا هنا السيارات فمن المستحيل أن تقوم بعمل لوب لجدول وتستخدم فيه وظيفة عودتها رقم مثل وظيفة getPlayerMoney من المستحيل أن تعمل لأنها رقم أصلاً فهي تأتي بعدد نقود اللاعب return العودة هي و لها درس إن شاء الله عن كيفية التعامل معها ملحوظه الشرح من قبل Ge[N]eral,10 Edited April 10, 2016 by Guest Link to comment
|[ ToBe ]| Posted April 11, 2016 Share Posted April 11, 2016 شرح كافي وافي م قصرت ي الذيب Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now