Ir para conteúdo
  • Cadastre-se

[dúvida] capture de flag system


Posts Recomendados

olá galera do TK gostaria de saber como eu faço para arrumar o capture de flag system.

 

o problema é o globalevent abre o evento. abre o teleport e manda para a sala de espera mais depois disso não acontece mais nada não manda para o local do evento depois de 1min < o evento ta configurado para fechar depois de um minuto e começar tals mais passa esse 1min e não manda os players para o evento.

 

tambem se possivel gostaria de trocar em vez de aparecer um teleport gostaria que falasse

!evento3 < e vão direto para a sala de espera para ir para o evento se alguem puder ajudar agradeço +rep claro ^^

 

bom postarei as scripts do sistema.

 

bom vamos lá

 

data/lib/ctfmax.lua

 

CTF_LIB = {
waitpos = {x = 1057, y = 714, z =7}, -- Posição da sala de espera
tppos = {x = 1016, y = 889, 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 = 15, -- Quantos pontos uma equipe precisa marcar para vencer

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

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

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

flag = {
id = 1437,
flag_pos = {x = 1010, y = 734, z =7}, -- Posição onde a bandeira verde vai ser criada
gnd_pos = {x = 1012, y = 735, 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)
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

 

data/movements/scripts/ctfmax.lua

 

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

 

data/movements/scripts/CTFTeleport.lua

 

local CTF = CTF_LIB

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if not isPlayer(cid) then
return false
end

CTF.addPlayer(cid)
return true
end

 

data/creaturescripts/scripts/ctfmax.lua

 

local CTF = CTF_LIB

function onStatsChange(cid, attacker, type, combat, value)
if getPlayerStorageValue(cid, 16700) ~= -1 and type == 1 and getCreatureHealth(cid) - value <= 0 then
if getPlayerStorageValue(cid, 16702) ~= -1 then
CTF.returnFlag(cid, 1)
end

doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
doCreatureAddMana(cid, getCreatureMaxMana(cid))
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
return false
end

return true
end

function onLogout(cid)
if getPlayerStorageValue(cid, 16700) ~= -1 then
CTF.removePlayer(cid)
end

return true
end

function onCombat(cid, target)
if getPlayerStorageValue(cid, 16700) ~= -1 then
if getPlayerStorageValue(cid, 16700) == getPlayerStorageValue(target, 16700) then
return false
end
end

return true
end

function onAttack(cid, target)
if getPlayerStorageValue(cid, 16700) ~= -1 then
if getPlayerStorageValue(cid, 16700) == getPlayerStorageValue(target, 16700) then
return false
end
end

return true
end

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

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

Poste o script =s

YDmXTU2.png

 

Entenda tudo sobre VPS, DEDICADOS & HOSPEDAGENS. => Clique aqui

Global Full Download 10.9x - TFS 1.2/FERUMBRAS/KRAILOS. => Clique aqui

 

Muitos querem aquilo que você tem, 
mas vão desistir quando souberem o preço que você pagou.

 

skype-favicon.png lu.lukinha

message-16.png [email protected]

Link para o post
Compartilhar em outros sites

#edit


Tópico Atualizado com as scripts


@UP

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

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
  • 2 months later...
  • 1 year later...

É simples o script não tem bug você não ta configurando direto ta fazendo em alguma city ou em lugar criado por você ?

Pois os playes são teleportados para o temple ou town ou seja eles vão pra alguma city do seu mapa.

Como resolver ou você coloca pra acontece o evento na cidade que eles tão teleportando depois de 1 minuto,

ou vc configura no rme a town em onde vc quer que o evento aconteça.

espero te ajudado flws.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo