From db6559bba9fef7a33f6f6e68863ca30eb428df68 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 16 四月 2025 14:50:43 +0800 Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(奖励增加支持仙官;优化称号、仙官、膜拜关联逻辑及配置;支持物品激活仙盟徽章;C026C028增加Job信息;) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameXiangong.py | 61 ++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameXiangong.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameXiangong.py index 05f33e9..bab8d80 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameXiangong.py +++ b/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): -- Gitblit v1.8.0