local _M = {} local redisproxy = redisproxy function _M.clientRequest(agent, data) local msg = MsgPack.unpack(data) local role = agent.role local action = _M[msg.cmd] local bin = MsgPack.pack({ cmd = "指令失败" }) if not action then SendPacket(actionCodes.Gm_receiveResponse, bin) return true end local ret = action(role, msg) bin = MsgPack.pack({ cmd = ret }) SendPacket(actionCodes.Gm_receiveResponse, bin) return true end function _M.testhotfix(role, pms) return csvdb["itemCsv"][1]["name"] end function _M.hero(role, pms) local heroType = tonum(pms.pm1) if not role:addHero({type = heroType}) then return "失败" end return "成功" end function _M.equip(role, pms) local typ = tonum(pms.pm1) local level = tonum(pms.pm2) local count = tonum(pms.pm3) role:addEquip({type = typ,level = level,count = count}) return "成功" end function _M.rune(role, pms) local typ = tonum(pms.pm1) local id = tonum(pms.pm2) local result = role:addRune({type = typ,id = id}) return result end function _M.fb(role, pms) -- 直接通关 local carbonId = tonum(pms.pm1) if not csvdb["idle_battleCsv"][carbonId] then return "不存在的carbon" end local passCarbon = role:getProperty("hangPass") local addPre addPre = function(carbonId) local carbonData = csvdb["idle_battleCsv"][carbonId] for _, pre in ipairs(carbonData.prepose:toArray(true, "=")) do passCarbon[pre] = 1 role:checkTaskEnter(role.TaskType.HangPass, {id = pre}) addPre(pre) end end passCarbon[carbonId] = 1 addPre(carbonId) role:updateProperty({field = "hangPass", value = passCarbon}) role:checkTaskEnter(role.TaskType.HangPass, {id = carbonId}) return "成功" end function _M.fbc(role, pms) -- 直接通关 local carbonId = tonum(pms.pm1) if not csvdb["idle_battleCsv"][carbonId] then return "不存在的carbon" end local passCarbon = {} local addPre addPre = function(carbonId) local carbonData = csvdb["idle_battleCsv"][carbonId] for _, pre in ipairs(carbonData.prepose:toArray(true, "=")) do passCarbon[pre] = 1 role:checkTaskEnter(role.TaskType.HangPass, {id = pre}) addPre(pre) end end addPre(carbonId) role:updateProperty({field = "hangInfo", value = {}}) role:updateProperty({field = "hangPass", value = passCarbon}) role:checkTaskEnter(role.TaskType.HangPass, {id = carbonId}) return "成功" end function _M.love(role, pms) local heroType = tonum(pms.pm1) local level = tonum(pms.pm2) local exp = tonum(pms.pm3) local curPlus = csvdb["unit_love_plusCsv"][heroType] if not curPlus then return "参数错误" end level = math.max(math.min(curPlus.limit, level), 0) local curEffect = csvdb["unit_love_effectCsv"][level] exp = math.max(math.min(curEffect.loveValue, exp) , 0) for _, hero in pairs(role.heros) do if hero:getProperty("type") == heroType then hero:updateProperty({field = "loveL", value = level}) hero:updateProperty({field = "loveExp", value = exp}) if role:getProperty("loveStatus"):getv(heroType, 0) < level then role:changeUpdates({{type = "loveStatus", field = heroType, value = level}}) -- 总的 end role:checkTaskEnter(role.TaskType.LoveBreak, {heroType = heroType, loveL = level}) end end return "成功" end function _M.exp(role, pms) local exp = tonum(pms.pm1) exp = math.floor(math.max(exp, 0)) role:addPlayExp(exp) return "成功" end function _M.get(role, pms) if pms.pm1 == "ALL" then local reward = {} for id, data in pairs(csvdb["gm_getallCsv"]) do if csvdb["itemCsv"][id] then reward[id] = data.number end end role:award(reward) elseif pms.pm1 == "EQUIP" then for itemId = 7000 , 8000 do if csvdb["itemCsv"][itemId] then role:award({[itemId] = 100}) end end elseif pms.pm1 == "RUNE" then for itemId = 2000 , 3000 do if csvdb["itemCsv"][itemId] then role:award({[itemId] = 1}) end end elseif pms.pm1 == "FRAG" then for itemId = 100 , 400 do if csvdb["itemCsv"][itemId] then role:award({[itemId] = 100}) end end elseif pms.pm1 == "FOOD" then for itemId = 4000 , 5000 do if csvdb["itemCsv"][itemId] then role:award({[itemId] = 100}) end end elseif pms.pm1 == "HERO" then for itemId = 400 , 700 do if csvdb["itemCsv"][itemId] then role:award({[itemId] = 1}) end end else local itemId = tonum(pms.pm1) if not csvdb["itemCsv"][itemId] then return "物品不存在" end local count = tonum(pms.pm2, 1) role:award({[itemId] = count}) end return "成功" end function _M.advc(role, pms) role:updateProperty({field = "advInfo", value = {}}) role:updateProperty({field = "advItems", value = ""}) role:updateProperty({field = "advTeam", value = {}}) role.advData = nil return "成功" end function _M.idlec(role, pms) role:updateProperty({field = "hangTeam", value = {}}) role:updateProperty({field = "hangInfo", value = {}}) role:updateProperty({field = "hangBag", value = {}}) role.advData = nil return "成功" end function _M.tower(role, pms) local level = tonum(pms.pm1, 1) if not csvdb["tower_battleCsv"][level] then return "不存在" end role:updateProperty({field = "towerInfo", value = {c = globalCsv.tower_count_limit, l = level}}) return "成功" end return _M