Ir para conteúdo

Featured Replies

Postado

Tentei fazer um esboço, a ideia é mais ou menos esta,  mas estou sem tempo para testar:

local config = {
	storageID = 14586,
	tradeCenter = {pos = {x = 224, y = 307, z = 7}},
	cpActionID = {23000, 23001, 23002, 23003, 23004, 23005, 23006, 23007, 23008, 23009},
	tcActionID = 22334,
}

local cities = {
	pewter = {id = 1, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cerulean = {id = 2, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	viridian = {id = 3, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	celadon = {id = 4, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	saffron = {id = 5, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	lavender = {id = 6, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	vermilion = {id = 7, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cinnabar = {id = 8, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	fuchsia = {id = 9, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
}

function onStepIn(cid, item, pos)
	if isSummon(cid) then
		return false
	end

	teleportTo = config.tradeCenter.pos
	
	if isInArray (config.cpActionID, item.actionid) then
		if item.actionid == config.cpActionID[1] then
			setPlayerStorageValue(cid, config.storageID, cities.pewter.id)
		elseif item.actionid == config.cpActionID[2] then
			setPlayerStorageValue(cid, config.storageID, cities.cerulean.id)
		elseif item.actionid == config.cpActionID[3] then
			setPlayerStorageValue(cid, config.storageID, cities.viridian.id)
		elseif item.actionid == config.cpActionID[4] then
			setPlayerStorageValue(cid, config.storageID, cities.celadon.id)
		elseif item.actionid == config.cpActionID[5] then
			setPlayerStorageValue(cid, config.storageID, cities.saffron.id)
		elseif item.actionid == config.cpActionID[6] then
			setPlayerStorageValue(cid, config.storageID, cities.lavender.id)
		elseif item.actionid == config.cpActionID[7] then
			setPlayerStorageValue(cid, config.storageID, cities.vermilion.id)
		elseif item.actionid == config.cpActionID[8] then
			setPlayerStorageValue(cid, config.storageID, cities.cinnabar.id)
		elseif item.actionid == config.cpActionID[9] then
			setPlayerStorageValue(cid, config.storageID, cities.fuchsia.id)
		end
	elseif item.actionid == config.tcActionID then
		playerStatus = getPlayerStorage(cid, config.storageID)
		if playerStatus == cities.pewter.id then
			teleportTo = cities.pewter.pos
		elseif playerStatus == cities.cerulean.id then
			teleportTo = cities.cerulean.pos
		elseif playerStatus == cities.viridian.id then
			teleportTo = cities.viridian.pos
		elseif playerStatus == cities.celadon.id then
			teleportTo = cities.celadon.pos
		elseif playerStatus == cities.saffron.id then
			teleportTo = cities.saffron.pos
		elseif playerStatus == cities.lavender.id then
			teleportTo = cities.lavender.pos
		elseif playerStatus == cities.vermilion.id then
			teleportTo = cities.vermilion.pos
		elseif playerStatus == cities.cinnabar.id then
			teleportTo = cities.cinnabar.pos
		elseif playerStatus == cities.fuchsia.id then
			teleportTo = cities.fuchsia.pos
		else
			teleportTo = cities.cerulean.pos
		end
	end


	if #getCreatureSummons(cid) >= 1 then
	   for i = 1, #getCreatureSummons(cid) do
	       doTeleportThing(getCreatureSummons(cid), teleportTo, false)
	   end
	end

	doTeleportThing(cid, teleportTo, false)  

	return true
end

Você tem o actionID do item que você colocou no chão, dentro de cada cidade você coloca o equivalente e no pvp você coloca um único (configurável na parte do config). Quando o jogador passa ele olha qual é a action ID que você acabou de passar por cima e a partir daí ele decide o que vai fazer. Se for de CP ele salva o ID de onde você veio pra reutilizar depois, caso você esteja saindo ele pega o seu ID e te manda para a cidade equivalente.

 

Daria pra diminuir bastante o código usando for, mas acredito que ficaria um pouco mais técnico para caso alguém queira modificar...

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

  • Respostas 11
  • Visualizações 712
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Acho que isso deve corrigir o erro que apareceu no terminal: local config = { storageID = 14586, tradeCenter = {pos = {x = 224, y = 307, z = 7}}, cpActionID = {23000, 23001, 23002, 23003, 23004

  • sim

Posted Images

Postado
  • Autor
16 horas atrás, marcot disse:

Tentei fazer um esboço, a ideia é mais ou menos esta,  mas estou sem tempo para testar:


local config = {
	storageID = 14586,
	tradeCenter = {pos = {x = 224, y = 307, z = 7}},
	cpActionID = {23000, 23001, 23002, 23003, 23004, 23005, 23006, 23007, 23008, 23009},
	tcActionID = 22334,
}

local cities = {
	pewter = {id = 1, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cerulean = {id = 2, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	viridian = {id = 3, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	celadon = {id = 4, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	saffron = {id = 5, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	lavender = {id = 6, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	vermilion = {id = 7, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cinnabar = {id = 8, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	fuchsia = {id = 9, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
}

function onStepIn(cid, item, pos)
	if isSummon(cid) then
		return false
	end

	teleportTo = config.tradeCenter.pos
	
	if isInArray (config.cpActionID, item.actionid) then
		if item.actionid == config.cpActionID[1] then
			setPlayerStorageValue(cid, config.storageID, cities.pewter.id)
		elseif item.actionid == config.cpActionID[2] then
			setPlayerStorageValue(cid, config.storageID, cities.cerulean.id)
		elseif item.actionid == config.cpActionID[3] then
			setPlayerStorageValue(cid, config.storageID, cities.viridian.id)
		elseif item.actionid == config.cpActionID[4] then
			setPlayerStorageValue(cid, config.storageID, cities.celadon.id)
		elseif item.actionid == config.cpActionID[5] then
			setPlayerStorageValue(cid, config.storageID, cities.saffron.id)
		elseif item.actionid == config.cpActionID[6] then
			setPlayerStorageValue(cid, config.storageID, cities.lavender.id)
		elseif item.actionid == config.cpActionID[7] then
			setPlayerStorageValue(cid, config.storageID, cities.vermilion.id)
		elseif item.actionid == config.cpActionID[8] then
			setPlayerStorageValue(cid, config.storageID, cities.cinnabar.id)
		elseif item.actionid == config.cpActionID[9] then
			setPlayerStorageValue(cid, config.storageID, cities.fuchsia.id)
		end
	elseif item.actionid == config.tcActionID then
		playerStatus = getPlayerStorage(cid, config.storageID)
		if playerStatus == cities.pewter.id then
			teleportTo = cities.pewter.pos
		elseif playerStatus == cities.cerulean.id then
			teleportTo = cities.cerulean.pos
		elseif playerStatus == cities.viridian.id then
			teleportTo = cities.viridian.pos
		elseif playerStatus == cities.celadon.id then
			teleportTo = cities.celadon.pos
		elseif playerStatus == cities.saffron.id then
			teleportTo = cities.saffron.pos
		elseif playerStatus == cities.lavender.id then
			teleportTo = cities.lavender.pos
		elseif playerStatus == cities.vermilion.id then
			teleportTo = cities.vermilion.pos
		elseif playerStatus == cities.cinnabar.id then
			teleportTo = cities.cinnabar.pos
		elseif playerStatus == cities.fuchsia.id then
			teleportTo = cities.fuchsia.pos
		else
			teleportTo = cities.cerulean.pos
		end
	end


	if #getCreatureSummons(cid) >= 1 then
	   for i = 1, #getCreatureSummons(cid) do
	       doTeleportThing(getCreatureSummons(cid), teleportTo, false)
	   end
	end

	doTeleportThing(cid, teleportTo, false)  

	return true
end

Você tem o actionID do item que você colocou no chão, dentro de cada cidade você coloca o equivalente e no pvp você coloca um único (configurável na parte do config). Quando o jogador passa ele olha qual é a action ID que você acabou de passar por cima e a partir daí ele decide o que vai fazer. Se for de CP ele salva o ID de onde você veio pra reutilizar depois, caso você esteja saindo ele pega o seu ID e te manda para a cidade equivalente.

 

Daria pra diminuir bastante o código usando for, mas acredito que ficaria um pouco mais técnico para caso alguém queira modificar...

 

 

tive o seguinte problema com isso:

 

Spoiler

image.thumb.png.607486111cc936e411d5c4b64d958464.png

 

a ida até o tr dá certinho, mas a volta tá igual antes :/

a diferença é que agora aparece um erro no tfs

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

Postado

Acho que isso deve corrigir o erro que apareceu no terminal:

local config = {
	storageID = 14586,
	tradeCenter = {pos = {x = 224, y = 307, z = 7}},
	cpActionID = {23000, 23001, 23002, 23003, 23004, 23005, 23006, 23007, 23008, 23009},
	tcActionID = 22334,
}

local cities = {
	pewter = {id = 1, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cerulean = {id = 2, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	viridian = {id = 3, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	celadon = {id = 4, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	saffron = {id = 5, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	lavender = {id = 6, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	vermilion = {id = 7, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cinnabar = {id = 8, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	fuchsia = {id = 9, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
}

function onStepIn(cid, item, pos)
	if isSummon(cid) then
		return false
	end

	teleportTo = config.tradeCenter.pos
	
	if isInArray (config.cpActionID, item.actionid) then
		if item.actionid == config.cpActionID[1] then
			setPlayerStorageValue(cid, config.storageID, cities.pewter.id)
		elseif item.actionid == config.cpActionID[2] then
			setPlayerStorageValue(cid, config.storageID, cities.cerulean.id)
		elseif item.actionid == config.cpActionID[3] then
			setPlayerStorageValue(cid, config.storageID, cities.viridian.id)
		elseif item.actionid == config.cpActionID[4] then
			setPlayerStorageValue(cid, config.storageID, cities.celadon.id)
		elseif item.actionid == config.cpActionID[5] then
			setPlayerStorageValue(cid, config.storageID, cities.saffron.id)
		elseif item.actionid == config.cpActionID[6] then
			setPlayerStorageValue(cid, config.storageID, cities.lavender.id)
		elseif item.actionid == config.cpActionID[7] then
			setPlayerStorageValue(cid, config.storageID, cities.vermilion.id)
		elseif item.actionid == config.cpActionID[8] then
			setPlayerStorageValue(cid, config.storageID, cities.cinnabar.id)
		elseif item.actionid == config.cpActionID[9] then
			setPlayerStorageValue(cid, config.storageID, cities.fuchsia.id)
		end
	elseif item.actionid == config.tcActionID then
		playerStatus = getPlayerStorageValue(cid, config.storageID)
		if playerStatus == cities.pewter.id then
			teleportTo = cities.pewter.pos
		elseif playerStatus == cities.cerulean.id then
			teleportTo = cities.cerulean.pos
		elseif playerStatus == cities.viridian.id then
			teleportTo = cities.viridian.pos
		elseif playerStatus == cities.celadon.id then
			teleportTo = cities.celadon.pos
		elseif playerStatus == cities.saffron.id then
			teleportTo = cities.saffron.pos
		elseif playerStatus == cities.lavender.id then
			teleportTo = cities.lavender.pos
		elseif playerStatus == cities.vermilion.id then
			teleportTo = cities.vermilion.pos
		elseif playerStatus == cities.cinnabar.id then
			teleportTo = cities.cinnabar.pos
		elseif playerStatus == cities.fuchsia.id then
			teleportTo = cities.fuchsia.pos
		else
			teleportTo = cities.cerulean.pos
		end
	end


	if #getCreatureSummons(cid) >= 1 then
	   for i = 1, #getCreatureSummons(cid) do
	       doTeleportThing(getCreatureSummons(cid), teleportTo, false)
	   end
	end

	doTeleportThing(cid, teleportTo, false)  

	return true
end

 

Postado

@marcot @Danxi tá funcionando? posso aplicar no meu servidor? TFS 0.3.6

 

 

local config = {
	storageID = 14586,
	tradeCenter = {pos = {x = 224, y = 307, z = 7}},
	cpActionID = {23000, 23001, 23002, 23003, 23004, 23005, 23006, 23007, 23008, 23009},
	tcActionID = 22334,
}

local cities = {
	pewter = {id = 1, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cerulean = {id = 2, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	viridian = {id = 3, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	celadon = {id = 4, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	saffron = {id = 5, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	lavender = {id = 6, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	vermilion = {id = 7, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	cinnabar = {id = 8, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
	fuchsia = {id = 9, pos = {x = 396, y = 1746, z = 9, stackpos=253}},
}

function onStepIn(cid, item, pos)
	if isSummon(cid) then
		return false
	end

	teleportTo = config.tradeCenter.pos
	
	if isInArray (config.cpActionID, item.actionid) then
		if item.actionid == config.cpActionID[1] then
			setPlayerStorageValue(cid, config.storageID, cities.pewter.id)
		elseif item.actionid == config.cpActionID[2] then
			setPlayerStorageValue(cid, config.storageID, cities.cerulean.id)
		elseif item.actionid == config.cpActionID[3] then
			setPlayerStorageValue(cid, config.storageID, cities.viridian.id)
		elseif item.actionid == config.cpActionID[4] then
			setPlayerStorageValue(cid, config.storageID, cities.celadon.id)
		elseif item.actionid == config.cpActionID[5] then
			setPlayerStorageValue(cid, config.storageID, cities.saffron.id)
		elseif item.actionid == config.cpActionID[6] then
			setPlayerStorageValue(cid, config.storageID, cities.lavender.id)
		elseif item.actionid == config.cpActionID[7] then
			setPlayerStorageValue(cid, config.storageID, cities.vermilion.id)
		elseif item.actionid == config.cpActionID[8] then
			setPlayerStorageValue(cid, config.storageID, cities.cinnabar.id)
		elseif item.actionid == config.cpActionID[9] then
			setPlayerStorageValue(cid, config.storageID, cities.fuchsia.id)
		end
	elseif item.actionid == config.tcActionID then
		playerStatus = getPlayerStorageValue(cid, config.storageID)
		if playerStatus == cities.pewter.id then
			teleportTo = cities.pewter.pos
		elseif playerStatus == cities.cerulean.id then
			teleportTo = cities.cerulean.pos
		elseif playerStatus == cities.viridian.id then
			teleportTo = cities.viridian.pos
		elseif playerStatus == cities.celadon.id then
			teleportTo = cities.celadon.pos
		elseif playerStatus == cities.saffron.id then
			teleportTo = cities.saffron.pos
		elseif playerStatus == cities.lavender.id then
			teleportTo = cities.lavender.pos
		elseif playerStatus == cities.vermilion.id then
			teleportTo = cities.vermilion.pos
		elseif playerStatus == cities.cinnabar.id then
			teleportTo = cities.cinnabar.pos
		elseif playerStatus == cities.fuchsia.id then
			teleportTo = cities.fuchsia.pos
		else
			teleportTo = cities.cerulean.pos
		end
	end


	if #getCreatureSummons(cid) >= 1 then
	   for i = 1, #getCreatureSummons(cid) do
	       doTeleportThing(getCreatureSummons(cid), teleportTo, false)
	   end
	end

	doTeleportThing(cid, teleportTo, false)  

	return true
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