Majesty 1,754 #1 Posted May 9, 2017 [MyAAC] Gesior Shop System Créditos: slawkens Esse é o Gesior Shop System, importado para o MyAAC. A configuração você poderá encontrar nos arquivos: system/pages/points.php e system/pay/* Como instalar: Vá para o Painel de Administração, selecione 'Plugins' e, em seguida, selecione myaac-gesior-shop-system-master.zip e clique em upload. Isso é tudo! Como habilitar: Cole no config.local.php este código: $config['gifts_system'] = true; Feito! O esquema MySQL será automaticamente importado quando você visitar pela primeira vez a página de pontos/presentes. Download: Github Download - Revscriptsys: https://forums.otserv.com.br/index.php?/forums/topic/167475-myaac gesior-shop-system/&tab=comments#comment-1256367 3 guinaatz, rodrigsleo and gustavo.h17 reacted to this Share this post Link to post
Majesty 1,754 #2 Posted March 8, 2021 [Revscriptsys][MyAAC] Gesior Shop System gesior-shop-system.lua Spoiler --[[ Gesior Shop System v2.0 Originally written by Gesior, modified by slawkens for MyAAC. Converted to Revscriptsys by Majesty. change interval 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 isPlayer(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 local gesiorShopSystem = GlobalEvent("GesiorShopSystem") function gesiorShopSystem.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/Fix `itemid1` in `z_shop_offers` then delete it from `z_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/Fix `itemid2` in `z_shop_offers` then delete it from `z_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 FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") doQuery("UPDATE `z_shop_history` SET `trans_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 FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") doQuery("UPDATE `z_shop_history` SET `trans_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 your `z_shop_offers` table where `offer_type` = mount and also in `z_ots_comunication` where `param5` = 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 FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") doQuery("UPDATE `z_shop_history` SET `trans_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 gesiorShopSystem:interval(30000) gesiorShopSystem:register() 1 Elver Maguh reacted to this Share this post Link to post