• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Chests don't give me what I put in...

Neubbed

New Member
Joined
Jan 15, 2013
Messages
24
Reaction score
0
Hey, my chests won't give me what I put the reward to be, for example... one of my chests has a spoon in it... and when you (use) the chest, it gives a small amethyst.

The action ID is 2000 like the guides I have read said, and the unique ID is random number

Why is this?
It also happens to me other chest, where it gives the player an Anvil :/
 
No, now you use uniqueid, you should use actionid.

XML:
<action actionid="2000" script="quests/system.lua"/>

If 2000 doesn't work, try an other action id, since you said your chests already did something with action id 2000.
 
I get an error now?

Code:
[23/01/2013 14:08:41] Lua Script Error: [Action Interface] 
[23/01/2013 14:08:41] data/actions/scripts/quests/system.lua:onUse
[23/01/2013 14:08:41] data/actions/scripts/quests/system.lua:10: attempt to call global 'getPlayerCustomFlagValue' (a nil value)
[23/01/2013 14:08:41] stack traceback:
[23/01/2013 14:08:41] 	[C]: in function 'getPlayerCustomFlagValue'
[23/01/2013 14:08:41] 	data/actions/scripts/quests/system.lua:10: in function <data/actions/scripts/quests/system.lua:9>
 
LUA:
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.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
 
Ah okay, well now it like, half works :S

First chest which gives a spoon -
Code:
gives me a spoon... but, then this
11:42 You have found  .

Second chest which gives 5cc and 10 hams -
Code:
11:43 You have found a reward weighing 0 oz. It is too heavy or you have not enough space.

Third chest which gives a beer bottle -
Code:
11:43 It is empty.

I do have enough cap on all characters :S
 
Okay, changed the system.lua actionid to 2002 instead.
Changed all the chests actionids to 2002 as well.

Open chest with first player
Code:
12:27 You have found 5  and 10 .

So seems to work, except just showing numbers lol.]\

Also it comes in a bag, is this normal for every chest?

Getting there.. I can taste it :w00t:

Okay, so on one character, I can open all the chests and get whats inside.. albeit with the text issues..

On another, it will say the other chests are empty.

da fk?
 
Last edited:
The system.lua should work fine, the main problem before was the used action id, changing from script wouldn't change that.
 
Back
Top