Advertisement
Guest User

Test

a guest
Jan 28th, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.09 KB | None | 0 0
  1. --[ Module crée par Athesdrake ]--
  2. --[ lien: https://goo.gl/QoTSmW ]--
  3. transparence = 0.75 --[ Loups-Garous ]--
  4. --[[transparence des zones de textes]] --À Changer par un chiffre entre 0 et 1 (0 = transparent, 1 = opaque)
  5.  
  6. changeLesNoms = {
  7. voyante = {"nhà tiên tri", ""},
  8. loup_garou = {"Ma$ sói$", ""}, -- mettez "$" aux endroits où il faut un "s" au pluriel. (ne fonctionne que pour ce rôle)
  9. villageois = {"dân làng", ""},
  10. sorciere = {"phù thủy", ""},
  11. cupidon = {"thần tình yêu", ""},
  12. chasseur = {"thợ săn", ""},
  13. salvateur = {"bảo vệ", ""},
  14. voleur = {"ăn trộm", ""},
  15. costaud = {"bí ẩn", ""}
  16. }
  17.  
  18. function main()
  19. --vars:
  20. play = true
  21. speak = false
  22. TIME = 0
  23. mapName = "<VP>Ma sói<BL> | <N>Thời gian còn lại: <V>%ds</V><BL> | <N>Người chơi: <V>%d<N>/<V>%d<N> (<PT>%d<N>, <R>%d<N>)<BL> | <N>Người tạo: <BV>Athesdrake/n"
  24.  
  25. --ids:
  26. idHaut = 1
  27. idRole = 2
  28. idChoser = 3
  29. idTimer = 4
  30. idPlay = 5
  31. idLovers = 6
  32. idChat = 7
  33. --tables:
  34. task = {}
  35. players = {}
  36. plNbr = {}
  37. want2Play = {}
  38. jeu = {}
  39. roles = {"Nhà tiên tri", "Ma$ sói$", "dân làng", "Phù thủy", "Thần tình yêu", "Thợ săn", "Bảo vệ", "ăn trộm", "bí ẩn"}
  40. game = {}
  41. game[6] = {1,2,2,1}
  42. game[7] = {1,2,2,1,1}
  43. game[8] = {1,2,2,1,1,1}
  44. game[9] = {1,2,2,1,1,1,1}
  45. T = {
  46. events = {
  47. night = "Ðêm rồi ngủ thoy.",
  48. thief = "%s %s chọn một người và cướp nhân vật của họ",
  49. cupid = "%s %s chọn hai người yêu nhau rồi quay về ngủ.",
  50. lovers = " đã tìm đc người iu,họ phải bảo vệ nhau.",
  51. seer = "%s %s nhìn nhân vật của một người rồi quay lại ngủ.",
  52. saving = "%s %s chọn một người và bảo vệ.",
  53. werewolf = "chọn nạn nhân của tối hôm nay.",
  54. witch = "%s %s chọn một người đã chết để hồi sinh hoặc giết một người nào đó.",
  55. vote = "Bầu người để từ hình",
  56. hunter = "%s %s Chọn người để giết",
  57.  
  58. },
  59. win = "Phe %s đã win ez game :v !"
  60. }
  61. --sytème:
  62. for pl in pairs(tfm.get.room.playerList) do
  63. eventNewPlayer(pl)
  64. end
  65. for k, v in pairs({"start", "t"}) do
  66. system.disableChatCommandDisplay(v, true)
  67. end
  68. end
  69.  
  70. function eventNewPlayer(name)
  71. ui.addPopup(idPlay, 1, "<p align='center'>Muốn chơi ma sói ko ? :v", name, 350, 175, nil, true)
  72. players[name] = {isPlaying = false, play = false}
  73. tfm.lg.map()
  74. end
  75.  
  76. function eventPlayerLeft(name)
  77. if players[name].isPlaying then
  78. for k, v in pairs(plNbr) do
  79. if v==name then
  80. table.remove(plNbr, k)
  81. break
  82. end
  83. end
  84. players[name].isPlaying = false
  85. local txt = tfm.lg.dead(name, "<ROSE>"..name.."</ROSE> đã out room rồi họ chính là "..roles[players[name].jeu.role].." !")
  86. ui.msg(txt)
  87. if tfm.lg.win() then
  88. for k, v in ipairs(task) do
  89. task[k].finish = true
  90. end
  91. tfm.lg.task(3, "win")
  92. end
  93. end
  94. tfm.lg.map()
  95. end
  96.  
  97. function eventNewGame() tfm.lg.map() end
  98.  
  99. function eventChatCommand(name, cmd)
  100. if cmd=="start" and play then
  101. if (not pcall(setRolesNames)) then
  102. error("<R>La table \'changeLesNoms\' est obselète!</R>")
  103. end
  104. if #want2Play>5 then
  105. task = {}
  106. play = false
  107. jeu = {roles={0,0,0,0,0,0,0,0,0}}
  108. local r = {}
  109. if game[#want2Play]~=nil then
  110. for k, v in pairs(game[#want2Play]) do
  111. r[k] = v
  112. end
  113. else
  114. r = {1,3,2,1,1,1,1,1,1}
  115. r[2] = #want2Play/4
  116. r[3] = #want2Play-(r[2]+7)
  117. end
  118. math.randomseed(os.time())
  119. for i=1, #want2Play do
  120. local pl = nil
  121. repeat
  122. pl = want2Play[math.random(#want2Play)]
  123. until players[pl].isPlaying==false
  124. local ran = 0
  125. local objectif = "Giết hết ma sói !"
  126. repeat
  127. ran = math.random(#r)
  128. until r[ran]~=0
  129. if ran==2 then
  130. objectif = "Giết hết dân làng !"
  131. end
  132. r[ran] = r[ran] - 1
  133. table.insert(plNbr, pl)
  134. jeu.roles[ran] = jeu.roles[ran] + 1
  135. players[pl].jeu = {}
  136. players[pl].jeu.role = ran
  137. players[pl].isPlaying = true
  138. ui.role(pl, roles[ran], objectif)
  139. end
  140. tfm.lg.tour("ini")
  141. else
  142. ui.msg("del có đủ người chơi\ số lượng ít nhất là <J>6</J> Người chơi")
  143. end
  144. end
  145. if string.lower(cmd:sub(0,1))=="t" and speak and players[name].jeu.role~=nil and players[name].jeu.role==2 and players[name].mort then
  146. jeu.chat = "["..name.."] "..((cmd:sub(3)):gsub("&lt;"..".-".."&gt;", "")):gsub("%c", "").."\n"..jeu.chat
  147. for k, v in pairs(plNbr) do
  148. if players[v].jeu.role==2 then
  149. ui.chat(v)
  150. end
  151. end
  152. end
  153. end
  154.  
  155. function eventTextAreaCallback(id, name, call)
  156. if call:sub(1,5)=="steal" then
  157. players[name].choose = true
  158. players[name].jeu.role = players[call:sub(6)].jeu.role
  159. players[call:sub(6)].jeu.role = 1
  160. ui.role(name, roles[players[name].jeu.role], players[name].jeu.role==2 and "Giết hết dân làng !" or "Giết hết ma sói !")
  161. ui.role(call:sub(6), "Dân làng", "Giết hết ma sói !")
  162. end
  163. if call:sub(1,6)=="lovers" then
  164. name2 = call:sub(7)
  165. local nbr = (players[name].amour[1]==nil and 1) or (players[name].amour[2]==nil and 2) or nil
  166. if nbr~=nil and players[name].amour[1]~=name2 then
  167. players[name].amour[nbr] = name2
  168. players[name].jeu.texte = string.gsub(players[name].jeu.texte, "%s"..name2, " "..name2.."("..nbr..")")
  169. ui.choser(players[name].jeu.texte, name)
  170. end
  171. end
  172. if call:sub(1,4)=="seer" then
  173. ui.choser(call:sub(5).." là một "..roles[players[call:sub(5)].jeu.role], name)
  174. end
  175. if call:sub(1,6)=="saving" then
  176. players[name].lastProtect = call:sub(7)
  177. players[call:sub(7)].isProtect = true
  178. ui.choser("Ðã bảo vệ cho "..call:sub(7).." tối nay !", name)
  179. end
  180. if call:sub(1,8)=="werewolf" then
  181. local name2 = call:sub(9)
  182. if jeu.vote[name2]==nil then
  183. jeu.vote[name2] = 1
  184. else
  185. jeu.vote[name2] = jeu.vote[name2] + 1
  186. end
  187. jeu.txt = jeu.txt:gsub(name2.."%(".."%d".."%)", name2.."("..tostring(jeu.vote[name2])..")")
  188. if players[name].vote~=nil then
  189. jeu.vote[players[name].vote] = jeu.vote[players[name].vote] - 1
  190. jeu.txt = jeu.txt:gsub(players[name].vote.."%(".."%d".."%)", players[name].vote.."("..jeu.vote[players[name].vote]..")")
  191. end
  192. players[name].vote = name2
  193. for k, v in pairs(plNbr) do
  194. if players[v].jeu.role==2 and players[v].mort then
  195. ui.choser(jeu.txt, v)
  196. end
  197. end
  198. end
  199. if call:sub(1,4)=="vote" then
  200. local name2 = call:sub(5)
  201. if jeu.vote[name2]==nil then
  202. jeu.vote[name2] = 1
  203. else
  204. jeu.vote[name2] = jeu.vote[name2] + 1
  205. end
  206. --jeu.txt = jeu.txt:gsub(name.."%(%d%)%?%S+", name.."("..(jeu.vote[name] and jeu.vote[name] or "0")..")?"..name2 )
  207. players[name].vote = name2
  208. for k,v in pairs(plNbr) do
  209. if players[v].mort then
  210. jeu.txtVote[v] = string.format("<a href='event:vote%s'>%s</a>(%d)?%s\n", v, v, jeu.vote[v] and jeu.vote[v] or 0, players[v].vote and players[v].vote or "personne")
  211. end
  212. end
  213. local txt = ""
  214. for k,v in pairs(jeu.txtVote) do txt = txt..v end
  215. for k, v in pairs(plNbr) do
  216. if players[v].mort then
  217. ui.choser(txt, v, false, true)
  218. else
  219. ui.choser(txt, v, true, true)
  220. end
  221. end
  222. end
  223. if call:sub(1,4)=="kill" then
  224. players[name].kill = call:sub(5)
  225. table.insert(jeu.mort, call:sub(5))
  226. ui.choser(call:sub(5).." đã bị nguyền rủa !", name)
  227. end
  228. if call:sub(1,4)=="hunt" then
  229. jeu.mort[1] = call:sub(5)
  230. ui.choser("Tu tires sur "..call:sub(5).." đã bị bắn ", name)
  231. end
  232. end
  233.  
  234. function eventPopupAnswer(id, name, ans)
  235. if id==idPlay and ans=="yes" then
  236. if (not play) then
  237. ui.addPopup(idPlay, 0, "Tu dois attendre la prochaine partie pour jouer", name, 350, 175, nil, true)
  238. end
  239. players[name].play = true
  240. players[name].mort = true
  241. table.insert(want2Play, name)
  242. tfm.lg.map()
  243. end
  244. if id==idChoser then
  245. if ans=="yes" then
  246. ressu = true
  247. players[name].rez = ""
  248. else
  249. ui.addPopup(idTimer, 1, "Muốn nguyền rủa ai vào tối nay ko ?", name, 350, 175, nil, true)
  250. end
  251. end
  252. if id==idTimer then
  253. local txt = ""
  254. for k, v in pairs(plNbr) do
  255. if players[v].mort then
  256. txt = txt.."<a href='event:kill"..v.."'>"..v.."</a>\n"
  257. end
  258. end
  259. players[name].txt = txt
  260. ui.addTextArea(idChoser, txt, name, 620, 110, 180, nil, 0x8C3232, 0x131A2A, transparence, true)
  261. end
  262. end
  263.  
  264. function eventLoop(t1, t2)
  265. for k, v in ipairs(task) do
  266. local tbl = task[k]
  267. TIME = math.ceil(os.difftime(tbl.time,os.time())/1000)
  268. tfm.lg.map()
  269. if tbl.timer then
  270. ui.addTextArea(idTimer, TIME, all, 740, 45, nil, nil, 0, 0, 0, true)
  271. end
  272.  
  273. function setRolesNames()
  274. if changeLesNoms~=nil and type(changeLesNoms)=="table" then
  275. local tbl = changeLesNoms
  276. T.events.seer = string.format(T.events.seer, tbl.voyante~=nil and (tbl.voyante~=nil and (tbl.voyante[2]~=nil and tbl.voyante[2] or "La")) or "La", tbl.voyante[1]~=nil and tbl.voyante[1] or "Voyante" or "Voyante")
  277. T.events.werewolf = string.format(T.events.werewolf, tbl.loup_garou~=nil and (tbl.loup_garou[1]~=nil and tbl.loup_garou[1]:gsub("%$", "s") or "Loups Garous") or "Loups Garous")
  278. T.events.witch = string.format(T.events.witch, tbl.sorciere~=nil and (tbl.sorciere~=nil and (tbl.sorciere[2]~=nil and tbl.sorciere[2] or "La")) or "La", tbl.sorciere[1]~=nil and tbl.sorciere[1] or "Sorcière" or "Sorcière")
  279. T.events.cupid = string.format(T.events.cupid, tbl.cupidon~=nil and (tbl.cupidon~=nil and (tbl.cupidon[2]~=nil and tbl.cupidon[2] or "Le")) or "Le", tbl.cupidon[1]~=nil and tbl.cupidon[1] or "Cupidon" or "Cupidon")
  280. T.events.hunter = string.format(T.events.hunter, tbl.chasseur~=nil and (tbl.chasseur~=nil and (tbl.chasseur[2]~=nil and tbl.chasseur[2] or "Le")) or "Le", tbl.chasseur[1]~=nil and tbl.chasseur[1] or "Chasseur" or "Chasseur")
  281. T.events.saving = string.format(T.events.saving, tbl.salvateur~=nil and (tbl.salvateur~=nil and (tbl.salvateur[2]~=nil and tbl.salvateur[2] or "Le")) or "Le", tbl.salvateur[1]~=nil and tbl.salvateur[1] or "Salvateur" or "Salvateur")
  282. T.events.thief = string.format(T.events.thief, tbl.voleur~=nil and (tbl.voleur~=nil and (tbl.voleur[2]~=nil and tbl.voleur[2] or "Le")) or "Le", tbl.voleur[1]~=nil and tbl.voleur[1] or "Voleur" or "Voleur")
  283.  
  284. roles[1] = tbl.voyante~=nil and (tbl.voyante[1]~=nil and tbl.voyante[1] or roles[1]) or roles[1]
  285. roles[2] = tbl.loup_garou~=nil and (tbl.loup_garou[1]~=nil and tbl.loup_garou[1]:gsub("%$", "") or roles[2]) or roles[2]
  286. roles[3] = tbl.villageois~=nil and (tbl.villageois[1]~=nil and tbl.villageois[1] or roles[3]) or roles[3]
  287. roles[4] = tbl.sorciere~=nil and (tbl.sorciere[1]~=nil and tbl.sorciere[1] or roles[4]) or roles[4]
  288. roles[5] = tbl.cupidon~=nil and (tbl.cupidon[1]~=nil and tbl.cupidon[1] or roles[5]) or roles[5]
  289. roles[6] = tbl.chasseur~=nil and (tbl.chasseur[1]~=nil and tbl.chasseur[1] or roles[6]) or roles[6]
  290. roles[7] = tbl.salvateur~=nil and (tbl.salvateur[1]~=nil and tbl.salvateur[1] or roles[7]) or roles[7]
  291. roles[8] = tbl.voleur~=nil and (tbl.voleur[1]~=nil and tbl.voleur[1] or roles[8]) or roles[8]
  292. roles[9] = tbl.costaud~=nil and (tbl.costaud[1]~=nil and tbl.costaud[1] or roles[9]) or roles[9]
  293. end
  294. end
  295.  
  296. function findKey(value, tbl)
  297. for k,v in next, tbl do
  298. if value==v then
  299. return k
  300. end
  301. end
  302. return false
  303. end
  304.  
  305. function nbrSouris()
  306. local nbr = 0
  307. for k,v in pairs(tfm.get.room.playerList) do
  308. nbr = nbr +1
  309. end
  310. return nbr
  311. end
  312.  
  313. ui.msg = function(txt)
  314. ui.addTextArea(idHaut, "<p align='center'>"..txt.."</p>", name, 15, 28, 770, 50, 0x8C3232, 0x131A2A, transparence, true)
  315. end
  316.  
  317. ui.role = function(name, role, obj)
  318. ui.addTextArea(idRole, "<font size='16' color='#131a2a'>Nhân vật: </font><font size='16'>"..role.."</font>\n<p align='center'><font size='8'><b>"..(obj==name and ("đã từng là:"..roles[players[name].jeu.role]) or "Nhiệm vụ: "..obj), name, 15, 350, 220, 50, 0x8C3232, 0x131A2A, transparence, true)
  319. end
  320.  
  321. ui.choser = function(txt, name, bool, display)
  322. ui.addTextArea(idChoser, (bool and txt:gsub("href", "color") or txt), name, (display and 560 or 670), 86, (display and 225 or 115), nil, 0x8C3232, 0x131A2A, transparence, true)
  323. end
  324.  
  325. ui.chat = function(name)
  326. ui.addTextArea(idChat, "<J>!t message</J><BL> Ðể chat với những ma sói khác</BL>\n"..jeu.chat, name, 15, 86, 200, 228, 0x8c3232, 0x131a2a, tonumber(transparence)/1.5, true)
  327. end
  328.  
  329. tfm.lg = {
  330. dead = function(name, mort)
  331. local role, txt, hunter, cos = players[name].jeu.role, mort, players[name].jeu.role==6, players[name].jeu.role==9
  332. if cos and players[name].life==nil then
  333. players[name].life = 1
  334. return txt, false;
  335. end
  336. players[name].mort = false
  337. jeu.roles[role] = jeu.roles[role] - 1
  338. ui.role(name, "mort", name)
  339. if jeu.amour~=nil and jeu.amour[1]~=nil then
  340. local tbl = jeu.amour
  341. if (name==tbl[1] and players[tbl[2]].mort) or (name==tbl[2] and players[tbl[1]].mort) then
  342. local name2 = name==tbl[1] and tbl[2] or tbl[1]
  343. tfm.lg.dead(name2)
  344. txt = txt.."\n"..name2.." đã tự tử vì mất người iu. "..name2.." là "..roles[players[name2].jeu.role].." !"
  345. end
  346. end
  347. return txt, hunter
  348. end,
  349.  
  350. plDead = function()
  351. local nbr = 0
  352. for k,v in pairs(plNbr) do
  353. if (not players[v].mort) then
  354. nbr = nbr +1
  355. end
  356. end
  357. return nbr
  358. end,
  359.  
  360. tour = function(tour, lastTour, name)
  361. if lastTour~=nil then
  362. if lastTour=="thief" then
  363. if players[name] and players[name].choose==nil then
  364. jeu.roles[8] = 0
  365. jeu.roles[3] = jeu.roles[3] + 1
  366. end
  367. end
  368. if lastTour=="cupid" then
  369. if players[name].amour[2]==nil then
  370. tour = "daily"
  371. else
  372. jeu.amour = {}
  373. jeu.amour[1] = players[name].amour[1]
  374. jeu.amour[2] = players[name].amour[2]
  375. jeu.roles[5] = 0
  376. jeu.roles[3] = jeu.roles[3] + 1
  377. ui.role(name, "Dân làng", "Giết hết ma sói !")
  378. end
  379. end
  380. if lastTour=="witch" then
  381. ui.addPopup(idTimer,2,"",name,1e7,1e7)
  382. ui.addPopup(idChoser,2,"",name,1e7,1e7)
  383. end
  384. if lastTour=="werewolf" then
  385. speak = true
  386. local last = 0
  387. local mort = ""
  388. for k, v in pairs(jeu.vote) do
  389. if v~=nil and v~="" and v>last then
  390. last = v
  391. mort = k
  392. end
  393. end
  394. if mort=="" then
  395. jeu.mort = {}
  396. else
  397. jeu.mort = {mort}
  398. end
  399. jeu.vote = {}
  400. end
  401. if lastTour=="vote" then
  402. local last = 0
  403. local mort = ""
  404. local tbl = {}
  405. local nbr = 0
  406. for k, v in pairs(plNbr) do
  407. if players[v].mort then
  408. nbr = nbr + 1
  409. end
  410. end
  411. for k,v in pairs(jeu.vote) do
  412. if v~=nil and v~="" and v>last then
  413. last = v
  414. mort = k
  415. tbl = {k}
  416. elseif v==last then
  417. table.insert(tbl, k)
  418. end
  419. end
  420. if mort=="" then
  421. jeu.mort = {}
  422. elseif #tbl>1 and (#plNbr%2)~=0 then
  423. if nbr==2 then
  424. jeu.mort = {mort}
  425. else
  426. tour = "vote"
  427. end
  428. else
  429. jeu.mort = {mort}
  430. end
  431. jeu.vote = {}
  432. end
  433. end
  434. if tour~=nil then
  435. if tour=="ini" then
  436. jeu.mort = {""}
  437. jeu.amour = {""}
  438. jeu.vote = {""}
  439. jeu.chat = ""
  440. for k, v in pairs(plNbr) do
  441. players[v].mort = true
  442. end
  443. tfm.lg.task(2, "night")
  444. end
  445. if tour=="night" then
  446. for _, pl in pairs(plNbr) do
  447. players[pl].isProtect = false
  448. end
  449. ui.msg(T.events[tour])
  450. tfm.lg.task(2, "thief", tour)
  451. end
  452. if tour=="thief" then
  453. if jeu.roles[8]==1 then
  454. local txt = "đã ăn trộm:"
  455. local pl = ""
  456. for k, v in pairs(plNbr) do
  457. if players[v].jeu.role==8 and players[v].mort then
  458. pl = v
  459. elseif players[v].mort then
  460. txt = txt.."\n<a href='event:steal"..v.."'>"..v.."</a>"
  461. end
  462. end
  463. ui.choser(txt, pl)
  464. ui.msg(T.events[tour])
  465. tfm.lg.task(10, "cupid", tour, true, true, idChoser, pl)
  466. else
  467. tour = "cupid"
  468. end
  469. end
  470. if tour=="cupid" then
  471. if jeu.roles[5]==1 then
  472. local txt = "Chọn hai người để yêu nhau:"
  473. local pl = ""
  474. for k, v in pairs(plNbr) do
  475. if players[v].mort then
  476. txt = txt.."\n<a href='event:lovers"..v.."'> "..v.."</a>"
  477. if players[v].jeu.role==5 then
  478. pl = v
  479. players[v].amour = {}
  480. end
  481. end
  482. end
  483. players[pl].jeu.texte = txt
  484. ui.choser(txt, pl)
  485. ui.msg(T.events[tour])
  486. tfm.lg.task(20, "lovers", tour, true, true, idChoser, pl)
  487. else
  488. tour = "daily"
  489. end
  490. end
  491. if tour=="lovers" then
  492. for i=1, 2 do
  493. ui.addTextArea(idLovers, "<font size='12' color='#131a2a'>Người yêu: "..jeu.amour[i], jeu.amour[i==1 and 2 or 1], 6, 322, nil, 20, 0x8C3232, 0x131A2A, transparence, true)
  494. end
  495. ui.msg(T.events[tour])
  496. tfm.lg.task(10, "daily", tour, true)
  497. end
  498. if tour=="daily" then
  499. if jeu.roles[1]==1 or jeu.roles[7]==1 then
  500. local txt2 = "Nhân vật:"
  501. local txt = "Nhân vật:"
  502. local pl, pl2, msg
  503. for k, v in pairs(plNbr) do
  504. if players[v].mort then
  505. if players[v].jeu.role==1 then
  506. pl = v
  507. else
  508. txt = txt.."\n<a href='event:seer"..v.."'>"..v.."</a>"
  509. end
  510. txt2 = txt2.."\n<a href='event:saving"..v.."'>"..v.."</a>"
  511. if players[v].jeu.role==7 then
  512. pl2 = v
  513. end
  514. end
  515. end
  516. if pl and pl2 then
  517. msg = T.events.seer.."\n"..T.events.saving
  518. ui.choser(txt, pl)
  519. ui.choser(txt2, pl2)
  520. elseif pl then
  521. msg = T.events.seer
  522. ui.choser(txt, pl)
  523. else
  524. msg = T.events.saving
  525. ui.choser(txt2, pl2)
  526. end
  527. ui.msg(msg)
  528. tfm.lg.task(20, "werewolf", tour, true, true, idChoser)
  529. else
  530. tour = "werewolf"
  531. end
  532. end
  533. if tour=="werewolf" then
  534. jeu.mort = {}
  535. speak = true
  536. for k, v in pairs(plNbr) do
  537. players[v].vote = nil
  538. end
  539. local werewolf, txt = {}, "Tối nay sẽ ăn thịt:"
  540. for k, v in pairs(plNbr) do
  541. if players[v].jeu.role==2 and players[v].mort then
  542. table.insert(werewolf, v)
  543. elseif players[v].mort then
  544. txt = txt.."\n<a href='event:werewolf"..v.."'>"..v.."(0)</a>"
  545. end
  546. end
  547. jeu.txt = txt
  548. for k, v in pairs(plNbr) do
  549. if players[v].jeu.role==2 and players[v].mort then
  550. ui.choser(txt, v)
  551. ui.chat(v)
  552. end
  553. end
  554. ui.msg(T.events[tour])
  555. tfm.lg.task(45, "witch", tour, true, true, idChoser)
  556. end
  557. if tour=="witch" then
  558. if jeu.roles[4]==1 then
  559. for k, v in pairs(plNbr) do
  560. if players[v].jeu.role==4 then
  561. if jeu.mort[1]~=nil and players[v].rez==nil then
  562. ui.addPopup(idChoser, 1, "Có muốn hồi sinh <VI>"..jeu.mort[1].."</VI>?", v, 350, 175, nil, true)
  563. elseif players[v].kill==nil then
  564. ui.addPopup(idTimer, 1, "Có muốn nguyền rủa ai ko ?", v, 350, 175, nil, true)
  565. else
  566. tour = "dead"
  567. break;
  568. end
  569. ui.msg(T.events[tour])
  570. tfm.lg.task(15, "dead", tour, true, true, idChoser, v)
  571. end
  572. end
  573. else
  574. tour = "dead"
  575. end
  576. end
  577. if tour=="vote" then
  578. jeu.txtVote, jeu.mort = {}, {}
  579. for k, v in pairs(plNbr) do
  580. players[v].vote = nil
  581. end
  582. local txt = ""
  583. for k, v in pairs(plNbr) do
  584.  
  585. for k, v in pairs(jeu.mort) do
  586. if (not players[v].isProtect) then
  587. txt, hunter = tfm.lg.dead(v, txt.."nạn nhân là <ROSE>"..v.."</ROSE> chính là "..roles[players[v].jeu.role].." !!\n")
  588. end
  589. end
  590. jeu.mort = {}
  591. ui.msg(txt)
  592. if hunter then
  593. tfm.lg.task(15, tfm.lg.win() and "win" or "hunter", "mort")
  594. else
  595. tfm.lg.task(15, tfm.lg.win() and "win" or "vote", tour)
  596. end
  597. end
  598. end
  599. if tour=="bucher" then
  600. local txt, hunter = "người bị tử hình "
  601. if jeu.mort[1]==nil then
  602. txt = "Personne ne vas au bûcher !"
  603. else
  604. for k, v in pairs(jeu.mort) do
  605. txt, hunter = tfm.lg.dead(v, tostring(txt).."<ROSE>"..v.."</ROSE> chính là m?t "..tostring(roles[players[v].jeu.role]).." !!\n")
  606. end
  607. jeu.mort = {}
  608. ui.msg(txt)
  609. if hunter then
  610. tfm.lg.task(15, tfm.lg.win() and "win" or "hunter", "feu")
  611. else
  612. tfm.lg.task(15, tfm.lg.win() and "win" or "night", tour)
  613. end
  614. end
  615. end
  616. if tour=="win" then
  617. local txt = "ERROR"
  618. if tfm.lg.win()=="no" then
  619. txt = "Không một ai sống !"
  620. else
  621. local tbl = {}
  622. txt = T.win:format(tfm.lg.win()).."\n chúc mừng <ROSE>"
  623. for k, v in pairs(plNbr) do
  624. if players[v].mort then
  625. table.insert(tbl, v)
  626. end
  627. end
  628. for k, v in pairs(tbl) do
  629. if k==#tbl then
  630. txt = txt..v.."</ROSE>!"
  631. elseif k==#tbl-1 then
  632. txt = txt..v.."</ROSE> và <ROSE>"
  633. else
  634. txt = txt..v.."</ROSE>, <ROSE>"
  635. end
  636. end
  637. end
  638. ui.msg(txt)
  639. end
  640. if tour=="hunter" then
  641. local txt, pl = "Chọn người muốn giết vào tối nay:"
  642. for k, v in pairs(plNbr) do
  643. if players[v].jeu.role==6 then
  644. pl = v
  645. elseif players[v].mort then
  646. txt = txt.."\n<a href='event:hunt"..v.."'>"..v.."</a>"
  647. end
  648. end
  649. ui.choser(txt, pl)
  650. ui.msg("Người thợ săn đã lấy hơi cuối cùng và bắn người mà anh ta thấy !")
  651. tfm.lg.task(15, "deadHunt", lastTour, true, true, idChoser, pl)
  652. end
  653. if tour=="deadHunt" then
  654. if jeu.mort[1]==nil then
  655. ui.msg(name.." dã không b?n ai")
  656. else
  657. ui.msg(tfm.lg.dead(jeu.mort[1], name.." ð? b?n vào "..jeu.mort[1].." và ch?t "..roles[players[jeu.mort[1]].jeu.role]))
  658. end
  659. tfm.lg.task(15, tfm.lg.win() and "win" or (lastTour=="feu" and "night" or "vote"))
  660. end
  661. end
  662. end,
  663.  
  664. task = function(time, tour, lastTour, timer, txtArea, id, name)
  665. table.insert(task, {time = os.time()+time*1000, tour = tour, timer = timer==nil and false or timer, txtArea = txtArea==nil and false or txtArea, id = id, name = name, last = lastTour})
  666. end,
  667.  
  668. map = function()
  669. local nbr = #plNbr
  670. if play then nbr=#want2Play end
  671. ui.setMapName(string.format(mapName, TIME, nbr, nbrSouris(), nbr-tfm.lg.plDead(), tfm.lg.plDead()))
  672. end,
  673.  
  674. win = function()
  675. tfm.lg.map()
  676. if jeu.roles[2]==#plNbr-tfm.lg.plDead() then
  677. return "Ma sói";
  678. elseif jeu.roles[2]==0 then
  679. return "Dân làng";
  680. elseif #plNbr-tfm.lg.plDead()==2 then
  681. for k, v in pairs(plNbr) do
  682. if jeu.amour[1]==v and players[v].mort then
  683. return "Amoureux";
  684. end
  685. end
  686. elseif #plNbr-tfm.lg.plDead()==0 then
  687. return "no";
  688. else
  689. return false;
  690. end
  691. end
  692. }
  693.  
  694. badPrint = print
  695. print=function( ... )
  696. local tbl, self, i = {}, {}, 1
  697. self.wType=function(var)
  698. return (type(var)=="number" and "J" or (type(var)=="string" and "VP" or (type(var)=="boolean" and "BV" or (type(var)=="table" and "VI" or "R"))))
  699. end
  700. self.pTable=function(tbl1)
  701. local txt = ""
  702. for k,v in next, tbl1 do
  703. txt = txt.pe(v)=="table" and tostring(k) or tostring(v)).."</%s>"):format(self.wType(v), self.wType(v))
  704. if type(v)=="table" then
  705. txt = txt..self.pTable(v)
  706. end
  707. txt = tx</R>"
  708. end
  709. txt = txt:sub(0, #txt-9)
  710. return "={"..txt.."}"
  711. end
  712.  
  713. for k,v in next,
  714. tbl[i] = ("<%s>".."</%s>"):format(self.wType(v), self.wType(v))
  715. if type(v)=="table" then
  716. tbl[i] = tbl[i]..self.pTable(v)
  717. end
  718. i = i+1
  719. end
  720. badPrint(table.concat(tbl, "<R>, </R>"))
  721. end
  722.  
  723. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement