Guest User

draw_client

a guest
Dec 4th, 2012
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 12.46 KB | None | 0 0
  1. -- Get relative scale based on input
  2. function getDxMenuScale(int)
  3.     return (int*0.50)/1080
  4. end
  5.  
  6. -- Set all required variables
  7. local screenWidth, screenHeight = guiGetScreenSize()
  8.  
  9. local sizeX = 0
  10. local sizeY = -screenHeight/10
  11. local toSizeX = 0
  12. local toSizeY = -screenHeight/10
  13.  
  14. local pixelSpeed = (screenWidth/1.5)/31
  15. local increaseSpeedX = pixelSpeed
  16. local increaseSpeedY = pixelSpeed
  17. local fadeStageX = screenWidth/10
  18. local fadeStageY = screenHeight/10
  19. local fadeFactorX = (screenWidth/(getDxMenuScale(screenWidth)*1.768))/1000
  20. local fadeFactorY = (screenHeight/(getDxMenuScale(screenHeight)*1.768))/1000
  21.  
  22. local imageWidth, imageHeight = 400 * getDxMenuScale(screenWidth), 200 * getDxMenuScale(screenWidth)
  23. local imageLocationY = screenHeight - ((screenHeight/10)/2 + imageHeight/2)
  24. local imageOffset = getDxMenuScale(screenWidth)*8
  25.  
  26. local increaseAlpha = 3
  27. local dxImageAlpha = 0
  28. local imageFade = false
  29. local guiFade = false
  30. local performingAnimation = false
  31.  
  32. local selectedMenu = 0
  33.  
  34.  
  35.  
  36. -- Specify the filepaths for the DX Menu images
  37. dxImages = {
  38.     "img/dxstats.png",
  39.     "img/dxplayers.png",
  40.     "img/dxachievements.png",
  41.     "img/dxshop.png",
  42.     "img/dxmaps.png",
  43.     "img/dxoptions.png"
  44.     }
  45.  
  46. dxImageHighlights = {
  47.     "img/dxstatsh.png",
  48.     "img/dxplayersh.png",
  49.     "img/dxachievementsh.png",
  50.     "img/dxshoph.png",
  51.     "img/dxmapsh.png",
  52.     "img/dxoptionsh.png"
  53.     }
  54.  
  55.  
  56. -- Relative coordinates for the seperate "buttons"
  57. locA = 0.0328 * screenWidth
  58. locB = 0.1477 * screenWidth
  59. locC = 0.2883 * screenWidth
  60. locD = 0.5063 * screenWidth
  61. locE = 0.6273 * screenWidth
  62. locF = 0.7414 * screenWidth
  63. locG = 0.8805 * screenWidth
  64. locHeight = screenHeight - screenHeight/10
  65.  
  66.  
  67.  
  68. -- On script start, add the event handlers and binds
  69. function onDxDrawResourceStart()
  70.     addEventHandler("onClientRender",getRootElement(),drawDxRectangle)
  71.     addEventHandler("onClientRender",getRootElement(),drawDxImages)
  72.     addEventHandler("onClientRender",getRootElement(),drawDxText)
  73.     addEventHandler("onClientRender",getRootElement(),getUserMouseSelection)
  74.     addEventHandler("onClientClick",getRootElement(),checkDxMenuSelection)
  75.     showCursor(false)
  76.     bindKey("F7","down",openDxMenu)
  77. end
  78. addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),onDxDrawResourceStart)
  79.  
  80.  
  81. -- Open the DX Menu
  82. function openDxMenu()
  83.     if not (performingAnimation) then
  84.         if toSizeX == screenWidth then -- Close the menu
  85.             toSizeX = 0
  86.             toSizeY = -screenHeight/10
  87.             toSizeTX = screenWidth
  88.             toSizeTY = 0
  89.             increaseSpeedX = pixelSpeed
  90.             increaseSpeedY = pixelSpeed
  91.             imageFade = false
  92.             showCursor(false)
  93.             displayTab(0)
  94.             guiSetInputEnabled (false)
  95.         else -- Open the menu
  96.             toSizeX = screenWidth
  97.             toSizeY = -screenHeight/10
  98.             toSizeTX = screenWidth
  99.             toSizeTY = screenHeight/10
  100.             increaseSpeedX = pixelSpeed
  101.             increaseSpeedY = pixelSpeed
  102.             imageFade = true
  103.             showCursor(true)
  104.             guiSetInputEnabled (true)
  105.         end
  106.     end
  107. end
  108.  
  109.  
  110. -- When a player clicks, check if they clicked on one of the DX Menu buttons
  111. function checkDxMenuSelection(button,state)
  112.     if (button == "left") and (state == "down") then
  113.         if selectedMenu ~= 0 then
  114.             displayTab(selectedMenu)
  115.         end
  116.     end
  117. end
  118.  
  119.  
  120. -- Draw the images on the DX Menu
  121. function drawDxImages()
  122.     for iter,img in ipairs(dxImages) do
  123.         dxImageAlpha = getDxImageAlpha()
  124.  
  125.         -- Draw the rectangle for the darkened background
  126.         dxDrawRectangle(0,0,screenWidth,screenHeight,tocolor(0,0,0,dxImageAlpha/6))
  127.  
  128.         if iter < 3 then            -- Draw it normally
  129.             dxDrawImage((imageOffset+imageWidth/1.5)*(iter-1),imageLocationY,imageWidth,imageHeight,dxImages[iter],0,0,0,tocolor(255,255,255,dxImageAlpha),true,true,true)
  130.         elseif iter == 3 then       -- Add more space here
  131.             dxDrawImage((imageOffset+imageWidth/1.25)*(iter-1),imageLocationY,imageWidth,imageHeight,dxImages[iter],0,0,0,tocolor(255,255,255,dxImageAlpha),true,true,true)
  132.         elseif iter > 3 then        -- Draw normally again with some more distance
  133.             dxDrawImage((imageOffset+imageWidth/1.6)*(iter),imageLocationY,imageWidth,imageHeight,dxImages[iter],0,0,0,tocolor(255,255,255,dxImageAlpha),true,true,true)
  134.         end
  135.     end
  136. end
  137.  
  138.  
  139. -- Draw the black DX Menu bar
  140. function drawDxRectangle()
  141.     local sizeX, sizeY = getDxBottomBarSize()
  142.     local topBarAlpha = getDxImageAlpha() - 15
  143.     local topEdgeAlpha = getDxImageAlpha() - 60
  144.     if topBarAlpha < 0 then topBarAlpha = 0 end
  145.     if topEdgeAlpha < 0 then topEdgeAlpha = 0 end
  146.  
  147.     -- Bottom bar
  148.     dxDrawRectangle( 0, screenHeight, sizeX, sizeY, tocolor(0, 0, 0, 245),true,true,true)
  149.     dxDrawRectangle( 0, screenHeight - (screenHeight/10 + 1), sizeX, 2.5, tocolor(40, 40, 40, 195),true,true,true)
  150.  
  151.     -- Top bar
  152.     dxDrawRectangle( 0, 0, screenWidth, screenHeight/10, tocolor(0, 0, 0, topBarAlpha),true,true,true)
  153.     dxDrawRectangle( 0, screenHeight/10 - 1, screenWidth, 2.5, tocolor(40, 40, 40, topEdgeAlpha),true,true,true)
  154. end
  155.  
  156.  
  157. -- Draw the text on the DX Menu
  158. function drawDxText()
  159.     local dxTextAlpha = getDxImageAlpha()
  160.     local textOffsetX, textOffsetY = 0.0175 * screenWidth, 0.0175 * screenHeight
  161.     local logoImageX,logoImageY = 450 * (getDxMenuScale(screenWidth)*1.5),100 * (getDxMenuScale(screenWidth)*1.5)
  162.  
  163.     -- Draw time and date
  164.     dxDrawText(getServerTime()[2],textOffsetX,textOffsetY * 1.5,screenWidth,screenHeight,tocolor(100,255,255,dxTextAlpha),1.7*getDxMenuScale(screenWidth),"bankgothic","left","top",true,true,true)
  165.     dxDrawText(getServerTime()[1],textOffsetX,textOffsetY * 2.7,screenWidth,screenHeight,tocolor(0,200,255,dxTextAlpha),1.7*getDxMenuScale(screenWidth),"bankgothic","left","top",true,true,true)
  166.  
  167.     -- Draw the logo image
  168.     dxDrawImage(screenWidth - logoImageX,0 + getDxMenuScale(screenHeight)*10,logoImageX,logoImageY,"img/dxlogo.png",0,0,0,tocolor(255,255,255,dxTextAlpha),true,true,true)
  169. end
  170.  
  171.  
  172.  
  173.  
  174. --------------------------------------------------
  175.  
  176.  
  177.  
  178.  
  179.  
  180. -- Change the size of the bottom bar
  181. function getDxBottomBarSize()
  182.     if (sizeX == toSizeX and sizeY == toSizeY) then
  183.         increaseSpeedX = pixelSpeed
  184.         increaseSpeedY = pixelSpeed
  185.         performingAnimation = false
  186.         return sizeX,sizeY
  187.     end
  188.     if not (sizeX == toSizeX) then
  189.         if sizeX > toSizeX then             -- Decrease X position
  190.             if sizeX < toSizeX + fadeStageX then
  191.                 increaseSpeedX = increaseSpeedX / fadeFactorX
  192.             end
  193.             sizeX = sizeX - increaseSpeedX
  194.             if sizeX <= toSizeX + 0.3 then
  195.                 sizeX = toSizeX
  196.             end
  197.         else                                -- Increase X position
  198.             if sizeX > toSizeX - fadeStageX then
  199.                 increaseSpeedX = increaseSpeedX / fadeFactorX
  200.                 if increaseSpeedX <= 1 then
  201.                     increaseSpeedX = 1
  202.                 end
  203.             end
  204.             sizeX = sizeX + increaseSpeedX
  205.             if sizeX >= toSizeX - 0.3 then
  206.                 sizeX = toSizeX
  207.             end
  208.         end
  209.         performingAnimation = true
  210.     end
  211.     if not (sizeY == toSizeY) then
  212.         if sizeY < toSizeY then             -- Decrease Y position
  213.             if sizeY > toSizeY - fadeStageY then
  214.                 increaseSpeedY = increaseSpeedY / fadeFactorY
  215.             end
  216.             sizeY = sizeY + increaseSpeedY
  217.             if sizeY >= toSizeY - 0.3 then
  218.                 sizeY = toSizeY
  219.             end
  220.         else                                -- Increase Y position
  221.             if sizeY < toSizeY + fadeStageY then
  222.                 increaseSpeedY = increaseSpeedY / fadeFactorY
  223.             end
  224.             sizeY = sizeY - increaseSpeedY
  225.             if sizeY <= toSizeY + 0.3 then
  226.                 sizeY = toSizeY
  227.             end
  228.         end
  229.         performingAnimation = true
  230.     end
  231.     return sizeX,sizeY
  232. end
  233.  
  234.  
  235. -- Change the size of the top bar
  236. --[[
  237. function getDxTopBarSize()
  238.     if (sizeTX == toSizeTX and sizeTY == toSizeTY) then
  239.         increaseSpeedTX = pixelSpeed/10
  240.         increaseSpeedTY = pixelSpeed/10
  241.         performingAnimation = false
  242.         return sizeTX,sizeTY
  243.     end
  244.     if not (sizeTX == toSizeTX) then
  245.         if sizeTX > toSizeTX then               -- Decrease X position
  246.             if sizeTX < toSizeTX + fadeStageTX then
  247.                 increaseSpeedTX = increaseSpeedTX / fadeFactorTX
  248.             end
  249.             sizeTX = sizeTX - increaseSpeedTX
  250.             if sizeTX <= toSizeTX + 0.3 then
  251.                 sizeTX = toSizeTX
  252.             end
  253.         else                                -- Increase X position
  254.             if sizeTX > toSizeTX - fadeStageTX then
  255.                 increaseSpeedTX = increaseSpeedTX / fadeFactorTX
  256.                 if increaseSpeedTX <= 1 then
  257.                     increaseSpeedTX = 1
  258.                 end
  259.             end
  260.             sizeTX = sizeTX + increaseSpeedTX
  261.             if sizeTX >= toSizeTX - 0.3 then
  262.                 sizeTX = toSizeTX
  263.             end
  264.         end
  265.         performingAnimation = true
  266.     end
  267.     if not (sizeTY == toSizeTY) then
  268.         if sizeTY < toSizeTY then               -- Increase Y position
  269.             if (sizeX >= screenWidth - screenWidth/100) then
  270.                 if sizeTY > toSizeTY - fadeStageTY then
  271.                     increaseSpeedTY = increaseSpeedTY / fadeFactorTY
  272.                 end
  273.                 sizeTY = sizeTY + increaseSpeedTY
  274.                 if sizeTY >= toSizeTY - 0.3 then
  275.                     sizeTY = toSizeTY
  276.                 end
  277.             end
  278.         else                                -- Decrease Y position
  279.             if sizeTY < toSizeTY + fadeStageTY then
  280.                 increaseSpeedTY = increaseSpeedTY / fadeFactorTY
  281.             end
  282.             sizeTY = sizeTY - increaseSpeedTY
  283.             if sizeTY <= toSizeTY + 0.3 then
  284.                 sizeTY = toSizeTY
  285.             end
  286.         end
  287.         performingAnimation = true
  288.     end
  289.     return sizeTX,sizeTY
  290. end
  291. --]]
  292.  
  293.  
  294.  
  295. -- Alpha for DX Menu images
  296. function getDxImageAlpha()
  297.     local alpha = dxImageAlpha
  298.     if imageFade == true then   -- Increase alpha
  299.         if sizeX >= screenWidth - screenWidth/6 then
  300.             if alpha == 255 then
  301.                 return alpha
  302.             end
  303.             alpha = alpha + increaseAlpha
  304.             if alpha >= 255 then
  305.                 alpha = 255
  306.             end
  307.         end
  308.     else                        -- Decrease alpha
  309.         if alpha == 0 then
  310.             return alpha
  311.         end
  312.         alpha = alpha - increaseAlpha * 1.5
  313.         if alpha <= 0 then
  314.             alpha = 0
  315.         end
  316.     end
  317.     return alpha
  318. end
  319.  
  320.  
  321. -- Track mouse location, hightlight the image under the mouse and set the "selectedMenu" to the correct "tab".
  322. function getUserMouseSelection()
  323.  
  324.     if isCursorShowing() == false then return 0 end
  325.     if performingAnimation == true then return 0 end
  326.  
  327.     local posX,posY = getCursorPosition()
  328.     local mouseX, mouseY = posX * screenWidth, posY * screenHeight
  329.  
  330.     if (mouseX >= locA) and (mouseX < locB) and (mouseY <= screenHeight) and (mouseY >= locHeight) then
  331.         if not (selectedMenu == 1) then
  332.             selectedMenu = 1
  333.             dxImages[1] = dxImageHighlights[1]
  334.             resetImg(2)
  335.             resetImg(3)
  336.             resetImg(4)
  337.             resetImg(5)
  338.             resetImg(6)
  339.             playSoundFrontEnd (42)
  340.         end
  341.     elseif (mouseX >= locB) and (mouseX < locC) and (mouseY <= screenHeight) and (mouseY >= locHeight) then
  342.         if not (selectedMenu == 2) then
  343.             selectedMenu = 2
  344.             dxImages[2] = dxImageHighlights[2]
  345.             resetImg(1)
  346.             resetImg(3)
  347.             resetImg(4)
  348.             resetImg(5)
  349.             resetImg(6)
  350.             playSoundFrontEnd (42)
  351.         end
  352.     elseif (mouseX >= locC) and (mouseX < locD) and (mouseY <= screenHeight) and (mouseY >= locHeight) then
  353.         if not (selectedMenu == 3) then
  354.             selectedMenu = 3
  355.             dxImages[3] = dxImageHighlights[3]
  356.             resetImg(1)
  357.             resetImg(2)
  358.             resetImg(4)
  359.             resetImg(5)
  360.             resetImg(6)
  361.             playSoundFrontEnd (42)
  362.         end
  363.     elseif (mouseX >= locD) and (mouseX < locE) and (mouseY <= screenHeight) and (mouseY >= locHeight) then
  364.         if not (selectedMenu == 4) then
  365.             selectedMenu = 4
  366.             dxImages[4] = dxImageHighlights[4]
  367.             resetImg(1)
  368.             resetImg(2)
  369.             resetImg(3)
  370.             resetImg(5)
  371.             resetImg(6)
  372.             playSoundFrontEnd (42)
  373.         end
  374.     elseif (mouseX >= locE) and (mouseX < locF) and (mouseY <= screenHeight) and (mouseY >= locHeight) then
  375.         if not (selectedMenu == 5) then
  376.             selectedMenu = 5
  377.             dxImages[5] = dxImageHighlights[5]
  378.             resetImg(1)
  379.             resetImg(2)
  380.             resetImg(3)
  381.             resetImg(4)
  382.             resetImg(6)
  383.             playSoundFrontEnd (42)
  384.         end
  385.     elseif (mouseX >= locF) and (mouseX < locG) and (mouseY <= screenHeight) and (mouseY >= locHeight) then
  386.         if not (selectedMenu == 6) then
  387.             selectedMenu = 6
  388.             dxImages[6] = dxImageHighlights[6]
  389.             resetImg(1)
  390.             resetImg(2)
  391.             resetImg(3)
  392.             resetImg(4)
  393.             resetImg(5)
  394.             playSoundFrontEnd (42)
  395.         end
  396.     else
  397.         selectedMenu = 0
  398.         for i=1,#dxImages do
  399.             resetImg(i)
  400.         end
  401.     end
  402. end
  403.  
  404.  
  405. -- Reset original images
  406. function resetImg(img)
  407.     if img == 1 then
  408.         dxImages[1] = "img/dxstats.png"
  409.     elseif img == 2 then
  410.         dxImages[2] = "img/dxplayers.png"
  411.     elseif img == 3 then
  412.         dxImages[3] = "img/dxachievements.png"
  413.     elseif img == 4 then
  414.         dxImages[4] = "img/dxshop.png"
  415.     elseif img == 5 then
  416.         dxImages[5] = "img/dxmaps.png"
  417.     elseif img == 6 then
  418.         dxImages[6] = "img/dxoptions.png"
  419.     end
  420. end
  421.  
  422.  
  423. -- Get the server date and time
  424. function getServerTime ()
  425.     local time = getRealTime()
  426.     local hours = time.hour
  427.     if hours < 10 then
  428.         hours = "0"..hours
  429.     end
  430.     local minutes = time.minute
  431.     if minutes < 10 then
  432.         minutes = "0"..minutes
  433.     end
  434.     local seconds = time.second
  435.     if seconds < 10 then
  436.         seconds = "0"..seconds
  437.     end
  438.     local year = time.year+1900
  439.     local month = time.month+1
  440.     local day = time.monthday
  441.     return {day.."."..month.."."..year , "Time: "..hours..":"..minutes..":"..seconds}
  442. end
Advertisement
Add Comment
Please, Sign In to add comment