| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- -- 月度活动 酒馆达标 悬赏大师
- -- 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
- --]]
|