Jump to content

استفسارين


MA[S]RIY

Recommended Posts

3 minutes ago, MARIY said:

السلام عليكم

 

اول شي

وش يعني 

cache="false"

ثاني شي ابي اعرف كل شي عن

for

cache="false" ,
تخليه ما يظهر بـ ملف mods ,
( للحماية ) ,
for ,
هذي تستخدم مع اللوب وغيرها ,
مثلاً :
هذا لوب يجيب كل اللاعبين 

for _ , v in ipairs ( getElementsByType ( 'player' ) ) do

مثال آخر 
 

for aMathColor = 1 , 3 do 
  guiGridListSetItemColor ( grid , row , aMathColor , 255 , 0 , 0 );
  

هذا يعني اذا اكثر من رو وتبي تلونهم وتبي تختصر الكود تسوي كذا ,
 

أتمنى فهمت :] 

Link to comment
16 minutes ago, MR.StoRm said:

cache="false" ,
تخليه ما يظهر بـ ملف mods ,
( للحماية ) ,
for ,
هذي تستخدم مع اللوب وغيرها ,
مثلاً :
هذا لوب يجيب كل اللاعبين 


for _ , v in ipairs ( getElementsByType ( 'player' ) ) do

مثال آخر 
 


for aMathColor = 1 , 3 do 
  guiGridListSetItemColor ( grid , row , aMathColor , 255 , 0 , 0 );
  

هذا يعني اذا اكثر من رو وتبي تلونهم وتبي تختصر الكود تسوي كذا ,
 

أتمنى فهمت :] 

:-| خطأ

  • Confused 1
Link to comment
local Markers = { -- مثال جدول يضم الماركرات
 	{x,y,z},
  	{x,y,z}
}

for i, v in ipairs( Markers ) do
  -- الخخخ
end

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

-- مثال لجلب اللاعبين

for i, v in ipairs( getElementsByType('player') ) do
  -- الخخخخ
end

for = لوب

وتنتهي ب end

لجلب اللالمنت او الجداول الخ

Link to comment
14 minutes ago, MR.StoRm said:

مب ضروري تزيد مشاركات ,
اذا خطأ لا تعلق أفيده ,

منا زآيد مششارككات ولآ شيءء

بسس إنت تشرح لهه خطأ ...

16 minutes ago, Source|> said:

local Markers = { -- مثال جدول يضم الماركرات
 	{x,y,z},
  	{x,y,z}
}

for i, v in ipairs( Markers ) do
  -- الخخخ
end

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

-- مثال لجلب اللاعبين

for i, v in ipairs( getElementsByType('player') ) do
  -- الخخخخ
end

for = لوب

وتنتهي ب end

لجلب اللالمنت او الجداول الخ

خطأ يآ صدديقي .. !

Link to comment
Just now, MR.StoRm said:

@!#NssoR_) شوف حل معه جالس يزيد مشاركات ,
ويقول خطأ خطأ ,
بالعقل حط الصح وخلصنا  مش كل شوي خطا خطا

@!#NssoR_) شوف حل معي :lol:

" for " -- تستخدم في استخراج القيم من الجدول 

مش عشان اسوي للوب للكل اللاعبين وبس -_-

  • Like 2
Link to comment
3 minutes ago, #_iMr.[E]coo said:

@!#NssoR_) شوف حل معي :lol:

" for " -- تستخدم في استخراج القيم من الجدول 

مش عشان اسوي للوب للكل اللاعبين وبس -_-

هو قايله مثال فقط مو معناه ان for مخصصه للكود ذا بس :lol:

Link to comment
1 hour ago, #_iMr.[E]coo said:

منا زآيد مششارككات ولآ شيءء

بسس إنت تشرح لهه خطأ ...

خطأ يآ صدديقي .. !

 

1 hour ago, #_iMr.[E]coo said:

منا زآيد مششارككات ولآ شيءء

بسس إنت تشرح لهه خطأ ...

خطأ يآ صدديقي .. !

يخوي انت وش تبي مني يخوي

اللي عندك قوله من مساعده

1 hour ago, #_iMr.[E]coo said:

ي ريت قايل شوف مثال لحالها

قايل انه " هذه تستخدم مع اللوب وغيرها " . :-)

يخوي شوف فوق وتفهم

قلت مثال

مثااااال

Link to comment
1 minute ago, #_iMr.[E]coo said:

شوي شوي لا يطقلك عرق ... 

كاتب 

for = لوب

طال عمرك انا ساعدته باللي اعرفه

بدال انك تزود مشاركاتك  على الفاضي

ساعده انت يخوي باللي تعرفه

Edited by Source|>
Link to comment
On ١٨‏/٧‏/٢٠١٧ at 11:25, #CroSs said:

يمكن قليل إلي يعرفوها for بشرح معلومة عن اللوب

:شيء مثل كذا ،for أغلبنا يعرف عن كيف تسوي لوب رقمي باللوب


for var = startingIndex, endingIndex, increament_discreament do
	
end

ipairsو pairs نستخدمه غالبا مع الوظيفة for ثاني للوب syntax لكن في

:وإلي هو


for result1, result2, r3, ... in iterator, argument1, arg2 do
	
end

تنبيه: ما يصير تحط العملية ... في هذي الحالة، حطيتها لأوضح انك تقدر تستقبل بيانات قد ما تبي

والإستقبال هو أنك تستلم البيانات المرجعة من الوظيفة وتحفظها، سواء بمتغير أو جدول. في حالتنا نحفظها في متغيرات

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

،المهم

for بمعنى حلقة، هي عبارة عن وظيفة يسموها حلقة لما تستعملها باللوب iterator الـ

كيف؟

في هذي الحالة for اولًا لازم نعرف طريقة عمل اللوب

ولازم تحط على الأقل متغير واحد ،for في متغيرات لنستخدمها داخل نطاق اللوب interator هو تعريف البيانات المستقبلة من الحلقة in إلي على يسار الكلمة

أما إلي على يمينها، تكون أول قيمة هي الحلقة إلي تبي تستدعيها وهي إجبارية لأن اللوب معتمد عليها، فلازم تحطها

(أما القيم الباقية فهي البيانات إلي بتمررها للحلقة وقت استدعائها، وتقدر تحط 2 كحد أقصى، ولكن ما بيظهر غلط لو حطيت أكثر، لكن بتم استبعادهم (كأنك ما حطيتهم

 

اوك، في شيء لازم نوضحه هنا

متى يتم استدعاء الحلقة؟

أو حتى تُستخدَم كل الذاكرة المتوفرة، في ذاك الوقت، اللوب يوقف، أو أن البرنامج يوقف كله إذا استُخدمَت كل الذاكرة المتوفرة nil ببساطة، يتم استدعائها من بداية اللوب ويتكرر الاستدعاء إلى ما لا نهاية حتى توقف الحلقة عن إرجاع أي قيمة أو ترجع

:وهي ،for في آلية معينة يتبعها اللوب

أول ما يبدأ اللوب، لوا تستدعي الحلقة مع تمرير لها القيم إلي بعدها إذا وجد، ولما تنتهي الحلقة من التنفيذ، القيم إلي رجعتها الحلقة، لوا تعرفهم بالمتغيرات إلي حطيتهم على اليسار، ولازم تعرف أن أي قيمة زايدة سيتم استبعادها، بمعنى مثلا لو حطيت متغيرين والحلقة ترجع 3 قيم، القيمة الثالثة سيتم استبعادها، نفس الآلية تحدث مع استقبال عادي لبيانات وظيفة عادية

هذا إلي يصير في الدورة الأولى للوب، أما من الدورة الثانية ورايح يصير تغير، وأحتاجك تركز هنا شوي

للتوضيح: المقصود بالدورة الثانية هو أن تقوم لوا باستخراج الكود الخاص باللوب للمرة الثانية

،المهم

إلي يصير في هذي المرحلة من اللوب هو أن أول قيمة رجعتها الحلقة من قبل في الدورة السابقة (افترض أن الدورة السابقة هي الأولى والحين احنا داخلين بالثانية) يتم إستخدامها كبرامتر ثاني بالاستدعاء الثاني للحلقة

طيب والبرامتر الأول؟

(البرامتر الأول هو القيمة إلي حطيتها بعد الحلقة مباشرة (إلي في البداية


for result1, result2, r3, ... in iterator, argument1, arg2 do
	
end

argument1 فمثلا، بالنسبة لهذا الكود القيمة هي قيمة المتغير

طيب وإذا ما حطيتها؟

nil ببساطة، لوا بتعتبرها

(الزبدة، الاستدعاء بالدورة الأولى للحلقة يكون كذا (لو افترضنا


iterator(argument1, arg2)

من الدورة الثانية ورايح يكون الاستدعاء كذا


iterator(argument1, result1)

يكون كذا argument1 لو مافي


iterator(nil, result1)

 

بنوضح كل هذا الكلام بتطبيقات


function enumerateToHundred(_, number)
	if number == nil then
		number = 0
	end
	
	if number < 100 then
		number = number + 1
		return number
	end
end

for number in enumerateToHundred do
	print("Current number is: " .. number)
end

لو جربت هذا الكود، راح يحسب لك من الواحد للمئة

وش إلي يصير بالضبط؟

أولًا، حطيت _ في البرامتر الأول للحلقة، لأن هذا يعبر عن القيمة الثانية (القيمة الأولى هي الحلقة)، وبما أن القيمة الثانية ثابتة ما تتغير من بداية اللوب، فأنا ما ابيها (عادة المبرمجين يحطون _ عشان يتفادون اي قيمة ما يبونها، لأن ماله داعي يحطون اسم معين)، في هذي الحالة، أنا ابي القيمة الثالثة إلي اقدر اغيرها كيف ما ابي، وإلي ترجع لي قيمتها السابقة (مو شرط، لكن ما دام أني ارجعها هي نفسها فترجع لي قيمتها السابقة) عشان اقدر ازود عليها وارجعها من جديد، وهكذا

المهم، إلي يصير هو

:وبدون تمرير أي قيمة، الاستدعاء (كافتراض) بكون شيء مثل كذا enumerateToHundred اللوب بالدورة الأولى يستدعي الحلقة


local number = enumerateToHundred(nil, nil)

فبالتالي الشرط بيتحقق وبتصير قيمته صفر، بعدها نتحقق أنه أقل من مئة، وإلي شيء طبيعي بيتحقق، ونزود عليه واحد، فبصير واحد، ونرجعه ،nill هي number لأن قيمة المتغير

تمام، هذا في المرة الأولى الرقم يكون واحد

nil من اللوب الثاني ورايح يتم اتباع طريقة مختلفة شوي، إلي هي ياخذ أول قيمة مرجعة ويحطها بالبرامتر الثاني، أما البرامتر الأول، فهو القيمة الثانية، وبما أنها غير موجودة، بتكون قيمتها

وبكون شيء مثل كذا


local number = enumerateToHundred(nil, 1)

بنفس الآلية، يستدعي الحلقة، وينفذ الكود، وتقدر تتوقع أن النتيجة بتكون اثنين من الكود

ويستمر هذا الشيء، حتى يوصل للدورة رقم 101

قبل ما ينفذها، الرقم السابق أكيد بكون 100

وبكون شيء مثل كذا


local number = enumerateToHundred(nil, 100)

هنا يتم استدعاء الحلقة، وفقًا للكود، الشرط ما يتحقق، إلي هو أن 100 أقل من 100، وبذلك، الوظيفة ما ترجع شيء، ويوقف اللوب

:lol: وصلنا لنهاية الشرح تقريبًا، عسى ما طولنا عليكم

 

هذا الكلام يشرح الطريقة هذي بعمل اللوب


local t = { 1, 2, 3 }

for key, value in next, t do
	print(key, value)
end

(next هو نفسه pairs لأن اصلًا الـ) pairs هذي الطريقة نفسها بالضبط بطريقة الـ

next للي ما يعرف وش تسوي الوظيفة

ببساطة، ترجع لك المفتاح والقيمة إلي بعد مفتاح معين في الجدول

Syntax:


object key, object value next(table[, object key])

table = الجدول إلي تبي تطبق عليه الوظيفة

key = المفتاح إلي تبي تجيب المفتاح إلي بعده وقيمته، لو ما خليته، برجع أول مفتاح بالجدول

يعني كائن، والمعنى منه هو أي نوع من البيانات object :ملاحظة

ملاحظة: مو دائمًا تقدر تعرف ترتيب المفاتيح، الترتيب بالكود ما بسوي شيء، حطيت ذا اول أو حطيت ذاك أخير، يمكن الأخير يطلع الأول

تقدم المفاتيح الرقمية على أنواع أخرى، (بس لكن لو حطيتهم بالترتيب في الجدول من البداية، وبعدها حطيت المفاتيح من الأنواع الثانية)، لو سويت شيء، مثل مفتاح رقمي أول وثالث وفي نصهم من نوع ثاني، بتصير خربطة next في العادة الوظيفة

،المهم

الحين بنشرح آلية عمل هذا الكود


local t = { 1, 2, 3 }

for key, value in next, t do
	print(key, value)
end

:ما بطول كثير هنا، إلي يصير ببساطة كذا

:المرة الأولى


local key, value = next(t, nil)

يرجع المفتاح 1 والقيمة 1

:المرة الثانية


local key, value = next(t, 1)

:المرة الثالثة


local key, value = next(t, 2)

:المرة الرابعة


local key, value = next(t, 3)

ويوقف اللوب nil ترجع next المرة الرابعة، بعد المفتاح 3، مافي مفتاح ثاني، فالحلقة

next فمثل ما قلت لكم، هي نفسها pairs أما بالنسبة لـ

nilوالجدول و next الوظيفة ترجع لك الوظيفة ،pairs لما تستخدم الوظيفة

،فيعني لما تسوي كذا


local t = { 1, 2, 3 }

for key, value in pairs(t) do
	print(key, value)
end

أنت كأنك مسوي كذا


local t = { 1, 2, 3 }

for key, value in next, t, nil do
	print(key, value)
end

ما فرق

هنا ما تأثر، سواء حطيتها ولا لا nil ملاحظة: الـ

pairs هذي وظيفة سهلة، لكنها تتبع آلية مختلفة عن ipairs وبالنسبة لـ

:آلية عملها كالتالي


function _pairs(table)
	return function(table, index)
		index = index + 1
		local value = table[index]
		if value then
			return value
		end
	end, table, 0
end

وأعتقد أن تنطيل طرحها من قبل

وخلص الموضوع، لول

.إذا ما فهمت ارجع أقرأ مرة ثانية، شيء عادي إذا ما فهمت من اول مرة

On ١٨‏/٧‏/٢٠١٧ at 12:03, #CroSs said:

false اخر كود المفروض يكون كذا، عشان ما يفشل التحقق مع قيم ال


function _pairs(table)
    return function(table, index)
        index = index + 1
        local value = table[index]
        if value ~= nil then
            return index
        end
    end, table, 0
end

 

 

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