Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá, tudo bom? Peguei um sistema que o lobão criou e modifiquei para TFS 1.x (eu uso o 1.3 e funcionou certinho).

Lembrando que todos os créditos são do @xWhiteWolf.

 

Explicação:

O sistema escolhe automáticamente, entre todas as salas de trainers, aquela que está vazia pra te alocar.

 

94rO57T.png

Fiz em dois scripts de movements, um o action id no teleport para entrar na sala e outro no teleport para sair:

trainer_entrar.lua: 

Spoiler

local storage = 5845

local config = {
	first_room_pos = {x = 173, y = 223, z = 5}, -- posicao da primeira pos (linha 1 coluna 1)
	distX= 4, -- distancia em X entre cada sala (de uma mesma linha)
	distY= 8, -- distancia em Y entre cada sala (de uma mesma coluna)
	rX= 2, -- numero de colunas
	rY= 2 -- numero de linhas
}

local function isBusyable(position)
	local player = Tile(position):getTopCreature()
	if player then
		if player:isPlayer() then
			return false
		end
	end

	local tile = Tile(position)
	if not tile then
		return false
	end

	local ground = tile:getGround()
	if not ground or ground:hasProperty(CONST_PROP_BLOCKSOLID) then
		return false
	end

	local items = tile:getItems()
	for i = 1, tile:getItemCount() do
		local item = items[i]
		local itemType = item:getType()
		if itemType:getType() ~= ITEM_TYPE_MAGICFIELD and not itemType:isMovable() and item:hasProperty(CONST_PROP_BLOCKSOLID) then
			return false
		end
	end

	return true
end

local function addTrainers(position, arrayPos)
	if not isBusyable(position) then
		for places = 1, #arrayPos do
			local trainer = Tile(arrayPos[places]):getTopCreature()
			if not trainer then
				local monster = Game.createMonster("Trainer", arrayPos[places])
				monster:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
			end
		end
	end
end

local function calculatingRoom(uid, position, coluna, linha)
	local player = Player(uid)
	if coluna >= config.rX then
		coluna = 0
		linha = linha < (config.rY -1) and linha + 1 or false
	end

	if linha then
		local room_pos = {x = position.x + (coluna * config.distX), y = position.y + (linha * config.distY), z = position.z}
		if isBusyable(room_pos) then
			player:teleportTo(room_pos)
			player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
			addTrainers(room_pos, {{x = room_pos.x - 1, y = room_pos.y + 1, z = room_pos.z}, {x = room_pos.x + 1 , y = room_pos.y + 1, z = room_pos.z}})
		else
			calculatingRoom(uid, position, coluna + 1, linha)
		end
	else
		player:sendCancelMessage("Couldn't find any position for you right now.")
	end
end

function onStepIn(creature, item, position, fromPosition)
	if not creature:isPlayer() then
		return false
	end

	if creature:getStorageValue(storage) - os.time() > 0 then
		creature:sendTextMessage(MESSAGE_INFO_DESCR, "You gotta wait a few seconds before you can enter trainning room again")
		creature:teleportTo(fromPosition, true)
		return true
	end

	calculatingRoom(creature.uid, config.first_room_pos, 0, 0)

	return true
end

 


trainer_sair.lua: 

Spoiler

local storage = 5845

local function removeTrainers(position)
	local arrayPos = {{x = position.x - 1, y = position.y + 1, z = position.z}, {x = position.x + 1 , y = position.y + 1, z = position.z}}
	for places = 1, #arrayPos do
		local trainer = Tile(arrayPos[places]):getTopCreature()
		if trainer then
			if trainer:isMonster() then
				trainer:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
				trainer:remove()
			end
		end
	end
end
	
function onStepIn(creature, item, position, fromPosition)
	if not creature:isPlayer() then
		return false
	end

	removeTrainers(fromPosition)
	creature:teleportTo(creature:getTown():getTemplePosition())
	creature:setStorageValue(storage, os.time() + 5)

	return true
end

 


É isso pessoal, para melhor entendimento de como funciona ou como instalar veja o tópico do lobão: http://www.tibiaking.com/forum/forums/topic/68031-novo-sistema-de-trainer-036~04/

 

  • Respostas 19
  • Visualizações 5.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Opa Luan, tranquilo, desculpe estar revivendo este tópico, mas não sei onde devo colocar o action ID para entrar no tp e sair nesse script, poderia me ajudar? Abraços!!  

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Postado

parece estar bem feito. Agradeço o trabalho que você teve para adaptar o sistema.
Se depender de mim, aprovadíssimo. :grin:

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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