From 752de87a70503c2be26eae7ab554b0c3caa2efc0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 13 一月 2025 15:53:05 +0800
Subject: [PATCH] 10334 【越南】【英语】【BT】【砍树】境界修改-服务端
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFreePoint.py | 34 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 101 +++++-
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 101 +++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddLV.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py | 462 ++++++++++++++++++++--------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py | 22 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py | 65 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py | 44 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 55 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 2
PySysDB/PySysDBPY.h | 17
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 22 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 4
15 files changed, 694 insertions(+), 246 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 050daa1..057d032 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -132,13 +132,9 @@
{
WORD _Lv; //境界等级
BYTE LvLarge; //大境界
- DWORD NeedLV; //需要等级
- DWORD NeedItemID; //需要道具ID
- WORD NeedItemCnt; //消耗的道具数量
- list NeedEquip; //需要8部位装备条件阶级|品质|是否套装
+ DWORD LVMax; //等级上限
list AddAttrType; //境界加成属性类型
list AddAttrNum; //境界加成属性值
- DWORD BossID; //渡劫bossid
DWORD BuffID; //给全服在线玩家增加buff
DWORD ExpRate; //修为池经验速率
DWORD ExpLimit; //修为池经验上限
@@ -146,6 +142,17 @@
BYTE AddFreePoint; //增加自由属性点
};
+//境界进阶任务表
+
+struct tagRealmLVUPTask
+{
+ WORD _Lv; //境界等级
+ BYTE TaskID; //任务ID
+ BYTE TaskType; //任务类型
+ list NeedValueList; //所需值列表
+ list AwardItemList; //奖励物品列表
+};
+
//境界塔表
struct tagRealmTower
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index b41e0ae..f3b397e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -28328,19 +28328,15 @@
#------------------------------------------------------
# A3 11 通知玩家境界信息 #tagMCSyncRealmInfo
-class tagMCSyncRealmInfo(Structure):
+class tagMCSyncRealmTask(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("IsPass", c_ubyte), #是否通关副本
- ("XXZLAwardState", c_int), #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
+ ("TaskID", c_ubyte),
+ ("TaskValue", c_int),
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x11
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -28349,36 +28345,99 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x11
- self.IsPass = 0
- self.XXZLAwardState = 0
+ self.TaskID = 0
+ self.TaskValue = 0
return
def GetLength(self):
- return sizeof(tagMCSyncRealmInfo)
+ return sizeof(tagMCSyncRealmTask)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
- Cmd:%s,
- SubCmd:%s,
- IsPass:%d,
- XXZLAwardState:%d
+ TaskID:%d,
+ TaskValue:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.IsPass,
- self.XXZLAwardState
+ self.TaskID,
+ self.TaskValue
+ )
+ return DumpString
+
+
+class tagMCSyncRealmInfo(Structure):
+ Head = tagHead()
+ TaskAwardState = 0 #(DWORD TaskAwardState)//进阶任务领奖状态;按任务ID二进制位存储是否已领取
+ TaskValueCount = 0 #(BYTE TaskValueCount)
+ TaskValueList = list() #(vector<tagMCSyncRealmTask> TaskValueList)//进阶任务值列表,仅有需要记录的任务才会通知
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TaskAwardState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TaskValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TaskValueCount):
+ temTaskValueList = tagMCSyncRealmTask()
+ _pos = temTaskValueList.ReadData(_lpData, _pos)
+ self.TaskValueList.append(temTaskValueList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x11
+ self.TaskAwardState = 0
+ self.TaskValueCount = 0
+ self.TaskValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.TaskValueCount):
+ length += self.TaskValueList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.TaskAwardState)
+ data = CommFunc.WriteBYTE(data, self.TaskValueCount)
+ for i in range(self.TaskValueCount):
+ data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TaskAwardState:%d,
+ TaskValueCount:%d,
+ TaskValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TaskAwardState,
+ self.TaskValueCount,
+ "..."
)
return DumpString
m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Head.Cmd,m_NAtagMCSyncRealmInfo.Head.SubCmd))] = m_NAtagMCSyncRealmInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 15beab1..fabb19b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4409,8 +4409,10 @@
Def_PDict_FeastRedPacketCanGrabCnt = "FeastRedPacketCanGrabCnt" # 节日红包可抢次数
#境界
+Def_PDict_RealmVersionState = "RealmVersionState" #境界版本调整记录状态值
+Def_PDict_RealmTaskAwardState = "RealmTaskAwardState" #境界渡劫条件领奖状态,按二进制位存储是否已领取
+Def_PDict_RealmTaskValue = "RealmTaskValue_%s" #境界渡劫任务需要记录值,参数(任务ID)
Def_PDict_RealmXXZLAward = "RealmXXZLAward" #境界修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
-Def_PDict_RealmFBIsOpen = "RealmFBIsOpen" #渡劫副本是否开启 0未开启 1已开启 2可升级境界
Def_PDict_RealmFBAttrAdd = "RealmFBAttrAdd_%s" #渡劫副本属性加成 参数属性ID
Def_PDict_RealmExp = "RealmExp" #境界修为池总经验
Def_PDict_RealmExpPoint = "RealmExpPoint" #境界修为池总经验点
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index b41e0ae..f3b397e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -28328,19 +28328,15 @@
#------------------------------------------------------
# A3 11 通知玩家境界信息 #tagMCSyncRealmInfo
-class tagMCSyncRealmInfo(Structure):
+class tagMCSyncRealmTask(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("IsPass", c_ubyte), #是否通关副本
- ("XXZLAwardState", c_int), #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
+ ("TaskID", c_ubyte),
+ ("TaskValue", c_int),
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0x11
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -28349,36 +28345,99 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0x11
- self.IsPass = 0
- self.XXZLAwardState = 0
+ self.TaskID = 0
+ self.TaskValue = 0
return
def GetLength(self):
- return sizeof(tagMCSyncRealmInfo)
+ return sizeof(tagMCSyncRealmTask)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
- Cmd:%s,
- SubCmd:%s,
- IsPass:%d,
- XXZLAwardState:%d
+ TaskID:%d,
+ TaskValue:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
- self.IsPass,
- self.XXZLAwardState
+ self.TaskID,
+ self.TaskValue
+ )
+ return DumpString
+
+
+class tagMCSyncRealmInfo(Structure):
+ Head = tagHead()
+ TaskAwardState = 0 #(DWORD TaskAwardState)//进阶任务领奖状态;按任务ID二进制位存储是否已领取
+ TaskValueCount = 0 #(BYTE TaskValueCount)
+ TaskValueList = list() #(vector<tagMCSyncRealmTask> TaskValueList)//进阶任务值列表,仅有需要记录的任务才会通知
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x11
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TaskAwardState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TaskValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TaskValueCount):
+ temTaskValueList = tagMCSyncRealmTask()
+ _pos = temTaskValueList.ReadData(_lpData, _pos)
+ self.TaskValueList.append(temTaskValueList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x11
+ self.TaskAwardState = 0
+ self.TaskValueCount = 0
+ self.TaskValueList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.TaskValueCount):
+ length += self.TaskValueList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.TaskAwardState)
+ data = CommFunc.WriteBYTE(data, self.TaskValueCount)
+ for i in range(self.TaskValueCount):
+ data = CommFunc.WriteString(data, self.TaskValueList[i].GetLength(), self.TaskValueList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TaskAwardState:%d,
+ TaskValueCount:%d,
+ TaskValueList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TaskAwardState,
+ self.TaskValueCount,
+ "..."
)
return DumpString
m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Head.Cmd,m_NAtagMCSyncRealmInfo.Head.SubCmd))] = m_NAtagMCSyncRealmInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py
index a4e077a..ee9a05c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/RealmLVUP.py
@@ -17,6 +17,10 @@
import GameWorld
import PlayerPrestigeSys
+import IpyGameDataPY
+import PlayerControl
+import PlayerGubao
+import ChConfig
## 逻辑实现
@@ -24,10 +28,59 @@
# @param cmdList 参数列表
# @return None
def OnExec(curPlayer, cmdList):
- isOK = PlayerPrestigeSys.DoRealmLVUpLogic(curPlayer)
- curRealmLV = curPlayer.GetOfficialRank()
- if isOK:
- GameWorld.DebugAnswer(curPlayer, "提升境界成功!GetOfficialRank=%s" % curRealmLV)
- else:
- GameWorld.DebugAnswer(curPlayer, "提升境界失败!GetOfficialRank=%s" % curRealmLV)
+ if not cmdList:
+ GameWorld.DebugAnswer(curPlayer, "------------ %s" % GameWorld.GetCurrentDataTimeStr())
+ GameWorld.DebugAnswer(curPlayer, "重置境界阶级: RealmLVUP 0 [重置改版标记]")
+ GameWorld.DebugAnswer(curPlayer, "执行境界升阶: RealmLVUP 1 [次数]")
+ GameWorld.DebugAnswer(curPlayer, "设置境界任务: RealmLVUP t 任务ID 进度值")
+ GameWorld.DebugAnswer(curPlayer, "注:可设置进度的任务类型:%s" % PlayerPrestigeSys.NeedTaskValueTypeList)
+ GameWorld.DebugAnswer(curPlayer, "设置境界塔层: RealmTower")
+ GameWorld.DebugAnswer(curPlayer, "设置天星塔层: SetSkyTower")
+ GameWorld.DebugAnswer(curPlayer, "设置境界等级: SetOfficalRank 境界等级")
+ GameWorld.DebugAnswer(curPlayer, "注:直接设置境界等级不会触发境界其他额外效果")
+ return
+
+ value = cmdList[0]
+ if value == 0:
+ reVersionState = cmdList[1] if len(cmdList) > 1 else 0
+ curPlayer.SetOfficialRank(0)
+ curPlayer.SetFreePoint(0)
+ GameWorld.DebugAnswer(curPlayer, "重置境界!")
+ GameWorld.DebugAnswer(curPlayer, "重置灵根点!")
+ effType = PlayerGubao.GubaoEffType_RealmLVAddLinggen
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetGubaoCount()):
+ ipyData = ipyDataMgr.GetGubaoByIndex(index)
+ gubaoID = ipyData.GetGubaoID()
+ addFreePointAlready = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
+ if not addFreePointAlready:
+ continue
+ GameWorld.DebugAnswer(curPlayer, "重置古宝(%s)效果(%s)增加灵根点:%s" % (gubaoID, effType, addFreePointAlready))
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0)
+ PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, force=True)
+ GameWorld.DebugAnswer(curPlayer, "重置境界OK")
+ if reVersionState:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmVersionState, 0)
+ GameWorld.DebugAnswer(curPlayer, "重置改版标记,重登会执行重置境界逻辑!")
+ return
+ if value == 1:
+ doCount = cmdList[1] if len(cmdList) > 1 else 1
+ okCnt = 0
+ for _ in range(doCount):
+ if PlayerPrestigeSys.DoRealmLVUpLogic(curPlayer):
+ okCnt += 1
+ else:
+ break
+ curRealmLV = curPlayer.GetOfficialRank()
+ if okCnt:
+ GameWorld.DebugAnswer(curPlayer, "提升境界成功!GetOfficialRank=%s" % curRealmLV)
+ else:
+ GameWorld.DebugAnswer(curPlayer, "提升境界失败!GetOfficialRank=%s" % curRealmLV)
+ elif value == "t":
+ taskID = cmdList[1] if len(cmdList) > 1 else 0
+ taskValue = cmdList[2] if len(cmdList) > 2 else 0
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskValue % taskID, taskValue)
+ PlayerPrestigeSys.SyncRealmFBState(curPlayer, taskIDList=[taskID])
+ GameWorld.DebugAnswer(curPlayer, "设置任务ID:%s,进度值:%s" % (taskID, taskValue))
+
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFreePoint.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFreePoint.py
index 7194515..57c637e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFreePoint.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetFreePoint.py
@@ -15,19 +15,39 @@
import OpenServerCampaign
import GameWorld
-import Lang
+import PlayerControl
+import IpyGameDataPY
+import ChPlayer
+import ChConfig
+
## GM命令执行入口
# @param curPlayer 当前玩家
# @param playerList 参数列表 [pointCount]
# @return None
# @remarks 函数详细说明.
-def OnExec(curPlayer,playerList):
- if len(playerList) != 1:
- #参数不正确
- GameWorld.DebugAnswer(curPlayer, Lang.GBText("参数不正确"))
+def OnExec(curPlayer, paramList):
+ if not paramList:
+ GameWorld.DebugAnswer(curPlayer, "设置灵根点: SetFreePoint 自由点 [五行加点数]")
return
- #获取 指定帐号<玩家ID>的未分配点数<未分配点数>
- curPlayer.SetFreePoint(playerList[0])
+ value = paramList[0]
+ curPlayer.SetFreePoint(value)
+ GameWorld.DebugAnswer(curPlayer, "设置自由点: %s" % value)
# 更新开服活动灵根数据
OpenServerCampaign.UpdOpenServerCampaignLingGenData(curPlayer)
+
+ if len(paramList) > 1:
+ setPoint = paramList[1]
+ vIndex = 0
+ setAddPointList = []
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetRolePointCount()):
+ vIndex += 1
+ attrID = ipyDataMgr.GetRolePointByIndex(index).GetAttrID()
+ setPoint = paramList[vIndex] if len(paramList) > vIndex else setPoint
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AddPointValue % attrID, setPoint)
+ setAddPointList.append(setPoint)
+ GameWorld.DebugAnswer(curPlayer, "设置五行点: %s" % setAddPointList)
+ ChPlayer.NotifyPlayerBasePoint(curPlayer)
+ playerControl = PlayerControl.PlayerControl(curPlayer)
+ playerControl.RefreshPlayerAttrState()
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
index c246b0f..21958a9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/FBCommon.py
@@ -165,6 +165,28 @@
return
return dayStr in PyGameData.FBOpenTimeRecord[dataMapID]
+def IsFBPass(curPlayer, mapID, lineID):
+ ## 副本线路是否已过关
+ passLineID = 0
+ if mapID == ChConfig.Def_FBMapID_RealmTower:
+ passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_RealmTowerFloor)
+ elif mapID == ChConfig.Def_FBMapID_SkyTower:
+ passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor)
+ elif mapID == ChConfig.Def_FBMapID_TrialTower:
+ passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
+ else:
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('FBGeneralTrain', mapID, lineID)
+ if ipyData:
+ passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
+ else:
+ grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID])
+ if grade:
+ return True
+
+ if passLineID >= lineID:
+ return True
+
+ return False
def CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData, reqEnterCnt=1, isNotify=True, isTeamAsk=False):
# 可否进入副本通用检查, 扫荡通用
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py
index b50fa1c..98b6123 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_DuJie.py
@@ -61,13 +61,25 @@
lineID = 1 if FBCommon.GetFBPropertyMark() else 0
return FBCommon.GetFBLineStepTime(ChConfig.Def_FBMapID_DuJie, lineID)
-def GetDuJieBossID():
- realmLV = GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_RealmLV)
- realmIpyData = PlayerPrestigeSys.GetRealmIpyData(realmLV)
- if not realmIpyData:
- GameWorld.ErrLog("没有该境界等级数据! Lv=%s" % realmLV)
+def GetDuJieBossID(curPlayer=None):
+ if curPlayer:
+ realmLV = curPlayer.GetOfficialRank()
+ else:
+ realmLV = GameWorld.GetGameFB().GetGameFBDictByKey(DuJieFB_RealmLV)
+ taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", realmLV)
+ if not taskIpyDataList:
return
- return realmIpyData.GetBossID()
+ for taskIpyData in taskIpyDataList:
+ if taskIpyData.GetTaskType() != PlayerPrestigeSys.RealmTaskType_Dujie:
+ continue
+ taskID = taskIpyData.GetTaskID()
+ if curPlayer:
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID):
+ GameWorld.DebugLog("玩家渡劫boss已完成击杀! realmLV=%s,taskID=%s" % (realmLV, taskID), curPlayer.GetPlayerID())
+ return
+ valueList = taskIpyData.GetNeedValueList()
+ return valueList[0] if valueList else 0
+ return
#---FB接口----------
##副本初始化
@@ -128,21 +140,11 @@
GameWorld.DebugLog("爵位境界功能未开启, 无法开启渡劫!curLV=%s" % curPlayer.GetLV())
return False
if lineID == 0 or curPlayer.GetTeamLV() == IPY_GameWorld.tmlLeader or (lineID == 1 and curPlayer.GetTeamID() == 0):
- curRealmLV = curPlayer.GetOfficialRank()
- realmIpyData = PlayerPrestigeSys.GetRealmIpyData(curRealmLV)
- if not realmIpyData:
- GameWorld.ErrLog("没有该境界等级数据! Lv=%s" % curRealmLV)
+ bossID = GetDuJieBossID(curPlayer)
+ if not bossID:
+ GameWorld.ErrLog("没有可挑战的渡劫boss或已完成: realmLV=%s" % curPlayer.GetOfficialRank(), curPlayer.GetPlayerID())
return False
- needLV = realmIpyData.GetNeedLV()
- if not needLV:
- GameWorld.DebugLog("境界已是最大等级,不能升级! Lv=%s" % curRealmLV, curPlayer.GetPlayerID())
- return False
- if curPlayer.GetLV() < needLV:
- GameWorld.DebugLog("等级不足,无法开启渡劫!needRealmPoint=%s" % (needLV), curPlayer.GetPlayerID())
- return False
- if not realmIpyData.GetBossID():
- return False
-
+
return True
@@ -409,7 +411,7 @@
if isPass and leaderPlayer:
if curPlayer.GetPlayerID() == leaderPlayerID:
#渡劫通过处理
- PlayerPrestigeSys.DologicDujieFBPass(curPlayer, realmLV, curStar)
+ PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_Dujie, 1)
#清除CD
FBCommon.SetFBPDictValue(curPlayer, ChConfig.Def_PDict_LastEnterFBTick % ChConfig.Def_FBMapID_DuJie, 0)
FBCommon.SyncFBEnterTick(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 1a73dd1..40f9520 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -131,18 +131,22 @@
"Realm":(
("WORD", "Lv", 1),
("BYTE", "LvLarge", 0),
- ("DWORD", "NeedLV", 0),
- ("DWORD", "NeedItemID", 0),
- ("WORD", "NeedItemCnt", 0),
- ("list", "NeedEquip", 0),
+ ("DWORD", "LVMax", 0),
("list", "AddAttrType", 0),
("list", "AddAttrNum", 0),
- ("DWORD", "BossID", 0),
("DWORD", "BuffID", 0),
("DWORD", "ExpRate", 0),
("DWORD", "ExpLimit", 0),
("dict", "LearnSkillIDInfo", 0),
("BYTE", "AddFreePoint", 0),
+ ),
+
+ "RealmLVUPTask":(
+ ("WORD", "Lv", 1),
+ ("BYTE", "TaskID", 0),
+ ("BYTE", "TaskType", 0),
+ ("list", "NeedValueList", 0),
+ ("list", "AwardItemList", 0),
),
"RealmTower":(
@@ -2727,18 +2731,27 @@
def GetLv(self): return self.attrTuple[0] # 境界等级 WORD
def GetLvLarge(self): return self.attrTuple[1] # 大境界 BYTE
- def GetNeedLV(self): return self.attrTuple[2] # 需要等级 DWORD
- def GetNeedItemID(self): return self.attrTuple[3] # 需要道具ID DWORD
- def GetNeedItemCnt(self): return self.attrTuple[4] # 消耗的道具数量 WORD
- def GetNeedEquip(self): return self.attrTuple[5] # 需要8部位装备条件阶级|品质|是否套装 list
- def GetAddAttrType(self): return self.attrTuple[6] # 境界加成属性类型 list
- def GetAddAttrNum(self): return self.attrTuple[7] # 境界加成属性值 list
- def GetBossID(self): return self.attrTuple[8] # 渡劫bossid DWORD
- def GetBuffID(self): return self.attrTuple[9] # 给全服在线玩家增加buff DWORD
- def GetExpRate(self): return self.attrTuple[10] # 修为池经验速率 DWORD
- def GetExpLimit(self): return self.attrTuple[11] # 修为池经验上限 DWORD
- def GetLearnSkillIDInfo(self): return self.attrTuple[12] # 学习技能ID信息 {"职业":[技能ID, ...], ...} dict
- def GetAddFreePoint(self): return self.attrTuple[13] # 增加自由属性点 BYTE
+ def GetLVMax(self): return self.attrTuple[2] # 等级上限 DWORD
+ def GetAddAttrType(self): return self.attrTuple[3] # 境界加成属性类型 list
+ def GetAddAttrNum(self): return self.attrTuple[4] # 境界加成属性值 list
+ def GetBuffID(self): return self.attrTuple[5] # 给全服在线玩家增加buff DWORD
+ def GetExpRate(self): return self.attrTuple[6] # 修为池经验速率 DWORD
+ def GetExpLimit(self): return self.attrTuple[7] # 修为池经验上限 DWORD
+ def GetLearnSkillIDInfo(self): return self.attrTuple[8] # 学习技能ID信息 {"职业":[技能ID, ...], ...} dict
+ def GetAddFreePoint(self): return self.attrTuple[9] # 增加自由属性点 BYTE
+
+# 境界进阶任务表
+class IPY_RealmLVUPTask():
+
+ def __init__(self):
+ self.attrTuple = None
+ return
+
+ def GetLv(self): return self.attrTuple[0] # 境界等级 WORD
+ def GetTaskID(self): return self.attrTuple[1] # 任务ID BYTE
+ def GetTaskType(self): return self.attrTuple[2] # 任务类型 BYTE
+ def GetNeedValueList(self): return self.attrTuple[3] # 所需值列表 list
+ def GetAwardItemList(self): return self.attrTuple[4] # 奖励物品列表 list
# 境界塔表
class IPY_RealmTower():
@@ -6478,6 +6491,7 @@
self.__LoadFileData("LingQiTrain", onlyCheck)
self.__LoadFileData("RealmXXZL", onlyCheck)
self.__LoadFileData("Realm", onlyCheck)
+ self.__LoadFileData("RealmLVUPTask", onlyCheck)
self.__LoadFileData("RealmTower", onlyCheck)
self.__LoadFileData("LianTi", onlyCheck)
self.__LoadFileData("GodWeapon", onlyCheck)
@@ -7021,6 +7035,13 @@
self.CheckLoadData("Realm")
return self.ipyRealmCache[index]
+ def GetRealmLVUPTaskCount(self):
+ self.CheckLoadData("RealmLVUPTask")
+ return self.ipyRealmLVUPTaskLen
+ def GetRealmLVUPTaskByIndex(self, index):
+ self.CheckLoadData("RealmLVUPTask")
+ return self.ipyRealmLVUPTaskCache[index]
+
def GetRealmTowerCount(self):
self.CheckLoadData("RealmTower")
return self.ipyRealmTowerLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddLV.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddLV.py
index 415ae9d..09b9113 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddLV.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_AddLV.py
@@ -62,7 +62,7 @@
curLV = curPlayer.GetLV()
isOnlyLVUp = lvLimit==0 or curLV < lvLimit #是否直接提升固定等级
- maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV") # 当前已开放的最大等级不一定大于下一次转生等级
+ maxLV = PlayerControl.GetPlayerMaxLV(curPlayer)
if isOnlyLVUp and curLV >= maxLV:
PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_607994")
GameWorld.Log('升级果实无法使用,已达到当前最大等级 curLV=%s,maxLV=%s'
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index e2e7772..a3a6aab 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -44,6 +44,7 @@
import PlayerActivity
import PlayerSuccess
import BossHurtMng
+import PlayerPrestigeSys
import GY_Query_BossFirstKill
import GameLogic_FamilyInvade
import GameLogic_GatherSoul
@@ -5194,6 +5195,7 @@
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillNPC)
PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
+ PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
if ChConfig.IsGameBoss(curNPC):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 191045c..2a7ccf5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -5723,6 +5723,9 @@
#境界修仙之路奖励
elif rewardType == ChConfig.Def_RewardType_RealmXXZL:
PlayerPrestigeSys.GetXXZLAward(curPlayer, dataEx)
+ #境界渡劫任务条件奖励
+ elif rewardType == ChConfig.Def_RewardType_RealmLVUpTask:
+ PlayerPrestigeSys.GetRealmLVUpTaskAward(curPlayer, dataEx)
#仙盟boss伤害奖励
elif rewardType == ChConfig.Def_RewardType_FamilyBossHurt:
GameLogic_FamilyBoss.GetFamilyBossHurtAward(curPlayer, dataEx, dataExStr)
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 743ac2a..6413109 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4194,7 +4194,7 @@
#curTotalExp = GetPlayerTotalExp(curPlayer)
curTotalExp = curPlayer.GetExpPoint() * ChConfig.Def_PerPointValue + curPlayer.GetTotalExp()
- maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1)
+ maxLV = GetPlayerMaxLV(curPlayer)
maxLVExpStore = IpyGameDataPY.GetFuncCfg("MaxLVExpStore", 1)
curLV = curPlayer.GetLV()
@@ -4204,10 +4204,10 @@
# GameWorld.DebugLog("经验已满!需先转生!curLV=%s,reinLV=%s" % (curLV, nextReinLV), curPlayer.GetPlayerID())
# return 0
- # 检查最大等级
- if curLV >= maxLV and curTotalExp >= maxLVExpStore:
+ # 检查最大等级,maxLVExpStore -1时不限累计经验上限
+ if curLV >= maxLV and curTotalExp >= maxLVExpStore and maxLVExpStore != -1:
self.__NotifyExpFull(curPlayer, "GeRen_admin_825676")
- #GameWorld.DebugLog("经验已满!已满级!curLV=%s" % (curLV), curPlayer.GetPlayerID())
+ GameWorld.DebugLog("经验已满!已满级!curLV=%s,maxLV=%s,curTotalExp=%s >= maxLVExpStore=%s" % (curLV, maxLV, curTotalExp, maxLVExpStore), curPlayer.GetPlayerID())
return 0, expViewType
# 杀怪
@@ -4255,7 +4255,7 @@
# 不可再升级时,增加后的经验不可超过最大可存储经验
#if curLV >= nextReinLV or curLV >= maxLV:
- if curLV >= maxLV:
+ if curLV >= maxLV and maxLVExpStore > 0:
addExp = min(addExp, max(0, maxLVExpStore - curTotalExp))
if addExp <= 0:
@@ -4356,7 +4356,7 @@
needSyncTalentPoint = False
playerNeedDoLVUp = False
curLV = curPlayer.GetLV()
- maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1)
+ maxLV = GetPlayerMaxLV(curPlayer)
curPlayer.BeginRefreshState()
#befXP = curPlayer.GetXP()
@@ -6828,6 +6828,16 @@
return 0
return lvIpyData.GetExpPoint() * ChConfig.Def_PerPointValue + lvIpyData.GetExp()
+def GetPlayerMaxLV(curPlayer):
+ ## 获取玩家实际可升的最大等级
+ maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1)
+ curRealmLV = curPlayer.GetOfficialRank()
+ realmIpyData = PlayerPrestigeSys.GetRealmIpyData(curRealmLV)
+ if not realmIpyData:
+ return 0
+ playerMaxLV = min(maxLV, realmIpyData.GetLVMax())
+ return playerMaxLV
+
## 获得玩家实际等级
# @param curPlayer 玩家
# @return 玩家实际等级
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
index 0968f60..2b664c9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGubao.py
@@ -60,6 +60,7 @@
]
# 古宝灵根点特殊效果列表
+GubaoEffType_RealmLVAddLinggen = 55 # 境界每级增加X点灵根
GubaoEffFreePointTypeList = [54, 55, 56]
# 需要记录EffValue的EffType列表
@@ -292,8 +293,8 @@
addFreePointAlready = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
unAddFreePoint = max(0, addFreePointTotal - addFreePointAlready)
unAddFreePointTotal += unAddFreePoint
- GameWorld.DebugLog("古宝星级增加灵根点: gubaoID=%s,star=%s,addFreePointTotal=%s,addFreePointAlready=%s,unAddFreePoint=%s,total=%s"
- % (gubaoID, star, addFreePointTotal, addFreePointAlready, unAddFreePoint, unAddFreePointTotal), playerID)
+ GameWorld.DebugLog("古宝星级增加灵根点: gubaoID=%s,star=%s,effType=%s,addFreePointTotal=%s,addFreePointAlready=%s,unAddFreePoint=%s,total=%s"
+ % (gubaoID, star, effType, addFreePointTotal, addFreePointAlready, unAddFreePoint, unAddFreePointTotal), playerID)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), addFreePointTotal)
if unAddFreePoint:
Sync_GubaoItemEffInfo(curPlayer, gubaoID, effType, True)
@@ -303,6 +304,7 @@
freePoint = curPlayer.GetFreePoint()
updFreePoint = freePoint + unAddFreePointTotal
curPlayer.SetFreePoint(updFreePoint)
+ GameWorld.DebugLog("古宝加点: freePoint=%s,freePoint=%s,freePoint=%s" % (freePoint, unAddFreePointTotal, updFreePoint), playerID)
return
def __calcStarEffAddFreePoint(curPlayer, gubaoID, effPointDict):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
index f57f74d..ba72e0c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -16,6 +16,8 @@
#-------------------------------------------------------------------------------
import ItemCommon
+import ItemControler
+import FBCommon
import GameFuncComm
import PlayerControl
import ChPyNetSendPack
@@ -38,6 +40,18 @@
import time
#------------------------------------------------------------------------------
+# 渡劫任务类型
+RealmTaskTypeList = (
+RealmTaskType_LV, # 等级 1
+RealmTaskType_PassMap, # 过关关卡 2
+RealmTaskType_KillNPC, # 击杀NPC 3
+RealmTaskType_LVUPItem, # 进阶丹 4
+RealmTaskType_Equip, # 基础装备明细 5
+RealmTaskType_Dujie, # 渡劫boss 6
+) = range(1, 1 + 6)
+
+# 需要记录任务值的任务类型列表
+NeedTaskValueTypeList = [RealmTaskType_KillNPC, RealmTaskType_Dujie]
def DoOfficialOpen(curPlayer):
#功能开启
@@ -48,11 +62,129 @@
def OnLogin(curPlayer):
- SyncRealmFBState(curPlayer)
+ DoRealmVersionStateLogic(curPlayer)
+ SyncRealmFBState(curPlayer, isAll=True)
UpdateRealmExp(curPlayer, False)
NotifyRealmExpInfo(curPlayer)
return
+def DoRealmVersionStateLogic(curPlayer):
+ ## 执行版本变更逻辑,仅触发一次,之后可删除
+ state = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmVersionState)
+ if state:
+ GameWorld.DebugLog("境界版本变更逻辑已重置过!", curPlayer.GetPlayerID())
+ return
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmVersionState, 1)
+ realmLV = curPlayer.GetOfficialRank()
+ if not realmLV:
+ # 新号不处理
+ return
+ playerID = curPlayer.GetPlayerID()
+ GameWorld.Log("======================== 执行境界版本变更重置逻辑 =======================", playerID)
+
+ # 重置境界
+ curPlayer.SetOfficialRank(0)
+
+ # 返还境界丹
+ returnItemID = IpyGameDataPY.GetFuncCfg("RealmLvUP", 1)
+ returnCount = 0
+ itemCntList = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 1)
+ for rLV, needCnt in enumerate(itemCntList):
+ if rLV > realmLV:
+ break
+ returnCount += needCnt
+ GameWorld.Log("境界等级: realmLV=%s,returnItemID=%s,returnCount=%s" % (realmLV, returnItemID, returnCount), playerID)
+
+ # 重置灵根点,扣除赠送灵根点
+ linggenPointDel = 0
+ linggenPointLVAdd = 0
+ linggenCntList = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 2)
+ for rLV, lgPoint in enumerate(linggenCntList):
+ if rLV > realmLV:
+ break
+ linggenPointDel += lgPoint
+ linggenPointLVAdd += lgPoint
+
+ # 古宝效果赠送灵根点
+ linggenPointGubaoAdd = 0
+ resetGubaoEffValueKeyList = []
+ effType = PlayerGubao.GubaoEffType_RealmLVAddLinggen
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetGubaoCount()):
+ ipyData = ipyDataMgr.GetGubaoByIndex(index)
+ gubaoID = ipyData.GetGubaoID()
+ addFreePointAlready = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
+ if not addFreePointAlready:
+ continue
+ resetGubaoEffValueKeyList.append(ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType))
+ linggenPointDel += addFreePointAlready
+ linggenPointGubaoAdd += addFreePointAlready
+
+ freePointBef = curPlayer.GetFreePoint()
+ linggenPointTotalBef = freePointBef
+ addPointDict = {}
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetRolePointCount()):
+ linggenID = ipyDataMgr.GetRolePointByIndex(index).GetAttrID()
+ linggenPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % linggenID)
+ addPointDict[linggenID] = linggenPoint
+ linggenPointTotalBef += linggenPoint
+ GameWorld.Log("重置前灵根点: freePointBef=%s,linggenPointTotalBef=%s,addPointDict=%s" % (freePointBef, linggenPointTotalBef, addPointDict), playerID)
+
+ if linggenPointDel:
+ import Item_ResetAttrPoint
+ Item_ResetAttrPoint.DoResetAttrPoint(curPlayer, 0, 0)
+ updFreePoint = max(0, curPlayer.GetFreePoint() - linggenPointDel)
+ curPlayer.SetFreePoint(updFreePoint)
+ for resetKey in resetGubaoEffValueKeyList:
+ PlayerControl.NomalDictSetProperty(curPlayer, resetKey, 0)
+ GameWorld.Log("重置境界灵根点: linggenPointDel=%s,updFreePoint=%s,linggenPointLVAdd=%s,linggenPointGubaoAdd=%s" %
+ (linggenPointDel, updFreePoint, linggenPointLVAdd, linggenPointGubaoAdd), playerID)
+
+ # 删除境界技能
+ delSkillIDList = []
+ skillIDList = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 3)
+ skillManager = curPlayer.GetSkillManager()
+ playerControl = PlayerControl.PlayerControl(curPlayer)
+ for skillID in skillIDList:
+ if not skillManager.FindSkillBySkillID(skillID):
+ continue
+ skillManager.DeleteSkillBySkillID(skillID)
+ delSkillIDList.append(skillID)
+ playerControl.RefreshSkillFightPowerByDel(skillID)
+ playerControl.RefreshPlayerAttrState()
+ PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEffSet(curPlayer)
+ GameWorld.Log("重置境界删除技能ID列表: %s" % delSkillIDList, playerID)
+
+ # 境界难度地图重置
+ PlayerControl.SetRealmDifficulty(curPlayer, 0)
+ GameWorld.Log("重置境界难度等级选择!", playerID)
+
+ itemListEx = IpyGameDataPY.GetFuncEvalCfg("RealmVersion", 4)
+ mailItemList = [[returnItemID, returnCount, 0]] + itemListEx
+ paramList = [linggenPointDel, returnItemID, returnItemID, returnCount]
+ PlayerControl.SendMailByKey("RealmVersion", [playerID], mailItemList, paramList)
+ GameWorld.Log("重置境界邮件: mailItemList=%s" % mailItemList, playerID)
+
+ # 记录流向
+ freePointAft = curPlayer.GetFreePoint()
+ linggenPointTotalAft = freePointAft
+ addPointDictAft = {}
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for index in range(ipyDataMgr.GetRolePointCount()):
+ linggenID = ipyDataMgr.GetRolePointByIndex(index).GetAttrID()
+ linggenPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % linggenID)
+ addPointDictAft[linggenID] = linggenPoint
+ linggenPointTotalAft += linggenPoint
+ GameWorld.Log("重置后灵根点: freePointAft=%s,linggenPointTotalAft=%s,addPointDictAft=%s" % (freePointAft, linggenPointTotalAft, addPointDictAft), playerID)
+ dataDict = {"realmLV":realmLV, "returnItemID":returnItemID, "returnCount":returnCount,
+ "linggenPointDel":linggenPointDel, "linggenPointLVAdd":linggenPointLVAdd, "linggenPointGubaoAdd":linggenPointGubaoAdd,
+ "linggenPointTotalBef":linggenPointTotalBef, "linggenPointTotalAft":linggenPointTotalAft,
+ "freePointBef":freePointBef, "freePointAft":freePointAft, "addPointDict":addPointDict,
+ "delSkillIDList":delSkillIDList, "mailItemList":mailItemList}
+ DataRecordPack.SendEventPack("RealmVersionReset", dataDict, curPlayer)
+ GameWorld.Log("======================= 境界版本变更重置完毕 =======================", playerID)
+ return
def GetRealmIpyData(realmLV): return IpyGameDataPY.GetIpyGameData("Realm", realmLV)
@@ -67,75 +199,31 @@
return
def GetXXZLAward(curPlayer, taskID):
- ## 领取修仙之路奖励
- awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmXXZLAward)
- if awardState&pow(2, taskID):
- GameWorld.DebugLog("已领取过境界修仙之路该奖励, taskID=%s" % taskID, curPlayer.GetPlayerID())
- return
-
- ipyData = IpyGameDataPY.GetIpyGameData("RealmXXZL", taskID)
- if not ipyData:
- return
- taskType = ipyData.GetTaskType()
- needValue = ipyData.GetNeedValue()
- curValue= 0
-
- #1. 得到 XXX法宝, 所需值为法宝ID
- if taskType == 1:
- magicWeaponID = needValue
- if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % magicWeaponID) >= 1:
- curValue = needValue
-
- #2. 通关天星塔X层
- elif taskType == 2:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_SkyTowerFloor)
-
- #3. 击杀世界BOSSX只
- elif taskType == 3:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Boss_KillCntTotal % ShareDefine.Def_Boss_Func_World)
-
- #4. 活跃修炼X次
- elif taskType == 4:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ActivityCountTotal)
-
- #5. 击杀个人BOSS:xxx,所需之为个人boss表对应线路id
- elif taskType == 5:
- mapID = ChConfig.Def_FBMapID_PersonalBoss
- lineID = needValue
- if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]):
- curValue = needValue
-
- #6. 通关宗门试炼x次
- elif taskType == 6:
- curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntTotal % ChConfig.Def_FBMapID_MunekadoTrial)
-
- #7. 获得X点灵根点
- elif taskType == 7:
- curValue = PlayerControl.GetTotalLingGenPoint(curPlayer)
-
- if curValue < needValue:
- GameWorld.DebugLog("境界修仙之路当前任务所需值不满足,无法领奖, taskID=%s,taskType=%s,curValue=%s < %s"
- % (taskID, taskType, curValue, needValue), curPlayer.GetPlayerID())
- return
-
- awardItemList = ipyData.GetAwardItemList()
- if not ItemCommon.GiveAwardItem(curPlayer, awardItemList, "RealmXXZL"):
- return
-
- updAwardState = awardState|pow(2, taskID)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmXXZLAward, updAwardState)
- GameWorld.DebugLog("领取境界修仙之路奖励, awardID=%s,updAwardState=%s" % (taskID, updAwardState), curPlayer.GetPlayerID())
- SyncRealmFBState(curPlayer)
- EventShell.EventRespons_RealmXXZLAward(curPlayer, taskID)
+ ## 领取修仙之路奖励,废弃
return
-def SyncRealmFBState(curPlayer):
+def SyncRealmFBState(curPlayer, taskIDList=None, isAll=False):
#通知客户端渡劫副本是否开启
#if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Official):
# return
sendPack = ChPyNetSendPack.tagMCSyncRealmInfo()
- sendPack.IsPass = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen)
- sendPack.XXZLAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmXXZLAward)
+ sendPack.TaskAwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskAwardState)
+ sendPack.TaskValueList = []
+ if isAll and taskIDList == None:
+ taskIDList = []
+ curRealmLV = curPlayer.GetOfficialRank()
+ taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", curRealmLV)
+ if taskIpyDataList:
+ for taskIpyData in taskIpyDataList:
+ if taskIpyData.GetTaskType() in NeedTaskValueTypeList:
+ taskIDList.append(taskIpyData.GetTaskID())
+ if taskIDList:
+ for taskID in taskIDList:
+ task = ChPyNetSendPack.tagMCSyncRealmTask()
+ task.TaskID = taskID
+ task.TaskValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
+ sendPack.TaskValueList.append(task)
+ sendPack.TaskValueCount = len(sendPack.TaskValueList)
NetPackCommon.SendFakePack(curPlayer, sendPack)
return
@@ -173,6 +261,162 @@
PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
return
+def AddRealmTaskValue(curPlayer, taskType, addValue):
+ ## 增加境界任务值
+ if taskType not in NeedTaskValueTypeList:
+ return
+ realmLV = curPlayer.GetOfficialRank()
+ taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", realmLV)
+ if not taskIpyDataList:
+ return
+ syncTaskIDList = []
+ for taskIpyData in taskIpyDataList:
+ if taskType != taskIpyData.GetTaskType():
+ continue
+ taskID = taskIpyData.GetTaskID()
+ needValue = GetRealmTaskNeedValue(taskIpyData.GetNeedValueList(), 0)
+ curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
+ if curValue >= needValue:
+ continue
+ syncTaskIDList.append(taskID)
+ updValue = min(curValue + addValue, needValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskValue % taskID, updValue)
+ GameWorld.DebugLog("更新境界任务值: realmLV=%s,taskType=%s,taskID=%s,updValue=%s,curValue=%s,addValue=%s"
+ % (realmLV, taskType, taskID, updValue, curValue, addValue), curPlayer.GetPlayerID())
+ if syncTaskIDList:
+ SyncRealmFBState(curPlayer, taskIDList=syncTaskIDList)
+ return
+
+def GetRealmTaskNeedValue(needValueList, index): return needValueList[index] if len(needValueList) > index else 0
+
+def GetRealmLVUpTaskAward(curPlayer, taskID):
+ ## 领取境界渡劫任务条件奖励
+ playerID = curPlayer.GetPlayerID()
+ realmLV = curPlayer.GetOfficialRank()
+ awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskAwardState)
+ if awardState&pow(2, taskID):
+ GameWorld.DebugLog("境界任务领奖,已领取过! realmLV=%s,taskID=%s" % (realmLV, taskID), playerID)
+ return
+
+ taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", realmLV)
+ if not taskIpyDataList:
+ return
+
+ taskIpyData = None
+ for tIpyData in taskIpyDataList:
+ if taskID != tIpyData.GetTaskID():
+ continue
+ taskIpyData = tIpyData
+ break
+ if not taskIpyData:
+ GameWorld.DebugLog("没有该境界任务! realmLV=%s,taskID=%s" % (realmLV, taskID), playerID)
+ return
+ taskType = taskIpyData.GetTaskType()
+ needValueList = taskIpyData.GetNeedValueList()
+ needValueA = GetRealmTaskNeedValue(needValueList, 0)
+ awardItemList = taskIpyData.GetAwardItemList()
+
+ # 玩家等级
+ if taskType == RealmTaskType_LV:
+ playerLV = curPlayer.GetLV()
+ if playerLV < needValueA:
+ GameWorld.DebugLog('境界任务领奖,等级不足! realmLV=%s,taskID=%s,taskType=%s,playerLV=%s < %s'
+ % (realmLV, taskID, taskType, playerLV, needValueA), playerID)
+ return
+
+ # 过关副本
+ elif taskType == RealmTaskType_PassMap:
+ mapID = needValueA
+ lineID = GetRealmTaskNeedValue(needValueList, 1)
+ if not FBCommon.IsFBPass(curPlayer, mapID, lineID):
+ GameWorld.DebugLog('境界任务领奖,未过关! realmLV=%s,taskID=%s,taskType=%s,mapID=%s,lineID=%s'
+ % (realmLV, taskID, taskType, mapID, lineID), playerID)
+ return
+
+ # 进阶丹
+ elif taskType == RealmTaskType_LVUPItem:
+ itemID = IpyGameDataPY.GetFuncCfg("RealmLvUP", 1)
+ needItemCount = needValueA
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList({itemID:needItemCount}, itemPack)
+ if lackItemDict:
+ GameWorld.DebugLog('境界任务领奖,物品不足! realmLV=%s,taskID=%s,taskType=%s,lackItemDict=%s'
+ % (realmLV, taskID, taskType, lackItemDict), playerID)
+ return
+ ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "Realm")
+
+ # 装备
+ elif taskType == RealmTaskType_Equip:
+ if len(needValueList) != 4:
+ GameWorld.DebugLog('境界任务领奖,装备条件配置错误,长度必须为4! realmLV=%s,taskID=%s,taskType=%s,needValueList=%s'
+ % (realmLV, taskID, taskType, needValueList), playerID)
+ return
+ classLV, star, isSuite, color = needValueList
+ equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+ for place in ChConfig.EquipPlace_Base:
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place)
+ if not ipyData:
+ return
+ gridIndex = ipyData.GetGridIndex()
+ curEquip = equipPack.GetAt(gridIndex)
+ if not ItemCommon.CheckItemCanUse(curEquip):
+ GameWorld.DebugLog('境界任务领奖,装备位无装备! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s'
+ % (realmLV, taskID, taskType, classLV, place), playerID)
+ return
+ curPartStar = ChEquip.GetEquipPartStar(curPlayer, gridIndex)
+ if curPartStar < star:
+ GameWorld.DebugLog('境界任务领奖,装备位星级不足! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s,curPartStar=%s < %s'
+ % (realmLV, taskID, taskType, classLV, place, curPartStar, star), playerID)
+ return
+ if isSuite and not curEquip.GetSuiteID():
+ GameWorld.DebugLog('境界任务领奖,装备位非套装! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s'
+ % (realmLV, taskID, taskType, classLV, place), playerID)
+ return
+ if curEquip.GetItemColor() < color:
+ GameWorld.DebugLog('境界任务领奖,装备位品质不足! realmLV=%s,taskID=%s,taskType=%s,classLV=%s,place=%s,ItemColor=%s < %s'
+ % (realmLV, taskID, taskType, classLV, place, curEquip.GetItemColor(), color), playerID)
+ return
+
+ # 渡劫
+ elif taskType == RealmTaskType_Dujie:
+ curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
+ if not curValue:
+ GameWorld.DebugLog('境界任务领奖,渡劫未过关! realmLV=%s,taskID=%s,taskType=%s' % (realmLV, taskID, taskType), playerID)
+ return
+
+ # 根据记录任务进度值
+ elif taskType in NeedTaskValueTypeList:
+ curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID)
+ if curValue < needValueA:
+ GameWorld.DebugLog('境界任务领奖,条件不足! realmLV=%s,taskID=%s,taskType=%s,curValue=%s < %s'
+ % (realmLV, taskID, taskType, curValue, needValueA), playerID)
+ return
+
+ else:
+ return
+
+ ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["RealmTask", False, {}])
+
+ updAwardState = awardState|pow(2, taskID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskAwardState, updAwardState)
+ GameWorld.DebugLog("境界渡劫领奖OK! realmLV=%s,taskID=%s,updAwardState=%s" % (realmLV, taskID, updAwardState), playerID)
+ SyncRealmFBState(curPlayer)
+ return
+
+def CheckRealmTaskFinishAll(curPlayer):
+ ## 检查境界任务是否已全部完成
+ realmLV = curPlayer.GetOfficialRank()
+ taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", realmLV)
+ if not taskIpyDataList:
+ GameWorld.DebugLog("没有境界任务算未完成! realmLV=%s" % (realmLV), curPlayer.GetPlayerID())
+ return
+ awardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskAwardState)
+ for taskIpyData in taskIpyDataList:
+ taskID = taskIpyData.GetTaskID()
+ if not awardState&pow(2, taskID):
+ GameWorld.DebugLog("境界任务未完成领奖! realmLV=%s,taskID=%s" % (realmLV, taskID), curPlayer.GetPlayerID())
+ return
+ return True
#// A5 23 提升境界等级 # tagCMRealmLVUp
#
@@ -188,66 +432,12 @@
if not realmIpyData:
GameWorld.ErrLog("没有该境界等级数据! Lv=%s" % curRealmLV)
return
- if realmIpyData.GetBossID():
- canLvUp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmFBIsOpen) == 1
- if not canLvUp:
- GameWorld.DebugLog(' 副本未过关,不能升级境界')
- return
- #等级判断
- if curPlayer.GetLV() < realmIpyData.GetNeedLV():
- return
- #装备判断
- needEquip = realmIpyData.GetNeedEquip()
- if needEquip and len(needEquip) == 4:
- classLV, star, isSuite, color = needEquip
- equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- for place in ChConfig.EquipPlace_Base:
- ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place)
- if not ipyData:
- return
- gridIndex = ipyData.GetGridIndex()
- curEquip = equipPack.GetAt(gridIndex)
- if not ItemCommon.CheckItemCanUse(curEquip):
- return
- curPartStar = ChEquip.GetEquipPartStar(curPlayer, gridIndex)
- if curPartStar < star:
- return
- if isSuite and not curEquip.GetSuiteID():
- return
- if curEquip.GetItemColor() < color:
- return
- needItemID = realmIpyData.GetNeedItemID()
- needItemCount = realmIpyData.GetNeedItemCnt()
- # 支持不消耗物品升级
- if needItemID > 0 and needItemCount > 0:
- curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
- hasEnough, itemIndexList = ItemCommon.GetItem_FromPack_ByID(needItemID, curPack, needItemCount)
- if not hasEnough:
- GameWorld.DebugLog("渡劫开启, 材料不足! Lv=%s, needItemID=%s,needItemCount=%s"
- % (curRealmLV, needItemID, needItemCount))
- return
- #扣除物品
- ItemCommon.ReduceItem(curPlayer, curPack, itemIndexList, needItemCount, True, "Realm")
+ if not CheckRealmTaskFinishAll(curPlayer):
+ return
DoRealmLVUpLogic(curPlayer)
return
-
-# 提升1级境界加点
-def __DoRealmLVUpAddPoint(curPlayer):
- if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_AddPoint):
- # 未开启前不可加点,因为DoAddPointOpen会一次性补齐,避免意外情况多加了点数
- return
-
- curFreePoint = curPlayer.GetFreePoint()
- addPoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3)
- if addPoint != 0:
- setFreePoint = curFreePoint + addPoint
- DataRecordPack.DR_Freepoint(curPlayer, "RealmLVUp", addPoint)
- curPlayer.SetFreePoint(setFreePoint)
-
- return
-
def DoRealmLVUpLogic(curPlayer, needSys=True):
curRealmLV = curPlayer.GetOfficialRank()
@@ -258,11 +448,20 @@
return
curPlayer.SetOfficialRank(nextRealmLv)
- # 提升1级境界加点
- __DoRealmLVUpAddPoint(curPlayer)
PlayerGubao.DoGubaoAddFreePoint(curPlayer)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskAwardState, 0)
+ syncTaskIDList = []
+ taskIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("RealmLVUPTask", nextRealmLv)
+ if taskIpyDataList:
+ for taskIpyData in taskIpyDataList:
+ taskID = taskIpyData.GetTaskID()
+ if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_RealmTaskValue % taskID):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmTaskValue % taskID, 0)
+ syncTaskIDList.append(taskID)
+
+ PlayerControl.PlayerControl(curPlayer).PlayerLvUp()
+
if needSys:
addBuffID = nextRealmIpyData.GetBuffID()
if addBuffID:
@@ -279,11 +478,11 @@
if addFreePoint:
updFreePoint = curPlayer.GetFreePoint() + addFreePoint
curPlayer.SetFreePoint(updFreePoint)
- GameWorld.DebugLog(" addFreePoint=%s,updFreePoint=%s" % (addFreePoint, updFreePoint))
+ GameWorld.DebugLog(" 境界阶级加灵根点: addFreePoint=%s,updFreePoint=%s" % (addFreePoint, updFreePoint))
RefreshOfficialAttr(curPlayer)
GameFuncComm.DoFuncOpenLogic(curPlayer)
- SyncRealmFBState(curPlayer)
+ SyncRealmFBState(curPlayer, taskIDList=syncTaskIDList)
#更新修为速率
UpdateRealmExp(curPlayer, False, True)
NotifyRealmExpInfo(curPlayer)
@@ -298,19 +497,6 @@
#流向
DataRecordPack.DR_RealmLVUp(curPlayer, nextRealmLv)
return True
-
-
-def DologicDujieFBPass(curPlayer, realmLV, star):
- #渡劫通过后处理
- realmIpyData = GetRealmIpyData(realmLV)
- if not realmIpyData:
- return
- #DoRealmLVUpLogic(curPlayer)
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 1)
- SyncRealmFBState(curPlayer)
-
- return
-
#// A5 21 境界修为池提取 #tagCMTakeOutRealmExp
#
--
Gitblit v1.8.0