Jaga Posted March 29, 2021 Share Posted March 29, 2021 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 androksi Posted March 29, 2021 Other Languages Moderators Share Posted March 29, 2021 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
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