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

Quest chest in rme map editor!! Please help

Synergy

New Member
Joined
Nov 24, 2011
Messages
334
Reaction score
0
I put the action id to 2000
I put a unique ID = 12340

I put the item in it


But It doesnt work.. I try even with normal acc and GM acc

It opens the chest and the item is in it, i dont get it
 
data/actions/scripts/quests/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.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

data/actions/actions.xml

Code:
	<action actionid="2000" event="script" value="quests/system.lua"/>
	<action actionid="2005" event="script" value="quests/system.lua"/>
	<action actionid="2001" event="script" value="quests/system.lua"/>
 
He did not ask for Annihilator...<_<


So Jayswag, tell me your RME version, and Client version.

BTW There are a example, how you can do it via lua.


LUA:
  local config = {
        storage = 30005,
        item = 2160,
        count = 10,
        itemname = "You have found a 1 crystal coin!",
        itemcallback = "You can not take the prize twice.",

}

function onUse(cid, item, fromPosition, itemEx, toPosition)
        if getPlayerStorageValue(cid, config.storage) == -1 then
                setPlayerStorageValue(cid, config.storage, 1)
		doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, config.itemname)
		doPlayerAddItem(cid,config.item, config.count)
				
        else
                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, config.itemcallback)
        end
        return true
end

Should be work, i wrote is ASAP.

And add it only to actions.xml

Code:
<action uniqueid="4000" event="script" value="quest.lua"/>

On the map editor, paste 4000 unique id only.

Anyway, check you actions.xml there can be script which use a actionid 2000.
 
Ok.. I tried your script and it worked but I didnt get the item I wanted
This is what i got hahaha:
You have found a thorn bush.
 
Potar I did your script
The chest worked but it said "you found a thorn bush" lol

And I put leopard armor as item


//

EDIT* LONEY THANKS! IT WORKED and thanks potar for your script!!



BTW!!

Can I make the quest to give you a bag with 3 items in?
 
Meaby you wrote a different ID on this script? ^_^



DO NOT PUT ANY ITEMS ON THE CHEST!

For example:

Action it will be 0 and unique will be 4000.

And chest must be empty.
 
Last edited:
LUA:
local config = {
        storage = 30005,
        item = 2160,
        count = 10,
        itemname = "You have found a 1 crystal coin!",
        itemcallback = "You can not take the prize twice.",
        bag = 1991,
        item1 = 2157,
        item2 = 2158,
        item3  = 2160,
 
}
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if getPlayerStorageValue(cid, config.storage) == -1 then
                setPlayerStorageValue(cid, config.storage, 1)
		doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, config.itemname)
		doPlayerAddItem(cid,config.item, config.count)
 		bag = doPlayerAddItem(cid, config.bag, 1)
		doAddContainerItem(bag, config.item1, 1)
		doAddContainerItem(bag, config.item2, 1)
		doAddContainerItem(bag, config.item3, 1)
        else
                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, config.itemcallback)
        end
        return true
end

I can write in tables if you want, but this is more cleary for beginners i think.
 
Back
Top