Ir para conteúdo
  • Cadastre-se

Normal [HELP] Evento capture the flag


Posts Recomendados

HELP ME GUYS!

Bom..o evento é o capture the flag, e o problema é: O evento starta normalmente, só que quando eu tento andar, diz que não estou com a bandeira, uma coisa que percebi é.. quando o evento starta ele está criando o id 63200 (que seria o id que teria que ficar no chão para entregar a bandeira) em QUASE todo lugar do mapa do evento, daí o problema de não conseguir andar. Ja olhei pelo RME e esses id's não estão no mapa, o evento cria ele sozinho.

Script abaixo das partes que precisam ser configuaradas.

 

OBS: Tirei print de uma tile só, mas acontece o mesmo com 98% do mapa, são só umas 4 ou 5 que não tem esse id.

Citar

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

CTF_LIB = {
    waitpos = {x = 2476, y = 2701, z =7}, -- Posição da sala de espera
    tppos = {x = 1726, y = 390, z =7}, -- Onde o TP vai aparecer

    days = {2, 5, 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 = 10, -- Quantos pontos uma equipe precisa marcar para vencer

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

            flag = {
                id = 1435,
                flag_pos = {x = 2439, y = 2657, z =7}, -- Posição onde a bandeira vermelha vai ser criada
                gnd_pos = {x = 2440, y = 2659, z =7}, -- Onde os players da equipe vermelha entregarão a bandeira.
            },
        },

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

            flag = {
                id = 1437,
                flag_pos = {x = 2510, y = 2616, z =7}, -- Posição onde a bandeira verde vai ser criada
                gnd_pos = {x = 2508, y = 2616, z =7}, -- 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)
    setPlayerStorageValue(uid, 16700, -1)
    doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701))
    doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701)))
    setPlayerStorageValue(uid, 16701, -1)

    doRemoveCondition(uid, CONDITION_OUTFIT)
    doCreatureAddHealth(uid, getCreatureMaxHealth(uid))
    doCreatureAddMana(uid, getCreatureMaxMana(uid))
    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() < 2 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)
    if finish then
        CTF.close(finish)
    end

    return true
end

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

    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()
    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
 

 

aaz.png

xdxd.png

Link para o post
Compartilhar em outros sites

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