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