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/Script/Player/PlayerControl.py | 64 ++++++++++++++++++++++++++++++++ 1 files changed, 64 insertions(+), 0 deletions(-) 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