| | |
| | | #"""Version = 2024-09-04 16:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorship
|
| | | import ShareDefine
|
| | | import PyDataManager
|
| | | import NetPackCommon
|
| | |
| | | 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:
|
| | |
| | | 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):
|