From b63f2f2458257e9ef4ab67d0a0748fd5ec2948ae Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 30 十月 2019 17:26:40 +0800
Subject: [PATCH] 8318 【恺英】老服创角限制优化
---
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 20 ++++++++++++++++++++
ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py | 17 +++++++++++++++++
PySysDB/PySysDBG.h | 8 ++++++++
3 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index b52dd3c..4daeb65 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -10,6 +10,14 @@
char Numerical5; //数据5
};
+//创角限制服务器配置表 #tagCreateRoleLimitServer
+
+struct tagCreateRoleLimitServer
+{
+ list LimitServerGroupIDRangeList; //限制创角的服务器组ID范围列表
+ list LimitServerGroupIDList; //限制创角的服务器组ID列表
+};
+
//世界等级表格 #tagWorldLV
struct tagWorldLV
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 6d05c4d..421e496 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -41,6 +41,11 @@
("char", "Numerical5", 0),
),
+ "CreateRoleLimitServer":(
+ ("list", "LimitServerGroupIDRangeList", 0),
+ ("list", "LimitServerGroupIDList", 0),
+ ),
+
"WorldLV":(
("WORD", "WorldLV", 1),
("DWORD", "OpenServerSecond", 0),
@@ -589,6 +594,17 @@
def GetNumerical3(self): return self.Numerical3 # 数据3
def GetNumerical4(self): return self.Numerical4 # 数据4
def GetNumerical5(self): return self.Numerical5 # 数据5
+
+# 创角限制服务器配置表
+class IPY_CreateRoleLimitServer():
+
+ def __init__(self):
+ self.LimitServerGroupIDRangeList = []
+ self.LimitServerGroupIDList = []
+ return
+
+ def GetLimitServerGroupIDRangeList(self): return self.LimitServerGroupIDRangeList # 限制创角的服务器组ID范围列表
+ def GetLimitServerGroupIDList(self): return self.LimitServerGroupIDList # 限制创角的服务器组ID列表
# 世界等级表格
class IPY_WorldLV():
@@ -1722,6 +1738,8 @@
self.ipyConfigEx = {}
self.ipyFuncConfigCache = self.__LoadFileData("FuncConfig", IPY_FuncConfig)
self.ipyFuncConfigLen = len(self.ipyFuncConfigCache)
+ self.ipyCreateRoleLimitServerCache = self.__LoadFileData("CreateRoleLimitServer", IPY_CreateRoleLimitServer)
+ self.ipyCreateRoleLimitServerLen = len(self.ipyCreateRoleLimitServerCache)
self.ipyWorldLVCache = self.__LoadFileData("WorldLV", IPY_WorldLV)
self.ipyWorldLVLen = len(self.ipyWorldLVCache)
self.ipyFamilyCache = self.__LoadFileData("Family", IPY_Family)
@@ -1990,6 +2008,8 @@
def GetFuncConfigCount(self): return self.ipyFuncConfigLen
def GetFuncConfigByIndex(self, index): return self.ipyFuncConfigCache[index]
+ def GetCreateRoleLimitServerCount(self): return self.ipyCreateRoleLimitServerLen
+ def GetCreateRoleLimitServerByIndex(self, index): return self.ipyCreateRoleLimitServerCache[index]
def GetWorldLVCount(self): return self.ipyWorldLVLen
def GetWorldLVByIndex(self, index): return self.ipyWorldLVCache[index]
def GetFamilyCount(self): return self.ipyFamilyLen
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py
index 1b5d3a6..2692310 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py
@@ -83,6 +83,10 @@
PlayerControl.NotifyCode(curPlayer, "CreatSuccess")
return
+ if CheckIsServerCreateRoleLimit(curPlayer):
+ PlayerControl.NotifyCode(curPlayer, "ServerCreateRoleLimit")
+ return
+
# CD保护
createSafeTick = 3000
accID = curPlayer.GetAccID()
@@ -243,6 +247,19 @@
#DataRecordPack.DR_CreateRole(curPlayer.GetAccID(), sendPack_Name, sendPack_Job)
return
#---------------------------------------------------------------------
+def CheckIsServerCreateRoleLimit(curPlayer):
+ ## 服务器是否创角限制
+ groupID = GameWorld.GetServerGroupID()
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for i in xrange(ipyDataMgr.GetCreateRoleLimitServerCount()):
+ ipyData = ipyDataMgr.GetCreateRoleLimitServerByIndex(i)
+ if groupID in ipyData.GetLimitServerGroupIDList():
+ return True
+ for idA, idB in ipyData.GetLimitServerGroupIDRangeList():
+ if idA <= groupID <= idB:
+ return True
+ return False
+
## 检查玩家名字是否合法(这里的PlayerName为过滤完空格的名字)
# @param curPlayer 当前玩家
# @param playerName 玩家名称
--
Gitblit v1.8.0