From 64bf77e08f655fe64d4c1a4519fa571860622ae3 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 27 八月 2024 19:09:26 +0800 Subject: [PATCH] 10251 【越南】【砍树】骑宠养成-新增养成战令 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py | 75 +++++++++++++++++++++++++++++++++++++ 1 files changed, 74 insertions(+), 1 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py index bf33463..b9f3c00 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerZhanling.py @@ -21,6 +21,7 @@ import PlayerControl import ChPyNetSendPack import PlayerGatherTheSoul +import PlayerActHorsePetTrain import ItemControler import IPY_GameWorld import PlayerGubao @@ -35,7 +36,8 @@ ZhanlingType_GubaoStar, ZhanlingType_Login, ZhanlingType_GatherTheSoulLV, -) = range(1, 1 + 6) +ZhanlingType_HorsePetTrain, +) = range(1, 1 + 7) def OnPlayerLogin(curPlayer): for zhanlingType in ZhanlingTypeList: @@ -81,6 +83,75 @@ break return +def ResetZhanling(curPlayer, zhanlingType, backValue=None): + ''' 重置战令 + @param zhanlingType: 战令类型 + @param backValue: 重置战令时的战令奖励值,用于返还未领取奖励 + ''' + state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState) + stateH = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH) + updState = GameWorld.SetBitValue(state, zhanlingType, 0) + updStateH = GameWorld.SetBitValue(stateH, zhanlingType, 0) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updStateH) + GameWorld.Log("重置战令: zhanlingType=%s,backValue=%s,state=(%s to %s) stateH=(%s to %s)" + % (zhanlingType, backValue, state, updState, stateH, updStateH), curPlayer.GetPlayerID()) + + if backValue: + __giveUngetAward(curPlayer, zhanlingType, backValue, state&pow(2, zhanlingType), stateH&pow(2, zhanlingType)) + + for keyNum in range(10): + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingReward % (zhanlingType, keyNum), 0) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH % (zhanlingType, keyNum), 0) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree % (zhanlingType, keyNum), 0) + SyncZhanlingInfo(curPlayer, zhanlingType) + return + +def __giveUngetAward(curPlayer, zhanlingType, backValue, activeState, activeStateH): + ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Zhanling", {"ZhanlingType":zhanlingType}, True) + if not ipyDataList: + return + if not backValue: + return + playerID = curPlayer.GetPlayerID() + GameWorld.DebugLog("处理战令重置补发奖励: zhanlingType=%s,backValue=%s,activeState=%s,activeStateH=%s" + % (zhanlingType, backValue, activeState, activeStateH), playerID) + ungetItemDict = {} + for ipyData in ipyDataList: + needValue = ipyData.GetNeedValue() + rewardIndex = ipyData.GetRewardIndex() + if backValue < needValue: + break + + if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]): + rewardItemList = ipyData.GetFreeRewardItemList() + for itemID, itemCount, _ in rewardItemList: + ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount + GameWorld.DebugLog(" 战令补发免费奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID) + + if activeState and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingReward, rewardIndex, True, [zhanlingType]): + rewardItemList = ipyData.GetZLRewardItemList() + for itemID, itemCount, _ in rewardItemList: + ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount + GameWorld.DebugLog(" 战令补发普通奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID) + + if activeStateH and not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH, rewardIndex, True, [zhanlingType]): + rewardItemList = ipyData.GetZLRewardItemListH() + for itemID, itemCount, _ in rewardItemList: + ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount + GameWorld.DebugLog(" 战令补发高级奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID) + + if not ungetItemDict: + return + paramList = [zhanlingType] + itemList = [] + for itemID, itemCount in ungetItemDict.items(): + itemList.append([itemID, itemCount, 0]) + GameWorld.DebugLog(" 战令补发奖励汇总: %s, %s" % (itemList, ungetItemDict), playerID) + + PlayerControl.SendMailByKey("ZhanlingRewardUnget", [playerID], itemList, paramList) + return + def GetZhanlingReward(curPlayer, zhanlingType, rewardID): ## 领取战令奖励 rewardID = GameWorld.ToIntDef(rewardID) @@ -107,6 +178,8 @@ curValue = GameWorld.GetDiff_Day(int(time.time()), firstLoginTime) + 1 elif zhanlingType == ZhanlingType_GatherTheSoulLV: curValue = PlayerGatherTheSoul.GetGatherTheSoulTotalLV(curPlayer) + elif zhanlingType == ZhanlingType_HorsePetTrain: + curValue = PlayerActHorsePetTrain.GetActHorsePetTrainScore(curPlayer) else: return -- Gitblit v1.8.0