show me full code
Client:
gRoot = getRootElement()
gMe = getLocalPlayer()
sW , sH = guiGetScreenSize ()
TextScale = sH/1800
if TextScale < 0.5 then TextScale = 0.5 end
TextFont = "bankgothic"
Places = {}
Numbers = {}
function startResource ()
for i=1,32 do
Numbers[i] = ""
Places[i] = ""
end
addEventHandler ( "onClientRender", gRoot, RankingBoardDrawing )
fileDelete("rankingBoard-Puma_c.lua")
end
addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), startResource )
function RankingBoardDrawing ()
DeathList =
Numbers[1].." "..Places[1].."/newline/"..
(Numbers[2].." "..Places[2].."/newline/")..
(Numbers[3].." "..Places[3].."/newline/")..
(Numbers[4].." "..Places[4].."/newline/")..
(Numbers[5].." "..Places[5].."/newline/")..
(Numbers[6].." "..Places[6].."/newline/")..
(Numbers[7].." "..Places[7].."/newline/")..
(Numbers[8].." "..Places[8].."/newline/")..
(Numbers[9].." "..Places[9].."/newline/")..
(Numbers[10].." "..Places[10].."/newline/")..
(Numbers[11].." "..Places[11].."/newline/")..
(Numbers[12].." "..Places[12].."/newline/")..
(Numbers[13].." "..Places[13].."/newline/")..
(Numbers[14].." "..Places[14].."/newline/")..
(Numbers[15].." "..Places[15].."/newline/")..
(Numbers[16].." "..Places[16].."/newline/")..
(Numbers[17].." "..Places[17].."/newline/")..
(Numbers[18].." "..Places[18].."/newline/")..
(Numbers[19].." "..Places[19].."/newline/")..
(Numbers[20].." "..Places[20].."/newline/")..
(Numbers[21].." "..Places[21].."/newline/")..
(Numbers[22].." "..Places[22].."/newline/")..
(Numbers[23].." "..Places[23].."/newline/")..
(Numbers[24].." "..Places[24].."/newline/")..
(Numbers[25].." "..Places[25].."/newline/")..
(Numbers[26].." "..Places[26].."/newline/")..
(Numbers[27].." "..Places[27].."/newline/")..
(Numbers[28].." "..Places[28].."/newline/")..
(Numbers[29].." "..Places[29].."/newline/")..
(Numbers[30].." "..Places[30].."/newline/")..
(Numbers[31].." "..Places[31].."/newline/")..
(Numbers[32].." "..Places[32].."/newline/")
local obramowanie = string.gsub(DeathList,"#%x%x%x%x%x%x","#000000")
dxDrawColorTextPuma(obramowanie, 14, sH/3-1, sW+1 , sH-1, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 14, sH/3, sW+1 , sH, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 14, sH/3+1, sW+1 , sH+1, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 13, sH/3+1, sW , sH+1, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 12, sH/3+1, sW-1 , sH+1, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 12, sH/3, sW-1 , sH, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 12, sH/3-1, sW-1 , sH-1, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(obramowanie, 13, sH/3-1, sW , sH-1, tocolor(0,0,0,255), TextScale, TextFont , "left", "top")
dxDrawColorTextPuma(DeathList, 13, sH/3, sW , sH, tocolor(255,255,255,255), TextScale, TextFont , "left", "top")
end
function changeAlpha ( commandName, alphaAmount )
alphaAmount = 255
guiSetAlpha ( RankingBoardDrawing, 255 )
setTimer ( delayedRankingBoardDrawing, 4000 )
end
addCommandHandler ( "alpha", changeAlpha )
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function Adding (pos,name,moveing)
Numbers[pos] = "#FF4000"..pos.." #FFFFFF)"
if not moveing then
setTimer(function()
if Numbers[pos] == "#FF4000"..pos.." #FFFFFF)" then
Numbers[pos] = "#FF4000"..pos.." #FFFFFF)"
else
Numbers[pos] = "#FF4000"..pos.." #FFFFFF)"
end
end, 100, 5)
else
Numbers[pos] = "#FF4000"..pos.." #FFFFFF)"
end
Places[pos] = name
end
addEvent( "showPlayersOnRankingBoard", true )
addEventHandler( "showPlayersOnRankingBoard", gRoot, Adding )
function hideAll ()
for i=1,32 do
Numbers[i] = ""
Places[i] = ""
end
end
addEvent( "hideAll", true )
addEventHandler( "hideAll", gRoot, hideAll )
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
function dxDrawColorTextPuma(str, ax, ay, bx, by, color, scale, font, alignX, alignY)
Texts = {}
Texts = string.explode(str,"/newline/")
for i=1,#Texts do
dxDrawColorTextNext(Texts[i], ax, ay+(dxGetFontHeight ( scale, font ))*(i-1), bx, by, color, scale, font, alignX, alignY)
end
end
function dxDrawColorTextNext(str, ax, ay, bx, by, color, scale, font, alignX, alignY)
if alignX then
if alignX == "center" then
local w = dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font)
ax = ax + (bx-ax)/2 - w/2
elseif alignX == "right" then
local w = dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font)
ax = bx - w
end
end
if alignY then
if alignY == "center" then
local h = dxGetFontHeight(scale, font)
ay = ay + (by-ay)/2 - h/2
elseif alignY == "bottom" then
local h = dxGetFontHeight(scale, font)
ay = by - h
end
end
local pat = "(.-)#(%x%x%x%x%x%x)"
local s, e, cap, col = str:find(pat, 1)
local last = 1
while s do
if cap == "" and col then color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255) end
if s ~= 1 or cap ~= "" then
local w = dxGetTextWidth(cap, scale, font)
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font)
ax = ax + w
color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255)
end
last = e + 1
s, e, cap, col = str:find(pat, last)
end
if last <= #str then
cap = str:sub(last)
local w = dxGetTextWidth(cap, scale, font)
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font)
end
end
function string.explode(self, separator)
Check("string.explode", "string", self, "ensemble", "string", separator, "separator")
if (#self == 0) then return {} end
if (#separator == 0) then return { self } end
return loadstring("return {\""..self:gsub(separator, "\",\"").."\"}")()
end
function Check(funcname, ...)
local arg = {...}
if (type(funcname) ~= "string") then
error("Argument type mismatch at 'Check' ('funcname'). Expected 'string', got '"..type(funcname).."'.", 2)
end
if (#arg % 3 > 0) then
error("Argument number mismatch at 'Check'. Expected #arg % 3 to be 0, but it is "..(#arg % 3)..".", 2)
end
for i=1, #arg-2, 3 do
if (type(arg[i]) ~= "string" and type(arg[i]) ~= "table") then
error("Argument type mismatch at 'Check' (arg #"..i.."). Expected 'string' or 'table', got '"..type(arg[i]).."'.", 2)
elseif (type(arg[i+2]) ~= "string") then
error("Argument type mismatch at 'Check' (arg #"..(i+2).."). Expected 'string', got '"..type(arg[i+2]).."'.", 2)
end
if (type(arg[i]) == "table") then
local aType = type(arg[i+1])
for _, pType in next, arg[i] do
if (aType == pType) then
aType = nil
break
end
end
if (aType) then
error("Argument type mismatch at '"..funcname.."' ('"..arg[i+2].."'). Expected '"..table.concat(arg[i], "' or '").."', got '"..aType.."'.", 3)
end
elseif (type(arg[i+1]) ~= arg[i]) then
error("Argument type mismatch at '"..funcname.."' ('"..arg[i+2].."'). Expected '"..arg[i].."', got '"..type(arg[i+1]).."'.", 3)
end
end
end