hello i have installed the latest gesior shop system from my-aac page but now when i click the PayPal button nothing happens, also the buttons on Gifts page doesnt respond
View attachment 89973
View attachment 89974
hello i have installed the latest gesior shop system from my-aac page but now when i click the PayPal button nothing happens, also the buttons on Gifts page doesnt respond
View attachment 89973
View attachment 89974
try_files $uri $uri/ /index.php?$query_string;
--[[
Gesior Shop System Revscript v3.0
Originally written by Gesior, modified by slawkens for MyAAC.
This script works with TFS 1.3+, otservbr-global and canary
]]--
local messageType = MESSAGE_EVENT_ADVANCE
-- don't edit anything below this line
if(not messageType) then
messageType = MESSAGE_STATUS_CONSOLE_ORANGE
if(not messageType) then
messageType = MESSAGE_EVENT_ADVANCE
end
end
function getResults()
local resultId = db.storeQuery("SELECT * FROM z_ots_comunication;")
if(resultId == false) then
return false
end
local results = {}
repeat
local tmp = {}
tmp.name = result.getString(resultId, "name")
-- better performance when no player found
tmp.exist = false
tmp.player = nil
local player = Player(tmp.name)
if(player) then
tmp.exist = true
tmp.player = player
tmp.id = result.getNumber(resultId, "id")
tmp.action = result.getString(resultId, "action")
tmp.delete_it = result.getNumber(resultId, "delete_it")
tmp.param1 = result.getNumber(resultId, "param1")
tmp.param2 = result.getNumber(resultId, "param2")
tmp.param3 = result.getNumber(resultId, "param3")
tmp.param4 = result.getNumber(resultId, "param4")
tmp.param5 = result.getString(resultId, "param5")
tmp.param6 = result.getString(resultId, "param6")
end
table.insert(results, tmp)
until not result.next(resultId)
result.free(resultId)
return results
end
local shopSystemGlobalEvent = GlobalEvent("myaac-gesior-shop-system")
function shopSystemGlobalEvent.onThink(interval)
interval = interval / 1000
local started = os.mtime and os.mtime() or os.time()
local addedItems, waitingItems = 0, 0
local added = false
local results = getResults()
if(not results) then
return true
end
for i, v in ipairs(results) do
added = false
local id = v.id
local action = v.action
local delete = v.delete_it
if(v.exist) then
local player = v.player
local param1, param2, param3, param4 = v.param1, v.param2, v.param3, v.param4
local add_item_type = v.param5
local add_item_name = v.param6
local received_item, full_weight, items_weight, item_weigth = 0, 0, 0, 0
local item_doesnt_exist = false
if(add_item_type == 'container' or add_item_type == 'item') then
local itemType = ItemType(param1)
if(not itemType) then -- item doesn't exist
print("[ERROR - gesior-shop-system] Invalid item id: " .. param1 .. ". Change/Fix `itemid1` in `z_shop_offers` then delete it from `z_ots_comunication`")
item_doesnt_exist = true
else
local item_weigth = itemType:getWeight()
if(add_item_type == 'container') then
local containerItemType = ItemType(param3)
if(not containerItemType) then -- container item doesn't exist
print("[ERROR - gesior-shop-system] Invalid container id: " .. param3 .. ". Change/Fix `itemid2` in `z_shop_offers` then delete it from `z_ots_comunication`")
item_doesnt_exist = true
else
local container_weight = containerItemType:getWeight()
if(itemType:isRune()) then
items_weight = param4 * item_weigth
else
items_weight = param4 * itemType:getWeight(param2)
end
full_weight = items_weight + container_weight
end
elseif(add_item_type == 'item') then
full_weight = itemType:getWeight(param2)
if(itemType:isRune()) then
full_weight = itemType:getWeight()
end
end
end
if(not item_doesnt_exist) then
local free_cap = player:getFreeCapacity()
if(full_weight <= free_cap) then
if(add_item_type == 'container') then
local new_container = Game.createItem(param3, 1)
for x = 1, param4 do
new_container:addItem(param1, param2)
end
received_item = player:addItemEx(new_container)
else
received_item = player:addItem(param1, param2)
end
if(received_item) then
player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.")
db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
db.query("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
player:save()
added = true
else
player:sendTextMessage(messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. interval ..' seconds to get it.')
end
else
player:sendTextMessage(messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. (full_weight / 100) ..' oz., you have only '.. (free_cap / 100) ..' oz. free capacity. Put some items in depot and wait about '.. interval ..' seconds to get it.')
end
end
elseif(add_item_type == 'addon') then
player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.")
player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
player:addOutfitAddon(param1, param3)
player:addOutfitAddon(param2, param4)
db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
db.query("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
player:save()
added = true
elseif(add_item_type == 'mount') then
player:addMount(param1)
player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.")
player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
db.query("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
player:save()
added = true
end
end
if(added) then
addedItems = addedItems + 1
else
waitingItems = waitingItems + 1
end
end
print(">> Shopsystem, added " .. addedItems .. " items. Still waiting with " .. waitingItems .. " items.")
return true
end
shopSystemGlobalEvent:interval(30000)
shopSystemGlobalEvent:register()
Hello, I have a problem when I wait for an item from the shop, an error appears in the console
View attachment 90262
2025-02-16 11:11:54 - >> Shopsystem, added 0 items. Still waiting with 11 items.
2025-02-16 11:11:54 - >> Shopsystem, added 0 items. Still waiting with 11 items.
2025-02-16 11:11:54 - >> Shopsystem, added 0 items. Still waiting with 11 items.
gesior-shop-system-revscript.lua
LUA:--[[ Gesior Shop System Revscript v3.0 Originally written by Gesior, modified by slawkens for MyAAC. This script works with TFS 1.3+, otservbr-global and canary ]]-- local messageType = MESSAGE_EVENT_ADVANCE -- don't edit anything below this line if(not messageType) then messageType = MESSAGE_STATUS_CONSOLE_ORANGE if(not messageType) then messageType = MESSAGE_EVENT_ADVANCE end end function getResults() local resultId = db.storeQuery("SELECT * FROM z_ots_comunication;") if(resultId == false) then return false end local results = {} repeat local tmp = {} tmp.name = result.getString(resultId, "name") -- better performance when no player found tmp.exist = false tmp.player = nil local player = Player(tmp.name) if(player) then tmp.exist = true tmp.player = player tmp.id = result.getNumber(resultId, "id") tmp.action = result.getString(resultId, "action") tmp.delete_it = result.getNumber(resultId, "delete_it") tmp.param1 = result.getNumber(resultId, "param1") tmp.param2 = result.getNumber(resultId, "param2") tmp.param3 = result.getNumber(resultId, "param3") tmp.param4 = result.getNumber(resultId, "param4") tmp.param5 = result.getString(resultId, "param5") tmp.param6 = result.getString(resultId, "param6") end table.insert(results, tmp) until not result.next(resultId) result.free(resultId) return results end local shopSystemGlobalEvent = GlobalEvent("myaac-gesior-shop-system") function shopSystemGlobalEvent.onThink(interval) interval = interval / 1000 local started = os.mtime and os.mtime() or os.time() local addedItems, waitingItems = 0, 0 local added = false local results = getResults() if(not results) then return true end for i, v in ipairs(results) do added = false local id = v.id local action = v.action local delete = v.delete_it if(v.exist) then local player = v.player local param1, param2, param3, param4 = v.param1, v.param2, v.param3, v.param4 local add_item_type = v.param5 local add_item_name = v.param6 local received_item, full_weight, items_weight, item_weigth = 0, 0, 0, 0 local item_doesnt_exist = false if(add_item_type == 'container' or add_item_type == 'item') then local itemType = ItemType(param1) if(not itemType) then -- item doesn't exist print("[ERROR - gesior-shop-system] Invalid item id: " .. param1 .. ". Change/Fix `itemid1` in `z_shop_offers` then delete it from `z_ots_comunication`") item_doesnt_exist = true else local item_weigth = itemType:getWeight() if(add_item_type == 'container') then local containerItemType = ItemType(param3) if(not containerItemType) then -- container item doesn't exist print("[ERROR - gesior-shop-system] Invalid container id: " .. param3 .. ". Change/Fix `itemid2` in `z_shop_offers` then delete it from `z_ots_comunication`") item_doesnt_exist = true else local container_weight = containerItemType:getWeight() if(itemType:isRune()) then items_weight = param4 * item_weigth else items_weight = param4 * itemType:getWeight(param2) end full_weight = items_weight + container_weight end elseif(add_item_type == 'item') then full_weight = itemType:getWeight(param2) if(itemType:isRune()) then full_weight = itemType:getWeight() end end end if(not item_doesnt_exist) then local free_cap = player:getFreeCapacity() if(full_weight <= free_cap) then if(add_item_type == 'container') then local new_container = Game.createItem(param3, 1) for x = 1, param4 do new_container:addItem(param1, param2) end received_item = player:addItemEx(new_container) else received_item = player:addItem(param1, param2) end if(received_item) then player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.") db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.query("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE comunication_id = " .. id .. ";") player:save() added = true else player:sendTextMessage(messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. interval ..' seconds to get it.') end else player:sendTextMessage(messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. (full_weight / 100) ..' oz., you have only '.. (free_cap / 100) ..' oz. free capacity. Put some items in depot and wait about '.. interval ..' seconds to get it.') end end elseif(add_item_type == 'addon') then player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.") player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:addOutfitAddon(param1, param3) player:addOutfitAddon(param2, param4) db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.query("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE comunication_id = " .. id .. ";") player:save() added = true elseif(add_item_type == 'mount') then player:addMount(param1) player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.") player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.query("UPDATE `z_shop_history` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE comunication_id = " .. id .. ";") player:save() added = true end end if(added) then addedItems = addedItems + 1 else waitingItems = waitingItems + 1 end end print(">> Shopsystem, added " .. addedItems .. " items. Still waiting with " .. waitingItems .. " items.") return true end shopSystemGlobalEvent:interval(30000) shopSystemGlobalEvent:register()
2025-02-16 09:14:45 - [2025-16-02 09:14:45.697] [warning] Deprecation Warning: The function 'isPlayer(cid)' is outdated. Please use the new format 'Player(cid)'. Update needed at: Line 72, Source: /home/ubuntu/canary/data/scripts/globalevents/gesior-shop-system.lua.
Ubuntu Server 24.04 "Noble Numbat" LTS
This happens every time I log in to my character and try to add a new transaction from the store, but it happens all the time. The same error appears in the console every few seconds
There was another error like this before
LUA:2025-02-16 09:14:45 - [2025-16-02 09:14:45.697] [warning] Deprecation Warning: The function 'isPlayer(cid)' is outdated. Please use the new format 'Player(cid)'. Update needed at: Line 72, Source: /home/ubuntu/canary/data/scripts/globalevents/gesior-shop-system.lua.
I changed it to the function 'Player(cid)' and there is only this error
maybe the distribution is actually wrong, because I also have a problem with charbazar, there are no errors and the characters are not added to the auction, I'm doing everything right
--[[
Gesior Shop System Revscript v3.0
Originally written by Gesior, modified by slawkens for MyAAC.
This script works with TFS 1.3+, otservbr-global and canary
]]--
local messageType = MESSAGE_EVENT_ADVANCE
-- don't edit anything below this line
if(not messageType) then
messageType = MESSAGE_STATUS_CONSOLE_ORANGE
if(not messageType) then
messageType = MESSAGE_EVENT_ADVANCE
end
end
function getResults()
local resultId = db.storeQuery("SELECT * FROM z_ots_comunication;")
if(resultId == false) then
return false
end
local results = {}
repeat
local tmp = {}
tmp.name = result.getString(resultId, "name")
-- better performance when no player found
tmp.exist = false
tmp.player = nil
local player = Player(tmp.name)
if(player) then
tmp.exist = true
tmp.player = player
tmp.id = result.getNumber(resultId, "id")
tmp.action = result.getString(resultId, "action")
tmp.delete_it = result.getNumber(resultId, "delete_it")
tmp.param1 = result.getNumber(resultId, "param1")
tmp.param2 = result.getNumber(resultId, "param2")
tmp.param3 = result.getNumber(resultId, "param3")
tmp.param4 = result.getNumber(resultId, "param4")
tmp.param5 = result.getString(resultId, "param5")
tmp.param6 = result.getString(resultId, "param6")
end
table.insert(results, tmp)
until not result.next(resultId)
result.free(resultId)
return results
end
local shopSystemGlobalEvent = GlobalEvent("myaac-gesior-shop-system")
function shopSystemGlobalEvent.onThink(interval)
interval = interval / 1000
local started = os.mtime and os.mtime() or os.time()
local addedItems, waitingItems = 0, 0
local added = false
local results = getResults()
if(not results) then
return true
end
for i, v in ipairs(results) do
added = false
local id = v.id
local action = v.action
local delete = v.delete_it
if(v.exist) then
local player = v.player
local param1, param2, param3, param4 = v.param1, v.param2, v.param3, v.param4
local add_item_type = v.param5
local add_item_name = v.param6
local received_item, full_weight, items_weight, item_weigth = 0, 0, 0, 0
local item_doesnt_exist = false
if(add_item_type == 'container' or add_item_type == 'item') then
local itemType = ItemType(param1)
if(not itemType) then -- item doesn't exist
print("[ERROR - gesior-shop-system] Invalid item id: " .. param1 .. ". Change/Fixitemid1
inz_shop_offers
then delete it fromz_ots_comunication
")
item_doesnt_exist = true
else
local item_weigth = itemType:getWeight()
if(add_item_type == 'container') then
local containerItemType = ItemType(param3)
if(not containerItemType) then -- container item doesn't exist
print("[ERROR - gesior-shop-system] Invalid container id: " .. param3 .. ". Change/Fixitemid2
inz_shop_offers
then delete it fromz_ots_comunication
")
item_doesnt_exist = true
else
local container_weight = containerItemType:getWeight()
if(itemType:isRune()) then
items_weight = param4 * item_weigth
else
items_weight = param4 * itemType:getWeight(param2)
end
full_weight = items_weight + container_weight
end
elseif(add_item_type == 'item') then
full_weight = itemType:getWeight(param2)
if(itemType:isRune()) then
full_weight = itemType:getWeight()
end
end
end
if(not item_doesnt_exist) then
local free_cap = player:getFreeCapacity()
if(full_weight <= free_cap) then
if(add_item_type == 'container') then
local new_container = Game.createItem(param3, 1)
for x = 1, param4 do
new_container:addItem(param1, param2)
end
received_item = player:addItemEx(new_container)
else
received_item = player:addItem(param1, param2)
end
if(received_item) then
player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.")
db.query("DELETE FROMz_ots_comunication
WHEREid
= " .. id .. ";")
db.query("UPDATEz_shop_history
SETtrans_state
='realized',trans_real
=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
player:save()
added = true
else
player:sendTextMessage(messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. interval ..' seconds to get it.')
end
else
player:sendTextMessage(messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. (full_weight / 100) ..' oz., you have only '.. (free_cap / 100) ..' oz. free capacity. Put some items in depot and wait about '.. interval ..' seconds to get it.')
end
end
elseif(add_item_type == 'addon') then
player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.")
player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
player:addOutfitAddon(param1, param3)
player:addOutfitAddon(param2, param4)
db.query("DELETE FROMz_ots_comunication
WHEREid
= " .. id .. ";")
db.query("UPDATEz_shop_history
SETtrans_state
='realized',trans_real
=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
player:save()
added = true
elseif(add_item_type == 'mount') then
player:addMount(param1)
player:sendTextMessage(messageType, "You received >> ".. add_item_name .." << from OTS shop.")
player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS)
db.query("DELETE FROMz_ots_comunication
WHEREid
= " .. id .. ";")
db.query("UPDATEz_shop_history
SETtrans_state
='realized',trans_real
=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
player:save()
added = true
end
end
if(added) then
addedItems = addedItems + 1
else
waitingItems = waitingItems + 1
end
end
print(">> Shopsystem, added " .. addedItems .. " items. Still waiting with " .. waitingItems .. " items.")
return true
end
shopSystemGlobalEvent:interval(30000)
shopSystemGlobalEvent:register()
--[[
Gesior Shop System v2.0
Originally written by Gesior, modified by slawkens for MyAAC.
This script should work with ANY distro.
don't forget to paste this into globalevents.xml:
<globalevent name="gesior-shop-system" interval="30000" script="gesior-shop-system.lua" />
change 30000 to 30 if other values in this file are low
]]--
local messageType = MESSAGE_EVENT_ORANGE
local displayExecutionTime = true -- how time script took in console (true/false)
-- don't edit anything below this line
if(displayExecutionTime) then
function doSecondsFormat(i)
local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1.%2", 1), 0
repeat
str, found = string.gsub(str, "(%d)(%d%d%d),", "%1.%2,", 1)
until found == 0
return str
end
end
if(not messageType) then
messageType = MESSAGE_STATUS_CONSOLE_ORANGE
if(not messageType) then
messageType = MESSAGE_INFO_DESCR
end
end
if(not getPlayerByName) then
function getPlayerByName(name) local p = Player(name) return p ~= nil and p:getId() or false end
end
if(not isPlayer) then
function isPlayer(cid) return Player(cid) ~= nil end
end
if(not doPlayerSave) then
function doPlayerSave(cid)
if(Player and type(Player) == "table" and Player.save and type(Player.save) == "function") then
local player = Player(cid)
if(player) then
player:save()
end
end
return true
end
end
function getResults()
if(db.storeQuery ~= nil and result.free ~= nil) then -- TFS 1.0+
local resultId = db.storeQuery("SELECT * FROM z_ots_comunication;")
if(resultId == false) then
return false
end
local results = {}
repeat
local tmp = {}
tmp.name = result.getDataString(resultId, "name")
-- better performance when no player found
tmp.exist = false
tmp.cid = getPlayerByName(tmp.name)
if(tmp.cid and Player(tmp.cid)) then
tmp.exist = true
tmp.id = result.getDataInt(resultId, "id")
tmp.action = result.getDataString(resultId, "action")
tmp.delete_it = result.getDataInt(resultId, "delete_it")
tmp.param1 = result.getDataInt(resultId, "param1")
tmp.param2 = result.getDataInt(resultId, "param2")
tmp.param3 = result.getDataInt(resultId, "param3")
tmp.param4 = result.getDataInt(resultId, "param4")
tmp.param5 = result.getDataString(resultId, "param5")
tmp.param6 = result.getDataString(resultId, "param6")
end
table.insert(results, tmp)
until not result.next(resultId)
result.free(resultId)
return results
else -- TFS 0.3
if(db.getResult ~= nil) then
local result_plr = db.getResult("SELECT * FROM z_ots_comunication;")
if(result_plr:getID() == -1) then
return false
end
local results = {}
repeat
local tmp = {}
tmp.name = tostring(result_plr:getDataString("name"))
-- better performance when no player found
tmp.exist = false
tmp.cid = getPlayerByName(tmp.name)
if(tmp.cid and isPlayer(tmp.cid)) then
tmp.exist = true
tmp.id = tonumber(result_plr:getDataInt("id"))
tmp.action = tostring(result_plr:getDataString("action"))
tmp.delete_it = tonumber(result_plr:getDataInt("delete_it"))
tmp.param1 = tonumber(result_plr:getDataInt("param1"))
tmp.param2 = tonumber(result_plr:getDataInt("param2"))
tmp.param3 = tonumber(result_plr:getDataInt("param3"))
tmp.param4 = tonumber(result_plr:getDataInt("param4"))
tmp.param5 = tostring(result_plr:getDataString("param5"))
tmp.param6 = tostring(result_plr:getDataString("param6"))
end
table.insert(results, tmp)
until not(result_plr:next())
result_plr:free()
return results
else
print('[ERROR - gesior-shop-system.lua] Your distribution is not supported')
end
end
return false
end
function doQuery(query)
if(db.asyncQuery ~= nil) then
db.asyncQuery(query)
elseif(db.query ~= nil) then
db.query(query)
elseif(db.executeQuery ~= nil) then
db.executeQuery(query)
else
return false
end
return true
end
if(not getItemWeightById) then
getItemWeightById = getItemWeight
end
if(not doCreateItemEx) then
function doCreateItemEx(itemid, count)
if(Game and type(Game) == "table" and Game.createItem and type(Game.createItem) == "function") then
local item = Game.createItem(itemid, count)
if item then
return item:getUniqueId()
end
return false
else
print("[ERROR - gesior-shop-system] Error code: 1. Please contact slawkens at www.otland.net")
end
end
end
function onThink(interval)
if(interval > 1000) then
interval = interval / 1000
end
local started = os.mtime and os.mtime() or os.time()
local addedItems, waitingItems = 0, 0
local added = false
local results = getResults()
if(not results) then
return true
end
for i, v in ipairs(results) do
added = false
local id = v.id
local action = v.action
local delete = v.delete_it
if(v.exist) then
local cid = v.cid
local param1, param2, param3, param4 = v.param1, v.param2, v.param3, v.param4
local add_item_type = v.param5
local add_item_name = v.param6
local received_item, full_weight, items_weight, item_weigth = 0, 0, 0, 0
local item_doesnt_exist = false
if(add_item_type == 'container' or add_item_type == 'item') then
local item_weigth = getItemWeightById(param1, 1)
if(type(item_weigth) == 'boolean') then -- item doesn't exist
print("[ERROR - gesior-shop-system] Invalid item id: " .. param1 .. ". Change/Fixitemid1
inz_shop_offers
then delete it fromz_ots_comunication
")
item_doesnt_exist = true
else
if(add_item_type == 'container') then
container_weight = getItemWeightById(param3, 1)
if(type(container_weight) == 'boolean') then -- container item doesn't exist
print("[ERROR - gesior-shop-system] Invalid container id: " .. param3 .. ". Change/Fixitemid2
inz_shop_offers
then delete it fromz_ots_comunication
")
item_doesnt_exist = true
else
if(isItemRune(param1)) then
items_weight = param4 * item_weigth
else
items_weight = param4 * getItemWeightById(param1, param2)
end
full_weight = items_weight + container_weight
end
elseif(add_item_type == 'item') then
full_weight = getItemWeightById(param1, param2)
if(isItemRune(param1)) then
full_weight = getItemWeightById(param1, 1)
end
end
end
if(not item_doesnt_exist) then
local free_cap = getPlayerFreeCap(cid)
if(full_weight <= free_cap) then
if(add_item_type == 'container') then
local new_container = doCreateItemEx(param3, 1)
for x = 1, param4 do
doAddContainerItem(new_container, param1, param2)
end
received_item = doPlayerAddItemEx(cid, new_container)
else
local new_item = doCreateItemEx(param1, param2)
received_item = doPlayerAddItemEx(cid, new_item)
end
if(received_item == RETURNVALUE_NOERROR) then
doPlayerSendTextMessage(cid, messageType, "You received >> ".. add_item_name .." << from OTS shop.")
doQuery("DELETE FROMz_ots_comunication
WHEREid
= " .. id .. ";")
doQuery("UPDATEz_shop_history
SETtrans_state
='realized',trans_real
=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
doPlayerSave(cid)
added = true
else
doPlayerSendTextMessage(cid, messageType, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. interval ..' seconds to get it.')
end
else
doPlayerSendTextMessage(cid, messageType, '>> '.. add_item_name ..' << from OTS 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 '.. interval ..' seconds to get it.')
end
end
elseif(add_item_type == 'addon') then
doPlayerSendTextMessage(cid, messageType, "You received >> ".. add_item_name .." << from OTS shop.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
doPlayerAddOutfit(cid, param1, param3)
doPlayerAddOutfit(cid, param2, param4)
doQuery("DELETE FROMz_ots_comunication
WHEREid
= " .. id .. ";")
doQuery("UPDATEz_shop_history
SETtrans_state
='realized',trans_real
=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
doPlayerSave(cid)
added = true
elseif(add_item_type == 'mount') then
if(not doPlayerAddMount) then
print("[ERROR - gesior-shop-system] Your server doesn't support mounts. Remove all items in database from yourz_shop_offers
table whereoffer_type
= mount and also inz_ots_comunication
whereparam5
= mount.")
else
doPlayerAddMount(cid, param1)
doPlayerSendTextMessage(cid, messageType, "You received >> ".. add_item_name .." << from OTS shop.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_GIFT_WRAPS)
doQuery("DELETE FROMz_ots_comunication
WHEREid
= " .. id .. ";")
doQuery("UPDATEz_shop_history
SETtrans_state
='realized',trans_real
=" .. os.time() .. " WHERE comunication_id = " .. id .. ";")
doPlayerSave(cid)
added = true
end
end
end
if(added) then
addedItems = addedItems + 1
else
waitingItems = waitingItems + 1
end
end
local message = ">> Shopsystem, added " .. addedItems .. " items. Still waiting with " .. waitingItems .. " items."
if(displayExecutionTime) then
local done, str = os.time() - started, ""
if(os.mtime) then
done = os.mtime() - started
if(done < 100) then
str = "0.0" .. done
elseif(done < 1000) then
str = "0." .. done
else
str = doSecondsFormat(done)
if(str:len() == 0) then str = "0.0" end
end
end
message = message .. " Done in: " .. str .. "s."
end
print(message)
return true
end
I forgot to add that this isPlayer related bug was located in shopsystem.lua.
Here are my scripts
gesior-shop-system-revscript.lua
gesior-shop-system.lua
i use data-otservbr-global
![]()
GitHub - opentibiabr/canary: Canary Server 13.x for OpenTibia community.
Canary Server 13.x for OpenTibia community. . Contribute to opentibiabr/canary development by creating an account on GitHub.github.com