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

Solved RME Chest message

Byte

* * * * *
Joined
Jul 23, 2013
Messages
130
Reaction score
19
Location
???
I've made a chest in my map that gives you 5 crystal coins and a crown helmet as you can see below:

70xitl.jpg



However, when I open the chest in-game it shows this message:

2comx5h.jpg


There's no names for the items it just says: You have found 5 *blank* and *blank*.

Also, I've noticed that this ONLY happens when there's more than one item in the chest (or container). Whenever there's just one item it works normally.
 
Which system.lua do you use? Can you post it?
How does the message look like when you add 1 item? Is the problem just with stackable items or also with for example 2 helmets?
 
Thanks for the reply.

system.lua:
Code:
local specialQuests = {
    [2001] = 30015 --Annihilator
}

local questsExperience = {
    [30015] = 10000
}

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(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.itemid)
        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

When there's just one item, whether its stackable (5cc) or not (moonlight rod) it works fine and tells me:
You have found 5 crystal coins.
or
You have found a moonlight rod.

The problem is with any item (helmet, armor, key, money) doesn't matter as long as its more than one item in the chest the problem occurs.



BTW, when its more than on item (2+) the items come inside a bag.
 
Last edited by a moderator:
Change
Code:
getItemDescriptions(tmp.uid)
To
Code:
getItemDescriptions(tmp.itemid)

Also change
Code:
local ret = ", "
if(i == 2) then
ret = " and "
elseif(i == 1) then
ret = ""
end

To
Code:
local ret = ", "
if(i == 1) then
ret = ""
elseif(i == size) then
ret = " and "
end

And
Code:
" .. getItemWeight(reward.uid) .. "
To
Code:
"..getItemWeightByUID(reward.uid).."
 
Back
Top