Advertisement
supinus

lua

Apr 28th, 2024 (edited)
23,059
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.44 KB | None | 0 0
  1. --CheesyManiac Server Icon Script v2.0
  2. --Original Source: https://github.com/CheesyManiac/cheesy-lua/
  3. --Distributed under the GNU GPL v3.0 License
  4. --More info: https://choosealicense.com/licenses/gpl-3.0/
  5.  
  6. -------------------------------------------------------------------
  7.  
  8. --x is horizontal
  9. --y is vertical
  10. --(0,0) is the top left corner
  11.  
  12. local scriptVersion = "2.0"
  13. ac.debug("1. Cheesy Icon Script", 'v'..scriptVersion)
  14. ac.debug("2. Original Source: ", "https://github.com/CheesyManiac/")
  15.  
  16. local screensize = vec2(ac.getSim().windowWidth,ac.getSim().windowHeight)
  17. local debugFlash, debugImage, debugLines,imageMetaLoaded = false, false, false, 0
  18. setInterval(function ()debugFlash = not debugFlash end, 0.5)
  19. ui.setAsynchronousImagesLoading(true)
  20.  
  21.  
  22. --Image Config table that is used by the script.
  23. --Duplicate the entire table and increment the numbers by 1.
  24. --Follow the example from image_0 and image_1 to get an understanding of how it works.
  25. local image_0_source = 'https://i.ibb.co/QNrq0xt/ezgif-com-animated-gif-maker-1.gif'
  26. local image_1_source = 'https://i.ibb.co/FwLj8HN/ezgif-com-animated-gif-maker-3.gif'
  27.  
  28. -------------------------------------------------------------------
  29. local function loadImageMeta()
  30. if imageMetaLoaded < 3 then
  31. -------------------------------------------------------------------
  32.  
  33. image_0 = {
  34. ['src'] = ui.GIFPlayer(image_0_source),
  35. ['sizeX'] = ui.imageSize(image_0_source).x,
  36. ['sizeY'] = ui.imageSize(image_0_source).y,
  37. ['paddingX'] = 10,
  38. ['paddingY'] = 10,
  39. ['scale'] = 0.3}
  40.  
  41.  
  42. image_1 = {
  43. ['src'] = ui.GIFPlayer(image_1_source),
  44. ['sizeX'] = ui.imageSize(image_1_source).x,
  45. ['sizeY'] = ui.imageSize(image_1_source).y,
  46. ['paddingX'] = 10,
  47. ['paddingY'] = 10,
  48. ['scale'] = 0.25}
  49.  
  50.  
  51. -------------------------------------------------------------------
  52. --------------DO NOT EDIT ANYTHING BELOW THIS LINE-----------------
  53. ---------------UNLESS YOU KNOW WHAT YOU ARE DOING------------------
  54. -------------------------------------------------------------------
  55. imageMetaLoaded = imageMetaLoaded + 1
  56. end
  57. end
  58.  
  59. local function drawdebugLines()
  60. --horizontal
  61. ui.drawLine(vec2(0, screensize.y/2), vec2(screensize.x, screensize.y/2), rgbm.colors.red,2)
  62. ui.drawText(" X-axis", vec2(0, screensize.y/2),rgbm.colors.red)
  63. --vertical
  64. ui.drawLine(vec2(screensize.x/2, 0), vec2(screensize.x/2, screensize.y),rgbm.colors.blue,2)
  65. ui.drawText(" Y-axis", vec2(screensize.x/2, 0),rgbm.colors.blue)
  66. end
  67.  
  68. ---@alias screenPosition
  69. ---| 'top_left' @!Top Left
  70. ---| 'top_center' @!Top Center
  71. ---| 'top_right' @!Top Right
  72. ---| 'center_left' @!Center Left
  73. ---| 'center_center' @!Center Center
  74. ---| 'center_right' @!Center Right
  75. ---| 'bottom_left' @!Bottom Left
  76. ---| 'bottom_center' @!Bottom Center
  77. ---| 'bottom_right' @!Bottom Right
  78.  
  79. ---Draws an image on the screen based on a table of locations, a source image table.
  80. ---@param image T @Tmage config table from above that holds the information about an image.
  81. ---@param position screenPosition @Choose the initial location on the screen of the image, then use the padding in the image config to move it.
  82. ---@param debug boolean? @Enable the debug box around the image to check boundaries
  83. ---@param scaleOverride integer? @Override the scale of the image in the image config
  84. local function positionImage(image, position, debug, scaleOverride)
  85. if scaleOverride ~= nil then
  86. pos = {
  87. ['top_left'] = vec2(image.paddingX,image.paddingY),
  88. ['top_center'] = vec2((screensize.x/2)-(image.sizeX/2*scaleOverride),image.paddingY),
  89. ['top_right'] = vec2((screensize.x)-(image.sizeX*scaleOverride)-image.paddingX,image.paddingY),
  90. ['center_left'] = vec2(image.paddingX, (screensize.y/2)-(image.sizeY/2*scaleOverride)),
  91. ['center_center'] = vec2(screensize.x/2-(image.sizeX/2*scaleOverride)+image.paddingX, screensize.y/2-(image.sizeY/2*scaleOverride)+image.paddingY),
  92. ['center_right'] = vec2(screensize.x-(image.sizeX*scaleOverride)-image.paddingX, screensize.y/2-(image.sizeY/2*scaleOverride)),
  93. ['bottom_left'] = vec2(image.paddingX, screensize.y-(image.sizeY*scaleOverride)-image.paddingY),
  94. ['bottom_center'] = vec2(screensize.x/2-(image.sizeX/2*scaleOverride), screensize.y-(image.sizeY*scaleOverride)-image.paddingY),
  95. ['bottom_right'] = vec2((screensize.x)-(image.sizeX*scaleOverride)-image.paddingX, screensize.y-(image.sizeY*scaleOverride)-image.paddingY)
  96. }
  97. if debug then
  98. display.rect({ pos = pos[position]-vec2(image.paddingX, image.paddingY),size = vec2(ui.imageSize(image.src)*scaleOverride+vec2(image.paddingX, image.paddingY):scale(2)),color = rgbm(0,0,0,0.5)})
  99. if debugFlash then
  100. display.rect({pos = pos[position]-vec2(1,1),size = vec2(ui.imageSize(image.src)*scaleOverride)+vec2(2,2),color = rgbm(1,0,0,0.5)})
  101. end
  102. end
  103.  
  104. display.image({
  105. image = image.src,
  106. pos = pos[position],
  107. size = vec2(ui.imageSize(image.src)*scaleOverride),
  108. color = rgbm.colors.white, uvStart = vec2(0, 0),uvEnd = vec2(1, 1)
  109. })
  110. elseif scaleOverride == nil or scaleOverride == 0 then
  111. pos = {
  112. ['top_left'] = vec2(image.paddingX,image.paddingY),
  113. ['top_center'] = vec2((screensize.x/2)-(image.sizeX/2*image.scale),image.paddingY),
  114. --['top_center'] = vec2((screensize.x/2)-(ui.imageSize(image.src).x/2*image.scale),image.paddingY),
  115. ['top_right'] = vec2((screensize.x)-(image.sizeX*image.scale)-image.paddingX,image.paddingY),
  116.  
  117. ['center_left'] = vec2(image.paddingX, (screensize.y/2)-(image.sizeY/2*image.scale)),
  118. ['center_center'] = vec2(screensize.x/2-(image.sizeX/2*image.scale)+image.paddingX, screensize.y/2-(image.sizeY/2*image.scale)+image.paddingY),
  119. ['center_right'] = vec2(screensize.x-(image.sizeX*image.scale)-image.paddingX, screensize.y/2-(image.sizeY/2*image.scale)),
  120.  
  121. ['bottom_left'] = vec2(image.paddingX, screensize.y-(image.sizeY*image.scale)-image.paddingY),
  122. ['bottom_center'] = vec2(screensize.x/2-(image.sizeX/2*image.scale), screensize.y-(image.sizeY*image.scale)-image.paddingY),
  123. ['bottom_right'] = vec2((screensize.x)-(image.sizeX*image.scale)-image.paddingX, screensize.y-(image.sizeY*image.scale)-image.paddingY)
  124. }
  125. if debug then
  126. display.rect({ pos = pos[position]-vec2(image.paddingX, image.paddingY),size = vec2(ui.imageSize(image.src)*image.scale+vec2(image.paddingX, image.paddingY):scale(2)),color = rgbm(0,0,0,0.5)})
  127. if debugFlash then
  128. display.rect({pos = pos[position]-vec2(1,1),size = vec2(ui.imageSize(image.src)*image.scale)+vec2(2,2),color = rgbm(1,0,0,0.5)})
  129. end
  130. end
  131.  
  132. display.image({
  133. image = image.src,
  134. pos = pos[position],
  135. size = vec2(ui.imageSize(image.src)*image.scale),
  136. color = rgbm.colors.white, uvStart = vec2(0, 0),uvEnd = vec2(1, 1)
  137. })
  138. end
  139.  
  140. end
  141.  
  142. local creditTimer = 10
  143. local creditPos = 0
  144. function script.update(dt)
  145. ac.debug('Driver In Setup Menu', ac.getSim().isInMainMenu)
  146. if not ac.getSim().isInMainMenu then
  147. local a = 2
  148. local b = 10
  149. if creditTimer >= 0 then
  150. creditTimer = creditTimer - (dt)
  151. end
  152. creditPos = (-0.01*b^(-a*creditTimer+math.log(500)/math.log(b)) + 2)*20
  153. end
  154. --ac.debug('creditPos', creditPos)
  155. ac.debug('creditTimer', creditTimer)
  156. --ac.debug("image_0_source", image_0_source)
  157. --ac.debug("image_1_source", image_1_source)
  158. ac.debug('imageMetaLoaded', imageMetaLoaded)
  159. --ac.debug("imageready",ui.isImageReady(image_0_source))
  160. loadImageMeta()
  161. end
  162.  
  163. ui.registerOnlineExtra(ui.Icons.Bug, "Server Icon Debug", function () return true end, function ()
  164. if ui.checkbox("Draw Image Boundary Boxes", debugImage) then debugImage = not debugImage end
  165. if ui.checkbox("Draw Screen Center Lines", debugLines) then debugLines = not debugLines end
  166. end, function (okClicked) end,ui.OnlineExtraFlags.Admin)
  167.  
  168.  
  169. function script.drawUI()
  170. if creditTimer > 0 then
  171. display.rect({ pos = vec2(screensize.x/2-120, creditPos-5), size = vec2(240,40), color = rgbm(0,0,0,0.5)})
  172. display.text({
  173. text = 'VIP v'..scriptVersion..'\n by DZST',
  174. pos = vec2((screensize.x/2)-92, creditPos),
  175. letter = vec2(14, 24),
  176. font = 'aria',
  177. color = rgbm.colors.white
  178. })
  179. end
  180. if debugLines then
  181. drawdebugLines()
  182. end
  183.  
  184. -------------------------------------------------------------------
  185. -------------ADD YOUR ADDITIONAL IMAGES UNDER HERE,----------------
  186. ----------------SO THAT THEY ARE DRAWN ON SCREEN-------------------
  187. -------------------------------------------------------------------
  188.  
  189.  
  190. positionImage(image_0, 'top_center', debugImage)
  191. positionImage(image_1, 'bottom_left', debugImage)
  192.  
  193.  
  194. --DO NOT forget the final "end" over here, otherwise it will not work.
  195. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement