Просмотр исходного кода

主线闯关,恶魔之塔增加每日最大通关数量限制

gitxsm 2 недель назад
Родитель
Сommit
6459c48ca5

+ 2 - 0
script/common/Lang.lua

@@ -51,6 +51,8 @@ COMMON_FINISH = [[已完成]]
 COMMON_NEED_LEVEL = [[等级需要达到{1}级]]
 COMMON_HERO_UPPOS = [[有英雄已经在别的阵容上阵]]
 
+COMMON_DAILY_PASSLEVEL_LIMIT = [[已达每日通关上限, 请明日再来]]
+
 --------------------------------------------------
 
 

+ 5 - 0
script/common/ProtoID.lua

@@ -1821,6 +1821,11 @@ _ENV[1857]="CG_RECYCLE_RECYCLEITEM"
 _ENV[1858]="CG_RECYCLE_GET_RECYCLE_LIST"
 _ENV[1859]="GC_RECYCLE_GET_RECYCLE_LIST"
 
+_ENV[1860]="CG_BATTLE_DAILY_PASSLVEL_INFO_QUERY"
+_ENV[1861]="GC_BATTLE_DAILY_PASSLVEL_INFO_QUERY"
+_ENV[1862]="CG_HUNAGJINGTOWER_DAILY_PASSLVEL_INFO_QUERY"
+_ENV[1863]="GC_HUNAGJINGTOWER_DAILY_PASSLVEL_INFO_QUERY"
+
 _ENV[1896]="CG_ZHUANPAN_SUBSCRIBE_REWARD_QUERY"
 _ENV[1897]="GC_ZHUANPAN_SUBSCRIBE_REWARD_QUERY"
 _ENV[1898]="CG_ZHUANPAN_SUBSCRIBE_REWARD_GET"

+ 54 - 3
script/module/battle/BattleLogic.lua

@@ -424,6 +424,35 @@ local function getBattleCfgByType(nBattleType)
 end
 
 
+-- 获取每日通关层数
+local function getDailyPassLevelNum(human)
+    return human.db.battle_dailyPassLevelNum or 0
+end
+
+-- 增加每日通关层数
+local function addDailyPassLevelNum(human, addNum)
+    if not addNum or addNum <= 0 then
+        return
+    end
+
+    human.db.battle_dailyPassLevelNum = (human.db.battle_dailyPassLevelNum or 0) + addNum
+end
+
+-- 重置每日通关层数
+local function resetDailyPassLevelNum(human)
+    if not human.db.battle_dailyPassLevelNum then
+        return
+    end
+
+    human.db.battle_dailyPassLevelNum = 0
+end
+
+-- 跨天时, 对每日通关层数的处理
+local function dailyPassLevelHandle(human)
+    resetDailyPassLevelNum(human)
+    Battle_DailyPassLevelInfo_Query(human)
+end
+
 ------------------------------------------------多队伍挑战相关------------------------------------
 
 -- 是否开启多队伍挑战
@@ -2918,7 +2947,6 @@ function onFightBegin(human, cbParam, combatType, param)
 end
 
 
-
 -- 挑战当前挂机节点
 function fight(human)
     local battleID = BattleLogic_GetBattleBattleID(human)
@@ -2965,6 +2993,11 @@ function fight(human)
         return Broadcast.sendErr(human, Lang.BATTLE_CHOOSE_ATTR)
     end
 
+    local currentPassLevelNum = getDailyPassLevelNum(human)
+    if currentPassLevelNum >= EliteDefine.BATTLE_DAILY_MAX_PASSLEVEL_NUM then
+        return Broadcast.sendErr(human, Lang.COMMON_DAILY_PASSLEVEL_LIMIT)
+    end
+
 
     local config = tBattleConfig.node[battleID]
     -- local mapConfig = tBattleConfig.map[config.mapID]
@@ -2983,6 +3016,11 @@ function fight(human)
     GuideLogic.setDoSpecialGuide(human, GuideLogic.SKIPTYPE_JUMP_BATTLE)
 end
 
+local function challengeWinHandle(human)
+    addDailyPassLevelNum(human, 1)
+    Battle_DailyPassLevelInfo_Query(human)
+end
+
 function onFightEnd(human, result, fightTypeID, param1, combatInfo)
     -- 设置一些战斗结算信息
     combatInfo.defender.name = Util.format(Lang.COMBAT_BATTLE_DEFEND_NAME, param1)
@@ -3248,6 +3286,8 @@ function onFightEnd(human, result, fightTypeID, param1, combatInfo)
     if nBattleType == EliteDefine.COPY_ELITE_NORMAL then
         TriggerLogic.PublishEvent(TriggerDefine.BATTLE_NORMAL_MODE_PASS, human.db._id, 1)
     end
+
+    challengeWinHandle(human)
 end
 
 function setBattleID(human, guajiID)
@@ -3675,6 +3715,8 @@ function updateDaily(human)
     human.db.mopupFreeCnt = 0
     human.db.mopupDoCnt = 0
     human.db.mopupAddFreeCnt = 0
+
+    dailyPassLevelHandle(human)
 end
 
 function getTongGuanReward(human, id)
@@ -4919,7 +4961,7 @@ end
 
 -----------------------------多队伍--------------------------------------------------------
 -- 请求当前模式当前关卡需要几支队伍
-function QueryLevelTeamCnt(human)
+function Battle_LevelTeamCnt_Query(human)
     local teamCnt = getLevelTeamCnt(human)
     local msgRet = Msg.gc.GC_BATTLE_TEAM_COUNT
     msgRet.teamCnt = teamCnt
@@ -4927,4 +4969,13 @@ function QueryLevelTeamCnt(human)
     Msg.send(msgRet, human.fd)
 end
 
--------------------------------------------------------------------------------------------
+-------------------------------------------------------------------------------------------
+
+-- 每日通关信息查询
+function Battle_DailyPassLevelInfo_Query(human)
+    local msgRet = Msg.gc.GC_BATTLE_DAILY_PASSLVEL_INFO_QUERY
+    msgRet.currentPassLevelNum = getDailyPassLevelNum(human)
+    msgRet.maxPassLevelNum = EliteDefine.BATTLE_DAILY_MAX_PASSLEVEL_NUM
+
+    Msg.send(msgRet, human.fd)
+end

+ 3 - 0
script/module/battle/EliteDefine.lua

@@ -30,6 +30,9 @@ BATTLE_MOPUP_MAX_LEN = 12
 -- 开启多队伍挑战的关卡要求
 OPEN_OTHER_TEAM_LEVEL = 601
 
+-- 三种难度关卡, 每日可通关总层数
+BATTLE_DAILY_MAX_PASSLEVEL_NUM = 100
+
 
 
 

+ 6 - 1
script/module/battle/Handler.lua

@@ -98,6 +98,11 @@ function CG_BATTLE_GETGAMEREWARD(human,msg)
     BattleLogic.GetGameReward(human,msg.indexStr)
 end
 
+-- 每日通关信息查询
+function CG_BATTLE_DAILY_PASSLVEL_INFO_QUERY(human,msg)
+    BattleLogic.Battle_DailyPassLevelInfo_Query(human)
+end
+
 ---------------------------------------------------肉鸽玩法---------------------------------------------------
 function CG_ISNEEDSELECTATTR(human,msg)
     BattleLogic.QueryDiffBattleUnSelectAttr(human)
@@ -122,7 +127,7 @@ end
 
 ------------------------------------------多队伍战斗------------------------------------------
 function CG_BATTLE_TEAM_COUNT(human,msg)
-    BattleLogic.QueryLevelTeamCnt(human)
+    BattleLogic.Battle_LevelTeamCnt_Query(human)
 end
 
 

+ 8 - 0
script/module/battle/Proto.lua

@@ -366,6 +366,14 @@ GC_BATTLE_GETGAMEREWARD = {
 }
 
 
+-- 每日通关信息查询
+CG_BATTLE_DAILY_PASSLVEL_INFO_QUERY = {}
+GC_BATTLE_DAILY_PASSLVEL_INFO_QUERY = {
+	{"currentPassLevelNum",      1,        "short"},  -- 当日已通关数量
+	{"maxPassLevelNum",        	 1,        "short"},  -- 当日最大通关数量
+}
+
+
 
 -------------------------------肉鸽系统-----------------------------------------
 AttrInfo ={

+ 5 - 0
script/module/huanjingTower/Handler.lua

@@ -52,4 +52,9 @@ end
 
 function CG_HUNAGJINGTOWER_ONECLICK_SAPDANG(human, msg)
 	HuanJingTowerLogic.oneClickSaodang(human)
+end
+
+
+function CG_HUNAGJINGTOWER_DAILY_PASSLVEL_INFO_QUERY(human, msg)
+	HuanJingTowerLogic.HuanjingTower_DailyPassLevelInfo_Query(human)
 end

+ 62 - 1
script/module/huanjingTower/HuanjingTowerLogic.lua

@@ -71,6 +71,9 @@ REWARD_STATUS_HADGET = 2 -- 已领
 TOWER_TONGGUAN_TYPE = 1 -- 通关奖励
 TOWER_KING_TYPE = 2 -- 通关王者奖励
 
+-- 每日最多可通关层数
+local MAX_DAILY_PASSLEVEL_NUM = 50
+
 
 --秘宝加成
 local function HJ_GetTalismanAdd(human)
@@ -78,6 +81,41 @@ local function HJ_GetTalismanAdd(human)
 	return dailyFreeTimes
 end
 
+-- 获取每日通关层数
+local function getDailyPassLevelNum(human)
+    local num = 0
+    if human.db.tower and human.db.tower.dailyPassLevelNum then
+        num = human.db.tower.dailyPassLevelNum
+    end
+
+    return num
+end
+
+-- 增加每日通关层数
+local function addDailyPassLevelNum(human, addNum)
+    if not addNum or addNum <= 0 then
+        return
+    end
+
+    human.db.tower = human.db.tower or {}
+    human.db.tower.dailyPassLevelNum = (human.db.tower.dailyPassLevelNum or 0) + addNum
+end
+
+-- 重置每日通关层数
+local function resetDailyPassLevelNum(human)
+    if not human.db.tower or not human.db.tower.dailyPassLevelNum then
+        return
+    end
+
+    human.db.tower.dailyPassLevelNum = 0
+end
+
+-- 跨天时, 对每日通关层数的处理
+local function dailyPassLevelHandle(human)
+    resetDailyPassLevelNum(human)
+    HuanjingTower_DailyPassLevelInfo_Query(human)
+end
+
 
 function initSeverTower(nowLv)
     local towerDB = HuanjingTowerDB.query(#HuanjingTowerExcel.huanjingTower)
@@ -578,6 +616,11 @@ end
 
 -- 挑战
 function fight(human, args)
+    local currentPassLevelNum = getDailyPassLevelNum(human)
+    if currentPassLevelNum >= MAX_DAILY_PASSLEVEL_NUM then
+        return Broadcast.sendErr(human, Lang.COMMON_DAILY_PASSLEVEL_LIMIT)
+    end
+
     local changeLv = tonumber(args[1] or 0)
     if changeLv > #HuanjingTowerExcel.huanjingTower then
         return
@@ -615,6 +658,12 @@ function checkUpdeType(db, combatTime, zhandouli)
     return timeUp, zhanliUp
 end
 
+local function challengeWinHandle(human)
+    addDailyPassLevelNum(human, 1)
+    HuanjingTower_DailyPassLevelInfo_Query(human)
+end
+
+
 -- 挑战结束
 function onFightEnd(human, result, fightTypeID, param, combatInfo, args)
     local rewardItem = combatInfo.rewardItem
@@ -671,7 +720,9 @@ function onFightEnd(human, result, fightTypeID, param, combatInfo, args)
         MengxinLogic.onCallBack(human, MengxinLogic.MX_TASK_TYPE_2, param)
         JibanLogic.onCallback(human, 3, param)
         DailyTaskLogic.recordDailyTaskFinishCnt(human, DailyTaskLogic.DAILY_TASK_ID_5, 1)
-        YunYingLogic.onCallBack(human, "onHuangjingTower",1)   
+        YunYingLogic.onCallBack(human, "onHuangjingTower",1)
+
+        challengeWinHandle(human)
     end
     LiLianLogic.onCallbackByCombat(human, combatInfo)
     RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_1203)
@@ -794,6 +845,14 @@ function buyTiliDo(human, buyCnt)
     --	query(human)
 end
 
+-- 每日通关信息查询
+function HuanjingTower_DailyPassLevelInfo_Query(human)
+    local msgRet = Msg.gc.GC_HUNAGJINGTOWER_DAILY_PASSLVEL_INFO_QUERY
+    msgRet.currentPassLevelNum = getDailyPassLevelNum(human)
+    msgRet.maxPassLevelNum = MAX_DAILY_PASSLEVEL_NUM
+    Msg.send(msgRet, human.fd)
+end
+
 -- 挑战结果
 function updateResult(human, result, combatInfo, param)
     -- 当前胜利关卡已通关
@@ -845,6 +904,8 @@ function updateDaily(human)
         human.db.tower.buyCnt = 0
         RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_1203)
         RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_1201)
+
+        dailyPassLevelHandle(human)
     end
 end
 

+ 9 - 1
script/module/huanjingTower/Proto.lua

@@ -144,4 +144,12 @@ GC_HUANGJINGTOWER_LV_ALLHUMAN = {
 }
 
 -- 一键扫荡
-CG_HUNAGJINGTOWER_ONECLICK_SAPDANG = {}
+CG_HUNAGJINGTOWER_ONECLICK_SAPDANG = {}
+
+
+-- 每日挑战信息查询
+CG_HUNAGJINGTOWER_DAILY_PASSLVEL_INFO_QUERY = {}
+GC_HUNAGJINGTOWER_DAILY_PASSLVEL_INFO_QUERY = {
+	{"currentPassLevelNum",      1,        "short"},  -- 当日已通关数量
+	{"maxPassLevelNum",        	 1,        "short"},  -- 当日最大通关数量
+}