Advertisement
Tortuegreen

Cass'Case pv1.1 [v1.11]

Sep 6th, 2015
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 14.01 KB | None | 0 0
  1. ------------------------------------------
  2. -- Module : Cass'Case (par Tortuegreen) --
  3. ------------------------------------------
  4.  
  5. tfm.exec.disableAutoNewGame (true)
  6. tfm.exec.disableAutoShaman (true)
  7. tfm.exec.disableAutoScore (true)
  8. tfm.exec.disableAfkDeath (true)
  9.  
  10. players = {}
  11. spectators = {}
  12. position = {}
  13. areaRem = {}
  14. params = {}
  15. idCaseP1 = {01,02,03,04,11,12,13,14,21,22,23,24}
  16. idCaseP2 = {05,06,07,08,15,16,17,18,25,26,27,28}
  17. idCassP1 = {105,106,107,108,115,116,117,118,125,126,127,128}
  18. idCassP2 = {101,102,103,104,111,112,113,114,121,122,123,124}
  19. lang = {}
  20. lang.fr = {}
  21. lang.en = {} -- not yet
  22. currTour = 1
  23. tmrLockTP = 0
  24. tmrKill = 0
  25. changeCote = true
  26.  
  27. function putAdversCase()
  28.     local hCaseBase = 95
  29.     local wCaseBase = 107
  30.     for k,v in pairs(idCassP1) do
  31.         ui.addTextArea(v, "<p align='center'><br><br><font color='#C2C2DA' face='aharoni' size='51'><a href='event:areaIdToRem"..tostring(v).."'>?</a></font></p>", players[1], 100*(v-(101+10*(tonumber(tostring(v):sub(2,2))))), 28+115*(tonumber(tostring(v):sub(2,2))), hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 1, true)
  32.     end
  33.     for k,v in pairs(idCassP2) do
  34.         ui.addTextArea(v, "<p align='center'><br><br><font color='#C2C2DA' face='aharoni' size='51'><a href='event:areaIdToRem"..tostring(i).."'>?</a></font></p>", players[2], 100*(v-(101+10*(tonumber(tostring(v):sub(2,2)))))+5, 28+115*(tonumber(tostring(v):sub(2,2))), hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 1, true)
  35.     end
  36. end
  37.  
  38. function putTPcase()
  39.     local hCaseBase = 95
  40.     local wCaseBase = 110
  41.     for k,v in pairs(idCaseP1) do
  42.         if v < 10 then
  43.             ui.addTextArea(v, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'><a href='event:areaIdToTP"..tostring(v).."'>Ici</a></font></p>", players[1], 100*(v-1)+2, 20, hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 0, true)
  44.         else
  45.             ui.addTextArea(v, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'><a href='event:areaIdToTP"..tostring(v).."'>Ici</a></font></p>", players[1], 100*(v-(1+10*(tonumber(tostring(v):sub(1,1)))))+2, 20+115*(tonumber(tostring(v):sub(1,1))), hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 0, true)
  46.         end
  47.     end
  48.     for k,v in pairs(idCaseP2) do
  49.         if v < 10 then
  50.             ui.addTextArea(v, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'><a href='event:areaIdToTP"..tostring(v).."'>Ici</a></font></p>", players[2], 100*(v-1)+2, 20, hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 0, true)
  51.         else
  52.             ui.addTextArea(v, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'><a href='event:areaIdToTP"..tostring(v).."'>Ici</a></font></p>", players[2], 100*(v-(1+10*(tonumber(tostring(v):sub(1,1)))))+2, 20+115*(tonumber(tostring(v):sub(1,1))), hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 0, true)
  53.         end
  54.     end
  55.     ui.addTextArea(0, "<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'><a href='event:openHelp'><b>?</b></a></font></p>", nil, 775, 24, 25, weight, 0x6A7495, 0x6A7495, 1, true)
  56. end
  57.  
  58. function putBanNames()
  59.     ui.addTextArea(30, "", nil, 0, 375, 800, 19, 0x231912, 0x231912, 1, true)
  60.     ui.addTextArea(31, "<p align='center'><font color='#C2C2DA' face='aharoni' size='15'>"..players[1].."</font></p>", nil, 125, 375, 150, weight, 0x231912, 0x0C0907, 1, true)
  61.     ui.addTextArea(32, "<p align='center'><font color='#C2C2DA' face='aharoni' size='15'>"..players[2].."</font></p>", nil, 525, 375, 150, weight, 0x231912, 0x0C0907, 1, true)
  62.     ui.addTextArea(33, "<p align='center'><font color='#C2C2DA' face='aharoni' size='15'>vs</font></p>", nil, 375, 375, 50, weight, 0x231912, 0x0C0907, 1, true)
  63. end
  64.  
  65. function removeTextAreaId(a, b, c)
  66.     if c == nil then
  67.         for i=a,b do
  68.             ui.removeTextArea(i, nil)
  69.         end
  70.     else
  71.         for k,v in pairs(_G["idCaseP"..c]) do
  72.             ui.removeTextArea(v, players[c])
  73.         end
  74.     end
  75. end
  76.  
  77. function eventTextAreaCallback (i, n, cb)
  78.     if cb:sub(0,11) == "areaIdToRem" then
  79.         Xi = 100*(i-(101+10*tonumber(tostring(i):sub(2,2))))+2.5
  80.         Yi = 56+115*tonumber(tostring(i):sub(2,2))
  81.         k = tonumber(tostring(i):sub(3))
  82.         if k < 5 then k = 2 else k = 1 end
  83.         if k == currTour then      
  84.             if verifyAreaId(i) then
  85.                 ui.removeTextArea(i, nil)
  86.                 ui.removeTextArea(i-100, nil)
  87.                 for k,v in pairs(spectators) do
  88.                     ui.addTextArea(i+100, "<p align='center'><font color='#FF5F00' face='aharoni' size='60'>X</font></p>", v, Xi, Yi, 95, 110, 0x3C2A1D, 0x3C2A1D, 0, true)
  89.                 end
  90.                 table.insert(areaRem, i-100)
  91.                 if currTour == 1 then
  92.                     l = 2
  93.                 else l = 1
  94.                 end
  95.                 if position[players[l]] == i-100 then
  96.                     updateAction(tonumber(3+k))
  97.                     _G["p"..l.."kill"] = true
  98.                     currTour = 0
  99.                     tmrKill = 5
  100.                     params[l].canDie = true
  101.                     ui.removeTextArea(tonumber(position[players[k]]+100), nil)
  102.                 else                   
  103.                     updateAction(tonumber(k*2))
  104.                     if currTour == 1 then
  105.                         currTour = 2
  106.                     else currTour,tmrLockTP = 0,5
  107.                     end
  108.                 end
  109.             end
  110.         end
  111.     elseif cb:sub(0,10) == "areaIdToTP" then
  112.         Xi = 100*(i-(1+10*tonumber(tostring(i+100):sub(2,2))))+50
  113.         Yi = 10+130*tonumber(tostring(i+100):sub(2,2))+65
  114.         position[n] = i
  115.         tfm.exec.movePlayer (n, Xi, Yi, false)
  116.         if n == players[1] then
  117.             removeTextAreaId(0, 0, 1)
  118.             params[1].canMove = false
  119.         elseif n == players[2] then
  120.             removeTextAreaId(0, 0, 2)
  121.             params[2].canMove = false
  122.         end
  123.         verifyTPed()
  124.     elseif cb == "openHelp" then
  125.         ui.removeTextArea(0, n)
  126.         heightBase = 640
  127.         weightBase = 320
  128.         xBase = math.ceil((800-heightBase)/2)
  129.         yBase = math.ceil((400-weightBase)/2)
  130.         ui.addTextArea(231, "", n, xBase, yBase, heightBase, weightBase, 0x2D211A, 0x2D211A, 0.8, true)
  131.         ui.addTextArea(232, "", n, tonumber(xBase+1), tonumber(yBase+1), tonumber(heightBase-2), tonumber(weightBase-2), 0x986742, 0x986742, 1, true)
  132.         ui.addTextArea(233, "", n, tonumber(xBase+4), tonumber(yBase+4), tonumber(heightBase-8), tonumber(weightBase-8), 0x171311, 0x171311, 1, true)
  133.         ui.addTextArea(234, "", n, tonumber(xBase+5), tonumber(yBase+5), tonumber(heightBase-10), tonumber(weightBase-10), 0x0C191C, 0x0C191C, 1, true)
  134.         ui.addTextArea(235, "", n, tonumber(xBase+6), tonumber(yBase+6), tonumber(heightBase-12), tonumber(weightBase-12), 0x24474D, 0x24474D, 1, true)
  135.         ui.addTextArea(236, "", n, tonumber(xBase+7), tonumber(yBase+7), tonumber(heightBase-14), tonumber(weightBase-14), 0x183337, 0x183337, 1, true)
  136.         ui.addTextArea(237, "", n, tonumber(xBase+8), tonumber(yBase+8), tonumber(heightBase-16), tonumber(weightBase-16), 0x122528, 0x122528, 1, true)
  137.         ui.addTextArea(238, text.rules, n, tonumber(xBase+8), tonumber(yBase+8), tonumber(heightBase-16), tonumber(weightBase-50), 0, 0, 0, true)
  138.         ui.addTextArea(239, "", n, tonumber(xBase+16), tonumber(yBase+weightBase-33), tonumber(heightBase-34), 18, 0x5D7D90, 0x5D7D90, 1, true)
  139.         ui.addTextArea(240, "", n, tonumber(xBase+18), tonumber(yBase+weightBase-31), tonumber(heightBase-34), 18, 0x11171C, 0x11171C, 1, true)
  140.         ui.addTextArea(241, "<p align='center'><font color='#C2C2DA' size='11'><a href='event:closeHelp'>Fermer cette fenêtre</a></font></p>", n, tonumber(xBase+17), tonumber(yBase+weightBase-32), tonumber(heightBase-34), 18, 0x3C5064, 0x3C5064, 1, true)
  141.     elseif cb == "closeHelp" then
  142.         ui.addTextArea(0, "<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'><a href='event:openHelp'><b>?</b></a></font></p>", nil, 775, 24, 25, weight, 0x6A7495, 0x6A7495, 1, true)
  143.         for i=231,241 do
  144.             ui.removeTextArea(i, n)
  145.         end
  146.     end
  147. end
  148.  
  149. function updatePlayersList()
  150.     players = {}
  151.     for name in pairs(tfm.get.room.playerList) do
  152.         table.insert(players, name)
  153.     end
  154.     table.sort(players, function () return math.random(2)==1 end )
  155.     spectators = players
  156. end
  157.  
  158. function resetAllScore()
  159.     for n in pairs(tfm.get.room.playerList) do
  160.         tfm.exec.setPlayerScore (n, 0, false)
  161.     end
  162. end
  163.  
  164. function verifyTPed()
  165.     if not params[1].canMove and not params[2].canMove then
  166.         updateAction(1)
  167.         currTour = 1
  168.         params[1].canMove = true
  169.         params[2].canMove = true
  170.     end
  171. end
  172.  
  173. function updateAction(id)
  174.     tfm.exec.setUIMapName ("<font color='#C2C2DA'>Module : Cass'Case</font>   <font color='#60608F'>|</font>   <font color='#C2C2DA'>Action : </font> <font color='#BABD2F'>".._G["text"]["action"..id].."</font>")
  175.     if id == 4 then    
  176.         putTPcase()
  177.         for k,v in pairs(areaRem) do
  178.             ui.removeTextArea(v, nil)
  179.         end
  180.     end
  181. end
  182.  
  183. function verifyAreaId(i)
  184.     for k,v in pairs(_G["idCassP"..currTour]) do
  185.         if v==i then
  186.             return true
  187.         end
  188.     end
  189. end
  190.  
  191. function eventLoop(t1, t2)
  192.     tmrLockTP = tmrLockTP-0.5
  193.     if tmrLockTP == 0.5 then
  194.         removeTextAreaId(0, 0, 1)
  195.         removeTextAreaId(0, 0, 2)
  196.         updateAction(1)
  197.         currTour = 1
  198.     end
  199.     tmrKill = tmrKill-0.5
  200.     if tmrKill == 2.5 then
  201.         if params[1].canDie then
  202.             tfm.exec.killPlayer(players[1])
  203.             tfm.exec.setPlayerScore (players[2], 5, true)
  204.         else
  205.             tfm.exec.killPlayer(players[2])
  206.             tfm.exec.setPlayerScore (players[1], 5, true)
  207.         end
  208.     elseif tmrKill == 0.5 then
  209.         reset()
  210.     end
  211. end
  212.  
  213. function eventPlayerLeft(name)
  214.     for k,v in pairs(players) do
  215.         if name == v then
  216.             reset()
  217.         end
  218.     end
  219. end
  220.  
  221. function eventNewPlayer(name)
  222.     ui.addTextArea(230, "<p align='center'><br><br><br><br><br><br><br><br><br><br><br><br><font color='#C2C2DA' face='DejaVu Sans Mono' size='30'>Vous êtes arrivé en cours de partie. Veuillez attendre la fin...</font></p>", name, 0, 0, 800, 400, 0x3C2A1D, 0x3C2A1D, 1, true)
  223.     ui.addTextArea(0, "<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'><a href='event:openHelp'><b>?</b></a></font></p>", nil, 775, 24, 25, weight, 0x6A7495, 0x6A7495, 1, true)
  224.     if #players < 2 then
  225.         resetAllScore()
  226.         reset()
  227.     end
  228. end
  229.  
  230. function reset()
  231.     updatePlayersList()
  232.     if #players >= 2 then      
  233.         removeTextAreaId(1, 230)
  234.         players = {}
  235.         position = {}
  236.         areaRem = {}
  237.         currTour = 1
  238.         tmrLockTP = 0
  239.         tmrKill = 0
  240.         updatePlayersList()
  241.         for i=1,2 do
  242.             params[i] = {
  243.                 canMove = true,
  244.                 canDie = false
  245.             }
  246.         end
  247.         if #players >= 3 then
  248.             for v in pairs(tfm.get.room.playerList) do
  249.                 if v ~= players[1] and v ~= players[2] then
  250.                     local hCaseBase = 95
  251.                     local wCaseBase = 107
  252.                     for i=101,128 do
  253.                         if (i >= 101 and i <= 108) then
  254.                             ui.addTextArea(i, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'>?</font></p>", v, (i-101)*100+3, 28, hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 1, true)
  255.                         elseif (i >= 111 and i <= 118) then
  256.                             ui.addTextArea(i, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'>?</font></p>", v, (i-111)*100+3, 143, hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 1, true)
  257.                         elseif (i >= 121 and i <= 128) then
  258.                             ui.addTextArea(i, "<p align='center'><br><br><br><font color='#C2C2DA' face='aharoni' size='51'>?</font></p>", v, (i-121)*100+3, 258, hCaseBase, wCaseBase, 0x3C2A1D, 0x5D4220, 1, true)
  259.                         end
  260.                     end
  261.                 end
  262.             end
  263.         end
  264.         lang.fr = {
  265.             action1 = "Au tour de "..players[1].." de détruire une case !",
  266.             action2 = "Au tour de "..players[2].." de détruire une case !",
  267.             action3 = "Chacun clique sur la case qu'il veut rejoindre.",
  268.             action4 = "Changez de case si vous le souhaitez. (5 sec)",
  269.             action5 = players[2].." a été trouvé. Bravo "..players[1].." !!!",
  270.             action6 = players[1].." a été trouvé. Bravo "..players[2].." !!!",
  271.             rules = "<p align='center'><font color='#EB1D51' face='DejaVu Sans Mono' size='25'><b>X Cass'Case X</b></font></p>"
  272.             .."<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'>Trouvez l'autre en premier</font></p><br>"
  273.             .."<p align='center'><font color='#BABD2F' face='DejaVu Sans Mono' size='15'>La carte est partagée en 2 parties : vous n'en voyez qu'une. A chaque début de partie, vous choisissez une case de votre côté. Puis chacun son tour, vous devrez détruire une des cases de l'adversaire. Dès que les 2 côtés l'ont fait, vous avez la possibilité de changer de case pendant 5 secondes avant de continuer à détruire des cases.</font></p><br>"
  274.             .."<p align='left'><font color='#C2C2DA' face='DejaVu Sans Mono' size='15'><b>Avertissements</b><br>1/ Si vous parlez dans le tchat avec un message trop long, l'adversaire pourrait voir dépasser la bulle de tchat dans une case détruire ou à lui.<br>2/ Si il y a plus de 2 joueurs dans le salon, ceux non-choisis ne voyent pas la position des joueurs.</font></p>"
  275.         }
  276.         lang.en = {
  277.             action1 = "Au tour de "..players[1].." de détruire une case !",
  278.             action2 = "Au tour de "..players[2].." de détruire une case !",
  279.             action3 = "Chacun clique sur la case qu'il veut rejoindre.",
  280.             action4 = "Changez de case si vous le souhaitez. (5 sec)",
  281.             action5 = players[2].." a été trouvé. Bravo "..players[1].." !!!",
  282.             action6 = players[1].." a été trouvé. Bravo "..players[2].." !!!",
  283.             rules = "<p align='center'><font color='#EB1D51' face='DejaVu Sans Mono' size='25'><b>X Cass'Case X</b></font></p>"
  284.             .."<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'>Trouvez l'autre en premier</font></p><br>"
  285.             .."<p align='center'><font color='#BABD2F' face='DejaVu Sans Mono' size='15'>La carte est partagée en 2 parties : vous n'en voyez qu'une. A chaque début de partie, vous choisissez une case de votre côté. Puis chacun son tour, vous devrez détruire une des cases de l'adversaire. Dès que les 2 côtés l'ont fait, vous avez la possibilité de changer de case pendant 5 secondes avant de continuer à détruire des cases.</font></p><br>"
  286.             .."<p align='left'><font color='#C2C2DA' face='DejaVu Sans Mono' size='15'><b>Avertissements</b><br>1/ Si vous parlez dans le tchat avec un message trop long, l'adversaire pourrait voir dépasser la bulle de tchat dans une case détruire ou à lui.<br>2/ Si il y a plus de 2 joueurs dans le salon, ceux non-choisis ne voyent pas la position des joueurs.</font></p>"
  287.         } -- not translate
  288.         text = lang.fr
  289.         tfm.exec.newGame("@6073672")
  290.         updateAction(3)
  291.         putAdversCase()
  292.         putTPcase()
  293.         putBanNames()
  294.     else
  295.         lang.fr = {
  296.             action7 = "Vous devez être 2 ou + pour pouvoir jouer."
  297.         }
  298.         lang.en = {
  299.             action7 = "You need to be 2 or more to play."
  300.         }
  301.         text = lang.fr
  302.         removeTextAreaId(1, 230)
  303.         tfm.exec.newGame (0)
  304.         updateAction(7)
  305.     end
  306. end
  307.  
  308. resetAllScore()
  309. reset()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement