From e9accced5c6bbdd5874d011e8649d83d43649698 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 17 二月 2025 18:07:29 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【砍树】【GM】后端支持NPC仿真实玩家战斗和快速战斗(修复镜像移动bug;)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py | 30 ++++++++++++++++++++++++------
1 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py
index 3d1480f..baaae80 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py
@@ -90,6 +90,7 @@
value4 已分配到的连胜次数
value5 终结连胜的奖励次数, 只能获得这一次的连胜奖励,有值才显示,分配后设置为0, 优先分配
strValue1 仙盟名
+strValue2 仙盟徽章
'''
def GetFWChampionFamilyID(championRecData): return championRecData.GetValue1()
def SetFWChampionFamilyID(championRecData, familyID): return championRecData.SetValue1(familyID)
@@ -103,6 +104,7 @@
def SetFWChampionEndWinCount(championRecData, endWinCount): return championRecData.SetValue5(endWinCount)
def GetFWChampionFamilyName(championRecData): return championRecData.GetStrValue1()
def SetFWChampionFamilyName(championRecData, familyName): return championRecData.SetStrValue1(familyName)
+def SetFWChampionFamilyEmblemID(championRecData, emblemID): return championRecData.SetStrValue2(str(emblemID))
''' 参赛人员 Def_UniversalGameRecType_FamilyWarMember
value1 玩家ID
@@ -420,7 +422,9 @@
PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_AllOver, 0) # 新一轮开始,重置状态
PlayerFamily.DoFamilySort() # 首轮分组前需要强制刷新一次仙盟排行
- lastFamilyWarMemDict = copy.deepcopy(PyGameData.g_familyWarMemDict)
+ lastFamilyWarMemDict = {}
+ for warPlayerID, recData in PyGameData.g_familyWarMemDict.items():
+ lastFamilyWarMemDict[warPlayerID] = GetFWMemFamilyID(recData)
PyGameData.g_familyWarMemDict = {}
PyGameData.g_familyWarFamilyIDList = []
universalRecMgr = GameWorld.GetUniversalRecMgr()
@@ -988,6 +992,7 @@
championFamilyName = family.GetName()
SetFWChampionLeaderID(championRecData, family.GetLeaderID())
SetFWChampionFamilyName(championRecData, championFamilyName)
+ SetFWChampionFamilyEmblemID(championRecData, PlayerFamily.GetFamilyEmblemID(family))
else:
GameWorld.Log(" 冠军仙盟不存在或已经解散了!")
@@ -1063,21 +1068,34 @@
## 给仙盟排名仙盟拍品奖励
warWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_StartWorldLV)
- GameWorld.Log("发放排名仙盟拍品奖励: warWorldLV=%s, familyWarIDRankList=%s" % (warWorldLV, familyWarIDRankList))
-
- cfgRankKey = 1
- cfgRankAuctionItemDict = {}
+ rewardWorldLV = 0
ipyDataMgr = IpyGameDataPY.IPY_Data()
for index in xrange(ipyDataMgr.GetFamilyWarRankAwardCount()):
ipyData = ipyDataMgr.GetFamilyWarRankAwardByIndex(index)
- if warWorldLV > ipyData.GetWarWorldLV() and cfgRankAuctionItemDict:
+ cfgWorldLV = ipyData.GetWarWorldLV()
+ if warWorldLV <= cfgWorldLV:
+ rewardWorldLV = cfgWorldLV
break
+ elif warWorldLV > cfgWorldLV:
+ rewardWorldLV = cfgWorldLV
+ GameWorld.Log("发放排名仙盟拍品奖励: warWorldLV=%s, rewardWorldLV=%s, familyWarIDRankList=%s" % (warWorldLV, rewardWorldLV, familyWarIDRankList))
+
+ rewardIpyDataList = IpyGameDataPY.GetIpyGameDataList("FamilyWarRankAward", rewardWorldLV)
+ if not rewardIpyDataList:
+ GameWorld.ErrLog("找不到仙盟排名对应世界等级奖励!")
+ return
+
+ cfgRankKey = 1
+ cfgRankAuctionItemDict = {}
+ for ipyData in rewardIpyDataList:
warRank = ipyData.GetWarRank()
auctionItemList = ipyData.GetRankAuctionItem()
for rank in range(cfgRankKey, warRank + 1):
cfgRankAuctionItemDict[rank] = auctionItemList
cfgRankKey = warRank + 1
+ GameWorld.Log("对应世界等级奖励: rewardWorldLV=%s, %s" % (rewardWorldLV, cfgRankAuctionItemDict))
+
familyAuctionItemDict = {} # {仙盟ID:[[享受收益的成员ID, ...], [[拍品ID,个数], [拍品ID,个数,是否拍品], ...]], ...}
for rank, familyID in enumerate(familyWarIDRankList, 1):
if rank not in cfgRankAuctionItemDict:
--
Gitblit v1.8.0