ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameXiangong.py
@@ -15,6 +15,7 @@
#"""Version = 2024-09-04 16:30"""
#-------------------------------------------------------------------------------
import GameWorship
import ShareDefine
import PyDataManager
import NetPackCommon
@@ -54,6 +55,58 @@
            return True
    return False
def AddXiangongPlayerByItem(awardItemList, playerID, serverIDList, rank=None):
    ## 根据奖励的物品信息自动发放仙官,仅跨服服务器
    if not GameWorld.IsCrossServer():
        return
    titleID, titleItemID = 0, 0
    for itemInfo in awardItemList:
        itemID = itemInfo[0]
        ipyData = IpyGameDataPY.GetIpyGameData("ChinItem", itemID)
        if not ipyData:
            continue
        itemType = ipyData.GetItemType()
        if itemType != ChConfig.Def_ItemType_Title:
            continue
        effID = ipyData.GetEffect1()
        if effID != ChConfig.Def_Effect_AddDienstgrad:
            continue
        titleID = ipyData.GetEffectValueA1()
        titleItemID = itemID
        break
    if not titleID:
        GameWorld.DebugLog("奖励没有给称号,不用处理称号仙官! %s" % str(awardItemList), playerID)
        return
    xiangongID = GetTitleXiangongID(titleID)
    if not xiangongID:
        GameWorld.DebugLog("奖励的称号没有对应仙官不处理! titleItemID=%s,titleID=%s" % (titleItemID, titleID), playerID)
        return
    GameWorld.Log("根据奖励称号物品晋升仙官: titleItemID=%s,titleID=%s,xiangongID=%s" % (titleItemID, titleID, xiangongID), playerID)
    AddXiangongPlayer(xiangongID, playerID, serverIDList, rank)
    return
def GetTitleXiangongID(titleID):
    ## 获取称号对应的仙宫ID
    TitleXiangongIDDict = IpyGameDataPY.GetConfigEx("TitleXiangongID")
    if not TitleXiangongIDDict:
        TitleXiangongIDDict = {}
        ipyDataMgr = IpyGameDataPY.IPY_Data()
        for index in range(ipyDataMgr.GetXiangongCount()):
            ipyData = ipyDataMgr.GetXiangongByIndex(index)
            xiangongID = ipyData.GetXiangongID()
            tID = ipyData.GetTitleID()
            if not tID:
                continue
            TitleXiangongIDDict[tID] = xiangongID
        IpyGameDataPY.SetConfigEx("TitleXiangongID", TitleXiangongIDDict)
        GameWorld.Log("加载称号ID对应仙宫ID: %s" % TitleXiangongIDDict)
    return TitleXiangongIDDict.get(titleID, 0)
def AddXiangongPlayer(xiangongID, playerID, serverIDList, rank=None, syncDict=None):
    ## 添加新晋仙官玩家
    if not xiangongID:
@@ -85,11 +138,19 @@
        paramList = [rank, titleID, addQiyun]
        PlayerCompensation.SendMailByKey(ipyData.GetMailKey(), [playerID], addItemList, paramList, crossMail=True)
        
    # 同步激活膜拜
    worshipType = ipyData.GetWorshipType()
    worshipValue = ipyData.GetWorshipValue()
    if worshipType:
        GameWorship.AddWorshipPlayer(worshipType, worshipValue, playerID, serverIDList)
    if isinstance(syncDict, dict):
        if xiangongID not in syncDict:
            syncDict[xiangongID] = []
        newRecDataList = syncDict[xiangongID]
        newRecDataList.append(recData)
    else:
        SendNewXiangongPlayerToClientServer({xiangongID:[recData]})
    return
def SendNewXiangongPlayerToClientServer(syncDict):