Ir para conteúdo
  • Cadastre-se

Normal Ctf Ganhar itens no lugar de exp


Posts Recomendados

galera eu adicionei o evento de Rouba bandeira (Ctf) no meu servidor, mas só ganha 5% de Experiencia, eu gostaria que o perssonagem ganhasse item no lugar da Experiencia

 

quem aí pode ajudar, Please :p 

 

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]

CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer

    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    xp_percent = 0.5, -- Porcentagem de exp que o player vai ganhar
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer

    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},

            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },

        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},

            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}

local CTF = CTF_LIB

function CTF.getMembers()
    local members = {}

    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end

    return members
end

function CTF.getTeamMembers(team)
    local members = {}

    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end

    return members
end

function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))

    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end

function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]

    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))

    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)

    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")

    local outfit = getCreatureOutfit(uid)

    for i, v in pairs(n_team.outfit) do
        outfit = v
    end

    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end

function CTF.getTeamLivre()
    local teams = {}

    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end

    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end

    return teams[math.random(2)][1]
end

function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end

    return true
end

function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end

    return ""
end

local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end

function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)

        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)

        setGlobalStorageValue(score_sto, 0)
    end

    return true
end

function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end

        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end

    return true
end

function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)

    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")

        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end

        return false
    end

    CTF.broadCast("O CTF foi iniciado. Bom jogo!")

    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end

    CTF.createFlags()
    return true
end

function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)

    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "

        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end

        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end

    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)

        setPlayerStorageValue(uid, 16702, -1)
    end

    return true
end

function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"

    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)

    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)

        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end

    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)

    if finish then
        CTF.close(finish)
        return "close"
    end

    return true
end

function CTF.close(win)

    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end

    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            local xp = math.ceil(getPlayerExperience(cid) * (CTF.xp_percent / 100), 215)
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve ".. CTF.xp_percent .."% de sua experiência total(".. xp ..").")
            doSendAnimatedText(getThingPos(cid), xp, 215)
            doPlayerAddExperience(cid, xp)
        end

        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]

        CTF.removePlayer(cid)
    end

    CTF.removeFlags()

    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end

    return true
end

local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end

        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))

        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])

        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end

        addEvent(Alert, 500, uid)
        return true
    end

    return false
end

function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())

    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end

function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}

    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end

    return results
end
 

 

Link para o post
Compartilhar em outros sites

Tenta assim:

Spoiler

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            local random_item = CTF.items_id[math.random(1, #CTF.items_id)]
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(random_item) .. ".")
            doPlayerAddItem(cid, CTF.items_id, 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

Te Ajudei? Rep + e ficamos Quits

166420979_logoyanliimaornight.png.33f822b8970081a5b3646e85dbfd5934.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.png.890d5a38d7bcde75543c72b624a65de1.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

Link para o post
Compartilhar em outros sites
6 horas atrás, Yan Liima disse:

Tenta assim:

  Ocultar conteúdo

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            local random_item = CTF.items_id[math.random(1, #CTF.items_id)]
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(random_item) .. ".")
            doPlayerAddItem(cid, CTF.items_id, 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

na hora de entregar a bandeira fica bugado :p 

Link para o post
Compartilhar em outros sites
19 horas atrás, Sekk disse:

Abaixo dessa linha


doPlayerAddExperience(cid, xp)

Adicione assim


doPlayerAddItem(cid, XXXX, 1)

XXXX - ID do item

1 - quantidade do item

 

 

Obs.: Não testei, mas ja tive essa ideia... Testa ai pra mim? xD

funcionou , agora só falta arrumar na fala quando ganhar Parabéns vc ganhou item tal :p kk tem aí ?

e ganha items aleatórios 

Editado por helix758 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

O dele é uma alteração simples, o que eu te mandei foi da maneira que você queria, da algum erro na distro?

 

Tente esse:

Spoiler

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            local random_item = CTF.items_id[math.random(1, #CTF.items_id)]
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(random_item) .. ".")
            doSendAnimatedText(getThingPos(cid),"EVENTO!", math.random(01,255))
            doPlayerAddItem(cid, random_item, 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

Editado por Yan Liima (veja o histórico de edições)

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

Te Ajudei? Rep + e ficamos Quits

166420979_logoyanliimaornight.png.33f822b8970081a5b3646e85dbfd5934.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.png.890d5a38d7bcde75543c72b624a65de1.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

Link para o post
Compartilhar em outros sites
2 horas atrás, Yan Liima disse:

O dele é uma alteração simples, o que eu te mandei foi da maneira que você queria, da algum erro na distro?

 

Tente esse:

  Mostrar conteúdo oculto

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            local random_item = CTF.items_id[math.random(1, #CTF.items_id)]
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(random_item) .. ".")
            doSendAnimatedText(getThingPos(cid),"EVENTO!", math.random(01,255))
            doPlayerAddItem(cid, random_item, 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

não está funcionando , ao entrar no teleport os players não muda a cor da outfit ,e nem começa diz que falta players.

1313131.png

Link para o post
Compartilhar em outros sites

Tenta ai

Spoiler

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(CTF.items_id) .. ".")
            doSendAnimatedText(getThingPos(cid),"EVENTO!", math.random(1,255))
            doPlayerAddItem(cid, CTF.items_id[math.random(1, #CTF.items_id)], 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

 

Editado por Sekk (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
Em 02/06/2016 at 22:21, Sekk disse:

Tenta ai

  Mostrar conteúdo oculto


--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 4 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(CTF.items_id) .. ".")
            doSendAnimatedText(getThingPos(cid),"EVENTO!", math.random(1,255))
            doPlayerAddItem(cid, CTF.items_id[math.random(1, #CTF.items_id)], 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

 

Na hora de entregar a bandeira não funciona, tá foda kkk

está dando esse erro na distro

213131.png

Editado por helix758 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
22 horas atrás, Sekk disse:

O código ta sem erro, é outro arquivo o erro...

 

Manda o data/lib/CTFLib.lua

data/movements/scripts/CTFMax.lua

o.O mas o erro só ocorreu depois de mudar a lib kkk

 

Movements ctmax

\/

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]

local CTF = CTF_LIB

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
    local team = getItemAttribute(item.uid, "team")

    if team ~= getPlayerStorageValue(cid, 16700) then
        return doTeleportThing(cid, fromPosition)
    end

    if getPlayerStorageValue(cid, 16702) == -1 then
        doPlayerSendCancel(cid, "Você não está com a bandeira.")
        return doTeleportThing(cid, fromPosition)
    end

    if CTF.addPoint(cid) ~= "close" then
        doTeleportThing(cid, fromPosition)
    end

    return true
end
 

 

 

 

 

 

 

 

e o da lib é essa mesma que vc mandou 

\/

 

--[[
    Capture The Flag System
    Author: Maxwell Denisson(MaXwEllDeN)
    Version: 2.0
    Contact: [email protected]
]]
CTF_LIB = {
    waitpos = {x = 1095, y = 54, z =7}, -- Posição da sala de espera
    tppos = {x = 1004, y = 1003, z =7}, -- Onde o TP vai aparecer
    days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir
    items_id = {2160, 2673}, -- ID da Recompensa
    timeclose = 1, -- Tempo, em minutos, para iniciar o CTF
    winp = 5, -- Quantos pontos uma equipe precisa marcar para vencer
    teams = {
        ["Vermelho"] = {
            temple = 2, -- TownID da equipe vermelha
            outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},
            flag = {
                id = 1435,
                flag_pos = {x = 1297, y = 195, z =6}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 1301, y = 196, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },
        ["Verde"] = {
            temple = 3, -- TownID da equipe verde
            outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},
            flag = {
                id = 1437,
                flag_pos = {x = 1221, y = 227, z =6}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 1217, y = 228, z =6}, -- Onde os players da equipe verde entregarão a bandeira.
            },
        },
    },
}
local CTF = CTF_LIB
function CTF.getMembers()
    local members = {}
    for _, cid in pairs(getPlayersOnline()) do
        if getPlayerStorageValue(cid, 16700) ~= -1 then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.getTeamMembers(team)
    local members = {}
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == team then
            table.insert(members, cid)
        end
    end
    return members
end
function CTF.removePlayer(uid)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    setPlayerStorageValue(uid, 16701, -1)
    setPlayerStorageValue(uid, 16700, -1)
    return true
end
function CTF.addPlayer(uid)
    local team = CTF.getTeamLivre()
    local n_team = CTF.teams[team]
    setPlayerStorageValue(uid, 16700, team)
    setPlayerStorageValue(uid, 16701, getPlayerTown(uid))
    doPlayerSetTown(uid, n_team.temple)
    doTeleportThing(uid, CTF.waitpos)
    doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".")
    local outfit = getCreatureOutfit(uid)
    for i, v in pairs(n_team.outfit) do
        outfit = v
    end
    registerCreatureEvent(uid, "CTFLogout")
    registerCreatureEvent(uid, "CTFAttack")
    registerCreatureEvent(uid, "CTFCombat")
    registerCreatureEvent(uid, "CTFDeath")
    doSetCreatureOutfit(uid, outfit, -1)
    return true
end
function CTF.getTeamLivre()
    local teams = {}
    for i, _ in pairs(CTF.teams) do
        table.insert(teams, {i, #CTF.getTeamMembers(i)})
    end
    if (teams[1][2] < teams[2][2]) then
        return teams[1][1]
    elseif (teams[1][2] > teams[2][2]) then
        return teams[2][1]
    end
    return teams[math.random(2)][1]
end
function CTF.broadCast(msg, class)
    for _, uid in pairs(CTF.getMembers()) do
        doPlayerSendTextMessage(uid, class or 20, msg)
    end
    return true
end
function CTF.getFlagTeam(flag)
    for i, v in pairs(CTF.teams) do
        if v.flag.id == flag then
            return i
        end
    end
    return ""
end
local score_sto = {}
local a = 0
for i, _ in pairs(CTF.teams) do
    score_sto = 42314 + a
    a = a + 1
end
function CTF.createFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 63200)
        doItemSetAttribute(gnd, "team", i)
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
function CTF.removeFlags()
    for i, v in pairs(CTF.teams) do
        local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1]
        if flag then
            doRemoveItem(flag.uid, 1)
        end
        v.flag.gnd_pos.stackpos = 0
        local gnd = getThingFromPos(v.flag.gnd_pos).uid
        doItemSetAttribute(gnd, "aid", 0)
    end
    return true
end
function CTF.start()
    doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1)
    setGlobalStorageValue(16705, -1)
    if #CTF.getMembers() < 1 then
        doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.")
        for _, cid in pairs(CTF.getMembers()) do
            CTF.removePlayer(cid)
        end
        return false
    end
    CTF.broadCast("O CTF foi iniciado. Bom jogo!")
    for _, uid in pairs(CTF.getMembers()) do
        doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid)))
    end
    CTF.createFlags()
    return true
end
function CTF.returnFlag(uid, status)
    local team = getPlayerStorageValue(uid, 16702)
    if status then
        local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " "
        if status == 1 then
            msg = msg .. "e foi eliminado. "
        elseif status == 2 then
            msg = "e foi removido do evento. "
        end
        msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida."
        CTF.broadCast(msg)
    end
    if CTF.teams[team] then
        local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos)
        doItemSetAttribute(flag, "aid", 63218)
        setPlayerStorageValue(uid, 16702, -1)
    end
    return true
end
function CTF.addPoint(uid)
    local finish
    local msg = "Capture The Flag:"
    setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1)
    for i, _ in pairs(CTF.teams) do
        msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto)
        if getGlobalStorageValue(score_sto) >= CTF.winp then
            finish = i
        end
    end
    CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22)
    CTF.broadCast(msg)
    CTF.returnFlag(uid)
    if finish then
        CTF.close(finish)
        return "close"
    end
    return true
end
function CTF.close(win)
    if not win then
        doBroadcastMessage("O CTF acabou sem vencedores.")
    else
        CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.")
    end
    for _, cid in pairs(CTF.getMembers()) do
        if getPlayerStorageValue(cid, 16700) == win then
            doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve " .. getItemNameById(CTF.items_id) .. ".")
            doSendAnimatedText(getThingPos(cid),"EVENTO!", math.random(1,255))
            doPlayerAddItem(cid, CTF.items_id[math.random(1, #CTF.items_id)], 1)
        end
        --[[
        if getPlayerStorageValue(cid, 16702) ~= -1 then
            CTF.returnFlag(cid)
        end]]
        CTF.removePlayer(cid)
    end
    CTF.removeFlags()
    for i, _ in pairs(CTF.teams) do
        setGlobalStorageValue(score_sto, 0)
    end
    return true
end
local function Alert(uid)
    if (isCreature(uid)) then
        if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then
            return false
        end
        doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200))
        local bla = {18, 19, 21, 22, 23, 24}
        doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)])
        if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then
            CTF.returnFlag(uid)
            return setPlayerStorageValue(uid, 16703, -1)
        end
        addEvent(Alert, 500, uid)
        return true
    end
    return false
end
function CTF.stealFlag(uid, team)
    setPlayerStorageValue(uid, 16702, team)
    setPlayerStorageValue(uid, 16703, os.time())
    CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!")
    Alert(uid)
    return true
end
function doFindItemInPos(ids, pos) -- By Undead Slayer
    local results = {}
    for _ = 0, 255 do
        local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _}
        if isInArray(ids, getThingFromPos(findPos).itemid) then
            table.insert(results, getThingFromPos(findPos))
        end
    end
    return results
end

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo