#!/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