Advertisement
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, 'advance')
- registerCreatureEvent(cid, "PlayerDeath")
- registerCreatureEvent(cid, "Ushuriel")
- registerCreatureEvent(cid, "Zugurosh")
- registerCreatureEvent(cid, "Madareth")
- registerCreatureEvent(cid, "Golgordan")
- registerCreatureEvent(cid, "Annihilon")
- registerCreatureEvent(cid, "Hellgorak")
- return TRUE
- end
- function sql_communication(parameters)
- local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
- if(result_plr:getID() ~= -1) then
- while(true) do
- id = tonumber(result_plr:getDataInt("id"))
- action = tostring(result_plr:getDataString("action"))
- delete = tonumber(result_plr:getDataInt("delete_it"))
- cid = getPlayerByName(tostring(result_plr:getDataString("name")))
- if isPlayer(cid) == TRUE 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 = tostring(result_plr:getDataString("param6"))
- 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)
- 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.')
- 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_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
- if not(result_plr:next()) then
- break
- end
- end
- result_plr:free()
- end
- local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, parameters)
- end
- function checkRecord()
- local onlinePlayers = getWorldCreatures(0)
- if(onlinePlayers > getMaxPlayers()) then
- broadcastMessageEx(MESSAGE_EVENT_ADVANCE, 'New record: ' .. onlinePlayers .. (onlinePlayers > 1 and ' players' or ' player').. ' are logged in.')
- local save = assert(io.open('record.ini', "wb"))
- local data = save:read("*number")
- save:write(onlinePlayers)
- save:close()
- end
- end
- function getMaxPlayers()
- local file = assert(io.open('record.ini', "rb"))
- local t = file:read("*number")
- file:close()
- return (t == nil and 0 or t)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement