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

Player buy with backpack

nanduzenho

Member
Joined
Mar 21, 2021
Messages
187
Solutions
1
Reaction score
15
GitHub
nanduzenho
Good afternoon, I'm not able to buy potion or runes with a backpack on npc. Would anyone know how to solve it?
I use TFS 1.3 Nekiro

Capturar.PNG
 
It should look like this:

Lua:
shopModule:addBuyableItemContainer({'bp manafluid', 'bp of mf', 'backpack of mana fluid', 'backpack manafluid', 'bp of manafluid'}, 2001, 2006, 2000, 7, 'backpack of mana fluids')
 
paste lib/npc.lua here


Lua:
-- Including the Advanced NPC System
dofile('data/npc/lib/npcsystem/npcsystem.lua')
dofile('data/npc/lib/npcsystem/customModules.lua')

isPlayerPremiumCallback = Player.isPremium

function msgcontains(message, keyword)
    local message, keyword = message:lower(), keyword:lower()
    if message == keyword then
        return true
    end

    return message:find(keyword) and not message:find('(%w+)' .. keyword)
end

function doNpcSellItem(cid, itemId, amount, subType, ignoreCap, inBackpacks, backpack)
    local amount = amount or 1
    local subType = subType or 0
    local item = 0
    local player = Player(cid)

    if ItemType(itemId):isStackable() then
        local stuff
        if inBackpacks then
            stuff = Game.createItem(backpack, 1)
            item = stuff:addItem(itemId, math.min(100, amount))
        else
            stuff = Game.createItem(itemId, math.min(100, amount))
        end

        return player:addItemEx(stuff, ignoreCap) ~= RETURNVALUE_NOERROR and 0 or amount, 0
    end

    local a = 0
    if inBackpacks then
        local container, b = Game.createItem(backpack, 1), 1
        for i = 1, amount do
            local item = container:addItem(itemId, subType)
            if table.contains({(ItemType(backpack):getCapacity() * b), amount}, i) then
                if player:addItemEx(container, ignoreCap) ~= RETURNVALUE_NOERROR then
                    b = b - 1
                    break
                end

                a = i
                if amount > i then
                    container = Game.createItem(backpack, 1)
                    b = b + 1
                end
            end
        end

        return a, b
    end

    for i = 1, amount do -- normal method for non-stackable items
        local item = Game.createItem(itemId, subType)
        if player:addItemEx(item, ignoreCap) ~= RETURNVALUE_NOERROR then
            break
        end
        a = i
    end
    return a, 0
end

local func = function(cid, text, type, e, pcid)
    local npc = Npc(cid)
    if not npc then
        return
    end

    local player = Player(pcid)
    if player:isPlayer() then
        local creature = Creature(cid)
        creature:say(text, type, false, pcid, creature:getPosition())
        e.done = true
    end
end

function doCreatureSayWithDelay(cid, text, type, delay, e, pcid)
    if Player(pcid):isPlayer() then
        e.done = false
        e.event = addEvent(func, delay < 1 and 1000 or delay, cid, text, type, e, pcid)
    end
end

function doPlayerSellItem(cid, itemid, count, cost)
    local player = Player(cid)
    if player:removeItem(itemid, count) then
        if not player:addMoney(cost) then
            error('Could not add money to ' .. player:getName() .. '(' .. cost .. 'gp)')
        end
        return true
    end
    return false
end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)
    local player = Player(cid)
    if not player:removeMoney(cost) then
        return false
    end

    for i = 1, count do
        local container = Game.createItem(containerid, 1)
        for x = 1, ItemType(containerid):getCapacity() do
            container:addItem(itemid, charges)
        end

        if player:addItemEx(container, true) ~= RETURNVALUE_NOERROR then
            return false
        end
    end
    return true
end

function getCount(string)
    local b, e = string:find("%d+")
    return b and e and tonumber(string:sub(b, e)) or -1
end
 
Your lib is correct since you already have buy item container function, maybe you're doing something wrong with the npc file.
Please post your runes.lua script here.
 
Your lib is correct since you already have buy item container function, maybe you're doing something wrong with the npc file.
Please post your runes.lua script here.
Lua:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)             npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

local shopModule = ShopModule:new()
npcHandler:addModule(shopModule)

shopModule:addBuyableItem({'spellbook'}, 2175, 150, 'spellbook')

shopModule:addBuyableItem({'small health'}, 8704, 20, 'small health potion')
shopModule:addBuyableItem({'health potion'}, 7618, 45, 'health potion')
shopModule:addBuyableItem({'mana potion'}, 7620, 50, 'mana potion')
shopModule:addBuyableItem({'strong health'}, 7588, 100, 'strong health potion')
shopModule:addBuyableItem({'strong mana'}, 7589, 80, 'strong mana potion')
shopModule:addBuyableItem({'great health'}, 7591, 190, 'great health potion')
shopModule:addBuyableItem({'great mana'}, 7590, 120, 'great mana potion')
shopModule:addBuyableItem({'great spirit'}, 8472, 190, 'great spirit potion')
shopModule:addBuyableItem({'ultimate health'}, 8473, 310, 'ultimate health potion')
shopModule:addBuyableItem({'antidote potion'}, 8474, 50, 'antidote potion')

shopModule:addSellableItem({'normal potion flask', 'normal flask'}, 7636, 5, 'empty small potion flask')
shopModule:addSellableItem({'strong potion flask', 'strong flask'}, 7634, 10, 'empty strong potion flask')
shopModule:addSellableItem({'great potion flask', 'great flask'}, 7635, 15, 'empty great potion flask')

shopModule:addBuyableItem({'blank rune'},         2260, 10, 'blank rune')
shopModule:addBuyableItem({'animate dead'},         2316, 375,1, 'animate dead rune')
shopModule:addBuyableItem({'antidote'},         2266, 65,1, 'antidote rune')
shopModule:addBuyableItem({'avalanche'},         2274, 180,4, 'avalanche rune')
shopModule:addBuyableItem({'chameleon'},         2291, 210,1, 'chameleon rune')
shopModule:addBuyableItem({'convince creature'},     2290, 80,1, 'convince creature rune')
shopModule:addBuyableItem({'desintegrate'},         2310, 80,3, 'desintegrate rune')
shopModule:addBuyableItem({'destroy field'},         2261, 45,3,  'destroy field')
shopModule:addBuyableItem({'energy bomb'},         2262, 325,2, 'energy bomb rune')
shopModule:addBuyableItem({'energy field'},         2277, 115,3, 'energy field')
shopModule:addBuyableItem({'energy wall'},         2279, 340,4, 'energy wall rune')
shopModule:addBuyableItem({'explosion'},         2313, 190,6, 'explosion rune')
shopModule:addBuyableItem({'fire bomb'},         2305, 235,2, 'fire bomb rune')
shopModule:addBuyableItem({'fire field'},         2301, 85,3,  'fire field rune')
shopModule:addBuyableItem({'fire wall'},         2303, 245,4, 'fire wall rune')
shopModule:addBuyableItem({'fireball'},         2302, 150,5,  'fire ball')
shopModule:addBuyableItem({'great fireball'},         2304, 180,4, 'great fireball rune')
shopModule:addBuyableItem({'heavy magic missile'},     2311, 120,10, 'heavy magic missile rune')
shopModule:addBuyableItem({'holy missile missile'},     2295, 80,5, 'holy missile rune')
shopModule:addBuyableItem({'icicle'},             2271, 150,5, 'icicle rune')
shopModule:addBuyableItem({'intense healing'},         2265, 95,1, 'intense healing rune')
shopModule:addBuyableItem({'light magic missile'},     2287, 40,10, 'light magic missile rune')
shopModule:addBuyableItem({'magic wall'},         2293, 350,3, 'magic wall rune')
shopModule:addBuyableItem({'paralyze'},         2278, 700,1, 'paralyze rune')
shopModule:addBuyableItem({'poison bomb'},         2286, 170,2, 'poison bomb rune')
shopModule:addBuyableItem({'poison field'},         2285, 65,3,  'poison field')
shopModule:addBuyableItem({'poison wall'},         2289, 210,4, 'poison wall rune')
shopModule:addBuyableItem({'soulfire'},         2308, 140,3, 'soulfire rune')
shopModule:addBuyableItem({'stalagmite'},         2292, 120,10, 'stalagmite rune')
shopModule:addBuyableItem({'stone shower'},         2288, 150,4, 'stoneshower rune')
shopModule:addBuyableItem({'sudden death'},         2268, 325,1, 'sudden death rune')
shopModule:addBuyableItem({'thunderstorm'},         2315, 150,4, 'thunderstorm rune')
shopModule:addBuyableItem({'ultimate healing'},     2273, 175,3, 'ultimate healing rune')
shopModule:addBuyableItem({'wild growth'},         2269, 320,2, 'wild growth rune')

shopModule:addBuyableItemContainer({'bp blank'},     1998, 2260, 220, 1, 'bp blank rune')

shopModule:addBuyableItemContainer({'bp animate dead'},     1998, 2316, 7520, 1, 'bp animate dead rune')
shopModule:addBuyableItemContainer({'bp antidote'},         2003, 2266, 1320, 1, 'bp antidote rune')
shopModule:addBuyableItemContainer({'bp avalanche'},         2002, 2274, 3620,4, 'bp avalanche rune')
shopModule:addBuyableItemContainer({'bp chameleon'},         1998, 2291, 4220,1, 'bp chameleon rune')
shopModule:addBuyableItemContainer({'bp convince creature'},     1998, 2290, 1620,1, 'bp convince creature rune')
shopModule:addBuyableItemContainer({'bp desintegrate'},     2001, 2310, 1620,3, 'bp desintegrate rune')
shopModule:addBuyableItemContainer({'bp destroy field'},     2003, 2261, 920,3,  'bp destroy field')
shopModule:addBuyableItemContainer({'bp energy bomb'},         2003, 2262, 6520,2, 'bp energy bomb rune')
shopModule:addBuyableItemContainer({'bp energy field'},     1998, 2277, 2320,3, 'bp energy field')
shopModule:addBuyableItemContainer({'bp energy wall'},         2002, 2279, 6820,4, 'bp energy wall rune')
shopModule:addBuyableItemContainer({'bp explosion'},         2001, 2313, 3820,6, 'bp explosion rune')
shopModule:addBuyableItemContainer({'bp fire bomb'},         2000, 2305, 4720,2, 'bp fire bomb rune')
shopModule:addBuyableItemContainer({'bp fire field'},         2000, 2301, 1720,3,  'bp fire field rune')
shopModule:addBuyableItemContainer({'bp fire wall'},         2000, 2303, 4920,4, 'bp fire wall rune')
shopModule:addBuyableItemContainer({'bp fireball'},         2000, 2302, 3020,5,  'bp fire ball')
shopModule:addBuyableItemContainer({'bp great fireball'},     2000, 2304, 3620,4, 'bp great fireball rune')
shopModule:addBuyableItemContainer({'bp heavy magic missile'},     2001, 2311, 2420,10, 'bp heavy magic missile rune')
shopModule:addBuyableItemContainer({'bp holy missile'},     1999, 2295, 1600,5, 'bp holy missile rune')
shopModule:addBuyableItemContainer({'bp icicle'},         2002, 2271, 3020,5, 'bp icicle rune')
shopModule:addBuyableItemContainer({'bp intense healing'},     2003, 2265, 1920,1, 'bp intense healing rune')
shopModule:addBuyableItemContainer({'bp light magic missile'},     1998, 2287, 820,10, 'bp light magic missile rune')
shopModule:addBuyableItemContainer({'bp magic wall'},         1999, 2293, 7020,3, 'bp magic wall rune')
shopModule:addBuyableItemContainer({'bp paralyze'},         2002, 2278, 1420,1, 'bp paralyze rune')
shopModule:addBuyableItemContainer({'bp poison bomb'},         1998, 2286, 3420,2, 'bp poison bomb rune')
shopModule:addBuyableItemContainer({'bp poison field'},     1998, 2285, 1320,3,  'bp poison field')
shopModule:addBuyableItemContainer({'bp poison wall'},         1998, 2289, 4220,4, 'bp poison wall rune')
shopModule:addBuyableItemContainer({'bp soulfire'},         2000, 2308, 2820,3, 'bp soulfire rune')
shopModule:addBuyableItemContainer({'bp stalagmite'},         1998, 2292, 2400,10, 'bp stalagmite rune')
shopModule:addBuyableItemContainer({'bp stone shower'},     1999, 2288, 3020,4, 'bp stoneshower rune')
shopModule:addBuyableItemContainer({'bp sudden death'},     2003, 2268, 6520,3, 'bp sudden death rune')
shopModule:addBuyableItemContainer({'bp thunderstorm'},     1999, 2315, 3020,4, 'bp thunderstorm rune')
shopModule:addBuyableItemContainer({'bp ultimate healing'},     2002, 2273, 3520,3, 'bp ultimate healing rune')
shopModule:addBuyableItemContainer({'bp wild growth'},         2002, 2269, 6420,2, 'bp wild growth rune')

shopModule:addBuyableItemContainer({'bp slhp'}, 2000, 8704, 400, 1, 'backpack of small health potions')
shopModule:addBuyableItemContainer({'bp hp'}, 2000, 7618, 900, 1, 'backpack of health potions')
shopModule:addBuyableItemContainer({'bp mp'}, 2001, 7620, 1000, 1, 'backpack of mana potions')
shopModule:addBuyableItemContainer({'bp shp'}, 2000, 7588, 2000, 1, 'backpack of strong health potions')
shopModule:addBuyableItemContainer({'bp smp'}, 2001, 7589, 1600, 1, 'backpack of strong mana potions')
shopModule:addBuyableItemContainer({'bp ghp'}, 2000, 7591, 3800, 1, 'backpack of great health potions')
shopModule:addBuyableItemContainer({'bp gmp'}, 2001, 7590, 2400, 1, 'backpack of great mana potions')
shopModule:addBuyableItemContainer({'bp gsp'}, 1999, 8472, 3800, 1, 'backpack of great spirit potions')
shopModule:addBuyableItemContainer({'bp uhp'}, 2000, 8473, 6200, 1, 'backpack of ultimate health potions')
shopModule:addBuyableItemContainer({'bp ap'}, 2002, 8474, 2000, 1, 'backpack of antidote potions')

shopModule:addBuyableItem({'wand of vortex', 'vortex'}, 2190, 500, 'wand of vortex')
shopModule:addBuyableItem({'wand of dragonbreath', 'dragonbreath'}, 2191, 1000, 'wand of dragonbreath')
shopModule:addBuyableItem({'wand of decay', 'decay'}, 2188, 5000, 'wand of decay')
shopModule:addBuyableItem({'wand of draconia', 'draconia'}, 8921, 7500, 'wand of draconia')
shopModule:addBuyableItem({'wand of cosmic energy', 'cosmic energy'}, 2189, 10000, 'wand of cosmic energy')
shopModule:addBuyableItem({'wand of inferno', 'inferno'}, 2187, 15000, 'wand of inferno')
shopModule:addBuyableItem({'wand of starstorm', 'starstorm'}, 8920, 18000, 'wand of starstorm')
shopModule:addBuyableItem({'wand of voodoo', 'voodoo'}, 8922, 22000, 'wand of voodoo')

shopModule:addBuyableItem({'snakebite rod', 'snakebite'}, 2182, 500, 'snakebite rod')
shopModule:addBuyableItem({'moonlight rod', 'moonlight'}, 2186, 1000, 'moonlight rod')
shopModule:addBuyableItem({'necrotic rod', 'necrotic'}, 2185, 5000, 'necrotic rod')
shopModule:addBuyableItem({'northwind rod', 'northwind'}, 8911, 7500, 'northwind rod')
shopModule:addBuyableItem({'terra rod', 'terra'}, 2181, 10000, 'terra rod')
shopModule:addBuyableItem({'hailstorm rod', 'hailstorm'}, 2183, 15000, 'hailstorm rod')
shopModule:addBuyableItem({'springsprout rod', 'springsprout'}, 8912, 18000, 'springsprout rod')
shopModule:addBuyableItem({'underworld rod', 'underworld'}, 8910, 22000,  'underworld rod')

shopModule:addSellableItem({'wand of vortex', 'vortex'}, 2190, 250, 'wand of vortex')
shopModule:addSellableItem({'wand of dragonbreath', 'dragonbreath'}, 2191, 500, 'wand of dragonbreath')
shopModule:addSellableItem({'wand of decay', 'decay'}, 2188, 2500, 'wand of decay')
shopModule:addSellableItem({'wand of draconia', 'draconia'}, 8921, 3750, 'wand of draconia')
shopModule:addSellableItem({'wand of cosmic energy', 'cosmic energy'}, 2189, 5000, 'wand of cosmic energy')
shopModule:addSellableItem({'wand of inferno', 'inferno'},2187, 7500, 'wand of inferno')
shopModule:addSellableItem({'wand of starstorm', 'starstorm'}, 8920, 9000, 'wand of starstorm')
shopModule:addSellableItem({'wand of voodoo', 'voodoo'}, 8922, 11000, 'wand of voodoo')

shopModule:addSellableItem({'snakebite rod', 'snakebite'}, 2182, 250,'snakebite rod')
shopModule:addSellableItem({'moonlight rod', 'moonlight'}, 2186, 500,   'moonlight rod')
shopModule:addSellableItem({'necrotic rod', 'necrotic'}, 2185, 2500, 'necrotic rod')
shopModule:addSellableItem({'northwind rod', 'northwind'}, 8911, 3750, 'northwind rod')
shopModule:addSellableItem({'terra rod', 'terra'}, 2181, 5000, 'terra rod')
shopModule:addSellableItem({'hailstorm rod', 'hailstorm'}, 2183, 7500, 'hailstorm rod')
shopModule:addSellableItem({'springsprout rod', 'springsprout'}, 8912, 9000, 'springsprout rod')
shopModule:addSellableItem({'underworld rod', 'underworld'}, 8910, 11000, 'underworld rod')

npcHandler:addModule(FocusModule:new())
Post automatically merged:

Your lib is correct since you already have buy item container function, maybe you're doing something wrong with the npc file.
Please post your runes.lua script here.
Wow!!! well, apparently I managed to fix it like this:
In data\npc\lib\npcsystem\modules.lua
I changed
ITEM_SHOPPING_BAG to --> ITEM_BACKPACK
For now no errors =DDD
 
Last edited:
Back
Top