@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á.