-- 月度活动 酒馆达标 悬赏大师 -- human.db.actMonthTask.drunk local Util = require("common.Util") local Msg = require("core.Msg") local ObjHuman = require("core.ObjHuman") local MonthactExcel = require("excel.monthAct") local MailExcel = require("excel.mail") local Grid = require("bag.Grid") local MonthActFill = require("monthAct.MonthDataFill") local MonthActLogic = require("monthAct.MonthActLogic") local MailManager = require("mail.MailManager") local YunYingLogic = require("yunying.YunYingLogic") MONTHACT_DRUNK_TYPE_1 = 1 -- 酒馆达标活动 完成%d星 佣兵任务 MONTHACT_DRUNK_FINISH_TYPE = 2 -- 酒馆达标活动完成所有其他任务的任务type local function getNowValue(human, id) if not human.db.actMonthTask or not human.db.actMonthTask.drunk then return 0 end return human.db.actMonthTask.drunk[id] or 0 end local function setNowValue(human, id, value) human.db.actMonthTask = human.db.actMonthTask or {} human.db.actMonthTask.drunk = human.db.actMonthTask.drunk or {} human.db.actMonthTask.drunk[id] = value end -- 检查酒馆活动是否全部完成 local function checkDrunkActAllFinish(human) local isok, finishId = isFinish(human) if not isok then return end local cf = MonthactExcel.drunkery[finishId] if not cf then return end --检查是否已经触发过奖励 if getNowValue(human, finishId) > 0 then return end -- 改db 发放奖励 setNowValue(human, finishId, 1) ObjHuman.save(human) local title = MailExcel.mail[12].title local content = MailExcel.mail[12].content local senderName = MailExcel.mail[12].senderName MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cf.reward, senderName) end local function addDrunkCnt(human, id, addNum) --检查id是否非法 local cf = MonthactExcel.drunkery[id] if not cf then return end local oldStep = getNowValue(human, id) if oldStep >= cf.taskCnt then return end local newStep = math.min(oldStep + addNum, cf.taskCnt) setNowValue(human, id, newStep) if newStep < cf.taskCnt then return end ObjHuman.save(human) --达成任务 发放奖励 并且检查是否全部完成 local title = MailExcel.mail[11].title local content = Util.format(MailExcel.mail[11].content, cf.special) local senderName = MailExcel.mail[11].senderName MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cf.reward, senderName) checkDrunkActAllFinish(human) for k, v in pairs(funcID) do YunYingLogic.updateIcon(YYInfo[k], human) break end end function isFinish(human) for id, cf in ipairs(MonthactExcel.drunkery) do if cf.type == MONTHACT_DRUNK_FINISH_TYPE then return true, id end if getNowValue(human, id) < cf.taskCnt then return end end end --查询 function query(human) local msgRet = Msg.gc.GC_MONTHACT_DRUNK_QUERY msgRet.leftTime = MonthActLogic.getActLeftTime(human) for id, cf in ipairs(MonthactExcel.drunkery) do MonthActFill.makeMonthTaskData(msgRet.list[id], cf, id) msgRet.list[id].cur = getNowValue(human, id) end msgRet.list[0] = #MonthactExcel.drunkery --Msg.trace(msgRet) Msg.send(msgRet, human.fd) end -- 酒馆达标活动计数入口 Ex 之前 function addDrunkCntEx(human, star, addNum) -- 检查活动是否结束 MonthActLogic.checkActEndTime(human) star = star or 0 for id, cf in ipairs(MonthactExcel.drunkery) do if cf.type == MONTHACT_DRUNK_TYPE_1 and star == cf.special then addDrunkCnt(human, id, addNum) break end end end --[[ function isRed(human) if not isFinish(human) then return true end end --]]