Ir para conteúdo
  • 0

Script de Quest


DuvidasOt

Pergunta

Nesse script de Quest:

 

function onUse(cid, item, frompos, item2, topos)
queststatus = getPlayerStorageValue(cid, item.uid)
if queststatus == -1 or queststatus == 0 then
qitem = getContainerItem(item.uid, 0)
if getPlayerFreeCap(cid) > getItemWeight(qitem.uid) then
doPlayerSendTextMessage(cid, 22, "You have found a "..getItemName(qitem.itemid)..".")
doPlayerAddItem(cid, qitem.itemid)
setPlayerStorageValue(cid, item.uid, 1)
else
doPlayerSendTextMessage(cid, 24, "You don't have enought capacity.")
end
else
doPlayerSendTextMessage(cid, 22, "The chest is empty.")
end
return 1
end

 

 

ta dando esse erro na hora que clica no bau:

 

[17/10/2012 14:26:35] [Error - Action Interface]
[17/10/2012 14:26:35] data/actions/scripts/quests/quest.lua:onUse
[17/10/2012 14:26:36] Description:
[17/10/2012 14:26:36] (luaGetThing) Thing not found
[17/10/2012 14:26:36] [Error - Action Interface]
[17/10/2012 14:26:36] data/actions/scripts/quests/quest.lua:onUse
[17/10/2012 14:26:36] Description:
[17/10/2012 14:26:36] data/lib/050-function.lua:239: attempt to index a boolean value
[17/10/2012 14:26:36] stack traceback:
[17/10/2012 14:26:36] data/lib/050-function.lua:239: in function 'getItemName'
[17/10/2012 14:26:36] data/actions/scripts/quests/quest.lua:6: in function <data/actions/scripts/quests/quest.lua:1

 

 

topico do script:

http://www.xtibia.com/forum/topic/193170-easy-quest-system/

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

tenta esse script para ver

 

function onUse(cid, item)



if getPlayerStorageValue(cid, STORAGE_DA_QUEST) > 0 then

return doPlayerSendCancel(cid, "Chest is empty.")

end

if getPlayerFreeCap(cid) < getItemWeight(ITEM_A_GANHAR) then

return doPlayerSendCancel(cid, "You don't have capacity.")

end





return doPlayerAddItem(cid, ITEM_A_GANHAR, 1) and doPlayerSendTextMessage(cid, 27, "You win a " .. getItemNameById(ITEM_A_GANHAR) .. ", congrutulations.")

end

 

Link para o comentário
Compartilhar em outros sites

  • 0
function onUse(cid, item, frompos, item2, topos)
	queststatus = getPlayerStorageValue(cid, item.uid)
	if queststatus == -1 or queststatus == 0 then
		qitem = getContainerItem(item.uid, 0)
		if getPlayerFreeCap(cid) > getItemWeightById(qitem.itemid, 1) then
			doPlayerSendTextMessage(cid, 22, "You have found a "..getItemNameById(qitem.itemid)..".")
			doPlayerAddItem(cid, qitem.itemid)
			setPlayerStorageValue(cid, item.uid, 1)
		else
			doPlayerSendTextMessage(cid, 24, "You don't have enough capacity.")
		end
	else
		doPlayerSendTextMessage(cid, 22, "The chest is empty.")
	end
	return true
end

Tenta esse, mas na minha assinatura tem o portfólio. Procura o tópico de actions simples e úteis que fiz uma forma mais fácil de usar baús de quests.

Link para o comentário
Compartilhar em outros sites

  • 0

eae brun123, o bau nao estava vazio =(

 

eu usei o script do omega deu certo ^^,

 

mais so outra duvida, eu botei 2 itens no bau no map editor, e so recebeu o primeiro, tem como receber os dois?

 

vlw

 

reputado

 

dsdds

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

  • 0

Deixa um item só dentro do baú e coloca o id do outro

function onUse(cid, item, frompos, item2, topos)
	local recompensa = 2143 -- Coloque aqui o id do outro item que você quer que ganhe
	local queststatus = getPlayerStorageValue(cid, item.uid)
	if queststatus == -1 or queststatus == 0 then
		qitem = getContainerItem(item.uid, 0)		
		if getPlayerFreeCap(cid) > (getItemWeightById(qitem.itemid, 1) + getItemWeightById(recompensa,1)) then
			doPlayerSendTextMessage(cid, 22, "You have found a "..getItemNameById(qitem.itemid).." and a "..getItemNameById(recompensa)..".")
			doPlayerAddItem(cid, qitem.itemid)
			doPlayerAddItem(cid, recompensa, 1)
			setPlayerStorageValue(cid, item.uid, 1)
		else
			doPlayerSendTextMessage(cid, 24, "You don't have enough capacity.")
		end
	else
		doPlayerSendTextMessage(cid, 22, "The chest is empty.")
	end
	return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

E como faç pra botar a quantidade? exemplo 3 crystal coins, eu botei no map editor e so recebi 1..

 

esse seu script faz isso?

function onUse(cid, item, fromPos, item2, toPos)
local _ = {
[1] = {aid = 1234, item = 2121},
[2] = {aid = 1354, item = 2122},
[3] = {aid = 1231, item = 3121},
}

-- Reservando os storages a partir de 202049 até o 202049 + número de baús nessa action
for i = 1, #_ do
_[i].storage = 202049 + i
end

for i, valor in ipairs(_) do
if item.actionid == valor.aid then
if getPlayerFreeCap(cid) >= getItemWeightById(valor.item, 1) then
if getPlayerStorageValue(cid, valor.storage) == -1 then
if doPlayerAddItem(cid, valor.item, 1, false) then
doPlayerSendTextMessage(cid, 22, 'You have found a '..getItemNameById(valor.item)..'.')
setPlayerStorageValue(cid, valor.storage, 1)
else
doPlayerSendTextMessage(cid, 22, 'You have found a '..getItemNameById(valor.item)..', but you need a free slot.')
end
else
doPlayerSendTextMessage(cid, 22, 'It is empty.')
end
else
doPlayerSendTextMessage(cid, 22, 'You have found a '..getItemNameById(valor.item)..'. It weighs '..getItemWeightById(valor.item, 1)..'.00 and it is too heavy.')
end
break
end
end
return true
end

 

Link para o comentário
Compartilhar em outros sites

  • 0
doPlayerAddItem(uid, itemid, count)

 

É só adicionar o número que você quiser no terceiro parâmetro (count) da função que adiciona o item que você escolheu.

 

Por exemplo:

Troque

doPlayerAddItem(cid, recompensa, 1)

Por

doPlayerAddItem(cid, recompensa, 100)
Link para o comentário
Compartilhar em outros sites

  • 0

Não. Os itens que você insere pelo map editor ficam dentro do baú e dão respawn sempre que o servidor é reiniciado, então qualquer um pode pegar e depois vai sumir. Com o script que você tava usando, você consegue pegar o item que você quer e adicionar, mas é mais simples fazer direto pelo script.

Link para o comentário
Compartilhar em outros sites

  • 0

Omega você está equivocado...

 

@DuvidasOT

 

É só você colocar no bau, o actionID 2000, o uniqueID seria a storage, então coloque um numero que você quiser, de preferencia um de 5 digitos, e na parte preta coloque os itens que quer que ganhe.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...