10251 【越南】【砍树】骑宠养成-新增养成战令
| | |
| | | value = msgList[0]
|
| | | if value == 0:
|
| | | zhanlingType = msgList[1] if len(msgList) > 1 else 1
|
| | | 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)
|
| | | backValue = msgList[2] if len(msgList) > 2 else None
|
| | | PlayerZhanling.ResetZhanling(curPlayer, zhanlingType, backValue)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置战令(%s)!" % (zhanlingType))
|
| | |
|
| | | PlayerZhanling.SyncZhanlingInfo(curPlayer, zhanlingType)
|
| | | GameWorld.DebugAnswer(curPlayer, "重置战令(%s)奖励!" % (zhanlingType))
|
| | | |
| | | else:
|
| | | zhanlingType = value
|
| | | activiteC = msgList[1] if len(msgList) > 1 else 0
|
| | |
| | | import FunctionNPCCommon
|
| | | import PlayerBillboard
|
| | | import ChPyNetSendPack
|
| | | import PlayerZhanling
|
| | | import NetPackCommon
|
| | | import PlayerActTask
|
| | | import GameWorld
|
| | |
| | |
|
| | | GameWorld.DebugLog("骑宠养成活动重置! actNum=%s,actID=%s,playerActID=%s,state=%s,cfgID=%s"
|
| | | % (actNum, actID, playerActID, state, cfgID), playerID)
|
| | | score = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActHorsePetTrainScore % actNum)
|
| | | PlayerZhanling.ResetZhanling(curPlayer, PlayerZhanling.ZhanlingType_HorsePetTrain, score)
|
| | |
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActHorsePetTrainID % actNum, actID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ActHorsePetTrainScore % actNum, 0)
|
| | |
| | | GameWorld.Log("骑宠养成活动发送GameServer: %s, %s" % (msgType, dataMsg), playerID)
|
| | | return
|
| | |
|
| | | def GetActHorsePetTrainScore(curPlayer):
|
| | | ## 获取活动中养成积分
|
| | | actScore = 0
|
| | | for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_HorsePetTrain, {}).values():
|
| | | actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
|
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | continue
|
| | | score = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActHorsePetTrainScore % actNum)
|
| | | actScore = max(score, actScore)
|
| | | return actScore
|
| | |
|
| | | def Sync_HorsePetTrainActionInfo(curPlayer, actNum):
|
| | | ## 通知活动信息
|
| | |
|
| | |
| | | import PlayerControl
|
| | | import ChPyNetSendPack
|
| | | import PlayerGatherTheSoul
|
| | | import PlayerActHorsePetTrain
|
| | | import ItemControler
|
| | | import IPY_GameWorld
|
| | | import PlayerGubao
|
| | |
| | | ZhanlingType_GubaoStar,
|
| | | ZhanlingType_Login,
|
| | | ZhanlingType_GatherTheSoulLV,
|
| | | ) = range(1, 1 + 6)
|
| | | ZhanlingType_HorsePetTrain,
|
| | | ) = range(1, 1 + 7)
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | for zhanlingType in ZhanlingTypeList:
|
| | |
| | | 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)
|
| | |
| | | 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
|
| | |
|