#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#---------------------------------------------------------------------  
 | 
#  
 | 
#---------------------------------------------------------------------  
 | 
##@package MergeBroadCastRecive.py  
 | 
# ½ÓÊÕ¿ç·þÈü·þÎñÆ÷¹ã²¥ÐÅÏ¢  
 | 
#  
 | 
# @author wdb  
 | 
# @date 2012-10-31 16:50  
 | 
# @version 3.2  
 | 
# @note  
 | 
# @change: "2012-11-02 16:00" wdb Ôö¼Ó¿ç·þÈüÌÔÌÈü²ÎÈü½±Àø  
 | 
# @change: "2012-11-29 13:00" hyx ½ÓÊÕ¿ç·þÈü±ÈÈüÂÖ´ÎÐÅÏ¢  
 | 
# @change: "2012-11-29 19:00" wdb Ìí¼ÓÈ«·þ½±Àø  
 | 
# @change: "2012-11-30 20:00" jiang ½ÓÊÕÍò¹ú·þÎñÆ÷Ï·¢µÄÐÅÏ¢  
 | 
# @change: "2012-12-04 14:00" jiang ½ÓÊÕÍò¹ú·þÎñÆ÷Ï·¢µÄÐÅÏ¢__MergeWarStartTime  
 | 
# @change: "2012-12-06 10:50" hyx Ìí¼Óµ÷ÊÔLOG  
 | 
# @change: "2012-12-10 16:10" hyx É¾³ý¶àÓàµÄ¿ç·þ֪ͨ  
 | 
# @change: "2012-12-13 19:00" wdb ¿ç·þ¹ã²¥ÐÞ¸Ä  
 | 
# @change: "2012-12-13 19:00" wdb Îó´«»¹Ô  
 | 
# @change: "2012-12-14 19:30" hyx »î¶¯½áÊøÊ±Çå³ýÈËÔ±ºÍ¶ÔÕ½ÐÅÏ¢  
 | 
# @change: "2013-01-11 11:00" wdb Ôö¼Ó ¹Ø±ÕÍò¹úÕ½ÉÏ´«Êý¾ÝÉÏ´«Êý¾Ý  
 | 
# @change: "2013-01-21 17:30" hyx Ôö¼ÓÈÙÒ«Ö®Õ½½á¹û  
 | 
# @change: "2013-01-29 14:00" wdb ¿ç·þÕ½½áÊø£¬É¾³ýÉÏ´«Êý¾ÝÐÅÏ¢  
 | 
# @change: "2015-09-18 19:30" hxp Ôö¼Ó¿ç·þboss  
 | 
# @change: "2015-10-25 22:00" hxp Ôö¼Ó¿ç·þPK  
 | 
# @change: "2015-11-05 12:00" hxp Ôö¼Ó»Ö¸´¿ç·þÁ¬Ê¤£»¿ç·þÈ«·þ¹ã²¥  
 | 
# @change: "2015-11-06 16:30" hxp Ôö¼ÓpyÀ®°È£¬Ö§³Ö¿ç·þ  
 | 
# @change: "2015-11-13 17:00" hxp Ôö¼ÓÍõÕßÕù°Ô  
 | 
# @change: "2016-01-11 16:00" hxp ¿ç·þPKδͬ²½µÄPK¼Ç¼֪ͨ×Ó·þ  
 | 
# @change: "2017-05-24 16:00" hxp ¿ç·þ·þÎñÆ÷ÔÚÏßÍæ¼Ò  
 | 
# @change: "2017-06-22 15:00" hxp Ôö¼Ó¿ç·þºé»ÄÖ®Á¦£»¿ç·þÍæ¼ÒÊý¾Ýʼþ£»¿ç·þ¹ã²¥Ôö¼ÓÌõ¼þ¹ýÂË×Ó·þÊÇ·ñÌáÐÑ  
 | 
# @change: "2017-07-06 20:30" hxp Ôö¼Ó¿ç·þ·þÎñÆ÷¿ØÖƵĻ×Öµä״ֵ̬±ä¸üͬ²½  
 | 
#---------------------------------------------------------------------  
 | 
#""Version = 2017-07-06 20:30"""  
 | 
#---------------------------------------------------------------------  
 | 
import IPY_GameServer  
 | 
import GameWorld  
 | 
import ChConfig  
 | 
import traceback  
 | 
import GameConfig  
 | 
import PlayerControl  
 | 
import ChPlayer  
 | 
import GameWorldActionControl  
 | 
import PlayerMergeRegister  
 | 
import GameWorldMergeBoss  
 | 
import GameWorldMergeKing  
 | 
import PlayerMergeEvent  
 | 
import GameWorldMergePK  
 | 
import PlayerDBGSEvent  
 | 
import MergePlayer  
 | 
import PlayerTalk  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
  
 | 
## ¿ç·þGameWorld×ÖµäkeyÖµ11  
 | 
def __MergeDictKeyValue(infoDict):  
 | 
    GameWorld.Log('ÊÕµ½¿ç·þ·þÎñÆ÷ͬ²½µÄ×ÖµäÖµ±ä¸ü£º infoDict=%s' % (infoDict))  
 | 
    gameWorld = GameWorld.GetGameWorld()  
 | 
    for key, value in infoDict.items():  
 | 
        #֪ͨMapserver,ÉèÖÃ×Öµä  
 | 
        GameWorld.SendMapServerMsgEx(key, value)  
 | 
        #DZ¹æÔò£ºÔÚChConfig»î¶¯Ïà¹ØÉèÖÃÖУ¬ÌáÈ¡ÁË×ÖµäÃû  
 | 
        gameWorld.SetDict(key, value)  
 | 
        #´¦ÀíGameServer»î¶¯Âß¼  
 | 
        GameWorldActionControl.__DoLogic_GameServer_ActionState(key, value)  
 | 
          
 | 
    return  
 | 
  
 | 
## ¿ç·þbossµ¥boss»÷ɱ½á¹û12  
 | 
#  @param infoDict ÐÅÏ¢×Öµä  
 | 
#  @return None  
 | 
def __MergeBossKilled(infoDict):  
 | 
    GameWorldMergeBoss.RecvMergeBossKilled(infoDict)  
 | 
    return  
 | 
  
 | 
## ¿ç·þboss½á¹û13  
 | 
#  @param infoDict ÐÅÏ¢×Öµä  
 | 
#  @return None  
 | 
def __MergeBossResult(infoDict):  
 | 
    GameWorldMergeBoss.RecvMergeBossResult(infoDict)  
 | 
    return  
 | 
  
 | 
## ¿ç·þPKÆ¥ÅäÐÅÏ¢14  
 | 
def __MergePKMatch(infoDict): GameWorldMergePK.OnRecvMergePKMatchInfo(infoDict)  
 | 
## ¿ç·þPKÒÑ×¼±¸ºÃµÄ·¿¼äÁбí15  
 | 
def __MergePKReadyOKRoom(infoDict): GameWorldMergePK.OnRecvMergePKReadyOKRoom(infoDict)  
 | 
## ¿ç·þPKͬ²½ÅÅÐаñ16  
 | 
def __MergePKSyncBillboard(infoDict): GameWorldMergePK.OnRecvMergePKSyncBillboard(infoDict)  
 | 
## ¿ç·þPK»ñµÃÐÒÔËÎïÆ·17  
 | 
def __MergePKLuckyItem(infoDict): GameWorldMergePK.OnRecvMergePKLuckyItem(infoDict)  
 | 
## ¿ç·þPK»î¶¯×´Ì¬±ä¸ü18  
 | 
def __MergePKActionState(infoDict): GameWorldMergePK.OnRecvMergePKActionState(infoDict)  
 | 
## ¿ç·þPK»î¶¯¸ßÊÖ°ñÍæ¼ÒչʾÐÅÏ¢19  
 | 
def __MergePKTopPlayerView(infoDict): GameWorldMergePK.OnRecvMergePKTopPlayerView(infoDict)  
 | 
## ¿ç·þPK»Ö¸´Á¬Ê¤¿Û·ÑÐÅÏ¢20  
 | 
def __RecoverMergePKWinCost(infoDict): GameWorldMergePK.OnRecvRecoverMergePKWinCost(infoDict)  
 | 
## ¿ç·þPKδͬ²½µÄPK½á¹û24  
 | 
def __MergePKUnNotifyOverInfo(infoDict): GameWorldMergePK.OnRecvMergePKUnNotifyOverInfo(infoDict)  
 | 
  
 | 
## ¿ç·þÈ«·þ¹ã²¥21  
 | 
def __MergeWorldNotify(infoDict):  
 | 
    country = infoDict["country"]  
 | 
    msgMark = infoDict["msgMark"]  
 | 
    msgParamList = infoDict["msgParamList"]  
 | 
    #lineID = infoDict["lineID"]  
 | 
    mergeMinOSD = infoDict["mergeMinOSD"]  
 | 
    mergeMaxOSD = infoDict["mergeMaxOSD"]  
 | 
    mergeMapInfo = infoDict["mergeMapInfo"]  
 | 
    openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)  
 | 
    if mergeMinOSD >= 0 and openServerDay < mergeMinOSD:  
 | 
        GameWorld.DebugLog("±¾·þ¿ª·þÌìСÓÚ×îС¿ç·þ¹ã²¥Ì죬²»´¦Àí¿ç·þ¹ã²¥! openServerDay=%s,mergeMinOSD=%s" % (openServerDay, mergeMinOSD))  
 | 
        return  
 | 
    if mergeMaxOSD >= 0 and openServerDay > mergeMaxOSD:  
 | 
        GameWorld.DebugLog("±¾·þ¿ª·þÌì´óÓÚ×î´ó¿ç·þ¹ã²¥Ì죬²»´¦Àí¿ç·þ¹ã²¥! openServerDay=%s,mergeMaxOSD=%s" % (openServerDay, mergeMaxOSD))  
 | 
        return  
 | 
    if mergeMapInfo and len(mergeMapInfo) == 2:  
 | 
        mergeActionType, dataMapID = mergeMapInfo  
 | 
        mapInfo = PlayerMergeRegister.GetMergeActionMapPos(mergeActionType)  
 | 
        if mapInfo:  
 | 
            curMergeMapID = mapInfo[0]  
 | 
            if dataMapID != curMergeMapID:  
 | 
                GameWorld.DebugLog("·Ç±¾·þËù·ÖÅäµÄ¿ç·þµØÍ¼£¬²»´¦Àí¿ç·þ¹ã²¥! curMergeMapID=%s,dataMapID=%s" % (curMergeMapID, dataMapID))  
 | 
                return  
 | 
    PlayerControl.WorldNotify(country, msgMark, msgParamList)  
 | 
    return  
 | 
  
 | 
## ¿ç·þÈ«·þÀ®°È22  
 | 
def __MergeLoudspeaker(infoList):  
 | 
    accID, playerID, playerName, SpeakerType, Text, extraValue, extras = infoList  
 | 
    PlayerTalk.BroadCastPYSpeaker(accID, playerID, playerName, SpeakerType, Text, extraValue, extras)  
 | 
    return  
 | 
  
 | 
## ¿ç·þÍõÕßÕù°Ô23  
 | 
def __MergePKKing(infoDict): GameWorldMergeKing.OnRecvMergeServerPKKing(infoDict)  
 | 
  
 | 
## ¿ç·þ·þÎñÆ÷ÔÚÏßÍæ¼ÒÐÅÏ¢25  
 | 
def __MergeOnLinePlayerInfo(infoDict): MergePlayer.OnRecvMergeServerOLPlayerInfo(infoDict)  
 | 
  
 | 
## ¿ç·þÍæ¼Òʼþ27  
 | 
def _MergePlayerEvent(infoDict): PlayerMergeEvent.OnRecvMergePlayerEvent(infoDict)  
 | 
#---------------½ÓÊÕ¹ÜÀí-----------------  
 | 
#²Ù×÷¶ÔÓ¦µÄ·½·¨  
 | 
Def_FuncDict = {  
 | 
                ChConfig.Def_MergeDictKeyValue:__MergeDictKeyValue,  # ¿ç·þGameWorld×ÖµäkeyÖµ11  
 | 
                ChConfig.Def_MergeBossKilled:__MergeBossKilled,  # ¿ç·þbossµ¥boss»÷ɱ½á¹û12  
 | 
                ChConfig.Def_MergeBossResult:__MergeBossResult,  # ¿ç·þboss½á¹û13  
 | 
                ChConfig.Def_MergePKMatchResult:__MergePKMatch,  # ¿ç·þPKÆ¥ÅäÐÅÏ¢14  
 | 
                ChConfig.Def_MergePKReadyOKRoomList:__MergePKReadyOKRoom,  # ¿ç·þPKÒÑ×¼±¸ºÃµÄ·¿¼äÁбí15  
 | 
                ChConfig.Def_MergePKSyncBillboard:__MergePKSyncBillboard,  # ¿ç·þPKͬ²½ÅÅÐаñ16  
 | 
                ChConfig.Def_MergePKLuckyItem:__MergePKLuckyItem,  # ¿ç·þPK»ñµÃÐÒÔËÎïÆ·17  
 | 
                ChConfig.Def_MergePKActionState:__MergePKActionState,  # ¿ç·þPK»î¶¯×´Ì¬±ä¸ü18  
 | 
                ChConfig.Def_MergePKTopPlayerView:__MergePKTopPlayerView,  # ¿ç·þPK»î¶¯¸ßÊÖ°ñÍæ¼ÒչʾÐÅÏ¢19  
 | 
                ChConfig.Def_RecoverMergePKWinCost:__RecoverMergePKWinCost,  # ¿ç·þPK»Ö¸´Á¬Ê¤¿Û·ÑÐÅÏ¢20  
 | 
                ChConfig.Def_MergePKUnNotifyOverInfo:__MergePKUnNotifyOverInfo,  # ¿ç·þPKδͬ²½µÄPK½á¹û24  
 | 
                ChConfig.Def_MergeWorldNotify:__MergeWorldNotify,  # ¿ç·þÈ«·þ¹ã²¥21  
 | 
                ChConfig.Def_MergeLoudspeaker:__MergeLoudspeaker,  # ¿ç·þÈ«·þÀ®°È22  
 | 
                ChConfig.Def_MergePKKing:__MergePKKing,  # ¿ç·þÍõÕßÕù°Ô23  
 | 
                ChConfig.Def_MergeOnLinePlayer:__MergeOnLinePlayerInfo,  # ¿ç·þ·þÎñÆ÷ÔÚÏßÍæ¼ÒÐÅÏ¢25  
 | 
                ChConfig.Def_MergePlayerEvent:_MergePlayerEvent,  # ¿ç·þÍæ¼Òʼþ27  
 | 
               }  
 | 
  
 | 
  
 | 
## ¿ç·þÈü¹ã²¥ÐÅÏ¢  
 | 
#  @param index Íæ¼ÒË÷Òý  
 | 
#  @param tick µ±Ç°Ê±¼ä  
 | 
#  @return None  
 | 
def OnMergeBroadCastPack(index, tick):  
 | 
          
 | 
    dataPack = IPY_GameServer.IPY_MGBroadcastMergeClient()  
 | 
    dataMsg = dataPack.GetData()  
 | 
    GameWorld.Log('merge broad cast :%s'%dataMsg)  
 | 
      
 | 
    try:  
 | 
        msgDict = eval(dataMsg)  
 | 
        # ¼ì²â/´¦Àí¿ç·þÈü¹ã²¥ÐÅÏ¢  
 | 
        OnMergeBroadCast(msgDict)  
 | 
    except:  
 | 
        GameWorld.ErrLog('OnMergeBroadCastPack:%s; except:%s'%(dataMsg, traceback.format_exc()))      
 | 
    return  
 | 
  
 | 
  
 | 
## ¼ì²â/´¦Àí¿ç·þÈü¹ã²¥ÐÅÏ¢  
 | 
#  @param index Íæ¼ÒË÷Òý  
 | 
#  @param tick µ±Ç°Ê±¼ä  
 | 
#  @return None  
 | 
def OnMergeBroadCast(msgDict):  
 | 
    mapConfig = GameConfig.GetConfig()  
 | 
  
 | 
    # ÅжÏÊÇ·ñÀ´×ÔÌØ¶¨µÄµØÍ¼  
 | 
    mapID = msgDict.get("MapID", 0)  
 | 
    if mapID != 0 and mapID != mapConfig.get("MergeWarMapID", 0):  
 | 
        return  
 | 
              
 | 
    # »ñµÃ²Ù×÷Ë÷Òý  
 | 
    operIndex = msgDict.get("Oper", -1)      
 | 
    func = Def_FuncDict.get(operIndex, None)  
 | 
      
 | 
    if not func:  
 | 
        GameWorld.ErrLog("MergeBroadcast  OnMergeBroadCast operIndex=%s"%operIndex)  
 | 
        return  
 | 
  
 | 
    infoDict = msgDict.get('Data', {})  
 | 
    try:  
 | 
        func(infoDict)  
 | 
    except:  
 | 
        GameWorld.ErrLog('OnMergeBroadCast:%s; except:%s'%(infoDict, traceback.format_exc()))  
 | 
    return  
 | 
  
 |