Ir para conteúdo

Featured Replies

Postado

Pessoal, boa tarde!

Estou usando este script do CTF event, porém quando o evento se encerra o player que estava com a bandeira não é teleportado para o templo :'( todos os outros são teleportados menos o player que finalizou o evento.

 

Alguem poderia ajudar? TF 0.4

 

Mostrar conteúdo oculto

 

Postado

Adpta este script que funciona.

 

 

local conditionGreen = createConditionObject(CONDITION_OUTFIT)
setConditionParam(conditionGreen, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(conditionGreen, {lookType = 129, lookHead = 82, lookBody = 82, lookLegs = 82, lookFeet = 82})
local conditionRed = createConditionObject(CONDITION_OUTFIT)
setConditionParam(conditionRed, CONDITION_PARAM_TICKS, -1)
addOutfitCondition(conditionRed, {lookType = 129, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94})
		

CTF = {

	ips = {},

	tp_pos = {x = 32356, y = 32219, z = 7},
	exit_ = {x = 32369, y = 32241, z = 7},
	
	storages = {greenFlag = 822067, redFlag = 822068, greenTeam = 822069, redTeam = 822070},
	
	greenFlag = 1437,
	redFlag = 1435,
	
	greenFlagPos = {x = 814, y = 932, z = 6},
	redFlagPos = {x = 814, y = 873, z = 6},

	waitingRoom = {x = 769, y = 906, z = 7},
	fromposWait = {x = 760, y = 897, z = 7},
	toposWait = {x = 778, y = 915, z = 7},
	
	base_A = {x = 804, y = 933, z = 7},
	base_B = {x = 804, y = 872, z = 7},
	
	getFirstPlayer = function()
		for x = CTF.fromposWait.x, CTF.toposWait.x do
			for y = CTF.fromposWait.y, CTF.toposWait.y do
				local area = {x = x, y = y, z = CTF.fromposWait.z}
				if getTopCreature(area) and getTopCreature(area).uid > 0 and isPlayer(getTopCreature(area).uid) then
					return getTopCreature(area).uid
				end
			end
		end
	end,

	start = function()
		local function removeFlag(pos, id)
			local pp = pos
			for i = 1, 255 do
				pp.stackpos = i
				local flag = getThingFromPos(pos)
				if flag and flag.uid > 0 and flag.itemid == id then
					doRemoveItem(flag.uid, 1)
				end
			end
		end
		
		if getGlobalStorageValue(822066) >= 2 then
			if getGlobalStorageValue(822066) % 2 ~= 0 then
				local player = CTF.getFirstPlayer()
				doTeleportThing(player, getTownTemplePosition(getPlayerTown(player)))
				doPlayerSetStorageValue(player, 822066, -1)
				setGlobalStorageValue(822066, getGlobalStorageValue(822066) - 1)
				doPlayerSendTextMessage(player, MESSAGE_STATUS_WARNING, "Que azar! Você foi retirado do evento por excesso de participantes :(")
			end
			removeFlag(CTF.redFlagPos, CTF.redFlag)
			removeFlag(CTF.greenFlagPos, CTF.greenFlag)
			setGlobalStorageValue(CTF.storages.greenTeam, 0)
			setGlobalStorageValue(CTF.storages.redTeam, 0)
			warnPlayersWithStorage(822066, 1, MESSAGE_STATUS_WARNING, "O evento começou, boa sorte a todos. O time que chegar a 10 pontos primeiro ganha!")
			local a = getGlobalStorageValue(822066) / 2
			for i = 1, a do
				local player = CTF.getFirstPlayer()
				doAddCondition(player, conditionGreen)
				doPlayerSetStorageValue(player, CTF.storages.greenTeam, 1)
				doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "Você entrou no time verde, boa sorte!")
    				doTeleportThing(player, CTF.base_A)
			end
			for j = 1, a do
				local player = CTF.getFirstPlayer()
				doAddCondition(player, conditionRed)
				doPlayerSetStorageValue(player, CTF.storages.redTeam, 1)
				doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "Você entrou no time vermelho, boa sorte!")
   				doTeleportThing(player, CTF.base_B)
			end
			local green = doCreateItem(CTF.greenFlag, 1, CTF.greenFlagPos)
			doItemSetAttribute(green, 'aid', 5434)
			local red = doCreateItem(CTF.redFlag, 1, CTF.redFlagPos)
			doItemSetAttribute(red, 'aid', 5435)
		else
			if getPlayersInArea(CTF.fromposWait, CTF.toposWait) then
				for _, pid in pairs(getPlayersInArea(CTF.fromposWait, CTF.toposWait)) do
					doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "O evento não teve pelo menos 10 participantes e foi cancelado.")
					doPlayerSetStorageValue(pid, 822066, -1)
					doTeleportThing(pid, CTF.exit_)
				end
			end
		end
	end,

	removeFlags = function()
		local posGreen = CTF.greenFlagPos
		local posRed = CTF.redFlagPos
		for i = 1, 255 do
			posGreen.stackpos = i
			posRed.stackpos = i
			local green = getThingFromPos(posGreen)
			local red = getThingFromPos(posRed)
			if green and green.uid > 0 and green.itemid == CTF.greenFlag then
				doRemoveItem(green.uid, 1)
			end
			if red and red.uid > 0 and red.itemid == CTF.redFlag then
    				doRemoveItem(red.uid, 1)
			end
		end
	end,
		
	
	doPlayerAddFlag = function(cid, flag)
		local function removeFlag(pos, id)
			local pp = pos
			for i = 1, 255 do
				pp.stackpos = i
				local flag = getThingFromPos(pos)
				if flag and flag.uid > 0 and flag.itemid == id then
					doRemoveItem(flag.uid, 1)
				end
			end
		end
		
		if isPlayer(cid) then
			removeFlag(getThingPos(cid), getPlayerStorageValue(cid, CTF.storages.greenFlag) == 1 and "green" or "red")
			
			local pos = getThingPos(cid)
			
			if flag == "green" then
				if getPlayerStorageValue(cid, CTF.storages.greenFlag) == 1 then
					doCreateItem(CTF.greenFlag, 1, pos)
					addEvent(removeFlag, 400, pos, CTF.greenFlag)
					addEvent(CTF.doPlayerAddFlag, 550, cid, flag)
					doSendAnimatedText(pos, "CTF", 18)
				end
			elseif flag == "red" then
				if getPlayerStorageValue(cid, CTF.storages.redFlag) == 1 then
					doCreateItem(CTF.redFlag, 1, pos)
					addEvent(removeFlag, 400, pos, CTF.redFlag)
					addEvent(CTF.doPlayerAddFlag, 550, cid, flag)
					doSendAnimatedText(pos, "CTF", 18)
				end
			end
		end
	end,
	
	stop = function()
		local players = {}
		local str = ""
		for _, pid in pairs(getPlayersOnline()) do
			if getPlayerStorageValue(pid, 822066) == 1 then
				table.insert(players, pid)
			end
		end
		if #players >= 1 then
			if getStorageZero(CTF.storages.redTeam) > getStorageZero(CTF.storages.greenTeam) then
				for _, pid in pairs(players) do
					if getPlayerStorageValue(pid, CTF.storages.redTeam) == 1 then
						local am = {}
						doPlayerAddItem(pid, 10558, 3)
					end
				end
				str = "O time Vermelho venceu o evento! Placar: Time Vermelho ["..getStorageZero(CTF.storages.redTeam).."] VS ["..getStorageZero(CTF.storages.greenTeam).."] Time Verde. Os jogadores do time Vermelho receberam prêmios!"
			elseif getStorageZero(CTF.storages.greenTeam) > getStorageZero(CTF.storages.redTeam) then
				for _, pid in pairs(players) do
					if getPlayerStorageValue(pid, CTF.storages.greenTeam) == 1 then
						doPlayerAddItem(pid, 10558, 3)
					end
				end
				str = "O time Verde venceu o evento! Placar: Time Verde ["..getStorageZero(CTF.storages.greenTeam).."] VS ["..getStorageZero(CTF.storages.redTeam).."] Time Vermelho. Os jogadores do time Verde receberam prêmios!" 
			elseif getStorageZero(CTF.storages.greenTeam) == getStorageZero(CTF.storages.redTeam) then
				for _, pid in pairs(players) do
						doPlayerAddItem(pid, 10558, 1)
				end
				str = "Houve um empate! Os dois times fizeram "..getStorageZero(CTF.storages.greenTeam).." pontos!"
			end
			warnPlayersWithStorage(822066, 1, 25, "O evento acabou pois excedeu o limite 1 hora de duração! "..str)
			CTF.removeFlags()
			for _, pid in pairs(players) do
				if getPlayerStorageValue(pid, CTF.storages.greenFlag) == 1 or getPlayerStorageValue(pid, CTF.storages.redFlag) == 1 then
					doPlayerSetStorageValue(pid, CTF.storages.greenFlag, -1)
					doPlayerSetStorageValue(pid, CTF.storages.redFlag, -1)
				end
				doTeleportThing(pid, CTF.exit_)
				doPlayerSetStorageValue(pid, 822066, -1)
				doPlayerSetStorageValue(pid, CTF.storages.greenTeam, -1)
				doPlayerSetStorageValue(pid, CTF.storages.redTeam, -1)
				doPlayerSetStorageValue(pid, CTF.storages.greenFlag, -1)
				doPlayerSetStorageValue(pid, CTF.storages.redFlag, -1)
				doRemoveCondition(pid, CONDITION_OUTFIT)
			end
		else
			return false
		end
	end
	}

 

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.7k

Informação Importante

Confirmação de Termo