修改红中打包问题

master
miaoqingshuai 2026-06-16 21:29:17 +08:00
parent 4ea9fea6f0
commit f22e96c4d4
5 changed files with 464 additions and 397 deletions

View File

@ -25,6 +25,25 @@
</dependencies> </dependencies>
<!-- -->
<!-- <build>-->
<!-- <finalName>robot</finalName>-->
<!-- <plugins>-->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-compiler-plugin</artifactId>-->
<!-- <version>3.6.1</version>-->
<!-- <configuration>-->
<!-- &lt;!&ndash; <compilerArgument>-parameters</compilerArgument> &ndash;&gt;-->
<!-- <source>1.8</source>-->
<!-- <target>1.8</target>-->
<!-- <encoding>UTF-8</encoding>-->
<!-- </configuration>-->
<!-- </plugin>-->
<!-- </plugins>-->
<!-- </build>-->
<build> <build>
<finalName>robot</finalName> <finalName>robot</finalName>
@ -41,7 +60,29 @@
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>robot.mj.EXMainServer</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -36,11 +36,11 @@ public class Config {
/** 游戏服务器主机地址 */ /** 游戏服务器主机地址 */
/*public static final String GAME_SERVER_HOST = "8.134.76.43"; /*public static final String GAME_SERVER_HOST = "8.134.76.43";
public static final String DEFAULT_GROUP_ID = "762479";*/ public static final String DEFAULT_GROUP_ID = "762479";*/
public static final String DEFAULT_GROUP_ID = "426149"; public static final String DEFAULT_GROUP_ID = "383709";
public static final String GAME_SERVER_HOST = "127.0.0.1"; public static final String GAME_SERVER_HOST = "8.163.97.101";
/** 游戏服务器端口 */ /** 游戏服务器端口 */
public static final String GAME_SERVER_PORT = "6421"; public static final String GAME_SERVER_PORT = "26421";
/** 默认密码 */ /** 默认密码 */
public static final String DEFAULT_PASSWORD = "123456"; public static final String DEFAULT_PASSWORD = "123456";

View File

@ -416,6 +416,8 @@ public class EXGameController extends GameController {
//成功响应后才建立映射关系 //成功响应后才建立映射关系
synchronized (robotRoomMapping) { synchronized (robotRoomMapping) {
robotRoomMapping.put(robotUser.getConnecId(), robotUser); robotRoomMapping.put(robotUser.getConnecId(), robotUser);
robotConnectionManager.reconnectToGameServer(response, robotUser, client);
} }
log.info("机器人{"+robotId+"}已成功加入房间{"+roomId+"},建立映射关系"); log.info("机器人{"+robotId+"}已成功加入房间{"+roomId+"},建立映射关系");

View File

@ -8,8 +8,8 @@ import com.taurus.core.events.Event;
import com.taurus.core.events.IEventListener; import com.taurus.core.events.IEventListener;
import com.taurus.core.plugin.redis.Redis; import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.util.ICallback; import com.taurus.core.util.ICallback;
import com.taurus.core.util.Logger;
import com.taurus.core.util.StringUtil; import com.taurus.core.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import robot.mj.business.AccountBusiness; import robot.mj.business.AccountBusiness;
import robot.mj.handler.HuNanHongZhong; import robot.mj.handler.HuNanHongZhong;
@ -20,6 +20,7 @@ import taurus.client.TaurusClient;
import taurus.client.SocketCode; import taurus.client.SocketCode;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import taurus.util.ROBOTEventType; import taurus.util.ROBOTEventType;
import com.taurus.core.util.Logger;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
@ -31,8 +32,9 @@ import static robot.mj.thread.ThreadPoolConfig.scheduleDelay;
* - * -
*/ */
public class RobotConnectionManager { public class RobotConnectionManager {
private static final Logger log = Logger.getLogger(RobotConnectionManager.class);
private static final Logger log = LoggerFactory.getLogger(RobotConnectionManager.class); // private static final Logger log = LoggerFactory.getLogger(RobotConnectionManager.class);
private static final Map<String, HuNanHongZhong> huNanHongZhongInstances = new ConcurrentHashMap<>(); private static final Map<String, HuNanHongZhong> huNanHongZhongInstances = new ConcurrentHashMap<>();
//记录活跃连接 用于资源清理判断 //记录活跃连接 用于资源清理判断
@ -208,7 +210,7 @@ public class RobotConnectionManager {
ITObject param = message.param; ITObject param = message.param;
//回调协议号 //回调协议号
String command = message.command; String command = message.command;
log.info("收到游戏协议 " + command);
//根据玩法 ID 处理不同的回调 //根据玩法 ID 处理不同的回调
if (StringUtil.isNotEmpty(command)) { if (StringUtil.isNotEmpty(command)) {
//直接处理协议 //直接处理协议
@ -376,6 +378,19 @@ public class RobotConnectionManager {
*/ */
private void handleProtocol(String command, Message message, TaurusClient client, String connecId) { private void handleProtocol(String command, Message message, TaurusClient client, String connecId) {
RobotUser robotUser = robotRoomMapping.get(connecId); RobotUser robotUser = robotRoomMapping.get(connecId);
log.info("connecId " + connecId);
for (Map.Entry<String, RobotUser> entry : robotRoomMapping.entrySet()) {
String key = entry.getKey();
RobotUser user = entry.getValue();
log.info("Key" + key);
log.info("user seat" + user.getSeat());
log.info("user connecId" + user.getConnecId());
log.info("user robotId" + user.getRobotId());
log.info("robotRoomMapping " + robotRoomMapping);
}
//更新连接的最后访问时间 //更新连接的最后访问时间
EXGameController.updateLastAccessTime(connecId); EXGameController.updateLastAccessTime(connecId);
@ -409,7 +424,7 @@ public class RobotConnectionManager {
} }
//摸牌 //摸牌
else if ("819".equalsIgnoreCase(command)) { else if ("819".equalsIgnoreCase(command)) {
huNanHongZhong.getCard(command, message); huNanHongZhong.getCard(command, message, robotUser);
//处理完协议后保存到Redis //处理完协议后保存到Redis
HuNanHongZhong currentInstance = huNanHongZhongInstances.get(connecId); HuNanHongZhong currentInstance = huNanHongZhongInstances.get(connecId);
currentInstance.saveToRedis(connecId); currentInstance.saveToRedis(connecId);
@ -555,8 +570,7 @@ public class RobotConnectionManager {
else if ("2008".equalsIgnoreCase(command)) { else if ("2008".equalsIgnoreCase(command)) {
updateLeftoverRobot(Integer.parseInt(robotUser.getRobotId())); updateLeftoverRobot(Integer.parseInt(robotUser.getRobotId()));
disconnectFromGameServer(connecId); disconnectFromGameServer(connecId);
} } else if ("2009".equalsIgnoreCase(command)) {
else if ("2009".equalsIgnoreCase(command)) {
scheduleDelay(() -> { scheduleDelay(() -> {
Jedis jedis = null; Jedis jedis = null;
try { try {
@ -649,7 +663,8 @@ public class RobotConnectionManager {
if (finalObject.getTObject("account") != null) { if (finalObject.getTObject("account") != null) {
ITObject validate = TObject.newInstance(); ITObject validate = TObject.newInstance();
validate.putString("token", finalObject.getString("token")); validate.putString("token", finalObject.getString("token"));
robotUser.setToken(finalObject.getString("token"));; robotUser.setToken(finalObject.getString("token"));
;
robotUser.setLoginsession("{user}:" + robotUser.getRobotId()); robotUser.setLoginsession("{user}:" + robotUser.getRobotId());
if (robotUser.getLoginsession() != null) { if (robotUser.getLoginsession() != null) {
robotUser.setIsLogin(true); robotUser.setIsLogin(true);

View File

@ -6,22 +6,26 @@ import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.ITObject; import com.taurus.core.entity.ITObject;
import com.taurus.core.entity.TObject; import com.taurus.core.entity.TObject;
import com.taurus.core.plugin.redis.Redis; import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.util.Logger;
import com.taurus.core.util.StringUtil; import com.taurus.core.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import robot.mj.info.RobotUser;
import taurus.client.Message; import taurus.client.Message;
import taurus.client.TaurusClient; import taurus.client.TaurusClient;
import taurus.util.CardUtil; import taurus.util.CardUtil;
import taurus.util.HongZhongSuanFaTest; import taurus.util.HongZhongSuanFaTest;
import taurus.util.Util; import taurus.util.Util;
import com.taurus.core.util.Logger;
import java.util.*; import java.util.*;
import static robot.mj.thread.ThreadPoolConfig.getBusinessThreadPool; import static robot.mj.thread.ThreadPoolConfig.getBusinessThreadPool;
public class HuNanHongZhong { public class HuNanHongZhong {
private static final Logger log = LoggerFactory.getLogger(HuNanHongZhong.class); // private static final Logger log = LoggerFactory.getLogger(HuNanHongZhong.class);
private static final Logger log = Logger.getLogger(HuNanHongZhong.class);
//红中麻将手牌 //红中麻将手牌
private final List<Integer> hongZhongCardInhand = new ArrayList<>(); private final List<Integer> hongZhongCardInhand = new ArrayList<>();
@ -92,9 +96,9 @@ public class HuNanHongZhong {
} }
/** /**
* JSONRedis * JSONRedis
*
* @param connecId ID * @param connecId ID
*/ */
public void saveToRedis(String connecId) { public void saveToRedis(String connecId) {
@ -122,6 +126,7 @@ public class HuNanHongZhong {
/** /**
* Redis * Redis
*
* @param connecId ID * @param connecId ID
* @return * @return
*/ */
@ -140,14 +145,16 @@ public class HuNanHongZhong {
if (stateMap.containsKey("hongZhongCardInhand")) { if (stateMap.containsKey("hongZhongCardInhand")) {
hongZhongCardInhand.clear(); hongZhongCardInhand.clear();
List<Integer> handCards = gson.fromJson(stateMap.get("hongZhongCardInhand"), List<Integer> handCards = gson.fromJson(stateMap.get("hongZhongCardInhand"),
new TypeToken<List<Integer>>(){}.getType()); new TypeToken<List<Integer>>() {
}.getType());
if (handCards != null) hongZhongCardInhand.addAll(handCards); if (handCards != null) hongZhongCardInhand.addAll(handCards);
} }
if (stateMap.containsKey("hongZhongchuguopai")) { if (stateMap.containsKey("hongZhongchuguopai")) {
hongZhongchuguopai.clear(); hongZhongchuguopai.clear();
List<Integer> handCards = gson.fromJson(stateMap.get("hongZhongchuguopai"), List<Integer> handCards = gson.fromJson(stateMap.get("hongZhongchuguopai"),
new TypeToken<List<Integer>>(){}.getType()); new TypeToken<List<Integer>>() {
}.getType());
if (handCards != null) hongZhongchuguopai.addAll(handCards); if (handCards != null) hongZhongchuguopai.addAll(handCards);
} }
@ -167,6 +174,7 @@ public class HuNanHongZhong {
/** /**
* Redis * Redis
*
* @param connecId ID * @param connecId ID
*/ */
public static void removeFromRedis(String connecId) { public static void removeFromRedis(String connecId) {
@ -184,6 +192,7 @@ public class HuNanHongZhong {
/** /**
* *
*
* @param handCard * @param handCard
*/ */
public void updateHandCard(List<Integer> handCard) { public void updateHandCard(List<Integer> handCard) {
@ -227,18 +236,19 @@ public class HuNanHongZhong {
* @param message * @param message
* @return * @return
*/ */
public String getCard(String command, Message message) { public String getCard(String command, Message message, RobotUser robotUser) {
log.info("摸牌协议-----{} message---{}", command, message);
if (command.equalsIgnoreCase("819")) { if (command.equalsIgnoreCase("819")) {
ITObject param = message.param; ITObject param = message.param;
if (param == null) { if (param == null) {
return null; return null;
} }
// {seat=2, Ishupai=0, isBaoTing=-1, tingcard=0, isgang=0, card=101, left_count=106} log.info("819机器人摸牌所有参数" + param);
log.info("轮到用户:{}的用户摸牌, 牌为:{}", param.getInt("player"), param.getInt("card")); Integer seat1 = param.getInt("seat");
log.debug("用户id: {}", playerId); Integer seat2 = robotUser.getSeat();
log.debug("座位号: {}", param.getInt("seat")); log.info("819摸牌 后台发的座位号" + seat1);
if (param.getInt("player") != null) { log.info("819摸牌 机器人座位号" + seat2);
if (Objects.equals(seat1, seat2)) {
int drawnCard = param.getInt("card"); int drawnCard = param.getInt("card");
hongZhongSuanFaTest.drawnCards = drawnCard; hongZhongSuanFaTest.drawnCards = drawnCard;
@ -459,15 +469,14 @@ public class HuNanHongZhong {
params.putTArray("outcard_list", CardUtil.maJiangToTArray(cardsToSend)); params.putTArray("outcard_list", CardUtil.maJiangToTArray(cardsToSend));
} }
params.putTArray("card_list", CardUtil.maJiangToTArray(hongZhongCardInhand)); params.putTArray("card_list", CardUtil.maJiangToTArray(hongZhongCardInhand));
log.info("机器人牌============{}", params);
// 将当前出的牌添加到历史出牌列表 // 将当前出的牌添加到历史出牌列表
hongZhongchuguopai.add(cardToOut); hongZhongchuguopai.add(cardToOut);
// 从手牌中移除 // 从手牌中移除
hongZhongCardInhand.remove(Integer.valueOf(cardToOut)); hongZhongCardInhand.remove(Integer.valueOf(cardToOut));
log.info("出牌: {}", cardToOut); log.info("机器人 出牌"+ cardToOut);
log.info("目前机器人剩余手牌{}", hongZhongCardInhand.toString()); log.info("目前机器人剩余手牌"+ hongZhongCardInhand);
params.putString("session", session + "," + token); params.putString("session", session + "," + token);
log.info("机器人params" + params);
//使用线程池替代CompletableFuture.runAsync + Thread.sleep //使用线程池替代CompletableFuture.runAsync + Thread.sleep
getBusinessThreadPool().execute(() -> { getBusinessThreadPool().execute(() -> {
try { try {