Advertisement
Guest User

Untitled

a guest
Sep 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1. local sw, sh = guiGetScreenSize()
  2. local ping = getPlayerPing(getLocalPlayer())
  3. ColumnName = {{ name = "", width = 100, data = function (element) return getPlayerName ( element ) end },}
  4. ColumnStats = {
  5. { name = "Humanity", width = 100, data = function (element) return getElementData ( element, "humanity" ) or 0 end },
  6. { name = "Murders", width = 100, data = function (element) return ( getElementData ( element, "murders" ) or 0 ).. "/"..( getElementData ( element, "murdersTOTAL" ) or 0 ) end },
  7. { name = "Zombies killed", width = 100, data = function (element) return ( getElementData ( element, "zombieskilled" ) or 0 ) end },
  8. { name = "Alive Time", width = 100, data = function (element) return formatTimeFromMinutes(getElementData ( element, "alivetime" ) or 1 ) end },
  9. { name = "Ping", width = 80, data = function (element) return getPlayerPing ( element, "ping" ) or 99 end },
  10. { name = "Group", width = 100, data = function (element) return getElementData ( element, "gang" ) or "None" end },
  11. }
  12.  
  13. local serverName = ".::Polski-DayZ::." -- Nazwa
  14. local topsize = 60 -- Wielkość
  15. local playersize = topsize-30 -- Wielkość
  16. local panelsize = playersize*1 -- x
  17.  
  18. function calculateWidth()
  19. local width = 0
  20. for key, value in ipairs( ColumnName ) do
  21. width = width + value.width
  22. end
  23. for key, value in ipairs( ColumnStats ) do
  24. width = width + value.width
  25. end
  26. return width + 60
  27. end
  28.  
  29. local max_players = 60
  30. local ploff = 0
  31. local width = calculateWidth()
  32. local baseX = sw/2-width/2
  33. local baseY = sh/2-(panelsize+topsize)/0.5
  34.  
  35. addEventHandler( "onClientRender", root,
  36. function()
  37. if getKeyState( "tab" ) == false then ploff = 0; return end
  38. if getElementData(getLocalPlayer(),"logedin") then
  39. dxDrawRectangle ( baseX, baseY-40, width, topsize+10, tocolor(0, 0, 0, 80) )
  40. dxDrawRectangle ( baseX, baseY-40, width, topsize+40, tocolor(0, 0, 0, 40) )
  41. dxDrawText ( serverName, baseX+52, baseY-45, baseX+width, baseY+topsize, tocolor(255,255,255,60), 2.6, "bankgothic" )
  42. dxDrawRectangle ( baseX, baseY+topsize, width, panelsize, tocolor(0, 0, 0, 40) )
  43. dxDrawLine ( baseX, baseY+panelsize+topsize, baseX+width, baseY+panelsize+topsize, tocolor(100,100,100,50),0.8 )
  44. local xoff = 60
  45. for i, v in ipairs ( ColumnName ) do
  46. dxDrawLine ( baseX+xoff+v.width, baseY+30, baseX+xoff+v.width, baseY+panelsize, tocolor(100,100,100),0.9 )
  47. dxDrawText ( v.name, baseX+xoff, baseY+70, baseX+xoff+v.width+10, baseY+topsize-30, tocolor(255,255,255,255), 1, "default-bold", "center", "center" )
  48. xoff = xoff+v.width
  49. end
  50. for i, v in ipairs ( ColumnStats ) do
  51. dxDrawLine ( baseX+xoff+v.width, baseY+30, baseX+xoff+v.width, baseY+panelsize, tocolor(100,100,100),0.9 )
  52. dxDrawText ( v.name, baseX+xoff, baseY+60, baseX+xoff+v.width, baseY+topsize-30, tocolor(255,255,255,255), 1, "default-bold", "center", "center" )
  53. xoff = xoff+v.width
  54. end
  55. local playersTable = getElementsByType ( "player" )
  56. dxDrawText ( "Players: "..tostring(#playersTable).."/"..tostring(max_players), baseX -570, baseY+60, baseX+width, baseY+30, tocolor(255,255,255,255), 1, "default-bold", "center", "center" )
  57. local maxNum = #playersTable
  58. if maxNum > 15 then
  59. maxNum = 15
  60. end
  61. for i = 1, maxNum do
  62. dxDrawLine ( baseX, baseY+topsize+playersize*i, baseX+width, baseY+topsize+playersize*i, tocolor(0, 0, 0, 40),0.5 )
  63. dxDrawText ( i+ploff, baseX, baseY+topsize+playersize*(i-1), baseX+25, baseY+topsize+playersize*i, tocolor(255, 255, 255,255), 1, "default-bold", "center", "center" )
  64. if playersTable[i+ploff] == localPlayer then
  65. dxDrawRectangle ( baseX, baseY+topsize+playersize*(i-1), width, playersize, tocolor(0, 0, 0, 60) )
  66. else
  67. dxDrawRectangle ( baseX, baseY+topsize+playersize*(i-1), width, playersize, tocolor(0, 0, 0, 30) )
  68. end
  69. local xoff = 60
  70. for c, d in ipairs ( ColumnName ) do
  71. local data = d.data(playersTable[i+ploff])
  72. --local r,g,b = 255,255,255,50
  73. dxDrawText ( data, baseX+xoff-40, baseY+topsize+playersize*(i-1), baseX+xoff+d.width-10, baseY+topsize+playersize*i, tocolor(255, 255, 255,255), 0.9, "default-bold", "center", "center" )
  74. xoff = xoff+d.width
  75. end
  76. for c, d in ipairs ( ColumnStats ) do
  77. local data = d.data(playersTable[i+ploff])
  78. local r,g,b = 255, 255, 255,255
  79. if d.name == "Группа" and data == "None" then
  80. r,g,b = 249,41,0
  81. data = "Нет"
  82. end
  83. dxDrawText ( data, baseX+xoff, baseY+topsize+playersize*(i-1), baseX+xoff+d.width-5, baseY+topsize+playersize*i, tocolor(r,g,b), 0.9, "default-bold", "center", "center" )
  84. xoff = xoff+d.width
  85. end
  86. end
  87. end
  88. end
  89. )
  90.  
  91. function PlayerScrollMenu (key,keyState,arg)
  92. if getElementData(localPlayer,"logedin") and getKeyState( "tab" ) then
  93. if ( keyState == "down" ) then
  94. if arg == "up" then
  95. if ploff > 0 then
  96. ploff=ploff-1
  97. end
  98. elseif arg == "down" then
  99. local playersTable = getElementsByType ( "player" )
  100. --local playersTable = { localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer, localPlayer }
  101. if ploff < #playersTable-10 then
  102. ploff = ploff+1
  103. end
  104. end
  105. end
  106. end
  107. end
  108. bindKey ( "mouse_wheel_up", "down", PlayerScrollMenu, "up" )
  109. bindKey ( "mouse_wheel_down", "down", PlayerScrollMenu, "down" )
  110.  
  111. function formatTimeFromMinutes(value)
  112. if value then
  113. local hours = math.floor(value/60)
  114. local minutes = math.round(((value/60) - math.floor(value/60))*100/(100/60))
  115. if minutes < 10 then minutes = "0"..minutes end
  116. value = hours..":"..minutes
  117. return value
  118. end
  119. return false
  120. end
  121.  
  122. function math.round(number, decimals, method)
  123. decimals = decimals or 0
  124. local factor = 10 ^ decimals
  125. if (method == "ceil" or method == "floor") then return math[method](number * factor) / factor
  126. else return tonumber(("%."..decimals.."f"):format(number)) end
  127. end
  128.  
  129. function sendMaxPlayersOnServer (players)
  130. max_players = players
  131. end
  132.  
  133. function a ( )
  134. for index, player in ipairs ( getElementsByType "player" ) do
  135. if not (isGuestAccount (getPlayerAccount(player))) then
  136. if not getElementData(player, "alivetimeTOTAL") then
  137. setElementData(player, "alivetimeTOTAL", 0)
  138. else
  139. if not getElementData(player, "murdersTOTAL") then
  140. setElementData(player, "murdersTOTAL", 0)
  141. else
  142. if not getElementData(player, "zombieskilledTOTAL") then
  143. setElementData(player, "zombieskilledTOTAL", 0)
  144. else
  145. czas = getElementData(player, "alivetime" )
  146. czasx = getElementData(player, "alivetimeTOTAL" )
  147. setElementData ( player, "GP", getPlayerMoney ( player ) )
  148. setElementData ( player, "Morderstwa", getElementData(player, "murders" ) .. "(" .. (getElementData(player, "murdersTOTAL" ) .. ")") )
  149. setElementData ( player, "Czas Gry", (czas .. "(" .. (czasx .. ")") ) )
  150. setElementData ( player, "Zabite zombie", getElementData(player, "zombieskilled") .. "(" .. (getElementData(player, "zombieskilledTOTAL" ) .. ")") )
  151. local playtimeTOTAL = getElementData(player, "alivetimeTOTAL")
  152. setElementData(player, "alivetimeTOTAL", playtimeTOTAL + 1)
  153. exports.scoreboard:scoreboardSetSortBy("GP", false, getRootElement() )
  154. exports.scoreboard:scoreboardForceTeamsHidden(boolean)
  155. end
  156. end
  157. end
  158. end
  159. end
  160. end
  161. setTimer ( a, 60000, 0 )
  162.  
  163. addEvent("sendMaxPlayersOnServer",true)
  164. addEventHandler("sendMaxPlayersOnServer",getLocalPlayer(),sendMaxPlayersOnServer)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement