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