local SHOP_MSG_TYPE = 19
local SQL_interval = 30
local SQL_COMUNICATION_INTERVAL = SQL_interval * 1000
dofile("./petConfig.lua")
function onLogin(cid)
if(InitShopComunication == 0) then
local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL)
InitShopComunication = eventServ
end
registerCreatureEvent(cid, "PlayerThink")
registerCreatureEvent(cid, "Killed")
registerCreatureEvent(cid, "ReputationFromMonsters")
registerCreatureEvent(cid, "PlayerDeath")
registerCreatureEvent(cid, "ArenaBattle")
OLD_LEVELS[cid] = getPlayerLevel(cid)
OLD_MAGLEVELS[cid] = getPlayerMagLevel(cid)
OLD_FIST[cid] = getPlayerSkill(cid, SKILL_FIST)
OLD_CLUB[cid] = getPlayerSkill(cid, SKILL_CLUB)
OLD_AXE[cid] = getPlayerSkill(cid, SKILL_AXE)
OLD_SWORD[cid] = getPlayerSkill(cid, SKILL_SWORD)
OLD_DISTANCE[cid] = getPlayerSkill(cid, SKILL_DISTANCE)
OLD_SHIELD[cid] = getPlayerSkill(cid, SKILL_SHIELD)
OLD_FISHING[cid] = getPlayerSkill(cid, SKILL_FISHING)
return TRUE
end
function onLogout(cid)
if isCreature(getPlayerStorageValue(cid, storages.petUid)) == 1 and getPlayerStorageValue(cid, storages.petIsOnline) == 2 then
setPlayerStorageValue(cid, storages.petIsOnline, 1)
end
return TRUE
end
dofile("./config.lua")
function sql_communication()
env = assert(luasql.mysql())
con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))
result_plr = assert(con:execute("SELECT * FROM z_ots_comunication WHERE `type` = 'login';"))
todo = result_plr:fetch({}, "a")
while todo do
local id = tonumber(todo.id)
local action = tostring(todo.action)
local delete = tonumber(todo.delete_it)
local cid = getPlayerByName(tostring(todo.name))
if isPlayer(cid) == TRUE then
local itemtogive_id = tonumber(todo.param1)
local itemtogive_count = tonumber(todo.param2)
local container_id = tonumber(todo.param3)
local container_count = tonumber(todo.param4)
local add_item_type = tostring(todo.param5)
local add_item_name = tostring(todo.param6)
local full_weight = 0
local container_weight, items_weight, received_item
if add_item_type == 'container' then
container_weight = getItemWeight(container_id, 1)
items_weight = container_count * getItemWeight(itemtogive_id, isItemRune(itemtogive_id) == TRUE and 1 or itemtogive_count)
full_weight = items_weight + container_weight
else
full_weight = getItemWeight(itemtogive_id, isItemRune(itemtogive_id) == TRUE and 1 or itemtogive_count)
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)
received_item = doPlayerAddItemEx(cid, new_item)
end
if received_item == RETURNVALUE_NOERROR then
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
delete = assert(con:execute("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. " LIMIT 1;"))
assert(con:execute("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. " LIMIT 1;"))
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS 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_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 '.. SQL_interval ..' seconds to get it.')
end
end
todo = result_plr:fetch (todo, "a")
end
con:close()
env:close()
local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL)
end