From 4c6786e17ef724a0dfdfeca8cf4a36bc4a7b9898 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 15 二月 2019 15:17:26 +0800
Subject: [PATCH] 6211 【后端】【1.6】合服任务单(合服邮件、重置首充双倍、重置商店购买次数、设置合服命令SetMixServer)

---
 Tool/Robot/Robot/RobotMgr.py |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/Tool/Robot/Robot/RobotMgr.py b/Tool/Robot/Robot/RobotMgr.py
index 7e88aae..e15e434 100644
--- a/Tool/Robot/Robot/RobotMgr.py
+++ b/Tool/Robot/Robot/RobotMgr.py
@@ -18,8 +18,8 @@
         Thread.__init__(self, None, None, "AIThreadPy_%s"%index)
         self.robotMgr = robotMgr
         self.AIList = []
-        #config =  ConfigurationReader.ConfigIniReader.GetConfig()
-
+        config =  ConfigurationReader.ConfigIniReader.GetConfig()
+        self.tjgLimitCnt = config.GetTJGLimitCnt()
         self.lastTime = 0
         self.badRobotCnt = 0 # 历史异常脱机挂个数
         
@@ -35,6 +35,11 @@
                 nowTime = time.time()
 
                 if self.lastLoginTime and nowTime - self.lastLoginTime > self.ProcessFindTJGTime:
+                    logging.debug( "self.tjgLimitCnt %s " % self.tjgLimitCnt )
+                    # 限制脱机挂登录数量, 没有实时的玩家上线后会补收益
+                    if self.robotMgr.GetRobotCount() > self.tjgLimitCnt:
+                        self.robotMgr.dbRobot.ClearToken()
+                    
                     self.lastLoginTime = nowTime
                     logoningList = self.robotMgr.GetRobotAccIDList()    # 在登录的机器人
                     
@@ -67,7 +72,11 @@
                     if index >= self.robotMgr.GetRobotCount():
                         # ProcessAI可能会清除了robot
                         break
-                    robot = self.robotMgr.GetRobot( index )
+                    try:
+                        robot = self.robotMgr.GetRobot( index )
+                    except:
+                        # 判断index防范不到,可能多线程引起,此处报错结束循环
+                        break
                     if not robot:
                         continue
                     robot.GetAIMgr().ProcessAI()
@@ -79,7 +88,11 @@
                 # 队列中清理无效的脱机挂, 一次只清理一个
                 for index in xrange(self.robotMgr.GetRobotCount()):
                     #logging.debug( "Run AI for Index:%d", index )
-                    robot = self.robotMgr.GetRobot( index )
+                    try:
+                        robot = self.robotMgr.GetRobot( index )
+                    except:
+                        # 判断index防范不到,可能多线程引起,此处报错结束循环
+                        break
                     if not robot:
                         print "====没有机器人"
                         self.robotMgr.Remove(robot)

--
Gitblit v1.8.0