diff --git a/src/actions/AdvAction.lua b/src/actions/AdvAction.lua index 5308b88..38fb04b 100644 --- a/src/actions/AdvAction.lua +++ b/src/actions/AdvAction.lua @@ -439,6 +439,16 @@ function _M.finishTaskRpc(agent, data) role:checkTaskEnter("AdvOverTask", {id = taskId}) adv:mylog({desc = "finishTask", int1 = taskId}) + + role:log("mission_pick_achiev", { + mission_threadid = adv.chapterId, -- 大地图ID + mission_threadname = (csvdb["adv_chapterCsv"][adv.chapterId] or {})["chapter"] or "auto", -- 大地图名称 + mission_id = adv.level, -- 关卡ID + mission_sequenceid = adv.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + mission_pick_achiev_id = taskId, -- 任务ID + mission_pick_achiev_reward = reward, -- 任务奖励,[{"id":101,"num":10},{"id":102,"num":20},{"id":103,"num":30}] + }) + SendPacket(actionCodes.Adv_finishTaskRpc, MsgPack.pack(role:packReward(reward, change))) return true @@ -501,6 +511,15 @@ function _M.useItemRpc(agent, data) adv:checkAchievement(adv.AchievType.UseItem, count, itemId) adv:mylog({desc = "useItem", int1 = itemId, int2 = count}) + role:log("mission_pick_use", { + mission_threadid = adv.chapterId, -- 大地图ID + mission_threadname = (csvdb["adv_chapterCsv"][adv.chapterId] or {})["chapter"] or "auto", -- 大地图名称 + mission_id = adv.level, -- 关卡ID + item_id = itemId, -- 道具ID + mission_pick_use_num = count, -- 道具使用量 + mission_sequenceid = adv.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }) + for i = 1, count do adv:doActive(itemData.effect, target) -- target end @@ -587,6 +606,7 @@ function _M.wearArtifactRpc(agent, data) local status = adv:wearArtifact(slot, id) if not status then return 3 end + adv:saveDB() role:finishGuide(55) @@ -612,7 +632,20 @@ function _M.upArtifactRpc(agent, data) if not adv:cost(cost, {}, true) then return 4 end local status = adv:artifactLevelUp(id) - if not status then return 5 end + if not status then + return 5 + else + role:log("mission_pick_reform", { + mission_threadid = adv.chapterId, -- 大地图ID + mission_threadname = (csvdb["adv_chapterCsv"][adv.chapterId] or {})["chapter"] or "auto", -- 大地图名称 + mission_id = adv.level, -- 关卡ID + mission_pick_equip_id = id, -- 神器ID + mission_pick_reform_beflv = curLevel, -- 神器原等级 + mission_pick_reform_aftlv = curLevel + 1, -- 神器现等级 + mission_pick_reform_cost = cost[ItemId.AdvPoint], -- 消耗探险点数 + mission_sequenceid = adv.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }) + end adv:cost(cost, {log = {desc = "upArtifact", int1 = id}}) adv:backCost(cost) if status == 1 then -- 现在穿着呢。更新下 @@ -774,7 +807,7 @@ function _M.wheelSurfRpc(agent, data) if not role:checkItemEnough(costs) then return 5 end role:costItems(costs, {log = {desc = "advWheelSurf", int1 = ptype}}) - role:addAdvLvExp(costs[ItemId.OldCoin] or 0) + local oldLv, lv = role:addAdvLvExp(costs[ItemId.OldCoin] or 0) local advDrawB = role:getProperty("advDrawB") advDrawB[ptype] = (advDrawB[ptype] or 0) + count role:updateProperty({field = "advDrawB", value = advDrawB}) @@ -793,6 +826,16 @@ function _M.wheelSurfRpc(agent, data) role:checkTaskEnter("AdvDraw", {count = count, ptype = ptype}) role:mylog("adv_action", {desc = "advWheelSurf", int1 = ptype, int2 = count}) + role:log("mission_pick_fund", { + item_id = ItemId.OldCoin, -- 资助花费道具ID + mission_pick_fund_amount = costs[ItemId.OldCoin], -- 资助花费道具数量 + mission_pick_fund_cnt = count, -- 资助花费道具次数,1或者10 + mission_pick_fund_reward = reward, -- 资助获得奖励,[{"id":100,"num":10},{"id":101,"num":20},{"id":102,"num":30}] + mission_pick_fund_stagereward = {}, -- 资助阶段奖励 + mission_pick_fund_beflv = oldLv, -- 资助前资助等级 + mission_pick_fund_aftlv = lv, -- 资助后资助等级 + }) + SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = backReward})) return true end diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index ffeeb2d..eef71ca 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -51,6 +51,7 @@ function Adv:initByInfo(advInfo) self.cacheUnlock = advInfo.cacheUnlock or {} self.shopStatus = advInfo.shopStatus or {} self.support = advInfo.support or {} + self.logid = advInfo.logid or "auto" self.maps = {} for id, map in ipairs(advInfo.maps or {}) do @@ -102,6 +103,7 @@ function Adv:initByChapter(params) self.shopStatus = self.shopStatus or {} self.support = self.support or {} self.battle = nil -- 清掉 老的 battle + self.logid = self.owner:getActionUcode() if isEnter then -- 把 支援效果初始化为易用用的形式 self:initSupport(support or {}) @@ -206,6 +208,7 @@ function Adv:saveDB(notNotify) advInfo.cacheUnlock = self.cacheUnlock advInfo.shopStatus = self.shopStatus advInfo.support = self.support + advInfo.logid = self.logid advInfo.maps = {} self.battle:saveDB() @@ -610,6 +613,15 @@ function Adv:wearArtifact(slot, id) id = nil end self:mylog({desc = "wearArtifact", int1 = id}) + self.owner:log("mission_pick_equip", { + mission_threadid = self.chapterId, -- 大地图ID + mission_threadname = (csvdb["adv_chapterCsv"][self.chapterId] or {})["chapter"] or "auto", -- 大地图名称 + mission_id = self.level, -- 关卡ID + mission_pick_equip_type = 1, --神器操作类型:1:装备,2:卸下 + mission_pick_equip_id = id, --神器ID + mission_pick_equip_lv = advAFGet[id], --神器等级 + mission_sequenceid = self.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }) self.owner:changeUpdates({{type = "advAFWear", field = slot, value = id}}) return true @@ -670,7 +682,6 @@ function Adv:artifactLevelUp(id, level) self:mylog({desc = "artifactLevelUp", int1 = id, int2 = level}) - local status = 0 if curWear[id] then -- 穿着呢 local oldData = csvdb["adv_artifactCsv"][id][advAFGet[id]] @@ -815,6 +826,49 @@ function Adv:over(success, rewardRatio, overType) self:mylog({desc = "over", short1 = success and 1 or 0, int1 = overType}) + + local team = self.owner:getProperty("advTeam") + local player = {} + local attrs = self.owner:getTeamBattleInfo(team).heros + for attrName, _ in pairs(AdvAttsEnum) do + for _, hero in pairs(attrs) do + player[attrName] = (player[attrName] or 0) + hero[attrName] + end + player[attrName] = player[attrName] * (globalCsv.adv_battle_attr_ratio[attrName] or 1) + end + + local battleV = 1 * player["hp"] + + 2 * player["atk"] + + 1.25 * player["def"] + + 0.226 * player["hit"] + + 0.26 * player["miss"] + + local heroList = {team.leader, team.leader2} + for _, hid in pairs(team.heros) do + if hid ~= team.leader and hid ~= team.leader2 then + heroList[#heroList + 1] = hid + end + end + + self.owner:log("mission_pick", { + mission_threadid = self.chapterId, -- 大地图ID + mission_threadname = (csvdb["adv_chapterCsv"][self.chapterId] or {})["chapter"] or "auto", -- 大地图名称 + mission_id = self.level, -- 关卡ID + mission_herolist = heroList, -- 英雄ID列表,[111, 222, 333, 444, 555] 前两个为队长、副队长 + mission_heroscore = battleV, -- 编队总评分 + mission_teamlv = 0, -- 编队等级 + mission_recscore = csvdb["adv_chapter_campsiteCsv"][self.chapterId][1].recommendValue, -- 关卡推荐评分 + mission_floor_bef = 0, -- 进入前关卡层数 + mission_floor_aft = self.level, -- 结束时关卡层数 + mission_team_status = {HP = team.player.hp, SP = team.player.sp}, -- 队伍状态,{"HP":100, "SP":100, "curse":7} + mission_result = success and 1 or (team.player.hp > 0 and 3 or 2), -- 战斗结果(0-无效,1-胜利,2-血量耗尽退出,3,主动退出) + mission_reward = reward, -- 获得奖励,[{"id":101,"num":10},{"id":102,"num":20},{"id":103,"num":30}] + mission_integral_bef = 0, -- 进入前积分 + mission_integral_aft = score, -- 完成后积分 + mission_cleartype = 1, -- 1正常通关;2代理拾荒 + mission_sequenceid = self.logid, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }) + local chapterId = self.chapterId self:clear() self.owner:checkTaskEnter("AdvScore", {score = score}) diff --git a/src/models/RoleLog.lua b/src/models/RoleLog.lua index 4216ce6..a7e2e68 100644 --- a/src/models/RoleLog.lua +++ b/src/models/RoleLog.lua @@ -422,6 +422,79 @@ local MethodType = { gift_name = true, -- 礼包名称 gift_reason = true, -- 礼包发放原因,见发放原因枚举表 }, + + push_gift = { -- 礼包推送 + gift_id = true, --礼包ID + gift_name = true, --礼包名称 + }, + + mission_pick = { --拾荒玩法 + mission_threadid = true, -- 大地图ID + mission_threadname = true, -- 大地图名称 + mission_id = true, -- 关卡ID + mission_herolist = "json", -- 英雄ID列表,[111, 222, 333, 444, 555] 前两个为队长、副队长 + mission_heroscore = true, -- 编队总评分 + mission_teamlv = true, -- 编队等级 + mission_recscore = true, -- 关卡推荐评分 + mission_floor_bef = true, -- 进入前关卡层数 + mission_floor_aft = true, -- 结束时关卡层数 + mission_team_status = "json", -- 队伍状态,{"HP":100, "SP":100, "curse":7} + mission_result = true, -- 战斗结果(0-无效,1-胜利,2-血量耗尽退出,3,主动退出) + mission_reward = "json", -- 获得奖励,[{"id":101,"num":10},{"id":102,"num":20},{"id":103,"num":30}] + mission_integral_bef = true, -- 进入前积分 + mission_integral_aft = true, -- 完成后积分 + mission_cleartype = true, -- 1正常通关;2代理拾荒 + mission_sequenceid = true, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }, + + mission_pick_achiev = { --拾荒任务 + mission_threadid = true, -- 大地图ID + mission_threadname = true, -- 大地图名称 + mission_id = true, -- 关卡ID + mission_pick_achiev_id = true, -- 任务ID + mission_pick_achiev_reward = "json", -- 任务奖励,[{"id":101,"num":10},{"id":102,"num":20},{"id":103,"num":30}] + mission_sequenceid = true, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }, + + mission_pick_equip = { -- 拾荒神器装备 + mission_threadid = true, --大地图ID + mission_threadname = true, --大地图名称 + mission_id = true, --关卡ID + mission_pick_equip_type = true, --神器操作类型:1:装备,2:卸下 + mission_pick_equip_id = true, --神器ID + mission_pick_equip_lv = true, --神器等级 + mission_sequenceid = true, --本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }, + + mission_pick_reform = { --拾荒神器升级 + mission_threadid = true, -- 大地图ID + mission_threadname = true, -- 大地图名称 + mission_id = true, -- 关卡ID + mission_pick_equip_id = true, -- 神器ID + mission_pick_reform_beflv = true, -- 神器原等级 + mission_pick_reform_aftlv = true, -- 神器现等级 + mission_pick_reform_cost = true, -- 消耗探险点数 + mission_sequenceid = true, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }, + + mission_pick_use = { --拾荒任务道具使用 + mission_threadid = true, -- 大地图ID + mission_threadname = true, -- 大地图名称 + mission_id = true, -- 关卡ID + item_id = true, -- 道具ID + mission_pick_use_num = true, -- 道具使用量 + mission_sequenceid = true, -- 本次拾荒ID,用于关联一次拾荒产生多条不同类型的日志 + }, + + mission_pick_fund = { --拾荒资助 + item_id = true, -- 资助花费道具ID + mission_pick_fund_amount = true, -- 资助花费道具数量 + mission_pick_fund_cnt = true, -- 资助花费道具次数,1或者10 + mission_pick_fund_reward = "json", -- 资助获得奖励,[{"id":100,"num":10},{"id":101,"num":20},{"id":102,"num":30}] + mission_pick_fund_stagereward = "json", -- 资助阶段奖励 + mission_pick_fund_beflv = true, -- 资助前资助等级 + mission_pick_fund_aftlv = true, -- 资助后资助等级 + }, } local function printError(info) diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 830915f..4d83433 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -1189,6 +1189,7 @@ function RolePlugin.bind(Role) function Role:addAdvLvExp(exp) local advL = self:getProperty("advL") local level = advL[1] + local oldLevel = level local newExp = (advL[2] or 0) + exp if not csvdb["adv_level_fundCsv"][level + 1] then @@ -1211,6 +1212,7 @@ function RolePlugin.bind(Role) advL[1] = level advL[2] = newExp self:updateProperty({field = "advL", value = advL}) + return oldLevel, level end function Role:getAdvWheelSurfLv(ptype) diff --git a/src/models/Store.lua b/src/models/Store.lua index 8bcfb99..bbc0983 100644 --- a/src/models/Store.lua +++ b/src/models/Store.lua @@ -353,6 +353,10 @@ function Store:OnTriggerLimitTimePack(eventType, param) local rechargeCfg = csvdb["shop_rechargeCsv"][config.packId] if rechargeCfg then limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id} + self.owner:log("push_gift", { + gift_id = rechargeCfg.id, --礼包ID + gift_name = rechargeCfg.title, --礼包名称 + }) self:updateProperty({field = "limitTPack", value = limitPack}) end end -- libgit2 0.21.2