Jump to content

Lista sem ser GridList


Recommended Posts

local infinity = {
state = false,
Fonte01 = dxCreateFont("fonts/fonte.ttf", y*16),
selected = nil,   
}

if Edit["Artigos"][1] then
        if infinity.selected == 1 then
            dxDrawRoundedRectangle(x*595, y*360, x*230, y*20, tocolor(64, 105, 225, 255), 2) --- Fundo Artigos
        end
        dxDrawText(Edit["Artigos"][1][1], x*655, y*362, x*16, y*16, tocolor(255, 255, 255, 255), 0.50, infinity.Fonte01, "left", "top", false, false, false, false, false) --- Artigo
    end

    if Edit["Artigos"][2] then
        if infinity.selected == 2 then
            dxDrawRoundedRectangle(x*595, y*380, x*230, y*20, tocolor(64, 105, 225, 255), 2) --- Fundo Artigos
        end
        dxDrawText(Edit["Artigos"][2][1], x*665, y*382, x*16, y*16, tocolor(255, 255, 255, 255), 0.50, infinity.Fonte01, "left", "top", false, false, false, false, false) --- Artigo
    end

function Amostra (_,state)
    if infinity.state == true then
        if state == "down" then
            if cursorPosition(x*595, y*360, x*230, y*20) then
                if Edit["Artigos"][1] then
                    infinity.selected = 1
                end
            elseif cursorPosition(x*595, y*380, x*230, y*20) then
                if Edit["Artigos"][2] then
                    infinity.selected = 2
                end
            elseif isCursorOnElement(x*600, y*343, x*60, y*8) then
                if infinity.selected >= 1 and infinity.selected <= 2 then
                    triggerServerEvent("AddOrRemove", localPlayer, localPlayer, {"Adicionar", infinity.selected})
                end
            elseif isCursorOnElement(x*780, y*343, x*60, y*8) then
                if infinity.selected >= 1 and infinity.selected <= 2 then
                    triggerServerEvent("AddOrRemove", localPlayer, localPlayer, {"Remove", infinity.selected})
                end
            end
        end
    end
end
addEventHandler("onClientClick", root, Amostra)

Olá estou fazendo esse sistema de Prisão, e estou fazendo essa lista de artigos pois não sei mecher com GridList, e todos os artigos não iram caber aqui então irei ter que fazer um sistema de scroll, e eu não sei fazer isso e nem como começar, e queria pedir a ajuda de vocês para como começar e  retirar minhas duvidas, irei mandar a print da metade do painel (https://prnt.sc/10ynu7a)

Link to comment
  • Other Languages Moderators

Olá.

Dessa forma que você está fazendo, não seria possível fazer um scroll. Primeiramente, você deve colocar todos os "artigos" em uma tabela. Uma vez com a tabela criada e populada com eles, dentro de um renderTarget você iria fazer um laço de repetição, pegando todos os artigos e colocando-os um abaixo do outro, calculando o eixo y. Também é necessário uma variável para identificar o valor do scroll, que iria junto ao cálculo do eixo y.

Um exemplo:

Spoiler

local scroll = 0
local articles = {
    "a", "b", "c",
    "d", "e", "f"
}

local renderTarget = dxCreateRenderTarget(200, 350, true) -- Cria um espaço no seu painel, onde seria a lista

dxSetRenderTarget(renderTarget, true)
    for k, v in pairs(articles) do -- Pega todos os artigos da tabela
        local y = ((k - 1) * 25) - scroll -- Calcula o eixo y, para ficando um abaixo do outro

        dxDrawRectangle(0, y, 200, 25, tocolor(0, 255, 50, 150), false)
    end
dxSetRenderTarget()

-- Para renderizar dentro do evento onClientRender
dxDrawImage(0, 0, 200, 350, renderTarget)

-- Scroll
addEventHandler("onClientKey", root, function(key)
    -- Alguma checagem aqui se o painel tá ou não aberto seria interessante

    if key == "mouse_wheel_down" then
        local maxScroll = #articles * 25 - 350 -- O 350 seria a altura da lista, o 25 seria o tamanho de cada linha da lista
        scroll = math.min(scroll + 15, maxScroll)
    elseif key == "mouse_wheel_up" then
        scroll = math.max(scroll - 15, 0)
    end
end)

 

Parece meio complicado, então saber como laços de repetição e renderTargets funcionam, é de suma importância.

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