Se não estou enganado, basta colocar no baú o action id 2000 e unique id o id do item.
info
Grupo: Conde
Registrado: 25/02/14
Posts: 589
Reputação: +268
Gênero: Masculino

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
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

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 Maio 7 por Bruno Minervino
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

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 Maio 7 por Bruno Minervino
info
Grupo: Visconde
Registrado: 26/01/13
Posts: 266
Reputação: +174

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?
^ 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
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

^ 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!
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 Maio 7 por Bruno Minervino
info
Grupo: Conde
Registrado: 29/07/13
Posts: 780
Reputação: +60
Gênero: Masculino
Char no Tibia: aguarde...

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 ![]()
Editado Maio 8 por JonatasLucasf






info
Grupo: Conde
Registrado: 29/07/13
Posts: 780
Reputação: +60
Gênero: Masculino
Char no Tibia: aguarde...
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.