Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ### CONFIG ###
- -- message send to player by script "type" (types you can check in "global.lua")
- SHOP_MSG_TYPE = 19
- -- time (in seconds) between connections to SQL database by shop script
- SQL_interval = 30
- -- ### END OF CONFIG ###
- SQL_COMUNICATION_INTERVAL = SQL_interval * 1000
- function onLogin(cid)
- if(InitShopComunication == 0) then
- local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, {})
- InitShopComunication = eventServ
- end
- registerCreatureEvent(cid, "PlayerDeath")
- return TRUE
- end
- function sql_communication(parameters)
- dofile("./config.lua")
- 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
- id = tonumber(todo.id)
- action = tostring(todo.action)
- delete = tonumber(todo.delete_it)
- 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 received_item = 0
- local full_weight = 0
- if add_item_type == 'container' then
- container_weight = getItemWeight(container_id, 1)
- if isItemRune(itemtogive_id) == TRUE then
- items_weight = container_count * getItemWeight(itemtogive_id, 1)
- else
- items_weight = container_count * getItemWeight(itemtogive_id, itemtogive_count)
- end
- full_weight = items_weight + container_weight
- else
- full_weight = getItemWeight(itemtogive_id, itemtogive_count)
- if isItemRune(itemtogive_id) == TRUE then
- full_weight = getItemWeight(itemtogive_id, 1)
- else
- full_weight = getItemWeight(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)
- 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 .. ";"))
- assert(con:execute("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";"))
- 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, parameters)
- end
Add Comment
Please, Sign In to add comment