• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

How i make a quest? PLZ HELP

Backer

New Member
Joined
May 18, 2010
Messages
83
Reaction score
3
Location
okey
well i put in remeres action id 2000
and unique id ... 10015

And nothing come to my bp :S
 
Actions.xml
Code:
    <!-- Quests -->
    <action actionid="2000" script="system.lua" />

system.lua
Code:
local specialQuests = {
--        [2210] = 1,
--        [2217] = 1
}
local questsExperience = {
--        [2210] = 1,
--        [2217] = 1
}
local questLog = {
--        [2210] = 1,
--        [2217] = 1
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local storage = specialQuests[item.actionid]
    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 items, reward = {}
    local size = item:isContainer() and item:getSize() or 0
    if size == 0 then
        reward = item:clone()
    else
        local container = Container(item.uid)
        for i = 0, container:getSize() - 1 do
            items[#items + 1] = container:getItem(i):clone()
        end
    end
    size = #items
    if size == 1 then
        reward = items[1]:clone()
    end
    local result = ''
    if reward then
        local ret = ItemType(reward.itemid)
        if ret:isRune() then
            result = ret:getArticle() .. ' ' ..  ret:getName() .. ' (' .. reward.type .. ' charges)'
        elseif ret:isStackable() and reward:getCount() > 1 then
            result = reward:getCount() .. ' ' .. ret:getPluralName()
        elseif ret:getArticle() ~= '' then
            result = ret:getArticle() .. ' ' .. ret:getName()
        else
            result = ret:getName()
        end
    else
        if size > 20 then
            reward = Game.createItem(item.itemid, 1)
        elseif size > 8 then
            reward = Game.createItem(1988, 1)
        else
            reward = Game.createItem(1987, 1)
        end
        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
        local ret = ItemType(reward.itemid)
        result = ret:getArticle() .. ' ' .. ret:getName()
    end
    if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then
        local weight = reward:getWeight()
        if player:getFreeCapacity() < weight then
            player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('You have found %s weighing %.2f oz. You have no capacity.', result, (weight / 100)))
            player:sendCancelMessage('Sorry, not possible.')
        else
            player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have found ' .. result .. ', but you have no room to take it.')
            player:sendCancelMessage('Sorry, not possible.')
        end
        return true
    end
    if questsExperience[storage] then
        player:addExperience(questsExperience[storage], true)
    end
    if questLog[storage] then
        player:setStorageValue(questLog[storage], 1)
    end
    player:sendTextMessage(MESSAGE_INFO_DESCR, 'You have found ' .. result .. '.')
    player:setStorageValue(storage, 1)
   
    return true
end
 
Back
Top