Ir para conteúdo
  • 0

roxandre

Pergunta

Queria um script de uma quest em que tivésse 7 mesas em formar de meio que um circulo ,ai você põe um item em cada uma delas ,e há uma mesa no meio ,dai você puxa uma alavanca e os 7 itens somem ,sai um distance efeect igual da paralyze dos itens ,em direção a mesa do meio ,e quando eles chegam na mesa ela vira um helmet id : 2342

e aqui o id dos 7 items :

2335
2336
2337
2338
2339
2340
2341
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Cara, ficou bem maneiro. Pra ficar mais bonito, deixei sair um efeito de cada vez, com um intervalo de 0,5s entre eles. Aí o helmet só aparece depois que o 7º efeito chega.

 

 

function removeValueFromTable(table, value)
	local c = 0
	for _, v in pairs(table) do
		if v == value then
			table[_] = nil
			c = 1
			break
		end
	end
	return c ~= 0
end

	local itemPos = { -- Posições das 7 mesas
	[1] = {x=216, y=580, z=7},
	[2] = {x=216, y=581, z=7},
	[3] = {x=216, y=582, z=7},
	[4] = {x=216, y=583, z=7},
	[5] = {x=216, y=584, z=7},
	[6] = {x=216, y=585, z=7},
	[7] = {x=216, y=586, z=7},
}
	
	local centralPos = {x=218, y=581, z=7} -- Posição da mesa central
	local distEffect = CONST_ANI_SMALLICE

function onUse(cid, item, fromPos, item2, toPos)
	local ids = {2335, 2336, 2337, 2338, 2339, 2340, 2341}
	local check = 0
	for i = 1, 7 do
		for stack = 1, 10 do
			itemPos[i].stackpos = stack
			if isInArray(ids, getThingFromPos(itemPos[i]).itemid) then
				check = check + 1
				removeValueFromTable(ids, getThingFromPos(itemPos[i]).itemid)
				break
			end
		end
	end
	if check < 7 then
		doSendMagicEffect(getCreaturePosition(cid), 2)
	else
		ids = {2335, 2336, 2337, 2338, 2339, 2340, 2341}
		local time = 0
		for i = 1, 7 do
			for stack = 1, 10 do
				itemPos[i].stackpos = stack
				if isInArray(ids, getThingFromPos(itemPos[i]).itemid) then
					doRemoveItem(getThingFromPos(itemPos[i]).uid, 1)
					doSendMagicEffect(itemPos[i], 12)
					removeValueFromTable(ids, getThingFromPos(itemPos[i]).itemid)
					break
				end				
			end
			addEvent(doSendDistanceShoot, time, itemPos[i], centralPos, distEffect)
			time = time + 500
		end
		addEvent(doSendMagicEffect, time, centralPos, 10)
		addEvent(doCreateItem, time, 2342, 1, centralPos)
	end
	if item.itemid % 2 == 0 then
		doTransformItem(item.uid, item.itemid - 1)
	else
		doTransformItem(item.uid, item.itemid + 1)
	end
	return true
end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, ficou bem maneiro. Pra ficar mais bonito, deixei sair um efeito de cada vez, com um intervalo de 0,5s entre eles. Aí o helmet só aparece depois que o 7º efeito chega.

 

 

function removeValueFromTable(table, value)
	local c = 0
	for _, v in pairs(table) do
		if v == value then
			table[_] = nil
			c = 1
			break
		end
	end
	return c ~= 0
end

	local itemPos = { -- Posições das 7 mesas
	[1] = {x=216, y=580, z=7},
	[2] = {x=216, y=581, z=7},
	[3] = {x=216, y=582, z=7},
	[4] = {x=216, y=583, z=7},
	[5] = {x=216, y=584, z=7},
	[6] = {x=216, y=585, z=7},
	[7] = {x=216, y=586, z=7},
}
	
	local centralPos = {x=218, y=581, z=7} -- Posição da mesa central
	local distEffect = CONST_ANI_SMALLICE

function onUse(cid, item, fromPos, item2, toPos)
	local ids = {2335, 2336, 2337, 2338, 2339, 2340, 2341}
	local check = 0
	for i = 1, 7 do
		for stack = 1, 10 do
			itemPos[i].stackpos = stack
			if isInArray(ids, getThingFromPos(itemPos[i]).itemid) then
				check = check + 1
				removeValueFromTable(ids, getThingFromPos(itemPos[i]).itemid)
				break
			end
		end
	end
	if check < 7 then
		doSendMagicEffect(getCreaturePosition(cid), 2)
	else
		ids = {2335, 2336, 2337, 2338, 2339, 2340, 2341}
		local time = 0
		for i = 1, 7 do
			for stack = 1, 10 do
				itemPos[i].stackpos = stack
				if isInArray(ids, getThingFromPos(itemPos[i]).itemid) then
					doRemoveItem(getThingFromPos(itemPos[i]).uid, 1)
					doSendMagicEffect(itemPos[i], 12)
					removeValueFromTable(ids, getThingFromPos(itemPos[i]).itemid)
					break
				end				
			end
			addEvent(doSendDistanceShoot, time, itemPos[i], centralPos, distEffect)
			time = time + 500
		end
		addEvent(doSendMagicEffect, time, centralPos, 10)
		addEvent(doCreateItem, time, 2342, 1, centralPos)
	end
	if item.itemid % 2 == 0 then
		doTransformItem(item.uid, item.itemid - 1)
	else
		doTransformItem(item.uid, item.itemid + 1)
	end
	return true
end

 

 

 

Cara, ficou bem maneiro. Pra ficar mais bonito, deixei sair um efeito de cada vez, com um intervalo de 0,5s entre eles. Aí o helmet só aparece depois que o 7º efeito chega.

 

 

function removeValueFromTable(table, value)
	local c = 0
	for _, v in pairs(table) do
		if v == value then
			table[_] = nil
			c = 1
			break
		end
	end
	return c ~= 0
end

	local itemPos = { -- Posições das 7 mesas
	[1] = {x=216, y=580, z=7},
	[2] = {x=216, y=581, z=7},
	[3] = {x=216, y=582, z=7},
	[4] = {x=216, y=583, z=7},
	[5] = {x=216, y=584, z=7},
	[6] = {x=216, y=585, z=7},
	[7] = {x=216, y=586, z=7},
}
	
	local centralPos = {x=218, y=581, z=7} -- Posição da mesa central
	local distEffect = CONST_ANI_SMALLICE

function onUse(cid, item, fromPos, item2, toPos)
	local ids = {2335, 2336, 2337, 2338, 2339, 2340, 2341}
	local check = 0
	for i = 1, 7 do
		for stack = 1, 10 do
			itemPos[i].stackpos = stack
			if isInArray(ids, getThingFromPos(itemPos[i]).itemid) then
				check = check + 1
				removeValueFromTable(ids, getThingFromPos(itemPos[i]).itemid)
				break
			end
		end
	end
	if check < 7 then
		doSendMagicEffect(getCreaturePosition(cid), 2)
	else
		ids = {2335, 2336, 2337, 2338, 2339, 2340, 2341}
		local time = 0
		for i = 1, 7 do
			for stack = 1, 10 do
				itemPos[i].stackpos = stack
				if isInArray(ids, getThingFromPos(itemPos[i]).itemid) then
					doRemoveItem(getThingFromPos(itemPos[i]).uid, 1)
					doSendMagicEffect(itemPos[i], 12)
					removeValueFromTable(ids, getThingFromPos(itemPos[i]).itemid)
					break
				end				
			end
			addEvent(doSendDistanceShoot, time, itemPos[i], centralPos, distEffect)
			time = time + 500
		end
		addEvent(doSendMagicEffect, time, centralPos, 10)
		addEvent(doCreateItem, time, 2342, 1, centralPos)
	end
	if item.itemid % 2 == 0 then
		doTransformItem(item.uid, item.itemid - 1)
	else
		doTransformItem(item.uid, item.itemid + 1)
	end
	return true
end

 

 

brother o script ficou perfeitamente perfeito ,só que teve um problema aqui no meu sv ,tipo eu botei tudo cérto ,quando eu puxo a alavanca ele tira as mesas ao invés dos items ,dai depois eu puxo denovo ele puxa os items ,e depois eu puxo denovo ele puxa o chão uaheuaheuah ,te como arrumar ?

Opa opa ,pode fechar aqui Omega me ajudou via skype obrigado omega rep+.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...