|
|
@@ -466,13 +466,13 @@ function queryDrillId(human, drillData, openPanel)
|
|
|
-- 1. drillId (byte类型,范围0-255,防止溢出)
|
|
|
local drillIdValue = drillData.drillId or 1
|
|
|
if drillIdValue > 255 or drillIdValue < 0 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: drillId溢出,原始值="..drillIdValue..",限制后="..math.min(math.max(drillIdValue, 0), 255))
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: drillId溢出,原始值="..drillIdValue..",限制后="..math.min(math.max(drillIdValue, 0), 255))
|
|
|
end
|
|
|
msgRet.drillId = math.min(math.max(drillIdValue, 0), 255)
|
|
|
-- 2. diff (byte类型,范围0-255,防止溢出)
|
|
|
local diffValue = diff or 1
|
|
|
if diffValue > 255 or diffValue < 0 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: diff溢出,原始值="..diffValue..",限制后="..math.min(math.max(diffValue, 0), 255))
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: diff溢出,原始值="..diffValue..",限制后="..math.min(math.max(diffValue, 0), 255))
|
|
|
end
|
|
|
msgRet.diff = math.min(math.max(diffValue, 0), 255)
|
|
|
-- 3. box (数组) - 协议定义最大长度为5
|
|
|
@@ -485,12 +485,12 @@ function queryDrillId(human, drillData, openPanel)
|
|
|
local net = msgRet.box[k]
|
|
|
-- index 和 needId 都是 byte 类型,防止溢出
|
|
|
if k > 255 or k < 0 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: box index溢出,原始值="..k..",限制后="..math.min(math.max(k, 0), 255))
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: box index溢出,原始值="..k..",限制后="..math.min(math.max(k, 0), 255))
|
|
|
end
|
|
|
net.index = math.min(math.max(k, 0), 255)
|
|
|
local needIdValue = config.needDrill or 0
|
|
|
if needIdValue > 255 or needIdValue < 0 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: box needId溢出,原始值="..needIdValue..",限制后="..math.min(math.max(needIdValue, 0), 255))
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: box needId溢出,原始值="..needIdValue..",限制后="..math.min(math.max(needIdValue, 0), 255))
|
|
|
end
|
|
|
net.needId = math.min(math.max(needIdValue, 0), 255)
|
|
|
net.state = getBoxState(drill, k)
|
|
|
@@ -531,7 +531,7 @@ function queryDrillId(human, drillData, openPanel)
|
|
|
-- 注意:如果 maxDiff 为 0,应该视为未设置,使用默认值 1(因为 0 在 Lua 中是 truthy)
|
|
|
local maxDiffValue = (drill.maxDiff == nil or drill.maxDiff == 0) and 1 or drill.maxDiff
|
|
|
if maxDiffValue > 255 or maxDiffValue < 0 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: maxDiff溢出,原始值="..maxDiffValue..",限制后="..math.min(math.max(maxDiffValue, 0), 255))
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] WARNING: maxDiff溢出,原始值="..maxDiffValue..",限制后="..math.min(math.max(maxDiffValue, 0), 255))
|
|
|
end
|
|
|
msgRet.maxDiff = math.min(math.max(maxDiffValue, 0), 255)
|
|
|
-- 6. canOneClickSaodang
|
|
|
@@ -540,7 +540,7 @@ function queryDrillId(human, drillData, openPanel)
|
|
|
-- 检查是否购买了基金
|
|
|
local overflowState = human.db.overflow and human.db.overflow.state and human.db.overflow.state[OverflowFundLogic.OVERFLOW_TYPE_2]
|
|
|
local hasFund = overflowState ~= nil
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] 检查基金状态: overflow="..tostring(human.db.overflow ~= nil)..", state="..tostring(human.db.overflow and human.db.overflow.state ~= nil)..", overflowState[2]="..tostring(overflowState)..", hasFund="..tostring(hasFund))
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] 检查基金状态: overflow="..tostring(human.db.overflow ~= nil)..", state="..tostring(human.db.overflow and human.db.overflow.state ~= nil)..", overflowState[2]="..tostring(overflowState)..", hasFund="..tostring(hasFund))
|
|
|
if hasFund then
|
|
|
-- 检查试炼是否开启
|
|
|
local drillOpen = isOpen(human, false)
|
|
|
@@ -555,19 +555,19 @@ function queryDrillId(human, drillData, openPanel)
|
|
|
-- 注意:即使 drillId=1,也显示按钮,实际扫荡时会检查是否有可扫荡的关卡
|
|
|
canOneClickSaodang = 1
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: diff="..diff.." == 0")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: diff="..diff.." == 0")
|
|
|
end
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: drillData为nil")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: drillData为nil")
|
|
|
end
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: drill为nil")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: drill为nil")
|
|
|
end
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: 试炼未开启")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: 试炼未开启")
|
|
|
end
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: 未购买奢华基金(OVERFLOW_TYPE_2)")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[queryDrillId] canOneClickSaodang=0: 未购买奢华基金(OVERFLOW_TYPE_2)")
|
|
|
end
|
|
|
msgRet.canOneClickSaodang = canOneClickSaodang
|
|
|
-- 7. openPanel
|
|
|
@@ -1803,31 +1803,31 @@ end
|
|
|
|
|
|
-- 一键扫荡
|
|
|
function oneClickSaodang(human)
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 收到一键扫荡请求")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 收到一键扫荡请求")
|
|
|
|
|
|
-- 检查是否购买了基金(购买项207)
|
|
|
if not human.db.overflow or not human.db.overflow.state or not human.db.overflow.state[OverflowFundLogic.OVERFLOW_TYPE_2] then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 未购买奢华基金(OVERFLOW_TYPE_2)")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 未购买奢华基金(OVERFLOW_TYPE_2)")
|
|
|
return
|
|
|
end
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已购买基金,继续执行")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已购买基金,继续执行")
|
|
|
|
|
|
-- 检查是否开启了试炼
|
|
|
if not isOpen(human, true) then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 试炼未开启")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 试炼未开启")
|
|
|
return
|
|
|
end
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 试炼已开启,继续执行")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 试炼已开启,继续执行")
|
|
|
|
|
|
local drill = human.db.drill
|
|
|
if not drill then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] drill为nil")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] drill为nil")
|
|
|
return
|
|
|
end
|
|
|
|
|
|
local drillData = DrillDB.getDrillDataByUuid(human.db._id)
|
|
|
if not drillData then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] drillData为nil")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] drillData为nil")
|
|
|
return
|
|
|
end
|
|
|
|
|
|
@@ -1837,25 +1837,25 @@ function oneClickSaodang(human)
|
|
|
end
|
|
|
|
|
|
if diff == 0 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] diff="..diff..",需要!=0")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] diff="..diff..",需要!=0")
|
|
|
return
|
|
|
end
|
|
|
|
|
|
---- 获取当前关卡ID
|
|
|
local currentDrillId = drillData.drillId or 1
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 当前关卡ID="..currentDrillId..", diff="..diff)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 当前关卡ID="..currentDrillId..", diff="..diff)
|
|
|
|
|
|
-- 获取总关卡数
|
|
|
local dirllDefConfig = DrillExcel.define[diff]
|
|
|
if not dirllDefConfig then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 难度配置不存在,diff="..diff)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 难度配置不存在,diff="..diff)
|
|
|
return
|
|
|
end
|
|
|
local maxDrillID = dirllDefConfig.maxDrillID
|
|
|
|
|
|
-- 如果已经通关所有关卡(drillId > maxDrillID),不允许再次扫荡
|
|
|
if currentDrillId > maxDrillID then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已通关所有关卡,不允许再次扫荡,currentDrillId="..currentDrillId..", maxDrillID="..maxDrillID)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已通关所有关卡,不允许再次扫荡,currentDrillId="..currentDrillId..", maxDrillID="..maxDrillID)
|
|
|
Broadcast.sendErr(human, "已通关所有关卡,无法再次扫荡")
|
|
|
return
|
|
|
end
|
|
|
@@ -1863,17 +1863,17 @@ function oneClickSaodang(human)
|
|
|
-- 计算可扫荡的关卡数
|
|
|
-- 一键扫荡应该扫荡所有关卡(1到maxDrillID),无论当前关卡ID是多少
|
|
|
local maxSaodangId = maxDrillID
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 一键扫荡:扫荡所有关卡,maxSaodangId="..maxSaodangId..", maxDrillID="..maxDrillID)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 一键扫荡:扫荡所有关卡,maxSaodangId="..maxSaodangId..", maxDrillID="..maxDrillID)
|
|
|
|
|
|
if maxSaodangId < 1 then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 无可扫荡关卡,maxSaodangId="..maxSaodangId.." < 1")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 无可扫荡关卡,maxSaodangId="..maxSaodangId.." < 1")
|
|
|
return
|
|
|
end
|
|
|
|
|
|
-- 计算扫荡后的关卡ID
|
|
|
-- 一键扫荡后应该全部通关(newDrillId = maxDrillID + 1)
|
|
|
local newDrillId = maxDrillID + 1 -- 16表示已通关所有关卡
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 计算扫荡后关卡ID: 一键扫荡后全部通关, newDrillId="..newDrillId)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 计算扫荡后关卡ID: 一键扫荡后全部通关, newDrillId="..newDrillId)
|
|
|
|
|
|
-- 检查是否已经扫荡过:
|
|
|
-- 由于 newDrillId 总是等于 maxDrillID + 1(全部通关),所以:
|
|
|
@@ -1881,7 +1881,7 @@ function oneClickSaodang(human)
|
|
|
-- - 如果 currentDrillId > maxDrillID,说明已经全部通关了,不允许再次扫荡(这个检查已经在前面做了)
|
|
|
-- 理论上 newDrillId 不会小于或等于 currentDrillId(除非已经全部通关),但为了安全起见,保留检查
|
|
|
if newDrillId < currentDrillId then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已扫荡过,不允许再次扫荡: currentDrillId="..currentDrillId..", newDrillId="..newDrillId..", maxSaodangId="..maxSaodangId)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已扫荡过,不允许再次扫荡: currentDrillId="..currentDrillId..", newDrillId="..newDrillId..", maxSaodangId="..maxSaodangId)
|
|
|
Broadcast.sendErr(human, "已扫荡过,无法再次扫荡")
|
|
|
return
|
|
|
end
|
|
|
@@ -1890,13 +1890,13 @@ function oneClickSaodang(human)
|
|
|
-- 但为了安全起见,保留检查(通过标记判断是否已经扫荡过)
|
|
|
if newDrillId == currentDrillId then
|
|
|
if drill.oneClickSaodangDone then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已扫荡过(通过标记判断),不允许再次扫荡: currentDrillId="..currentDrillId..", newDrillId="..newDrillId..", maxSaodangId="..maxSaodangId)
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 已扫荡过(通过标记判断),不允许再次扫荡: currentDrillId="..currentDrillId..", newDrillId="..newDrillId..", maxSaodangId="..maxSaodangId)
|
|
|
Broadcast.sendErr(human, "已扫荡过,无法再次扫荡")
|
|
|
return
|
|
|
end
|
|
|
end
|
|
|
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 可扫荡关卡数: maxSaodangId="..maxSaodangId..", 总关卡数="..maxDrillID)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 可扫荡关卡数: maxSaodangId="..maxSaodangId..", 总关卡数="..maxDrillID)
|
|
|
|
|
|
-- 双倍奖励
|
|
|
local double = RoleSystemLogic.isDouble(human, RoleSystemDefine.ROLE_SYS_ID_1204)
|
|
|
@@ -1949,7 +1949,7 @@ function oneClickSaodang(human)
|
|
|
end
|
|
|
msgRet.itemList[0] = len
|
|
|
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 发送协议数据: drillId="..msgRet.drillId..", double="..msgRet.double..", itemCount="..len..", items=["..itemInfo.."]")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 发送协议数据: drillId="..msgRet.drillId..", double="..msgRet.double..", itemCount="..len..", items=["..itemInfo.."]")
|
|
|
Msg.send(msgRet, human.fd)
|
|
|
|
|
|
-- 更新关卡ID(已经在发放奖励前检查过了,这里直接更新)
|
|
|
@@ -1957,28 +1957,28 @@ function oneClickSaodang(human)
|
|
|
drillData.drillId = newDrillId
|
|
|
drill.drillId = newDrillId
|
|
|
DrillDB.updateDrillData(drillData)
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 更新关卡ID: "..currentDrillId.." -> "..newDrillId.." (drillData.drillId: "..(oldDrillId or "nil").." -> "..newDrillId..")")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 更新关卡ID: "..currentDrillId.." -> "..newDrillId.." (drillData.drillId: "..(oldDrillId or "nil").." -> "..newDrillId..")")
|
|
|
|
|
|
-- 检查是否全部通关
|
|
|
if newDrillId > maxDrillID then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 扫荡后已全部通关: newDrillId="..newDrillId.." > maxDrillID="..maxDrillID)
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 扫荡后已全部通关: newDrillId="..newDrillId.." > maxDrillID="..maxDrillID)
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 扫荡后未全部通关: newDrillId="..newDrillId.." <= maxDrillID="..maxDrillID..", 可以手动挑战")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 扫荡后未全部通关: newDrillId="..newDrillId.." <= maxDrillID="..maxDrillID..", 可以手动挑战")
|
|
|
end
|
|
|
|
|
|
-- 设置扫荡完成标记(用于防止重复扫荡)
|
|
|
drill.oneClickSaodangDone = true
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 设置扫荡完成标记: oneClickSaodangDone=true")
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 设置扫荡完成标记: oneClickSaodangDone=true")
|
|
|
|
|
|
-- 如果通关所有关卡,触发通关回调
|
|
|
if newDrillId > maxDrillID then
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 触发通关回调: newDrillId="..newDrillId.." > maxDrillID="..maxDrillID)
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 触发通关回调: newDrillId="..newDrillId.." > maxDrillID="..maxDrillID)
|
|
|
tongGuan(human, diff)
|
|
|
ChengjiuLogic.onCallback(human, ChengjiuDefine.CJ_TASK_TYPE_17, 1)
|
|
|
HeroLogLogic.finishTaskCB(human, HeroLogLogic.HERO_LOG_TYPE_5, 1)
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 通关回调执行完成")
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 通关回调执行完成")
|
|
|
else
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 未触发通关回调: newDrillId="..newDrillId.." <= maxDrillID="..maxDrillID)
|
|
|
+ --Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 未触发通关回调: newDrillId="..newDrillId.." <= maxDrillID="..maxDrillID)
|
|
|
end
|
|
|
|
|
|
-- 更新数据
|
|
|
@@ -1999,5 +1999,5 @@ function oneClickSaodang(human)
|
|
|
TriggerLogic.PublishEvent(TriggerDefine.DRILL_KILL_SHOUWEI, human.db._id, 1)
|
|
|
end
|
|
|
|
|
|
- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 任务进度已更新: 扫荡关卡数="..maxSaodangId)
|
|
|
+ -- Log.write(Log.LOGID_DEBUG, "[oneClickSaodang] 任务进度已更新: 扫荡关卡数="..maxSaodangId)
|
|
|
end
|