| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- -----------------------------------------------
- -- 跨服操作项
- -- human.db.middleOptions 跨服操作列表
- -- addItem 添加道具
- -- updateYuanbao 刷新水晶
- -- updateYinliang 刷新银两
- ------------------------------------------------
- local Log = require("common.Log")
- local Lang = require("common.Lang")
- local ObjHuman = require("core.ObjHuman")
- local BagLogic = require("bag.BagLogic")
- local MailLogic = require("mail.MailLogic")
- -- 操作类型枚举
- OPTYPE_ADD_ITEM = 1 -- 背包添加道具
- OPTYPE_UPDATE_YUANBAO = 2 -- 添加/扣水晶
- OPTYPE_UPDATE_YINLIANG = 3 -- 添加/扣金币
- -- 操作白名单,预防用
- LOGTYPE_WHITE_LIST = {
- ["minewar"] = true, -- reyes todo 这里要改成战火大陆的logtype
- }
- cmd = cmd or {}
- local function getOptionsByType(human, optype)
- human.db.middleOptions = human.db.middleOptions or {}
- human.db.middleOptions[optype] = human.db.middleOptions[optype] or {}
- return human.db.middleOptions[optype]
- end
- local function checkLogType(logType, optype)
- if LOGTYPE_WHITE_LIST[logType] then
- return true
- end
- Log.write(Log.LOGID_TEST, "not in white list", logType, optype)
- end
- function getItemCntByID(human, itemID, logType)
- if not _G.is_middle then return end
- if not checkLogType(logType, OPTYPE_ADD_ITEM) then return end
- local options = getOptionsByType(human, OPTYPE_ADD_ITEM)
- if options[itemID] == nil then return end
- return options[itemID][logType]
- end
- -- 跨服添加道具
- function addItem(human, itemID, itemCnt, logType)
- if not _G.is_middle then return end
- if not checkLogType(logType, OPTYPE_ADD_ITEM) then return end
- local options = getOptionsByType(human, OPTYPE_ADD_ITEM)
- options[itemID] = options[itemID] or {}
- options[itemID][logType] = (options[itemID][logType] or 0) + itemCnt
- end
- cmd[OPTYPE_ADD_ITEM] = function(human, options)
- local failList = nil
- for itemID, option in pairs(options) do
- for logType, itemCnt in pairs(option) do
- if not BagLogic.addItem(human, itemID, itemCnt, nil, logType) then
- if logType == "minewar" then
- failList = failList or {}
- failList[#failList + 1] = {itemID, itemCnt}
- end
- end
- end
- end
- if failList then
- MailLogic.addMail(human,Lang.MINEWAR_MAIL_TITLE2,Lang.MINEWAR_MAIL_CONTENT2,failList)
- end
- end
- -- 跨服更新水晶
- function updateYuanbao(human, value, logType)
- if not _G.is_middle then return end
- if not checkLogType(logType, OPTYPE_UPDATE_YUANBAO) then return end
- local options = getOptionsByType(human, OPTYPE_UPDATE_YUANBAO)
- options[logType] = (options[logType] or 0) + value
- end
- cmd[OPTYPE_UPDATE_YUANBAO] = function(human, options)
- for logType, value in pairs(options) do
- if value > 0 then
- ObjHuman.addYuanbao(human, value, logType)
- elseif value < 0 then
- ObjHuman.decYuanbao(human, "yuanbao", value, logType)
- end
- end
- end
- -- 跨服更新金币
- function updateYinliang(human, value, logType)
- if not _G.is_middle then return end
- if not checkLogType(logType, OPTYPE_UPDATE_YINLIANG) then return end
- local options = getOptionsByType(human, OPTYPE_UPDATE_YINLIANG)
- options[logType] = (options[logType] or 0) + value
- end
- cmd[OPTYPE_UPDATE_YINLIANG] = function(human, options)
- for logType, value in pairs(options) do
- if value ~= 0 then
- ObjHuman.updateYinliang(human, value, logType)
- end
- end
- end
- -- 回到本服需要处理跨服操作事件
- function handleOptions(human, middleOptions)
- if _G.is_middle then return end
- if not middleOptions then return end
- for optype, options in pairs(middleOptions) do
- if cmd[optype] then
- cmd[optype](human, options)
- end
- end
- end
-
|