• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Solved tfs 1.0 (system.lua) error

oualid6496

Well-Known Member
Joined
Aug 24, 2014
Messages
408
Solutions
4
Reaction score
78
Location
Dordrecht, The Netherlands
Does anyone know where I went wrong? (It happens only when I add exp to quests) when I just have 1 line I won't get any errors but when I add 2 or more im getting these errors:
[Warning - Event::checkScript] Can not load script: scripts/quests/system.lua
data/actions/scripts/quests/system.lua:10: '{' expected (to close '{'at line 8) near '['
[Warning - Event::checkScript] Can not load script: scripts/quests/system.lua
data/actions/scripts/quests/system.lua:10: '{' expected (to close '{'at line 8) near '['
[Warning - Event::checkScript] Can not load script: scripts/quests/system.lua
data/actions/scripts/quests/system.lua:10: '{' expected (to close '{'at line 8) near '['
[Warning - Event::checkScript] Can not load script: scripts/quests/system.lua
data/actions/scripts/quests/system.lua:10: '{' expected (to close '{'at line 8) near '['
[Warning - Event::checkScript] Can not load script: scripts/quests/system.lua
data/actions/scripts/quests/system.lua:10: '{' expected (to close '{'at line 8) near '['
[Warning - Event::checkScript] Can not load script: scripts/quests/system.lua
data/actions/scripts/quests/system.lua:10: '{' expected (to close '{'at line 8) near '['

PHP:
local specialQuests = {
    [20001] = 20001, -- Annihilator
    [20002] = 20002, -- Demon Helmet Quest (steel boots)
    [20003] = 20003, -- Demon Helmet Quest (demon helmet)
    [20004] = 20004, -- Demon Helmet Quest (demon shield)   
}

local questsExperience = {
    [20001] = 100000 -- Annihilator
    [20002] = 25000 -- Demon Helmet Quest (steel boots)
    [20003] = 25000 -- Demon Helmet Quest (demon helmet)
    [20004] = 25000 -- Demon Helmet Quest (demon shield)
}

local tutorialIds = {
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local player = Player(cid)
    if player:getStorageValue(storage) > 0 then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.')
        return true
    end

    local useItem = Item(item.uid)
    local items = {}
    local reward = nil

    local size = useItem:isContainer() and Container(item.uid):getSize() or 0
    if size == 0 then
        reward = useItem:clone()
    else
        local container = Container(item.uid)
        for i = 0, container:getSize() - 1 do
            table.insert(items, container:getItem(i):clone())
        end
    end

    size = #items
    if size == 1 then
        reward = items[1]:clone()
    end

    local result = ''
    local weight = 0
    if reward then
        local ret = ItemType(reward:getId())
        if ret:isRune() then
            result = ret:getArticle() .. ' ' ..  ret:getName() .. ' (' .. reward:getSubType() .. ' charges)'
        elseif ret:isStackable() and reward:getCount() > 1 then
            result = reward:getCount() .. ' ' .. ret:getPluralName()
        else
            result = ret:getArticle() .. ' ' .. ret:getName()
        end
        weight = weight + ret:getWeight(reward:getCount())
    else
        if size > 20 then
            reward = Game.createItem(item.itemid, 1)
        elseif size > 8 then
            reward = Game.createItem(1988, 1)
        else
            reward = Game.createItem(1987, 1)
        end

        for i = 1, size do
            local tmp = items[i]
            if reward:addItemEx(tmp) ~= RETURNVALUE_NOERROR then
                print('[Warning] QuestSystem:', 'Could not add quest reward to container')
            else
                local ret = ', '
                if i == size then
                    ret = ' and '
                elseif i == 1 then
                    ret = ''
                end
                result = result .. ret

                local ret = ItemType(tmp:getId())
                if ret:isRune() then
                    result = result .. ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. tmp:getSubType() .. ' charges)'
                elseif ret:isStackable() and tmp:getCount() > 1 then
                    result = result .. tmp:getCount() .. ' ' .. ret:getPluralName()
                else
                    result = result .. ret:getArticle() .. ' ' .. ret:getName()
                end
                weight = weight + ret:getWeight(tmp:getCount())
            end
        end
        weight = weight + ItemType(reward:getId()):getWeight()
    end

    if player:addItemEx(reward) ~= RETURNVALUE_NOERROR then
        if player:getFreeCapacity() < weight then
            player:sendCancelMessage('You have found ' .. result .. ' weighing ' .. string.format('%.2f', weight) .. ' oz. You have no capacity.')
        else
            player:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.')
        end
        return true
    end

    if questsExperience[storage] then
        player:addExperience(questsExperience[storage], true)
    end

    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.')
    player:setStorageValue(storage, 1)
    return true
end
 
Code:
local specialQuests = {
 [20001] = 20001, -- Annihilator[20002] = 20002, -- Demon Helmet Quest (steel boots)
 [20003] = 20003, -- Demon Helmet Quest (demon helmet)
 [20004] = 20004, -- Demon Helmet Quest (demon shield) 
}local questsExperience = {
 [20001] = 100000, -- Annihilator[20002] = 25000 -- Demon Helmet Quest (steel boots)
 [20003] = 25000, -- Demon Helmet Quest (demon helmet)
 [20004] = 25000, -- Demon Helmet Quest (demon shield)
}local tutorialIds = {
}

function onUse(cid, item, fromPosition, itemEx, toPosition)local player = Player(cid)
 if player:getStorageValue(storage) > 0 then
 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'The ' .. ItemType(item.itemid):getName() .. ' is empty.')
 return true
 end

 local useItem = Item(item.uid)local items = {}local reward = nil

 local size = useItem:isContainer() and Container(item.uid):getSize() or 0if size == 0 then
 reward = useItem:clone()
 elselocal container = Container(item.uid)
 for i = 0, container:getSize() - 1 dotable.insert(items, container:getItem(i):clone())end
 end

 size = #itemsif size == 1 then
 reward = items[1]:clone()end

 local result = ''local weight = 0if reward then
 local ret = ItemType(reward:getId())
 if ret:isRune() then
 result = ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. reward:getSubType() .. ' charges)'elseif ret:isStackable() and reward:getCount() > 1 then
 result = reward:getCount() .. ' ' .. ret:getPluralName()
 elseresult = ret:getArticle() .. ' ' .. ret:getName()end
 weight = weight + ret:getWeight(reward:getCount())
 else
 if size > 20 then
 reward = Game.createItem(item.itemid, 1)
 elseif size > 8 then
 reward = Game.createItem(1988, 1)
 elsereward = Game.createItem(1987, 1)end
for i = 1, size dolocal tmp = items[i]
 if reward:addItemEx(tmp) ~= RETURNVALUE_NOERROR thenprint('[Warning] QuestSystem:', 'Could not add quest reward to container')
 elselocal ret = ', 'if i == size then
 ret = ' and 'elseif i == 1 then
 ret = ''end
 result = result .. ret

 local ret = ItemType(tmp:getId())
 if ret:isRune() then
 result = result .. ret:getArticle() .. ' ' .. ret:getName() .. ' (' .. tmp:getSubType() .. ' charges)'elseif ret:isStackable() and tmp:getCount() > 1 then
 result = result .. tmp:getCount() .. ' ' .. ret:getPluralName()
 elseresult = result .. ret:getArticle() .. ' ' .. ret:getName()end
 weight = weight + ret:getWeight(tmp:getCount())end
 end
 weight = weight + ItemType(reward:getId()):getWeight()end
if player:addItemEx(reward) ~= RETURNVALUE_NOERROR thenif player:getFreeCapacity() < weight then
 player:sendCancelMessage('You have found ' .. result .. ' weighing ' .. string.format('%.2f', weight) .. ' oz. You have no capacity.')
 elseplayer:sendCancelMessage('You have found ' .. result .. ', but you have no room to take it.')endreturn true
 end
if questsExperience[storage] then
 player:addExperience(questsExperience[storage], true)end

 player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have found ' .. result .. '.')player:setStorageValue(storage, 1)
 return true
end

In the array there was no commas.
 
hmm strangly enhough this works: (but [20002]~ just as comment)
PHP:
local specialQuests = {
 [20001] = 20001, -- Annihilator[20002] = 20002, -- Demon Helmet Quest (steel boots)
 [20003] = 20003, -- Demon Helmet Quest (demon helmet)
 [20004] = 20004, -- Demon Helmet Quest (demon shield) 
}

local questsExperience = {
 [20001] = 100000, -- Annihilator[20002] = 25000 -- Demon Helmet Quest (steel boots)
 [20003] = 25000, -- Demon Helmet Quest (demon helmet)
 [20004] = 25000, -- Demon Helmet Quest (demon shield)
}

local tutorialIds = {
}

and when I do this im getting the errors again :s
PHP:
local specialQuests = {
 [20001] = 20001, -- Annihilator
 [20002] = 20002, -- Demon Helmet Quest (steel boots)
 [20003] = 20003, -- Demon Helmet Quest (demon helmet)
 [20004] = 20004, -- Demon Helmet Quest (demon shield) 
}

local questsExperience = {
 [20001] = 100000, -- Annihilator
 [20002] = 25000 -- Demon Helmet Quest (steel boots)
 [20003] = 25000, -- Demon Helmet Quest (demon helmet)
 [20004] = 25000, -- Demon Helmet Quest (demon shield)
}

local tutorialIds = {
}
 
Back
Top