Advertisement
Dudugz-Contistente

Untitled

Dec 2nd, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.15 KB | None | 0 0
  1. keys={69,32,27}
  2.  
  3. players={}
  4.  
  5. data={}
  6. ids={}
  7.  
  8. mapas={6879570,6879586,2173893,4392183,4569940,1870360,6880640,6882237,6882094}
  9.  
  10. shop={
  11. {"Bolinha Rosa",10,97,80,41},
  12. {"Bola de Papel",35,95,70,27},
  13. {"Galinha",75,33,50,27},
  14. {"Abóbora",100,89,60,40},
  15. {"Baiacu",250,65,40,1},
  16. {"Flecha",1000,35,40,13},
  17. }
  18.  
  19. maxPStatus = 6
  20. maxPMoney = 4
  21. maxPRoom = 20
  22. maxBalas = 50
  23.  
  24. vivos=0
  25. jogadores=0
  26.  
  27.  
  28. textarea=ui.addTextArea
  29. function ui.addTextArea(id,text,targetPlayer,x,y,width,height,backgroundColor,borderColor,backgroundAlpha,emboss)
  30. --if not backgroundColor then backgroundColor=0x324650 end
  31. --if not borderColor then borderColor=0x000001 end
  32. if emboss then
  33. textarea(6969+id,"",targetPlayer,x,y+1,width,height,0x000001,0x000001,backgroundAlpha)
  34. textarea(7979+id,"",targetPlayer,x,y-1,width,height,0x6A8FA2,0x6A8FA2,backgroundAlpha)
  35. end
  36. textarea(id,text,targetPlayer,x,y,width,height,backgroundColor,borderColor,backgroundAlpha)
  37. end
  38.  
  39.  
  40. function split(t,s)
  41. local a={}
  42. for i,v in string.gmatch(t,string.format("[^%s]+",s or "%s")) do
  43. table.insert(a,i)
  44. end
  45. return a
  46. end
  47.  
  48. function eventChatCommand(p, cmd)
  49. local arg = split(cmd, " ")
  50. if arg[1] == "giveCoin" and arg[2] then
  51. if arg[3] then
  52. local nome = arg[2]:lower():gsub('%a', string.upper, 1)
  53. local coins = arg[3]
  54. print(nome)
  55. print(coins)
  56. for i,v in pairs(mods) do
  57. if v == p then
  58. players[nome].moedas = players[nome].moedas+coins
  59. tfm.exec.setPlayerScore(nome,players[nome].moedas,false)
  60. ui.addTextArea(1,"<J><B><p align='center'>"..players[nome].moedas.."</p></J>",nome,6,350,100,20,nil,0x6a8495,90,true)
  61. tfm.exec.chatMessage("<N>[<CE>ΞModeration</CE>]</N> <V>"..p.."</V><VP> doou <ROSE>"..coins.."</ROSE> ao jogador <J>"..nome.."</J>")
  62. end
  63. end
  64. end
  65. end
  66.  
  67. if arg[1] == "p" then -- se o comando for p
  68. if arg[2] then -- se tiver o nome de alguem
  69. local nome = arg[2]:lower():gsub('%a', string.upper, 1) -- guarda na variavel
  70. --nome:lower():gsub('%a', string.upper, 1)
  71. if tfm.get.room.playerList[nome] then -- se tiver na sala (retornaria nil se n tivesse)
  72. perfil="<p align='center'><font size='16'><J>"..nome.."</J></font><br><font size='12'><N>Rodadas: <V>"..players[nome].rounds.."</V><br>Vitórias: <V>"..players[nome].wins.."</V><br>Mortes: <V>"..players[nome].kills.."</V><br>Moedas: <V>"..players[nome].moedas.."</V>"
  73. end
  74. else -- se ele só escreveu !p mostrar o perfil dele mesmo
  75. perfil="<p align='center'><font size='16'><J>"..p.."</J></font><br><font size='12'><N>Rodadas: <V>"..players[p].rounds.."</V><br>Vitórias: <V>"..players[p].wins.."</V><br>Mortes: <V>"..players[p].kills.."</V><br>Moedas: <V>"..players[p].moedas.."</V>"
  76. end
  77. ui.addTextArea(36,'<a href="event:perfilClose"><font color="#ff0000">Fechar</font></a>',p,250,102,60,nil,nil,0x6a8495,1,true)
  78. ui.addTextArea(35,perfil,p,300,100,300,140,nil,0x6a8495,1,true)
  79. end
  80. end
  81.  
  82. for _,f in pairs ({'disableAutoNewGame','disableAutoShaman','disableAutoTimeLeft','disableAutoScore'}) do
  83. tfm.exec[f](true)
  84. end
  85.  
  86. function nextRound()
  87. tfm.exec.newGame(mapas[math.random(#mapas)])
  88. end
  89.  
  90. function eventNewGame()
  91. vivos=0
  92. tfm.exec.setGameTime(100)
  93. tfm.exec.snow(100)
  94. for name in pairs(tfm.get.room.playerList) do
  95. vivos=vivos+1;
  96. if jogadores >= maxPStatus then
  97. players[name].rounds = players[name].rounds+1;
  98. end
  99. if players[name].balas < 10 then
  100. ui.addTextArea(6,"<B><J><p align='center'><V>0"..players[name].balas.."</V><N>/</N>"..maxBalas.."</p></J>",name,6,375,100,16,nil,0x6a8495,90,true)
  101. else
  102. ui.addTextArea(6,"<B><J><p align='center'><V>"..players[name].balas.."</V><N>/</N>"..maxBalas.."</p></J>",name,6,375,100,16,nil,0x6a8495,90,true)
  103. end
  104. end
  105. end
  106.  
  107. function eventPlayerLeft(name)
  108. jogadores=jogadores-1;
  109. end
  110.  
  111. function eventNewPlayer(name)
  112. for i,v in pairs ({"<CE>Bem-vindo %s ao #wars versão 5.0</CE>","<J>Para atirar pressione a tecla E ou Espaço, O ultimo vivo ganha.</J>","<R>É necessário "..maxPMoney.." jogadores para contar moedas e "..maxPStatus.." para estátisticas.</R>","<J>Jogo desenvolvido por: <V>Contistente</V> & <V>Rianmojang</V></J>"}) do
  113. tfm.exec.chatMessage(v:format(name),name)
  114. end
  115. if jogadores == 1 then
  116. nextRound()
  117. end
  118. jogadores=jogadores+1;
  119.  
  120. players[name]={
  121. objeto={"Bola de Neve",34,80,0},
  122. tempo=0,
  123. timestamp=os.time(),
  124. width=0,
  125. moedas=0,
  126. balas=maxBalas,
  127. rounds=0,
  128. kills=0,
  129. message=false,
  130. wins=0,
  131. inventory={}
  132. }
  133.  
  134. for i,v in pairs(data) do
  135. if v[1] == name then
  136. players[name] = v[2]
  137. end
  138. end
  139. table.insert(data,{name, players[name]})
  140. tfm.exec.setPlayerScore(name,players[name].moedas,false)
  141. table.insert(players[name].inventory,{"Bola de Neve",34,80,0})
  142. ui.addTextArea(0,"",name,6,310,100,80,nil,0x6a8495,80,true)
  143. ui.addTextArea(1,"<J><B><p align='center'>"..players[name].moedas.."</p></J>",name,6,342,100,20,nil,0x6a8495,90,true)
  144. ui.addTextArea(2,"<J><B><p align='center'>"..players[name].objeto[1].."</p></J>",name,6,310,100,20,nil,0x6a8495,90,true)
  145. ui.addTextArea(3,"<J><B><p align='center'><a href='event:menu'>Menu</a></p></J>",name,6,28,94,20,nil,0x6a8495,80,true)
  146. for i,v in pairs(keys) do
  147. tfm.exec.bindKeyboard(name,v,true)
  148. end
  149. end
  150.  
  151. for all in pairs(tfm.get.room.playerList) do
  152. eventNewPlayer(all)
  153. end
  154.  
  155. function eventLoop(time,remaining)
  156. tempo = time
  157.  
  158. if remaining < 1000 or vivos == 0 then
  159. nextRound()
  160. if vivos == 0 then
  161. tfm.exec.chatMessage("<N>[<CE>Ξ</CE>]</N> <J>Nenhum ratinho venceu, todos morreram.</J>")
  162. else
  163. tfm.exec.chatMessage("<N>[<CE>Ξ</CE>]</N> <J>Nenhum ratinho venceu, o tempo acabou.</J>")
  164. end
  165. end
  166. end
  167.  
  168. function eventPlayerWon(name)
  169. nextRound()
  170. if jogadores >= maxPMoney then
  171. players[name].moedas = players[name].moedas+math.random(10,40);
  172. tfm.exec.setPlayerScore(name,players[name].moedas,false)
  173. ui.addTextArea(1,"<J><B><p align='center'>"..players[name].moedas.."</p></J>",name,6,342,100,20,nil,0x6a8495,90,true)
  174. end
  175.  
  176. if jogadores >= maxPStatus then
  177. players[name].wins = players[name].wins+1;
  178. end
  179.  
  180. tfm.exec.chatMessage("<N>[<CE>Ξ</CE>]</N> <V>"..name.."</V><BL> é o vencedor.</BL>")
  181. end
  182.  
  183. function eventPlayerDied(name)
  184. vivos=vivos-1;
  185. tfm.exec.chatMessage("<N>[<CE>Ξ</CE>]</N> <V>"..name.."</V><BL> morreu.</BL>")
  186. if jogadores >= maxPStatus then
  187. players[name].kills = players[name].kills+1;
  188. end
  189.  
  190. if vivos == 1 and jogadores >= 2 then
  191. for i,v in pairs(tfm.get.room.playerList) do
  192. if not tfm.get.room.playerList[i].isDead then
  193. tfm.exec.giveCheese(i)
  194. tfm.exec.playerVictory(i)
  195. end
  196. end
  197. end
  198. end
  199.  
  200. function eventKeyboard(name,key,down,x,y)
  201. if (key==69 or key==32) and not tfm.get.room.playerList[name].isDead and tempo >= 6000 and players[name].balas > 0 then
  202. if players[name].timestamp < os.time()-300 then
  203. local id
  204. if tfm.get.room.playerList[name].isFacingRight then
  205. id=tfm.exec.addShamanObject(players[name].objeto[2],x+13,y-10,0,players[name].objeto[3],0)
  206. id=tfm.exec.addShamanObject(players[name].objeto[2],x+13,y-10,0,players[name].objeto[3],0)
  207. tfm.exec.displayParticle(players[name].objeto[4],x+13,y-10,players[name].objeto[3])
  208. tfm.exec.displayParticle(players[name].objeto[4],x+13,y-15,players[name].objeto[3])
  209. else
  210. id=tfm.exec.addShamanObject(players[name].objeto[2],x-13,y-10,180,-players[name].objeto[3],0)
  211. id=tfm.exec.addShamanObject(players[name].objeto[2],x-13,y-10,180,-players[name].objeto[3],0)
  212. tfm.exec.displayParticle(players[name].objeto[4],x-13,y-10,-players[name].objeto[3])
  213. tfm.exec.displayParticle(players[name].objeto[4],x-13,y-15,-players[name].objeto[3])
  214. end
  215. players[name].balas = players[name].balas-1;
  216. if players[name].balas < 10 then
  217. ui.addTextArea(6,"<B><J><p align='center'><V>0"..players[name].balas.."</V><N>/</N>"..maxBalas.."</p></J>",name,6,375,100,16,nil,0x6a8495,90,true)
  218. else
  219. ui.addTextArea(6,"<B><J><p align='center'><V>"..players[name].balas.."</V><N>/</N>"..maxBalas.."</p></J>",name,6,375,100,16,nil,0x6a8495,90,true)
  220. end
  221. players[name].timestamp=os.time()
  222. end
  223. end
  224. if (key==69) and players[name].balas == 0 then
  225. if players[name].timestamp < os.time()-3000 then
  226. players[name].balas = maxBalas
  227. players[name].timestamp=os.time()
  228. tfm.exec.chatMessage("<N>[<CE>Ξ</CE>]</N> <J>As munições de "..name.." recarregadas.</J>")
  229. players[name].message = false
  230. if players[name].balas < 10 then
  231. ui.addTextArea(6,"<B><J><p align='center'><V>0"..players[name].balas.."</V><N>/</N>"..maxBalas.."</p></J>",name,6,375,100,16,nil,0x6a8495,90,true)
  232. else
  233. ui.addTextArea(6,"<B><J><p align='center'><V>"..players[name].balas.."</V><N>/</N>"..maxBalas.."</p></J>",name,6,375,100,16,nil,0x6a8495,90,true)
  234. end
  235. players[name].timestamp=os.time()
  236. end
  237. end
  238. end
  239.  
  240. function eventTextAreaCallback(id, player, link)
  241. if link == "loja" then
  242. y = 15
  243. id = 400
  244. table.insert(ids,id)
  245. local title = "<p align='center'><font size='18'><J>Loja</J></font><br>"
  246. ui.addTextArea(9,title,player,150,30,500,350,nil,0x6a8495,70,true)
  247. ui.addTextArea(10,"<a href='event:fechar-loja'><p align='center'><font color='#ff0000'><B>Fechar</B></font></p></a>",player,300,350,300,20,nil,0x6a8495,70,true)
  248. str = "<N><J>Nome</J> | <V>Preço</V> | <ROSE>Botão</ROSE></N><br>"
  249. ui.addTextArea(id,str,player,200,y+45,400,20,nil,0x6a8495,70,true)
  250. for i,v in pairs(shop) do
  251. y=y+33
  252. id=id+1;
  253. table.insert(ids,id)
  254. for i,v2 in pairs(players[player].inventory) do
  255. if v2[1] == v[1] then
  256. str = "<N><J>"..v[1].."</J> | <V>"..v[2].."</V> | <CE>COMPRADO</CE></N><br>"
  257. ui.addTextArea(id,str,player,200,y+45,400,20,nil,0x6a8495,70,true)
  258. else
  259. str = "<N><J>"..v[1].."</J> | <V>"..v[2].."</V> | <ROSE><a href='event:buy-"..v[1].."'>COMPRAR</a></ROSE></N><br>"
  260. ui.addTextArea(id,str,player,200,y+45,400,20,nil,0x6a8495,70,true)
  261. end
  262. end
  263. end
  264. ui.addTextArea(10,"<B><p align='center'><font color='#ff0000'><a href='event:fechar-loja'>Fechar</a></font></p>",player,150,360,500,20,nil,0x6a8495,70,true)
  265. elseif link == "fechar-loja" then
  266. for i,v in pairs({9,10,11,12}) do
  267. ui.removeTextArea(v,player)
  268. ui.removeTextArea(6969+v,player)
  269. ui.removeTextArea(7979+v,player)
  270. end
  271.  
  272. for index,v in pairs(ids) do
  273. ui.removeTextArea(v,player)
  274. ui.removeTextArea(6969+v,player)
  275. ui.removeTextArea(7979+v,player)
  276. end
  277. elseif link == "inventory" then
  278. texto = '<B><p align="center"><font size="18"><J>Inventário</J></font><br>[<V>Nome</V>][<ROSE>Botão</ROSE>]<br>'
  279. for i,v in pairs(players[player].inventory) do
  280. if v[2] == players[player].objeto[2] then
  281. texto = texto..'<br>[<V>'..v[1]..'</V>][<J>Equipado</J>]'
  282. else
  283. texto = texto..'<br>[<V>'..v[1]..'</V>][<ROSE><a href="event:equip-'..v[1]..'">Equipar</a></ROSE>]'
  284. end
  285. end
  286. ui.addTextArea(9,texto,player,300,50,300,300,nil,0x6a8495,70,true)
  287. ui.addTextArea(10,"<a href='event:fechar-loja'><p align='center'><font color='#ff0000'><B>Fechar</B></font></p></a>",player,300,350,300,20,nil,0x6a8495,70,true)
  288. elseif link == "ranking" then
  289. eventRanking(player)
  290. elseif link == "menu" then
  291. ui.addTextArea(18,"",player,6,28,94,200,nil,0x6a8495,80,true)
  292. ui.addTextArea(3,"<V><B><p align='center'><a href='event:menu-close'>Menu</a></p></V>",player,6,28,94,20,nil,0x6a8495,80,true)
  293. ui.addTextArea(20,"<J><B><p align='center'><a href='event:loja'>Loja</a></p></J>",player,12,70,80,20,nil,0x6a8495,80,true)
  294. ui.addTextArea(21,"<J><B><p align='center'><a href='event:inventory'>Inventário</a></p></J>",player,12,105,80,20,nil,0x6a8495,80,true)
  295. ui.addTextArea(22,"<J><B><p align='center'><a href='event:ranking'>Ranking</a></p></J>",player,12,140,80,20,nil,0x6a8495,80,true)
  296. ui.addTextArea(49,"<J><B><p align='center'><a href='event:perfil'>Perfil</a></p></J>",player,12,175,80,20,nil,0x6a8495,80,true)
  297. elseif link == "menu-close" then
  298. for i,v in pairs({3,18,20,21,22,49}) do
  299. ui.removeTextArea(v,player)
  300. ui.removeTextArea(6969+v,player)
  301. ui.removeTextArea(7979+v,player)
  302. end
  303. ui.addTextArea(3,"<J><B><p align='center'><a href='event:menu'>Menu</a></p></J>",name,6,28,94,20,nil,0x6a8495,80,true)
  304. elseif link == "ranking-close" then
  305. ui.removeTextArea(44,player)
  306. ui.removeTextArea(6969+44,player)
  307. ui.removeTextArea(7979+44,player)
  308. ui.removeTextArea(45,player)
  309. ui.removeTextArea(6969+45,player)
  310. ui.removeTextArea(7979+45,player)
  311. for index,v in pairs(ids) do
  312. ui.removeTextArea(v,player)
  313. ui.removeTextArea(6969+v,player)
  314. ui.removeTextArea(7979+v,player)
  315. end
  316. id = 50
  317. elseif link == "perfilClose" then
  318. ui.removeTextArea(35,player)
  319. ui.removeTextArea(36,player)
  320. ui.removeTextArea(6969+35,player)
  321. ui.removeTextArea(7979+35,player)
  322. ui.removeTextArea(6969+36,player)
  323. ui.removeTextArea(7979+36,player)
  324. elseif link == "perfil" then
  325. eventChatCommand(player, "p")
  326. end
  327.  
  328. for i,v in pairs(shop) do
  329. if link == "buy-"..v[1] then
  330. ui.addPopup(0,1,"<p align='center'>Você deseja mesmo comprar "..v[1].." ?",player,155,150,490,true)
  331. players[player].itemId = v[3]
  332. end
  333. end
  334.  
  335. for i,v in pairs(players[player].inventory) do
  336. if link == "equip-"..v[1] then
  337. players[player].objeto = {v[1],v[2],v[3],v[4]}
  338. ui.addTextArea(9,"<J><B><p align='center'>Você equipou a(o) "..v[1].." para atirar.</p></B></J>",player,300,50,300,300,nil,0x6a8495,70,true)
  339. ui.addTextArea(10,"<a href='event:inventory'><p align='center'><font color='#ffcc00'><B>Voltar</B></font></p></a>",player,300,350,300,20,nil,0x6a8495,70,true)
  340. ui.addTextArea(2,"<J><B><p align='center'>"..players[player].objeto[1].."</p></J>",player,6,310,100,20,nil,0x6a8495,90,true)
  341. end
  342. end
  343. end
  344.  
  345.  
  346. function eventRanking(name)
  347. local sc = {}
  348. for name, player in pairs(tfm.get.room.playerList) do
  349. sc[#sc+1] = {n=name,s=player.score,m=players[name].moedas,w=players[name].wins,k=players[name].kills}
  350. end
  351. table.sort(sc,function(a,b) return a.w>b.w end)
  352. y = 15
  353. id = 50
  354. local str = ""
  355. local title = "<p align='center'><font size='18'><J>Ranking</J></font><br>"
  356. ui.addTextArea(44,title,name,150,30,500,350,nil,0x6a8495,70,true)
  357. for k,v in pairs(sc) do
  358. if k < 11 then
  359. id = id+1;
  360. table.insert(ids, id)
  361. y = y+33
  362. str = "<N><J>"..k.."</J>. | <V>"..v.n.."</V> | Rodadas: <V>"..players[v.n].rounds.."</V> | Moedas: <V>"..v.m.."</V> | Vitórias: <V>"..v.w.."</V> | Mortes: <V>"..v.k.."</V></N><br>"
  363. if id < 60 then
  364. ui.addTextArea(id,str,name,170,y+40,460,20,nil,0x6a8495,70,true)
  365. end
  366. end
  367. end
  368. ui.addTextArea(45,"<B><p align='center'><font color='#ff0000'><a href='event:ranking-close'>Fechar</a></font></p>",name,150,360,500,20,nil,0x6a8495,70,true)
  369. return str
  370. end
  371.  
  372. function eventPopupAnswer(id, name, answer)
  373. if id == 0 and answer == "yes" then
  374. for i,v in pairs(shop) do
  375. if players[name].itemId == v[3] then
  376. if players[name].moedas >= v[2] then
  377. ui.addPopup(0,3,"<p align='center'>O item "..v[1].." foi comprado com sucesso.",name,155,150,490,true)
  378. table.insert(players[name].inventory, {v[1],v[3],v[4],v[5]})
  379. players[name].moedas = players[name].moedas-v[2]
  380. ui.addTextArea(1,"<J><B><p align='center'>"..players[name].moedas.."</p></J>",name,6,342,100,20,nil,0x6a8495,90,true)
  381. tfm.exec.setPlayerScore(name,players[name].moedas,false)
  382.  
  383. else
  384. ui.addPopup(0,3,"<p align='center'>Moedas insuficientes, é necessário "..math.floor(v[2]-players[name].moedas).." moedas.",name,155,150,490,true)
  385. end
  386. end
  387. end
  388. end
  389. end
  390.  
  391. tfm.exec.setRoomMaxPlayers(maxPRoom)
  392. nextRound()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement