Advertisement
Dudugz-Contistente

Untitled

May 6th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.50 KB | None | 0 0
  1. tribos={
  2. owners={},
  3. tribes={},
  4. }
  5.  
  6. player={}
  7.  
  8. tfm.exec.disableAutoNewGame()
  9.  
  10. textarea=ui.addTextArea function ui.addTextArea(id,text,targetPlayer,x,y,width,height,backgroundColor,borderColor,backgroundAlpha,emboss,active) if active then textarea(6969+id,"",targetPlayer,x,y+1,width,height,0x000001,0x000001,backgroundAlpha,emboss) textarea(7979+id,"",targetPlayer,x,y-1,width,height,backgroundColor,borderColor,backgroundAlpha,emboss) end textarea(id,text,targetPlayer,x,y,width,height,backgroundColor,borderColor,backgroundAlpha,emboss) end
  11.  
  12. function split(t,s)
  13. local a={}
  14. for i,v in string.gmatch(t,string.format("[^%s]+",s or "%s")) do
  15. table.insert(a,i)
  16. end
  17. return a
  18. end
  19.  
  20. function eventChatCommand(name,cmd)
  21. arg=split(cmd," ")
  22. haveTribe=false
  23.  
  24. for i,v in pairs(tribos.owners) do
  25. if tribos.tribes[v] then
  26. for id,nome in pairs (tribos.tribes[v].members) do
  27. if name == nome then
  28. haveTribe=true
  29. owner=v
  30. end
  31. end
  32. end
  33. end
  34.  
  35. if cmd:sub(1,1) == "t" and cmd:sub(3) and haveTribe then
  36. eventPopupAnswer(14,name,cmd:sub(3))
  37. end
  38. end
  39.  
  40. function eventPopupAnswer(id,name,answer)
  41. if id == 14 and answer ~= "" and not answer:find("<->") and not answer:find("</->") then
  42. if #answer <= 46 then
  43. for i,v in pairs(tribos.owners) do
  44. if tribos.tribes[v] then
  45. for id,nome in pairs (tribos.tribes[v].members) do
  46. if name == nome then
  47. haveTribe=true
  48. owner=v
  49. end
  50. end
  51. end
  52. end
  53.  
  54. table.insert(tribos.tribes[owner].chat,{name=name,msg=answer,time=os.time()})
  55.  
  56. for id,nome in pairs (tribos.tribes[owner].members) do
  57. if player[nome].openChat then
  58. eventTextAreaCallback(nil,nome,"chat")
  59. end
  60. end
  61. else
  62. ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>Você não mandar uma mensagem com mais de 46 caracteres.", name, 200, 160, 405, true)
  63. end
  64. end
  65.  
  66. if id == 12 and answer ~= "" and #answer > 4 then
  67. for i,v in pairs(tribos.owners) do
  68. if tribos.tribes[v] then
  69. for id,nome in pairs (tribos.tribes[v].members) do
  70. if name == nome then
  71. haveTribe=true
  72. owner=v
  73. end
  74. end
  75. end
  76. end
  77.  
  78. tribos.tribes[owner].message=answer
  79.  
  80. for id,nome in pairs (tribos.tribes[owner].members) do
  81. if player[nome].openTribe then
  82. eventTextAreaCallback(nil,nome,"updateMessage")
  83. end
  84.  
  85. ui.addPopup(2, 0, "<p align='center'>"..name.." alterou a mensagem da tribo.", nome, 200, 160, 405, true)
  86. end
  87.  
  88. end
  89.  
  90. if id == 7 then
  91. if answer == "yes" then
  92. for i,v in pairs(tribos.owners) do
  93. if tribos.tribes[v] then
  94. for id,nome in pairs (tribos.tribes[v].members) do
  95. if name == nome then
  96. owner=v
  97. playerID=id
  98. end
  99. end
  100. end
  101. end
  102.  
  103. table.remove(tribos.tribes[owner].members,playerID)
  104. eventTextAreaCallback(nil,name,"close_tribe")
  105.  
  106. for id,nome in pairs (tribos.tribes[owner].members) do
  107. eventTextAreaCallback(nil,nome,"updateMembers")
  108. ui.addPopup(2, 0, "<p align='center'>"..name.." saiu da tribo.", nome, 200, 160, 405, true)
  109. end
  110.  
  111. ui.addPopup(2, 0, "<p align='center'>Você saiu da tribo.", name, 200, 160, 405, true)
  112.  
  113. if #tribos.tribes[owner].members == 0 then
  114. tribos.tribes[owner]=nil
  115. ui.addPopup(2, 0, "<p align='center'>Sua tribo foi extinguida.", name, 200, 160, 405, true)
  116. end
  117. end
  118. end
  119.  
  120. if id == 0 and answer ~= "" and #answer > 3 and #answer <= 27 then
  121. cancel=false
  122. for _,v in pairs({"<",">","/>","</"}) do
  123. if answer:find(tostring(v)) then
  124. cancel=true
  125. end
  126. end
  127.  
  128. if not cancel then
  129. tribos.tribes[name]={
  130. name=answer:lower():gsub('%a', string.upper, 1),
  131. members={},
  132. message="Bem vindo(a) à tribo "..answer:lower():gsub('%a', string.upper, 1).."!<BR>Tribo criada por <B>"..name.."</B>.",
  133. chat={},
  134. }
  135.  
  136. table.insert(tribos.owners,name)
  137. table.insert(tribos.tribes[name].members,name)
  138.  
  139. eventTextAreaCallback(nil,name,"tribo")
  140. ui.addPopup(2, 0, "<p align='center'><font color=\"#FFFFFF\">A tribo<font color=\"#3df405\"> "..answer.."<font color=\"#FFFFFF\"> foi criada com sucesso", name, 200, 160, 405, true)
  141. else
  142. ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>Você não pode usar tags no nome da tribo.", name, 200, 160, 405, true)
  143. end
  144. elseif id == 0 then
  145. if #answer > 27 then messageError = "Sua tribo não pode ter um nome maior que 27 caracteres." elseif answer == "" then messageError = "Você não pode criar tribo sem nome." elseif #answer < 4 then messageError = "O nome de sua tribo deve ter no mínimo 4 letras." end
  146. ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>"..messageError, name, 200, 160, 405, true)
  147. end
  148.  
  149. if id == 4 then
  150. if answer == "yes" then
  151. owner=player[name].ownerTribe
  152. for i,v in pairs(tribos.owners) do
  153. if tribos.tribes[v] then
  154. for id,nome in pairs (tribos.tribes[v].members) do
  155. if owner == nome then
  156. owner=v
  157. playerID=id
  158. end
  159. end
  160. end
  161. end
  162.  
  163. table.insert(tribos.tribes[owner].members,name)
  164. eventTextAreaCallback(nil,name,"tribo")
  165. for id,nome in pairs (tribos.tribes[owner].members) do
  166. if player[nome].openTribe then
  167. eventTextAreaCallback(nil,nome,"updateMembers")
  168. end
  169. end
  170.  
  171. ui.addPopup(2, 0, "<p align='center'>"..name.." aceitou o convite.", owner, 200, 160, 405, true)
  172. player[name].ownerTribe=""
  173. elseif id == 4 then
  174. owner=player[name].ownerTribe
  175. ui.addPopup(2, 0, "<p align='center'>"..name.." recusou o convite.", owner, 200, 160, 405, true)
  176. player[name].ownerTribe=""
  177. end
  178. end
  179.  
  180. if id == 1 and answer ~= "" and #answer >= 3 then
  181. answer=answer:lower():gsub('%a', string.upper, 1)
  182. if tfm.get.room.playerList[answer] then
  183. cancel=false
  184. for i,v in pairs(tribos.owners) do
  185. if tribos.tribes[v] then
  186. for id,nome in pairs (tribos.tribes[v].members) do
  187. if name == nome then
  188. owner=v
  189. end
  190.  
  191. if nome == answer then
  192. cancel=true
  193. end
  194. end
  195. end
  196. end
  197.  
  198. if cancel then
  199. ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>"..answer.." já tem tribo.", name, 200, 160, 405, true)
  200. else
  201. player[answer].ownerTribe = name
  202. ui.addPopup(2, 0, "<p align='center'>Solicitação enviada.", name, 200, 160, 405, true)
  203. ui.addPopup(4, 1, "<font color=\"#3df405\">"..name.." <font color=\"#FFFFFF\"> convida você para fazer parte da tribo <font color='#3df405'>'"..tribos.tribes[owner].name.."'</font>, você aceita?", answer, 200, 160, 405, true)
  204. end
  205. else
  206. ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>O jogador "..answer.." não existe.", name, 200, 160, 405, true)
  207. end
  208. end
  209. end
  210.  
  211. function eventTextAreaCallback(id,name,link)
  212. if link == "close_tribe" then
  213. for i=1,13 do
  214. ui.removeTextArea(i,name) ui.removeTextArea(6969+i,name) ui.removeTextArea(7979+i,name)
  215. end
  216.  
  217. player[name].openTribe=false
  218. player[name].openChat=false
  219. end
  220.  
  221. if link == "leave_tribe" then
  222. ui.addPopup(7, 1, "<p align='center'>Você realmente deseja sair da tribo?", name, 200, 160, 405, true)
  223. end
  224.  
  225. if link == "recrutar" then
  226. ui.addPopup(1, 2, "<p align='center'>Nome do jogador:", name, 200, 160, 405, true)
  227. end
  228.  
  229. if link == "back" and player[name].pageSelected > 1 then
  230. player[name].pageSelected=player[name].pageSelected-1
  231. player[name].backornext=true
  232.  
  233. if not player[name].openChat then
  234. eventTextAreaCallback(nil,name,"tribo")
  235. else
  236. eventTextAreaCallback(nil,name,"chat")
  237. end
  238. end
  239.  
  240. if link == "next" and player[name].pageSelected < player[name].pageLimit then
  241. player[name].pageSelected=player[name].pageSelected+1
  242. player[name].backornext=true
  243.  
  244. if not player[name].openChat then
  245. eventTextAreaCallback(nil,name,"tribo")
  246. else
  247. eventTextAreaCallback(nil,name,"chat")
  248. end
  249. end
  250.  
  251. if link == "option" then
  252. for i=6,9 do
  253. ui.removeTextArea(i,name) ui.removeTextArea(6969+i,name) ui.removeTextArea(7979+i,name)
  254. end
  255. ui.addTextArea(5, "", name, 365, 115, 240, 210, 0x243b4d, 0x243b4d, nil, true, true)
  256. ui.addTextArea(6, "<font size='12'><B><p align='center'><a href='event:tribo'>Voltar", name, 365, 342, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
  257. ui.addTextArea(7, "<font size='12'><B><a href='event:recrutar'>Recrutar Jogador</a>", name, 367, 116, 236, 20, 0x334a5c, 0x334a5c, nil, true)
  258. ui.addTextArea(8, "<font size='12'><B><a href='event:leave_tribe'>Sair da Tribo</a>", name, 367, 148, 236, 20, 0x334a5c, 0x334a5c, nil, true)
  259. end
  260.  
  261. if link == "send-message" then
  262. ui.addPopup(2, 0, "<p align='center'>Usar <B>!t mensagem</B> é mais prático.", name, 200, 160, 405, true)
  263. end
  264.  
  265. if link == "showMembers" then
  266. if player[name].membersON then
  267. player[name].membersON=false
  268. player[name].showMembers="Mostrar membros em sala"
  269. elseif not player[name].membersON then
  270. player[name].membersON=true
  271. player[name].showMembers="Mostrar membros fora da sala"
  272. end
  273.  
  274. eventTextAreaCallback(nil,name,"tribo")
  275. end
  276.  
  277. if link == "chat" then
  278. for i=3,9 do
  279. ui.removeTextArea(i,name) ui.removeTextArea(6969+i,name) ui.removeTextArea(7979+i,name)
  280. end
  281.  
  282. player[name].openChat=true
  283. player[name].openTribe=false
  284.  
  285. sel=1
  286. pages[sel]=""
  287. limit=14
  288.  
  289. for i,v in pairs(tribos.owners) do
  290. if tribos.tribes[v] then
  291. for id,nome in pairs (tribos.tribes[v].members) do
  292. if name == nome then
  293. owner=v
  294. end
  295. end
  296. end
  297. end
  298.  
  299. if #tribos.tribes[owner].chat == 256 then
  300. for i,nome in pairs(tribos.tribes[owner].members) do
  301. ui.addPopup(2, 0, string.format("Olá %s foi apagado 156 mensagens do chat da tribo, por que o limite de mensagens é de 256 mensagens e já foi atingido este limite.",nome), nome, 200, 160, 405, true)
  302. end
  303.  
  304. for i=1,156 do table.remove(tribos.tribes[owner].chat,i) end
  305. end
  306.  
  307. if #tribos.tribes[owner].chat ~= 0 then
  308. messages=""
  309. for i,v in pairs(tribos.owners) do
  310. if tribos.tribes[v] then
  311. for id,nome in pairs (tribos.tribes[v].members) do
  312. if name == nome then
  313. owner=v
  314. end
  315. end
  316. end
  317. end
  318.  
  319. table.sort(tribos.tribes[owner].chat,function(a,b) return a.time<b.time end)
  320.  
  321. for i,v in pairs(tribos.tribes[owner].chat) do
  322. if owner == v.name then
  323. simbol="☆"
  324. else
  325. simbol="≡"
  326. end
  327.  
  328. if pages[sel] ~= "" then
  329. pages[sel]=pages[sel].."<br><PT>["..simbol.."][<a href='event:'>"..v.name.."</a>]</PT> <T>"..v.msg.."</T>"
  330. else
  331. pages[sel]="<PT>["..simbol.."][<a href='event:'>"..v.name.."</a>]</PT> <T>"..v.msg.."</T>"
  332. end
  333.  
  334. if i == limit then
  335. sel=sel+1;
  336. pages[sel]=""
  337. limit=limit+14
  338. end
  339. end
  340. end
  341.  
  342. player[name].pageLimit=sel
  343.  
  344. if not player[name].backornext then
  345. player[name].pageSelected=sel
  346. else
  347. player[name].backornext=false
  348. end
  349. if pages[player[name].pageSelected] == "" then
  350. pages[player[name].pageSelected]="Não há mensagens :/"
  351. end
  352.  
  353. ui.addTextArea(5, "", name, 197, 115, 410, 210, 0x243b4d, 0x243b4d, nil, true, true)
  354. ui.addTextArea(6, pages[player[name].pageSelected], name, 197, 110, 413, 210, 0, 0, 0, true)
  355. ui.addTextArea(7, "<p align='center'><font size='12'> <a href='event:back'>«</a> "..player[name].pageSelected.."/"..sel.." <a href='event:next'>»</a>", name, 198, 308, 408, 16, 0x334a5c, 0x334a5c, 90, true)
  356. ui.addTextArea(8, "<font size='12'><B><p align='center'><a href='event:tribo'>Voltar", name, 385, 342, 220, 20, 0x243b4d, 0x243b4d, nil, true, true)
  357. ui.addTextArea(9, "<font size='12'><B><p align='center'><a href='event:send-message'>Enviar Mensagem", name, 197, 342, 170, 20, 0x243b4d, 0x243b4d, nil, true, true)
  358. end
  359.  
  360. if link == "modifiy-message" then
  361. ui.addPopup(12, 2, "<p align='center'>Nova mensagem da tribo:", name, 200, 160, 405, true)
  362. end
  363.  
  364. if link == "updateMessage" and player[name].openTribe then
  365. for i,v in pairs(tribos.owners) do
  366. if tribos.tribes[v] then
  367. for id,nome in pairs (tribos.tribes[v].members) do
  368. if name == nome then
  369. haveTribe=true
  370. owner=v
  371. end
  372. end
  373. end
  374. end
  375.  
  376. ui.addTextArea(5, tribos.tribes[owner].message, name, 365, 115, 240, 110, 0x243b4d, 0x243b4d, nil, true, true)
  377. end
  378.  
  379. if link == "updateMembers" and player[name].openTribe then
  380. haveTribe=false
  381. for i,v in pairs(tribos.owners) do
  382. if tribos.tribes[v] then
  383. for id,nome in pairs (tribos.tribes[v].members) do
  384. if name == nome then
  385. haveTribe=true
  386. owner=v
  387. end
  388. end
  389. end
  390. end
  391.  
  392. if haveTribe then
  393. pages={}
  394. sel=1
  395. pages[sel]=""
  396.  
  397. limit=12
  398.  
  399. if tribos.tribes[owner] then
  400. for id,nome in pairs (tribos.tribes[owner].members) do
  401. if nome == owner then
  402. simbol="<a href='event:'>☆</a> "..nome
  403. else
  404. simbol="<a href='event:'>≡</a> "..nome
  405. end
  406.  
  407. if player[name].membersON then
  408. if player[nome].inRoom then
  409. if pages[sel] ~= "" then
  410. pages[sel]=pages[sel].."<br>"..simbol
  411. else
  412. pages[sel]=simbol
  413. end
  414. end
  415. elseif not player[name].membersON then
  416. if not player[nome].inRoom then
  417. if pages[sel] ~= "" then
  418. pages[sel]=pages[sel].."<br>"..simbol
  419. else
  420. pages[sel]=simbol
  421. end
  422. end
  423. end
  424.  
  425. if id == limit then
  426. sel=sel+1;
  427. pages[sel]=""
  428. limit=limit+12
  429. end
  430. end
  431. end
  432.  
  433. if #pages == 0 then
  434. table.insert(pages,str)
  435. end
  436.  
  437. player[name].pageLimit=sel
  438. player[name].openTribe=true
  439. player[name].pageSelected=sel
  440.  
  441. ui.addTextArea(3, "<font size='16'>"..pages[player[name].pageSelected], name, 197, 115, 150, 248, 0x243b4d, 0x243b4d, nil, true, true)
  442. ui.addTextArea(4, "<font size='12'> <a href='event:back'>«</a> "..player[name].pageSelected.."/"..sel.." <a href='event:next'>»</a>", name, 198, 346, 148, 16, 0x334a5c, 0x334a5c, nil, true)
  443. end
  444. end
  445.  
  446. if link == "tribo" then
  447. player[name].openChat=false
  448. for i=10,13 do ui.removeTextArea(i,name) end
  449. haveTribe=false
  450. for i,v in pairs(tribos.owners) do
  451. if tribos.tribes[v] then
  452. for id,nome in pairs (tribos.tribes[v].members) do
  453. if name == nome then
  454. haveTribe=true
  455. owner=v
  456. end
  457. end
  458. end
  459. end
  460.  
  461. if haveTribe then
  462. ui.addTextArea(1, "", name, 193, 66, 417, 300, nil, 0x324645, nil, true,true)
  463. ui.addTextArea(2, "<p align='center'><font size='20'><CEP>"..tribos.tribes[owner].name, name, 195, 68, 415, 31, 0x243b4d, 0x243b4d, nil, true,true)
  464. pages={}
  465. sel=1
  466. pages[sel]=""
  467.  
  468. limit=12
  469.  
  470. if tribos.tribes[owner] then
  471. for id,nome in pairs (tribos.tribes[owner].members) do
  472. if nome == owner then
  473. simbol="<a href='event:'>☆</a> "..nome
  474. else
  475. simbol="<a href='event:'>≡</a> "..nome
  476. end
  477.  
  478. if player[name].membersON then
  479. if player[nome].inRoom then
  480. if pages[sel] ~= "" then
  481. pages[sel]=pages[sel].."<br>"..simbol
  482. else
  483. pages[sel]=simbol
  484. end
  485. end
  486. elseif not player[name].membersON then
  487. if not player[nome].inRoom then
  488. if pages[sel] ~= "" then
  489. pages[sel]=pages[sel].."<br>"..simbol
  490. else
  491. pages[sel]=simbol
  492. end
  493. end
  494. end
  495.  
  496. if id == limit then
  497. sel=sel+1;
  498. pages[sel]=""
  499. limit=limit+12
  500. end
  501. end
  502. end
  503.  
  504. if #pages == 0 then
  505. table.insert(pages,str)
  506. end
  507.  
  508. player[name].pageLimit=sel
  509. player[name].openTribe=true
  510. player[name].pageSelected=sel
  511.  
  512. ui.addTextArea(3, "<font size='16'>"..pages[player[name].pageSelected], name, 197, 115, 150, 248, 0x243b4d, 0x243b4d, nil, true, true)
  513. ui.addTextArea(4, "<font size='12'> <a href='event:back'>«</a> "..player[name].pageSelected.."/"..sel.." <a href='event:next'>»</a>", name, 198, 346, 148, 16, 0x334a5c, 0x334a5c, nil, true)
  514. ui.addTextArea(5, tribos.tribes[owner].message, name, 365, 115, 240, 110, 0x243b4d, 0x243b4d, nil, true, true)
  515. ui.addTextArea(6, "<font size='12'><B><p align='center'><a href='event:modifiy-message'>Modificar mensagem da tribo", name, 365, 239, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
  516. ui.addTextArea(7, "<font size='12'><B><p align='center'><a href='event:chat'>Abrir chat da tribo", name, 365, 274, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
  517. ui.addTextArea(8, "<font size='12'><B><p align='center'><a href='event:option'>Opções", name, 365, 308, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
  518. ui.addTextArea(9, "<font size='12'><B><p align='center'><a href='event:showMembers'>"..player[name].showMembers, name, 365, 342, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
  519. ui.addTextArea(10, "<font size='20'><B><p align='center'><a href='event:close_tribe'><R>X", name, 573, 68, 42, 33, 0x324650, 0x000000, 0, true)
  520.  
  521. else
  522. ui.addPopup(0, 2, "<p align='center'>Nome da sua nova tribo:", name, 200, 160, 405, true)
  523. end
  524. end
  525. end
  526.  
  527. function eventPlayerLeft(name)
  528. player[name].inRoom=false
  529. haveTribe=false
  530. for i,v in pairs(tribos.owners) do
  531. if tribos.tribes[v] then
  532. for id,nome in pairs (tribos.tribes[v].members) do
  533. if name == nome then
  534. haveTribe=true
  535. owner=v
  536. end
  537. end
  538. end
  539. end
  540.  
  541. if haveTribe then
  542. for id,nome in pairs (tribos.tribes[owner].members) do
  543. if player[nome].openTribe then
  544. eventTextAreaCallback(nil,nome,"updateMembers")
  545. end
  546. end
  547. end
  548. end
  549.  
  550. function eventNewPlayer(name)
  551. player[name]={
  552. pageSelected=1,
  553. ownerTribe="",
  554. pageLimit=1,
  555. inRoom=true,
  556. openTribe=false,
  557. membersON=true,
  558. backornext=false,
  559. showMembers="Mostrar membros fora da sala"
  560. }
  561.  
  562. haveTribe=false
  563.  
  564. for i,v in pairs(tribos.owners) do
  565. if tribos.tribes[v] then
  566. for id,nome in pairs (tribos.tribes[v].members) do
  567. if name == nome then
  568. haveTribe=true
  569. owner=v
  570. end
  571. end
  572. end
  573. end
  574.  
  575. if haveTribe then
  576. for id,nome in pairs (tribos.tribes[owner].members) do
  577. if player[nome].openTribe then
  578. eventTextAreaCallback(nil,nome,"updateMembers")
  579. end
  580. end
  581. end
  582.  
  583. ui.addTextArea(0, "<B><p align='center'><a href='event:tribo'><br><br><br><br>", name, 0, 365, 40, 40, 0, 0, 0, true)
  584. end
  585.  
  586. for all in pairs(tfm.get.room.playerList) do
  587. eventNewPlayer(all)
  588. end
  589.  
  590. system.disableChatCommandDisplay("t", true)
  591. system.disableChatCommandDisplay("T", true)
  592.  
  593. tfm.exec.newGame('<C><P D="x_tribulle2/maison-tribu.png,0,360" /><Z><S><S X="400" L="800" Y="407" H="10" P="0,0,0.3,0.2,0,0,0,0" T="0" /></S><D /><O /></Z></C>')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement