Advertisement
Guest User

Untitled

a guest
Feb 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.04 KB | None | 0 0
  1. admin = "Corncycle"
  2.  
  3. redTeamText = ""
  4. blueTeamText = ""
  5.  
  6. lastMap = ""
  7.  
  8. redTeam = {}
  9. redScore = 0
  10. blueTeam = {}
  11. blueScore = 0
  12.  
  13.  
  14. activePlayers = {}
  15. livingPlayers = {}
  16. ids = {}
  17.  
  18. numPlayers = 0
  19.  
  20. toggle = 0
  21. toggleBuffer = false
  22. menuOpen = true
  23. countdown = -1
  24. oneLeftToggle = 0
  25. oneLeftTimer = -1
  26.  
  27. maxCountdown = 0
  28. maxOneLeftTimer = 5
  29. safetyTimer = -1
  30.  
  31. goldAdmin = "#FFD700"
  32. redTeamColor = "#FF0000"
  33. redTeamBackground = 0x000001
  34. redTeamBorder = 0xFF0000
  35. redTeamOpacity = .5
  36.  
  37. blueTeamColor = "#22AAFF"
  38. blueTeamBackground = 0x000001
  39. blueTeamBorder = 0x0000FF
  40. blueTeamOpacity = .5
  41.  
  42. maps = {"4300791", "6469666", "4277918", "4280997", "4281375", "4284494", "4292764", "4293272", "7385953", "7386047", "7386050", "7386052", "7386690", "7386694", "7387984"}
  43.  
  44. function main()
  45. tfm.exec.disableAfkDeath(true)
  46. tfm.exec.disableAutoShaman(true)
  47. tfm.exec.disableAutoScore(true)
  48. tfm.exec.disableAutoTimeLeft(true)
  49. tfm.exec.disableAutoNewGame(true)
  50. setupDefaultTeams()
  51. drawMenuSkeleton(true)
  52. drawMenuSkeleton(false)
  53. end
  54.  
  55. function setupDefaultTeams()
  56. for name,player in pairs(tfm.get.room.playerList) do
  57. if (toggle % 2 == 0) then
  58. table.insert(redTeam, name)
  59. else
  60. table.insert(blueTeam, name)
  61. end
  62. toggle = toggle + 1
  63. numPlayers = numPlayers + 1
  64. end
  65. end
  66.  
  67. function eventChatCommand(playerName, message)
  68. if (message == "test") then
  69. ui.addTextArea(10000, "ahh", nil, 350, 50, 100, 50, 0x5555FF, nil, .4, true)
  70. elseif (message == "quit") then
  71. system.exit()
  72. elseif (message == "skip") then
  73. playMap(getRandomMap())
  74. elseif (message == "p") then
  75. redScore = redScore + 100
  76. end
  77. end
  78.  
  79. function eventTextAreaCallback(textAreaId, playerName, callback)
  80. if string.sub(callback,2,8)=="Button_" then
  81. t = {}
  82. othert = {}
  83. if string.sub(callback,1,1)=="r" then
  84. t = redTeam
  85. othert = blueTeam
  86. elseif string.sub(callback,1,1) == "b" then
  87. t = blueTeam
  88. othert = redTeam
  89. else
  90. print("Exception: Could not find " .. string.sub(callback,1,1) .. "team table")
  91. end
  92. nameChange = string.sub(callback,9,-1)
  93. index = -1
  94. for i=1,table.getn(t) do
  95. if t[i]==nameChange then
  96. index = i
  97. break
  98. end
  99. end
  100. if index==-1 then
  101. print("error!!")
  102. end
  103. table.remove(t,index)
  104. table.insert(othert,nameChange)
  105. drawMenuSkeleton(true)
  106. drawMenuSkeleton(false)
  107. elseif (callback == "beginGame") then
  108. menuOpen = false
  109. beginGameCountdown()
  110. end
  111. end
  112.  
  113. function eventLoop(timeRemaining,timeRemaining)
  114. if (countdown > 0 and toggleBuffer) then
  115. toggleBuffer = false
  116. elseif (countdown > 0 and not toggleBuffer) then
  117. toggleBuffer = true
  118. countdown = countdown - 1
  119. showGameCountdown()
  120. end
  121. if (countdown == 0) then
  122. countdown = -1
  123. removeGameCountdown()
  124. removeMenus()
  125. beginGame()
  126. end
  127. if (oneLeftTimer > 0 and oneLeftToggle) then
  128. oneLeftToggle = false
  129. elseif (oneLeftTimer > 0 and not oneLeftToggle) then
  130. oneLeftToggle = true
  131. oneLeftTimer = oneLeftTimer - 1
  132. print(" oneLeftTimer: " .. oneLeftTimer)
  133. end
  134. if (oneLeftTimer == 0) then
  135. oneLeftTimer = -1
  136. playMap(getRandomMap())
  137. end
  138. if (safetyTimer > -1) then
  139. safetyTimer = safetyTimer - 1
  140. if (allPlayersDead()) then
  141. playMap(getRandomMap())
  142. end
  143. end
  144. end
  145.  
  146. function eventNewGame()
  147. oneLeftTimer = -1
  148. updateActivePlayers()
  149. safetyTimer = 10
  150. tfm.exec.setGameTime(100000,true)
  151. end
  152.  
  153. function eventPlayerLeft(name)
  154. removedPlayer = false
  155. for i=1,table.getn(activePlayers) do
  156. if (name == activePlayers[i]) then
  157. table.remove(activePlayers, i)
  158. removedPlayer = true
  159. break
  160. end
  161. end
  162. if (not removedPlayer) then
  163. print("Exception: Someone left, but they were not in the active table!")
  164. else
  165. print("Successfully removed " .. name .. " from the active table")
  166. end
  167. end
  168.  
  169. function eventPlayerDied(name)
  170. removedPlayer = false
  171. for i=1,table.getn(livingPlayers) do
  172. if (name == livingPlayers[i]) then
  173. table.remove(livingPlayers, i)
  174. removedPlayer = true
  175. break
  176. end
  177. end
  178. if (not removedPlayer) then
  179. print("Exception: Someone died, but they were not in the living table!")
  180. else
  181. print("Successfully removed " .. name .. " from the living table")
  182. end
  183. checkForUpdate()
  184. end
  185.  
  186. function eventPlayerWon(name, timeSinceMap, timeSinceRespawn)
  187. removedPlayer = false
  188. for i=1, table.getn(livingPlayers) do
  189. if (name == livingPlayers[i]) then
  190. table.remove(livingPlayers, i)
  191. removedPlayer = true
  192. end
  193. end
  194. if (not removedPlayer) then
  195. print("Exception: Someone finished the map, but they were not in the living table!")
  196. else
  197. print("Got rid of em")
  198. end
  199. for i=1, table.getn(redTeam) do
  200. if (name == redTeam[i]) then
  201. redScore = redScore + 1
  202. end
  203. end
  204. for i=1, table.getn(blueTeam) do
  205. if (name == blueTeam[i]) then
  206. blueScore = blueScore + 1
  207. end
  208. end
  209. checkForUpdate()
  210. end
  211.  
  212. function eventNewPlayer(name)
  213. table.insert(activePlayers, name)
  214. print("Added " .. name .. " to the active table")
  215. end
  216.  
  217. function drawMenuSkeleton(drawInteractive)
  218. redTeamText = "<p align='center'><font size='14' color='"..redTeamColor.."'>Red Team</font></p><br>"
  219. blueTeamText = "<p align='center'><font size='14' color='"..blueTeamColor.."'>Blue Team</font></p><br>"
  220. str1 = ""
  221. str2 = ""
  222. for i=1,table.getn(redTeam) do
  223. if (redTeam[i]==admin) then
  224. str1 = str1 .. "<font color='" .. goldAdmin .. "'>"
  225. str2 = "</font>" .. str2
  226. else
  227. str1 = ""
  228. str2 = ""
  229. end
  230. if (drawInteractive) then
  231. str1 = str1 .. "<a href='event:rButton_" .. redTeam[i] .. "'>"
  232. str2 = "</a>" .. str2
  233. end
  234. redTeamText = redTeamText .. "<p align='center'>" .. str1 .. redTeam[i] .. str2.. "</p>"
  235. end
  236. for i=1,table.getn(blueTeam) do
  237. if (blueTeam[i]==admin) then
  238. str1 = str1 .. "<font color='"..goldAdmin.."'>"
  239. str2 = "</font>" .. str2
  240. else
  241. str1 = ""
  242. str2 = ""
  243. end
  244. if (drawInteractive) then
  245. str1 = str1 .."<a href='event:bButton_".. blueTeam[i] .. "'>"
  246. str2 = "</a>" .. str2
  247. end
  248. blueTeamText = blueTeamText .. "<p align='center'>" .. str1 .. blueTeam[i] .. str2 .. "</p>"
  249. end
  250. rPadded = 42 + (16 * table.getn(redTeam))
  251. bPadded = 42 + (16 * table.getn(blueTeam))
  252. if (drawInteractive) then
  253. ui.addTextArea(0, redTeamText, admin, 5, 30, 100, rPadded, redTeamBackground, redTeamBorder, redTeamOpacity, true)
  254. ui.addTextArea(1, blueTeamText, admin, 695, 30, 100, bPadded, blueTeamBackground, blueTeamBorder, blueTeamOpacity, true)
  255. ui.addTextArea(5, "<a href='event:beginGame'><p align='center'><font size='19'>BEGIN</font></p></a>", admin, 350, 30, 100, 30, 0x000001, 0x000000, .5, true)
  256. else
  257. for name,player in pairs(tfm.get.room.playerList) do
  258. if not (name == admin) then
  259. ui.addTextArea(3, redTeamText, name, 5, 30, 100, rPadded, redTeamBackground, redTeamBorder, redTeamOpacity, true)
  260. ui.addTextArea(4, blueTeamText, name, 695, 30, 100, bPadded, blueTeamBackground, blueTeamBorder, blueTeamOpacity, true)
  261. end
  262. end
  263. end
  264. end
  265.  
  266. function beginGameCountdown()
  267. countdown = maxCountdown + 1
  268. end
  269.  
  270. function showGameCountdown()
  271. ui.addTextArea(6, "<p align='center'>Beginning game in " .. countdown .. "</p>", nil, 350, 150, 100, 50, 0x000000, 0x000000, .5, true)
  272. end
  273.  
  274. function removeGameCountdown()
  275. ui.removeTextArea(6, nil)
  276. end
  277.  
  278. function removeMenus()
  279. for i=0, 10 do
  280. ui.removeTextArea(i, nil)
  281. end
  282. end
  283.  
  284. function beginGame()
  285. playMap(getRandomMap())
  286. end
  287.  
  288. function getRandomMap()
  289. mapCode = lastMap
  290. while (mapCode == lastMap) do
  291. mapCode = maps[math.random(#maps)]
  292. print(mapCode)
  293. end
  294. print(mapCode .. " has been chosen, which is different from " .. lastMap)
  295. return (mapCode)
  296. end
  297.  
  298. function playMap(code)
  299. for i=1,table.getn(redTeam) do
  300. tfm.exec.setNameColor(redTeam[i], redTeamBorder)
  301. end
  302. for i=1, table.getn(blueTeam) do
  303. tfm.exec.setNameColor(blueTeam[i], blueTeamBorder)
  304. end
  305. tfm.exec.newGame(code)
  306. lastMap = code
  307. showScores()
  308. end
  309.  
  310. function updateActivePlayers()
  311. activePlayers = {}
  312. livingPlayers = {}
  313. menuIndex = 36531
  314. for name,player in pairs(tfm.get.room.playerList) do
  315. table.insert(activePlayers, name)
  316. activePlayers[name] = {menuIndex}
  317. menuIndex = menuIndex + 1
  318. end
  319.  
  320. for i=1,table.getn(activePlayers) do
  321. table.insert(livingPlayers, activePlayers[i])
  322. print(livingPlayers[i])
  323. end
  324. end
  325.  
  326. function allPlayersDead()
  327. if (table.getn(livingPlayers) == 0) then
  328. return true
  329. else
  330. return false
  331. end
  332. end
  333.  
  334. function onePlayerLeft()
  335. if (table.getn(livingPlayers) == 1) then
  336. return true
  337. else
  338. return false
  339. end
  340. end
  341.  
  342. function startOneLeftTimer()
  343. oneLeftTimer = maxOneLeftTimer + 1
  344. end
  345.  
  346. function checkForUpdate()
  347. if (allPlayersDead()) then
  348. oneLeftTimer = -1
  349. playMap(getRandomMap())
  350. elseif (onePlayerLeft()) then
  351. tfm.exec.setGameTime(maxOneLeftTimer + 1,false)
  352. startOneLeftTimer()
  353. end
  354. end
  355.  
  356. function showScores()
  357. createIds()
  358. if (not menuOpen) then
  359. for name,player in pairs(tfm.get.room.playerList) do
  360. xBuffer = 0
  361. wBuffer = 0
  362. if (redScore > 99) then
  363. xBuffer = -20
  364. wBuffer = 20
  365. end
  366. ui.addTextArea(ids[name], "<a href='event:checkScore_r'><p align='center'><font size='24' color = '"..redTeamColor.."'><b>"..redScore.."</b></font></p></a>", name, 355+xBuffer, 30, 40+wBuffer, 50, 0x000000, 0x000000, .5, true)
  367. xBuffer = 0
  368. if (blueScore < 100) then
  369. wBuffer = 0
  370. end
  371. ui.addTextArea(ids[name]+10000, "<a href='event:checkScore_b'><p align='center'><font size='24' color = '"..blueTeamColor.."'><b>"..blueScore.."</b></font></p></a>", name, 405, 30, wBuffer + 40, 50, 0x000000, 0x000000, .5, true)
  372. end
  373. end
  374. end
  375.  
  376. function createIds()
  377. ids = {}
  378. tempId = 1
  379. for name,player in pairs(tfm.get.room.playerList) do
  380. ids[name] = tempId + 10000
  381. tempId = tempId + 1
  382. end
  383. end
  384.  
  385. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement