[Script] x1 Lua Team

Sim_pro

Mouse
Code:
---
-- RACING 3VS3
-- Escrito por Eshkation 23/06/2016
-- the cake is not a lie
---
 
tfm.exec.disableAutoShaman()
tfm.exec.disableAutoNewGame()
tfm.exec.disableAutoTimeLeft()
 
local ADMINISTRADOR = "+speed" -- CHANGE TO YOUR NICKNAME, SO YOU WILL BE GAME ADMIN
local WINS = 10 -- POINTS TO WIN THE GAME
system.disableChatCommandDisplay("np", true)
 
--[[
After running the script, use the command !team1 Players and !team2 Players to set both players in the specified team
Then you just need to press GO!
Type !np @mapcode to run the next map.
Type !score team1/team2 number to change its score.
]]
 
local teams = {
    [1] = {},
    [2] = {},
}
local points = {
    [1] = 0,
    [2] = 0,
}
local isfirst = false
local gameRunning = false
local winTime = false
local playersInGame = {}
local maps = {
     305999, 246873, 342807, 390854, 287564, 412850, 374647, 100885, 381523, 408370, 126066, 219213, 246858, 127580, 129806, 310252, 407659, 127196, 100636, 304935, 445837, 125061, 342481, 342536, 383655, 444302, 367453, 109209, 395537, 119464, 100951, 433463, 107474, 133323, 220717, 105820, 316261, 118998, 129776, 287469, 338159, 273954, 305997, 342355, 126933, 293954, 260846, 432084, 258884, 427235, 114562, 314493, 443643, 279412, 287977, 313763, 123289, 106785, 369642, 438820, 265777, 328357, 312046, 385519, 121929, 102891, 113923, 103877, 106703, 115601, 101963, 121863, 103580
}
local colors = {
    [1] = "ff6347",
    [2] = "19b5fe"
}
local queue = {}
 
function newMap()
    local mapcode = maps[math.random(#maps)]
    if #queue > 0 then
        mapcode = queue[1]
        table.remove(queue, 1)
    end
    tfm.exec.newGame(mapcode)
    for player, data in pairs(tfm.get.room.playerList) do
        if not playersInGame[player] then
            tfm.exec.killPlayer(player)
        end
    end
    tfm.exec.setGameTime(60)
end
 
function eventPlayerWon(player)
    if not isfirst then
        isfirst = true
        tfm.exec.setGameTime(5)
        if table.contains(teams[1], player) then
            tfm.exec.setGameTime(5)
            for i = 0, 3 do
                defaultEffect(9, {13}, math.random(800), math.random(400), 20)
            end
            points[1] = points[1]+1
        elseif table.contains(teams[2], player) then
            tfm.exec.setGameTime(5)
            for i = 0, 3 do
                defaultEffect(9, {9}, math.random(800), math.random(400), 20)
            end
            points[2] = points[2]+1
        else
            isfirst = false
        end
        winner = false
        if points[1] >= WINS then
            winner = 1
        elseif points[2] >= WINS then
            winner = 2
        end
        if winner then
            gameRunning = false
            winTime = os.time()
            ui.addTextArea(20, string.format("<p align='center'><font size='37' color='#000000'>TEAM %s IS THE WINNER!", winner), nil, 0, 171, 800, 500, 0, 0, 0, true)
            ui.addTextArea(21, string.format("<p align='center'><font size='37' color='#000000'>TEAM %s IS THE WINNER!", winner), nil, 1, 170, 800, 500, 0, 0, 0, true)
            ui.addTextArea(22, string.format("<p align='center'><font size='37' color='#%s'>TEAM %s IS THE WINNER!", colors[winner], winner), nil, 1, 170, 800, 500, 0, 0, 0, true)
        end
        displayScore()
    end
end
 
function eventLoop(elapsed, remain)
    if gameRunning then
        remain = remain/1000
        if remain < 0 then
            remain = 100
            newMap()
        end
    else
        if winTime then
            if winTime > os.time()-30000 then
                for i = 0, 2 do
                    defaultEffect(9, {11, 9, 0, 13}, math.random(800), math.random(400), 80)
                end
            else
                winTime = false
                ui.removeTextArea(20)
                ui.removeTextArea(21)
                ui.removeTextArea(22)
                displayTeams()
                teams = {
                    [1] = {},
                    [2] = {},
                }
                points = {
                    [1] = 0,
                    [2] = 0,
                }
                playersInGame = {}
            end
        end
    end
end
 
function eventChatCommand(player, command)
    if player:lower() == ADMINISTRADOR:lower() then
        args = string.split(command, " ")
        if args[1] == "team1" then
            table.remove(args, 1)
            teams[1] = {}
            points[1] = 0
            for index, player in pairs(args) do
                table.insert(teams[1], player)
                playersInGame[player] = true
            end
            displayTeams()
 
        elseif args[1] == "team2" then
            table.remove(args, 1)
            teams[2] = {}
            points[2] = 0
            for index, player in pairs(args) do
                table.insert(teams[2], player)
                playersInGame[player] = true
            end
            displayTeams()
 
        elseif args[1] == "score" then
            if args[2] and args[3] then
                local team = tonumber(args[2]:match("team(%d+)") or 0)
                if team > 0 and team < 3 then
                    local newScore = tonumber(args[3]) or points[team]
                    points[team] = newScore
                    displayScore()
                end
            end
        elseif args[1] == "np" then
            if args[2] then
                table.insert(queue, args[2])
            end
        end
    end
end
 
function eventNewGame()
    if gameRunning then
        isfirst = false
        for i, p in pairs(teams[1]) do
            tfm.exec.setNameColor(p, "0x"..colors[1])
        end
        for i, p in pairs(teams[2]) do
            tfm.exec.setNameColor(p, "0x"..colors[2])
        end
        displayScore()
    end
end
 
function displayScore()
    ui.addTextArea(17, string.format("<p align='center'><font size='23' color='#000000'>%s x %s", points[1], points[2]), nil, 0, 21, 800, 30, 0, 0, 0, true)
    ui.addTextArea(18, string.format("<p align='center'><font size='23' color='#000000'>%s x %s", points[1], points[2]), nil, 1, 20, 800, 30, 0, 0, 0, true)
    ui.addTextArea(19, string.format("<p align='center'><font size='23'><font color='#%s'>%s<N> x <font color='#%s'>%s", colors[1], points[1], colors[2], points[2]), nil, 0, 20, 800, 30, 0, 0, 0, true)
end
 
function displayTeams()
    ui.addTextArea(1, "", nil, 199, 69, 400, 260, 0x5A7A8B, 0x5A7A8B, 1, true)
    ui.addTextArea(2, "", nil, 201, 71, 400, 260, 0x0E1417, 0x0E1417, 1, true)
    ui.addTextArea(3, "", nil, 200, 70, 400, 260, 0x324650, 0x324650, 1, true)
    ui.addTextArea(4, "", nil, 209, 79, 142, 22, 0x324650, 0x5A7A8B, 1, true)
    ui.addTextArea(5, "<p align='center'><V>Team 1", nil, 210, 80, 140, 20, 0x324650, 0x324650, 1, true)
    ui.addTextArea(6, "", nil, 449, 79, 142, 22, 0x324650, 0x5A7A8B, 1, true)
    ui.addTextArea(7, "<p align='center'><V>Team 2", nil, 450, 80, 140, 20, 0x324650, 0x324650, 1, true)
    ui.addTextArea(8, "<p align='center'><font color='#5A7A8B'>|</font>", nil, 210, 102, 140, 200, 0, 0, 0, true)
    ui.addTextArea(9, "<p align='center'><font color='#5A7A8B'>|</font>", nil, 450, 102, 140, 200, 0, 0, 0, true)
    ui.addTextArea(10, "", nil, 209, 120, 140, 200, 0x5A7A8B, 0x5A7A8B, 1, true)
    ui.addTextArea(11, "<p align='center'><font color='#"..colors[1].."'>"..table.concat(teams[1], "\n"), nil, 210, 121, 138, 198, 0x324650, 0x324650, 1, true)
    ui.addTextArea(12, "", nil, 451, 120, 140, 200, 0x5A7A8B, 0x5A7A8B, 1, true)
    ui.addTextArea(13, "<p align='center'><font color='#"..colors[2].."'>"..table.concat(teams[2], "\n"), nil, 452, 121, 138, 198, 0x324650, 0x324650, 1, true)
    ui.addTextArea(14, "<p align='center'><font color='#5A7A8B'>____         ____</font>", nil, 330, 200, 140, 200, 0, 0, 0, true)
    ui.addTextArea(15, "", nil, 380, 202, 40, 20, 0x5A7A8B, 0x5A7A8B, 1, true)
    ui.addTextArea(16, "<p align='center'><V>VS", nil, 381, 203, 38, 18, 0x324650, 0x324650, 1, true)
    ui.addTextArea(16, "<p align='center'><V><a href='event:iniciarJogo'>GO", ADMINISTRADOR, 381, 203, 38, 18, 0x324650, 0x324650, 1, true)
end
 
function eventTextAreaCallback(id, player, callback)
    if callback == 'iniciarJogo' then
        if #teams[2] > 0 and #teams[1] > 0 then
            gameRunning = true
            for i = 1, 16 do
                ui.removeTextArea(i)
            end
            defaultEffect(9, {9}, 400, 212, 80)
            newMap()
        end
    end
end
 
function string.split(s, pattern, n)
    local st = {}
    for sb in string.gmatch(s, "[^"..pattern.."]+") do
    if not n or n > -1 then
        table.insert(st,sb)
    else
        st[#st] = st[#st]..pattern..sb
    end
    n = n and n-1 or false
    end
    return st
end
 
function table.contains(tableT, element)
    for _, value in pairs(tableT) do
        if value == element then
            return true
        end
    end
    return false
end
 
defaultEffect=function(id,p,x,y,rand) -- thanks for the function santah
    local minDist = 1
    local outerBorder = 20
    local maxDist = 30
    local totalParticles = rand and 40 or (id == -1 and 35 or 75)
    for i = 1, totalParticles do
        if rand then
            id = p[math.random(#p)]
        end
        local dist = math.min(math.random(minDist, maxDist), outerBorder)
        local angle = math.random(0, 360)
        local r = math.rad(angle)
        local dx = math.cos(r)
        local dy = math.sin(r)
        local vx = dist * dx / 10
        local vy = dist * dy / 10
        local ax = -vx / dist / 15
        local ay = (-vy / dist / 15) + 0.05
        if id == -1 then
            tfm.exec.displayParticle(9, x + dx, y + dy, vx, vy, ax, ay, nil)
            tfm.exec.displayParticle(1, x + dx, y + dy, vx, vy, ax, ay, nil)
        else
            tfm.exec.displayParticle(id, x + dx, y + dy, vx, vy, ax, ay, nil)
        end
    end
end
 
displayTeams()
 
function eventPlayerDied()
    local alive = 0
    for k,v in pairs(tfm.get.room.playerList) do
        if not v.isDead then
            alive = alive+1
        end
    end
    if alive < 2 then
        tfm.exec.setGameTime(5)
    end
end
 

Omaraldin

Little Mouse
It's looking like lua racing, but should you put a more details about what is do in the thread.
Cool script, and thread!
 
Top
"Dev-TR" theme by Soulzone