• 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 reward/system.lua action

devharm

New Member
Joined
Jun 29, 2010
Messages
5
Reaction score
0
Hey guys! I've been having this problem with my quest actions, I am using rme map editor and have set the actionid to 2000 and adding a unique id to something around 60000. The system.lua loads up fine but when i use a 1 access character it just opens the chest and the quest item is visible and able to be taken out without copying at all. Making the quest only available to one individual. I'll post my systems.lua, maybe i wrote the script up all wrong haha! :blink:

Kind regards,
Devin
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if	item.actionid == 2000 then
		queststatus = getPlayerStorageValue(cid, uid)== -1 then
			setPlayerStorageValue(cid, uid, 1)
			doPlayerAddItem(cid, item.uid, 1)
			doPlayerSendTextMessage(cid, 22, 'You have found ---.')

	elseif	getPlayerStorageValue(cid, uid) == 1 then
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "YOU ALREADY GOT THIS SH*T! DUHH!!")
	return true
	end	
end
 
Last edited:
Yea but i would have to create a script for every quest then right? Im trying to make a universal action script with different unique ids to add to the characters so they can only do teh quest once.
 
Yea but i would have to create a script for every quest then right? Im trying to make a universal action script with different unique ids to add to the characters so they can only do teh quest once.

Nope, you just edit the script and add action id's to the chest + the script so that they match.
 
if you use the 0.3.6 pl1 then just download the server and get the system.lua looks liek ur missing some things
or here ya go with this it schuld work fine

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
 
Well i tried that and it still didnt work, Im not quite sure whats happening. This is why i tried to make a custom script :p
Any idea of what neeeds to be added?
 
Back
Top