Jump to content

Adequar painel DX para qualquer resolução


Recommended Posts

Posted (edited)

então na minha resolução fica normal, mas a resolução do meu amigo é diferente e ele disse que as letras saem para fora do painel poderiam me ajudar?
 

local screenW, screenH = guiGetScreenSize()

function DX_Entregas()
    dxDrawRectangle(screenW * 0.3794, screenH * 0.2467, screenW * 0.2288, screenH * 0.4833, tocolor(31, 31, 31, 255), false)
    dxDrawRectangle(screenW * 0.3794, screenH * 0.2356, screenW * 0.2288, screenH * 0.0111, tocolor(116, 0, 165, 255), false)
    dxDrawRoundedRectangle(screenW * 0.3956, screenH * 0.2711, screenW * 0.1969, screenH * 0.3333, 15, tocolor(82, 82, 82, 224), false)
    dxDrawRoundedRectangle(screenW * 0.4019, screenH * 0.6444, screenW * 0.0769, screenH * 0.0533, 15, tocolor(82, 82, 82, 224), false)
    dxDrawRoundedRectangle(screenW * 0.5094, screenH * 0.6444, screenW * 0.0769, screenH * 0.0533, 15, tocolor(82, 82, 82, 224), false)
    dxDrawText("SIM", screenW * 0.4200, screenH * 0.6489, screenW * 0.4788, screenH * 0.6778, tocolor(25, 232, 4, 255), 3.00, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("NÃO", screenW * 0.5240, screenH * 0.6489, screenW * 0.5837, screenH * 0.6778, tocolor(237, 0, 0, 255), 3.00, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("Você Quer Trabalhar Entregando Drogas?", screenW * 0.4200, screenH * 0.2822, screenW * 0.6019, screenH * 0.3122, tocolor(255, 255, 255, 255), 1.1, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("--Receber uma Van no Local ao Lado", screenW * 0.4044, screenH * 0.3267, screenW * 0.5863, screenH * 0.3567, tocolor(255, 255, 255, 255), 1.1, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("--Entregar a Carga em um Local Secreto", screenW * 0.4044, screenH * 0.3567, screenW * 0.5863, screenH * 0.3867, tocolor(255, 255, 255, 255), 1.1, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("--Receber de R$8000 a R$9000 de Dinheiro Sujo", screenW * 0.4044, screenH * 0.4167, screenW * 0.5863, screenH * 0.4211, tocolor(255, 255, 255, 255), 1.1, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("--Caso Saia da Van Perderá a Carga", screenW * 0.4044, screenH * 0.4467, screenW * 0.5863, screenH * 0.4211, tocolor(255, 255, 255, 255), 1.1, "default-bold", "left", "top", false, false, false, false, false)
    dxDrawText("--Caso a Van Quebre Perderá a Carga", screenW * 0.4044, screenH * 0.4767, screenW * 0.5863, screenH * 0.4211, tocolor(255, 255, 255, 255), 1.1, "default-bold", "left", "top", false, false, false, false, false)
end

 

Edited by Lord Henry
  • Other Languages Moderators
Posted

Textos não acompanham resolução da tela. Você terá que alterar a escala da fonte de acordo com o tamanho da tela do jogador.

É por esse motivo que eu prefiro fazer com tamanho fixo, pois os textos não são responsivos.

Além disso, dependendo da resolução do jogador, a proporção da tela também mudará. (por padrão é 16:9, mas algumas resoluções mais baixas podem chegar até a 4:3)

  • Other Languages Moderators
Posted

A resolução segura mais baixa do MTA é 640x480. Então eu prefiro fazer os painéis com no máximo esse tamanho e deixar fixo.

Ou vc faz tamanho fixo ou você cria condições que verificam o tamanho da tela do jogador e seta uma escala diferente nas fontes.

Você também pode criar uma tabela com todas as resoluções padrão do MTA e setar uma escala de fonte diferente em cada uma delas. Obviamente isso dará trabalho pois você precisará testar todas as opções de resolução no seu script.

Posted
pra isso eu teria que usar o "guiGetSreenSize"? em formato de "if then" e abrir os textos em baixo disso com outra fonte?
como um exemplo na wiki:
	local x,y = guiGetScreenSize()
	if ( x <= 640 ) and ( y <= 480 ) then

 

  • Other Languages Moderators
Posted

Outro problema é que em resoluções baixas demais, seu texto se tornará ilegível se usar escala menor.

640x480

image.png

1920x1080

image.png

Os botões de sim e não também bugarão pois são menores do que o raio dos cantos.

  • Other Languages Moderators
Posted

Não, pois você ainda terá problemas com as áreas clicáveis dos botões que precisarão ser adaptadas também.

  • Other Languages Moderators
Posted
Spoiler
local screenW, screenH = guiGetScreenSize()
local states = false

function DX_Entregas()
    dxDrawRectangle((screenW/2) - 220, (screenH/2) - 220, 440, 460, tocolor(31, 31, 31, 255), true)
    dxDrawRectangle((screenW/2) - 220, (screenH/2) - 240, 440, 20, tocolor(116, 0, 165, 255), true)
    dxDrawRoundedRectangle((screenW/2) - 200, (screenH/2) - 220, 400, 360, 15, tocolor(82, 82, 82, 224), true)
    dxDrawRoundedRectangle((screenW/2) - 200, (screenH/2) + 160, 150, 60, 15, tocolor(82, 82, 82, 224), true)
    dxDrawRoundedRectangle((screenW/2) + 50, (screenH/2) + 160, 150, 60, 15, tocolor(82, 82, 82, 224), true)
    dxDrawText("SIM", (screenW/2) - 200, (screenH/2) + 160, (screenW/2) - 50, (screenH/2) + 220, tocolor(25, 232, 4, 255), 3, "default-bold", "center", "center", true, true, true)
    dxDrawText("NÃO", (screenW/2) + 50, (screenH/2) + 160, (screenW/2) + 200, (screenH/2) + 220, tocolor(237, 0, 0, 255), 3, "default-bold", "center", "center", true, true, true)
    dxDrawText("Você quer trabalhar entregando drogas?", (screenW/2) - 200, (screenH/2) - 240, (screenW/2) + 200, (screenH/2) - 220, tocolor(255, 255, 255, 255), 1, "default-bold", "center", "center", true, true, true)
    dxDrawText("-- Receber uma van no local ao lado\n\n-- Entregar a carga em um local secreto\n\n-- Receber de 10000 a 13000 de Dinheiro Sujo", (screenW/2) - 190, (screenH/2) - 210, (screenW/2) + 190, (screenH/2) + 130, tocolor(255, 255, 255, 255), 1, "default-bold", "left", "top", true, true, true)
end

addEvent("Open:Ilegal", true)
addEventHandler("Open:Ilegal", root, function()
    if states then
        removeEventHandler("onClientRender", root, DX_Entregas)
    else
        addEventHandler("onClientRender", root, DX_Entregas)
    end
    states = not states
    showCursor(states)
end)

bindKey("backspace", "down", function(key, keyState)
    if states and isCursorShowing() then
        removeEventHandler("onClientRender", root, DX_Entregas)
        showCursor(false)
        states = not states
    end
end)

addEventHandler("onClientClick", root, function(button, state)
    if states then
        if (button == "left" and state == "down") then
            if isMouseInPosition((screenW/2) - 200, (screenH/2) + 160, 150, 60) then -- SIM
                if not getElementData(localPlayer, "EntregadorD") then
                    setElementData(localPlayer, "EntregadorD", true)
                    -- exports._infobox:addNotification("Você Agora Trabalha na Entrega Ilegal!", "info")
                    print("Você Agora Trabalha na Entrega Ilegal!")
                    removeEventHandler("onClientRender", root, DX_Entregas)
                    showCursor(false)
                    states = false
                end
            elseif isMouseInPosition((screenW/2) + 50, (screenH/2) + 160, 150, 60) then -- NÃO
                if getElementData(localPlayer, "EntregadorD") then
                    -- exports._infobox:addNotification("Você Saiu do Emprego de Entregas Ilegais!", "info")
                    print("Você Saiu do Emprego de Entregas Ilegais!")
                    setElementData(localPlayer, "EntregadorD", false)
                end
                removeEventHandler("onClientRender", root, DX_Entregas)
                showCursor(false)
                states = false
            end
        end
    end
end)

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)
	
	return ((cx >= x and cx <= x + width) and (cy >= y and cy <= y + height))
end

function dxDrawRoundedRectangle(x, y, rx, ry, radius, color, postGUI)
    rx = rx - radius * 2
    ry = ry - radius * 2
    x = x + radius
    y = y + radius
    
    if (rx >= 0) and (ry >= 0) then
        dxDrawRectangle(x, y, rx, ry, color, postGUI)
        dxDrawRectangle(x, y - radius, rx, radius, color, postGUI)
        dxDrawRectangle(x, y + ry, rx, radius, color, postGUI)
        dxDrawRectangle(x - radius, y, radius, ry, color, postGUI)
        dxDrawRectangle(x + rx, y, radius, ry, color, postGUI)
        
        dxDrawCircle(x, y, radius, 180, 270, color, color, 7, 1, postGUI)
        dxDrawCircle(x + rx, y, radius, 270, 360, color, color, 7, 1, postGUI)
        dxDrawCircle(x + rx, y + ry, radius, 0, 90, color, color, 7, 1, postGUI)
        dxDrawCircle(x, y + ry, radius, 90, 180, color, color, 7, 1, postGUI)
    end
end

 

Fiz um painel fixo para você. Vai funcionar em todas as resoluções sem distorcer. A posição dele é responsiva no centro da tela, mas o tamanho é fixo.

640x480

Spoiler

image.png.47de5efa438e50a10cf13287a6092d82.png

1920x1080

Spoiler

image.thumb.png.3fe5c2fcdbe5430edcc95d39ec8d93d4.png

 

Posted

uma pergunta off topic aqui perdão se for incomodo, mas esse modo development e permissão de desenvolvedor
é alguma função que ajuda em modificar os mods ou é so pq você é moderador oficial mesm

  • Other Languages Moderators
Posted

É uma função que ajuda no desenvolvimento, faz com que você habilite o modo desenvolvedor.

Você consegue ativá-la usando setDevelopmentMode (true) só funciona client-side. Também dá pra você ativá-la no painel Admin, na aba Resources. Digite ali no campo de comando e clique em Client.

Eu fiz meu painel de login ativar essa função automaticamente quando eu faço login. Para evitar o empenho de ir ali no painel Admin ativar o modo desenvolvedor toda vez q preciso dos comandos especiais.

Depois que ela está ativada, você passa a ter acesso a esses 2 comandos especiais.

  • /showcol - Mostra/oculta os colshapes só para você. (aqueles criados com createColCuboid, createColSphere, etc)
  • /showsound - Mostra/para de mostrar os IDs dos sons do cenário no seu Debug Console. Precisa estar com /debugscript ativo para ver o Debug Console.
Spoiler

Showcol ativado.

mta-screen_2023-03-02_17-45-17.thumb.png.59676bf05db272127a33d0af5e7b361c.png

Showsound ativado.

mta-screen_2023-03-02_17-56-08.png.a29af2d831ff284f58f35dcfbe1e134e.png

 

  • Like 1
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...