Jump to content

الجداول [ Tables ]


Recommended Posts

بسم الله الرحمن الرحيم

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

الصلاة والسلام على نبي الله محمد صلى الله عليه وسلم

اخواني الكرام في هذا المنتدى المبارك الذي جمعنا هنا على الخير إن شاء الله

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 by Guest
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...