hxp
2019-10-30 b63f2f2458257e9ef4ab67d0a0748fd5ec2948ae
8318 【恺英】老服创角限制优化
3个文件已修改
45 ■■■■■ 已修改文件
PySysDB/PySysDBG.h 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/CreateRole.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBG.h
@@ -10,6 +10,14 @@
    char        Numerical5;    //数据5
};
//创角限制服务器配置表 #tagCreateRoleLimitServer
struct    tagCreateRoleLimitServer
{
    list        LimitServerGroupIDRangeList;    //限制创角的服务器组ID范围列表
    list        LimitServerGroupIDList;    //限制创角的服务器组ID列表
};
//世界等级表格 #tagWorldLV
struct    tagWorldLV
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
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 玩家名称