Guest User

[Script] Jokenpo

a guest
Oct 16th, 2017
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.24 KB | None | 0 0
  1. for _, v in next, {'AutoShaman', 'AutoTimeLeft', 'AutoNewGame', 'AfkDeath'} do
  2.     tfm.exec['disable' .. v]()
  3. end
  4.  
  5. local data = {}
  6. local player1, player2 = '', ''
  7.  
  8. local jokenpo = {
  9.     keys = {
  10.         [66] = {'Pedra', 65},
  11.         [67] = {'Papel', 85},
  12.         [86] = {'Tesoura', 95}
  13.     },
  14.     time = 10,
  15.     maps = {
  16.         {7289491},
  17.         {'<C><P F="1" Ca="" /><Z><S><S L="800" H="183" X="400" Y="470" T="6" P="0,0,0.3,0.2,0,0,0,0" /><S L="801" o="324650" X="401" H="10" Y="79" T="12" P="0,0,0.3,0.2,0,0,0,0" /><S L="10" o="324650" X="5" H="83" Y="41" T="12" P="0,0,0.3,0.2,0,0,0,0" /><S P="0,0,0.3,0.2,0,0,0,0" L="10" o="324650" H="83" Y="40" T="12" X="797" /><S P="0,0,0.3,0.2,0,0,0,0" L="801" o="324650" H="10" Y="3" T="12" X="400" /><S P="0,0,0.3,0.2,0,0,0,0" L="92" o="760202" X="239" Y="217" T="12" H="10" /><S L="92" o="760202" X="280" H="10" Y="258" T="12" P="0,0,0.3,0.2,90,0,0,0" /><S P="0,0,0.3,0.2,90,0,0,0" L="92" o="760202" H="10" Y="258" T="12" X="196" /><S L="92" o="760202" X="239" H="10" Y="300" T="12" P="0,0,0.3,0.2,0,0,0,0" /><S P="0,0,0.3,0.2,90,0,0,0" L="92" o="d75c8" H="10" Y="258" T="12" X="529" /><S L="92" o="d75c8" H="10" X="570" Y="217" T="12" P="0,0,0.3,0.2,180,0,0,0" /><S L="92" o="d75c8" H="10" X="570" Y="299" T="12" P="0,0,0.3,0.2,180,0,0,0" /><S L="92" o="d75c8" H="10" X="611" Y="258" T="12" P="0,0,0.3,0.2,90,0,0,0" /><S L="10" X="407" H="424" Y="283" T="14" P="0,0,0.3,0.2,0,0,0,0" /></S><D><P C="66694" Y="76" T="34" P="0,0" X="406" /><P C="af1b1f" Y="80" T="34" X="-389" P="0,0" /><DS Y="58" X="409" /><P X="335" Y="461" T="46" P="0,0" /><P X="769" Y="469" T="51" P="0,0" /><P P="0,0" Y="489" T="42" X="32" /><P X="17" Y="463" T="42" P="0,0" /><P P="0,0" Y="435" T="42" X="-18" /><P P="0,0" Y="476" T="51" X="800" /><P X="747" Y="494" T="51" P="0,0" /><P P="0,0" Y="462" T="46" X="136" /><P X="492" Y="445" T="50" P="0,0" /><P P="0,0" Y="445" T="50" X="532" /><P X="572" Y="445" T="50" P="0,0" /><P P="0,0" Y="445" T="50" X="612" /><P X="176" Y="462" T="46" P="0,0" /><P P="0,0" Y="462" T="46" X="216" /><P X="256" Y="462" T="46" P="0,0" /><P P="0,0" Y="462" T="46" X="296" /><P P="0,0" Y="462" T="46" X="376" /><P P="0,0" Y="445" T="50" X="455" /></D><O><O C="14" Y="258" P="0" X="239" /><O C="14" Y="258" P="0" X="570" /></O></Z></C>'}
  18.     },
  19.     nails = {},
  20.     wo = 0,
  21.     winner = ''
  22. }
  23.  
  24. local nextmap = jokenpo.maps[math.random(#jokenpo.maps)]
  25. nextmap = nextmap[math.random(#nextmap)]
  26. tfm.exec.newGame(nextmap)
  27.  
  28. function eventNewPlayer(name)
  29.     local keys = {66, 67, 86}
  30.  
  31.     data[name] = {
  32.         played = false,
  33.         currentemote = 666,
  34.         currentchoice = {},
  35.         ingame = false
  36.     }
  37.  
  38.     for _, v in next, keys do
  39.         system.bindKeyboard(name, v, true)
  40.     end
  41. end
  42. table.foreach(tfm.get.room.playerList, eventNewPlayer)
  43.  
  44. function eventNewGame()
  45.     tfm.exec.setGameTime(99999)
  46.  
  47.     if (jokenpo.wo ~= 0) then
  48.         ui.removeTextArea(jokenpo.wo, nil)
  49.     elseif (jokenpo.winner ~= '') then
  50.         ui.removeTextArea(5, nil)
  51.     end
  52.     ui.removeTextArea(2, nil)
  53.  
  54.     for k, v in next, data do
  55.         v.currentemote = 666
  56.     end
  57.  
  58.     jokenpo.winner = ''
  59.     jokenpo.wo = 0
  60.     jokenpo.time = 10
  61.  
  62.     player1, player2 = '', ''
  63.  
  64.     ui.addTextArea(0, "<font size='30' color='FFFFFF'><a href='event:play1'>Jogar</a>", nil, 10, 200, nil, nil, nil, nil, 50, true)
  65.     ui.addTextArea(1, "<font size='30' color='FFFFFF'><a href='event:play2'>Jogar</a>", nil, 700, 200, nil, nil, nil, nil, 50, true)
  66.  
  67.     local xml = (tfm.get.room.xmlMapInfo.xml)
  68.     if (xml) then
  69.         local nails = {}
  70.         local i = 0
  71.  
  72.         xml = xml:gsub('<O C="14" (.-)/>', function(a)
  73.             i = i + 1
  74.  
  75.             nails[i] = {}
  76.  
  77.             local x = a:match('X="(%d+)"')
  78.             nails[i].x = tonumber(x)
  79.  
  80.             local y = a:match('Y="(%d+)"')
  81.             nails[i].y = tonumber(y)
  82.         end)
  83.  
  84.         jokenpo.nails = nails
  85.     end
  86.  
  87.     table.sort(jokenpo.nails, function(a, b) return a.x < b.x end)
  88.  
  89.     local author = (xml and tfm.get.room.xmlMapInfo.author)
  90.     if (author == '#Module') then
  91.         ui.setMapName('#Jokenpo! Desenvolvido por: Nuncaplagiei')
  92.     else
  93.         ui.setMapName('#Jokenpo! Desenvolvido por: Nuncaplagiei    <bl>|</bl>    Mapa feito por: ' .. author .. '')
  94.     end
  95. end
  96.  
  97. function eventTextAreaCallback(id, name, link)
  98.     if (link == 'play1') then
  99.         if (player1 == '' and player2 ~= name) then
  100.             data[name].ingame = true
  101.             player1 = name
  102.             tfm.exec.movePlayer(name, 50, 370)
  103.  
  104.             ui.removeTextArea(0, nil)
  105.         end
  106.     elseif (link == 'play2') then
  107.         if (player2 == '' and player1 ~= name) then
  108.             data[name].ingame = true
  109.             player2 = name
  110.             tfm.exec.movePlayer(name, 740, 370)
  111.  
  112.             ui.removeTextArea(1, nil)
  113.         end
  114.     end
  115.  
  116.     if (player1 ~= '' and player2 ~= '') then
  117.         ui.addTextArea(2, "<p align='center'><font size='30'>" .. jokenpo.time, nil, 10, 200, 800, nil, nil, nil, 50, true)
  118.     end
  119. end
  120.  
  121. function eventLoop(elapsed, remaining)
  122.     local remaining = (remaining/1000)
  123.  
  124.     for k, v in next, tfm.get.room.playerList do
  125.         if (data[k].ingame and data[k].currentemote ~= 666) then
  126.             tfm.exec.playEmote(k, data[k].currentemote)
  127.         end
  128.     end
  129.  
  130.     if (data[player1] and data[player2]) then
  131.         if (data[player1].played or data[player2].played) then
  132.             local bothplayed = (data[player1].played and data[player2].played)
  133.  
  134.             if (jokenpo.time > 0) then
  135.                 jokenpo.time = jokenpo.time - 0.5
  136.  
  137.                 if (not tostring(jokenpo.time):find('.5')) then
  138.                     ui.updateTextArea(2, "<p align='center'><font size='30'>" .. jokenpo.time, nil)
  139.                 end
  140.             else
  141.                 if (bothplayed) then
  142.                     tfm.exec.addShamanObject(data[player1].currentchoice[2], jokenpo.nails[1].x, jokenpo.nails[1].y)
  143.                     tfm.exec.addShamanObject(data[player2].currentchoice[2], jokenpo.nails[2].x, jokenpo.nails[2].y)
  144.  
  145.                     for k, v in next, data do
  146.                         v.played = false
  147.                         v.currentemote = 666
  148.                     end
  149.  
  150.                     local choices = {['Pedra'] = 'Tesoura', ['Papel'] = 'Pedra', ['Tesoura'] = 'Papel'}
  151.                     jokenpo.winner = (choices[data[player1].currentchoice[1]] == data[player2].currentchoice[1] and player1 or choices[data[player2].currentchoice[1]] == data[player1].currentchoice[1] and player2 or '')
  152.                     if (jokenpo.winner ~= '') then
  153.                         ui.addTextArea(5, "<p align='center'><font size='30'>" .. jokenpo.winner .. " venceu!", nil, 10, 150, 800, nil, nil, nil, 50, true)
  154.                         data[jokenpo.winner].currentemote = 24
  155.                     else
  156.                         ui.addTextArea(5, "<p align='center'><font size='30'>O jogo empatou!", nil, 10, 150, 800, nil, nil, nil, 50, true)
  157.                         jokenpo.winner = 'Empate'
  158.  
  159.                         data[player1].currentemote, data[player2].currentemote = 4, 4
  160.                     end
  161.  
  162.                     tfm.exec.setGameTime(5)
  163.                 else
  164.                     jokenpo.wo = 6
  165.                     ui.addTextArea(6, "<p align='center'><font size='30'>" .. (not data[player1].played and player1 or not data[player2].played and player2) .. " arregou!", nil, 10, 150, 800, nil, nil, nil, 50, true)
  166.                     tfm.exec.setGameTime(5)
  167.  
  168.                     for k, v in next, data do
  169.                         if (v.played) then
  170.                             v.currentemote = 1
  171.  
  172.                             v.played = false
  173.                         end
  174.                     end
  175.                 end
  176.  
  177.                 ui.removeTextArea(2, nil)
  178.             end
  179.         end
  180.     end
  181.  
  182.     if (remaining <= 0) then
  183.         local nextmap = jokenpo.maps[math.random(#jokenpo.maps)]
  184.         nextmap = nextmap[math.random(#nextmap)]
  185.         tfm.exec.newGame(nextmap)
  186.     end
  187. end
  188.  
  189. function eventKeyboard(name, key)
  190.     if (jokenpo.keys[key] and data[name].ingame) then
  191.         if (not data[name].played and jokenpo.time > 0) then
  192.             data[name].played = true
  193.             data[name].currentemote = 26
  194.             data[name].currentchoice = jokenpo.keys[key]
  195.         end
  196.     end
  197. end
Add Comment
Please, Sign In to add comment