Jump to content

Organizar Scoreboard Por Acl's


Recommended Posts

então minha scoreboar é a base de banners, então aparece quem é fundador, staff, vip ou cidadão la
eu queria que ficassem os fundadores em cima depois staff's, depois vip's, e depois os cidadãos
como eu poderia fazer isso:
 

function scoreBoardDX()
  exports[""..config.Blur]:dxDrawBluredRectangle(x*0, y*0, screenW, screenH, tocolor(255, 255, 255, 255), false)
    local Jogador = getPlayerName(localPlayer)
    local ID = getElementData(localPlayer, "ID") or "0"
    local Emprego = getElementData(localPlayer, "Emprego") or "Desempregado"
    local Element_X = 0
    local Element_Y = 0
    local ava_l = getElementData( localPlayer, "conta:avatar" ) or 0
    players = getElementsByType( "player" )
    dxDrawRoundedRectangle(x*510, y*132, x*346, y*503, tocolor(28, 28, 28, 243), 10)
    dxDrawRoundedRectangle(x*510, y*132, x*345, y*36, tocolor(41, 41, 41, 255), 10)
    dxDrawRectangle(x*754, y*139, x*96, y*24, tocolor(28, 28, 28, 231), false)
    dxDrawText(#players..'/'..config.Slot, x*754, y*140, x*850, y*163, tocolor(255, 255, 255, 255), 1.00, "default-bold", "center", "center", false, false, false, false, false)
    dxDrawRectangle(x*754, y*139, x*96*#players/100, y*24, tocolor(config.R, config.G, config.B, 255), false)
    dxDrawRectangle(x*520, y*261, x*326, y*4, tocolor(41, 41, 41, 255), false)
    dxDrawText("Jogadores | FPS:"..GetFPS(), x*536, y*134, x*723, y*170, tocolor(255, 255, 255, 255), 1.00, "default-bold", "center", "center", false, false, false, false, false)
    dxDrawImage(x*828, y*238, x*18, y*17, "images/settings.png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
    dxDrawImage(x*521, y*178, x*75, y*75, "avatars/"..ava_l..".png", 0, 0, 0, tocolor(255, 255, 255, 255), false)
    local level = getElementData( localPlayer, ""..config.Level.."" ) or 0
			local name = getElementData( localPlayer, "conta:nome" ) or 'Desconhecido'
			local id = getElementData( localPlayer, ""..config.ID.."" ) or 'N/A'
			local din = getPlayerMoney(localPlayer)
			local DinheiroB = getElementData( localPlayer, ""..config.Banco.."" ) or 'N/A'
			local emrepgo = getElementData( localPlayer, "Emprego" ) or 'Desempregado'
			dxDrawText(""..getPlayerName(localPlayer).." | "..id.."", x*602, y*165, x*765, y*217, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "center", false, false, false, false, false)
			dxDrawText("Dinheiro:"..din.." Banco:"..DinheiroB, x*602, y*197, x*765, y*217, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "center", false, false, false, false, false)
			dxDrawText(emrepgo, x*602, y*209, x*765, y*238, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "center", false, false, false, false, false)
			dxDrawText("Level : "..level, x*603, y*233, x*699, y*251, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "center", false, false, true, false, false)
    for k, player in ipairs(getElementsByType("player")) do
    local Ping = getPlayerPing(player)
    local name = getPlayerName(player)
    if (k > PageInventory and Element_X < MaxInventory) and name ~= ""  then
    dxDrawRoundedRectangle(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, tocolor(41, 41, 41, 255), 4) -- Borda de trás Player
    local avatar = getElementData( player, "conta:avatar" ) or 0
    if getElementData(player, "Cargo") == "Fundador" then
    dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/fundador.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    dxDrawImage( 650*sx + Element_X * (sx*150), 383*sy + Element_Y * (sy*55), 40*sx, 40*sy, "avatars/"..avatar..".png", 0, 0, 0, tocolor( 255, 255, 255, 255 ), true )
    if getElementData(player, "Cargo") == "Patrocinador" then
      dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/6.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "Booster" then
      dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/7.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "Youtuber" then
      dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/3.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "Admin" then
    dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/2.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "VIP" then
        dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/5.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "Membro" then
    dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/4.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "Policial" then
      dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/8.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    if getElementData(player, "Cargo") == "GANG" then
      dxDrawImage(643*sx + Element_X * (sx*150), 375*sy + Element_Y * (sy*55), 400*sx, 51*sy, "banners/9.png", 0, 0, 0, tocolor(255, 255, 255, 255))
    end
    dxDrawText(name, 700*sx + Element_X * (sx*150), 387*sy + Element_Y * (sy*55), 797*sx, 373*sy, tocolor(255, 255, 255, 255), 1.50*sy, FontN, "left", "top", false, false, true, true, false)
    dxDrawText(Ping, 985*sx + Element_X * (sx*150), 390*sy + Element_Y * (sy*55), 1010*sx, 364*sy, tocolor(255, 255, 255, 255), 1.00, "default", "left", "top", false, false, true, true, false) -- Ping

    Element_X = Element_X + 1
     if Element_X == 1 then
          Element_Y = Element_Y + 1
          Element_X = 0
    end
    if Element_Y == 9 then
         Element_Y = 1000
        end
    end

    players = getElementsByType("player")
    local progress = #players
    if progress == 500 then
    progress = progress-138
    end
    if progress == 400 then
    progress = progress-140
    end
    if progress == 300 then
    progress = progress-140
    end
    if progress == 200 then
    progress = progress-140
    end
    if progress == 100 then
    progress = progress-60
    end
    local cX, cY = interpolateBetween(0, 0, 0, progress, 0, 0, progress, "Linear") 
    players = getElementsByType( "player" )
end

perdão o codigo grande, não sei oque é importante, fiquei perdido nesse codigo

Edited by Lord Henry
Link to comment
  • Other Languages Moderators

Primeiro você pega todos os jogadores.

Depois você pega o nome e cargo de cada um deles.

Com o nome e cargo, você coloca um número antes do nome de acordo com o cargo.

Ex: "JoaoGaymer" tem o cargo de Fundador, então o nome dele vai ficar " 00JoaoGaymer". (sim, com espaço na frente)
"PedroBilau" tem o cargo de VIP, então o nome dele vai ficar " 03PedroBilau".

E assim por diante.

Depois de colocar os números antes do nome dos jogadores (você não vai renomear os jogadores, apenas mexer na variável que tem os nomes deles no script), você então pode reordenar a tabela de nomes dos jogadores. Os que começam com " 00" vão aparecer antes dos que começam com " 01", depois os que começam com " 02" e assim por diante.

Só depois de ordenada a tabela, você passa um loop por ela removendo os números e o espaço de cada nome.

Vou inventar de cabeça aqui um exemplo.

local nomes = {} -- Tabela vazia onde vão ficar os nomes de todos os jogadores conectados no server.
local cargos = { -- Aqui você coloca todos os Cargos em ordem. Nesse caso irei indexar como string pois o 0 é obrigatório até o 9.
    [" 01"] = "Fundador",
    [" 02"] = "Patrocinador",
    [" 03"] = "Booster",
    [" 04"] = "Youtuber",
    [" 05"] = "Admin",
    [" 06"] = "VIP",
    [" 07"] = "Membro",
    [" 08"] = "Policial",
    [" 09"] = "Gang",
    [" 10"] = "", -- O último cargo da tabela precisa ser vazia. Será onde os jogadores sem cargo ficarão classificados.
} -- O espaço antes do número serve para garantir que nenhum espertinho mude seu próprio nick pra ficar na frente. O MTA não permite espaço no nome.
-- Caso contrário, um jogador cujo nick começa com "#" ficaria na frente do Fundador.

for _,player in pairs (getElementsByType("player")) do -- Para cada jogador conectado no server, faça:
    local nome = getPlayerName (player)
    local cargo = getElementData(player, "Cargo") or "" -- Se o player não tiver essa elementData, será string vazia. Evita o erro de comparar string com boolean.
    for i,item in pairs (cargos) do -- Para cada cargo da tabela cargos, faça:
        if cargo == item then -- Se o jogador tem esse cargo, então:
            nome = i..nome -- Adiciona o número desse cargo na frente do nome do jogador. Se o jogador tem o cargo Admin, a variável nome passa a ser " 05NomeDoPlayer" por exemplo, inclusive com o espaço. Se o jogador não tiver cargo nenhum, ele ficará como " 10NomeDoPlayer"
            table.insert(nomes, nome) -- Adiciona o nome modificado deste jogador na tabela nomes.
            break -- Sai deste loop. Não precisa verificar os demais cargos, pois já encontrou o cargo correto.
        end
    end
end

table.sort(nomes) -- Ordena todos os nomes da tabela nomes.

for i,nome in ipairs (nomes) do -- Para cada nome da tabela nomes, faça:
    if string.find(nome, " ") then -- Se o nome tem espaço (foi alterado), então:
        nomes[i] = string.sub(nome, 4) -- Remove a alteração do nome, mas mantém na mesma posição ordenada.
    end
    print(nomes[i])
end
-- A tabela nomes agora tem todos os nomes originais em ordem.

 

Edited by Lord Henry
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...