Jump to content

x[ مشكلة ]x قياسات الشاشه لا تتناسب مع شاشات الاعبين


Recommended Posts

السلام عليكم

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

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

مع انه ضبطت الكل على جميع الشاشات من جيو ايدتور بس مدري ليه

وجلست عليه اكثر من شهر وش الحل؟؟

Link to comment

اخوي شوف كيف وظيفة صنع النافذة

https://wiki.multitheftauto.com/wiki/GuiCreateWindow

الارقيومنت السادس

Relativ ال

true على حد علمي اذا خليته

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

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

---

تحديث المشاركة

بعد م تعدل اللوحه وتصير

Relativ

تختلف الاحجام معك

تصير من 0 إلى 1

ف هذا الكود الي تحت يوسط لك النافذة بنص الشاشة بالضبط

guiCreateWindow(0.25, 0.25, 0.5 0.5, "Window", true)

Link to comment

انا بجرب اسوي مود فيه ليبل وشويه شغلات مو مبرمجه اشوف كيف تيجوا على شاشتكم لو ما فيها غلبه شوية وارفعه

#تحديث

--[[------------------------------------------------- 
Notes: 
  
> This code is using a custom font. This will only work as long as the location it is from always exists, and the resource it is part of is running. 
    To ensure it does not break, it is highly encouraged to move custom fonts into your local resource and reference them there. 
--]]------------------------------------------------- 
  
  
GUIEditor = { 
    label = {} 
} 
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        GUIEditor.label[1] = guiCreateLabel(0.00, -0.00, 0.09, 0.05, "Login |||", true) 
        local font0_1 = guiCreateFont(":guieditor/fonts/1.ttf", 22) 
        guiSetFont(GUIEditor.label[1], font0_1) 
  
  
        GUIEditor.label[2] = guiCreateLabel(0.44, 0.52, 0.09, 0.05, "Register", true) 
        guiSetFont(GUIEditor.label[2], font0_1)     
    end 
) 
  

ممكن احد يركبه ويصورها اشوف كيف تخرج عنده

Link to comment

شوف اليوزفل فانكشن ذا

بس هذا للدي إكس

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

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

 : و على آله و صحبـه أجمعين , أما بعد

أخواني الكرام , جئتكم اليوم بوظيفة صنعتها بنفسي

Dx مهمتها حساب قياسات الشاشة للـ

هذه الوظيفة مهمـة جداً للمبتدئين و لمتوسطين المستوى في البرمجة

Dx ستفيدكم إن شاء الله في إنشاء واجهات الـ

قبل أن نبدأ في شرح الوظيفة سأقوم بتوضيح 3 نقاط مهمة :

أولاً : سبب طرحي لهذه الوظيفة هو بسبب المشاكل التي واجهتني في حسابات الدي اكس

ثانياً : هذه الوظيفة تختلف تماماً عن سابقاتها لأن عملها يسهل لك تحريكها و ليس كبقية الوظائف

ثالثاً : هذه الوظيفة تعطيك رقماً صحيحا للإحداثيات و تستطيع تعديل احداثياتها بالمتغيرات

أولاً سنقوم بإنشاء واجهة دي إكس تجريبية

 ستكون إحداثياتها كالتالي :

x : 200

y : 150

toX : 300

toY : 300

و ستكون قياسات الشاشة الخاصة بمصمم الواجهة هي كالتالي :

العرض : 800

الإرتفاع : 600

سنشرح في البداية الساينتاكس او القاعدة أو طريقة كتابة الوظيفة

convertDxPositionToAllScreens ( x, y, toX, toY, yourX, yourY )

x : x احداثي

y : y احداثي

toX : x احداثي لنهاية

toY : y احداثي لنهاية

yourX : قياس العرض لشاشة المصمم

yourY : قياس الإرتفاع لشاشة المصمم

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

بعد أن قمنا بالتعرف على الساينتاكس

سنقوم بتركيب الاحداثيات على الوظيفة

بهذا الشكل :

convertDxPositionToAllScreens ( 200, 150, 300, 300, 800, 600 )

200 : x

150 : y

300 : toX

300 : toY

800 : myScreenW

600 : myScreenH

الآن نقوم بتركيبها على الكود

addEventHandler("onClientRender", root, 
    function() 
        x, y, tx, ty,size = convertDxPositionToAllScreens(200, 150, 300, 300, 1, 800, 600) 
        dxDrawText("Hello world", x, y, tx, ty, tocolor(255, 255, 255, 255), size, false, false, false, false) 
    end 
)  

أتمنى الشرح واضح , كان شرح سريع

الزبده , السورس كود تحت ماتشتغل الوظيفة بدونه !

موفقين إن شاء الله ..

function convertDxPositionToAllScreens(x, y, toX, toY, size, yourX, yourY) 
    if type(x) == "number" and type(y) == "number" and type(toX) == "number" and type(toY) == "number" and type(yourX) == "number" and type(yourY) == "number" then 
        local sX, sY = guiGetScreenSize( ) 
        local nX = tonumber(x)/tonumber(yourX) 
        local nY = tonumber(y)/tonumber(yourY) 
        local nTX = tonumber(toX)/tonumber(yourX) 
        local nTY = tonumber(toY)/tonumber(yourY) 
        local rX = nX*sX 
        local rY = nY*sY 
        local rTX = nTX*sX 
        local rTY = nTY*sY 
        local font_size=tonumber( size )*sX/yourX 
        return rX, rY, rTX, rTY, font_size 
    end 
end 

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

Link to comment
اكثره جيو ايدتور ما احتاجه الدي اكس دلحين

افتح لعبة MTA

روح لملف ال Setting

اختار Video

ممكن تقولى مقاس الشاشة من على الكمبيوتر اللى صممت عليه المود .. ؟

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

guiSetPositionAllScreen ............ Useful Function By Hassan.KSA

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

Link to comment
--[[------------------------------------------------- 
Notes: 
> This code is using a custom font. This will only work as long as the location it is from always exists, and the resource it is part of is running. 
    To ensure it does not break, it is highly encouraged to move custom fonts into your local resource and reference them there. 
--]]------------------------------------------------- 
GUIEditor = { 
    label = {} 
} 
addEventHandler("onClientResourceStart", resourceRoot, 
    function() 
        GUIEditor.label[1] = guiCreateLabel(0.00, -0.00, 0.09, 0.05, "Login |||", true) 
  
        local sX = guiGetScreenSize() 
        local font0_1 = guiCreateFont(":guieditor/fonts/1.ttf", 22*(sX/1280)) 
        guiSetFont(GUIEditor.label[1], font0_1) 
  
        GUIEditor.label[2] = guiCreateLabel(0.44, 0.52, 0.09, 0.05, "Register", true) 
  
        guiSetFont(GUIEditor.label[2], font0_1)     
    end 
) 

بسطر guiCreateFont

فيه 1280

غيرها بعرض شاشتك

المشكلة الي بالصور الي حطيتها ماهي من النوافذ نفسها لانه حجمها جالس يتغير

المشكله في حجم التكست بس ...

Link to comment

شوف جرب هالطريقه :

شوف حبيبي هذي طريقه سهله جدا ,

local x, y = guiGetScreenSize ( ) -- تجيب مقاسات الشاشه 
local sx, sy = 1366, 768 -- تحط مقاس الشاشه حقك 
local resX, resY = 100, 200 -- تحط الاحداثيات الطول والعرض 
local screenX, screenY = x * ( resX / sx ), y * ( resY / sy ) -- عمليات ضرب وقسمه عشان تصير نفس المقاس لكل الشاشات 

: الي عليك انك تبدل التالي

  • السطر الثاني , تحط مقاس الشاشه حقك , طبعا ذا مثال على مقاس شاشتي
  • السطر الثالث , تحط الاحداثيات للطول والعرض

راح تحتاج تخلي الخط لكل الشاشات , الي عليك تسويه كذا, dxDrawText لو استخدمت الوظيفه

local x, y = guiGetScreenSize ( ) 
local sx, sy = 1366, 768 
local resX, resY = 300, 400 
local screenX, screenY = x * ( resX / sx ), y * ( resY / sy ) 
  
x * ( size / sx ) -- نضرب مقاسات الشاشه في حاصل قسمه الحجم على مقاس الشاشه 

  • بالحجم المطلوب size استبدل

Link to comment

سويت لك فنكشن يسهل عليك :

getPosition = function ( x, y, sx, sy ) 
    if type( x ) =='number' and type( y ) == 'number' and type ( sx ) == 'number' and type ( sy ) == 'number' then 
        local sc = { guiGetScreenSize ( ) } 
            local screenX, screenY = sc[1] * ( x / sx ), sc[2] * ( y / sy ) 
                return  screenX, screenY 
    end 
        return false 
end 

getPosition ( x, y, sx, sy ) 
-- x احداثيات 
-- y احداثيات 
-- sx مقاس الشاشه 
-- sy مقاس الشاشه 

مثال :

local x,y = getPosition ( 5, 5, 1366, 768 ) 
window = guiCreateWindow ( x, y, 50, 100, 'Test', false ) 
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...