Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------
- -- Module : Cass'Case (par Tortuegreen) --
- ------------------------------------------
- tfm.exec.disableAutoNewGame (true)
- tfm.exec.disableAutoShaman (true)
- tfm.exec.disableAutoScore (true)
- tfm.exec.disableAfkDeath (true)
- players = {}
- spectators = {}
- position = {}
- areaRem = {}
- params = {}
- idCaseP1 = {01,02,03,04,11,12,13,14,21,22,23,24}
- idCaseP2 = {05,06,07,08,15,16,17,18,25,26,27,28}
- idCassP1 = {105,106,107,108,115,116,117,118,125,126,127,128}
- idCassP2 = {101,102,103,104,111,112,113,114,121,122,123,124}
- lang = {}
- lang.fr = {}
- lang.en = {} -- not yet
- currTour = 1
- tmrLockTP = 0
- tmrKill = 0
- changeCote = true
- function putAdversCase()
- local hCaseBase = 95
- local wCaseBase = 107
- for k,v in pairs(idCassP1) do
- 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)
- end
- for k,v in pairs(idCassP2) do
- 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)
- end
- end
- function putTPcase()
- local hCaseBase = 95
- local wCaseBase = 110
- for k,v in pairs(idCaseP1) do
- if v < 10 then
- 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)
- else
- 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)
- end
- end
- for k,v in pairs(idCaseP2) do
- if v < 10 then
- 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)
- else
- 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)
- end
- end
- 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)
- end
- function putBanNames()
- ui.addTextArea(30, "", nil, 0, 375, 800, 19, 0x231912, 0x231912, 1, true)
- 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)
- 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)
- 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)
- end
- function removeTextAreaId(a, b, c)
- if c == nil then
- for i=a,b do
- ui.removeTextArea(i, nil)
- end
- else
- for k,v in pairs(_G["idCaseP"..c]) do
- ui.removeTextArea(v, players[c])
- end
- end
- end
- function eventTextAreaCallback (i, n, cb)
- if cb:sub(0,11) == "areaIdToRem" then
- Xi = 100*(i-(101+10*tonumber(tostring(i):sub(2,2))))+2.5
- Yi = 56+115*tonumber(tostring(i):sub(2,2))
- k = tonumber(tostring(i):sub(3))
- if k < 5 then k = 2 else k = 1 end
- if k == currTour then
- if verifyAreaId(i) then
- ui.removeTextArea(i, nil)
- ui.removeTextArea(i-100, nil)
- for k,v in pairs(spectators) do
- 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)
- end
- table.insert(areaRem, i-100)
- if currTour == 1 then
- l = 2
- else l = 1
- end
- if position[players[l]] == i-100 then
- updateAction(tonumber(3+k))
- _G["p"..l.."kill"] = true
- currTour = 0
- tmrKill = 5
- params[l].canDie = true
- ui.removeTextArea(tonumber(position[players[k]]+100), nil)
- else
- updateAction(tonumber(k*2))
- if currTour == 1 then
- currTour = 2
- else currTour,tmrLockTP = 0,5
- end
- end
- end
- end
- elseif cb:sub(0,10) == "areaIdToTP" then
- Xi = 100*(i-(1+10*tonumber(tostring(i+100):sub(2,2))))+50
- Yi = 10+130*tonumber(tostring(i+100):sub(2,2))+65
- position[n] = i
- tfm.exec.movePlayer (n, Xi, Yi, false)
- if n == players[1] then
- removeTextAreaId(0, 0, 1)
- params[1].canMove = false
- elseif n == players[2] then
- removeTextAreaId(0, 0, 2)
- params[2].canMove = false
- end
- verifyTPed()
- elseif cb == "openHelp" then
- ui.removeTextArea(0, n)
- heightBase = 640
- weightBase = 320
- xBase = math.ceil((800-heightBase)/2)
- yBase = math.ceil((400-weightBase)/2)
- ui.addTextArea(231, "", n, xBase, yBase, heightBase, weightBase, 0x2D211A, 0x2D211A, 0.8, true)
- ui.addTextArea(232, "", n, tonumber(xBase+1), tonumber(yBase+1), tonumber(heightBase-2), tonumber(weightBase-2), 0x986742, 0x986742, 1, true)
- ui.addTextArea(233, "", n, tonumber(xBase+4), tonumber(yBase+4), tonumber(heightBase-8), tonumber(weightBase-8), 0x171311, 0x171311, 1, true)
- ui.addTextArea(234, "", n, tonumber(xBase+5), tonumber(yBase+5), tonumber(heightBase-10), tonumber(weightBase-10), 0x0C191C, 0x0C191C, 1, true)
- ui.addTextArea(235, "", n, tonumber(xBase+6), tonumber(yBase+6), tonumber(heightBase-12), tonumber(weightBase-12), 0x24474D, 0x24474D, 1, true)
- ui.addTextArea(236, "", n, tonumber(xBase+7), tonumber(yBase+7), tonumber(heightBase-14), tonumber(weightBase-14), 0x183337, 0x183337, 1, true)
- ui.addTextArea(237, "", n, tonumber(xBase+8), tonumber(yBase+8), tonumber(heightBase-16), tonumber(weightBase-16), 0x122528, 0x122528, 1, true)
- ui.addTextArea(238, text.rules, n, tonumber(xBase+8), tonumber(yBase+8), tonumber(heightBase-16), tonumber(weightBase-50), 0, 0, 0, true)
- ui.addTextArea(239, "", n, tonumber(xBase+16), tonumber(yBase+weightBase-33), tonumber(heightBase-34), 18, 0x5D7D90, 0x5D7D90, 1, true)
- ui.addTextArea(240, "", n, tonumber(xBase+18), tonumber(yBase+weightBase-31), tonumber(heightBase-34), 18, 0x11171C, 0x11171C, 1, true)
- 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)
- elseif cb == "closeHelp" then
- 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)
- for i=231,241 do
- ui.removeTextArea(i, n)
- end
- end
- end
- function updatePlayersList()
- players = {}
- for name in pairs(tfm.get.room.playerList) do
- table.insert(players, name)
- end
- table.sort(players, function () return math.random(2)==1 end )
- spectators = players
- end
- function resetAllScore()
- for n in pairs(tfm.get.room.playerList) do
- tfm.exec.setPlayerScore (n, 0, false)
- end
- end
- function verifyTPed()
- if not params[1].canMove and not params[2].canMove then
- updateAction(1)
- currTour = 1
- params[1].canMove = true
- params[2].canMove = true
- end
- end
- function updateAction(id)
- 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>")
- if id == 4 then
- putTPcase()
- for k,v in pairs(areaRem) do
- ui.removeTextArea(v, nil)
- end
- end
- end
- function verifyAreaId(i)
- for k,v in pairs(_G["idCassP"..currTour]) do
- if v==i then
- return true
- end
- end
- end
- function eventLoop(t1, t2)
- tmrLockTP = tmrLockTP-0.5
- if tmrLockTP == 0.5 then
- removeTextAreaId(0, 0, 1)
- removeTextAreaId(0, 0, 2)
- updateAction(1)
- currTour = 1
- end
- tmrKill = tmrKill-0.5
- if tmrKill == 2.5 then
- if params[1].canDie then
- tfm.exec.killPlayer(players[1])
- tfm.exec.setPlayerScore (players[2], 5, true)
- else
- tfm.exec.killPlayer(players[2])
- tfm.exec.setPlayerScore (players[1], 5, true)
- end
- elseif tmrKill == 0.5 then
- reset()
- end
- end
- function eventPlayerLeft(name)
- for k,v in pairs(players) do
- if name == v then
- reset()
- end
- end
- end
- function eventNewPlayer(name)
- 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)
- 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)
- if #players < 2 then
- resetAllScore()
- reset()
- end
- end
- function reset()
- updatePlayersList()
- if #players >= 2 then
- removeTextAreaId(1, 230)
- players = {}
- position = {}
- areaRem = {}
- currTour = 1
- tmrLockTP = 0
- tmrKill = 0
- updatePlayersList()
- for i=1,2 do
- params[i] = {
- canMove = true,
- canDie = false
- }
- end
- if #players >= 3 then
- for v in pairs(tfm.get.room.playerList) do
- if v ~= players[1] and v ~= players[2] then
- local hCaseBase = 95
- local wCaseBase = 107
- for i=101,128 do
- if (i >= 101 and i <= 108) then
- 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)
- elseif (i >= 111 and i <= 118) then
- 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)
- elseif (i >= 121 and i <= 128) then
- 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)
- end
- end
- end
- end
- end
- lang.fr = {
- action1 = "Au tour de "..players[1].." de détruire une case !",
- action2 = "Au tour de "..players[2].." de détruire une case !",
- action3 = "Chacun clique sur la case qu'il veut rejoindre.",
- action4 = "Changez de case si vous le souhaitez. (5 sec)",
- action5 = players[2].." a été trouvé. Bravo "..players[1].." !!!",
- action6 = players[1].." a été trouvé. Bravo "..players[2].." !!!",
- rules = "<p align='center'><font color='#EB1D51' face='DejaVu Sans Mono' size='25'><b>X Cass'Case X</b></font></p>"
- .."<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'>Trouvez l'autre en premier</font></p><br>"
- .."<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>"
- .."<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>"
- }
- lang.en = {
- action1 = "Au tour de "..players[1].." de détruire une case !",
- action2 = "Au tour de "..players[2].." de détruire une case !",
- action3 = "Chacun clique sur la case qu'il veut rejoindre.",
- action4 = "Changez de case si vous le souhaitez. (5 sec)",
- action5 = players[2].." a été trouvé. Bravo "..players[1].." !!!",
- action6 = players[1].." a été trouvé. Bravo "..players[2].." !!!",
- rules = "<p align='center'><font color='#EB1D51' face='DejaVu Sans Mono' size='25'><b>X Cass'Case X</b></font></p>"
- .."<p align='center'><font color='#C2C2DA' face='DejaVu Sans Mono' size='18'>Trouvez l'autre en premier</font></p><br>"
- .."<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>"
- .."<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>"
- } -- not translate
- text = lang.fr
- tfm.exec.newGame("@6073672")
- updateAction(3)
- putAdversCase()
- putTPcase()
- putBanNames()
- else
- lang.fr = {
- action7 = "Vous devez être 2 ou + pour pouvoir jouer."
- }
- lang.en = {
- action7 = "You need to be 2 or more to play."
- }
- text = lang.fr
- removeTextAreaId(1, 230)
- tfm.exec.newGame (0)
- updateAction(7)
- end
- end
- resetAllScore()
- reset()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement