Jump to content

إلجدآول وكيفية التعآمل معهإ


Recommended Posts

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

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

في موضوعنا هذإإ نتكلم عن الجدآول وطريقة التعإمل معهإإ :

التحديثآت :

تم

4/3/1435

ممكن سؤال . وش هي الجداول وش تقصد فيها ممكن لو توريني صورة عنها اوشي

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

sql و db الجداول هي مثل قاعدة البيانات

كيف إسوي جدول ؟

تحط اسم متغير للجدول

=

وقوسين متعرجين

مثآل

table1 = { } 
  
local table2 = { } 

طريقة حفظ الجداول قيم؟

مثال

  
t = { 1,2,3 } 
  
t = { 
 1, 
"اثنين" 
} 
  

طريقة حفظ الجداول مفتاح + قيمه ؟

مثال

  
t = { 
  1="واحد", 
2="اثنين", 
3 = "ثلاثه" 
 } 
  

  
t = { 
 id=5 
} 
  
  
t = { 
  pi=3.14159, 
 banana="اصفر" 
 } 
  

  
t = { 
["name"] = "اسمك", 
["number"] = "رقمك" 
 } 
  

  
t = { 
["123456"] = "رقمك", 
[123456] = "رقمك", 
 } 
  

المفتاح اذا كان سلسله نصيه

لإزم تحط وسم السلسه النصيه

اذا كنت تحفظ السلسله بين قوسين

مثال

t={ 
["name"] = "اسمك" 
} 

طريقة حفظ الجداول جدول بـ جدول؟

مثال

  
t = {  
{1,"three",4}, 
{"واحد", 
"اثنين", 
"ثلاثه"} 
  
 } 
  
  
  
t = {  
one = {1,"three",4}, 
tow = {"one","three","four"} 
 } 
  
  
  

طريقة أضافة قيمه للجدول ؟

t = { } 
  
t[1] = 'one' 
t['banana'] = 'yellow' 
t.banana = 'yellow' 
  
  
اضافات خإطئه :: 
t."banana" = 'yellow'     -- > X 
t.1 = 'one'        -- > X 
  
  

كيف إعرف اذا كان المتغير جدول او لا ؟

بااستخدام type

مثآل:

a1 = { 'boo'} 
a2 = 2 
  
type( a1 ) 
> 'table' 
type( a2 ) 
> 'number' 

كيف أعرف حجم الجدول الي يبدأ مفتاحها برقم ؟

بااستخدام #

مثال:

t = {} 
t[1]=1 t[2]=1 t[3]=2 t[4]=3 t[5]=5 t[6]=8 t[7]=13 
boo = # t 
  
outputChatBox(" "..boo) 

7

كيف احفظ قيمة جدول في جدول ؟

تستخدم طريقه المفتاح والقيمه

مثال

[1] = "one" 

[1] المفتاح

"one" القيمه

["one"] = 1 

["one"] المفتاح

1 القيمه

بالطريقه هذي تقدر تحفظ الجداول في الجدوال

مثال يوضح لك الحفظ

t = { booo = { [46] ={[31] = 50,[29] = 50 },[45] ={[30] = 50,[28] = 50 }}} 

نوضحه إكثر

ناخذ الجزئيه هذي

booo = { [46] ={[31] = 50,[29] = 50 }} 

ناخذ الجزئيه هذي

booo = {  } 
[46] ={[31] = 50,[29] = 50 } 

نأخذ الجزئيه هذي

[31] = 50 

تطلع لك المفتاح والقيمه

[31] المفتاح

50 القيمه

نضيف للمفتاح والقيمه جدول

[46] ={[31] = 50} 

[46] المفتاح

{[31] = 50} القيمه

نضيف للقيمه + قيمه ثانيه

{[31] = 50,[29] = 50 } 

يطلع عندنا

[46] ={[31] = 50,[29] = 50 } 

نضيفها لجدول

booo = { [46] ={[31] = 50,[29] = 50 }} 

نضيف قيمه ثانيه للجدول

tbooo = { 
 [46] ={[31] = 50,[29] = 50 },[45] ={[30] = 50,[28] = 50 } 
} 

نضيفها لجدول

t = { booo = { [46] ={[31] = 50,[29] = 50 },[45] ={[30] = 50,[28] = 50 }}} 

ويطلع لك الجدول الي في اول الطريقه

كيف اطلع القيم من الجداول ؟

بااستخدامك

ipairs  
pairs 

? ipairs و pairs وش الفرق بين

ipairs > تستخدمها للمفتاح الافتراضي

كيف المفتاح الافتراضي ؟

يعني الجدول الي ماعدلت على مفتاحه

مثآل

t = { 1,"three",4} 
  
for k,v in ipairs (t) do 
outputChatBox(" "..k) 
end 

يطلع لك

1 
2 
3 

1 > مفتاح افتراضي للقيمه

2 > مفتاح افتراضي للقيمه

3 > مفتاح افتراضي للقيمه

مثآل يوضح لك اكثر

عندك الجدول هذا

وانت معدل على المفاتيح

t = { } 
t[3] = "three" 
t[4] = "four" 

استخدمت معه ipairs

for k,v in ipairs (t) do 
outputChatBox(" "..k) 
end 

يطلع لك

  
  
  
  
  
  
  
  
  
  
  
  
  
  

?

مآيطلع لك شي

لانك معدل على المفاتيح

ماتشتغل معك ipairsو

اذا كنت معدل على المفاتيح الافتراضيه

pairs لازم تستخدم

pairsمثآل ل

t = { } 
t[3] = "three" 
t[4] = "four" 
for k,v in pairs (t) do 
outputChatBox(" "..k) 
end 
  

يطلع لك

  
3 
4 
  

ipairs انا عدلت على المفاتيح لكن خليتها 1 2 3 تشتغل

عآدي تشتغل مدامك حاط المفاتيح على الافتراضي تشتغل معك

  
t = { } 
t[1] = "three" 
t[2] = "four" 
  
for k,v in ipairs (t) do 
outputChatBox(" "..k) 
end 
  

يطلع لك

  
1 
2 
  

? pairs كيف استخدم

شف الامثله وتعرف

مثآل

local tTeams = { tTeamBlue ={ [46] = {[31] = 50,[29] = 50}}, tTeamRed  ={ [46] = {[31] = 50,[29] = 50}} 
               } 
  
                    for nIndex, nValue in pairs(  
                        tTeams 
                    )  
                    do 
                        outputChatBox(" "..nIndex)       
                    end 

 tTeamBlue  
tTeamRed 

مثآل

local tTeams = { tTeamBlue ={ [46] = {[31] = 50,[29] = 50}}, tTeamRed  ={ [46] = {[31] = 50,[29] = 50}} 
               } 
  
                    for nIndex, nValue in pairs(  
                        tTeams["tTeamBlue"] 
                    )  
                    do 
                        outputChatBox(" "..nIndex)       
                    end 

31 
46 

مثآل

local tTeams = { tTeamBlue ={ [46] = {[31] = 50,[29] = 50}}, tTeamRed  ={ [46] = {[31] = 50,[29] = 50}} 
               } 
  
                    for nIndex, nValue in pairs(  
                        tTeams["tTeamBlue"][46] 
                    )  
                    do 
                        outputChatBox(" "..nIndex)       
                    end 

31 
29 

مثآل

local tTeams = { tTeamBlue ={ [46] = {[31] = 50,[29] = 50}}, tTeamRed  ={ [46] = {[31] = 50,[29] = 50}} 
               } 
                    for nIndex, nValue in pairs(  
                        tTeams.tTeamBlue[46] 
                    )  
                    do 
                        outputChatBox(" "..nIndex)       
                    end 

31 
29 

متى نستخدم الاقوآس بالترقيم لجلب القيمه في الجدآول ؟

اذا كان الجدول الي تجلب منه القيمه مايستخدم المفآتيح

زي كذا

t = { 1,"three",4} 

او

t = { { 1, "three" } , { 2 ,31} } 

مثآل

  
t = { { 1, "three" } , { 2 ,31} } 
outputChatBox(" "..t[2][1]) 
  

2 

مثآل

  
t = { { 1, "three" } , { 2 ,31} } 
outputChatBox(" "..t[1][2]) 
  

three 

مثآل

teams = { 
 teamBlue ={ weapons = { { 31, 50 } , { 29 , 50 } }, skin = 46 }, 
 teamRed  ={ weapons = { { 28,50 } , { 26, 50 } },skin = 45 } 
  } 
  
 outputChatBox(" "..tTeams.tTeamBlue.weapons[1][1]) 

31 

مثآل

teams = { 
 teamBlue ={ weapons = { { 31, 50 } , { 29 , 50 } }, skin = 46 }, 
 teamRed  ={ weapons = { { 28,50 } , { 26, 50 } },skin = 45 } 
  } 
  
 outputChatBox(" "..tTeams.tTeamBlue.weapons[1][1]) 

31 

؟ table.maxn وش تسوي

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

مثال

tTeamBlue ={ 
 [13] = {[31] = 50,[29] = 50}, 
 [17] = 46 
 } 
                        outputChatBox(" "..table.maxn(tTeamBlue)) 

13 

مثال

tTeamBlue ={ 
 [13] = {[31] = 50,[29] = 50}, 
 [17] = 46 
 } 
                        outputChatBox(" "..table.maxn(tTeamBlue[13])) 

31 

table.insert

تستخدم لإضآفة القيم للجدول

الاستخدآم

table.insert(القيمه,المفتاح,الجدول)

او

table.insert(القيمه,الجدول)

مثآل لاستخدام table.insert

Test = { 
[1] = 2, 
[2] = 3, 
[3] = 4 
} 
  
 نضيف له قيم بستخدم الداله 
table.insert(t,21) 
  
  
يطلع الجدول 
  
Test = { 
[1] = 2, 
[2] = 3, 
[3] = 4, 
[4] = 21 
} 

مثال #2

Test = { 
[1] = 2, 
[2] = 3, 
[3] = 4, 
} 
  
  
table.insert(t,2,99) 
  
يطلع الجدول 
  
Test = { 
[1] = 2, 
[2] = 99, 
[3] = 3, 
[4] = 4 
} 

table.remove

لحذف قيمه او جدول

لازم المفتاح يصير رقم

مثال #1

Test = { 
[1] = 2, 
[2] = 3, 
[3] = 4 
} 
  
  
table.insert(t,2,99) 
  
يطلع الجدول 
  
Test = { 
[1] = 2, 
[2] = 99, 
[3] = 3, 
[4] = 4 
} 
  
  
نسوي حذف للقيمه 
table.remove(t,2) 
  
يطلع الجدول 
  
Test = { 
[1] = 2, 
[2] = 3, 
[3] = 4 
} 
  
  
  

كيف تستخدم المنطقيه في الجداول ؟

true false

للي مآيعرف معنى المنطقيه ؟

هي مثل نعم لا ، صح خطا

تقدر تستخدمها بالجدول

بإضآفتها كـ قيمة بدون إستخدام وسم السلسله النصيه

السلسله النصيه

مثل

" "

إو

' '

نإخذ مثإل للاستخدام المنطقيه

المثال :

نبي نسوي جدول نستخدمه للتصاريح بدخول السيرفر

يعني اذا كان السريال مثلا 123 يدخل السيرفر اذا كان السيريال

مثلإ 111 يأخذ باند

اذا ماكان مسجل سرياله بالجدول يأخذ كيك

t = { 
["123"] = true, 
["111"] = false, 
["222"] = not false, 
["333"] = "true" 
  
} 

function fb() 
   local serial = getPlayerSerial(source) 
  if t[serial] then 
   outputChatBox("مرحبا بك") 
  elseif not t[serial] then 
      banPlayer(source) 
     else 
  kickPlayer(source) 
   end 
end 
addEventHandler ("onPlayerConnect", getRootElement(), fb) 

----------------------

function fb() 
   local serial = getPlayerSerial(source) 
  if t[serial] == true then 
   outputChatBox("مرحبا بك") 
  elseif t[serial] == false then 
      banPlayer(source) 
  elseif t[serial] == "true" then 
  outputChatBox("لاتستخدم وسم السلسله النصيه بالمنطقيه")   
   else 
  kickPlayer(source) 
   end 
end 
addEventHandler ("onPlayerConnect", getRootElement(), fb) 

مثآل اخرى لحفظ المنطقيه بالجدول ::

t = { 
[true] = "123", 
[false] = "111" 
} 

------------------------------------------------

حفظ الوظائف بالجدول

  
tab = {  
[outputChatBox]= "hhh" 
} 
  
for k ,v in pairs(tab) do 
k(v) 
end 

-------------------------------

أستخدام المتغيرات كـ مفاتيح للجدول

a = "اسمك" 
b = "رقمك" 
c = outputChatBox 
  
t = { 
  [a] = "محمد", 
  [b] = "123123", 
  [c] = "تم الطباعه" 
} 
  
for k ,v in pairs(t) do 
outputChatBox(" key = "..k.."val ="..v) 
end 

> key = "اسمك" val = "محمد"

------------------------------------------------

التعديل على قيم المفاتيح بالجدول

t = { 
  ["name"] = "محمد", 
  ["online"] = true, 
  [99] = "رقمي" 
} 
  
t["name"] = "احمد" 
t.online = false 
t[99] = "88" 
t.msg = "رسالتك" 

اذا استخرجت المفاتيح والقيم

بتطلع كذا ::

> "name" = "احمد"

> "online" = false

> 99=88

> "msg" = "رسالتك"

------------------------------------------------

التعديل على اسم المفاتيح بالجدول

لازم تستخدم table.remove

Tabserial = { 
{serl="234jk32sdasdascascsc",name="محمد" } 
} 
  
  
  
function onPlayerJoin ( ) 
    local serial = getPlayerSerial(source)  
  for k,v in pairs(Tabserial) do 
     if serial == v.serl and v.serl == "234jk32sdasdascascsc" then 
         outputChatBox(" مرحبا بك محمد") 
       S_P = v.serl 
       N_P = v.name 
     table.remove(Tabserial, k) 
Tabserial[k] = {serial=S_P,name=N_P,money="9999999"}  
 end 
end 
addEventHandler ( "onPlayerJoin", getRootElement(), onPlayerJoin ) 

------------------------------------------------

حذف عنصر من الجدول

table.remove() 

t = { 
  ["name"] = "محمد", 
  ["online"] = true, 
  [99] = "رقمك" 
} 
table.remove(t) 

يطلع::

name = "محمد"

online = true

t = { 
  ["name"] = "محمد", 
  ["online"] = true, 
  [99] = "رقمك" 
} 
table.remove(t,2) 

يطلع::

name = "محمد"

99 = "رقمك"

او استخدام

nil

  
t = { 
  ["name"] = "محمد", 
  ["online"] = true, 
  [99] = "رقمك" 
} 
  
t.online = nil 

بيطلع الجدول ::

> "name" = "محمد"

> 99="رقمك"

----------------------------------

في الجداول table.foreach استخدام

table.foreach(table, f)

t = { 
  name = "محمد", 
  number = 234, 
  online = true, 
} 
  
table.foreach (t, outputChatBox) 

> online

مثآل ثآني ::

t = { 
  name = "محمد", 
  number = 234, 
  online = true, 
} 
  
function f (k, v) 
  outputChatBox ("k = " .. tostring (k) ..  
         ", v = " .. tostring (v)) 
end  
table.foreach (t, f) 
  
  
> k = "name" v="محمد" 
> k = "number" v=234 
> k = online v=true 

مثآل ثإلث ::

  
  
t = {  
  dwarf = { str = 22, dex = 23, wis = 18 }, 
  human = { str = 20, dex = 20, wis = 20 }, 
  elf   = { str = 18, dex = 24, wis = 25 }, 
} 
  
outputChatBox (table.foreach (t,  
      function (k, v) 
       if k == "elf" then 
    v.str = 999999 
         return k..">"..v.str  
       end  
      end  
      ) 
) 

----------------------------------------------

مفهوم جدولين بجدول ؟

t1 = { "the", "quick", food = "eggs" }  
t2 = t1    
t2.food = "fish" 
  
function f (k, v) 
  outputChatBox ("key = " .. tostring (k) ..  
         ", value = " .. tostring (v)) 
end  
  
table.foreach (t1, f) 
outputChatBox("------") 
table.foreach (t2, f) 

key = 1, value = the

key = 2, value = quick

key = food, value = fish

------

key = 1, value = the

key = 2, value = quick

key = food, value = fish

مثل ماتشوف ان السمك تغير بالجدولين رغم اني غيرت فقط الجدول الثاني

وبالمثال هذا صح اني نسخت الجدول الثاني من الجدول الاول

لكن كلإهما جدول وآحد، و اي تغير يتنفذ على الجدولين

-----------------------------------------------------

الفرق بين

table.foreach

و

table.foreachi

مثال :: table.foreach

function f (k, v) 
  outputChatBox (" " .. tostring (k) ..  
         ",  " .. tostring (v)) 
end  
  
t =  
  { 
  "the",  
  skill = 80 
} 
  
table.foreach (t,f ) 

يطلع

1, the

skill, 80

مثال table.foreachi ::

function f (k, v) 
  outputChatBox (" " .. tostring (k) ..  
         ",  " .. tostring (v)) 
end  
  
t =  
  { 
  "the",  
  skill = 80 
} 
  
table.foreachi (t,f ) 

يطلع

1, the

table.foreachi << تطلع المفاتيح وقيمتها اذا كان المفتاح افتراضي

table.foreach << تطلع جميع المفاتيح والقيم

لاحظ المثآل هذا ::

وشف اذا كان المفاتح قآفز رقم يعتبر معدل على افتراضيته

function f (k, v) 
  outputChatBox (" " .. tostring (k) ..  
         ",  " .. tostring (v)) 
end  
t =  
  { 
  "the",  
  [2] = "tow" 
} 
t[4] = "four" 
table.foreachi (t,f ) 

يطلع

1, "the"

2, "tow"

طيب نعدل افتراضية المفاتيح

function f (k, v) 
  outputChatBox (" " .. tostring (k) ..  
         ",  " .. tostring (v)) 
end  
t =  
  { 
  "the",  
  [2] = "tow" 
} 
t[3] = "three" 
t[4] = "four" 
table.foreachi (t,f ) 

يطلع

1, "the"

2, "tow"

3, "three"

4, "four"

---------------------------------------------------------------

الترتيب في الجدآول

Sorting a table

tab = { 
"a", 
"c", 
"b" 
} 
  
table.sort (tab) 
  
for k,v in ipairs(tab) do 
outputChatBox(v) 
end 

a

b

c

بتلإلإحظ إن الحروف تم ترتيبها إبجدياً

---------------------------------------------------

عند إضافة مفاتح وقيمه للجدول كيف يتم ترتيبها ؟

tab = { 
"a", 
"c", 
"b" 
aa = 10 
bb = 30 
cc = 20 
} 
  
table.sort (tab) 
  
for k,v in pairs(tab) do 
outputChatBox(v) 
end 

a

b

c

وباقي القيم التي تتوفر لها مفاتيح راح يتم ترتيبها عشوائي

------------------------------------

عند ترتيب جدول بـ جدول

t = {  
   {"a" }, 
   {"b" }, 
} 
table.sort (t) 

رآح تلإلإحظ وجود خطإإ

attempt to compare two table values

وهو لإيمكن المقآرنه اذا كان جدول بـ جدول

وهنـا تأتي مهمة

إستخدام الوظيفه مع الترتيب

t = {  
   {"b" }, 
   {"c" }, 
 {"a"}, 
} 
table.sort (t,  
           function (v1, v2) 
             return v1[1] > v2[1] 
           end  
           ) 
  
outputChatBox(t[1][1]) 

يطلع

c

----------------------------------------------------------

t = {  
   {"b" }, 
   {"c" }, 
 {"a"}, 
} 
table.sort (t,  
           function (v1, v2) 
             return v1[1] < v2[1] 
           end  
           ) 
  
outputChatBox(t[1][1]) 

a

---------------------------------

الترتيب

باأضافة المفاتيح

t = {  
   {b=18 }, 
   {b=11}, 
} 
  
 table.sort (t,  
           function (v1, v2)   
          return v1.b < v2.b 
           end  
           ) 
  
outputChatBox(t[1].b) 
  

11

-------------------------------------------------

t = {  
   {b=18 }, 
   {b=11}, 
} 
  
 table.sort (t,  
           function (v1, v2)   
          return v1.b > v2.b 
           end  
           ) 
  
outputChatBox(t[1].b) 
  

18

-------------------------------------------------

تتسآئل كيف يمكنني ان إرتب المفاتيح بالجدول ؟

هكذا يمكنك ترتيب المفاتيح انظر للمثال

t = { 
b = {old = 1}, 
a = {old = 1}, 
c = {old = 1} 
  
} 
t2 = { } 
  
table.foreach (t, function (k) table.insert (t2, k) end ) 
  
table.sort (t2) 
  
for k ,v in pairs(t2) do 
outputChatBox(k) 
end 
  

a

b

c

---------------------------------------------------

تحويل جدول للسله نصيه

  
t = {  
   {"b" }, 
   {"c" }, 
 {"a"}, 
} 
table.sort (t) 
outputChatBox(table.concat (t, ",")) 

a,b,c

-----------------------------------------------

ترتيب جدول بإستخدام وظيفه خاصه

  
function pairsBooo(t,f) 
local a = { } 
for n in pairs (t) do 
table.insert(a,n) 
end 
table.sort (a, f) 
local i = 0 
return function ()  
    i = i + 1 
    return a[i], t[a[i]] 
end 
end 
  
t = {  
  
  dwarf = { str = 22, dex = 23, wis = 18 }, 
  human = { str = 20, dex = 20, wis = 20 }, 
  elf   = { str = 18, dex = 24, wis = 25 }, 
  
} 
  
  
for k, v in pairsBooo (t) do 
  outputChatBox (k) 
end 
  

dwarf

elf

human

---------------------

وتقدر تضيف للكود السابق وظيفه للترتيب

  
function pairsBooo(t,f) 
local a = { } 
for n in pairs (t) do 
table.insert(a,n) 
end 
table.sort (a, f) 
local i = 0 
return function ()  
    i = i + 1 
    return a[i], t[a[i]] 
end 
end 
  
  
function gt (a, b) 
  return a > b 
end  
  
t = {  
  
  dwarf = { str = 22, dex = 23, wis = 18 }, 
  human = { str = 20, dex = 20, wis = 20 }, 
  elf   = { str = 18, dex = 24, wis = 25 }, 
  
} 
  
  
for k, v in pairsBooo (t,gt) do 
  outputChatBox (k) 
end 
  

-----------------------------------------------------

استخدام next

من وقت وانا إود إن اكتب عن هذه الخاصيه

بما انها كانت مسببه لي عقده

هي وظيفه تكميليه ب لوا وليست اساسيه

يعني لو تشوف اصدار لوا 5.0 ماكانت الوظيفه موجود فيه

ماذا لو كان عندك الجدول هذا ؟

t = { 
"a", 
"b", 
"c", 
} 

وإردت ان يطبع القيم من ثاني القيم الموجود بالجدول ؟

next هنا يجي استخدام

t = { 
"a", 
"b", 
"c", 
} 
for k,v in next,t,1 do 
outputChatBox(v) 
end 

b

c

------------------------------------------------

ويمكنك ايضا تستخدمها للتأكد ان الجدول فآرغ اول لإ

  
t = { 
} 
if next (t) == nil then 
  outputChatBox("yes") 
else 
   outputChatBox("no") 
end  
  

yes

======================================================================================

تحديث 4/3/1435

استخدام toJSON

تستخدم لحفظ الجدول

مثآل :

local table_Booo = { } 
table_Booo[1] = {["name"] = "Booo", ["email"] = "[email protected]" } 
  
addEventHandler ( "onResourceStop", root,  
    function ( ) 
local jsonMYtable = toJSON (table_Booo) 
file = fileOpen ( "اسم الملف .lua" ) 
 if file then 
fileWrite (file,jsonMYtable) 
fileClose ( file ) 
end 
   end  
) 

الحين لو توقف تشغيل السكربت

بيكتب بالملف الجدول بصيغة نصيه

تطلع كذا

[ [ { "name": "Booo", "email": "[email protected]" } ] ]

استخدام fromJSON

اعادة الصيغه النصيه لجدول

عكس الي فوق

تم بحمد لله

الشكر لله إولاٌ وإخيرن

هذآ الموضوع إهداء لكل وإحد علمني شي في الجدآول

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

ولإتنسونا من دعآئكم :mrgreen:

فمآن الله

مصآدر

http://www.gammon.com.au/forum/?id=6036

http://lua-users.org/wiki/ForTutorial

http://www.lua.org

Edited by Guest
  • Like 2
Link to comment
  • 4 weeks later...
  • 4 weeks later...
ممكن سؤال . وش هي الجداول وش تقصد فيها ممكن لو توريني صورة عنها اوشي

الجداول هذي مثل اشياء تحفظ فيها الي تبيه سواءاً كان الآتي :

string [ سترنق ]

مثال :

"R50_" 

أو

number [ رقم ]

مثال :

50 

يمديك تقرا شرح الجداول في لغة

lua

هنا

http://lua-users.org/wiki/TablesTutorial

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

Link to comment
ممكن سؤال . وش هي الجداول وش تقصد فيها ممكن لو توريني صورة عنها اوشي

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

sql و db الجداول هي مثل قاعدة البيانات ، مثل

بس الجداول بيانات قابله للفقد .!

يعني اذا سويت الجداول بالكلنت

تفقدها اذا طلعت من السيرفر

و اذا سويتها بالسيرفر

تنفقد اذا سويت اعادة تشغيل للسيرفر

----------------------------------------------------------

وظآيف للجدآول

function table.find(t, ...) 
    local args = { ... } 
    if #args == 0 then 
        for k,v in pairs(t) do 
            if v then 
                return k, v 
            end 
        end 
        return false 
    end 
     
    local value = table.remove(args) 
    if value == '[nil]' then 
        value = nil 
    end 
    for k,v in pairs(t) do 
        for i,index in ipairs(args) do 
            if type(index) == 'function' then 
                v = index(v) 
            else 
                if index == '[last]' then 
                    index = #v 
                end 
                v = v[index] 
            end 
        end 
        if v == value then 
            return k, t[k] 
        end 
    end 
    return false 
end 

function table.removevalue(t, val) 
    for i,v in ipairs(t) do 
        if v == val then 
            table.remove(t, i) 
            return i 
        end 
    end 
    return false 
end 

function table.size(tab) 
    local length = 0 
    for _ in pairs(tab) do length = length + 1 end 
    return length 
end 

function table.random ( theTable ) 
    return theTable[math.random ( #theTable )] 
end 

function table.empty( a ) 
    if type( a ) ~= "table" then 
        return false 
    end 
     
    return not next( a ) 
end 

function table.condition( a1, a2 ) 
    if  
        type( a1 ) == 'table' and 
        type( a2 ) == 'table' 
    then 
  
        local function size( t ) 
            if type( t ) ~= 'table' then 
                return false  
            end 
            local n = 0 
            for _ in pairs( t ) do 
                n = n + 1 
            end 
            return n 
        end 
  
        if size( a1 ) == 0 and size( a2 ) == 0 then 
            return true 
        elseif size( a1 ) ~= size( a2 ) then 
            return false 
        end 
  
        for _, v in pairs( a1 ) do 
            local v2 = a2[ _ ] 
            if type( v ) == type( v2 ) then 
                if type( v ) == 'table' and type( v2 ) == 'table' then 
                    if size( v ) ~= size( v2 ) then 
                        return false 
                    end 
                    if size( v ) > 0 and size( v2 ) > 0 then 
                        if not table.condition( v, v2 ) then  
                            return false  
                        end 
                    end  
                elseif  
                    type( v ) == 'string' or type( v ) == 'number' and 
                    type( v2 ) == 'string' or type( v2 ) == 'number' 
                then 
                    if v ~= v2 then 
                        return false 
                    end 
                else 
                    return false 
                end 
            else 
                return false 
            end 
        end 
        return true 
    end 
    return false 
end 

function table.copy(tab) 
    local ret = {} 
    for key, value in pairs(tab) do 
        if (type(value) == "table") then ret[key] = table.copy(value) 
        else ret[key] = value end 
    end 
    return ret 
end 

حمآية الجدول من التعديل

function setTableProtected (tbl) 
  return setmetatable ({},  
    { 
    __index = tbl,  -- read access gets original table item 
    __newindex = function (t, n, v) 
       error ("attempting to change constant " ..  
             tostring (n) .. " to " .. tostring (v), 2) 
      end -- __newindex, error protects from editing 
    }) 
end 

https://wiki.multitheftauto.com/wiki/SetTableProtected

Link to comment
  • 2 months later...
  • 3 months later...
  • 5 months later...

ممكن سؤال الان

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

مشان افهم اكثر

Link to comment
ممكن سؤال الان

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

مشان افهم اكثر

Pos = { 
x[1] = {1230.54}, 
x[2] = {530.54}, 
y[1] = {-1621.54}, 
y[2] = {-1421.54}, 
z[1] = {13.54}, 
z[2] = {13.54}, 
} 
  
addEventHandler ( "onClientGUIClick", اسم البوتون, 
function ( ) 
if (source == اسم البوتون) then 
setElementPosition ( source, Pos.x[1], Pos.y[1], Pos.z[1] ) 
elseif (source == اسم البوتون) then 
setElementPosition ( source, Pos.x[2], Pos.y[2], Pos.z[2] ) 
end 
end 
) 

اتوقع كذا

+ اذا في اخطاء عدلوها ,, لأني مسوي الكود بالتلفون =D

Link to comment
  • 2 weeks later...
position = { 
    {x,y,z}, 
    {x,y,z}, 
    {x,y,z} 
} 
  
addEventHandler('onClientGUIClick',button,function() 
    setElementPosition(localPlayer,unpack(position[math.random(#position)])) 
    end,false 
) 

مادخل مخي اذا ممكن وماعليك تعب

ابي يكون لما تشغل المود يجي ماركر 4 بـ مناطق احددها سو جدول مشان يخش مخي اكثر

Link to comment
  • 3 months later...

قههر من جد

لي زمان احاول اتعلم

ودخلو ناس الموقع

وتعلمو قبلي وصارو آحتراف

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

نسبتي ضعيفة يعني نص الفنكشنات اعرف اسويها كود

Link to comment
اكثر الي تعلموا كانوا يدخلون المنتدى بإستمرار , يتابعون الاكواد الي تنطرح ويسألون كيف جاء كذا ...

انت مالك وجود بقسم البرمجه .

قسم البرمجة مب للبرمجه

طلب اكواد وانا الفنكشنات يوم اركبها تطلع مخربطه

سيرفر ع كلنت

Link to comment

شوف لازم تخصص فى اليوم من 16 الى 20 ساعة تكون فى المنتدى والويكى ادخل باى وقت بتلاقينى مقيم فى المنتدى

:D:D:D:D:D:D:D:D

وكل لما تلاقى واحد طالب فنكشنات وتلاقى واحد كتبها له روح ركبها وجربها بسيرفرك المجانى

بس لازم يكون اللى اعطالو الفنكشنات تكون صحيحة

مابى احبطك ب ال16 ساعة الى 20 ساعة بس هذا هو الامر الواقع

او انتظر الاجازة

وخلاص الاجازة اربت عندنا وبصير مقيم فى المنتدى 22 ساعة

:mrgreen:

Link to comment
شوف لازم تخصص فى اليوم من 16 الى 20 ساعة تكون فى المنتدى والويكى ادخل باى وقت بتلاقينى مقيم فى المنتدى

:D:D:D:D:D:D:D:D

وكل لما تلاقى واحد طالب فنكشنات وتلاقى واحد كتبها له روح ركبها وجربها بسيرفرك المجانى

بس لازم يكون اللى اعطالو الفنكشنات تكون صحيحة

مابى احبطك ب ال16 ساعة الى 20 ساعة بس هذا هو الامر الواقع

او انتظر الاجازة

وخلاص الاجازة اربت عندنا وبصير مقيم فى المنتدى 22 ساعة

:mrgreen:

شدخل الاجازه ب البرمجة ي حبيبي يبي لها دافور دارس الرياضيات

Link to comment

شدخل الاجازه ب البرمجة ي حبيبي يبي لها دافور دارس الرياضيات

مالها دخل الى ان الدراسة مستقبلك بتترك مستقبلك حتى تتعلم برمجة لعبة

+ مابيصير لك شغل لما تكبر

+ حياتك تضيع لو ماشتغلت

+ مايصير لزمة فى المجتمع

+ تعيش طول عمرك ندمان وكل ها على لعبة

بس ولا اكتر ولا اقل غير ان فى الاجازة تكون جالس ادام الكمبيوتر 24 ساعة بس ^_^

عرفت دخل الدراسة بالبرمجة

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...