Ir para conteúdo

Featured Replies

Postado

Bom dia Galera TK,

coloquei esse sitema em meu ot server e funcionou perfeito sem erro no distro!

unico problema que quando o evento incia todos sao teletrasnportado para o templo, mais o evento continua rolando sem previsão de termina!

Alguem ajuda ai plx!!

  • Respostas 42
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Tá massa, vamos mexer só no seu mapa então.   1º Passo - Abra seu mapa com o 'Remere', depois vá em 'Map' (seta vermelha):   2º Passo - Vá em 'Edit Towns' (seta vermelha):

  • Agora sim, vou analisar aqui. Guenta aí.

  • @mateusmoretti, esta frase que aparece ali em baixo 'você não está com a bandeira' não está no 'script' que me passou.   Qual 'script' vc está usando, cara?

Posted Images

Postado

Então, tudo dentro do servidor do OTzão obedece à regras que colocamos nos 'scripts'.

 

Assim, para que eu possa te ajudar a 'dar ordens' ao seu servidor preciso que cole os 'scripts' do evento aqui.

 

Ajudei ou Esclareci? Rep+!

Postado
  • Autor
2 minutos atrás, Xagah disse:

Então, tudo dentro do servidor do OTzão obedece à regras que colocamos nos 'scripts'.

 

Assim, para que eu possa te ajudar a 'dar ordens' ao seu servidor preciso que cole os 'scripts' do evento aqui.

 

Ajudei ou Esclareci? Rep+!

Eai xaga blz, pow desculpa fiquei tao entertido esqueci de postar!

 

ta configurado certinho no meu ot server!

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

CTF_LIB = {
	waitpos = {x = 44, y = 610, z =7}, -- Posição da sala de espera
	tppos = {x = 54, y = 253, 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 = 4, -- 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 = 68, y = 629, z =6}, -- Posição onde a bandeira vermelha vai ser criada
				gnd_pos = {x = 122, y = 628, 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 = 122, y = 629, z =6}, -- Posição onde a bandeira verde vai ser criada
				gnd_pos = {x = 68, y = 628, 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[i] = 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[i] = 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[i], 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[i])

		if getGlobalStorageValue(score_sto[i]) >= 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[i], 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

 

Postado

Remova estas linhas:

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

Penso que funcionará.

 

Ajudei? Rep+

Postado
  • Autor
7 minutos atrás, Xagah disse:

Remova estas linhas:


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

Penso que funcionará.

 

Ajudei? Rep+

Chaga removi essa linha porém os player nao vao para o templo. mais fica na sala de espera!!

e nao da pra se mover também!!

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo