From 94ee1c7ab1faeaf57443860b46d057f4328706db Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 18 十月 2022 18:14:17 +0800 Subject: [PATCH] 9437 【越南】【后端】天帝礼包(AA60封包增加同步需要选择个数) --- ServerPython/CoreServerGroup/GameServer/Script/EventReport.py | 94 +++++++++++++++++++++++++++++------------------ 1 files changed, 58 insertions(+), 36 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/EventReport.py b/ServerPython/CoreServerGroup/GameServer/Script/EventReport.py index 9a92af3..2dbb565 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/EventReport.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/EventReport.py @@ -38,6 +38,8 @@ import md5 import os import re +import urllib +import IpyGameDataPY EventFilepath = "D:\\EventServer\\PythonScribe\\EventLog\\" @@ -84,22 +86,28 @@ # @param eventParam 事件参数 # @param curPlayer # @return None -def EventReport(eventActionID, eventParam, curPlayer=None): +def EventReport(eventActionID, eventParam, curPlayer=None, OperatorID=""): # 组成例子 eventParam 的格式必须是 xx=yy&zz=cc # "http://192.168.0.249:12000/event_receiver?EventID=3099&OperatorID=test&PlayerCount=102&Time=2018-02-08 18:30:30&ProductID=snxxz&RegionName=s1" - - OperatorID = GameWorld.GetPlatform() - if not OperatorID: + + reportActionIDList = IpyGameDataPY.GetFuncEvalCfg("EventReport", 3) + if reportActionIDList and eventActionID not in reportActionIDList: + #GameWorld.DebugLog("非需要汇报的事件ID! %s" % eventActionID) + return + if eventActionID in IpyGameDataPY.GetFuncEvalCfg("EventReport", 1): + #GameWorld.DebugLog("不需要汇报的事件! %s" % eventActionID) + return + + if not curPlayer and not OperatorID: return ProductID = ReadChConfig.GetPyMongoConfig("EventReport", "ProductID") ReportUrl = ReadChConfig.GetPyMongoConfig("EventReport", "ReportUrl") - RegionName = GameWorld.GetServerSID() # 需考虑合服情况 playerInfo = "" if curPlayer: - playerInfo = "&AccountID=%s&IP=%s"%(GameWorld.GetPlatformAccID(curPlayer.GetAccID()), - curPlayer.GetIP()) + playerInfo = "&AccountID=%s&IP=%s&DeviceFlag=%s"%(GameWorld.GetPlatformAccID(curPlayer.GetAccID()), + curPlayer.GetIP(), curPlayer.GetDeviceFlag()) #======================================================================= # #UTF8 需要转成url编码才可用 # playerInfo = urllib.urlencode({"RoleID": curPlayer.GetName(), @@ -107,11 +115,23 @@ # "IP": curPlayer.GetIP(), # "Level": curPlayer.GetLV()}) #======================================================================= - - - getUrl = "%s?ProductID=%s&OperatorID=%s&RegionName=%s&EventID=%s%s&Time=%s&%s"%(\ + OperatorID = GameWorld.GetPlayerPlatform(curPlayer) + RegionName = GameWorld.GetPlayerServerSID(curPlayer) + + else: + # 合服情况,玩家取自己服发送,非玩家数据按指定平台配置发 + sid = GameWorld.GetPlayerMainServerID(OperatorID) + if not sid: + GameWorld.ErrLog("GetPlayerMainServerID: %s-%s"%(OperatorID, sid)) + return + RegionName = 's%s'%sid + + if eventParam: + eventParam = "&%s"%eventParam + + getUrl = "%s?ProductID=%s&OperatorID=%s&RegionName=%s&EventID=%s%s&Time=%s%s"%(\ ReportUrl, ProductID, OperatorID, RegionName, eventActionID, playerInfo, - str(datetime.datetime.today()).split('.')[0], eventParam) + urllib.quote(str(datetime.datetime.today()).split('.')[0]), eventParam) GameWorld.DebugLog("EventReport: %s"%getUrl) # 第五个参数0代表get发送 1代表post @@ -124,7 +144,7 @@ # @param eventClass # @return None def WriteEvent(eventClass): - if GameWorld.IsMergeServer(): + if GameWorld.IsCrossServer(): return if eventClass.GetScribeEventName() not in ReadChConfig.GetEvalChConfig("EventReportID"): @@ -312,11 +332,11 @@ ## ================================================================================================= ## 在线 -def WriteEvent_concurrency(activePlayerCount, tjgOnlineCnt): +def WriteEvent_concurrency(activePlayerCount, tjgOnlineCnt, OperatorID): # 只传真实玩家,让后台显示真实在线玩家 realPlayer = activePlayerCount-tjgOnlineCnt EventReport(ShareDefine.Def_UserAction_KeepOnline, - "PlayerCount=%s&TotalPlayerCount=%s"%(realPlayer, realPlayer)) + "PlayerCount=%s&TotalPlayerCount=%s"%(realPlayer, realPlayer), None, OperatorID) return @@ -331,28 +351,30 @@ def WriteEvent_chat_log(curPlayer, content, cmc_name, tagName="", addinfo=""): return - ''' - @todo: 写聊天监控记录 - @param content: 聊天内容 - @param cmc_name: 聊天频道标识 - @param tagName: 私聊对象 - @param addinfo: 额外信息 - ''' - - chatlogEvent = chat_log() - chatlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer.GetAccID())) - chatlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID()) - chatlogEvent.chr_name = curPlayer.GetName() - chatlogEvent.content = __GetEventChatContent(content) - chatlogEvent.cmc_name = cmc_name - chatlogEvent.ip = curPlayer.GetIP() - chatlogEvent.account_name = chatlogEvent.account_id - chatlogEvent.account_type = 0 - chatlogEvent.chr_level = 0 - chatlogEvent.object = tagName - chatlogEvent.addinfo = addinfo - WriteEvent(chatlogEvent) - return + #=========================================================================== + # ''' + # @todo: 写聊天监控记录 + # @param content: 聊天内容 + # @param cmc_name: 聊天频道标识 + # @param tagName: 私聊对象 + # @param addinfo: 额外信息 + # ''' + # + # chatlogEvent = chat_log() + # chatlogEvent.SetEventAgentInfo(GameWorld.GetPlayerPlatform(curPlayer)) + # chatlogEvent.account_id = GameWorld.GetPlatformAccID(curPlayer.GetAccID()) + # chatlogEvent.chr_name = curPlayer.GetName() + # chatlogEvent.content = __GetEventChatContent(content) + # chatlogEvent.cmc_name = cmc_name + # chatlogEvent.ip = curPlayer.GetIP() + # chatlogEvent.account_name = chatlogEvent.account_id + # chatlogEvent.account_type = 0 + # chatlogEvent.chr_level = 0 + # chatlogEvent.object = tagName + # chatlogEvent.addinfo = addinfo + # WriteEvent(chatlogEvent) + # return + #=========================================================================== def __GetEventChatContent(content): ''' -- Gitblit v1.8.0