| | |
| | | import IPY_GameWorld
|
| | | import PlayerGubao
|
| | | import ChConfig
|
| | | import time
|
| | |
|
| | | # 战令类型
|
| | | ZhanlingTypeList = (
|
| | |
| | | ZhanlingType_Realm,
|
| | | ZhanlingType_SkyTower,
|
| | | ZhanlingType_GubaoStar,
|
| | | ) = range(1, 1 + 4)
|
| | | ZhanlingType_Login,
|
| | | ) = range(1, 1 + 5)
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | for zhanlingType in ZhanlingTypeList:
|
| | | 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
|
| | |
|
| | |
| | | updState = state|pow(2, zhanlingType)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingState, updState)
|
| | | SyncZhanlingInfo(curPlayer, zhanlingType)
|
| | | GameWorld.Log("激活战令: zhanlingType=%s,updState=%s" % (zhanlingType, updState), curPlayer.GetPlayerID())
|
| | | GameWorld.Log("激活战令普通: zhanlingType=%s,updState=%s" % (zhanlingType, updState), curPlayer.GetPlayerID())
|
| | | break
|
| | |
|
| | | # 高级战令
|
| | | zhanlingCTGIDDictH = IpyGameDataPY.GetFuncEvalCfg("Zhanling", 3)
|
| | | for zhanlingTypeStr, ctgIDList in zhanlingCTGIDDictH.items():
|
| | | if ctgID not in ctgIDList:
|
| | | continue
|
| | | zhanlingType = int(zhanlingTypeStr)
|
| | | state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH)
|
| | | if state&pow(2, zhanlingType):
|
| | | break
|
| | | |
| | | updState = state|pow(2, zhanlingType)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ZhanlingStateH, updState)
|
| | | SyncZhanlingInfo(curPlayer, zhanlingType)
|
| | | GameWorld.Log("激活战令高级: zhanlingType=%s,updState=%s" % (zhanlingType, updState), curPlayer.GetPlayerID())
|
| | | break
|
| | | return
|
| | |
|
| | | def GetZhanlingReward(curPlayer, zhanlingType, rewardID):
|
| | | ## 领取战令奖励
|
| | | rewardID = GameWorld.ToIntDef(rewardID)
|
| | | needValue, isFree = rewardID/10, rewardID%10
|
| | | needValue, rewardType = rewardID/10, rewardID%10 # rewardType: 0-免费;1-普通;2-高级
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("Zhanling", zhanlingType, needValue)
|
| | |
| | | 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 |
| | | else:
|
| | | return
|
| | |
|
| | |
| | | rewardIndex = ipyData.GetRewardIndex()
|
| | | itemList = ipyData.GetFreeRewardItemList()
|
| | | rewardKey = ChConfig.Def_PDict_ZhanlingRewardFree
|
| | | if not isFree:
|
| | | if rewardType == 1:
|
| | | itemList = ipyData.GetZLRewardItemList()
|
| | | rewardKey = ChConfig.Def_PDict_ZhanlingReward
|
| | | state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState)
|
| | | if not state&pow(2, zhanlingType):
|
| | | GameWorld.DebugLog("战令未激活,无法领取战令奖励: zhanlingType=%s,state=%s,isFree=%s" % (zhanlingType, state, isFree), playerID)
|
| | | GameWorld.DebugLog("普通战令未激活,无法领取战令奖励: zhanlingType=%s,state=%s" % (zhanlingType, state), playerID)
|
| | | return
|
| | | elif rewardType == 2:
|
| | | itemList = ipyData.GetZLRewardItemListH()
|
| | | rewardKey = ChConfig.Def_PDict_ZhanlingRewardH
|
| | | state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH)
|
| | | if not state&pow(2, zhanlingType):
|
| | | GameWorld.DebugLog("高级战令未激活,无法领取战令奖励: zhanlingType=%s,state=%s" % (zhanlingType, state), playerID)
|
| | | return
|
| | |
|
| | | if not itemList:
|
| | | GameWorld.DebugLog("没有该战令奖励! zhanlingType=%s,needValue=%s,rewardType=%s" % (zhanlingType, needValue, rewardType), playerID)
|
| | | return
|
| | | |
| | | if GameWorld.GetDictValueByBit(curPlayer, rewardKey, rewardIndex, True, [zhanlingType]):
|
| | | GameWorld.DebugLog("已经领取过该战令奖励! zhanlingType=%s,needValue=%s,isFree=%s" % (zhanlingType, needValue, isFree), playerID)
|
| | | GameWorld.DebugLog("已经领取过该战令奖励! zhanlingType=%s,needValue=%s,rewardType=%s" % (zhanlingType, needValue, rewardType), playerID)
|
| | | return
|
| | |
|
| | | # 检查背包
|
| | |
| | | # 更新已领取成功标记
|
| | | GameWorld.SetDictValueByBit(curPlayer, rewardKey, rewardIndex, 1, True, [zhanlingType])
|
| | | SyncZhanlingInfo(curPlayer, zhanlingType, ipyData)
|
| | | GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,isFree=%s" % (zhanlingType, needValue, isFree), playerID)
|
| | | GameWorld.DebugLog("领取战令奖励: zhanlingType=%s,needValue=%s,rewardType=%s,itemList=%s" % (zhanlingType, needValue, rewardType, itemList), playerID)
|
| | |
|
| | | # 给物品
|
| | | for itemID, itemCount, isAuctionItem in itemList:
|
| | |
| | | reward.NeedValue = ipyData.GetNeedValue()
|
| | | reward.FreeRewardState = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingRewardFree, rewardIndex, True, [zhanlingType]) else 0
|
| | | reward.ZLRewardState = 1 if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_ZhanlingReward, 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.Clear()
|
| | | clientPack.ZhanlingType = zhanlingType
|
| | | clientPack.IsActivite = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingState)&pow(2, zhanlingType) else 0
|
| | | clientPack.IsActiviteH = 1 if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingStateH)&pow(2, zhanlingType) else 0
|
| | | clientPack.Value1 = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhanlingValue1 % zhanlingType)
|
| | | clientPack.RewardList = rewardList
|
| | | clientPack.RewardCount = len(clientPack.RewardList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|