| | |
| | | CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_Notify, crossNotifyList, serverGroupIDList)
|
| | | return
|
| | |
|
| | | def CrossNotifyEx(serverGroupIDList, crossNotifyList):
|
| | | ''' 跨服广播信息提示,支持同步多条,同时也建议多条一起同步
|
| | | @param serverGroupIDList: 需要同步到的目标服务器组ID列表
|
| | | @param crossNotifyList: 信息提示列表,[[notifyType, paramsList, 自定义扩展信息], ...] notifyType 如 ShareDefine.CrossNotify_CrossAct
|
| | | '''
|
| | | CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_Notify, crossNotifyList, serverGroupIDList)
|
| | | return
|
| | |
|
| | | def CrossServerMsg_Notify(crossNotifyList):
|
| | | GameWorld.DebugLog("收到跨服同步的广播提示内容: count=%s" % len(crossNotifyList))
|
| | | for notifyInfo in crossNotifyList:
|
| | | if "Type" not in notifyInfo or "Params" not in notifyInfo:
|
| | | if isinstance(notifyInfo, dict):
|
| | | if "Type" not in notifyInfo or "Params" not in notifyInfo:
|
| | | continue
|
| | | notifyType = notifyInfo["Type"]
|
| | | params = notifyInfo["Params"]
|
| | | elif isinstance(notifyInfo, list) and len(notifyInfo) >= 2:
|
| | | notifyType, params = notifyInfo[:2]
|
| | | else:
|
| | | continue
|
| | | notifyType = notifyInfo["Type"]
|
| | | params = notifyInfo["Params"]
|
| | | |
| | | if notifyType == ShareDefine.CrossNotify_World:
|
| | | country, msgMark, msgParamList = params
|
| | | WorldNotify(country, msgMark, msgParamList)
|
| | | elif notifyType == ShareDefine.CrossNotify_CrossAct:
|
| | | country, msgMark, msgParamList = params
|
| | | serverIDRangeList = notifyInfo[2]
|
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for i in xrange(playerManager.GetPlayerCount()):
|
| | | curPlayer = playerManager.GetPlayerByIndex(i)
|
| | | if curPlayer == None or not curPlayer.GetInitOK() or GetIsTJG(curPlayer):
|
| | | continue
|
| | | if not serverIDRangeList:
|
| | | NotifyCode(curPlayer, msgMark, msgParamList)
|
| | | return
|
| | | playerServerID = GameWorld.GetPlayerServerID(curPlayer)
|
| | | for serverIDA, serverIDB in serverIDRangeList:
|
| | | if serverIDA <= playerServerID <= serverIDB:
|
| | | NotifyCode(curPlayer, msgMark, msgParamList)
|
| | | break
|
| | | |
| | | elif notifyType == ShareDefine.CrossNotify_Family:
|
| | | familyID, msgMark, msgParamList = params
|
| | | FamilyNotify(familyID, msgMark, msgParamList)
|