[PEDIDO] Sistema CTF ou MOD
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por AweNN
Ola pessoal.
Gostaria de um servidor de War que seja Team VS Team, de Capture the FLAG. (Cidades em War como Edron, Venore, Carlin, entre outas embutidas). Estou a procura de um servidor assim ja faz quase 2 semanas, mas infelizmente nao achei.
Pode ser um servidor como antigamente, que podia entar no 1/1 e logar no char das velhas lendas do tibia como Cachero, Seremonthis.
Certo, eh apenas isso. Obrigado, queria muito que alguem me ajudasse!
-
Por helflin
Fala galera do TK, to precisando de um sistema de CTF para meu servidor, procurei na net, mas vários contém bugs...
Lembrando que esse CTF é o famoso CAPTURE THE FLAG, que um time tem que roubar a bandeira do outro, e quem fizer mais pontos nos 10 minutos que duram o evento ganham um premio definido.
Gostaria de um que tipo:
seja de horário pré-definido (como woe por exemplo), todas as terças e quintas as 19h...
e que fosse 100% automático...
vlws.
-
Por juniorsantana001
to com uma duvida em configurar minha lib
aonde eu coloco a pos: temple , tipo começa evento e o player é teleportado pro evento
na minha lib aqui !!
Começa evento Ok
player vai até teleport Entra e aguarda na sala de espera Ok
quando começa evento o player é teleportado para o templo da cidade , como se tive-se no evento .
aonde eu configuro para o player ir ao evento a pos: , ou no remeres aonde eu configuro sei la
aqui está a lib
--[[ Capture The Flag System Author: Maxwell Denisson(MaXwEllDeN) Version: 2.0 Contact: [email protected] ]] CTF_LIB = { waitpos = {x = 116, y = 283, z =7}, -- Posição da sala de espera tppos = {x = 166, y = 58, 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 = 5, -- 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 = 97, y = 316, z =6}, -- Posição onde a bandeira vermelha vai ser criada gnd_pos = {x = 153, y = 316, 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 = 151, y = 316, z =6}, -- Posição onde a bandeira verde vai ser criada gnd_pos = {x = 95, y = 316, 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
-
Por ViitinG
Galera to com um bug no evento CTF,quem entrega a ultima bandeira do evento para ganhar,fica presso dentro da area do evento e o evento acaba.Alguem ajuda por favor !!
Link do CTF que estou usando : http://www.tibiaking.com/forum/topic/27376-ctf-capture-the-flag-20autom%C3%A1tico/
-
Por cocazul
Fala galerinha do tibiaking Estou com error no meu [CTF].
Esse ==========> http://www.tibiaking.com/forum/topic/11028-ctf-capture-the-flag/ =======;/ eo que eu uso no meu otserver Porem eu instalei tudo certo com npc mas o comando /ctf open não funfa se nopen = true, -- Precisa usar o comando para abrir? false não true sim <<< se eu coloco false e so fala com o npc e ele teleporta pro event mas como ativa pro event comeca se /ctf open n funfa e quando tento clicar nas Bandeiras não da nada.
Esse evento funfa em 8.60 pq no meu ot não ta funcionando não da pra fazer nada.
Esse eo que eu coloquei no lib :
=========================================================================================
[CTF] Capture the flag
ot/data/lib
--[[ Capture The Flag System Author: Maxwell Denisson(MaXwEllDeN) Version: 1.0 ]] _CTF_LIB = { redid = 17530, greenid = 17531, Flagsto = 13221, teamssto = 17530, winp = 5, recompCTF = {{2157, 20}}, nopen = true, -- Precisa usar o comando para abrir? false não true sim CTFSto = 95712, TownExit = 2, -- Templo que o player será teletransportado quando acabar o evento ou ele sair dele. price = false, -- Preço para entrar no Evento, caso não precise Digite false. flags = {}, teamsOUT = {} } _CTF_LIB.flags = { [_CTF_LIB.redid] = {pos = {x = 695, y = 1460, z = 1}, posEflag = {x = 696, y = 1460, z = 1}, id = 1435, color = 180, na = "Vermelho", temple = 8, color = 180, out = { [1] = {lookType = 152, lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94}, [2] = {lookType = 156, lookHead = 0, lookBody = 94, lookLegs = 113, lookFeet = 113}, [3] = {lookType = 152, lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94, lookAddons = 3}} }, [_CTF_LIB.greenid] = {pos = {x = 341, y = 1430, z = 2}, posEflag = {x = 342, y = 1430, z = 2}, id = 1437, color = 30, na = "Verde", temple = 6, color = 31, out = { [1] = {lookType = 367, lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101}, [2] = {lookType = 366, lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101, lookAddons = 1}, [3] = {lookType = 367, lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101, lookAddons = 3}} } } for a, b in pairs(_CTF_LIB.flags) do local condition = createConditionObject(CONDITION_OUTFIT) setConditionParam(condition, CONDITION_PARAM_TICKS, 180000*1000) addOutfitCondition(condition, b.out[1]) local condition2 = createConditionObject(CONDITION_OUTFIT) setConditionParam(condition2, CONDITION_PARAM_TICKS, 180000*1000) addOutfitCondition(condition2, b.out[2]) local other = createConditionObject(CONDITION_OUTFIT) setConditionParam(other, CONDITION_PARAM_TICKS, 180000*1000) addOutfitCondition(other, b.out[3]) _CTF_LIB.teamsOUT[a] = {} _CTF_LIB.teamsOUT[a][0] = condition2 _CTF_LIB.teamsOUT[a][1] = condition _CTF_LIB.teamsOUT[a][2] = other end function MsgToCTFM(class, msg) for _, b in pairs (getOnlinePlayers()) do local b = getPlayerByNameWildcard(b) if (getPlayerStorageValue(b, _CTF_LIB.teamssto) > 0) then doPlayerSendTextMessage(b, class, msg) end end end function getTeamLivre() local teams = {} for a, b in pairs(_CTF_LIB.flags) do table.insert(teams, {getGlobalStorageValue(a), a}) end if (teams[1][1] < teams[2][1]) then return teams[1][2] elseif (teams[1][1] > teams[2][1]) then return teams[2][2] end local team = teams[math.random(#teams)][2] return team 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 function CTF_createFlags() for a, b in pairs(_CTF_LIB.flags) do local item = doCreateItem(b.id, 1, b.pos) doItemSetAttribute(item, "uid", a) doItemSetAttribute(item, "aid", 67189) b.posEflag.stackpos = 0 local item = getThingFromPos(b.posEflag).uid doItemSetAttribute(item, "uid", a) doItemSetAttribute(item, "aid", 15312) setGlobalStorageValue(a-15, 0) setGlobalStorageValue(a, 0) end end function ComparePosition(pos1, pos2) if (((pos1.x ~= pos2.x) or (pos1.y ~= pos2.y) or (pos1.z ~= pos2.z))) then return false end return true end function CreateFlag(pos, id) if (#doFindItemInPos({id}, pos) < 1) then return doCreateItem(id, 1, pos) end return true end function RemoveFlag(pos, id) local iteims = doFindItemInPos({id}, pos) if (#iteims > 0) then for _, b in pairs(iteims) do doRemoveItem(b.uid, 1) end end return true end function WalkFlag(uid, team, pos, bant) local function Alert(pos) if (isCreature(uid)) then if (getPlayerStorageValue(uid, _CTF_LIB.Flagsto) < 1) or (getPlayerStorageValue(uid, _CTF_LIB.teamssto) < 1) then return RemoveFlag(getPPos(uid), _CTF_LIB.flags[bant].id) end if (getPlayerStorageValue(uid, _CTF_LIB.Flagsto) == 17001) then RemoveFlag(getPPos(uid), _CTF_LIB.flags[bant].id) return setPlayerStorageValue(uid, _CTF_LIB.Flagsto, -1) end if not(ComparePosition(getThingPos(uid), getPPos(uid))) then RemoveFlag(getPPos(uid), _CTF_LIB.flags[bant].id) setPPos(uid, getThingPos(uid)) CreateFlag(getThingPos(uid), _CTF_LIB.flags[bant].id) end addEvent(Alert, 250, pos) end end Alert(pos) return true end function setPPos(uid, pos) return setPlayerStorageValue(uid, 50117, "{x = ".. pos.x ..", y = ".. pos.y ..", z = ".. pos.z .."}") end function getPPos(uid) return loadstring('return ' .. getPlayerStorageValue(uid, 50117))() end function getFlag(uid, team, bant) setPPos(uid, getThingPos(uid)) CreateFlag(getThingPos(uid), _CTF_LIB.flags[bant].id) setPlayerStorageValue(uid, _CTF_LIB.Flagsto, bant) MsgToCTFM(22, getCreatureName(uid) .. " roubou a bandeira do time ".. _CTF_LIB.flags[bant].na .. "!") return WalkFlag(uid, team, getThingPos(uid), bant) end function devolverFlag(uid, team) if (#doFindItemInPos({_CTF_LIB.flags[team].id}, _CTF_LIB.flags[team].pos) < 1) then local item = doCreateItem(_CTF_LIB.flags[team].id, 1, _CTF_LIB.flags[team].pos) doItemSetAttribute(item, "uid", team) doItemSetAttribute(item, "aid", 67189) end return setPlayerStorageValue(uid, _CTF_LIB.Flagsto, 17001) end function addPoint(uid, team, bant) if (getGlobalStorageValue(team-15) < 0) then setGlobalStorageValue(team-15, 0) end RemoveFlag(getPPos(uid), _CTF_LIB.flags[bant].id) addEvent(devolverFlag, 2000, uid, bant) setGlobalStorageValue(team-15, getGlobalStorageValue(team-15)+1) msgi = "Capture The Flag by MaXwellDeN:\n" doSendAnimatedText(getThingPos(uid), "+POINT+", _CTF_LIB.flags[bant].color) for a, b in pairs (_CTF_LIB.flags) do if (getGlobalStorageValue(a-15) < 0) then setGlobalStorageValue(a-15, 0) end msgi = msgi .. "\n Time ".. b.na .." -> ".. getGlobalStorageValue(a-15) .. " point(s)." end for _, b in pairs (getOnlinePlayers()) do local b = getPlayerByNameWildcard(b) if (getPlayerStorageValue(b, _CTF_LIB.teamssto) > 0) then doPlayerSendTextMessage(b, 22, getCreatureName(uid) .. " entregou a bandeira do time ".. _CTF_LIB.flags[bant].na .. " e obteve 1 ponto para seu time!") doPlayerSendTextMessage(b, 27, msgi) end end for a, b in pairs(_CTF_LIB.flags) do if (getGlobalStorageValue(a-15) >= _CTF_LIB.winp) then for c, _ in pairs(_CTF_LIB.flags) do setGlobalStorageValue(c-15, 0) end for _, cid in pairs (getOnlinePlayers()) do local cid = getPlayerByNameWildcard(cid) if (getPlayerStorageValue(cid, _CTF_LIB.teamssto) > 0) then doPlayerSendTextMessage(cid, 27, "O Time ".. _CTF_LIB.flags[team].na .." venceu o Capture The Flag, por tanto todos os membros dessa equipa ganharam uma recompensa. Parabéns!") if (getPlayerStorageValue(cid, _CTF_LIB.teamssto) == a) then for _, y in pairs(_CTF_LIB.recompCTF) do doPlayerAddItem(cid, y[1], y[2]) end end doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureSetSkullType(cid, 0) setPlayerStorageValue(cid, _CTF_LIB.teamssto, -1) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSetTown(cid, CTF.TownExit) end end break end end return true end setGlobalStorageValue(_CTF_LIB.CTFSto, -1) Se tiver algo errado Ajuda ae +rep o evento ta sem funções ajuda aeee .. Olha eu instalei tudo certo Mas não o motivo pq fico sem funções sem nada o npc eu criei ele e tal falo hi .. se eu coloca nopen = true ele fala que o event n começou mas se eu colocar false ele fala se eu quero ir pro event mas quand entro no event ele parece que esta desligado sem funções e nada + rep se alguem poder me ajuda ------------------------------------------------------------------------------------------------------
CTF_LIB = { redid = 17530, greenid = 17531, Flagsto = 13221, teamssto = 17530, qual a função de cada um desses e so entra no link que eu catei o event http://www.tibiaking.com/forum/topic/11028-ctf-capture-the-flag/ o event e automatico onde configuro isso os dias e etc ....
-
Posts Recomendados
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.