EM

[Resolvido] Quest Bugada

Por Emanueldk, 15 de mai. de 2018 em Resolvidos

4
1.6k
EmanueldkE
15 de maio de 2018 às 20:23

alguem me explixa pq eu nao consigo fazer uma quest em meu dbo, eu faço tudo certinho mais quando eu clico no bau, eu abro ele como se fosse uma backpack e eu posso pegar o item de dentro, dae quando outra pessoa vai la, o item nao esta mais la dentro..... em Actiond Id eu boto 2000 ou 2002 nao lembro qual e em Unique Id boto 5999 e nao da certo....

PoRaIP
21 de maio de 2018 às 20:12

Você precisa fazer uma action pra isso e não colocar o item dentro do bau. Uma Action pra quando clicar, adicionar o item no player e não no container.

1 mês depois...
NolisN
13 de junho de 2018 às 12:22

@Emanueldk

 

data/actions/actions.xml adicione

<action actionid="5000" script="quests.lua"/>

 

data/actions/scripts crie quests.lua e adicione

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	local storage = specialQuests[item.uid]
	if not storage then
		storage = item.uid
		if storage > 65535 then
			return false
		end
	end

	if player:getStorageValue(storage) > 0 then
		player:sendTextMessage(MESSAGE_INFO_DESCR, "The " .. ItemType(item.itemid):getName() .. " is empty.")
		return true
	end

	local targetItem = Item(item.uid)
	local items = {}
	local reward = nil

	local size = targetItem:isContainer() and Container(item.uid):getSize() or 0
	if size == 0 then
		if questItems[item.uid] == nil then
			reward = targetItem:clone()
		else
			for _,v in pairs(questItems[item.uid]) do
				local newItem = Item(doCreateItemEx(v.id, v.count or v.subtype or 1))
				if v.aid ~= nil then
					newItem:setActionId(v.aid)
				end
				table.insert(items, newItem)
			end
		end
	else
		local container = Container(item.uid)
		for i = 0, container:getSize() - 1 do
			table.insert(items, container:getItem(i):clone())
		end
	end

	local result = ""
	local addon = addonQuests[item.uid]
	if addon ~= nil then
		player:addOutfitAddon(addon.outfit.male, addon.addon)
		player:addOutfitAddon(addon.outfit.female, addon.addon)
		result = addon.msg
	else
		size = #items
		if size == 1 then
			reward = items[1]:clone()
		end

		local weight = 0
		if reward then
			local ret = ItemType(reward:getId())
			if ret:isRune() then
				result = ret:getArticle() .. " " ..  ret:getName() .. " (" .. reward:getSubType() .. " charges)"
			elseif ret:isStackable() and reward:getCount() > 1 then
				result = reward:getCount() .. " " .. ret:getPluralName()
			else
				result = ret:getArticle() .. " " .. ret:getName()
			end
			weight = weight + ret:getWeight(reward:getCount())
		else
			if size > 20 then
				reward = Container(doCreateItemEx(item.itemid))
			elseif size > 8 then
				reward = Container(doCreateItemEx(1988))
			else
				reward = Container(doCreateItemEx(1987))
			end
			result = reward:getArticle() .. " " .. reward:getName()

			for i = 1, size do
			local tmp = items[i]
				if reward:addItemEx(tmp) ~= RETURNVALUE_NOERROR then
					print("[Warning] QuestSystem:", "Could not add quest reward to container")
				end
			end
			weight = weight + ItemType(reward:getId()):getWeight()
		end

		if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then
			if player:getFreeCapacity() < weight then
				player:sendCancelMessage("You have found " .. result .. " weighing " .. string.format("%.2f", weight) .. " oz. You have no capacity.")
			else
				player:sendCancelMessage("You have found " .. result .. ", but you have no room to take it.")
			end
			return true
		end
	end

	if questsExperience[storage] ~= nil then
		player:addExperience(questsExperience[storage], true)
	end

	player:sendTextMessage(MESSAGE_INFO_DESCR, "You have found " .. result .. ".")
	player:setStorageValue(storage, 1)
	return true
end

 

No mapa, coloque actionid 5000 no seu baú e o item que receberá.

8 meses depois...
RefeR
20 de fevereiro de 2019 às 16:19
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.