• 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 bugged. :o

googlexd

New Member
Joined
Mar 24, 2009
Messages
42
Reaction score
0
When its rotated to south, west, north its bugged.
It's like i just open the chest.
But i have made everything right in Mapeditor Set the UniqueID to the Item ID right?


Bugged:12:07 You see a chest (Vol:15).
ItemID: [1740], UniqueID: [1988].
Position: [X: 1000] [Y: 94] [Z: 7].


That one that work:
12:13 You see a chest (Vol:15).
ItemID: [1748], UniqueID: [2530].
Position: [X: 999] [Y: 95] [Z: 7].


I will be very glad if someone helps ;)
 
This is quest.lua
Code:
-- simple quests based on uniqueId
-- to make quest create chest on map and set its uniqueId to id of quest item

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

	if prize > 1000 and prize < 5000 then
		queststatus = getPlayerStorageValue(cid,prize)

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

		return 1
	else
		return 0
	end
end
Btw i don't find a file named chest.lua
 
are you a joke?

in quest/system.lua add this ((((0.3.5pl1)

LUA:
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

add youre quest id and name in there
 
It's just one problem its like 50 quests i have to add there then ;o
My one looks like this :

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

local questsExperience = {
	[30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerCustomFlagValue(cid, PlayerCustomFlag_GamemasterPrivileges) == TRUE) then
		return TRUE
	end

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

	local result = "It is empty."
	if(getPlayerStorageValue(cid, storage) == -1) then
		local items = {}
		local reward = 0

		local size = getContainerSize(item.uid)
		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(item, TRUE)
		end

		if(reward ~= 0) then
			local ret = getItemDescriptions(reward.uid)
			if(reward.type > 0 and isItemRune(reward.itemid) == TRUE) then
				result = reward.type .. " charges " .. ret.name .. "."
			elseif(reward.type > 0 and isItemStackable(reward.itemid) == TRUE) 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 = size, 1, -1 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
					result = ", "
					if(i == 2) then
						result = " and "
					elseif(i == 1) then
						result = "."
					end

					local ret = getItemDescriptions(tmp.uid)
					if(tmp.type > 0 and isItemRune(tmp.itemid) == TRUE) then
						result = tmp.type .. " charges " .. ret.name .. result
					elseif(tmp.type > 0 and isItemStackable(tmp.itemid) == TRUE) then
						result = tmp.type .. " " .. ret.plural .. result
					else
						result = ret.article .. " " .. ret.name .. result
					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_EXP)
			end
		end
	end

	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
	return TRUE
end
 
Last edited:
Back
Top