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

Chests doesnt work :(

Himii

Premium User
Premium User
Joined
Jan 19, 2011
Messages
1,267
Solutions
5
Reaction score
183
Location
Sweden
Can anyone answere why i get a chest when im clicking on this chest:
9zw0id.jpg


Btw i have the correct quest system

Edit: tried to change tfs to: 0.4 3777, 0.3.6 and 0.3.7.
Alsow changed actions folder.
Is there any possibilities this has with the map or any other folder?
 
Last edited:
Code:
local specialQuests = {
    [2001] = 30015 --Annihilator
}

local questsExperience = {
    [30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF, cid)
        return true
    end

    local storage = specialQuests[item.actionid]
    if(not storage) then
        storage = item.uid
        if(storage > 65535) then
            return false
        end
    end

    if(getPlayerStorageValue(cid, storage) > 0) then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        return true
    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.uid)
        if(reward.type > 0 and isItemRune(reward.itemid)) then
            result = reward.type .. " charges " .. ret.name
        elseif(reward.type > 0 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.uid)
                if(tmp.type > 0 and isItemRune(tmp.itemid)) then
                    result = result .. tmp.type .. " charges " .. ret.name
                elseif(tmp.type > 0 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
        result = "You have found a reward weighing " .. getItemWeight(reward.uid) .. " oz. It is too heavy or you have not enough space."
    else
        result = "You have found " .. result .. "."
        setPlayerStorageValue(cid, storage, 1)
        if(questsExperience[storage] ~= nil) then
            doPlayerAddExp(cid, questsExperience[storage])
            doSendAnimatedText(getCreaturePosition(cid), questsExperience[storage], TEXTCOLOR_WHITE)
        end
    end

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
    return true
end

Same as the original one you find when you download 0.4 It would be wierd if it was the reason
 
@Limos This happens to all my chests, it works like it shuld only that i get a chest in every one insted of an item.
 
That code is a bit strange.

It has a lot of stuff that's not necessary to select some random loot to be in the chest.

a) Is it a modified version of a working script?
b) Does it come from some kind of addon?
c) Do you have a working version of it? Even if it's an earlier version that doesn't do exactly what you want?
 
I had this same problem with this quest system script, i was getting chests as a reward, so i changed to this one instead:

Code:
function onUse(cid, item, frompos, item2, topos)
   prize = item.uid

   if prize > 0 and prize < 9000 then
     queststatus = getPlayerStorageValue(cid,prize)

     if queststatus == -1 then
       doPlayerSendTextMessage(cid,22,'You have found something inside' .. '!')
       doPlayerAddItem(cid,prize,1)
       setPlayerStorageValue(cid,prize,1)
     else
       doPlayerSendTextMessage(cid,22,"It is empty.")
     end

     return 1
   else
     return 0
   end
end

You just have to put the quests items id in actions.xml to run this script, and set the unique id of the chest to the unique id of the reward.
The only problem with this is that if you want one chest with more than 1 reward or if you to have the player pick one out of 3 possible rewards, you will need to edit the code a little for those cases.
 
Back
Top