Advertisement
Filexdoj

clock v3

Apr 7th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.13 KB | None | 0 0
  1. local devScreenW, devScreenH = 1280, 800 -- Developer Screen W/H
  2. local ScreenW, ScreenH = guiGetScreenSize()
  3. local newScale = dxGetFontHeight(ScreenW / 16000, "default")
  4. local hourDifference = nil
  5. local minuteDifference = nil
  6. local secondDifference = nil
  7. local theResource = getThisResource()
  8. local position = "topRight"
  9. local dimensions = {
  10.   topRight = {
  11.     left = 1100 / devScreenW * ScreenW,
  12.     top = 10 / devScreenH * ScreenH,
  13.     right = 1270 / devScreenW * ScreenW,
  14.     bottom = 26 / devScreenH * ScreenH,
  15.     visible = true
  16.   },
  17.   bottomRight = {
  18.     left = 1100 / devScreenW * ScreenW,
  19.     top = 1530 / devScreenH * ScreenH,
  20.     right = 1310 / devScreenW * ScreenW,
  21.     bottom = 26 / devScreenH * ScreenH,
  22.     visible = false
  23.   },
  24.   bottomLeft = {
  25.     left = 8 / devScreenW * ScreenW,
  26.     top = 1500 / devScreenH * ScreenH,
  27.     right = 230 / devScreenW * ScreenW,
  28.     bottom = 26 / devScreenH * ScreenH,
  29.     visible = false
  30.   },
  31.   custom = {
  32.  
  33.     visible = false
  34.   }
  35. }
  36.  
  37. function triggerDataSending()
  38.   triggerServerEvent("data:sending", getLocalPlayer())
  39.   local visibilityFile = fileExists("clockInvisible")
  40.   local positionFile = fileExists("positionFile")
  41.   -- checks visibility
  42.   if visibilityFile then
  43.     removeEventHandler("onClientRender", getRootElement(), drawTime)
  44.     dimensions[position]["visible"] = false
  45.   end
  46.   -- checks position file
  47.   if positionFile then
  48.     local file = fileOpen("positionFile")
  49.     local size = fileGetSize(file)
  50.     local fileText = fileRead(file, size)
  51.     fileClose(file)
  52.     dimensions[position]["visible"] = false
  53.     position = fileText
  54.     dimensions[position]["visible"] = true
  55.   else
  56.     local file = fileCreate("positionFile")
  57.     fileWrite(file, position)
  58.     fileClose(file)
  59.   end
  60. end
  61. addEventHandler("onClientResourceStart", getResourceRootElement(theResource), triggerDataSending)
  62.  
  63. function calculateDifference(serverHours, serverMinutes, serverSeconds)
  64.   local localTime = getRealTime()
  65.   hourDifference = serverHours - localTime.hour
  66.   minuteDifference = serverMinutes - localTime.minute
  67.   secondDifference = serverSeconds - localTime.second
  68. end
  69. addEvent("calculate:difference", true)
  70. addEventHandler("calculate:difference", getRootElement(), calculateDifference)
  71.  
  72. -- this was set to fix the time law
  73. function returnTimeText()
  74.   local localTime = getRealTime()
  75.   local hours = localTime.hour + hourDifference
  76.   local minutes = localTime.minute + minuteDifference
  77.   local seconds = localTime.second + secondDifference
  78.   if seconds > 59 then
  79.     minutes = minutes + 1
  80.     seconds = seconds - 60
  81.   elseif seconds < 0 then
  82.     minutes = minutes - 1
  83.     seconds = seconds + 60
  84.   end
  85.  
  86.   if minutes > 59 then
  87.     hours = hours + 1
  88.     minutes = minutes - 60
  89.   elseif minutes < 0 then
  90.     hours = hours - 1
  91.     minutes = minutes + 60
  92.   end
  93.  
  94.   if hours > 23 then
  95.     hours = hours - 24
  96.   elseif hours < 0 then
  97.     hours = hours + 24
  98.   end
  99.   local time = string.format("%02d:%02d:%02d", hours, minutes, seconds)
  100.   text = "Server Time " .. time
  101.   return text
  102. end
  103.  
  104. function drawTime()
  105.   if hourDifference == nil then
  106.     return
  107.   else
  108.     local text = returnTimeText()
  109.     dxDrawText(
  110.       text,
  111.       dimensions[position]["left"] + 1,
  112.       dimensions[position]["top"] + 1,
  113.       dimensions[position]["right"] + 1,
  114.       dimensions[position]["bottom"] + 1,
  115.       tocolor(0, 0, 0, 255),
  116.       newScale,
  117.       "default",
  118.       "center",
  119.       "center",
  120.       false,
  121.       true,
  122.       true,
  123.       false,
  124.       false
  125.     )
  126.     dxDrawText(
  127.       text,
  128.       dimensions[position]["left"],
  129.       dimensions[position]["top"],
  130.       dimensions[position]["right"],
  131.       dimensions[position]["bottom"],
  132.       tocolor(255, 255, 255, 255),
  133.       newScale,
  134.       "default",
  135.       "center",
  136.       "center",
  137.       false,
  138.       true,
  139.       true,
  140.       false,
  141.       false
  142.     )
  143.   end
  144. end
  145.  
  146. addEventHandler("onClientRender", getRootElement(), drawTime)
  147. function hideOrShow()
  148.   if (dimensions[position]["visible"] == true) then
  149.     removeEventHandler("onClientRender", getRootElement(), drawTime)
  150.     dimensions[position]["visible"] = false
  151.     local file = fileCreate("clockInvisible")
  152.     fileClose(file)
  153.   elseif (dimensions[position]["visible"] == false) then
  154.     addEventHandler("onClientRender", getRootElement(), drawTime)
  155.     dimensions[position]["visible"] = true
  156.     fileDelete("clockInvisible")
  157.   end
  158. end
  159. addCommandHandler("clock", hideOrShow)
  160.  
  161. function changeCorner(_, corner)
  162.   if corner == "topright" then
  163.     dimensions[position]["visible"] = false
  164.     position = "topRight"
  165.     writeInFile(position)
  166.     dimensions[position]["visible"] = true
  167.   elseif corner == "bottomleft" then
  168.     dimensions[position]["visible"] = false
  169.     position = "bottomLeft"
  170.     writeInFile(position)
  171.     dimensions[position]["visible"] = true
  172.   elseif corner == "bottomright" then
  173.     dimensions[position]["visible"] = false
  174.     position = "bottomRight"
  175.     writeInFile(position)
  176.     dimensions[position]["visible"] = true
  177.   end
  178. end
  179. addCommandHandler("clockPosition", changeCorner)
  180.  
  181. function writeInFile(position)
  182.   local file = fileOpen("positionFile")
  183.   fileWrite(file, position)
  184.   fileClose(file)
  185. end
  186.  
  187. addCommandHandler(
  188.   "clockManual",
  189.   function()
  190.     function manualPosition()
  191.       local w, h = guiGetScreenSize()
  192.       showCursor(true)
  193.       dimensions[position]["visible"] = false
  194.       position = "custom"
  195.       dimensions[position]["visible"] = true
  196.       x, y = getCursorPosition()
  197.       dimensions["custom"]["left"] = x * (2600 / devScreenW * ScreenW)
  198.       dimensions["custom"]["top"] = y * (1700 / devScreenH * ScreenH)
  199.       dimensions["custom"]["right"] = 10
  200.       dimensions["custom"]["bottom"] = 0
  201.     end
  202.     addEventHandler("onClientRender", getRootElement(), manualPosition)
  203.     addEventHandler(
  204.       "onClientClick",
  205.       getRootElement(),
  206.       function()
  207.         showCursor(false)
  208.         removeEventHandler("onClientRender", getRootElement(), manualPosition)
  209.         removeEventHandler("onClientClick", getRootElement(), getEventHandlers("onClientRender", getRootElement())[1])
  210.       end
  211.     )
  212.   end
  213. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement