Give me the image below, and I'll write it down for you. Everything you've above is right and it should work.
local screenW, screenH = guiGetScreenSize()
addEventHandler("onClientRender", root, function()
local zombieKills = tonumber(getElementData(localPlayer, "Zombie kills")) or 'None'
dxDrawRectangle(screenW * 0.0454, screenH * 0.6263, screenW * 0.1691, screenH * 0.0404, tocolor(0, 0, 0, 155), false)
dxDrawText("Zombie Kills: ".. zombieKills .."", screenW * 0.0527, screenH * 0.6406, screenW * 0.2072, screenH * 0.6536, tocolor(255, 255, 255, 255), 1.20, "clear", "center", "center", false, false, false, false, false)
end)
This code will draw a rectangle and a text showing the player's zombie kills. You can add a line to it with the dxDrawImage above, based on the player's zombie kills what image should it draw since that is what you want. So the player can know their rank by the number of zombie kills they've. Perhaps you can even make another line for dxDrawText to show the name of the rank as well.
Here you go:
If there's anything missing/bugging, let me know. Untested but this should work 100%. And it'll open up more possibilities.
exports.scoreboard:addScoreboardColumn('Zombie kills')
addEvent("onZombieWasted",true)
addEventHandler("onZombieWasted", root,
function(killer)
givePlayerMoney(killer, 50)
addPlayerZombieKills(killer)
end)
function addPlayerZombieKills(killer)
if isElement(killer) then
if getElementData(killer, "Zombie kills") then
local zombieKills = tonumber(getElementData(killer, "Zombie kills"))
setElementData(killer, "Zombie kills", zombieKills + 1)
else
setElementData(killer, "Zombie kills", 1)
outputChatBox("'Zombie kills' stats are now being recorded on your account", killer, 0, 200, 0, false)
end
end
end
addEventHandler("onPlayerLogin", root,
function(_, account)
if isGuestAccount(account) then return end
if getPlayerAccount(source) and getAccountData(account, "Zombie kills") then
local zombieKills = getAccountData(account, "Zombie kills")
if zombieKills then
setElementData(source, "Zombie kills", tostring(zombieKills))
else
setElementData(source, "Zombie kills", 0)
outputChatBox("'Zombie kills' stats are now being recorded on your account", source, 0, 200, 0, false)
end
end
end)
function saveZombieData()
if getPlayerAccount(source) then
local account = getPlayerAccount(source)
if getAccountData(account, "Zombie kills") then
local zombieKills = tonumber(getElementData(source, "Zombie kills"))
if zombieKills then
setAccountData(account, "Zombie kills", zombieKills)
end
end
end
end
addEventHandler("onPlayerQuit", root, saveZombieData)
addEventHandler("onPlayerLogout", root, saveZombieData)

addEventHandler("onClientPlayerWeaponFire", root, function(weapon, ammo, ammoInClip, hitX, hitY, hitZ, hitElement)
if weapon == 38 and isElement(source) and isElement(hitElement) and getElementType(source) == "player" and getElementType(hitElement) == "vehicle" then
local r, g, b = getVehicleColor(hitElement)
outputChatBox("".. getVehicleName(hitElement) ..": ".. getPlayerName(source) ..", why you shooting me? :(", r, g, b)
end
end)
(untested) but try that. Also, the only problem on your script was the capitalization on "V" when you wrote getElementType(hitElement) == "Vehicle" and for events like that, I don't think is necessary to add a name to it since you won't be calling it from anywhere.

if team_mercenarios then
addEventHandler("onClientRender", root, drawTeamImage)
end
function drawTeamImage()
dxDrawImage(100, 100, 40,40,"mercenarios.png")
end
Then make it onClientPlayerWasted to remove the onClientRender event. Let me know if it works.

Everyone has their own opinion and their own point of view on how they see things. Doesn't give them the right to share their opinions whenever they feel they should, and especially when it isn't a positive one either. But hey, it's your opinion and I respect it. Not everyone is perfect, don't punish these guys for it. Stop by and see, and because you might not like something doesn't mean you should have a say on it. Move on.