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

Lua Error in quest script

ksean

New Member
Joined
Jul 29, 2009
Messages
15
Reaction score
0
Help with quest please

[27/01/2010 21:04:32] [Error - Action Interface]
[27/01/2010 21:04:32] data/actions/scripts/theend/quests/hermesquestsystem.luanUse
[27/01/2010 21:04:32] Description:
[27/01/2010 21:04:32] (luaGetThing) Thing not found

[27/01/2010 21:04:32] [Error - Action Interface]
[27/01/2010 21:04:32] data/actions/scripts/theend/quests/hermesquestsystem.luanUse
[27/01/2010 21:04:32] Description:
[27/01/2010 21:04:32] .../actions/scripts/theend/quests/hermesquestsystem.lua:46: attempt to compare number with table
[27/01/2010 21:04:32] stack traceback:
[27/01/2010 21:04:33] .../actions/scripts/theend/quests/hermesquestsystem.lua:46: in function <.../actions/scripts/theend/quests/hermesquestsystem.lua:9>


this is my script:


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

local questsExperience = {
[30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if( getPlayerGroupId(cid) >= 2 ) 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 = item
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 = item
end

if(reward ~= 0) then
local ret = getItemDescriptions(reward)
if(reward > 0 and isItemRune(reward) == TRUE) then
result = reward.type .. " charges " .. ret.name .. "."
elseif(reward > 0 and isItemStackable(reward) == TRUE) then
result = reward.type .. " " .. ret.plural .. "."
else
result = ret.article .. " " .. ret.name .. "."
end
else
if(size > 20) then
reward = item
elseif(size > 8) then
reward = getThing(doCreateItemEx(1988, 1))
else
reward = getThing(doCreateItemEx(1987, 1))
end

for i = size, 1, -1 do
local tmp = items
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, 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

my server is 8.54 using the forgotten server

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

local questsExperience = {
	[30015] = 10000
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerGroupId(cid) > 1) then
		return TRUE
	end

	local storage = specialQuests[item.actionid]
	if(not storage) 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, reward, size = {}, 0, getContainerSize(item.uid)
		if(size == 0) then
			reward = item
		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 = item
		end

		if(reward ~= 0) then
			local ret = getItemDescriptions(reward)
			if(isItemRune(reward) == TRUE) then
				result = reward.type .. " charges " .. ret.name .. "."
			elseif(isItemStackable(reward) == TRUE) then
				result = reward.type .. " " .. ret.plural .. "."
			else
				result = ret.article .. " " .. ret.name .. "."
			end
		else
			if(size > 20) then
				reward = item
			elseif(size > 8) then
				reward = getThing(doCreateItemEx(1988, 1))
			else
				reward = getThing(doCreateItemEx(1987, 1))
			end

			for i = size, 1, -1 do
				local tmp = items[i]
				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, 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]) 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
 
its not work now i have this error
[28/01/2010 19:03:34] [Error - Action Interface]
[28/01/2010 19:03:34] data/actions/scripts/theend/quests/hermesquestsystem.lua:eek:nUse
[28/01/2010 19:03:34] Description:
[28/01/2010 19:03:34] (luaGetThing) Thing not found

[28/01/2010 19:03:34] [Error - Action Interface]
[28/01/2010 19:03:34] data/actions/scripts/theend/quests/hermesquestsystem.lua:eek:nUse
[28/01/2010 19:03:34] Description:
[28/01/2010 19:03:34] .../actions/scripts/theend/quests/hermesquestsystem.lua:48: attempt to index local 'ret' (a boolean value)
[28/01/2010 19:03:34] stack traceback:
[28/01/2010 19:03:34] .../actions/scripts/theend/quests/hermesquestsystem.lua:48: in function <.../actions/scripts/theend/quests/hermesquestsystem.lua:9>
 
Back
Top