Scoreboard

I’ve searched everywhere for couple of days, i would’t post if i didn’t look everywhere so here is my problem

I want to make the default scoreboard to show the character name instead of steam name . Any help will be apreaciated

local listOn = false

Citizen.CreateThread(function()
listOn = false
while true do
Wait(0)

if IsControlPressed(0, 27)--[[ INPUT_PHONE ]] then
if not listOn then
local players = {}
ptable = GetPlayers()
for _, i in ipairs(ptable) do
local wantedLevel = GetPlayerWantedLevel(i)
r, g, b = GetPlayerRgbColour(i)
table.insert(players, 
'<tr style=\"color: rgb(' .. r .. ', ' .. g .. ', ' .. b .. ')\"><td>' .. GetPlayerServerId(i) .. '</td><td>' .. firstname .. ' ' .. lastname .. '</td><td>' .. (wantedLevel and wantedLevel or tostring(0)) .. '</td></tr>'
)
end

SendNUIMessage({ text = table.concat(players) })

listOn = true
while listOn do
Wait(0)
if(IsControlPressed(0, 27) == false) then
listOn = false
SendNUIMessage({
meta = 'close'
})
break
end
end
end
end
end
end)

function getIdentity(source)
local identifier = GetPlayerIdentifiers(source)[1]
local result = MySQL.Async.fetchAll("SELECT firstname, lastname FROM characters WHERE identifier = @identifier", {
['@identifier'] = identifier
})
if result[1] ~= nil then
local user = result[1]

return {
firstname = user['firstname'],
lastname = user['lastname']
}
else
return nil
end
end

function GetPlayers()
local players = {}

for i = 0, 31 do
if NetworkIsPlayerActive(i) then
table.insert(players, i)
end
end

return players
end