• 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!
  • If you're using Gesior 2012 or MyAAC, please review this thread for information about a serious security vulnerability and a fix.

AAC [TFS 0.X] Gesior Shop - Error when delivering items

potinho

Well-Known Member
Joined
Oct 11, 2009
Messages
1,103
Solutions
17
Reaction score
83
Location
Brazil
Hello guys,

Im facing an error when try to sell some dolls in server, my console got error bellow, you guys can help me to fix?

2022-05-25 13:15:23 - [Error - GlobalEvent Interface]
2022-05-25 13:15:23 - data/globalevents/scripts/shop.lua:eek:nThink
2022-05-25 13:15:23 - Description:
2022-05-25 13:15:23 - data/lib/100-shortcut.lua:260: attempt to index a boolean value
2022-05-25 13:15:23 - stack traceback:
2022-05-25 13:15:23 - data/lib/100-shortcut.lua:260: in function 'getItemNameById'
2022-05-25 13:15:23 - data/globalevents/scripts/shop.lua:18: in function <data/globalevents/scripts/shop.lua:4>
2022-05-25 13:15:23 - [Error - GlobalEvents::think] Couldn't execute event: shop

And thats mine shop.lua (globalevent)

Lua:
local SHOP_MSG_TYPE = MESSAGE_EVENT_ORANGE
local SQL_interval = 30

function onThink(interval, lastExecution)
        local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
        if(result_plr:getID() ~= -1) then
                while(true) do
                        local id = tonumber(result_plr:getDataInt("id"))
                        local action = tostring(result_plr:getDataString("action"))
                        local delete = tonumber(result_plr:getDataInt("delete_it"))
                        local cid = getCreatureByName(tostring(result_plr:getDataString("name")))
                        if isPlayer(cid) then
                                local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
                                local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
                                local container_id = tonumber(result_plr:getDataInt("param3"))
                                local container_count = tonumber(result_plr:getDataInt("param4"))
                                local add_item_type = tostring(result_plr:getDataString("param5"))
                                local add_item_name = getItemNameById(tonumber(result_plr:getDataInt("param1")))
                                local add_item_count = tostring(result_plr:getDataInt("param2"))
                                local received_item = 0
                                local full_weight = 0
                                if add_item_type == 'container' then
                                        container_weight = getItemWeightById(container_id, 1)
                                        if isItemRune(itemtogive_id) == TRUE then
                                                items_weight = container_count * getItemWeightById(itemtogive_id, 1)
                                        else
                                                items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
                                        end
                                        full_weight = items_weight + container_weight
                                else
                                        full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                                        if isItemRune(itemtogive_id) == TRUE then
                                                full_weight = getItemWeightById(itemtogive_id, 1)
                                        else
                                                full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                                        end
                                end
                                local free_cap = getPlayerFreeCap(cid)
                                if full_weight <= free_cap then
                                        if add_item_type == 'container' then
                                                local new_container = doCreateItemEx(container_id, 1)
                                                local iter = 0
                                                while iter ~= container_count do
                                                        doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                                                        iter = iter + 1
                                                end
                                                received_item = doPlayerAddItemEx(cid, new_container)
                                        else
                                                local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                                                doItemSetAttribute(new_item, "description", "This item was purchased by the player ".. getPlayerName(cid) .."!")
                                                received_item = doPlayerAddItemEx(cid, new_item)
                                        end
                                        if received_item == RETURNVALUE_NOERROR then
                                                doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_count ..' '.. add_item_name ..' << from Extreme Shop.')
                                                db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
                                                db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                                        else
                                                doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_count ..' '.. add_item_name ..' << from Extreme shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
                                        end
                                else
                                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_count ..' '.. add_item_name ..' << from Extreme shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
                                end
                        end
                        if not(result_plr:next()) then
                                break
                        end
                end
                result_plr:free()
        end
        return true
end
Post automatically merged:

Now i've see, this error occur just to my GOD character
 
Last edited:
Top