Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. local Status = {}
  2. local isPaused = false
  3.  
  4. function GetStatusData(minimal)
  5. local status = {}
  6.  
  7. for i=1, #Status, 1 do
  8. if minimal then
  9. table.insert(status, {
  10. name = Status[i].name,
  11. val = Status[i].val,
  12. percent = (Status[i].val / Config.StatusMax) * 100
  13. })
  14. else
  15. table.insert(status, {
  16. name = Status[i].name,
  17. val = Status[i].val,
  18. color = Status[i].color,
  19. visible = Status[i].visible(Status[i]),
  20. max = Status[i].max,
  21. percent = (Status[i].val / Config.StatusMax) * 100
  22. })
  23. end
  24. end
  25.  
  26. return status
  27. end
  28.  
  29. RegisterNetEvent('esx_status:load')
  30. AddEventHandler('esx_status:load', function(status)
  31.  
  32. for i=1, #Status, 1 do
  33. for j=1, #status, 1 do
  34. if Status[i].name == status[j].name then
  35. Status[i].set(status[j].val)
  36. end
  37. end
  38. end
  39.  
  40. Citizen.CreateThread(function()
  41. while true do
  42.  
  43. for i=1, #Status, 1 do
  44. Status[i].onTick()
  45. end
  46.  
  47. SendNUIMessage({
  48. update = true,
  49. status = GetStatusData()
  50. })
  51.  
  52. TriggerEvent('esx_ladderhud:updateBasics', GetStatusData(true))
  53. Citizen.Wait(Config.TickTime)
  54. end
  55. end)
  56.  
  57. end)
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65. AddEventHandler('esx_status:registerStatus', function(name, default, color, visible, tickCallback)
  66. local status = CreateStatus(name, default, color, visible, tickCallback)
  67. table.insert(Status, status)
  68. end)
  69.  
  70. RegisterNetEvent('esx_status:load')
  71. AddEventHandler('esx_status:load', function(status)
  72.  
  73. for i=1, #Status, 1 do
  74. for j=1, #status, 1 do
  75. if Status[i].name == status[j].name then
  76. Status[i].set(status[j].val)
  77. end
  78. end
  79. end
  80.  
  81. Citizen.CreateThread(function()
  82. while true do
  83.  
  84. for i=1, #Status, 1 do
  85. Status[i].onTick()
  86. end
  87.  
  88. SendNUIMessage({
  89. update = true,
  90. status = GetStatusData()
  91. })
  92.  
  93. TriggerEvent('esx_customui:updateStatus', GetStatusData(true))
  94. Citizen.Wait(Config.TickTime)
  95. end
  96. end)
  97.  
  98. end)
  99.  
  100. RegisterNetEvent('esx_status:set')
  101. AddEventHandler('esx_status:set', function(name, val)
  102. for i=1, #Status, 1 do
  103. if Status[i].name == name then
  104. Status[i].set(val)
  105. break
  106. end
  107. end
  108.  
  109. SendNUIMessage({
  110. update = true,
  111. status = GetStatusData()
  112. })
  113.  
  114. TriggerServerEvent('esx_status:update', GetStatusData(true))
  115. end)
  116.  
  117. RegisterNetEvent('esx_status:add')
  118. AddEventHandler('esx_status:add', function(name, val)
  119. for i=1, #Status, 1 do
  120. if Status[i].name == name then
  121. Status[i].add(val)
  122. break
  123. end
  124. end
  125.  
  126. SendNUIMessage({
  127. update = true,
  128. status = GetStatusData()
  129. })
  130.  
  131. TriggerServerEvent('esx_status:update', GetStatusData(true))
  132. end)
  133.  
  134. RegisterNetEvent('esx_status:remove')
  135. AddEventHandler('esx_status:remove', function(name, val)
  136. for i=1, #Status, 1 do
  137. if Status[i].name == name then
  138. Status[i].remove(val)
  139. break
  140. end
  141. end
  142.  
  143. SendNUIMessage({
  144. update = true,
  145. status = GetStatusData()
  146. })
  147.  
  148. TriggerServerEvent('esx_status:update', GetStatusData(true))
  149. end)
  150.  
  151. AddEventHandler('esx_status:getStatus', function(name, cb)
  152. for i=1, #Status, 1 do
  153. if Status[i].name == name then
  154. cb(Status[i])
  155. return
  156. end
  157. end
  158. end)
  159.  
  160. AddEventHandler('esx_status:setDisplay', function(val)
  161. SendNUIMessage({
  162. setDisplay = true,
  163. display = val
  164. })
  165. end)
  166.  
  167. -- Pause menu disable hud display
  168. Citizen.CreateThread(function()
  169. while true do
  170. Citizen.Wait(300)
  171.  
  172. if IsPauseMenuActive() and not isPaused then
  173. isPaused = true
  174. TriggerEvent('esx_status:setDisplay', 0.0)
  175. elseif not IsPauseMenuActive() and isPaused then
  176. isPaused = false
  177. TriggerEvent('esx_status:setDisplay', 0.5)
  178. end
  179. end
  180. end)
  181.  
  182. -- Loaded event
  183. Citizen.CreateThread(function()
  184. TriggerEvent('esx_status:loaded')
  185. end)
  186.  
  187. -- Update server
  188. Citizen.CreateThread(function()
  189. while true do
  190. Citizen.Wait(Config.UpdateInterval)
  191.  
  192. TriggerServerEvent('esx_status:update', GetStatusData(true))
  193. end
  194. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement