Advertisement
Guest User

poll script

a guest
Oct 14th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. local elements = { }
  2. local voted = { }
  3.  
  4. local finished = false
  5.  
  6. local most_voted_element
  7.  
  8. local admin
  9. do
  10. local _, nickname = pcall(nil)
  11. admin = string.match(nickname, '(.-)%.')
  12.  
  13. local available_elements = {
  14. 'Racing', 'Bootcamp', 'Vanilla'
  15. }
  16.  
  17. for i = 1, #available_elements do
  18. elements[available_elements[i]] = 0
  19. end
  20. end
  21.  
  22. local function display_ui(name)
  23. ui.addTextArea(0, "<p align='center'><font size='14'><v>Poll", name, 250, 75, 300, 205, 0x0D181A)
  24.  
  25. local str = ''
  26.  
  27. for k in next, elements do
  28. str = str .. string.format("<j><a href='event:%s'>%s</a>\n\n\n", k, k)
  29. end
  30.  
  31. ui.addTextArea(1, "<p align='center'><font size='12'>\n\n" .. str, name, 255, 104, 290, 170, 0x12272b)
  32. end
  33.  
  34. local function update_ui(name)
  35. if (voted[name]) then
  36. local str = ''
  37.  
  38. local color_tag
  39.  
  40. for k, v in next, elements do
  41. color_tag = '<j>'
  42. if (finished) then
  43. color_tag = (k == most_voted_element) and '<vp>' or '<r>'
  44. end
  45.  
  46. str = str .. string.format("%s<a href='event:%s'>%s</a>", color_tag, k, k)
  47.  
  48. if (voted[name]) then
  49. str = str .. ': <n>' .. v .. ' votes.'
  50. end
  51.  
  52. str = str .. '\n\n\n'
  53. end
  54.  
  55. ui.updateTextArea(1, "<p align='center'><font size='12'>\n\n" .. str, name)
  56. end
  57. end
  58.  
  59. local function start()
  60. voted = { }
  61.  
  62. finished = false
  63.  
  64. most_voted_element = ''
  65.  
  66. for k in next, elements do
  67. elements[k] = 0
  68. end
  69.  
  70. table.foreach(tfm.get.room.playerList, display_ui)
  71. end
  72.  
  73. local function stop()
  74. local t = { }
  75. for k, v in next, elements do
  76. if (v > 0) then
  77. t[#t + 1] = { k, v }
  78. end
  79. end
  80.  
  81. if (#t > 0) then
  82. finished = true
  83.  
  84. table.sort(t, function(a, b) return a[2] > b[2] end)
  85.  
  86. most_voted_element = t[1][1]
  87.  
  88. table.foreach(tfm.get.room.playerList, update_ui)
  89. end
  90. end
  91.  
  92. function eventChatCommand(name, command)
  93. if (admin ~= name) then return end
  94.  
  95. if (command == 'start') then
  96. start()
  97. elseif (command == 'stop') then
  98. stop()
  99. end
  100. end
  101.  
  102. function eventTextAreaCallback(_, name, callback)
  103. if (voted[name]) then return end
  104.  
  105. if (elements[callback]) then
  106. elements[callback] = (elements[callback] + 1)
  107.  
  108. voted[name] = true
  109.  
  110. table.foreach(tfm.get.room.playerList, update_ui)
  111. end
  112. end
  113.  
  114. system.disableChatCommandDisplay()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement