Mr.Mostafa Posted July 18, 2019 Share Posted July 18, 2019 سلام عليكم انا حاطط هادا الكود لتكست dxDrawText ولكن المشكلة يكون ظابط عندي ولكن عند خويي تجيله باماكن تانية علي الشاشة وش الحل عشان اخلي الكلمة تيجي لكل احداثيات الشاشة في نفس المكان _dxDrawRectangle = dxDrawRectangle _dxDrawText = dxDrawText _dxDrawLine = dxDrawLine _dxDrawImage = dxDrawImage sWidth, sHeight = guiGetScreenSize() local resolutionX = 1366 local resolutionY = 768 function dxDrawText( text,posX,posY,right,bottom,color,scale,mixed_font,alignX,alignY,clip,wordBreak,postGUI,kk,gg ) return _dxDrawText(tostring( text ), ( posX/resolutionX )*sWidth, ( posY/resolutionY )*sHeight, ( right/resolutionX )*sWidth, ( bottom/resolutionY)*sHeight, color, ( sWidth/resolutionX )*scale, mixed_font, alignX, alignY, clip, wordBreak, postGUI, kk, gg) end function dxDrawRectangle( posX, posY, width, height,color,postGUI ) return _dxDrawRectangle(( posX/resolutionX )*sWidth, ( posY/resolutionY )*sHeight, ( width/resolutionX )*sWidth, ( height/resolutionY )*sHeight, color, postGUI) end function dxDrawImage( posX, posY, width, height, filename, rotation, r2, r3, color,postGUI ) return _dxDrawImage(( posX/resolutionX )*sWidth,( posY/resolutionY )*sHeight,( width/resolutionX )*sWidth,( height/resolutionY )*sHeight, filename, rotation, r2, r3, color, postGUI) end function dxDrawLine( posX, posY, width, height,color, size, postGUI ) return _dxDrawLine(( posX/resolutionX )*sWidth, ( posY/resolutionY )*sHeight, ( width/resolutionX )*sWidth, ( height/resolutionY )*sHeight, color, size, postGUI) end Link to comment
HassoN Posted July 18, 2019 Share Posted July 18, 2019 (edited) انا عن نفسي استعمل الطريقة الاتية local x, y = guiGetScreenSize ( ) local sx, sy = 1600, 900 -- مقاسات شاشتك -- مثال dxDrawText("TEST", 100, 200, 300, 400) -- الكود ذا على شاشتي فقط dxDrawText("TEST", x * (100/sx), y * (200/sy), x * (300/sx), y * (400/sy)) -- لجميع الشاشات وصلت الفكرة؟ Edited July 18, 2019 by HassoN Link to comment
Mr.Mostafa Posted July 18, 2019 Author Share Posted July 18, 2019 15 minutes ago, HassoN said: انا عن نفسي استعمل الطريقة الاتية local x, y = guiGetScreenSize ( ) local sx, sy = 1600, 900 -- مقاسات شاشتك -- مثال dxDrawText("TEST", 100, 200, 300, 400) -- الكود ذا على شاشتي فقط dxDrawText("TEST", x * (100/sx), y * (200/sy), x * (300/sx), y * (400/sy)) -- لجميع الشاشات وصلت الفكرة؟ طيب هي نفس الكود حقي تقريبا بس ليه حقي ما يشتغل Link to comment
HassoN Posted July 18, 2019 Share Posted July 18, 2019 ماعندي اي فكرة ... ممكن حاط مقاسات شاشتك غلط...؟ Link to comment
Mr.Mostafa Posted July 18, 2019 Author Share Posted July 18, 2019 1 minute ago, HassoN said: ماعندي اي فكرة ... ممكن حاط مقاسات شاشتك غلط...؟ حاطها صح dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 - 1, 171 - 1, 1195 - 1, 598 - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false) dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 + 1, 171 - 1, 1195 + 1, 598 - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false) dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 - 1, 171 + 1, 1195 - 1, 598 + 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false) dxDrawText(string.gsub(text, "#%x%x%x%x%x%x", ""), 172 + 1, 171 + 1, 1195 + 1, 598 + 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false) dxDrawText(""..text.."", (screenW - 1023) / 2, (screenH - 427) / 2, ((screenW - 1023) / 2) + 1023, ( (screenH - 427) / 2) + 427, tocolor(255, 255, 255, 255), 1.00, dxfont0_font, "center", "bottom", false, false, false, true, false) end Link to comment
#Soking Posted July 20, 2019 Share Posted July 20, 2019 المشكلة دي لما كانت بتواجهني كنت بستخدم طريقتك برضو بس كنت بخلي مقياس الشاشه صغير وقت التصميم800 x 600 جرب عيد التصميم وشاشة اللعبه عندك كده وشوف Link to comment
Mr.Mostafa Posted July 20, 2019 Author Share Posted July 20, 2019 16 hours ago, #Soking said: المشكلة دي لما كانت بتواجهني كنت بستخدم طريقتك برضو بس كنت بخلي مقياس الشاشه صغير وقت التصميم800 x 600 جرب عيد التصميم وشاشة اللعبه عندك كده وشوف On 18/07/2019 at 20:41, Mr.Mostafa said: local resolutionX = 1366 local resolutionY = 768 واخلي دول 800 x 600 ? On 19/07/2019 at 18:18, NX_CI said: وش جايك في الديبق ؟ ما يجي شي , الكلمة تيجي علي الشاشة حقتي مظبوطة وعلي شاشة خويي خربانة احداثيات مختلفة Link to comment
N3xT Posted July 21, 2019 Share Posted July 21, 2019 طريقة حسابك خاطئة local screenWidth, screenHeight = guiGetScreenSize ( ) local resX, resY = (screenWidth/1366), (screenHeight/768) local _dxDrawRectangle = dxDrawRectangle function dxDrawRectangle ( x, y, width, height, color, postGUI ) _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI ) end Link to comment
Mr.Mostafa Posted July 21, 2019 Author Share Posted July 21, 2019 2 minutes ago, N3xT said: function dxDrawRectangle ( x, y, width, height, color, postGUI ) _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI ) end اسويها علي الباقي سواء text + image ? Link to comment
nxFairlywell Posted July 21, 2019 Share Posted July 21, 2019 3 hours ago, N3xT said: طريقة حسابك خاطئة local screenWidth, screenHeight = guiGetScreenSize ( ) local resX, resY = (screenWidth/1366), (screenHeight/768) local _dxDrawRectangle = dxDrawRectangle function dxDrawRectangle ( x, y, width, height, color, postGUI ) _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI ) end خطأ فادح , إذا قسمت عرض شاشة المصمم على شاشة اللاعب تساوي كارثة الطريقة الصحيحه كالتالي local screenWidth, screenHeight = guiGetScreenSize(); local desW,desH = 1366,768; dxDrawRectangle( 300/desW*screenWidth, 200/desH*screenHeight, 50/desW*screenWidth, 50/desH*screenHeight ); -- وهكذا مع : dxDrawText dxDrawImage ...etc Link to comment
MaStFa Posted July 21, 2019 Share Posted July 21, 2019 local x, y = guiGetScreenSize() local sX, sY = (x/1366), (y/768) dxDrawRectangle(sX*555, sY*648, sX*30, sY*33, tocolor(0,0,0,255)) -- مثال Link to comment
N3xT Posted July 21, 2019 Share Posted July 21, 2019 (edited) 13 hours ago, NX_CI said: خطأ فادح , إذا قسمت عرض شاشة المصمم على شاشة اللاعب تساوي كارثة الطريقة الصحيحه كالتالي local screenWidth, screenHeight = guiGetScreenSize(); local desW,desH = 1366,768; dxDrawRectangle( 300/desW*screenWidth, 200/desH*screenHeight, 50/desW*screenWidth, 50/desH*screenHeight ); -- وهكذا مع : dxDrawText dxDrawImage ...etc على اي اساس حكمت ان كودي خطأ؟ 17 hours ago, Mr.Mostafa said: اسويها علي الباقي سواء text + image ? يب Edited July 21, 2019 by N3xT Link to comment
nxFairlywell Posted July 21, 2019 Share Posted July 21, 2019 (edited) 23 minutes ago, N3xT said: على اي اساس حكمت ان كودي خطأ؟ يب على اساس المنطق افرض اني بسويه على طريقتك مقاس شاشتي 1920x1080 مقاسات شاشة مصطفى 1366x768 ولتكن مقاسات المستطيل على هذا النحو x=683,y=200,width=64,height=64 طبعاً x = نصف شاشة مصطفى هل تعتقد ان 1366/1920 * x = نفس المقاس في شاشتي وشاشة مصطفى ؟؟ 1366 / 1920 = 0.711 يكون في نصف شاشتي ايضاً xمن البديهي اني ابغى الـ 0.711 * 683 = 485.6 x = 485.6 إذن 1920 و أنا متأكد تماماً ان نصف 485.6 لا يساوي لكن لو بالطريقه اللي حطيتها انا x/1366 = 0.5 0.5 * 1920 = 960 x = 960 هذي جات بالنص الآن #EDIT عفواً تأكدت من كودك و حصلتك قاسم شاشة اللاعب على شاشة المصمم وأنا احسبه العكس أعتذر Edited July 21, 2019 by NX_CI Link to comment
N3xT Posted July 21, 2019 Share Posted July 21, 2019 1920/1366 = 1.405563689604685 683 * 1.405563689604685 = 960 1920 / 2 = 960 Link to comment
Mr.Mostafa Posted July 28, 2019 Author Share Posted July 28, 2019 On 21/07/2019 at 03:23, N3xT said: طريقة حسابك خاطئة local screenWidth, screenHeight = guiGetScreenSize ( ) local resX, resY = (screenWidth/1366), (screenHeight/768) local _dxDrawRectangle = dxDrawRectangle function dxDrawRectangle ( x, y, width, height, color, postGUI ) _dxDrawRectangle ( resX * x, resY * y, resX * width, resY * height, color, postGUI ) end حطيته صار يجي تحت مب بنفس المكان Link to comment
HassoN Posted July 28, 2019 Share Posted July 28, 2019 1 hour ago, Mr.Mostafa said: حطيته صار يجي تحت مب بنفس المكان طبعاً بيجي خطاء لان الكود اساساً خطاء ، الطريقة الي عطيتها لك والي انت مستعملها صح ، صراحة ما ادري ايش الي مسبب لك المشكلة لكن اقدر اكد لك ان الطريقة تمام Link to comment
N3xT Posted July 28, 2019 Share Posted July 28, 2019 3 hours ago, Mr.Mostafa said: حطيته صار يجي تحت مب بنفس المكان غالباً المشكلة من نفس استعمالك للكود, حط الاحداثيات الاساسية فقط بكودك ما يحتاج اي عمليات حسابية 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