Nelsonnn

client

Nov 4th, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.55 KB | None | 0 0
  1. local sw, sh = guiGetScreenSize()
  2.  
  3. scoreboardColumns = {
  4.     { name = "Player", width = 200, data = function (element) return getPlayerName ( element ) end },
  5.     { name = "Murders", width = 100, data = function (element) return ( getElementData ( element, "murders" ) or 0 ).. "/"..( getElementData ( element, "murders_total" ) or 0 ) end },
  6.     { name = "Killed Zombies", width = 80, data = function (element) return ( getElementData ( element, "zombieskilled" ) or 0 ).. "/"..( getElementData ( element, "zombieskilled_total" ) or 0 ) end },
  7.     { name = "Alive Time", width = 80, data = function (element) return formatTimeFromMinutes(getElementData ( element, "alivetime" ) or 1 ).."/"..formatTimeFromMinutes(getElementData ( element, "alivetime_total" ) or 1 ) end },
  8.     { name = "Group", width = 80, data = function (element) return getElementData ( element, "gang" ) or "None" end },
  9.     { name = "TM", width = 50, data = function (element) return ( getElementData ( element, "murders_total" ) or 0 ) end },
  10.     { name = "TD", width = 50, data = function (element) return ( getElementData ( element, "deaths_total" ) or 0 ) end },
  11.     { name = "KD Ratio", width = 50, data = function (element)
  12. if not (getElementData ( element, "deaths_total" ) and getElementData ( element, "murders_total" ) ) then
  13. return 0
  14. elseif not (getElementData ( element, "deaths_total" ) > 0 ) then
  15. return ( ('%.2f'):format( (getElementData ( element, "murdesrs_total" ) or 0) / 1) )
  16. else
  17. return ( ('%.2f'):format( (getElementData ( element, "murders_total" ) or 0) / getElementData ( element, "deaths_total" ) ) ) end end },
  18.     { name = "Ping", width = 40, data = function (element) return (getPlayerPing(element)) end },
  19. }
  20.  
  21. local serverName = "CLASSIC DAYZ" -- название сервера
  22. local topsize = 60 -- величина шляпы
  23. local playersize = topsize-30 -- высота одной строки
  24. local panelsize = playersize*10 -- величина панели
  25.  
  26. function calculateWidth()
  27.     local width = 0
  28.     for key, value in ipairs( scoreboardColumns ) do
  29.         width = width + value.width
  30.     end
  31.     return width + 60
  32. end
  33.  
  34. local max_players = 20
  35. local ploff = 0
  36. local width = calculateWidth()
  37. local baseX = sw/2-width/2
  38. local baseY = sh/2-(panelsize+topsize)/2
  39.  
  40. addEventHandler( "onClientRender", root,
  41.     function()
  42.         if getKeyState( "tab" ) == false then ploff = 0; return end
  43.         if getElementData(getLocalPlayer(),"logedin") then
  44.             dxDrawRectangle ( baseX, baseY, width, topsize, tocolor(32,32,32) )
  45.             dxDrawText ( serverName, baseX+20, baseY+10, baseX+width, baseY+topsize, tocolor(255,255,255), 0.9, "default-bold" )
  46.            
  47.             dxDrawRectangle ( baseX, baseY+topsize, width, panelsize, tocolor(0,0,0,150) )
  48.            
  49.             dxDrawLine ( baseX, baseY+30, baseX+width, baseY+30, tocolor(100,100,100),0.8 )
  50.             dxDrawLine ( baseX, baseY+30, baseX, baseY+panelsize+topsize, tocolor(100,100,100),0.8 )
  51.             dxDrawLine ( baseX, baseY+panelsize+topsize, baseX+width, baseY+panelsize+topsize, tocolor(100,100,100),0.8 )
  52.            
  53.             dxDrawLine ( baseX+40, baseY+30, baseX+40, baseY+panelsize+topsize, tocolor(100,100,100),0.8 )
  54.             dxDrawText ( "#", baseX, baseY+60, baseX+40, baseY+topsize-30, tocolor(255,255,255), 1, "default-bold", "center", "center" )
  55.             local xoff = 60
  56.             for i, v in ipairs ( scoreboardColumns ) do
  57.                 dxDrawLine ( baseX+xoff+v.width, baseY+30, baseX+xoff+v.width, baseY+panelsize+topsize, tocolor(100,100,100),0.8 )
  58.                 dxDrawText ( v.name, baseX+xoff, baseY+60, baseX+xoff+v.width, baseY+topsize-30, tocolor(255,255,255), 1, "default-bold", "center", "center" )
  59.                 xoff = xoff+v.width
  60.             end
  61.             local playersTable = getElementsByType ( "player" )
  62.             --local playersTable = { localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer }
  63.        
  64.             dxDrawText ( "Online: "..tostring(#playersTable).."/"..tostring(max_players), baseX+20, baseY+10, baseX+width-20, baseY+topsize, tocolor(255,255,255), 0.9, "default-bold", "right" )
  65.  
  66.             local maxNum = #playersTable
  67.             if maxNum > 10 then
  68.                 maxNum = 10
  69.             end
  70.             for i = 1, maxNum do
  71.                 dxDrawLine ( baseX, baseY+topsize+playersize*i, baseX+width, baseY+topsize+playersize*i, tocolor(100,100,100),0.8 )
  72.                 dxDrawText ( i+ploff, baseX, baseY+topsize+playersize*(i-1), baseX+40, baseY+topsize+playersize*i, tocolor(255,255,255), 1, "default-bold", "center", "center" )
  73.                 if playersTable[i+ploff] == localPlayer then
  74.                     dxDrawRectangle ( baseX, baseY+topsize+playersize*(i-1), width, playersize, tocolor(112,112,112,100) )
  75.                 end
  76.                 local xoff = 60
  77.                 for c, d in ipairs ( scoreboardColumns ) do
  78.                     local data = d.data(playersTable[i+ploff])
  79.                     local r,g,b = 255,255,255
  80.                     if d.name == "Group" and data == "None" then
  81.                         r,g,b = 0,255,0
  82.                         data = ""
  83.                     end
  84.                     dxDrawText ( data, baseX+xoff, baseY+topsize+playersize*(i-1), baseX+xoff+d.width, baseY+topsize+playersize*i, tocolor(r,g,b), 1, "default-bold", "center", "center" )
  85.                     xoff = xoff+d.width
  86.                 end
  87.             end
  88.         end
  89.     end
  90. )
  91.  
  92. function PlayerScrollMenu (key,keyState,arg)
  93.     if getElementData(localPlayer,"logedin") and getKeyState( "tab" ) then
  94.         if ( keyState == "down" ) then
  95.             if arg == "up" then
  96.                 if ploff > 0 then
  97.                     ploff=ploff-1
  98.                 end
  99.             elseif arg == "down" then
  100.                 local playersTable = getElementsByType ( "player" )
  101.                 --local playersTable = { localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer }
  102.                 if ploff < #playersTable-10 then
  103.                     ploff = ploff+1
  104.                 end
  105.             end
  106.         end
  107.     end
  108. end
  109. bindKey ( "mouse_wheel_up", "down", PlayerScrollMenu, "up" )
  110. bindKey ( "mouse_wheel_down", "down", PlayerScrollMenu, "down" )
  111.  
  112. function formatTimeFromMinutes(value)
  113.     if value then
  114.         local hours = math.floor(value/60)
  115.         local minutes = math.round(((value/60) - math.floor(value/60))*100/(100/60))
  116.         if minutes < 10 then minutes = "0"..minutes end
  117.         value = hours..":"..minutes
  118.         return value
  119.     end
  120.     return false
  121. end
  122.  
  123. function math.round(number, decimals, method)
  124.     decimals = decimals or 0
  125.     local factor = 10 ^ decimals
  126.     if (method == "ceil" or method == "floor") then return math[method](number * factor) / factor
  127.     else return tonumber(("%."..decimals.."f"):format(number)) end
  128. end
  129.  
  130. function sendMaxPlayersOnServer (players)
  131.     max_players = players
  132. end
  133.  
  134. addEvent("sendMaxPlayersOnServer",true)
  135. addEventHandler("sendMaxPlayersOnServer",getLocalPlayer(),sendMaxPlayersOnServer)
Advertisement
Add Comment
Please, Sign In to add comment