Ir para conteúdo
  • Cadastre-se

Normal Ajuda no script de Evento CTF


Posts Recomendados

  • Moderador

Olá.. Eu estou tentando implementar o CTF do MaXwEllDeN no meu server, porém quando ele inicia, o evento leva todos ao templo..
Teria como alguém me ajudar no script?

Grato desde já.

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

CTF_LIB = {

waitpos = {x = 838, y = 811, z =7}, -- Posição da sala de espera
tppos = {x = 341, y = 883, z =7}, -- Onde o TP vai aparecer

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

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

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

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

flag = {
id = 1437,
flag_pos = {x = 813, y = 759, z =6}, -- Posição onde a bandeira verde vai ser criada
gnd_pos = {x = 814, y = 759, 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() < 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)
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 do tópico: http://www.tibiaking.com/forum/topic/27376-ctf-capture-the-flag-20autom%C3%A1tico/

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

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

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

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

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

 

Você ta usando o mapa do Max do evento?

Aparece algum erro na d​istro?

Link para o post
Compartilhar em outros sites
  • Moderador

["Vermelho"] = {

temple = 1, -- TownID da equipe vermelha

outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94},

flag = {

id = 1435,

flag_pos = {x = 867, y = 759, z =6}, -- Posição onde a bandeira vermelha vai ser criada

gnd_pos = {x = 866, y = 759, z =6}, -- Onde os players da equipe vermelha entregarão a bandeira.

},

},

["Verde"] = {

temple = 1, -- TownID da equipe verde

outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101},

flag = {

id = 1437,

flag_pos = {x = 813, y = 759, z =6}, -- Posição onde a bandeira verde vai ser criada

gnd_pos = {x = 814, y = 759, z =6}, -- Onde os players da equipe verde entregarão a bandeira.

},

 

Você ta usando o mapa do Max do evento?

Aparece algum erro na d​istro?

Sim, estou usando o mapa dele. Não aparece nenhum erro. Essas coordenadas estão corretas! O problema é apenas que os players vão para o templo quando o evento "inicia".

Link para o post
Compartilhar em outros sites

Cara dei uma olhada aqui, e não tem nada de errado com o script, ta certinho.

Faz o seguinte, abre o seu mapa com o rme, vai parte do mapa onde vc colocou o mapa do max do CTF, e marca um certo lugar la como temple, ae vai ficar aquela parte do mapa como cidade, ae vc coloca o id dela nas config: temple = 1, -- TownID da equipe vermelha

Lembrando é so vc ir nas cordenadas das flags e marcar la msm como temple ;D, ve ae  e me fla

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