Advertisement
Dudugz-Contistente

Untitled

Dec 3rd, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.44 KB | None | 0 0
  1. keys={69,32,27,81}
  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 ({"• <V>[Guerra]</V> <CE>Bem-vindo %s ao #wars versão 5.0</CE>","• <V>[Guerra]</V> <J>Para atirar pressione a tecla E ou Espaço, O ultimo vivo ganha.</J>","• <V>[Guerra]</V> <VP>Se as munições acabar espere um tempo e depois aperte Q para recarregar.","• <V>[Guerra]</V> <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("• <V>[Guerra]</V> <J>Nenhum ratinho venceu, todos morreram.</J>")
  162. else
  163. tfm.exec.chatMessage("• <V>[Guerra]</V> <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("• <V>[Guerra]</V> <VP>"..name.."</VP><BL> é o vencedor.</BL>")
  181. end
  182.  
  183. function eventPlayerDied(name)
  184. vivos=vivos-1;
  185. tfm.exec.chatMessage("• <V>[Guerra]</V> <VP>"..name.."</VP><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.  
  217. if players[name].balas == 0 then
  218. tfm.exec.chatMessage("• <V>[Guerra]</V> <J>As munições de "..name.." acabaram.</J>")
  219. end
  220.  
  221. if players[name].balas < 10 then
  222. 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)
  223. else
  224. 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)
  225. end
  226. players[name].timestamp=os.time()
  227. end
  228. end
  229. if (key==81) and players[name].balas == 0 then
  230. if players[name].timestamp < os.time()-3000 then
  231. players[name].balas = maxBalas
  232. players[name].timestamp=os.time()
  233. tfm.exec.chatMessage("• <V>[Guerra]</V> <J>As munições de "..name.." foram recarregadas.</J>")
  234. players[name].message = false
  235. if players[name].balas < 10 then
  236. 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)
  237. else
  238. 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)
  239. end
  240. players[name].timestamp=os.time()
  241. end
  242. end
  243. end
  244.  
  245. function eventTextAreaCallback(id, player, link)
  246. if link == "loja" then
  247. y = 15
  248. id = 400
  249. table.insert(ids,id)
  250. local title = "<p align='center'><font size='18'><J>Loja</J></font><br>"
  251. ui.addTextArea(9,title,player,150,30,500,350,nil,0x6a8495,70,true)
  252. 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)
  253. str = "<N><J>Nome</J> | <V>Preço</V> | <ROSE>Botão</ROSE></N><br>"
  254. ui.addTextArea(id,str,player,200,y+45,400,20,nil,0x6a8495,70,true)
  255. for i,v in pairs(shop) do
  256. y=y+33
  257. id=id+1;
  258. table.insert(ids,id)
  259. for i,v2 in pairs(players[player].inventory) do
  260. if v2[1] == v[1] then
  261. str = "<N><J>"..v[1].."</J> | <V>"..v[2].."</V> | <CE>COMPRADO</CE></N><br>"
  262. ui.addTextArea(id,str,player,200,y+45,400,20,nil,0x6a8495,70,true)
  263. else
  264. str = "<N><J>"..v[1].."</J> | <V>"..v[2].."</V> | <ROSE><a href='event:buy-"..v[1].."'>COMPRAR</a></ROSE></N><br>"
  265. ui.addTextArea(id,str,player,200,y+45,400,20,nil,0x6a8495,70,true)
  266. end
  267. end
  268. end
  269. 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)
  270. elseif link == "fechar-loja" then
  271. for i,v in pairs({9,10,11,12}) do
  272. ui.removeTextArea(v,player)
  273. ui.removeTextArea(6969+v,player)
  274. ui.removeTextArea(7979+v,player)
  275. end
  276.  
  277. for index,v in pairs(ids) do
  278. ui.removeTextArea(v,player)
  279. ui.removeTextArea(6969+v,player)
  280. ui.removeTextArea(7979+v,player)
  281. end
  282. elseif link == "inventory" then
  283. texto = '<B><p align="center"><font size="18"><J>Inventário</J></font><br>[<V>Nome</V>][<ROSE>Botão</ROSE>]<br>'
  284. for i,v in pairs(players[player].inventory) do
  285. if v[2] == players[player].objeto[2] then
  286. texto = texto..'<br>[<V>'..v[1]..'</V>][<J>Equipado</J>]'
  287. else
  288. texto = texto..'<br>[<V>'..v[1]..'</V>][<ROSE><a href="event:equip-'..v[1]..'">Equipar</a></ROSE>]'
  289. end
  290. end
  291. ui.addTextArea(9,texto,player,300,50,300,300,nil,0x6a8495,70,true)
  292. 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)
  293. elseif link == "ranking" then
  294. eventRanking(player)
  295. elseif link == "menu" then
  296. ui.addTextArea(18,"",player,6,28,94,200,nil,0x6a8495,80,true)
  297. 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)
  298. 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)
  299. 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)
  300. 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)
  301. 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)
  302. elseif link == "menu-close" then
  303. for i,v in pairs({3,18,20,21,22,49}) do
  304. ui.removeTextArea(v,player)
  305. ui.removeTextArea(6969+v,player)
  306. ui.removeTextArea(7979+v,player)
  307. end
  308. 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)
  309. elseif link == "ranking-close" then
  310. ui.removeTextArea(44,player)
  311. ui.removeTextArea(6969+44,player)
  312. ui.removeTextArea(7979+44,player)
  313. ui.removeTextArea(45,player)
  314. ui.removeTextArea(6969+45,player)
  315. ui.removeTextArea(7979+45,player)
  316. for index,v in pairs(ids) do
  317. ui.removeTextArea(v,player)
  318. ui.removeTextArea(6969+v,player)
  319. ui.removeTextArea(7979+v,player)
  320. end
  321. id = 50
  322. elseif link == "perfilClose" then
  323. ui.removeTextArea(35,player)
  324. ui.removeTextArea(36,player)
  325. ui.removeTextArea(6969+35,player)
  326. ui.removeTextArea(7979+35,player)
  327. ui.removeTextArea(6969+36,player)
  328. ui.removeTextArea(7979+36,player)
  329. elseif link == "perfil" then
  330. eventChatCommand(player, "p")
  331. end
  332.  
  333. for i,v in pairs(shop) do
  334. if link == "buy-"..v[1] then
  335. ui.addPopup(0,1,"<p align='center'>Você deseja mesmo comprar "..v[1].." ?",player,155,150,490,true)
  336. players[player].itemId = v[3]
  337. end
  338. end
  339.  
  340. for i,v in pairs(players[player].inventory) do
  341. if link == "equip-"..v[1] then
  342. players[player].objeto = {v[1],v[2],v[3],v[4]}
  343. 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)
  344. 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)
  345. ui.addTextArea(2,"<J><B><p align='center'>"..players[player].objeto[1].."</p></J>",player,6,310,100,20,nil,0x6a8495,90,true)
  346. end
  347. end
  348. end
  349.  
  350.  
  351. function eventRanking(name)
  352. local sc = {}
  353. for name, player in pairs(tfm.get.room.playerList) do
  354. sc[#sc+1] = {n=name,s=player.score,m=players[name].moedas,w=players[name].wins,k=players[name].kills}
  355. end
  356. table.sort(sc,function(a,b) return a.w>b.w end)
  357. y = 15
  358. id = 50
  359. local str = ""
  360. local title = "<p align='center'><font size='18'><J>Ranking</J></font><br>"
  361. ui.addTextArea(44,title,name,150,30,500,350,nil,0x6a8495,70,true)
  362. for k,v in pairs(sc) do
  363. if k < 11 then
  364. id = id+1;
  365. table.insert(ids, id)
  366. y = y+33
  367. 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>"
  368. if id < 60 then
  369. ui.addTextArea(id,str,name,170,y+40,460,20,nil,0x6a8495,70,true)
  370. end
  371. end
  372. end
  373. 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)
  374. return str
  375. end
  376.  
  377. function eventPopupAnswer(id, name, answer)
  378. if id == 0 and answer == "yes" then
  379. for i,v in pairs(shop) do
  380. if players[name].itemId == v[3] then
  381. if players[name].moedas >= v[2] then
  382. ui.addPopup(0,3,"<p align='center'>O item "..v[1].." foi comprado com sucesso.",name,155,150,490,true)
  383. table.insert(players[name].inventory, {v[1],v[3],v[4],v[5]})
  384. players[name].moedas = players[name].moedas-v[2]
  385. ui.addTextArea(1,"<J><B><p align='center'>"..players[name].moedas.."</p></J>",name,6,342,100,20,nil,0x6a8495,90,true)
  386. tfm.exec.setPlayerScore(name,players[name].moedas,false)
  387.  
  388. else
  389. ui.addPopup(0,3,"<p align='center'>Moedas insuficientes, é necessário "..math.floor(v[2]-players[name].moedas).." moedas.",name,155,150,490,true)
  390. end
  391. end
  392. end
  393. end
  394. end
  395.  
  396. tfm.exec.setRoomMaxPlayers(maxPRoom)
  397. nextRound()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement