From 5e61894a64722113becded150304a49acbaa2e02 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 09 十月 2022 16:26:23 +0800
Subject: [PATCH] 9687 【后端】【越南】【主干】【BT7】野外根据境界动态刷怪(冲突)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 6 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 64 ++++++++++++++++++++++++++++++++
2 files changed, 69 insertions(+), 1 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index b868ea6..a203507 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -414,7 +414,7 @@
Writer = hxp
Releaser = hxp
RegType = 0
-RegisterPackCount = 22
+RegisterPackCount = 23
PacketCMD_1 = 0xA5
PacketSubCMD_1 = 0x04
@@ -504,6 +504,10 @@
PacketSubCMD_22=0x0E
PacketCallFunc_22=OnRoleLostHP
+PacketCMD_23=0xA2
+PacketSubCMD_23=0x35
+PacketCallFunc_23=OnSelectRealmDifficulty
+
;购买相关的
[BuySomething]
ScriptName = Event\EventSrc\Operate_PlayerBuyZhenQi.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index ee57059..af9dcb2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1335,6 +1335,10 @@
PyGameData.g_playerEquipPartAttrDict.pop(playerID, None)
PyGameData.g_equipChangeClassLVInfo.pop(playerID, None)
NPCCommon.ClearPriWoodPile(curPlayer)
+ #移除地图缓存的境界难度玩家ID信息
+ for playerIDList in PyGameData.g_realmDiffPlayerDict.values():
+ if playerID in playerIDList:
+ playerIDList.remove(playerID)
return
##更新保存玩家在线时间
@@ -6274,6 +6278,59 @@
curPlayer.SetExAttr16(indexList[tempList.index(max(tempList))])
+# 境界难度等级
+def GetRealmDifficulty(curPlayer): return curPlayer.GetExAttr18()
+def SetRealmDifficulty(curPlayer, realmDifficulty):
+ ''' 设置境界难度等级,任何地图均可选择
+ '''
+ playerID = curPlayer.GetPlayerID()
+
+ if realmDifficulty:
+ needRealmLV = GetDifficultyRealmLV(realmDifficulty)
+ curRealmLV = curPlayer.GetOfficialRank()
+ if curRealmLV < needRealmLV:
+ GameWorld.DebugLog("当前境界低于境界难度,无法选择! curRealmLV(%s) < %s" % (curRealmLV, needRealmLV), playerID)
+ return
+
+ difficultyRealmList = IpyGameDataPY.GetFuncEvalCfg("RealmDifficulty", 2)
+ if needRealmLV not in difficultyRealmList:
+ GameWorld.ErrLog("realmDifficulty(%s) needRealmLV(%s) not in difficultyRealmList(%s)"
+ % (realmDifficulty, needRealmLV, difficultyRealmList), playerID)
+ return
+
+ GameWorld.DebugLog("SetRealmDifficulty: realmDifficulty=%s" % realmDifficulty, playerID)
+ realmMapIDList = IpyGameDataPY.GetFuncEvalCfg("RealmDifficulty", 1)
+ mapID = curPlayer.GetMapID()
+ if mapID in realmMapIDList:
+ # 先移除之前选的难度
+ for playerIDList in PyGameData.g_realmDiffPlayerDict.values():
+ if playerID in playerIDList:
+ playerIDList.remove(playerID)
+
+ # 加入新难度,0难度不处理
+ if realmDifficulty:
+ if realmDifficulty not in PyGameData.g_realmDiffPlayerDict:
+ PyGameData.g_realmDiffPlayerDict[realmDifficulty] = []
+ playerIDList = PyGameData.g_realmDiffPlayerDict[realmDifficulty]
+ if playerID not in playerIDList:
+ playerIDList.append(playerID)
+
+ curPlayer.SetExAttr18(realmDifficulty)
+ SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ExAttr18, realmDifficulty)
+ SetPlayerSightLevel(curPlayer, realmDifficulty)
+ return
+def GetDifficultyRealmLV(realmDifficulty): return realmDifficulty - 100
+def GetMapRealmDifficulty(curPlayer):
+ ## 获取玩家在本地图中的境界难度层级,必须在境界地图且有选择境界难度才算,否则为默认0;该难度值同时也是视野层级
+ realmDifficulty = GetRealmDifficulty(curPlayer)
+ if not realmDifficulty:
+ return 0
+ mapID = curPlayer.GetMapID()
+ realmMapIDList = IpyGameDataPY.GetFuncEvalCfg("RealmDifficulty", 1)
+ if mapID not in realmMapIDList:
+ return 0
+ return realmDifficulty
+
##获得玩家威望值
def GetPrestige(curPlayer): return 0
def SetPrestige(curPlayer, value): return
@@ -7372,6 +7429,13 @@
#同步设置 玩家和宠物及已召唤的召唤兽 视野层
def SetPlayerSightLevel(curPlayer, sightLevel):
+ # 当视野设置0时,在境界地图则自动设置已选择的境界难度视野
+ if sightLevel == 0:
+ realmDifficulty = GetMapRealmDifficulty(curPlayer)
+ if realmDifficulty:
+ sightLevel = realmDifficulty
+ GameWorld.DebugLog("境界地图自动设置已选择的境界难度视野: sightLevel=%s" % sightLevel)
+
curPlayer.SetSightLevel(sightLevel)
rolePet = curPlayer.GetPetMgr().GetFightPet()
#无出战宠物
--
Gitblit v1.8.0