From 447fc738d9f7035650057ce4211d160de8d004ee Mon Sep 17 00:00:00 2001 From: RedSparr0w Date: Fri, 22 Nov 2019 13:03:02 +1300 Subject: [PATCH] initial bots --- .../src/redone/game/bots/Bot.java | 39 +++++++++++++++++++ .../src/redone/game/bots/BotConstants.java | 6 +++ .../src/redone/game/bots/BotHandler.java | 34 ++++++++++++++++ .../src/redone/game/players/Client.java | 13 ------- .../src/redone/net/packets/impl/Commands.java | 7 ++++ 5 files changed, 86 insertions(+), 13 deletions(-) create mode 100644 2006Redone Server/src/redone/game/bots/Bot.java create mode 100644 2006Redone Server/src/redone/game/bots/BotConstants.java create mode 100644 2006Redone Server/src/redone/game/bots/BotHandler.java diff --git a/2006Redone Server/src/redone/game/bots/Bot.java b/2006Redone Server/src/redone/game/bots/Bot.java new file mode 100644 index 00000000..3834cc16 --- /dev/null +++ b/2006Redone Server/src/redone/game/bots/Bot.java @@ -0,0 +1,39 @@ +package redone.game.bots; + + +import redone.Server; +import redone.game.players.Client; +import redone.game.players.Player; +import redone.game.players.PlayerHandler; + +import static redone.game.players.PlayerSave.loadPlayerInfo; + +public class Bot { + + private Client botClient; + + public Bot(String username) { + botClient = new Client(null, -1); + botClient.playerName = username; + + botClient.playerName = username; + botClient.playerName2 = botClient.playerName; + botClient.playerPass = "bot_password"; + + botClient.saveCharacter = true; + char first = username.charAt(0); + botClient.properName = Character.toUpperCase(first) + username.substring(1, username.length()); + + botClient.saveFile = true; + botClient.saveCharacter = true; + botClient.isActive = true; + botClient.disconnected = false; + System.out.println(botClient.getPlayerAssistant().getTotalLevel()); + Server.playerHandler.newPlayerClient(botClient); + loadPlayerInfo(botClient, username, "bot_password", false); + } + + public Client getBotClient() { + return botClient; + } +} diff --git a/2006Redone Server/src/redone/game/bots/BotConstants.java b/2006Redone Server/src/redone/game/bots/BotConstants.java new file mode 100644 index 00000000..fc64cdff --- /dev/null +++ b/2006Redone Server/src/redone/game/bots/BotConstants.java @@ -0,0 +1,6 @@ +package redone.game.bots; + +public class BotConstants +{ + public static final int MAX_BOTS = 100; +} \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/bots/BotHandler.java b/2006Redone Server/src/redone/game/bots/BotHandler.java new file mode 100644 index 00000000..2db89e6e --- /dev/null +++ b/2006Redone Server/src/redone/game/bots/BotHandler.java @@ -0,0 +1,34 @@ +package redone.game.bots; + +import redone.Constants; +import redone.game.players.PlayerHandler; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class BotHandler +{ + static final List botList = new ArrayList<>(BotConstants.MAX_BOTS); + static final Random random = new SecureRandom(); + + public static void connectBots(int botCount) + { + Bot bot; + for (int bots = 0; bots < botCount; bots++) + { + if (PlayerHandler.playerCount >= Constants.MAX_PLAYERS) + { + System.out.println("Bot could not be connected, server is full."); + return; + } + + final String botName = "bot" + random.nextInt(9999) + random.nextInt(9999); + + bot = new Bot(botName); + botList.add(bot); + } + + } +} diff --git a/2006Redone Server/src/redone/game/players/Client.java b/2006Redone Server/src/redone/game/players/Client.java index 4fc05104..5f506753 100644 --- a/2006Redone Server/src/redone/game/players/Client.java +++ b/2006Redone Server/src/redone/game/players/Client.java @@ -594,10 +594,6 @@ public class Client extends Player { super.destruct(); // PlayerSave.saveGame(this); } - - public static final String[][] data = { - {"Andrew", "Andrew1"}, - }; @Override public void initialize() { @@ -606,15 +602,6 @@ public class Client extends Player { logout(); return; } - /*(for (int i = 0; i < data.length; i++) { - if (playerRights > 0) { - if (playerName != data[0][i]) { - Connection.addNameToBanList(playerName); - Connection.addNameToFile(playerName); - disconnected = true; - } - } - }*/ synchronized (this) { outStream.createFrame(249); outStream.writeByteA(membership ? 1 : 0); diff --git a/2006Redone Server/src/redone/net/packets/impl/Commands.java b/2006Redone Server/src/redone/net/packets/impl/Commands.java index 5680e154..d9b4c726 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Commands.java +++ b/2006Redone Server/src/redone/net/packets/impl/Commands.java @@ -3,6 +3,7 @@ package redone.net.packets.impl; import redone.Connection; import redone.Constants; import redone.Server; +import redone.game.bots.BotHandler; import redone.game.items.ItemAssistant; import redone.game.npcs.NpcHandler; import redone.game.players.*; @@ -92,6 +93,12 @@ public class Commands implements PacketType { player.getActionSender().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); } break; + case "bots": + if (arguments.length == 0) + player.getActionSender().sendMessage("Must have 1 argument: ::bots 5"); + else + BotHandler.connectBots(Integer.parseInt(arguments[0])); + break; case "wealth": int totalWealth = player.getPlayerAssistant().totalGold(); player.getActionSender().sendMessage("You currently have " + totalWealth + "gp.");