Advertisement
Fireicefly

Remember It v.1.0

Feb 6th, 2019
498
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 16.79 KB | None | 0 0
  1. function main()
  2. admin = "Bobolemouton#9848"
  3. gameState = 0
  4. moves = {}
  5. arrows = {"←","↑","→","↓"}
  6. countMove = 3
  7. bestScore = 3
  8. timeLeft = 3
  9. playerList = {}
  10. player1 = ""
  11. player2 = ""
  12. activePlayer = ""
  13. tfm.exec.disableAutoNewGame(true)
  14. tfm.exec.disableMortCommand(true)
  15. tfm.exec.disableAfkDeath(true)
  16. tfm.exec.disableAutoShaman(true)
  17. tfm.exec.newGame("@7566395")
  18. end
  19.  
  20.  
  21. function eventNewPlayer(name)
  22. playerList[name] = {}
  23. playerList[name]["playing"] = false
  24. playerList[name]["winning"] = false
  25. system.bindKeyboard(name, 0, true)
  26. system.bindKeyboard(name, 1, true)
  27. system.bindKeyboard(name, 2, true)
  28. system.bindKeyboard(name, 3, true)
  29.     if name == admin and gameState == 0 then
  30.         ui.addTextArea(1000, "", admin, 168, 66, 464, 230, 0x3F2B1D, 0x3F2B1D, 1, true)
  31.         ui.addTextArea(1001, "<p align=\"center\"><font size=\"20\">REMEMBER IT</font></p>", admin, 168, 66, 464, 30, 0x3F2B1D, 0x3b2719, 1, true)
  32.         ui.addTextArea(1002, "<p align=\"center\"><BV><font size=\"15\">SELECTIONNEZ LE MODE DE JEU</font></p>", admin, 168, 115, 464, 25, 0x3F2B1D, 0x3F2B1D, 1, true)
  33.         ui.addTextArea(1003, "<p align =\"center\"><V><font size=\"15\"><B>1V1</B></font></V></p>\nRécupérez plus de points que votre adversaire dans un match 1 contre 1 dans lequel vous serez à tour de rôle maître du jeu...\n\n<p align=\"center\"><a href=\"event:1versus1\"><B><J><font size=\"13\">Commencer</font></J></B></a></p>", admin, 187, 160, 200, 120, 0x3F2B1D, 0x3b2719, 1, true)
  34.         ui.addTextArea(1004, "<p align =\"center\"><V><font size=\"15\"><B>ELIMINATION</B></font></V></p>\nSelectionnez un maître du jeu. Le dernier survivant gagne le match...\n\n\n<p align=\"center\"><a href=\"event:elimination\"><B><J><font size=\"13\">Commencer</font></J></B></a></p>", admin, 413, 160, 200, 120, 0x3F2B1D, 0x3b2719, 1, true)
  35.     end
  36.     if gameState == 1 then
  37.         selectPlayers(playerList)
  38.     elseif gameState == 2 then
  39.         selectMDJ(playerList)
  40.     end
  41. end
  42.  
  43. function eventTextAreaCallback(id, name, callback)
  44.     if callback == "1versus1" then
  45.         gameState = 1
  46.         closeMenu(admin, 1000,1004)
  47.         selectPlayers(playerList)
  48.     elseif callback == "elimination" then
  49.         gameState = 2
  50.         selectMDJ(playerList)
  51.         closeMenu(admin, 1000,1004)
  52.     elseif string.sub(callback, 0, 3) == "1v1" then
  53.             if player1 == string.sub(callback, 4) then
  54.                 player1 = ""
  55.             elseif player2 == string.sub(callback, 4) then
  56.                 player2 = ""
  57.             elseif player1 == "" then
  58.                 player1 = string.sub(callback, 4)
  59.             elseif player2 == "" then
  60.                 player2 = string.sub(callback, 4)
  61.             end
  62.                 selectPlayers(playerList)
  63.     elseif string.sub(callback, 0, 3) == "mdj" then
  64.         if activePlayer == string.sub(callback, 4) then
  65.             activePlayer = ""
  66.         elseif activePlayer == "" then
  67.             activePlayer = string.sub(callback, 4)
  68.         end
  69.         selectMDJ(playerList)
  70.     elseif callback == "start1v1" then
  71.             ui.removeTextArea(814, nil)
  72.         if player1 ~= "" and player2 ~= "" then
  73.             gameState = 3
  74.             moves[player1] = {}
  75.             moves[player2] = {}
  76.             activePlayer = player1
  77.             tfm.exec.movePlayer(activePlayer, 400, 180, false)
  78.             for mouse in pairs(playerList) do
  79.                 if mouse ~= player1 and mouse ~= player2 then
  80.                     tfm.exec.killPlayer(mouse)
  81.                 end
  82.             end
  83.             closeMenu(admin, 0, 3)
  84.             ui.addTextArea(10, "<font color=\"#222\" size=\"14\" family=\"Verdana\"><p align=\"center\">Maître du jeu : "..activePlayer.."\n\nNombre de mouvements : "..countMove.."</p></font>", nil, 40, 120, 228, 91, 0, 0, 1, true)
  85.             ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..activePlayer.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  86.         else
  87.             selectPlayers(playerList)
  88.         end
  89.     elseif callback == "startElimination" then
  90.                 ui.removeTextArea(814, nil)
  91.         if activePlayer ~= "" then
  92.             gameState = 6
  93.             for v in pairs(playerList) do
  94.                 moves[v] = {}
  95.                 playerList[v].playing = true
  96.             end
  97.             tfm.exec.movePlayer(activePlayer, 400, 180, false)
  98.             closeMenu(admin, 0, 3)
  99.             ui.addTextArea(10, "<font color=\"#222\" size=\"14\" family=\"Verdana\"><p align=\"center\">Maître du jeu : "..activePlayer.."\n\nNombre de mouvements : "..countMove.."</p></font>", nil, 40, 120, 228, 91, 0, 0, 1, true)
  100.             ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..activePlayer.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  101.         end
  102.     end
  103. end
  104.  
  105. function closeMenu(name, i1, i2)
  106.     for i=i1,i2 do
  107.         ui.removeTextArea(i, name)
  108.     end
  109. end
  110.  
  111. function selectPlayers(players)
  112.     if gameState == 1 then
  113.         local player_string_list = ""
  114.             for v in pairs(players) do
  115.                 if player1 ~= v and player2 ~= v then
  116.                     player_string_list = player_string_list.."<a href=\"event:1v1"..v.."\">"..v.. "</a> - "
  117.                 else
  118.                     player_string_list = player_string_list.."<J><a href=\"event:1v1"..v.."\">"..v.. "</a></J> - "
  119.                 end
  120.             end
  121.         ui.addTextArea(0, "", admin, 275, 56, 250, 287, 0x3F2B1D, 0x3F2B1D, 1, true)
  122.         ui.addTextArea(1, "<p align=\"center\"><BV><font size=\"14\" face=\"Verdana\">SELECTIONNEZ LES 2 JOUEURS</font></BV></p>", admin, 276, 57, 248, 25, 0x3F2B1D, 0x382315, 1, true)
  123.         ui.addTextArea(2, player_string_list, admin, 276, 97, 248, 207, 0x3F2B1D, 0x3F2B1D, 1, true)
  124.         if player1 ~= "" and player2 ~= "" then
  125.             ui.addTextArea(3, "<a href=\"event:start1v1\"><font size=\"16\" face=\"Verdana\"><p align=\"center\"><J><B>VALIDER</B></J></p></font></a>", admin, 276, 316, 248, 27, 0x3F2B1D, 0x382315, 1, true) 
  126.         end
  127.     end
  128. end
  129.  
  130. function selectMDJ(players)
  131.     if gameState == 2 then
  132.         local player_string_list = ""
  133.             for v in pairs(players) do
  134.                 if activePlayer ~= v then
  135.                     player_string_list = player_string_list.."<a href=\"event:mdj"..v.."\">"..v.. "</a> - "
  136.                 else
  137.                     player_string_list = player_string_list.."<J><a href=\"event:mdj"..v.."\">"..v.. "</a></J> - "
  138.                 end
  139.             end
  140.         ui.addTextArea(0, "", admin, 275, 56, 250, 287, 0x3F2B1D, 0x3F2B1D, 1, true)
  141.         ui.addTextArea(1, "<p align=\"center\"><BV><font size=\"13\" face=\"Verdana\">SELECTIONNEZ LE MAITRE DU JEU</font></BV></p>", admin, 276, 57, 248, 25, 0x3F2B1D, 0x382315, 1, true)
  142.         ui.addTextArea(2, player_string_list, admin, 276, 97, 248, 207, 0x3F2B1D, 0x3F2B1D, 1, true)
  143.         if activePlayer ~= "" then
  144.             ui.addTextArea(3, "<a href=\"event:startElimination\"><font size=\"16\" face=\"Verdana\"><p align=\"center\"><J><B>VALIDER</B></J></p></font></a>", admin, 276, 316, 248, 27, 0x3F2B1D, 0x382315, 1, true) 
  145.         end
  146.     end
  147. end
  148.    
  149.                
  150. function eventKeyboard(name, key, down, x, y)
  151.     if gameState == 3 or gameState == 6 then
  152.         if name == activePlayer then
  153.             if #moves[activePlayer] < countMove then
  154.                 table.insert(moves[activePlayer], arrows[key+1])
  155.                 ShowArrows(nil, moves[activePlayer])
  156.                 if gameState == 3 and #moves[activePlayer] == countMove then
  157.                     gameState = 4
  158.                 elseif gameState == 6 and #moves[activePlayer] == countMove then
  159.                     gameState = 7
  160.                 end
  161.             end
  162.         end
  163.     elseif gameState == 8 then
  164.             for k,v in pairs(playerList) do
  165.                 if k == name and activePlayer ~= name and v.playing == true and v.winning == false then
  166.                     if #moves[name] < #moves[activePlayer] then
  167.                         table.insert(moves[name], arrows[key+1])
  168.                         ShowArrows(name, moves[name])
  169.                         if #moves[name] == #moves[activePlayer] then
  170.                             if moves[name][#moves[name]] == moves[activePlayer][#moves[activePlayer]] then
  171.                                 ShowArrows(name, moves[name])
  172.                                 playerList[name].winning = true
  173.                             ui.addTextArea(814, "<p align=\"center\"><font family=\"Verdana\" size=\"17\" color=\"#114f11\">Bravo, t'es trop fort(e) !</font></p>", name, 225, 37, 350, 30, 0, 0, 1, true)
  174.                             closeMenu(name,800,813)
  175.                             ui.removeTextArea(851, name)
  176.                             else
  177.                                 playerList[name].playing = false
  178.                                 closeMenu(name,800,813)
  179.                             ui.addTextArea(814, "<p align=\"center\"><font family=\"Verdana\" size=\"17\" color=\"#5f1111\">Tu es éliminé(e) !</font></p>", name, 225, 37, 350, 30, 0, 0, 1, true)
  180.                                 tfm.exec.killPlayer(name)
  181.                             ui.removeTextArea(851, name)
  182.                             end
  183.                         else
  184.                             for k,v in pairs(moves[activePlayer]) do
  185.                                 if k <= #moves[name] then
  186.                                     if v == moves[name][k] then
  187.                                         ShowArrows(name, moves[name])
  188.                                     else
  189.                                         tfm.exec.killPlayer(name)
  190.                                         playerList[name].playing = false
  191.                                     ui.addTextArea(814, "<p align=\"center\"><font family=\"Verdana\" size=\"17\" color=\"#5f1111\">Tu es éliminé(e) !</font></p>", name, 225, 37, 350, 30, 0, 0, 1, true)
  192.                                         closeMenu(nil,800,813)
  193.                                     ui.removeTextArea(851, name)
  194.                                     end
  195.                                 end
  196.                             end
  197.                         end
  198.                     end
  199.                 end
  200.             end
  201.     elseif gameState == 5 then
  202.         if activePlayer ~= name and (name == player1 or name == player2) then
  203.             if #moves[name] < #moves[activePlayer] then
  204.                 table.insert(moves[name], arrows[key+1])
  205.                 if #moves[name] == #moves[activePlayer] then
  206.                     if moves[name][#moves[name]] == moves[activePlayer][#moves[activePlayer]] then
  207.                         ShowArrows(nil, moves[name])
  208.                         moves[player1] = {}
  209.                         moves[player2] = {}
  210.                         gameState = 3
  211.                         if countMove < 13 then
  212.                             countMove = countMove + 1
  213.                         end
  214.                         closeMenu(nil,800,813)
  215.                         ui.addTextArea(10, "<font color=\"#222\" size=\"14\" family=\"Verdana\"><p align=\"center\">Maître du jeu : "..activePlayer.."\n\nNombre de mouvements : "..countMove.."</p></font>", nil, 40, 120, 228, 91, 0, 0, 1, true)
  216.                         ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..activePlayer.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  217.                     else
  218.                             if activePlayer == player1 then
  219.                                 activePlayer = player2
  220.                                 tfm.exec.movePlayer(player1, 400,  350, false)
  221.                             elseif activePlayer == player2 then
  222.                                 tfm.exec.movePlayer(player2, 400, 350, false)
  223.                                 activePlayer = player1
  224.                             end
  225.                             gameState = 3
  226.                             countMove = 3
  227.                             tfm.exec.movePlayer(activePlayer, 400, 180, false)
  228.                             moves[player1] = {}
  229.                             moves[player2] = {}
  230.                             ui.addTextArea(10, "<font color=\"#222\" size=\"14\" family=\"Verdana\"><p align=\"center\">Maître du jeu : "..activePlayer.."\n\nNombre de mouvements : "..countMove.."</p></font>", nil, 40, 120, 228, 91, 0, 0, 1, true)
  231.                             ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..activePlayer.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  232.                             closeMenu(nil,800,813)
  233.                     end
  234.                 else
  235.                     for k,v in pairs(moves[activePlayer]) do
  236.                         if k <= #moves[name] then
  237.                             if v == moves[name][k] then
  238.                                 ShowArrows(nil, moves[name])
  239.                             else
  240.                                 if activePlayer == player1 then
  241.                                     activePlayer = player2
  242.                                     tfm.exec.movePlayer(player1, 400,  350, false)
  243.                                 elseif activePlayer == player2 then
  244.                                     tfm.exec.movePlayer(player2, 400, 350, false)
  245.                                     activePlayer = player1
  246.                                 end
  247.                                 gameState = 3
  248.                                 countMove = 3
  249.                                 tfm.exec.movePlayer(activePlayer, 400, 180, false)
  250.                                 moves[player1] = {}
  251.                                 moves[player2] = {}
  252.                                 ui.addTextArea(10, "<font color=\"#222\" size=\"14\" family=\"Verdana\"><p align=\"center\">Maître du jeu : "..activePlayer.."\n\nNombre de mouvements : "..countMove.."</p></font>", nil, 40, 120, 228, 91, 0, 0, 1, true)
  253.                                 ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..activePlayer.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  254.                                 closeMenu(nil,800,813)
  255.                             end
  256.                         end
  257.                     end
  258.                 end
  259.             end
  260.         end
  261.     end
  262. end
  263.  
  264. function eventLoop(currentTime, TimeRemaining)
  265.     if gameState == 4 or gameState == 7 or gameState == 8 then
  266.         if timeLeft > 0 then
  267.             ui.addTextArea(850, "<p align=\"center\"><B><font color=\"#333\" size=\"30\" face=\"Verdana\">"..math.ceil(timeLeft).."</font></B></p>", nil, 600, 140, 80, 80, 0, 0, 1, true)
  268.             timeLeft = timeLeft - 0.5
  269.         else
  270.             ui.removeTextArea(850, nil)
  271.             if gameState == 4 then
  272.                 timeLeft = 3
  273.                 gameState = 5
  274.                 if activePlayer == player1 then
  275.                     ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..player2.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  276.                 else
  277.                     ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..player1.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  278.                 end
  279.             elseif gameState == 7 then
  280.                 timeLeft = 7
  281.                 gameState = 8
  282.                 ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À vous de jouer !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  283.             elseif gameState == 8 then
  284.                 local countMiceAlive = 0
  285.                 for k, v in pairs(playerList) do
  286.                     moves[k] = {}
  287.                     if v.winning == true and k ~= activePlayer then
  288.                         playerList[k].winning = false
  289.                         countMiceAlive = countMiceAlive + 1
  290.                     else
  291.                         if k ~= activePlayer then
  292.                             playerList[k].playing = false
  293.                             ui.addTextArea(814, "<p align=\"center\"><font family=\"Verdana\" size=\"17\" color=\"#5f1111\">Tu es éliminé(e) !</font></p>", nil, 154, 37, 491, 30, 0x324650, 0x000000, 1, true)
  294.                             tfm.exec.killPlayer(k)
  295.                         end
  296.                     end
  297.                 end
  298.                 if countMiceAlive > 1 then
  299.                     gameState = 6
  300.                     timeLeft = 3
  301.                     if countMove < 13 then
  302.                         countMove = countMove + 1
  303.                     end
  304.                     ui.removeTextArea(814, nil)
  305.                     ui.addTextArea(10, "<font color=\"#222\" size=\"14\" family=\"Verdana\"><p align=\"center\">Maître du jeu : "..activePlayer.."\n\nNombre de mouvements : "..countMove.."</p></font>", nil, 40, 120, 228, 91, 0, 0, 1, true)
  306.                     ui.addTextArea(851, "<p align=\"center\"><font family=\"Verdana\" size=\"20\" color=\"#222\">À toi de jouer "..activePlayer.." !</font></p>", nil, 8, 240, 784, 30, 0, 0, 1, true)
  307.                    
  308.                 elseif countMiceAlive == 1 then
  309.                     local winner = ""
  310.                     for k,v in pairs(playerList) do
  311.                         if v.playing == true and k ~= activePlayer then
  312.                             winner = k
  313.                             break
  314.                         end
  315.                     end
  316.                     gameState = 0
  317.                     timeLeft = 3
  318.                     countMove = 3
  319.                     eventNewPlayer(admin)
  320.                     tfm.exec.newGame("@7566395")
  321.                     ui.addTextArea(814, "<p align=\"center\"><font family=\"Verdana\" size=\"17\" color=\"#118\">Félicitations à <B><J>"..winner.."</J></B> qui remporte la partie !</font></p>", nil, 100, 38, 600, 30, 0, 0, 1, true)
  322.                     eventNewPlayer(admin)
  323.                 else
  324.                     gameState = 0
  325.                     timeLeft = 3
  326.                     countMove = 3
  327.                     tfm.exec.newGame("@7566395")
  328.                     ui.addTextArea(814, "<p align=\"center\"><font family=\"Verdana\" size=\"17\" color=\"#118\">Wow, tout le monde a perdu :'(</font></p>", nil, 100, 38, 600, 30, 0, 0, 1, true)
  329.                     eventNewPlayer(admin)
  330.                 end
  331.             end
  332.                 closeMenu(nil, 800, 813)
  333.         end
  334.     end
  335. end
  336.  
  337. function ShowArrows(name, table)
  338.     for i=1, 13 do
  339.         ui.removeTextArea(800+i, name)
  340.     end
  341.     if #table % 2 == 0 then
  342.         if #table > 2 then
  343.             for i=1, (#table/2) do
  344.                 ui.addTextArea(800+i, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[i].."</font></p>", name, 385-((#table-i)-(i-1))*30, 45, 30, 24)
  345.             end
  346.             for i=(#table/2)+1, #table do
  347.                 ui.addTextArea(800+i, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[i].."</font></p>", name, 385+(((i*2)-1)-#table)*30, 45, 30, 24)
  348.             end
  349.         elseif #table == 2 then
  350.             ui.addTextArea(801, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[1].."</font></p>", name, 355, 45,30,24)
  351.             ui.addTextArea(802, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[2].."</font></p>", name, 415, 45,30,24)
  352.         end
  353.     elseif #table % 2 ~= 0 then
  354.         if #table > 1 then
  355.             for i=1, math.floor(#table/2) do
  356.                 ui.addTextArea(800+i, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[i].."</font></p>", name, 385-((#table-(2*i))+1)*30, 45, 30,24)
  357.             end
  358.             ui.addTextArea(800+math.ceil(#table/2), "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[math.ceil(#table/2)].."</font></p>", name, 385, 45, 30,24)
  359.             for i=math.ceil(#table/2)+1, #table do
  360.                 ui.addTextArea(800+i, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[i].."</font></p>", name, 385+(((2*i)-#table)-1)*30, 45, 30, 24)
  361.             end
  362.         elseif #table == 1 then
  363.                 ui.addTextArea(801, "<p align=\"center\"><font size=\"16\" face=\"Verdana\">"..table[1].."</font></p>", name, 385, 45, 30, 24)
  364.         end
  365.     end
  366. end
  367. function eventPlayerLeft(name)
  368.     playerList[name] = nil
  369.     if gameState == 1 or gameState == 3 or gameState == 4 or gameState == 5 then
  370.         if name == player1 then
  371.             player1 = ""
  372.             selectPlayers(playerList)
  373.             closeMenu(nil, 800, 813)
  374.         elseif name == player2 then
  375.             player2 = ""
  376.             selectPlayers(playerList)
  377.             closeMenu(nil, 800, 813)
  378.         elseif gameState == 1 then
  379.             selectPlayers(playerList)
  380.         end
  381.     end
  382.     if gameState == 2 then
  383.         if name == activePlayer then
  384.             activePlayer = ""
  385.         end
  386.         selectMDJ(playerList)
  387.     end
  388. end
  389. main()
  390.  
  391. for all in pairs(tfm.get.room.playerList) do eventNewPlayer(all) end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement