ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -118,6 +118,7 @@
    Def_Max_Move_Tick = 5000
 
    if abs(gameWorldTick - clientWorldTick) >= Def_Max_Move_Tick:
        curPlayer.Sync_ClientTick()
        #时间相差过大,可能因网络引起,拉回
        GameWorld.DebugLog("PlayerMoveCheckClientWorldTick -- 服务器tick %s-客户端%s时间相差过大,可能因网络引起,拉回" % (
                            gameWorldTick, clientWorldTick), curPlayer.GetID())
@@ -232,15 +233,22 @@
#  @param mergeMapInfo 该提示所属的跨服活动地图信息, 主要用于不同子服对应所跨的活动地图ID
#  @return 无返回值
def WorldNotify(country, msgMark, msgParamList=[], lineID=0, mergeMinOSD=-1, mergeMaxOSD=-1, mergeMapInfo=[]):
    # 如果是跨服服务器,则广播子服
    if GameWorld.IsCrossServer():
        sendMsg = str([country, msgMark, msgParamList, lineID, mergeMinOSD, mergeMaxOSD, mergeMapInfo])
        GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'MergeWorldNotify',
                                                                  sendMsg, len(sendMsg))
        FBNotify(msgMark, msgParamList) # 跨服中的全服广播只在地图中做广播即可,防止不同跨服分区的地图会相互看到广播,体验不好
    else:
        GameWorld.GetPlayerManager().BroadcastCountry_NotifyCode(country, 0, msgMark,
                                                        __GetNotifyCodeList(msgParamList), lineID)
    GameWorld.GetPlayerManager().BroadcastCountry_NotifyCode(country, 0, msgMark, __GetNotifyCodeList(msgParamList), lineID)
    return
def GetCrossWorldNotifyInfo(country, msgMark, msgParamList=[]):
    return {"Type":ShareDefine.CrossNotify_World, "Params":[country, msgMark, msgParamList]}
def GetCrossFamilyNotifyInfo(familyID, msgMark, msgParamList=[]):
    return {"Type":ShareDefine.CrossNotify_Family, "Params":[familyID, msgMark, msgParamList]}
def CrossNotify(serverGroupIDList, crossNotifyList):
    ''' 跨服广播信息提示,支持同步多条,同时也建议多条一起同步
    @param serverGroupIDList: 需要同步到的目标服务器组ID列表
    @param crossNotifyList: 信息提示列表,通过 GetCrossWorldNotifyInfo GetCrossFamilyNotifyInfo 函数获得返回值添加到列表
    '''
    sendMsg = str([serverGroupIDList, crossNotifyList])
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "CrossNotify", sendMsg, len(sendMsg))
    return
#---------------------------------------------------------------------
@@ -516,6 +524,10 @@
        if GameWorld.GetMap().GetMapID() not in IpyGameDataPY.GetFuncEvalCfg('DungeonDeliver', 1):
            NotifyCode(curPlayer, "Carry_lhs_844170") 
            return False
    if not GameWorld.IsCrossServer() and GetCrossMapID(curPlayer):
        NotifyCode(curPlayer, "CrossMap10")
        return False
    
    return True
@@ -1574,12 +1586,20 @@
        GameWorld.DebugLog("跨服服务器不允许该操作!")
        return
    
    if GetCrossRealmState(curPlayer):
    if GetCrossMapID(curPlayer):
        GameWorld.ErrLog("玩家当前为跨服状态,不允许再次请求进入跨服!", curPlayer.GetPlayerID())
        return
    
    if not CrossRealmPlayer.IsCrossServerOpen():
        NotifyCode(curPlayer, "CrossMatching18")
        return
    if curPlayer.GetHP() <= 0:
        NotifyCode(curPlayer, "CrossMap4")
        return
    if PlayerCrossRealmPK.GetIsCrossPKMatching(curPlayer):
        NotifyCode(curPlayer, "CrossMap3")
        return
    
    GY_Query_CrossRealmReg.RegisterEnterCrossServer(curPlayer, mapID)
@@ -1740,6 +1760,12 @@
        if isNotify:
            NotifyCode(curPlayer, "CrossMatching8", [mapID])            
        return ShareDefine.EntFBAskRet_CrossPKMatching
    ## 跨服地图中
    if GetCrossMapID(curPlayer) and mapID not in ChConfig.Def_CrossMapIDList:
        if isNotify:
            NotifyCode(curPlayer, "CrossMap5", [mapID])
        return ShareDefine.EntFBAskRet_InCrossMap
    
    #===============================================================================================
    # # 这里不做状态限制,由前端处理,因为策划要根据界面来处理,同一传送功能有可能在不同界面
@@ -5710,9 +5736,11 @@
def SetFBFuncLineID(curPlayer, funcLineID): return curPlayer.SetExAttr3(funcLineID, False, False)
def GetFBFuncLineID(curPlayer): return curPlayer.GetExAttr3()
## 跨服状态: 0-非跨服状态,1-跨服状态
def GetCrossRealmState(curPlayer): return curPlayer.GetExAttr5()
def SetCrossRealmState(curPlayer, value): curPlayer.SetExAttr5(value, False, True)
## 跨服状态所在地图ID: 0-非跨服状态,非0-跨服状态对应的地图ID
def GetCrossMapID(curPlayer): return curPlayer.GetExAttr5()
def SetCrossMapID(curPlayer, value):
    curPlayer.SetExAttr5(value, False, True)
    return
## 铜钱点, 支持铜钱超20亿
def GetSilver(curPlayer): return curPlayer.GetExAttr6() * ChConfig.Def_PerPointValue + curPlayer.GetSilver()