Ir para conteúdo
  • Cadastre-se

(Resolvido)Desert quest script


Ir para solução Resolvido por antharaz,

Posts Recomendados

Tenho esse script da desert quest e gostaria que ele funcionasse da seguinte forma, se o jogador não tiver os companheiros para fazer a quest, ele pode fazer sozinho mas tem que desembolsar todos os itens da quest da mesma forma, de todas vocações ! 

 

Script: 

local config = {
	{fromPosition = Position(1100, 1100, 8), toPosition = Position(1092, 1088, 8), sacrificePosition = Position(1102, 1100, 8), sacrificeId = 2175, vocationId = 1},
	{fromPosition = Position(1092, 1100, 8), toPosition = Position(1080, 1088, 8), sacrificePosition = Position(1090, 1100, 8), sacrificeId = 2674, vocationId = 2},
	{fromPosition = Position(1096, 1096, 8), toPosition = Position(1086, 1082, 8), sacrificePosition = Position(1096, 1095, 8), sacrificeId = 2455, vocationId = 3},
	{fromPosition = Position(1096, 1104, 8), toPosition = Position(1086, 1093, 8), sacrificePosition = Position(1096, 1105, 8), sacrificeId = 2376, vocationId = 4}
,
	guardPositions = {
		Position(1086, 1088, 8)
		}
	}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	item:transform(item.itemid == 1945 and 1946 or 1945)

	if item.itemid ~= 1946 then
		return true
	end

	local position = player:getPosition()

	local players = {}
	for i = 1, #config do
		local creature = Tile(config[i].fromPosition):getTopCreature()
		if not creature or not creature:isPlayer() then
			player:sendCancelMessage('You need one player of each vocation for this quest.')
			position:sendMagicEffect(CONST_ME_POFF)
			return true
		end

		local vocationId = creature:getVocation():getBase():getId()
		if vocationId ~= config[i].vocationId then
			player:sendCancelMessage('You need one player of each vocation for this quest.')
			position:sendMagicEffect(CONST_ME_POFF)
			return true
		end

		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if not sacrificeItem then
			player:sendCancelMessage(creature:getName() .. ' is missing ' .. (creature:getSex() == PLAYERSEX_FEMALE and 'her' or 'his') .. ' sacrifice on the altar.')
			position:sendMagicEffect(CONST_ME_POFF)
			return true
		end

		players[#players + 1] = creature
	end

	for i = 1, #players do
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if sacrificeItem then
			sacrificeItem:remove()
		end
		
		for i = 1, #config.demonPositions do
			Game.createMonster("Desert Guard", config.guardPositions[i])
		end
		
		players[i]:getPosition():sendMagicEffect(CONST_ME_POFF)
		players[i]:teleportTo(config[i].toPosition)
		config[i].toPosition:sendMagicEffect(CONST_ME_TELEPORT)
	end
	return true
end

 

WN4m2fS.png

 

 

Link para o post
Compartilhar em outros sites

@Chriistian 

 

Fiz para funcionar se tiver mais de 1 e menos de 4 também, pode ir com 1, 2, 3 ou 4 players... desde que estejam na posição correta.

 

Spoiler

local config = {
	{fromPosition = Position(1100, 1100, 8), toPosition = Position(1092, 1088, 8), sacrificePosition = Position(1102, 1100, 8), sacrificeId = 2175, vocationId = 1},
	{fromPosition = Position(1092, 1100, 8), toPosition = Position(1080, 1088, 8), sacrificePosition = Position(1090, 1100, 8), sacrificeId = 2674, vocationId = 2},
	{fromPosition = Position(1096, 1096, 8), toPosition = Position(1086, 1082, 8), sacrificePosition = Position(1096, 1095, 8), sacrificeId = 2455, vocationId = 3},
	{fromPosition = Position(1096, 1104, 8), toPosition = Position(1086, 1093, 8), sacrificePosition = Position(1096, 1105, 8), sacrificeId = 2376, vocationId = 4},
	guardPositions = {
		Position(1086, 1088, 8)
		}
	}
	
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	item:transform(item.itemid == 1945 and 1946 or 1945)

	if item.itemid ~= 1946 then
		return true
	end

	local position = player:getPosition()

	local players = {}
	for i = 1, #config do
		local creature = Tile(config[i].fromPosition):getTopCreature()
		
		
		if creature and creature:isPlayer() then
			players[#players + 1] = creature
			local vocationId = creature:getVocation():getBase():getId()
			if vocationId ~= config[i].vocationId then
				player:sendCancelMessage('Each vocation need be in correct position for this quest.')
				position:sendMagicEffect(CONST_ME_POFF)
				return true
			end
		end
		
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if not sacrificeItem then
			player:sendCancelMessage(creature:getName() .. ' is missing ' .. (creature:getSex() == PLAYERSEX_FEMALE and 'her' or 'his') .. ' sacrifice on the altar.')
			position:sendMagicEffect(CONST_ME_POFF)
			return true
		end
		
	end

	for i = 1, #players do
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if sacrificeItem then
			sacrificeItem:remove()
		end
		
		for i = 1, #config.demonPositions do
			Game.createMonster("Desert Guard", config.guardPositions[i])
		end
		
		players[i]:getPosition():sendMagicEffect(CONST_ME_POFF)
		players[i]:teleportTo(config[i].toPosition)
		config[i].toPosition:sendMagicEffect(CONST_ME_TELEPORT)
	end
	return true
end

 

 

 

E outra, tem coisa no script que nunca é usado, como o código abaixo:

 

Spoiler

		for i = 1, #config.demonPositions do
			Game.createMonster("Desert Guard", config.guardPositions[i])
		end

 

 

Link para o post
Compartilhar em outros sites
1 hora atrás, antharaz disse:

@Chriistian 

 

Fiz para funcionar se tiver mais de 1 e menos de 4 também, pode ir com 1, 2, 3 ou 4 players... desde que estejam na posição correta.

 

  Ocultar conteúdo


local config = {
	{fromPosition = Position(1100, 1100, 8), toPosition = Position(1092, 1088, 8), sacrificePosition = Position(1102, 1100, 8), sacrificeId = 2175, vocationId = 1},
	{fromPosition = Position(1092, 1100, 8), toPosition = Position(1080, 1088, 8), sacrificePosition = Position(1090, 1100, 8), sacrificeId = 2674, vocationId = 2},
	{fromPosition = Position(1096, 1096, 8), toPosition = Position(1086, 1082, 8), sacrificePosition = Position(1096, 1095, 8), sacrificeId = 2455, vocationId = 3},
	{fromPosition = Position(1096, 1104, 8), toPosition = Position(1086, 1093, 8), sacrificePosition = Position(1096, 1105, 8), sacrificeId = 2376, vocationId = 4},
	guardPositions = {
		Position(1086, 1088, 8)
		}
	}
	
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	item:transform(item.itemid == 1945 and 1946 or 1945)

	if item.itemid ~= 1946 then
		return true
	end

	local position = player:getPosition()

	local players = {}
	for i = 1, #config do
		local creature = Tile(config[i].fromPosition):getTopCreature()
		
		
		if creature and creature:isPlayer() then
			players[#players + 1] = creature
			local vocationId = creature:getVocation():getBase():getId()
			if vocationId ~= config[i].vocationId then
				player:sendCancelMessage('Each vocation need be in correct position for this quest.')
				position:sendMagicEffect(CONST_ME_POFF)
				return true
			end
		end
		
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if not sacrificeItem then
			player:sendCancelMessage(creature:getName() .. ' is missing ' .. (creature:getSex() == PLAYERSEX_FEMALE and 'her' or 'his') .. ' sacrifice on the altar.')
			position:sendMagicEffect(CONST_ME_POFF)
			return true
		end
		
	end

	for i = 1, #players do
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if sacrificeItem then
			sacrificeItem:remove()
		end
		
		for i = 1, #config.demonPositions do
			Game.createMonster("Desert Guard", config.guardPositions[i])
		end
		
		players[i]:getPosition():sendMagicEffect(CONST_ME_POFF)
		players[i]:teleportTo(config[i].toPosition)
		config[i].toPosition:sendMagicEffect(CONST_ME_TELEPORT)
	end
	return true
end

 

 

 

E outra, tem coisa no script que nunca é usado, como o código abaixo:

 

  Ocultar conteúdo


		for i = 1, #config.demonPositions do
			Game.createMonster("Desert Guard", config.guardPositions[i])
		end

 

@antharaz Muito obrigado, sim eu coloquei pra criar um bixo quanto for teleportado para outra sala, está correto ? vou testar aqui ! 

WN4m2fS.png

 

 

Link para o post
Compartilhar em outros sites
15 minutos atrás, antharaz disse:

@Chriistian 

 

Ele nunca cria o bixo que você configurou, se vc mandar a pos, eu deixo aqui pra criar sem problema.

 

Se possível gostaria sim !  @antharaz

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

WN4m2fS.png

 

 

Link para o post
Compartilhar em outros sites
  • Solução
Spoiler

local config = {
	{fromPosition = Position(1100, 1100, 8), toPosition = Position(1092, 1088, 8), sacrificePosition = Position(1102, 1100, 8), sacrificeId = 2175, vocationId = 1},
	{fromPosition = Position(1092, 1100, 8), toPosition = Position(1080, 1088, 8), sacrificePosition = Position(1090, 1100, 8), sacrificeId = 2674, vocationId = 2},
	{fromPosition = Position(1096, 1096, 8), toPosition = Position(1086, 1082, 8), sacrificePosition = Position(1096, 1095, 8), sacrificeId = 2455, vocationId = 3},
	{fromPosition = Position(1096, 1104, 8), toPosition = Position(1086, 1093, 8), sacrificePosition = Position(1096, 1105, 8), sacrificeId = 2376, vocationId = 4},
	guardPositions = {
		Position(1086, 1088, 8)
		}
	}
	
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	item:transform(item.itemid == 1945 and 1946 or 1945)

	if item.itemid ~= 1946 then
		return true
	end

	local position = player:getPosition()

	local players = {}
	for i = 1, #config do
		local creature = Tile(config[i].fromPosition):getTopCreature()
		
		
		if creature and creature:isPlayer() then
			players[#players + 1] = creature
			local vocationId = creature:getVocation():getBase():getId()
			if vocationId ~= config[i].vocationId then
				player:sendCancelMessage('Each vocation need be in correct position for this quest.')
				position:sendMagicEffect(CONST_ME_POFF)
				return true
			end
		end
		
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if not sacrificeItem then
			player:sendCancelMessage(creature:getName() .. ' is missing ' .. (creature:getSex() == PLAYERSEX_FEMALE and 'her' or 'his') .. ' sacrifice on the altar.')
			position:sendMagicEffect(CONST_ME_POFF)
			return true
		end
		
	end

	for i = 1, #players do
		local sacrificeItem = Tile(config[i].sacrificePosition):getItemById(config[i].sacrificeId)
		if sacrificeItem then
			sacrificeItem:remove()
		end
		
		for i = 1, #config.guardPositions do
			Game.createMonster("Desert Guard", config.guardPositions[i])
		end
		
		players[i]:getPosition():sendMagicEffect(CONST_ME_POFF)
		players[i]:teleportTo(config[i].toPosition)
		config[i].toPosition:sendMagicEffect(CONST_ME_TELEPORT)
	end
	return true
end

 

 

 

Prontinho ^^

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo