Ir para conteúdo
  • 0

Uma Quest Em Grupo


fokus090

Pergunta

Olá pessoal.

Estou 'batendo cabeça' aqui tentando resolver algo... Mas ainda não obtive sucesso. Espero que possam me ajudar.

Segue Abaixo :.

 

Criei uma Quest, onde é preciso Clicar em uma 'Estátua' para ser Teleportado para lá.

Essa Quest pode ser feita tanto Solo, quanto em Grupo. A Questão é a Seguinte :.

 

Caso o Player clique na Estátua, e esse jogador não está em Nenhum Grupo, ele é 'Teleportado para dentro da Quest' e nenhum outro jogador poderá entrar no mesmo local até ele sair de lá.

 

Mas, caso o Player clique na Estátua, e esse jogador 'Está em um Grupo', ele é teleportado para dentro da Quest. E qualquer outro jogador 'que esteja no mesmo grupo daquele que está dentro da Quest' poderá, ao clicar na estátua, ser teleportado para dentro da Quest. Mas qualquer outro jogador que não esteja dentro do Grupo, seja Barrado de entrar.

 

 

Espero que tenha ficado claro.

Abraços !!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
posta essa quest ai que talvez eu consiga arruma !

 

Bem meu amigo, essa é minha idéia de Quest. Mas o Ponto forte do meu pedido é apenas a Parte dos Grupos. Não sei usar as funções .lua sobre eles (getPlayerParty(cid) | getPartyMembers(lid) | getPartyLeader(cid) ... ).

 

Não é preciso fazer a Quest inteira, sobre criar estátua, e blá, blá, blá. Gostaria apenas de uma parte do Script me ensinando a como fazer a parte dos grupos mencionado no Post Original acima.

 

Abraços !! wink.png

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz aqui correndo, mas acho que vai funcionar.. testa aí.

Em data/actions/scripts crie um arquivo.lua e cole isto dentro:

 

local t = {
level = 100, --- level necessário para ser teleportado
party = 2,  --- minimo de players na party
quest = {x=1,y=1,z=1} --- local da quest
}
local fromPos,toPos = {x = 1, y = 1, z = 1},{x = 1, y = 1, z = 1} -- começo e final da área

function onUse(cid, item, position, fromPosition, itemEx, toPosition)
   local test = {}
  if (getPlayerParty(cid)) then
	 if(getPlayerParty(cid) == cid) then
				  local players = getPartyMembers(getPartyLeader(cid))
	   if #players >= t.party then
					  for x = fromPos.x, toPos.x do
					  for y = fromPos.y, toPos.y  do
					  local pos = {x=x, y=y, z=fromPos.z}
					  local m = getTopCreature(pos).uid
					  if m ~= 0 and isPlayer(m) then return doPlayerSendCancel(cid, "Alguém está fazendo a quest") end
					  end
					  end
		  for i, k in ipairs(players) do
					 if (getPlayerLevel(k) < t.level) then
						    doPlayerSendCancel(cid, "Todos os players devem ter level "..t.level.." ou mais para entrar na quest.")
						  return true
					 end
			  table.insert(test, k)
		  end
			    for i, tid in ipairs(test) do
					 doSendMagicEffect(getCreaturePosition(tid), CONST_ME_POFF)
					 doTeleportThing(tid, t.quest, true)
					 doSendMagicEffect(t.quest, CONST_ME_ENERGYAREA)
			    end
			 else		   
			   return doPlayerSendCancel(cid, "É necessário pelo menos "..t.party.." players na party.")
	    end
	   else
		  return doPlayerSendCancel(cid, "O líder da party deve usar a estátua primeiro.")
    end
	   else  
		  for x = fromPos.x, toPos.x do
		  for y = fromPos.y, toPos.y  do
		  local pos = {x=x, y=y, z=fromPos.z}
		  local m = getTopCreature(pos).uid
		  if m ~= 0 and isPlayer(m) then return doPlayerSendCancel(cid, "Alguém está fazendo a quest") end
		  end
		  end
		  doTeleportThing(cid, t.quest)
		  doSendMagicEffect(t.quest, 10)
  end
return true
end 

 

Em actions.xml cole a tag: <action actionid="ACTION_ID_DA_ESTATUA" script="NOMEDOSEUARQUIVO.lua"/>

 

Testa aí, se aparecer algum erro.. posta que eu vejo quando voltar. Vlw, espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
else

return doPlayerSendCancel(cid, "É necessário pelo menos "..t.party.." players na party.")

end

 

 

Essa parte aí não é nescessário. Para o Jogador, há duas opções :. Fazer a Quest Solo, ou fazer em Grupo.

Não é Obrigatório ir em Grupo para realizar a Quest.

 

PS :. Notei que você não usou em nenhum momento alguma Storage ou GlobalStorage. Você meio que mandou Scannear toda a área da Quest procurando por um jogador. Caso tenha algum lá, manda a mensagem. É bem interessante isso. Eu ainda não testei, mas se realmente funcionar, será de grande ajuda para futuros Scrips.

 

Abraços !! wink.png

Link para o comentário
Compartilhar em outros sites

  • 0

Mas ele pode ir solo o.O Aquela parte é quantos players em party podem ir, ou seja, um grupo de quantas pessoas. Ali não tem a ver com ir solo.....

-- Sim, não usei globalstorage ou storage, fiz um loop para checkar se já tinha algum player no local.

Quando testar e se funcionar, avise no tópico que sua dúvida foi sanada para que possam mover o tópico, caso tenha alguma dúvida, poste aqui mesmo que te respondo.

Editado por Leoxtibia
Link para o comentário
Compartilhar em outros sites

  • 0
Mas ele pode ir solo o.O Aquela parte é quantos players em party podem ir, ou seja, um grupo de quantas pessoas. Ali não tem a ver com ir solo.....

 

Aah é? Desculpe meu erro então. happy.png

 

-- Sim, não usei globalstorage ou storage, fiz um loop para checkar se já tinha algum player no local.

Quando testar e se funcionar, avise no tópico que sua dúvida foi sanada para que possam mover o tópico, caso tenha alguma dúvida, poste aqui mesmo que te respondo.

 

Testarei agora mesmo. Caso funcione logo Editarei aqui.

 

Edit :.

Meu amigo... Ficou Perfeita. Melhor do que eu esperava. Muito Obrigado pela ajuda.

 

REP+

button_ok.png

Editado por Frenesy
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...