From 02a9f1326fd99fc60ee14c70bb55d714803607f0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 08 七月 2019 15:25:56 +0800
Subject: [PATCH] 4438 【主干】【2.0.200】打boss状态下发起匹配可以进入跨服,回来后归属不会清,boss不会回血
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 44 +++++++++++++++++++++++++++++---------------
1 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
index 400fcdd..5b1da6b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
@@ -48,6 +48,7 @@
import PlayerGeTui
import IPY_GameServer
import CrossBoss
+import PlayerFB
import time
@@ -102,12 +103,12 @@
if bossID <= 0:
return
- bossID, killPlayerName, hurtValue, isNotify, realMapID, dataMapID, copyMapID, killerIDList = msgList
+ bossID, killPlayerName, hurtValue, isNotify, mapID, realMapID, copyMapID, killerIDList = msgList
+ mapID = PlayerFB.GetRecordMapID(mapID)
if GameWorld.IsCrossServer():
- CrossBoss.DoCrossBossOnKilled(bossID, killPlayerName, realMapID, dataMapID, copyMapID, killerIDList)
+ CrossBoss.DoCrossBossOnKilled(bossID, killPlayerName, mapID, realMapID, copyMapID, killerIDList)
return
- mapID = dataMapID
isAddKillCnt = False
isMapNeedShunt = IsMapNeedBossShunt(mapID)
@@ -158,13 +159,14 @@
## 世界boss状态变更
if len(msgList) <= 0:
return
-
- bossID, isAlive, dataMapID, realMapID, copyMapID = msgList
+
+ bossID, isAlive, mapID, realMapID, copyMapID = msgList
+ mapID = PlayerFB.GetRecordMapID(mapID)
if GameWorld.IsCrossServer():
- CrossBoss.DoCrossBossStateChange(bossID, isAlive, dataMapID, realMapID, copyMapID)
+ CrossBoss.DoCrossBossStateChange(bossID, isAlive, mapID, realMapID, copyMapID)
return
- mapID, lineID = dataMapID, copyMapID
+ lineID = copyMapID
GameWorld.Log("世界boss状态变更: mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%s" % (mapID, lineID, bossID, isAlive, tick))
if bossID <= 0:
@@ -321,7 +323,19 @@
def OnQueryBossInfo(index, clientData, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
bossIDList = clientData.BossIDList
- Sync_BossInfo(curPlayer, bossIDList)
+ if not bossIDList:
+ Sync_BossInfo(curPlayer)
+ CrossBoss.Sync_CrossBossInfo(curPlayer)
+ return
+ bossID = bossIDList[0]
+ ipyData = IpyGameDataPY.GetIpyGameData('BOSSInfo', bossID)
+ if not ipyData:
+ return
+ mapID = ipyData.GetMapID()
+ if mapID in ChConfig.Def_CrossMapIDList:
+ CrossBoss.Sync_CrossBossInfo(curPlayer, bossIDList)
+ else:
+ Sync_BossInfo(curPlayer, bossIDList)
return
@@ -534,9 +548,9 @@
def OnKillBossDropGoodItem(msgList, tick):
# playerName, mapID, npcID, itemID, userData
- if len(msgList) != 8:
+ if len(msgList) != 10:
return
- playerID, killerName, mapID, npcID, itemID, userData, weightValue, serverGroupID = msgList
+ playerID, killerName, mapID, lineID, npcID, itemID, userData, weightValue, serverGroupID, playerLV = msgList
GameWorld.DebugLog("击杀Boss掉落好物品: mapID=%s,npcID=%s,killerName=%s,itemID=%s, userData=%s, weightValue=%s, serverGroupID=%s"
% (mapID, npcID, killerName, itemID, userData, weightValue, serverGroupID))
maxRecordCnt = IpyGameDataPY.GetFuncCfg('DropRecordNum')
@@ -547,7 +561,7 @@
# 同步到玩家对应子服
if not serverGroupID:
return
- zoneIpyData = CrossRealmPlayer.GetCrossCommZoneIpyDataByServerGroupID(serverGroupID)
+ zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID)
if not zoneIpyData:
return
serverGroupIDList = zoneIpyData.GetServerGroupIDList()
@@ -581,10 +595,10 @@
if commonList and commonList[0][0] != -1:
recordList.Delete(commonList[0][0])
- PlayerUniversalGameRec.MapServer_UniversalGameRec(None, recType, [mapID, npcID, itemID, playerID, weightValue],
- [killerName, "", userData])
+ PlayerUniversalGameRec.MapServer_UniversalGameRec(None, recType, [mapID*100+lineID, npcID, itemID, playerID, weightValue],
+ [killerName, '%s|%s'%(serverGroupID, playerLV), userData])
- msgList = [killerName, playerID, mapID, npcID, itemID, userData]
+ msgList = [killerName, playerID, mapID, npcID, itemID, userData, serverGroupID, playerLV, lineID]
PlayerControl.WorldNotify(0, 'DropRecord' , msgList)
return
@@ -663,7 +677,7 @@
def SetBossRefreshTime(bossid, killedTime):
'''设置boss刷新时间'''
- ipyData = IpyGameDataPY.GetIpyGameData('BOSSInfo', bossid)
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('BOSSInfo', bossid)
if not ipyData:
return
onlineCnt = __GetBossOnlineHeroCnt(bossid)[0]
--
Gitblit v1.8.0