Nakka Lindo Posted February 28 Share Posted February 28 (edited) Panel = {} local screenWidth, screenHeight local renderTarget local headerColor = tocolor(0, 0, 0, 227) local headerColor2 = tocolor(0, 0, 0, 240) local itemColor = tocolor(42, 40, 41) local highlightedColor = tocolor(255, 255, 255) colorButtonsList = { { name = "purple" }, { name = "blue" }, { name = "red" }, { name = "orange" }, { name = "green" }, { name = "black" }, { name = "pink" }, { name = "blue2"}, { name = "grey"}, { name = "yellow"}, } local panelWidth = 797 local panelHeight local headerHeight = 60 local itemHeight = 25 local itemsCount = 8 local headerFont local itemFont local columns = { { name = "Matou:", size = 0.1, data = "kills"}, { name = "Morreu:", size = 0.1, data = "deaths"}, { name = "Desativado:", size = 0.1, data = " "}, { name = "Nick:", size = 0.4, data = "name"}, { name = "Equipe:", size = 0.1, data = "team"}, { name = "Fps:", size = 0.1, data = "FPS"}, { name = "Ping:", size = 0.1, data = "ping"}, } setTimer( function() if getPlayerTeam(localPlayer) then setElementData(localPlayer, "team", getTeamName(getPlayerTeam(localPlayer))) end end, 1000, 0) local playersList = {} local playersOnlineCount = 0 local playersOnlineString = "Jogadores online" local scrollOffset = 0 function dxDrawRoundedRectangle(x, y, rx, ry, cor, raio) rx = rx - raio * 2 ry = ry - raio * 2 x = x + raio y = y + raio if (rx >= 0) e (ry >= 0) then dxDrawRectangle(x, y, rx, ry, cor) dxDrawRectangle(x, y - raio, rx, raio, cor) dxDrawRectangle(x, y + ry, rx, raio, cor) dxDrawRectangle(x - raio, y, raio, ry, cor) dxDrawRectangle(x + rx, y, raio, ry, cor) terminar fim local function draw() if renderTarget then dxSetRenderTarget(renderTarget) end local w, h = 500, 50 local y = screenHeight / 2 - panelHeight / 2 local panelX = screenWidth / 2 - panelWidth / 2 dxDrawRoundedRectangle(panelX, y, panelWidth, headerHeight * 2 + itemsCount * itemHeight, headerColor,1) dxDrawRoundedRectangle(panelX, y, panelWidth, headerHeight * 4.07 - itemsCount * itemHeight, headerColor2,1) local x = panelX para i, coluna em ipairs(colunas) do local width = panelWidth * column.size dxDrawText(exports.dpLang:getString(column.name), x, y, x + width, y + headerHeight, tocolor(255, 255, 255), 1, headerFont, "center", "center") x = x + width end y = y + headerHeight local itemY = y for i = scrollOffset + 1, math.min(itemsCount + scrollOffset, #playersList) do local item = playersList local color = itemColor if item.isGroup then color = item.color end if item.isLocalPlayer then color = highlightedColor end x = panelX if item.isGroup then dxDrawText(item.text, x, y, x + panelWidth, y + headerHeight * 0.8, tocolor(255, 255, 255), 1, itemFont, "center", "center", true) else for j, column in ipairs(columns) do local text = item[column.data] local width = panelWidth * column.size dxDrawText(tostring(text), x, y, x + width, y + headerHeight * 0.8, tocolor(255, 255, 255), 1, itemFont, "center", "center", true) x = x + width end end y = y + itemHeight end x = panelX y = itemY + itemsCount * itemHeight dxDrawText(playersOnlineString .. ": " .. tostring(playersOnlineCount), x, y, x + panelWidth, y + headerHeight, tocolor(255, 255, 255), 1, headerFont, "center", "center") if renderTarget then dxSetRenderTarget() end end local function mouseDown() if #playersList <= itemsCount then return end scrollOffset = scrollOffset + 1 if scrollOffset > #playersList - itemsCount then scrollOffset = #playersList - itemsCount + 1 end end local function mouseUp() if #playersList <= itemsCount then return end scrollOffset = scrollOffset - 1 if scrollOffset < 0 then scrollOffset = 0 end end function Panel.start() renderTarget = exports.dpUI:getRenderTarget() screenWidth, screenHeight = exports.dpUI:getScreenSize() addEventHandler("onClientRender", root, draw) headerFont = exports.dpAssets:createFont("Roboto-Regular.ttf", 12) itemFont = exports.dpAssets:createFont("Roboto-Regular.ttf", 12) for i, colorButton in ipairs(colorButtonsList) do local lol = exports.dpUI:getThemeName( colorButton.name) if tostring(colorButtonsList.name) == tostring(lol) then logoNumber = i end end panelHeight = 10 + headerHeight * 2 + itemsCount * itemHeight highlightedColor = tocolor(exports.dpUI:getThemeColor()) lista de jogadores = {} local function addPlayerToList(player, isLocalPlayer) if type(player) == "table" then table.insert(playersList, player) return end local nameString if player:getData("nome de usuário") then nameString = exports.dpUtils:removeHexFromString(player:getData("nome de usuário")) else nameString = getPlayerName(player).." (carregando...)" end table.insert(playersList, { isLocalPlayer = isLocalPlayer, id = player:getData("serverId") or 0, name = player.name:gsub("#%x%x%x%x%x%x%x",""), ping = tostring(player:getPing() or '?'), FPS = player:getData('FPS') or '-', team = tostring(player:getData("team") or "Player"), kills = tostring(player:getData("kills") or 0), mortes = tostring(player:getData("mortes") ou 0), }) end local players = getElementsByType("player") table.sort(players, function (player1, player2) local id1 = player1:getData("serverId") ou 999 local id2 = player2:getData("serverId") ou 999 return id1 < id2 end) playersOnlineCount = #players local function getPlayersWithData(dataName) local t = {} for i = #players, 1, -1 do if players:getData(dataName) then table.insert(t, table.remove(players, i)) end end return t end addPlayerToList(localPlayer, true) if #players > 0 then addPlayerToList({ text = exports.dpLang:getString("tab_panel_group_players"), color = headerColor, isGroup = true} ) for i, player in ipairs(players) do if player ~= localPlayer then addPlayerToList(player) end end end bindKey("mouse_wheel_up", "para baixo", mouseUp) bindKey("mouse_wheel_down", "para baixo", mouseDown) localPlayer:setData("activeUI", "tabPanel") playersOnlineString = exports.dpLang:getString("tab_panel_players_online") se não playersOnlineString então playersOnlineString = "Jogadores online" end end function Panel.stop() removeEventHandler("onClientRender", root, draw) destroyElement(headerFont) destroyElement(itemFont) unbindKey("mouse_wheel_up", "para baixo", mouseUp) unbindKey("mouse_wheel_down", "para baixo", mouseDown) localPlayer:setData("activeUI", false) end local iFPS = 0 local FPS = 0 setTimer(function() localPlayer:setData('FPS', FPS, true) end,5000,0) addEventHandler('onClientRender',root,function() iFPS = iFPS+1 fim) setTimer(function() FPS = iFPS iFPS = 0 final,1000,0) Edited February 28 by Lord Henry Código convertido de texto para Lua. Link to comment
Blaack Posted March 2 Share Posted March 2 On 28/02/2025 at 16:25, Nakka Lindo said: Panel = {} local screenWidth, screenHeight local renderTarget local headerColor = tocolor(0, 0, 0, 227) local headerColor2 = tocolor(0, 0, 0, 240) local itemColor = tocolor(42, 40, 41) local highlightedColor = tocolor(255, 255, 255) colorButtonsList = { { name = "purple" }, { name = "blue" }, { name = "red" }, { name = "orange" }, { name = "green" }, { name = "black" }, { name = "pink" }, { name = "blue2"}, { name = "grey"}, { name = "yellow"}, } local panelWidth = 797 local panelHeight local headerHeight = 60 local itemHeight = 25 local itemsCount = 8 local headerFont local itemFont local columns = { { name = "Matou:", size = 0.1, data = "kills"}, { name = "Morreu:", size = 0.1, data = "deaths"}, { name = "Desativado:", size = 0.1, data = " "}, { name = "Nick:", size = 0.4, data = "name"}, { name = "Equipe:", size = 0.1, data = "team"}, { name = "Fps:", size = 0.1, data = "FPS"}, { name = "Ping:", size = 0.1, data = "ping"}, } setTimer( function() if getPlayerTeam(localPlayer) then setElementData(localPlayer, "team", getTeamName(getPlayerTeam(localPlayer))) end end, 1000, 0) local playersList = {} local playersOnlineCount = 0 local playersOnlineString = "Jogadores online" local scrollOffset = 0 function dxDrawRoundedRectangle(x, y, rx, ry, cor, raio) rx = rx - raio * 2 ry = ry - raio * 2 x = x + raio y = y + raio if (rx >= 0) e (ry >= 0) then dxDrawRectangle(x, y, rx, ry, cor) dxDrawRectangle(x, y - raio, rx, raio, cor) dxDrawRectangle(x, y + ry, rx, raio, cor) dxDrawRectangle(x - raio, y, raio, ry, cor) dxDrawRectangle(x + rx, y, raio, ry, cor) terminar fim local function draw() if renderTarget then dxSetRenderTarget(renderTarget) end local w, h = 500, 50 local y = screenHeight / 2 - panelHeight / 2 local panelX = screenWidth / 2 - panelWidth / 2 dxDrawRoundedRectangle(panelX, y, panelWidth, headerHeight * 2 + itemsCount * itemHeight, headerColor,1) dxDrawRoundedRectangle(panelX, y, panelWidth, headerHeight * 4.07 - itemsCount * itemHeight, headerColor2,1) local x = panelX para i, coluna em ipairs(colunas) do local width = panelWidth * column.size dxDrawText(exports.dpLang:getString(column.name), x, y, x + width, y + headerHeight, tocolor(255, 255, 255), 1, headerFont, "center", "center") x = x + width end y = y + headerHeight local itemY = y for i = scrollOffset + 1, math.min(itemsCount + scrollOffset, #playersList) do local item = playersList local color = itemColor if item.isGroup then color = item.color end if item.isLocalPlayer then color = highlightedColor end x = panelX if item.isGroup then dxDrawText(item.text, x, y, x + panelWidth, y + headerHeight * 0.8, tocolor(255, 255, 255), 1, itemFont, "center", "center", true) else for j, column in ipairs(columns) do local text = item[column.data] local width = panelWidth * column.size dxDrawText(tostring(text), x, y, x + width, y + headerHeight * 0.8, tocolor(255, 255, 255), 1, itemFont, "center", "center", true) x = x + width end end y = y + itemHeight end x = panelX y = itemY + itemsCount * itemHeight dxDrawText(playersOnlineString .. ": " .. tostring(playersOnlineCount), x, y, x + panelWidth, y + headerHeight, tocolor(255, 255, 255), 1, headerFont, "center", "center") if renderTarget then dxSetRenderTarget() end end local function mouseDown() if #playersList <= itemsCount then return end scrollOffset = scrollOffset + 1 if scrollOffset > #playersList - itemsCount then scrollOffset = #playersList - itemsCount + 1 end end local function mouseUp() if #playersList <= itemsCount then return end scrollOffset = scrollOffset - 1 if scrollOffset < 0 then scrollOffset = 0 end end function Panel.start() renderTarget = exports.dpUI:getRenderTarget() screenWidth, screenHeight = exports.dpUI:getScreenSize() addEventHandler("onClientRender", root, draw) headerFont = exports.dpAssets:createFont("Roboto-Regular.ttf", 12) itemFont = exports.dpAssets:createFont("Roboto-Regular.ttf", 12) for i, colorButton in ipairs(colorButtonsList) do local lol = exports.dpUI:getThemeName( colorButton.name) if tostring(colorButtonsList.name) == tostring(lol) then logoNumber = i end end panelHeight = 10 + headerHeight * 2 + itemsCount * itemHeight highlightedColor = tocolor(exports.dpUI:getThemeColor()) lista de jogadores = {} local function addPlayerToList(player, isLocalPlayer) if type(player) == "table" then table.insert(playersList, player) return end local nameString if player:getData("nome de usuário") then nameString = exports.dpUtils:removeHexFromString(player:getData("nome de usuário")) else nameString = getPlayerName(player).." (carregando...)" end table.insert(playersList, { isLocalPlayer = isLocalPlayer, id = player:getData("serverId") or 0, name = player.name:gsub("#%x%x%x%x%x%x%x",""), ping = tostring(player:getPing() or '?'), FPS = player:getData('FPS') or '-', team = tostring(player:getData("team") or "Player"), kills = tostring(player:getData("kills") or 0), mortes = tostring(player:getData("mortes") ou 0), }) end local players = getElementsByType("player") table.sort(players, function (player1, player2) local id1 = player1:getData("serverId") ou 999 local id2 = player2:getData("serverId") ou 999 return id1 < id2 end) playersOnlineCount = #players local function getPlayersWithData(dataName) local t = {} for i = #players, 1, -1 do if players:getData(dataName) then table.insert(t, table.remove(players, i)) end end return t end addPlayerToList(localPlayer, true) if #players > 0 then addPlayerToList({ text = exports.dpLang:getString("tab_panel_group_players"), color = headerColor, isGroup = true} ) for i, player in ipairs(players) do if player ~= localPlayer then addPlayerToList(player) end end end bindKey("mouse_wheel_up", "para baixo", mouseUp) bindKey("mouse_wheel_down", "para baixo", mouseDown) localPlayer:setData("activeUI", "tabPanel") playersOnlineString = exports.dpLang:getString("tab_panel_players_online") se não playersOnlineString então playersOnlineString = "Jogadores online" end end function Panel.stop() removeEventHandler("onClientRender", root, draw) destroyElement(headerFont) destroyElement(itemFont) unbindKey("mouse_wheel_up", "para baixo", mouseUp) unbindKey("mouse_wheel_down", "para baixo", mouseDown) localPlayer:setData("activeUI", false) end local iFPS = 0 local FPS = 0 setTimer(function() localPlayer:setData('FPS', FPS, true) end,5000,0) addEventHandler('onClientRender',root,function() iFPS = iFPS+1 fim) setTimer(function() FPS = iFPS iFPS = 0 final,1000,0) Não entendi, onde quer deixar colorido? porque você ta misturando oop com o codigo no oop? Link to comment
Nakka Lindo Posted March 3 Author Share Posted March 3 17 horas atrás, Blaack disse: Não entendi, onde quer deixar colorido? porque você está misturando oop com o código no oop? Quero que pegue só a cor que o player está usando Link to comment
Blaack Posted Thursday at 23:41 Share Posted Thursday at 23:41 On 02/03/2025 at 22:24, Nakka Lindo said: Quero que pegue só a cor que o player está usando Mas em que parte do codigo ali? também preciso entender esse oop e pra que usa... o codigo é realmente seu? 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