xdh
2019-06-03 5c27c43c293460a98a1374504c07533ddf17d24f
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -40,6 +40,7 @@
import PlayerFamilySWRH
import PlayerViewCache
import GameWorldBoss
import AuctionHouse
import PlayerTalk
import PlayerTeam
@@ -83,6 +84,9 @@
def GetCurWeekMissionMoney(curFamily): return curFamily.GetExtra2()
def SetCurWeekMissionMoney(curFamily, value): return curFamily.SetExtra2(min(value, ChConfig.Def_UpperLimit_DWord))
# 仙盟上次处理的合服天
def GetFamilyMixServerDay(curFamily): return curFamily.GetExtra1()
def SetFamilyMixServerDay(curFamily, value): return curFamily.SetExtra1(value)
## ------------------ 成员 ----------------------
def GetMemberFightPower(curMember): return curMember.GetExattr3()
def SetMemberFightPower(curMember, fightPower): return curMember.SetExattr3(fightPower)
@@ -236,6 +240,9 @@
    curFamily.SetAcceptJoin(ShareDefine.FamilyAcceptJoin_Agree)     #设置收人方式为直接通过申请
    PyDataManager.GetFamilyStoreItemManager().DelFamilyStoreItemAll(curFamily.GetID())
    
    #新创建的仙盟默认设置已处理过合服
    SetFamilyMixServerDay(curFamily, PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay))
    #-设置家族成员属性
    DoPlayerJionFamily(curFamily, curPlayer, IPY_GameServer.fmlLeader)
    
@@ -362,7 +369,8 @@
    PlayerFamilyBoss.NotifyFamilyBossFBInfo(jionPlayer)
    #通知家族仓库
    PyDataManager.GetFamilyStoreItemManager().SyncFamilyStoreItem(jionPlayer, curFamily.GetID())
    #仙盟拍品
    AuctionHouse.Sync_FamilyAuctionItemInfo(jionPlayer, curFamily.GetID())
    SetMemberFightPower(familyMember, jionPlayer.GetFightPower())
    AddFamilyIDToFightPowerChangeList(curFamily.GetID())
    
@@ -379,7 +387,6 @@
    GameWorld.DebugLog('    玩家战盟名变更处理, newFamilyName=%s' % familyName, playerID)
    #不处理排行榜
    needChangeFamilyBillboardList = [
                                     #ShareDefine.Def_BT_RechargeTeHui,  # 充值特惠活动排行榜-当前期记录
                                     ]
    billboardMgr = GameWorld.GetBillboard()
    for billboardIndex in needChangeFamilyBillboardList:
@@ -1415,7 +1422,12 @@
    if GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss):        
        PlayerControl.NotifyCode(curPlayer, "FairyGrabBossExitError")
        return
    if PlayerFamilyBoss.IsInAllFamilyBoss():
        PlayerControl.NotifyCode(curPlayer, "LeagueBOSSExitError1")
        return
    if AuctionHouse.IsFamilyMemberBiddingAuctionItem(curFamily.GetID(), tagMemberID):
        PlayerControl.NotifyCode(curPlayer, "Paimai7")
        return
    tagPlayerName = curTagMember.GetName()  # 被踢玩家名
    tagPlayerID = curTagMember.GetPlayerID()  # 被踢玩家ID
    tagFamilyLV = curTagMember.GetFamilyLV()  # 被踢玩家职位
@@ -1493,6 +1505,12 @@
    
    if GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss):        
        PlayerControl.NotifyCode(curPlayer, "FairyGrabBossExitError")
        return
    if PlayerFamilyBoss.IsInAllFamilyBoss():
        PlayerControl.NotifyCode(curPlayer, "LeagueBOSSExitError1")
        return
    if AuctionHouse.IsFamilyMemberBiddingAuctionItem(curFamily.GetID(), curMember.GetPlayerID()):
        PlayerControl.NotifyCode(curPlayer, "Paimai8")
        return
    #判断退出时间间隔
    curTime = int(time.time())
@@ -1926,6 +1944,37 @@
    PlayerRefresh(curPlayer, tick)
    
    GameWorldFamilyWar.OnPlayerLogin(curFamily, curPlayer)
    # 盟主上线处理
    if curMember.GetFamilyLV() == IPY_GameServer.fmlLeader:
        OnFamilyLeaderLogin(curPlayer, curFamily)
    return
def OnFamilyLeaderLogin(curPlayer, curFamily):
    ## 盟主登录处理
    __DoFamilyMixServerLogicOnLeaderLogin(curPlayer, curFamily)
    return
def __DoFamilyMixServerLogicOnLeaderLogin(curPlayer, curFamily):
    ## 合服仙盟盟主登录处理
    isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
    if not isMixServer:
        return
    lastMixServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_LastMixServerDay)
    familyID = curFamily.GetID()
    familyMixServerDay = GetFamilyMixServerDay(curFamily)
    if familyMixServerDay == lastMixServerDay:
        GameWorld.DebugLog("已经处理过仙盟盟主合服登录逻辑! lastMixServerDay=%s" % (lastMixServerDay), familyID)
        return
    SetFamilyMixServerDay(curFamily, lastMixServerDay)
    GameWorld.Log("处理合服仙盟盟主登录! lastMixServerDay=%s" % (lastMixServerDay), familyID)
    mailItemList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 4)
    playerID = curPlayer.GetPlayerID()
    detailDict = {}
    GameWorld.Log("    发送合服盟主专属补偿邮件! familyID=%s,mailItemList=%s" % (familyID, mailItemList), playerID)
    PlayerCompensation.SendMailByKey("MixServer2", [playerID], mailItemList, detail=detailDict)
    return
#---------------------------------------------------------------------
## 玩家下线家族刷新逻辑