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 @@ - - - - - - - - - + + + + + + + + +