multrayzor
New Member
- Joined
- Mar 17, 2014
- Messages
- 58
- Reaction score
- 2
So, i was using chests unique id the same as quest rewards item id. But i realized this was too outdated and decided to change to the system.lua script that seems to be the best. I followed everything found on this post here: http://otland.net/threads/tfs-0-2-1-0-system-lua-questsystem.185583/
But im still getting an error:
[Error - Action Interface]
data/actions/scripts/quests/system.luanUse
Description:
data/actions/scripts/quests/system.lua:80: attempt to index local 'ret' (a boolean value)
stack traceback:
data/actions/scripts/quests/system.lua:80: in function <data/actions/scripts/quests/system.lua:9>
The post mentioned changing something in global.lua, but i didnt find it in my data folder. I currently have chests with actionid = 2000, random uniqueid and items insed, when i open them i can get the items inside, like it was a normal container, and i get this error.
I have this on actions.xml:
<action actionid="2000" event="script" value="quests/system.lua"/>
And this is my system.lua:
Any help is appreciated
Btw, im using TFS 0.3.6 (Tibia 8.6).
But im still getting an error:
[Error - Action Interface]
data/actions/scripts/quests/system.luanUse
Description:
data/actions/scripts/quests/system.lua:80: attempt to index local 'ret' (a boolean value)
stack traceback:
data/actions/scripts/quests/system.lua:80: in function <data/actions/scripts/quests/system.lua:9>
The post mentioned changing something in global.lua, but i didnt find it in my data folder. I currently have chests with actionid = 2000, random uniqueid and items insed, when i open them i can get the items inside, like it was a normal container, and i get this error.
I have this on actions.xml:
<action actionid="2000" event="script" value="quests/system.lua"/>
And this is my 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.itemid)
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 == 1) then
ret = ""
elseif(i == size) then
ret = " and "
end
result = result .. ret
ret = getItemDescriptions(tmp.itemid)
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 getPlayerFreeCap(cid) < getItemWeightByUID(reward.uid) then
result = "You have found a reward weighing "..getItemWeightByUID(reward.uid).." oz. It is to heavy."
elseif(doPlayerAddItemEx(cid, reward.uid, false) ~= RETURNVALUE_NOERROR) then
result = "You have found a reward, but you don't have enough space."
else
result = "You have found " .. result .. "."
setPlayerStorageValue(cid, storage, 1)
if(questsExperience[storage] ~= nil) then
doPlayerAddExp(cid, questsExperience[storage])
end
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
return true
end
Any help is appreciated
Btw, im using TFS 0.3.6 (Tibia 8.6).
Last edited by a moderator: