From 64bd5a764af43a7c0214da424204ee08776490de Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 12 八月 2024 19:20:59 +0800 Subject: [PATCH] 10241 【越南】【砍树】【主干】【港台】古宝养成(增加古宝养成活动;任务活动增加古宝寻宝任务类型,任务支持配置循环轮次;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 46 insertions(+), 3 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py index 27088cf..62a8904 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTask.py @@ -72,6 +72,7 @@ __ResetTaskValueByTemplateID(curPlayer, actNum, lastTempID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskID % actNum, actID) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskRound % actNum, 0) if state: ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) @@ -98,6 +99,7 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskAward % (actNum, keyNum), 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskTempID % actNum, templateID) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskRound % actNum, 1) return def __GetTaskAwardRecordKeyNumMax(templateID, defKeyNum=2): @@ -161,6 +163,7 @@ ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) if not ipyData: continue + roundMax = ipyData.GetRoundMax() templateID = ipyData.GetTemplateID() taskIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActTaskTemp", templateID) @@ -176,6 +179,8 @@ needValueMax = needValue curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskValue % (actNum, taskType)) + if roundMax > 1: + needValueMax *= roundMax if curValue >= needValueMax: continue @@ -205,6 +210,7 @@ ipyData = IpyGameDataPY.GetIpyGameData("ActTask", cfgID) if not ipyData: return + roundMax = ipyData.GetRoundMax() templateID = ipyData.GetTemplateID() taskIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActTaskTemp", templateID) @@ -240,13 +246,48 @@ GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_ActTaskAward, awardIndex, 1, True, [actNum]) - Sync_ActTaskPlayerInfo(curPlayer, actNum) - - GameWorld.DebugLog("领取任务活动奖励! actNum=%s,cfgID=%s,taskID=%s,awardItemList=%s" % (actNum, cfgID, taskID, awardItemList)) + roundNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskRound % actNum) + GameWorld.DebugLog("领取任务活动奖励! actNum=%s,cfgID=%s,roundNum=%s,taskID=%s,awardItemList=%s" % (actNum, cfgID, roundNum, taskID, awardItemList)) for itemID, itemCount, isAuctionItem in awardItemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem], event=["ActTask", False, {}]) + # 检查进入下一轮 + if roundMax > 1 and roundNum < roundMax: + roundFinish = True + taskMaxValueInfo = {} + for taskIpyData in taskIpyDataList: + rTaskID = taskIpyData.GetTaskID() + rTaskType = taskIpyData.GetTaskType() + rNeedValue = taskIpyData.GetNeedValue() + if rNeedValue > taskMaxValueInfo.get(rTaskType, 0): + taskMaxValueInfo[rTaskType] = rNeedValue + rAwardIndex = rTaskID + if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ActTaskAward, rAwardIndex, True, [actNum]): + roundFinish = False + GameWorld.DebugLog("还有任务未领取,不进入下一轮次! actNum=%s,cfgID=%s,roundNum=%s,rTaskID=%s" % (actNum, cfgID, roundNum, rTaskID)) + break + + if roundFinish: + nextRound = roundNum + 1 + GameWorld.DebugLog("本轮任务领取完毕,进入下一轮! nextRound=%s" % (nextRound)) + for rTaskType, rMaxValue in taskMaxValueInfo.items(): + curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskValue % (actNum, taskType)) + updValue = max(0, curValue - rMaxValue) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskValue % (actNum, taskType), updValue) + GameWorld.DebugLog(" 更新新一轮任务值! rTaskType=%s,rMaxValue=%s,curValue=%s,updValue=%s" + % (rTaskType, rMaxValue, curValue, updValue)) + Sync_ActTaskPlayerValueInfo(curPlayer, actNum, taskMaxValueInfo.keys()) + + # 任务领奖记录 + taskAwardKeyNum = __GetTaskAwardRecordKeyNumMax(templateID, 10) + for keyNum in range(taskAwardKeyNum + 1): + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskAward % (actNum, keyNum), 0) + GameWorld.DebugLog(" 重置新一轮领奖记录! taskAwardKeyNum=%s" % (taskAwardKeyNum)) + + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActTaskRound % actNum, nextRound) + + Sync_ActTaskPlayerInfo(curPlayer, actNum) return def Sync_ActTaskPlayerInfo(curPlayer, actNum): @@ -256,6 +297,7 @@ clientPack = ChPyNetSendPack.tagMCActTaskPlayerInfo() clientPack.ActNum = actNum + clientPack.RoundNum = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskRound % actNum) clientPack.AwardRecordList = [] for keyNum in range(keyNumMax + 1): clientPack.AwardRecordList.append(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActTaskAward % (actNum, keyNum))) @@ -305,6 +347,7 @@ actPack.IsDayReset = ipyData.GetIsDayReset() actPack.ResetType = ipyData.GetResetType() actPack.LimitLV = ipyData.GetLVLimit() + actPack.RoundMax = ipyData.GetRoundMax() actPack.TaskList = [] for taskIpyData in taskIpyDataList: -- Gitblit v1.8.0