Ir para conteúdo
  • 0

Quest Simples


JonatasLucasf

Pergunta

então galera gostaria de pedir fazendo favor alguém poderia fazer um script de uma quest bem simples que funciona em tfs 1.1 que é so clikar no bau receber o item e uma mensagem você recebeu X item.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

^ sim.

@Bruno

Neste loop, id assumiria o valor dos indexes da tabela e qtd, as tabelas contendo ID e quantidade. Assim, o correto seria:

Sim, você está certo, eu sempre testo antes de falar merda, mais aqui no trampo é praticamente impossível, eu tinha me perdido na indexação, lua está sendo uma aventura pra mim hahaha!

 

@@zipter98

Na verdade, Lua não é uma linguagem puramente orientada a objetos, ela fornece meta-mecanismos para que possa ser feita a implementação de classes e herança.

 

De qualquer forma, agora está funcionando em tfs 1.1 hahaha:

 

local quest = {
	items = {
		{2394, 1},  -- { id, quantidade }
		{2160, 1}
	},
	sto = 98770 -- storage da quest.
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local queststatus = player:getStorageValue(quest.sto)
	if queststatus ~= 1 then
		for _, item in pairs(quest.items) do
			player:addItem(item[1], item[2])
		end
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Parabens! Voce completou a quest.")
		player:setStorageValue(quest.sto, 1)
	else
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Desculpe! Voce ja completou esta quest.")
	end
	return true
end
Editado por Bruno Minervino
Link para o comentário
Compartilhar em outros sites

  • 0

Faça oque o krono disse ou tente assim:

 

function onUse(cid, item, frompos, item2, topos)
 
if item.uid == 20006 then
  queststatus = getPlayerStorageValue(cid,98770)
  if queststatus == -1 then
  doPlayerSendTextMessage(cid,22,"Voce completou essa quest.")
  doPlayerAddItem(cid,2394,20)
    setPlayerStorageValue(cid,98770,1)
  else
  doPlayerSendTextMessage(cid,22,"Voce Ja Concluiu A Quest.")
  end
else
return 0
end
 
return 1
end

 

ali onde está doPlayerAddItem(cid,2394,20) é onde você irar altera o ID do item e a quantidade

Link para o comentário
Compartilhar em outros sites

  • 0

Apesar de a resposta da @AnnaFeeh não estar errada, acho que fica mais bonito assim:

function onUse(cid, item, frompos, item2, topos)
	local quest = {
	items = { --items que o player irá receber
		{2394, 1},
		{2160, 1},
	},
	sto = 98770 --98770 é a storage da quest.
	}
	local queststatus = getPlayerStorageValue(cid, quest.sto)
	if queststatus ~= 1 then
		for id, items in pairs(quest.items) do
			doPlayerAddItem(cid, items[1], items[2])
		end
		doPlayerSendTextMessage(cid, 22, "Voce completou essa quest.")
		setPlayerStorageValue(cid, quest.sto, 1)
	else
		doPlayerSendTextMessage(cid, 22, "Voce Ja Concluiu A Quest.")
	end
	return 1
end
Editado por Bruno Minervino
Link para o comentário
Compartilhar em outros sites

  • 0

Apesar de a resposta da @AnnaFeeh não estar errada, acho que fica mais bonito assim:

[...]

 

Na verdade, a correção que você fez, ainda sim está mal indexada.

1º Procure definir variáveis de configuração fora da função.

2º Use retornos verdadeiros ou falsos, usando 0 e 1 da certo, porém quando a função requer um valor booleano para realizar tal ação, não vai fazer efeito.

 

Olhe:

 

 

local quest = {
	items = {
		{2394, 1},  -- { id, quantidade }
		{2160, 1}
	},
	sto = 98770 -- storage da quest.
}

function onUse(cid, item, frompos, item2, topos)
	local queststatus = getPlayerStorageValue(cid, quest.sto)
	if queststatus ~= 1 then
		for _, item in pairs(quest.items) do
			doPlayerAddItem(cid, item[1], item[2])
		end
		doPlayerSendTextMessage(cid, 22, "Voce completou essa quest.")
		setPlayerStorageValue(cid, quest.sto, 1)
	else
		doPlayerSendTextMessage(cid, 22, "Voce Ja Concluiu A Quest.")
	end
	return true
end

 

Peço desculpas, acabei editando seu post sem querer.

 

 

@EDIT: agora que vi, o autor pediu com compatibilidade para o tfs 1.1, segue:

local quest = {
	items = {
		{2394, 1},  -- { id, quantidade }
		{2160, 1}
	},
	sto = 98770 -- storage da quest.
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local queststatus = player:getStorageValue(quest.sto)
	if queststatus ~= 1 then
		for _, item in pairs(quest.items) do
			player:addItem(item[1], item[2])
		end
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Parabens! Voce completou a quest.")
		player:setStorageValue(quest.sto, 1)
	else
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Desculpe! Voce ja completou esta quest.")
	end
	return true
end
Editado por Bruno Minervino
Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade, a correção que você fez, ainda sim está incorreta.

1º Procure definir variáveis de configuração fora da função.

2º Se você já usou um loop para percorrer a variável items, você não precisa jogar um valor fixo, e sim o valor atual de cada linha, ambos definidas no loop.

3º Use retornos verdadeiros ou falsos, usando 0 e 1 da certo, porém quando a função requer um valor booleano para realizar tal ação, não vai fazer efeito.

 

Olhe:

 

 

local quest = {
	items = {
		{2394, 1},  -- { id, quantidade }
		{2160, 1}
	},
	sto = 98770 -- storage da quest.
}

function onUse(cid, item, frompos, item2, topos)
	local queststatus = getPlayerStorageValue(cid, quest.sto)
	if queststatus ~= 1 then
		for id, qtd in pairs(quest.items) do
			doPlayerAddItem(cid, id, qtd)
		end
		doPlayerSendTextMessage(cid, 22, "Voce completou essa quest.")
		setPlayerStorageValue(cid, quest.sto, 1)
	else
		doPlayerSendTextMessage(cid, 22, "Voce Ja Concluiu A Quest.")
	end
	return true
end

 

Peço desculpas, acabei editando seu post sem querer.

 

 

@EDIT: agora que vi, o autor pediu com compatibilidade para o tfs 1.1, segue:

local quest = {
	items = {
		{2394, 1},  -- { id, quantidade }
		{2160, 1}
	},
	sto = 98770 -- storage da quest.
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local queststatus = player:getStorageValue(quest.sto)
	if queststatus ~= 1 then
		for id, qtd in pairs(quest.items) do
			player:addItem(id, qtd)
		end
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Parabens! Voce completou a quest.")
		player:setStorageValue(quest.sto, 1)
	else
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Desculpe! Voce ja completou esta quest.")
	end
	return true
end

Só não usei um valor de retorno booleano pois não era necessário, mas não tava bom mesmo.

Uma pergunta, TFS 1.1 é orientado a objetos?

Link para o comentário
Compartilhar em outros sites

  • 0

^ sim.

@Bruno

Neste loop, id assumiria o valor dos indexes da tabela e qtd, as tabelas contendo ID e quantidade. Assim, o correto seria:

local quest = {
	items = {
		{2394, 1},  -- { id, quantidade }
		{2160, 1}
	},
	sto = 98770 -- storage da quest.
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local queststatus = player:getStorageValue(quest.sto)
	if queststatus ~= 1 then
		for _, item in pairs(quest.items) do
			player:addItem(item[1], item[2])
		end
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Parabens! Voce completou a quest.")
		player:setStorageValue(quest.sto, 1)
	else
		player:sendTextMessage(MESSAGE_INFO_DESCR, "Desculpe! Voce ja completou esta quest.")
	end
	return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

quando chegar em casa testo aproveitando os scripters presente , da uma olhada aqui http://www.xtibia.com/forum/topic/233733-sistema-de-task-mounts/#entry1650212

 

@OBRIGADO A TODOS FUNCIONOU :D

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

×
×
  • Criar Novo...