405 【公会】自动转让会长规则调整(优化优先传位配置;优化跨服邮件发送;)
4个文件已修改
25 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/GMShell.py
@@ -121,6 +121,7 @@
                callFunc = GameWorld.GetExecFunc(Commands, "%s.%s"%(callFunName, "GetGMServerIDList"))
                if callFunc != None:
                    gmServerIDList = callFunc(curPlayer)
                    if gmServerIDList:
                    pack = ChServerToServerPyPack.tagSSGMCMD()
                    pack.FromServerID = GameWorld.GetGameWorld().GetServerID()
                    pack.ServerType = GameWorld.GetServerType()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -2476,6 +2476,8 @@
        import CrossMsg
        CrossMsg.SendToClientServer(ShareDefine.C2S_GMDebugAnswer, {"text":text}, [mainServerID], playerID)
        return
    if hasattr(curPlayer, "GetPlayer"):
        curPlayer = curPlayer.GetPlayer()
    DebugLog(text, playerID)
    text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
    curPlayer.DebugAnswer(text)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -87,21 +87,24 @@
def __doFamilyOnHour():
    
    needHours = IpyGameDataPY.GetFuncCfg("FamilyLeaderAutoChange", 1)
    priorityHours = IpyGameDataPY.GetFuncCfg("FamilyLeaderAutoChange", 2) # 优先传给离线不超过x小时的成员,一样按优先级
    if GameWorld.IsMainServer() and not DBFamily.IsFamilyCross():
        # 开服前X天会长离线Y小时触发自动转让,优先级高于数值1,格式 X|Y
        befServerDay, needHours2 = IpyGameDataPY.GetFuncEvalCfg("FamilyLeaderAutoChange", 3)
        openServerSet = IpyGameDataPY.GetFuncEvalCfg("FamilyLeaderAutoChange", 3)
        befServerDay = openServerSet[0]
        serverDay = DBDataMgr.GetEventTrigMgr().GetValue(ShareDefine.Def_ServerDay) + 1
        if serverDay <= befServerDay:
            needHours = needHours2
            needHours = openServerSet[1]
            priorityHours = openServerSet[2]
            
    #GameWorld.DebugLog("自动传位时长设定: needHours=%s" % needHours)
    GameWorld.DebugLog("自动传位时长设定: needHours=%s,priorityHours=%s" % (needHours, priorityHours))
    familyManager = DBDataMgr.GetFamilyMgr()
    for zoneID in familyManager.GetZoneIDListThisServer():
        zoneMgr = familyManager.GetZoneFamilyMgr(zoneID)
        for i in range(0, zoneMgr.GetCount()):
            family = zoneMgr.GetAt(i)
            #自动传位
            __AutoChangeLeader(family, needHours)
            __AutoChangeLeader(family, needHours, priorityHours)
    return
def FamilyCrossCenterOnDay():
@@ -1344,7 +1347,7 @@
    CrossPlayer.FamilyNotify(familyID, "XW_JZ_AppointFamily", [memName, changeFamilyLV])
    return
def __AutoChangeLeader(curFamily, needHours):
def __AutoChangeLeader(curFamily, needHours, priorityHours):
    ## 自动传位
    leaderID = curFamily.GetLeaderID()
    leaderMem = curFamily.FindMember(leaderID)
@@ -1361,8 +1364,6 @@
        GameWorld.DebugLogEx("盟主离线未超过限制小时,不处理自动传位!familyID=%s,leaderID=%s,offTime=%s,passHours=%s < %s", 
                             familyID, leaderID, GameWorld.ChangeTimeNumToStr(offTime), passHours, needHours)
        return
    priorityHours = IpyGameDataPY.GetFuncCfg("FamilyLeaderAutoChange", 2) # 优先传给离线不超过x小时的成员,一样按优先级
    
    priorityList = []
    for i in range(0, curFamily.GetCount()):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMail.py
@@ -114,11 +114,8 @@
def SendMailByKey(mailTypeKey, playerID, itemList, paramList=[], limitDays=7, toServerID=0):
    ## 发送个人邮件魔板
    # @param itemList: 元素支持字典{itemID:itemCount, ...} 或列表 [itemID, itemCount, 可选是否拍品, 物品UserData]
    # @param toServerID: 向其他服玩家发送邮件时需指定玩家所在服务器
    if toServerID > 0:
        if not GameWorld.IsCrossServer():
            GameWorld.ErrLog("非跨服服务器不能向其他服务器发送个人邮件! %s,playerID=%s" % (mailTypeKey, playerID))
            return
    # @param toServerID: 向其他服玩家发送邮件时需指定玩家所在服务器,仅跨服服务器时有效
    if toServerID > 0 and GameWorld.IsCrossServer():
        dataMsg = {"mailTypeKey":mailTypeKey, "itemList":itemList, "paramList":paramList, "limitDays":limitDays}
        mainServerID = GameWorld.GetMainServerID(toServerID)
        CrossMsg.SendToClientServer(ShareDefine.C2S_SendPlayerMail, dataMsg, [mainServerID], playerID)