| | |
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import ShareDefine
|
| | | import NetPackCommon
|
| | | import IpyGameDataPY
|
| | | import PlayerControl
|
| | | import ChPyNetSendPack
|
| | | import PlayerGatherTheSoul
|
| | | import PlayerActHorsePetTrain
|
| | | import PlayerActGubao
|
| | | import ItemControler
|
| | | import IPY_GameWorld
|
| | | import PlayerGubao
|
| | | import PlayerCoin
|
| | | import ChConfig
|
| | | import ObjPool
|
| | | import time
|
| | |
|
| | | # 战令类型
|
| | | ZhanlingTypeList = (
|
| | | ZhanlingType_LV, # 等级 1
|
| | | ZhanlingType_Realm, # 境界 2
|
| | | ZhanlingType_SkyTower, # 天星塔 3
|
| | | ZhanlingType_GubaoStar, # 古宝总星数 4
|
| | | ZhanlingType_Login, # 登录 5
|
| | | ZhanlingType_GatherTheSoulLV, # 聚魂 6
|
| | | ZhanlingType_HorsePetTrain, # 骑宠养成 7
|
| | | ZhanlingType_GubaoTrain, # 古宝养成 8
|
| | | ZhanlingType_Xianyuan, # 仙缘 9
|
| | | ZhanlingType_Huanjingge, # 幻境阁 10
|
| | | ZhanlingType_Lianqi, # 炼器 11
|
| | | ) = range(1, 1 + 11)
|
| | | ZhanlingType_LV, # 主公等级 1
|
| | | ZhanlingType_TreeLV, # 祝福等级 2
|
| | | ZhanlingType_MainLevel, # 主线关卡 3
|
| | | ZhanlingType_GubaoCnt, # 古宝数量 4
|
| | | ZhanlingType_ArenaCnt, # 演武场次数 5
|
| | | ZhanlingType_WeekActivity, # 周活跃 6
|
| | | ) = range(1, 1 + 6)
|
| | |
|
| | | # 用Value1记录进度的战令类型
|
| | | ZhanlingValue1TypeList = [ZhanlingType_Huanjingge, ZhanlingType_Lianqi]
|
| | | ZhanlingValue1TypeList = [ZhanlingType_ArenaCnt, ZhanlingType_WeekActivity]
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | for zhanlingType in ZhanlingTypeList:
|
| | | CheckZhanlingAllFinish(curPlayer, zhanlingType) # 因为是后面加的功能,为了处理线上玩家及兼容之后可能修改配置等,故上线默认检查一次
|
| | | if zhanlingType == ZhanlingType_Login:
|
| | | value1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | if not value1:
|
| | | firstLoginTime = int(time.time())
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
|
| | | GameWorld.DebugLog("设置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
|
| | | CheckZhanlingAllFinish(curPlayer, zhanlingType) # 为了处理线上玩家及兼容之后可能修改配置等,故上线默认检查一次
|
| | | #if zhanlingType == ZhanlingType_Login:
|
| | | # value1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | # if not value1:
|
| | | # firstLoginTime = int(time.time())
|
| | | # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
|
| | | # GameWorld.DebugLog("设置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
|
| | | SyncZhanlingInfo(curPlayer, zhanlingType)
|
| | | return
|
| | |
|
| | |
| | | updStateH = GameWorld.SetBitValue(stateH, zhanlingType, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updStateH)
|
| | | if zhanlingType == ZhanlingType_Xianyuan:
|
| | | backValue = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore)
|
| | | PlayerControl.SetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore, 0)
|
| | | elif zhanlingType in ZhanlingValue1TypeList:
|
| | | if zhanlingType in ZhanlingValue1TypeList:
|
| | | backValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, 0)
|
| | | elif zhanlingType == ZhanlingType_Login:
|
| | | firstLoginTime = int(time.time())
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
|
| | | GameWorld.DebugLog("重置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
|
| | | #elif zhanlingType == ZhanlingType_Login:
|
| | | # firstLoginTime = int(time.time())
|
| | | # PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType, firstLoginTime)
|
| | | # GameWorld.DebugLog("重置登录战令首次登录时间: %s" % firstLoginTime, curPlayer.GetPlayerID())
|
| | | GameWorld.Log("重置战令: zhanlingType=%s,backValue=%s,state=(%s to %s) stateH=(%s to %s)"
|
| | | % (zhanlingType, backValue, state, updState, stateH, updStateH), curPlayer.GetPlayerID())
|
| | |
|
| | |
| | |
|
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]):
|
| | | rewardItemList = ipyData.GetFreeRewardItemList()
|
| | | for itemID, itemCount, _ in rewardItemList:
|
| | | for itemInfo in rewardItemList:
|
| | | itemID, itemCount = itemInfo[:2]
|
| | | 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:
|
| | | for itemInfo in rewardItemList:
|
| | | itemID, itemCount = itemInfo[:2]
|
| | | 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:
|
| | | for itemInfo in rewardItemList:
|
| | | itemID, itemCount = itemInfo[:2]
|
| | | ungetItemDict[itemID] = ungetItemDict.get(itemID, 0) + itemCount
|
| | | GameWorld.DebugLog(" 战令补发高级奖励: rewardIndex=%s,needValue=%s,%s, %s" % (rewardIndex, needValue, rewardItemList, ungetItemDict), playerID)
|
| | |
|
| | |
| | | curValue = 0
|
| | | if zhanlingType == ZhanlingType_LV:
|
| | | curValue = curPlayer.GetLV()
|
| | | elif zhanlingType == ZhanlingType_Realm:
|
| | | curValue = curPlayer.GetOfficialRank()
|
| | | elif zhanlingType == ZhanlingType_SkyTower:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor)
|
| | | elif zhanlingType == ZhanlingType_GubaoStar:
|
| | | _, curValue = PlayerGubao.GetGubaoTotalLVStar(curPlayer)
|
| | | elif zhanlingType == ZhanlingType_Login:
|
| | | firstLoginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | if not firstLoginTime:
|
| | | return
|
| | | 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)
|
| | | elif zhanlingType == ZhanlingType_GubaoTrain:
|
| | | curValue = PlayerActGubao.GetActGubaoTrainScore(curPlayer)
|
| | | elif zhanlingType == ZhanlingType_Xianyuan:
|
| | | curValue = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_XianyuanScore)
|
| | | elif zhanlingType == ZhanlingType_TreeLV:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TreeLV)
|
| | | elif zhanlingType == ZhanlingType_MainLevel:
|
| | | lvID = needValue
|
| | | curValue = lvID if PlayerControl.IsMainLevelPass(curPlayer, lvID) else 0
|
| | | elif zhanlingType == ZhanlingType_GubaoCnt:
|
| | | curValue = PlayerGubao.GetGubaoTotalCnt(curPlayer, needValue)
|
| | | #elif zhanlingType == ZhanlingType_Login:
|
| | | # firstLoginTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | # if not firstLoginTime:
|
| | | # return
|
| | | # curValue = GameWorld.GetDiff_Day(int(time.time()), firstLoginTime) + 1 |
| | | elif zhanlingType in ZhanlingValue1TypeList:
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | else:
|
| | |
| | | GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,rewardType=%s,itemList=%s" % (zhanlingType, needValue, rewardType, itemList), playerID)
|
| | |
|
| | | # 给物品
|
| | | for itemID, itemCount, isAuctionItem in itemList:
|
| | | isAuctionItem = 0
|
| | | for itemInfo in itemList:
|
| | | itemID, itemCount = itemInfo[:2]
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem])
|
| | | ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "Zhanling")
|
| | |
|
| | |
| | | rewardList = []
|
| | | for ipyData in ipyDataList:
|
| | | rewardIndex = ipyData.GetRewardIndex()
|
| | | reward = ChPyNetSendPack.tagMCZhanling()
|
| | | reward = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCZhanling)
|
| | | reward.Clear()
|
| | | reward.NeedValue = ipyData.GetNeedValue()
|
| | | reward.FreeRewardState = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]) else 0
|
| | |
| | | reward.ZLRewardStateH = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardH, rewardIndex, True, [zhanlingType]) else 0
|
| | | rewardList.append(reward)
|
| | |
|
| | | clientPack = ChPyNetSendPack.tagMCZhanlingInfo()
|
| | | clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCZhanlingInfo)
|
| | | clientPack.Clear()
|
| | | clientPack.ZhanlingType = zhanlingType
|
| | | clientPack.IsActivite = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState)&pow(2, zhanlingType) else 0
|