diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..d177bb0
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..885a634
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..57d58a3
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index e208459..7552612 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,5 +1,24 @@
+
+
+
+
diff --git a/game_web/robot_mgr/.idea/jarRepositories.xml b/game_web/robot_mgr/.idea/jarRepositories.xml
index 712ab9d..af6ee75 100644
--- a/game_web/robot_mgr/.idea/jarRepositories.xml
+++ b/game_web/robot_mgr/.idea/jarRepositories.xml
@@ -16,5 +16,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/game_web/robot_mgr/.idea/pom.xml.iml b/game_web/robot_mgr/.idea/pom.xml.iml
new file mode 100644
index 0000000..dfa92c3
--- /dev/null
+++ b/game_web/robot_mgr/.idea/pom.xml.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/game_web/robot_mgr/src/main/java/com/group/MainServer.java b/game_web/robot_mgr/src/main/java/com/group/MainServer.java
index 43ab0cd..bd0914e 100644
--- a/game_web/robot_mgr/src/main/java/com/group/MainServer.java
+++ b/game_web/robot_mgr/src/main/java/com/group/MainServer.java
@@ -116,7 +116,7 @@ public class MainServer extends Extension {
}
Map gameRobotConfig = new HashMap<>();
- gameRobotConfig.put(10, 1);
+ gameRobotConfig.put(10, 10);
gameRobotConfig.put(22, 0);
int robotIndex = 0;
diff --git a/game_web/robot_mgr/src/main/java/com/group/robot/connect/RobotDisconnect.java b/game_web/robot_mgr/src/main/java/com/group/robot/connect/RobotDisconnect.java
index 500cb5a..eae1367 100644
--- a/game_web/robot_mgr/src/main/java/com/group/robot/connect/RobotDisconnect.java
+++ b/game_web/robot_mgr/src/main/java/com/group/robot/connect/RobotDisconnect.java
@@ -83,10 +83,8 @@ public class RobotDisconnect {
}
//更新Redis2中的机器人start状态为0
- updateRedis2StartStatus(robotId, 0);
+ updateRobotDB(robotId, 0);
- //更新机器人状态为可用
- updateDatabaseStatus(robotId);
log.info("机器人 {} 断开连接流程完成", robotId);
} catch (Exception e) {
log.error("统一断开机器人 {} 连接时发生异常", robotId, e);
@@ -109,27 +107,20 @@ public class RobotDisconnect {
}
}
- /**
- * 更新数据库状态
- */
- private void updateDatabaseStatus(int robotId) {
- try {
- String sql = String.format("UPDATE `account` SET start = %d WHERE id = %d", 0, robotId);
- DataBase.use().executeUpdate(sql);
- log.debug("数据库已更新机器人 {} 状态为可用", robotId);
- } catch (Exception e) {
- log.error("更新机器人 {} 数据库状态失败", robotId, e);
- }
- }
+
/**
- * 更新Redis2中机器人的start状态
+ * 更新redis及数据库状态
*/
- private void updateRedis2StartStatus(int robotId, int startValue) {
+ private void updateRobotDB(int robotId, int startValue) {
try (Jedis jedis2 = Redis.use("group1_db2").getJedis()) {
String gRobotKey = "{grobot}:" + robotId;
jedis2.hset(gRobotKey, "start", String.valueOf(startValue));
log.debug("Redis2已更新机器人 {} 的start状态为 {}", robotId, startValue);
+
+ String sql = String.format("UPDATE `account` SET start = %d WHERE id = %d", startValue, robotId);
+ DataBase.use().executeUpdate(sql);
+ log.debug("数据库已更新机器人 {} 状态为可用", robotId);
} catch (Exception e) {
log.error("更新机器人 {} Redis2 start状态失败", robotId, e);
}
diff --git a/game_web/robot_mgr/src/main/java/com/group/robot/handler/RobotConnectionHandler.java b/game_web/robot_mgr/src/main/java/com/group/robot/handler/RobotConnectionHandler.java
index 27e3f9c..ca803ae 100644
--- a/game_web/robot_mgr/src/main/java/com/group/robot/handler/RobotConnectionHandler.java
+++ b/game_web/robot_mgr/src/main/java/com/group/robot/handler/RobotConnectionHandler.java
@@ -221,64 +221,6 @@ public class RobotConnectionHandler {
}
}
-
- /**
- * 超时检查 6秒没有玩家加入 则退出房间
- * @param robot 机器人信息
- */
- public void readyTimeRobotExit(RobotInfo robot, Object joinRoomLock) {
- CompletableFuture.runAsync(() -> {
- try {
- Thread.sleep(6000);
- log.info("机器人 {} 准备时间超过6秒且房间人数不足,退出房间", robot.getRobotId());
- TaurusClient client = robotClients.get(robot.getRobotId());
-
- if (client != null) {
- //发送离开房间协议
- ITObject param = new TObject();
- param.putString("robotId", String.valueOf(robot.getRobotId()));
- param.putString("connecId", robotConnectionIds.get(robot.getRobotId()));
- System.out.println("readyTimeRobotExit 2005 client: "+ robotConnectionIds.get(robot.getRobotId()));
- client.send("2005", param, response -> {
- log.debug("机器人 {} 发送离开房间请求", robot.getRobotId());
- });
- } else {
- log.warn("机器人 {} 连接不存在或未激活,跳过离开房间操作", robot.getRobotId());
- }
-
- //机器人退出空房间 增加leftover_robot数量
- if (joinRoomLock != null) {
- synchronized (joinRoomLock) {
- increaseLeftoverRobot(robot);
- }
- } else {
- increaseLeftoverRobot(robot);
- }
- } catch (InterruptedException e) {
- log.debug("超时检查线程被中断: {}", robot.getRobotId());
- Thread.currentThread().interrupt();
- }
- });
- }
-
- /**
- * 增加leftover_robot数量 机器人退出空房间的情况
- */
- private void increaseLeftoverRobot(RobotInfo robot) {
- try (Jedis jedis11 = Redis.use("group1_db11").getJedis();Jedis jedis2 = Redis.use("group1_db2").getJedis()) {
- String playKey = "g{" + robot.getGroupId() + "}:play:" + robot.getWanfaId();
- jedis11.hincrBy(playKey, "leftover_robot", 1);
-
- jedis2.hset("{grobot}:" + robot.getRobotId(), "start", "0");
-
- robotManager.markLeftoverRobotRecovered(robot.getRobotId());
- robotManager.roomProcessingFinish(robot.getRoomId());
- log.debug("机器人 {} 退出空房间,增加leftover_robot,群组={}, 玩法={}", robot.getRobotId(), robot.getGroupId(), robot.getWanfaId());
- } catch (Exception e) {
- log.error("增加Redis leftover_robot时异常,群组={}, 玩法={}", robot.getGroupId(), robot.getWanfaId(), e);
- }
- }
-
/**
* 发送初始化协议
*/
@@ -328,7 +270,7 @@ public class RobotConnectionHandler {
}
}, 10000);
- client.send("2002", readyParam, response -> {
+ client.send("1002", readyParam, response -> {
boolean success = response != null && response.returnCode == 0;
if (!future.isDone()) {
future.complete(success);
@@ -340,9 +282,9 @@ public class RobotConnectionHandler {
}
/**
- * 异步发送准备消息给指定机器人,返回CompletableFuture
+ * 异步发送准备消息给指定机器人
*/
- public CompletableFuture sendReadyMessageAsyncCompletable(RobotInfo robot) {
+ public CompletableFuture sendReadyMessage(RobotInfo robot) {
CompletableFuture future = new CompletableFuture<>();
TaurusClient client = robotClients.get(robot.getRobotId());
@@ -356,7 +298,7 @@ public class RobotConnectionHandler {
readyParam.putString("robotId", String.valueOf(robot.getRobotId()));
readyParam.putString("connecId", robotConnectionIds.get(robot.getRobotId()));
- // 设置超时机制
+ //超时机制
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
@@ -365,9 +307,9 @@ public class RobotConnectionHandler {
future.completeExceptionally(new RuntimeException("Ready message timeout"));
}
}
- }, 10000); // 10秒超时
+ }, 10000);
- client.send("2003", readyParam, response -> {
+ client.send("1003", readyParam, response -> {
boolean success = response != null && response.returnCode == 0;
if (!future.isDone()) {
future.complete(success);
diff --git a/game_web/robot_mgr/src/main/java/com/group/robot/matcher/RoomWanfaMatcher.java b/game_web/robot_mgr/src/main/java/com/group/robot/matcher/RoomWanfaMatcher.java
index 7a189e3..24cc429 100644
--- a/game_web/robot_mgr/src/main/java/com/group/robot/matcher/RoomWanfaMatcher.java
+++ b/game_web/robot_mgr/src/main/java/com/group/robot/matcher/RoomWanfaMatcher.java
@@ -164,7 +164,7 @@ public class RoomWanfaMatcher {
synchronized (roomSpecificLock) {
if (!processingRooms.contains(roomId)) {
processingRooms.add(roomId);
- robotJoinRoom(robot, true);
+ robotJoinRoom(robot);
}
}
} else {
@@ -175,7 +175,7 @@ public class RoomWanfaMatcher {
synchronized (roomSpecificLock) {
if (!processingRooms.contains(roomId)) {
processingRooms.add(roomId);
- robotJoinRoom(robot, false);
+ robotJoinRoom(robot);
}
}
}
@@ -191,10 +191,9 @@ public class RoomWanfaMatcher {
/**
* 机器人加入房间
- * @param isRobot 是否是机器人创建房间
* @param robot 机器人实例
* */
- private void robotJoinRoom(RobotInfo robot, boolean isRobot) {
+ private void robotJoinRoom(RobotInfo robot) {
String roomId = robot != null ? robot.getRoomId() : null;
Object roomSpecificLock = robotManager.getRoomLock(roomId);
synchronized (roomSpecificLock) {
@@ -225,7 +224,7 @@ public class RoomWanfaMatcher {
if (joinSuccess) {
System.out.println("机器人"+robot.getRobotId()+" 加入了房间 机器人状态 :" + robot.isConnecting());
//准备阶段
- return robotConnectionHandler.sendReadyMessageAsyncCompletable(finalRobotInfo);
+ return robotConnectionHandler.sendReadyMessage(finalRobotInfo);
} else {
System.out.println("robotJoinRoomInternal机器人加入了房间 失败 :" + robot.isConnecting());
//加入失败 释放机器人
@@ -237,10 +236,6 @@ public class RoomWanfaMatcher {
System.out.println("robotJoinRoomInternal机器人准备 房间 机器人状态 :" + robot.isConnecting());
roomToRobotMap.put(roomId, finalRobotInfo.getRobotId());
updateRobotStatusRedis(finalRobotInfo);
- if (isRobot) {
- //6秒没有玩家加入 则退出房间
- //robotConnectionHandler.readyTimeRobotExit(finalRobotInfo, robotManager.getRoomLock(roomId));
- }
} else {
System.out.println("robotJoinRoomInternal机器人准备 房间 失败 :" + robot.isConnecting());
//准备失败时释放机器人
@@ -284,7 +279,7 @@ public class RoomWanfaMatcher {
*/
private void onRoomCreated(RobotInfo robot) {
try {
- robotJoinRoom(robot, true);
+ robotJoinRoom(robot);
} catch (Exception e) {
if (robot != null) {
robotConnectionHandler.disconnectRobot(robot.getRobotId());
diff --git a/game_web/robot_mgr/src/main/webapp/config/taurus-core.xml b/game_web/robot_mgr/src/main/webapp/config/taurus-core.xml
index 0f1f1d1..6a2ced8 100644
--- a/game_web/robot_mgr/src/main/webapp/config/taurus-core.xml
+++ b/game_web/robot_mgr/src/main/webapp/config/taurus-core.xml
@@ -43,14 +43,14 @@
db1
com.mysql.cj.jdbc.Driver
- jdbc:mysql://8.134.76.43:8060/wb_game
+ jdbc:mysql://8.138.242.190:8060/wb_game
root
6KYnXJjGhxNceF8e
@@ -93,15 +93,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/game_web/robot_mgr/src/main/webapp/logs/web_main.log b/game_web/robot_mgr/src/main/webapp/logs/web_main.log
index ce380d5..4e126fd 100644
--- a/game_web/robot_mgr/src/main/webapp/logs/web_main.log
+++ b/game_web/robot_mgr/src/main/webapp/logs/web_main.log
@@ -8,3 +8,27 @@ taurus.client.io.TSocketException
at taurus.client.io.SocketTcp$2.run(SocketTcp.java:70)
at java.lang.Thread.run(Thread.java:750)
04 二月 2026 | 12:58:54,539 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : ExceptionOnReceive
+04 二月 2026 | 15:17:53,519 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
+04 二月 2026 | 15:17:53,705 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
+04 二月 2026 | 15:17:54,557 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 15:21:54,810 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
+04 二月 2026 | 15:21:54,969 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
+04 二月 2026 | 15:21:55,825 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 15:22:52,765 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
+04 二月 2026 | 15:22:52,925 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
+04 二月 2026 | 15:22:53,492 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 16:09:30,082 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
+04 二月 2026 | 16:09:30,332 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
+04 二月 2026 | 16:09:39,482 | INFO | main | core.plugin.PluginService | | plugin[database] load success!
+04 二月 2026 | 16:09:39,659 | INFO | main | core.plugin.PluginService | | plugin[redis] load success!
+04 二月 2026 | 16:09:40,020 | INFO | main | client.business.AccountBusiness | | id:101777 login
+04 二月 2026 | 16:09:40,240 | INFO | main | client.business.AccountBusiness | | ==========> password111 = 123456
+04 二月 2026 | 16:09:42,684 | INFO | main | client.business.AccountBusiness | | id:101999 login
+04 二月 2026 | 16:09:42,691 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 16:09:42,696 | INFO | main | client.business.AccountBusiness | | ==========> password111 = 123456
+04 二月 2026 | 16:09:44,507 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 16:09:44,647 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 16:09:44,806 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
+04 二月 2026 | 16:09:44,817 | INFO | main | client.business.AccountBusiness | | id:104637 login
+04 二月 2026 | 16:09:44,830 | INFO | main | client.business.AccountBusiness | | ==========> password111 = 123456
+04 二月 2026 | 16:09:46,408 | INFO | NetEvent-Thread | client.io.SocketEngine | | status : Connect
diff --git a/game_web/robot_mgr/target/classes/com/group/MainServer.class b/game_web/robot_mgr/target/classes/com/group/MainServer.class
index 3cc6077..976bb59 100644
Binary files a/game_web/robot_mgr/target/classes/com/group/MainServer.class and b/game_web/robot_mgr/target/classes/com/group/MainServer.class differ
diff --git a/game_web/robot_mgr/target/classes/com/group/robot/connect/RobotDisconnect.class b/game_web/robot_mgr/target/classes/com/group/robot/connect/RobotDisconnect.class
index 6528c1f..2b9811c 100644
Binary files a/game_web/robot_mgr/target/classes/com/group/robot/connect/RobotDisconnect.class and b/game_web/robot_mgr/target/classes/com/group/robot/connect/RobotDisconnect.class differ
diff --git a/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$3.class b/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$3.class
index d4bb50f..b75b710 100644
Binary files a/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$3.class and b/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$3.class differ
diff --git a/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$4.class b/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$4.class
index cb161e8..c76c1a8 100644
Binary files a/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$4.class and b/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler$4.class differ
diff --git a/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler.class b/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler.class
index 992ca28..00ea643 100644
Binary files a/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler.class and b/game_web/robot_mgr/target/classes/com/group/robot/handler/RobotConnectionHandler.class differ
diff --git a/game_web/robot_mgr/target/classes/com/group/robot/matcher/RoomWanfaMatcher.class b/game_web/robot_mgr/target/classes/com/group/robot/matcher/RoomWanfaMatcher.class
index d3f31d1..a8a671b 100644
Binary files a/game_web/robot_mgr/target/classes/com/group/robot/matcher/RoomWanfaMatcher.class and b/game_web/robot_mgr/target/classes/com/group/robot/matcher/RoomWanfaMatcher.class differ
diff --git a/robots/majiang/robot_mj_cs/config/game-config.xml b/robots/majiang/robot_mj_cs/config/game-config.xml
index 038aad0..bddc052 100644
--- a/robots/majiang/robot_mj_cs/config/game-config.xml
+++ b/robots/majiang/robot_mj_cs/config/game-config.xml
@@ -1,8 +1,8 @@
- 8.134.76.43
- 8.134.76.43
+ 8.138.242.190
+ 8.138.242.190
8701
7701
10
diff --git a/robots/majiang/robot_mj_cs/config/taurus-core.xml b/robots/majiang/robot_mj_cs/config/taurus-core.xml
index 04a186f..12b5989 100644
--- a/robots/majiang/robot_mj_cs/config/taurus-core.xml
+++ b/robots/majiang/robot_mj_cs/config/taurus-core.xml
@@ -38,15 +38,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+