ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dingjunge.py
@@ -24,6 +24,7 @@
import ItemControler
import IpyGameDataPY
import NetPackCommon
import PlayerOnline
import ChConfig
# 自动选择排序优先级索引
@@ -49,6 +50,7 @@
        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
@@ -295,6 +297,7 @@
    else:
        if __doSelectEff(curPlayer, selectIndex, replaceHole):
            __randSelectEff(curPlayer, isReset=True)
            RefreshDingjungeAttr(curPlayer)
            
    SyncDingjungeInfo(curPlayer)
    return
@@ -326,6 +329,8 @@
        # 自动选择后重置
        for sIndex in range(randEffCnt):
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGSelectEffect % sIndex, 0)
    RefreshDingjungeAttr(curPlayer)
    return True
def __getUnlockEffHoleCnt(curPlayer):
@@ -358,7 +363,7 @@
                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列表
@@ -546,6 +551,36 @@
    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)