| | |
| | | import ItemControler
|
| | | import IpyGameDataPY
|
| | | import NetPackCommon
|
| | | import PlayerOnline
|
| | | import ChConfig
|
| | |
|
| | | # 自动选择排序优先级索引
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGSelectEffect % sIndex, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGUnSelectCnt, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGEffAuto, 0) # 每日重置自动开关
|
| | | RefreshDingjungeAttr(curPlayer)
|
| | | SyncDingjungeInfo(curPlayer)
|
| | | return
|
| | |
|
| | |
| | | else:
|
| | | if __doSelectEff(curPlayer, selectIndex, replaceHole):
|
| | | __randSelectEff(curPlayer, isReset=True)
|
| | | RefreshDingjungeAttr(curPlayer)
|
| | |
|
| | | SyncDingjungeInfo(curPlayer)
|
| | | return
|
| | |
| | | # 自动选择后重置
|
| | | for sIndex in range(randEffCnt):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGSelectEffect % sIndex, 0)
|
| | | |
| | | RefreshDingjungeAttr(curPlayer)
|
| | | return True
|
| | |
|
| | | def __getUnlockEffHoleCnt(curPlayer):
|
| | |
| | | break
|
| | | effIDList.append(effID)
|
| | | if effIDList:
|
| | | GameWorld.DebugLog("已存在未选择的加成效果等选择后再生成: effIDList=%s,unSelectCnt=%s" % (effIDList, unSelectCnt))
|
| | | #GameWorld.DebugLog("已存在未选择的加成效果等选择后再生成: effIDList=%s,unSelectCnt=%s" % (effIDList, unSelectCnt))
|
| | | return effIDList
|
| | |
|
| | | fullLVEffIDList = [] # 已满级的效果ID列表
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGEffect % replaceIndex, effInfo)
|
| | | return True
|
| | |
|
| | | def RefreshDingjungeAttr(curPlayer):
|
| | | CalcDingjungeAttr(curPlayer)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr(exclusiveMapID=ChConfig.Def_FBMapID_Dingjunge)
|
| | | return
|
| | |
|
| | | def CalcDingjungeAttr(curPlayer):
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | attrDict = {}
|
| | | |
| | | effHoleCnt = __getUnlockEffHoleCnt(curPlayer)
|
| | | for eIndex in range(effHoleCnt):
|
| | | effInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGEffect % eIndex)
|
| | | if not effInfo:
|
| | | continue
|
| | | effID, effLV = effInfo / 100, effInfo % 100
|
| | | effIpyData = IpyGameDataPY.GetIpyGameData("FBDJGEffect", effID)
|
| | | if not effIpyData:
|
| | | continue
|
| | | attrID = effIpyData.GetAttrID()
|
| | | attrValue = effIpyData.GetAttrValue()
|
| | | attrValueTotal = attrValue * effLV
|
| | | attrDict[attrID] = attrDict.get(attrID, 0) + attrValueTotal
|
| | | #GameWorld.DebugLog("eIndex=%s,effID=%s,attrID=%s,attrValue=%s,effLV=%s,%s" % (eIndex, effID, attrID, attrValue, effLV, attrDict), playerID)
|
| | | |
| | | # 保存计算值
|
| | | GameWorld.DebugLog("定军属性: %s" % attrDict, playerID)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_Dingjunge, attrDict)
|
| | | return
|
| | |
|
| | | def SyncDingjungeInfo(curPlayer):
|
| | | clientPack = ChPyNetSendPack.tagSCDingjungeInfo()
|
| | | clientPack.TodayPass = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGLineID)
|