Master_MTA

مساعدة بعملية حسابيه

Recommended Posts

سلام عليكم شباب كيف الحال

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

لكن مشكلة السكرول بار حق القريد لست تعبتني فابي حل للمساله الحسابيه ذي

صوره للتوظيح

p_986t3cwq1.png

 

Share this post


Link to post
4 minutes ago, Master_MTA said:

سلام عليكم شباب كيف الحال

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

لكن مشكلة السكرول بار حق القريد لست تعبتني فابي حل للمساله الحسابيه ذي

صوره للتوظيح

p_986t3cwq1.png

 

وضح اكتر اقدر اساعدك في الحساب

Share this post


Link to post
3 minutes ago, #َxLysandeR said:

وضح اكتر اقدر اساعدك في الحساب

اخيرا اصل بعيد عنك انا ساقط ماث في هندسه بس عدته وجبت فيه

B+

جيد جدا مرتفع

احم احم بس برضو مش نافع هههههه

ازاي اوضحلك اكتر مش فاهم

انته فاهم فكرة سكرول بار 

بتاعت الجريد لست

هيا دي

Share this post


Link to post
4 minutes ago, Master_MTA said:

اخيرا اصل بعيد عنك انا ساقط ماث في هندسه بس عدته وجبت فيه

B+

جيد جدا مرتفع

احم احم بس برضو مش نافع هههههه

ازاي اوضحلك اكتر مش فاهم

انته فاهم فكرة سكرول بار 

بتاعت الجريد لست

هيا دي

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

Share this post


Link to post
Just now, SuperX said:

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

ههههههههههه

امال اكلم ايه

 

Share this post


Link to post

اتوقع اني اقدر اساعدك بس انا مافهمت وش تبي وضح اكثر /: 

Edited by iMr.WiFi..!

Share this post


Link to post
1 minute ago, iMr.WiFi..! said:

اتوقع اني اقدر اساعدك بس انا مافهمت وش تبي وضح اكثر /: 

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

ابي اسوي علاقه نسبيه بين السكرول بار 

والstart x

حق ال

rows

بس

انا بالفعل خلصت 3/4 من المهمه

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

+

سويت ايفنت خاص بالسكرول بار

onClientDxScrollBarScrolled

ويجيبلي نسبة مئوية بعد باللي صارله سكرولد+

يقوله هل هو سحبه لفوق ولا تحت خلصت كل ذا

ناقص اني اخلي النسبة المئويه ذي ترفع الrows

حق القريد لست

واول ما توصل الجريد لست الروز لاخرها يكون السكرول وصل لاخره هنا الفكره

الكود للي مب فاهمني

addEventHandler('onClientDxScrollBarScrolled',root,function(pr,inc)


local baba=getElementParent(source)

	if baba and getElementType(baba)=='dxGridList' then

	local fin=((Elements[baba].rows[#Elements[baba].rows][1].y+Elements[baba].rows[#Elements[baba].rows][1].height-(Elements[baba].y+(Elements[baba].height*5/100)))*pr/100)/#Elements[baba].rows
		for k,v in ipairs(Elements[baba].rows)do
			
			for m,l in ipairs(v)do
				
				if inc then
				
				Elements[baba].rows[k][m].y=Elements[baba].rows[k][m].y-(fin)
				
				else
				
				Elements[baba].rows[k][m].y=Elements[baba].rows[k][m].y+(fin)
				
				end
				
			
			end
		
		end
	
	end


end)

 

هذي محاوله فاشله مني

Share this post


Link to post

شوف انا سويت طريقة بحيث اني معتمد على الجداول ..
راح اوضح الطريقة بالرسم :
 

p_986fx7341.png

-- اتمنى الطريقة تفيدك .
^ طبعا الي حطيته مجرد مثال انت المفروض مايجيب الا اخر 3 ارقام او اولها .

Edited by iMr.WiFi..!

Share this post


Link to post
1 minute ago, iMr.WiFi..! said:

-- اتمنى الطريقة تفيدك .

wow 

تصدق ولا جات بمخي طريقة فننااااااااانه

thx

بجرب واقولك زبطت معي او لا

انا اصلا مسوي فنكشن يجيبلي اقصى رو يمكن عرضه

لول

 

Edited by Master_MTA
  • Like 1

Share this post


Link to post
local testTable = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}
local scrollLevel = 0
local currentLevel = 0
local totalRows = 7
local selected = {}
local addedValue = 0
function isMouseInPosition ( x, y, width, height )
	if ( not isCursorShowing( ) ) then
		return false
	end
    local sx, sy = guiGetScreenSize ( )
    local cx, cy = getCursorPosition ( )
    local cx, cy = ( cx * sx ), ( cy * sy )
    if ( cx >= x and cx <= x + width ) and ( cy >= y and cy <= y + height ) then
        return true
    else
        return false
    end
end
addEventHandler("onClientRender", root,
    function()
        dxDrawRectangle(0, 240, 800, 121, tocolor(0, 0, 0, 150), false)
		local tableSize = #testTable
		if tableSize > totalRows then
			scrollLevel = (tableSize/totalRows)-1
			if scrollLevel > math.floor((tableSize/totalRows)-1) then
				scrollLevel = scrollLevel + 1
			end
		end
		if currentLevel == 0 then
			local startIndex = 1
			local endIndex = totalRows
			for index = startIndex, endIndex do
				if testTable[index] and testTable[index] ~= nil then
					if isMouseInPosition(20+((index-1)*107)+addedValue, 250, 107, 101) or (selected[1] == 20+((index-1)*107)+addedValue and selected[2] == 250 and selected[3] == 107 and selected[4] == 101) then
						dxDrawRectangle(20+((index-1)*107)+addedValue, 250, 107, 101, tocolor(0, 0, 0, 150), false)
						dxDrawText(tostring(testTable[index]), 20+((index-1)*107), 250, 127+(((index-1)*107)), 350, tocolor(150, 150, 150, 255), 1.00, "default", "center", "center", false, false, false, false, false)
					else
						dxDrawRectangle(20+((index-1)*107)+addedValue, 250, 107, 101, tocolor(62, 194, 68, 150), false)
						dxDrawText(tostring(testTable[index]), 20+((index-1)*107), 250, 127+(((index-1)*107)), 350, tocolor(255, 255, 255, 255), 1.00, "default", "center", "center", false, false, false, false, false)
					end
				end
			end
		elseif currentLevel > 0 then
			local startIndex = currentLevel*totalRows+1
			local endIndex = (currentLevel+1)*totalRows
			for index = startIndex, endIndex do
				local drawIndex = index-(totalRows*currentLevel)
				if testTable[index] and testTable[index] ~= nil then
					if isMouseInPosition(20+((drawIndex-1)*107), 250, 107, 101) or (selected[1] == 20+((drawIndex-1)*107) and selected[2] == 250 and selected[3] == 107 and selected[4] == 101) then
						dxDrawRectangle(20+((drawIndex-1)*107), 250, 107, 101, tocolor(200, 200, 200, 150), false)
						dxDrawText(tostring(testTable[index]), 20+((drawIndex-1)*107), 250, 127+(((drawIndex-1)*107)), 350, tocolor(255, 255, 255, 255), 1.00, "default", "center", "center", false, false, false, false, false)
					else
						dxDrawRectangle(20+((drawIndex-1)*107), 250, 107, 101, tocolor(62, 194, 68, 150), false)
						dxDrawText(tostring(testTable[index]), 20+((drawIndex-1)*107), 250, 127+(((drawIndex-1)*107)), 350, tocolor(255, 255, 255, 255), 1.00, "default", "center", "center", false, false, false, false, false)				
					end
				end
			end
		end
    end
)

bindKey("a", "down",
	function()
		currentLevel = currentLevel - 1
		if currentLevel < 0 then
			currentLevel = scrollLevel
		end
	end
)

bindKey("d", "down",
	function()
		currentLevel = currentLevel + 1
		if currentLevel > scrollLevel then
			currentLevel = 0
		end
	end
)

addEventHandler("onClientClick", root,
	function(b,s)
		if b == "left" and s == "down" then
			selected = {}
			local startIndex, endIndex
			if currentLevel > 0 then
				startIndex = currentLevel*totalRows+1
				endIndex = (currentLevel+1)*totalRows
			else
				startIndex = 1
				endIndex = totalRows
			end
			for index = startIndex, endIndex do
				local drawIndex
				if currentLevel > 0 then
					drawIndex = index-(totalRows*currentLevel)
				else
					drawIndex = index
				end
				if testTable[index] and testTable[index] ~= nil then
					if isMouseInPosition(20+((drawIndex-1)*107), 250, 107, 101) then
						selected = {20+((drawIndex-1)*107), 250, 107, 101}
					end
				end
			end
		end
	end
)

بص هو واي فاي ساعدك بس صراحه مش عايز امسح الي كتبته 😅

فذا مثال كنت مسويه زمان لما كنت بحاول اسوي  جريدليست بس بالعرض عشان احط فيه صور و كذا

بما اني معتزل قلت ممكن يفيدك او تاخد منه فكره اسهل عن السكرول بار

  • Thanks 1

Share this post


Link to post
Just now, #َxLysandeR said:

بما اني معتزل قلت ممكن يفيدك او تاخد منه فكره اسهل عن السكرول بار

حبيبي تسلم لكن الفكره مش هنا انا ممكن اعمله لو ل 1 جريد لست

لكن انا عايز اعمله لاي جريد لست

لول

فعشان كده عايزه نسبة وتناسب هوا ده اللي بكلم فيه لكن عالعموم تسلم

❤️

 

  • Like 1

Share this post


Link to post
1 minute ago, Master_MTA said:

حبيبي تسلم لكن الفكره مش هنا انا ممكن اعمله لو ل 1 جريد لست

لكن انا عايز اعمله لاي جريد لست

لول

فعشان كده عايزه نسبة وتناسب هوا ده اللي بكلم فيه لكن عالعموم تسلم

❤️

 

اها معلش فهمت غلط , مش مشكله خلاص واي فاي عمل الواجب معك 

:D

 

  • Like 1

Share this post


Link to post
1 minute ago, #َxLysandeR said:

اها معلش فهمت غلط , مش مشكله خلاص واي فاي عمل الواجب معك 

 

حبيبي ولا يهمك تسلم

منا بجرب طريقة وايفاي اهو ادعي بس

ههههه

Share this post


Link to post
11 hours ago, iMr.WiFi..! said:

راح اوضح الطريقة بالرسم :

لم تزبط معنا لكني سويت طريقة غيرها شوي

مسوي 3 تيبل

الاوله اللي فيها الروز اللي مب ظاهره فوق الرو الظاهره حاليا

الثانيه فيها الرو الظاهره حاليا

والثالثه

فيها الرو اللي مب ظاهره تحت الرو الظاهره حاليا هههه

عالعموم الطريقه معقدة شوي لكني قريب من اني اخلصها خلاص خلصتها يعتبر لكن في مشكله مع نسبة السكرول بار بس ازابطها والدنيا تمام

+_+

Share this post


Link to post

احسب مجموع الارتفاعات لكل الروز

واقسم الناتج على ١٠٠

واضربه في السكرول

 

نفترض ان ارتفاع الرو الواحد 25

وعدد الروز 6

 مجموع الارتفاعات بيصير ١٥٠

١٥٠/١٠٠ = ١.٥

والسكرول ٥٠

١.٥*٥٠ = ٧٥

 

75 هذي الاحداثي الرأسي

والحين تحتاج  حساب بسيط عشان تعرف رقم الرو الي عند 75

تقسم الاحداثي على ارتفاع الرو الواحد الي هو 25

75/25 = 3

الجواب معقول لان السكرول في النص والثلاثة نص الستة

بس لاتنسى تستخدم math.floor

لان ممكن يطلع رقم الرو بفاصلة

 

وطبعاً في النهاية تسوي لوب يبدأ من 3 الي حسبناها

Share this post


Link to post
2 hours ago, Master_MTA said:

لم تزبط معنا لكني سويت طريقة غيرها شوي

مسوي 3 تيبل

الاوله اللي فيها الروز اللي مب ظاهره فوق الرو الظاهره حاليا

الثانيه فيها الرو الظاهره حاليا

والثالثه

فيها الرو اللي مب ظاهره تحت الرو الظاهره حاليا هههه

عالعموم الطريقه معقدة شوي لكني قريب من اني اخلصها خلاص خلصتها يعتبر لكن في مشكله مع نسبة السكرول بار بس ازابطها والدنيا تمام

+_+

مايحتاج 3 تيبلز بالكثير تقدر تسويه بواحد بس اذا تبي يعني توزع القيم بشكل افضل استعمل جدولين
الجدول الاول تكون فيه كافة قيم الجريد ليست
والجدول الثاني القيم الي تظهر فقط .

- دون ان انسى ذكر طريقة حسين الي ذكرها قبل
تعتبر كويسة بس استعمل الي يعجبك لان طريقة حسين بالحسابات وانا بالجداول ..

Edited by iMr.WiFi..!

Share this post


Link to post

متغير واحد للسكرول وتسوي اللوب للجدول من بداية السكرول وعاد بعدين تعدله مثل الماكس حق عدد الروز وكذا

Share this post


Link to post
5 hours ago, H25 said:

احسب مجموع الارتفاعات لكل الروز

واقسم الناتج على ١٠٠

واضربه في السكرول

 

نفترض ان ارتفاع الرو الواحد 25

وعدد الروز 6

 مجموع الارتفاعات بيصير ١٥٠

١٥٠/١٠٠ = ١.٥

والسكرول ٥٠

١.٥*٥٠ = ٧٥

 

75 هذي الاحداثي الرأسي

والحين تحتاج  حساب بسيط عشان تعرف رقم الرو الي عند 75

تقسم الاحداثي على ارتفاع الرو الواحد الي هو 25

75/25 = 3

الجواب معقول لان السكرول في النص والثلاثة نص الستة

بس لاتنسى تستخدم math.floor

لان ممكن يطلع رقم الرو بفاصلة

 

وطبعاً في النهاية تسوي لوب يبدأ من 3 الي حسبناها

انت جبت النص الاول حق طريقتي

بالفعل لكن طريقة العرض حقتي تختلف

2 hours ago, N3xT said:

متغير واحد للسكرول وتسوي اللوب للجدول من بداية السكرول وعاد بعدين تعدله مثل الماكس حق عدد الروز وكذا

نفس فكرتة حسين

4 hours ago, iMr.WiFi..! said:

مايحتاج 3 تيبلز بالكثير تقدر تسويه بواحد بس اذا تبي يعني توزع القيم بشكل افضل استعمل جدولين

+_+ مشكور انا خلصت تقريبا

Share this post


Link to post

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

شريط التمرير راح يكون له اربع متغيرات

اللي هي الاحداثيات والطول والعرض

x, y, w, h

راح يكون له متغيرين thumb وزر شريط التمرير اللي اسمه

thumb_y اول شي احداثياته

y بما اننا راح نسوي شريط تمرير عمودي راح نستخدم الاحداثي 

والعكس مع الافقي

THUMB_S اما المتغير الثاني اللي هو حجمه 

بما اننا نستخدم ثوابت فالأفضل نستخدم اسم متغير بحجم كبير

progress راح يكون عندنا متغير ثاني وهو نسبة المثوية للشريط تكون اسمها

يكون كل شي بالجدول التالي

SCROLLBAR = {
    x = 0, y = 0, -- احداثيات الشريط
    w = 13, h = 480 -- الطول والعرض
    thumb_y = 0, -- الاحداثيات للزر
    progress = 0, -- نسبة التقدم
    THUMB_SIZE = 27, -- حجم الزر
	hold = true, -- راح اشرحها بعدين
}

وبسطت المفهوم بصورة

Spoiler

rect4565.png

 

اما بالنسبة للعملية الحسابية عشان تحريك الزر الازرق بسيطة

اول شي نحتاج نعرف مكان الماوس

راح نستخدم مكان الماوس في عمليتين

1- التحقق من ان الماوس داخل المنطقة الرمادية عند الضغط

2-  بما اننا نستخدم شريط تمرير عمودي y ننقل الزر الازرق لاحدثيات الماوس

راح نستخدم وظيفتين

getCursorPosition

getKeyState - mouse1(زر الماوس الايسر)

 

وتكون حسابات الطريقة كالآتي

hold عند الضغط على المنطقة الرمادية بالزر الايسر بالماوس نسوي متغير  

لكن عند افلات زر الماوس نلغي المتغير طبعا نحن نريد يفلت زر الماوس باي منطقة شرط يكون ضغط في البداية على المنطقة الرمادي

كالآتي hold يكون عملية تحويل المتغير 

function render()
	local cx, cy = getCursorPosition() -- نجلب احداثيات الماوس
	-- نتحقق ان احداثيات الماوس داخل المربع المادي
	local hovered = cx >= SCROLLBAR.x and cx <= SCROLLBAR.h and cy >= SCROLLBAR.y and cy <= SCROLLBAR.h
	if hovered
	and getKeyState "mouse1" then -- نتحقق كمان ان الماوس مضغوط
		SCROLLBAR.hold = true -- hold نفعل قيمة 
	end
	if hold and not getKeyState "mouse1" then -- hold اذا الاعب افلت زر الماوس وكان متفعل متغير
		SCROLLBAR.hold = false -- نلغي المتغير
	end
	
	
	-- hold
	if SCROLLBAR.hold then -- اذا تحقق الشرط هذا كما شرحنا سابقا بامكاننا نجري حساباتنا
		SCROLLBAR.thumb = ...
		SCROLLBAR.progress = ...
	end
end

onClientClick طبعا في طرق كثيرة مثلا باستخدام حدث

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

 

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

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

y نحتاج نعمل الحد الأدنى للإحداثيات وراح يكون اقل حد هو احداثيات المنطقة الرمادية 

وننقصه من طول الزر الازرق y اما للحد الأقصى هو طول المنطقة الرمادية مجموعة مع احداثيات  

يكون

y : الحد الأدنى

y+h-THUMB_SIZE : الحد الأقصى

صار كذا عندنا نطاق لمكان الشريط الازرق يوضع فيه

راح نستخدم math.max, math.min

كذا حلينا المشكلة الأولى

اما المشكلة الثانية هي التوسيط

لما ننقل الزر الازرق لاحداثيات الماوس تصير مشكلة كما في الصورة

Spoiler

rect4645.png

الحل بسيط ناخذ احداثيات الماوس وننقصها من نص حجم الزر الازرق كما في المعادلة التالية

cy-(THUMB_SIZE/2)

يصير كذا حلينا كل المشاكل اللي تتعلق بالنقل تصير المعادلة الحاسبية لاحداثيات الزر الازرق كالتالي

--[[
    نتأكد ان قيمة احداثيات الماوس الازرق اصغر من الحد الأقصى واكبر من الحد الأدنى
    لنضعها في نطاق محدد لاتخرح عنه
    math.min(
        math.max(
            احداثيات الزر الازرق,
            الحد الأدنى
        ),
    الحد الأقصى
    )
]]
SCROLLBAR.thumb_y = math.min(math.max(cy-(t/2), SCROLLBAR.y), SCROLLBAR.y+SCROLLBAR.h-SCROLLBAR.THUMB_SIZE)

اما بالنسبة لحساب النسبة المئوية

نحتاج نخليه احداثيات الزر الازرق  بالنسبة لاحداثيات المنطقة الرمادية

يعني لو كانت احداثيات المنطقة الرمادية هي 100 واحداثيات الزر الازرق هي 150 فتصير الاحداثيات 50 بالنسبة الى المنطقة الرمادية

y بالمتغير thumb_y يعني نحتاج نطرح المتغير

كذا اعطانا قيمة اولى لحساب النسبة المثوية لكن نحتاج الى قيمة قصوى ثابتة وهي طول المنطقة الرمادية منقوصة من حجم الزر الازرق

تصير الحسبة كالتالي

SCROLLBAR.progress = math.floor((SCROLLBAR.thumb_y-SCROLLBAR.y)/(SCROLLBAR.h-SCROLLBAR.THUMB_SIZE)*100)

 

يكون الكود النهائي كالتالي


-- اتجاه شريط التمرير راح يكون عمودي
-- y ومتغيرات لاحداثي x يعني راح نستخدم ثوابث لاحداثي


SCROLLBAR = {
	x = 0, y = 0, -- احداثيات الشريط
	w = 13, h = 480 -- الطول والعرض
	thumb_y = 0, -- الاحداثيات للزر الازرق
	progress = 0, -- النسبة المئوية
	THUMB_SIZE = 32, -- حجم الزر
	hold = false, -- راح اشرحها بعدين
}

function render() -- onClientRender
	local cx, cy = getCursorPosition() -- نجلب احداثيات الماوس
	-- نتحقق ان احداثيات الماوس داخل المربع المادي
	local hovered = cx >= SCROLLBAR.x and cx <= SCROLLBAR.h and cy >= SCROLLBAR.y and cy <= SCROLLBAR.h
	if hovered
	and getKeyState "mouse1" then -- نتحقق كمان ان الماوس مضغوط
		SCROLLBAR.hold = true -- hold نفعل قيمة 
	end
	if hold and not getKeyState "mouse1" then -- hold اذا الاعب افلت زر الماوس وكان متفعل متغير
		SCROLLBAR.hold = false -- نلغي المتغير
	end
	
	
	-- hold
	if SCROLLBAR.hold then -- اذا تحقق الشرط هذا كما شرحنا سابقا بامكاننا نجري حساباتنا
		--[[
			نتأكد ان قيمة احداثيات الماوس الازرق اصغر من الحد الأقصى واكبر من الحد الأدنى
			لنضعها في نطاق محدد لاتخرح عنه
			math.min(
				math.max(
					احداثيات الزر الازرق,
					الحد الأدنى
				)
			الحد الأقصى
			)
		]]
		SCROLLBAR.thumb_y = math.min(math.max(cy-(t/2), SCROLLBAR.y), SCROLLBAR.y+SCROLLBAR.h-SCROLLBAR.THUMB_SIZE)


		-- current/max -- المعادلة ذي تعطينة نسبة لشيء بالنسبة لشيء
		-- current : هي قيمة احداثيات الزر الازرق منقوصة من احداثيات المنطقة الرمادي عشان تعطينا الاحداثيات بالنسبة للمنطقة الرمادية
		-- max : هي القيمة الثابتة اللي بنينا عليها النسبة المئوية
		-- يكون الناتج نضربه ب100 يعطينا النسبة المئوية 
		-- math.floor يعطينا رقم بدون كسور
		SCROLLBAR.progress = math.floor((SCROLLBAR.thumb_y-SCROLLBAR.y)/(SCROLLBAR.h-SCROLLBAR.THUMB_SIZE)*100)
	end
	
	-- الزر الازرق
	dxDrawRectangle(SCROLLBAR.x, SCROLLBAR.thumb_y, SCROLLBAR.w, SCROLLBARTHUMB_SIZE, 0x03a9f4ff)
	-- شريط التمرير اللي هي المنطقة الرمادية
	dxDrawRectangle(SCROLLBAR.x, SCROLLBAR.y, SCROLLBAR.w, SCROLLBAR.h, 0xb3b3b3ff)
	 -- النسبة المئوية
	dxDrawText(SCROLLBAR.progress, SCROLLBAR.x, SCROLLBAR.y, SCROLLBAR.x+w, SCROLLBAR.y+SCROLLBAR.h, 0xffffffff, 1, font, "center", "center")
end

 

  • Like 4

Share this post


Link to post
26 minutes ago, </Mr.Tn6eL> said:

اما بالنسبة لحساب النسبة المئوية

 

❤️

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

Share this post


Link to post

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.