• 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!

Reward chest, Take 1 of 3.

Mestor

Active Member
Joined
Feb 1, 2009
Messages
515
Reaction score
34
Location
Sweden
Hello, have been trying to making reward chests in WoE. So what im trying to make is simply three chests with three different rewards in, but you can only take one. When you took one you wont be able to take any others... pritty obvious... ^^

Anyways I followed this post: http://otland.net/threads/how-to-quests.148708/
But it just dont want to work.
Is it maybe because it's a old post and I need to do something different now with TFS 1.0 ?

83Ijn.jpg
The chest is ActionID 2035.
83IhI.jpg
<- But it's still a normal chest with a robe in it.

What I added in actions.xml:
Code:
    <action actionid="2035" event="script" value="quests/system.lua"/>

what I added in system.lua:
Code:
    [2035] =  12000 --WoE EQ Rewards

How whole system.lua looks:
Code:
local specialQuests = {
        [2215] = 2215, --New quest
    [2035] =  12000 --WoE EQ Rewards

}

local questsExperience = {


        [100000] = 2215
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local storage = specialQuests[item.actionid]
    if(not storage) then
        storage = item.uid
        if(storage > 65535) then
            return false
        end
    end

    if(item.uid == 1296) then --behemoth quest
        if (getPlayerStorageValue(cid, 9244) < 1) then
            doPlayerAddExp(cid, 80000, true, true)
            setPlayerStorageValue(cid,9244, 1)
        end
    end
    if(getPlayerStorageValue(cid, storage) > 0) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The " .. getItemName(item.itemid) .. " is empty.")
        return true
    end

    if(item.actionid == 2215 and getPlayerStorageValue(cid, 2215) < 1) then --anni
        doPlayerAddExp(cid, 100000, true, true)
    end
    if(item.uid == 9170 and getPlayerStorageValue(cid, 9170) < 1) then --banshee
        doPlayerAddExp(cid, 20000, true, true)
    end
    if(item.uid == 9050 or item.uniqueid == 9051 or item.uniqueid == 9052 or item.uniqueid == 9053) then --dream challenge q
        if (getPlayerStorageValue(cid, 9050) < 1 or getPlayerStorageValue(cid, 9051) < 1 or getPlayerStorageValue(cid, 9052) < 1 or getPlayerStorageValue(cid, 9053) < 1) then
            doPlayerAddExp(cid, 20000, true, true)
        end
    end
    local items = {}
    local reward = 0
    local size = isContainer(item.uid) and getContainerSize(item.uid) or 0
    if(size == 0) then
        reward = doCopyItem(item, false)
    else
        for i = 0, size do
            local tmp = getContainerItem(item.uid, i)
            if(tmp.itemid > 0) then
                table.insert(items, tmp)
            end
        end
    end
    size = table.maxn(items)
    if(size == 1) then
        reward = doCopyItem(items[1], true)
    end
    local result = ""
    if(reward ~= 0) then
        local ret = getItemDescriptions(reward.itemid)
        if(reward.type > 1 and isItemRune(reward.itemid)) then
            result = reward.type .. " charges " .. ret.name
        elseif(reward.type > 1 and isItemStackable(reward.itemid)) then
            result = reward.type .. " " .. ret.plural
        else
            result = ret.article .. " " .. ret.name
        end
    else
        if(size > 20) then
            reward = doCopyItem(item, false)
        elseif(size > 8) then
            reward = getThing(doCreateItemEx(1988, 1))
        else
            reward = getThing(doCreateItemEx(1987, 1))
        end
        for i = 1, size do
            local tmp = doCopyItem(items[i], true)
            if(doAddContainerItemEx(reward.uid, tmp.uid) ~= RETURNVALUE_NOERROR) then
                print("[Warning] QuestSystem:", "Could not add quest reward")
            else
                local ret = ", "
                if(i == 2) then
                    ret = " and "
                elseif(i == 1) then
                    ret = ""
                end
                result = result .. ret
                ret = getItemDescriptions(tmp.itemid)
                if(tmp.type > 1 and isItemRune(tmp.itemid)) then
                    result = result .. tmp.type .. " charges " .. ret.name
                elseif(tmp.type > 1 and isItemStackable(tmp.itemid)) then
                    result = result .. tmp.type .. " " .. ret.plural
                else
                    result = result .. ret.article .. " " .. ret.name
                end
            end
        end
    end
    if(doPlayerAddItemEx(cid, reward.uid, false) ~= RETURNVALUE_NOERROR) then
        if getPlayerFreeCap(cid) < getItemWeightByUID(reward.uid) then
            result = "You have found " .. result .. " weighing " .. string.format("%.2f", getItemWeightByUID(reward.uid)) .. " oz. You have no capacity."
        else
            result = "You have found " .. result .. ", but you have no room to take it."
        end
    else
        result = "You have found " .. result .. "."
        setPlayerStorageValue(cid, storage, 1)
    end
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
    return true
end
 
Try changing your actions.xml line

From this:
Code:
<action actionid="2035" event="script" value="quests/system.lua"/>

To this:
Code:
<action actionid="2035" script="quests/system.lua"/>
 
Back
Top