From 607178155ae6d725b52166396bfe67b45c35f55d Mon Sep 17 00:00:00 2001 From: RedSparr0w Date: Sat, 26 Oct 2019 14:15:59 +1300 Subject: [PATCH] refactor commands, add click to tele command --- .../src/redone/game/players/Player.java | 2 +- .../src/redone/net/packets/impl/Commands.java | 1019 +++++++++-------- .../src/redone/net/packets/impl/Walking.java | 16 +- 3 files changed, 546 insertions(+), 491 deletions(-) diff --git a/2006Redone Server/src/redone/game/players/Player.java b/2006Redone Server/src/redone/game/players/Player.java index 89ed991b..eac6765b 100644 --- a/2006Redone Server/src/redone/game/players/Player.java +++ b/2006Redone Server/src/redone/game/players/Player.java @@ -82,7 +82,7 @@ public abstract class Player { treeSpiritSpawned = false, chickenSpawned = false, clickedTree = false, filter = true, stopPlayer = false, npcCanAttack = true, gliderOpen = false, hasSandwhichLady = false, isHarvesting, openDuel = false, killedJad = false, canHealersRespawn = true, playerIsBusy = false, miningRock, - randomEventsEnabled = false, debugMode = false; + randomEventsEnabled = false, debugMode = false, clickToTele = false; public int votePoints, thankedForDonation, saveDelay, playerKilled, gertCat, restGhost, romeojuliet, runeMist, vampSlayer, cookAss, doricQuest, blackKnight, diff --git a/2006Redone Server/src/redone/net/packets/impl/Commands.java b/2006Redone Server/src/redone/net/packets/impl/Commands.java index c979a65e..abb31317 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Commands.java +++ b/2006Redone Server/src/redone/net/packets/impl/Commands.java @@ -11,6 +11,8 @@ import redone.util.GameLogger; import redone.util.Misc; import redone.world.clip.Region; +import java.util.Arrays; + import static redone.game.content.combat.magic.MagicTeleports.LUMBRIDGE_X; import static redone.game.content.combat.magic.MagicTeleports.LUMBRIDGE_Y; @@ -18,113 +20,118 @@ public class Commands implements PacketType { @Override public void processPacket(Client player, int packetType, int packetSize) { - String playerCommand = player.getInStream().readString(); + String[] messageArr = player.getInStream().readString().split(" "); + String playerCommand = messageArr[0]; + String[] commandArguments = Arrays.copyOfRange(messageArr, 1, messageArr.length); if ((playerCommand.startsWith("ban") || playerCommand.startsWith("ip") || playerCommand.startsWith("mute") || playerCommand.startsWith("un")) && player.playerRights > 0 && player.playerRights < 4) { - GameLogger.writeLog(player.playerName, "commands", player.playerName + " used command: " + playerCommand + ""); + GameLogger.writeLog(player.playerName, "commands", player.playerName + " used command: " + playerCommand); } if (player.playerRights >= 0) { - playerCommands(player, playerCommand); + playerCommands(player, playerCommand, commandArguments); } if (player.membership || player.playerRights > 1) { - donatorCommands(player, playerCommand); + donatorCommands(player, playerCommand, commandArguments); } if (player.playerRights >= 1) { - moderatorCommands(player, playerCommand); + moderatorCommands(player, playerCommand, commandArguments); } if (player.playerRights >= 2 && player.playerRights < 4) { - adminCommands(player, playerCommand); + adminCommands(player, playerCommand, commandArguments); } if (player.playerRights == 3) { - developerCommands(player, playerCommand); + developerCommands(player, playerCommand, commandArguments); } } - public static void playerCommands(Client player, String playerCommand) { - if (playerCommand.equalsIgnoreCase("bank")) { - player.getPlayerAssistant().openUpBank(); - } + public static void playerCommands(Client player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) + { + case "bank": + player.getPlayerAssistant().openUpBank(); + break; + case "claimvote": + if(!Server.ersSecret.equals("")) { + final String playerName = player.playerName; - if (playerCommand.startsWith("claimvote")) { - if(!Server.ersSecret.equals("")) { - final String playerName = player.playerName; - - com.everythingrs.vote.Vote.service.execute(new Runnable() { - @Override - public void run() { - try { - int currentPoints = player.votePoints; - com.everythingrs.vote.Vote[] reward = com.everythingrs.vote.Vote.reward(Server.ersSecret, playerName, "1", "all"); - if (reward[0].message != null) { - player.getActionSender().sendMessage(reward[0].message); - return; + com.everythingrs.vote.Vote.service.execute(new Runnable() { + @Override + public void run() { + try { + int currentPoints = player.votePoints; + com.everythingrs.vote.Vote[] reward = com.everythingrs.vote.Vote.reward(Server.ersSecret, playerName, "1", "all"); + if (reward[0].message != null) { + player.getActionSender().sendMessage(reward[0].message); + return; + } + player.votePoints = (currentPoints + reward[0].give_amount); + //player.getActionSender().sendMessage("Thank you for voting! You now have " + reward[0].vote_points + " vote points."); + player.getActionSender().sendMessage( + "Thank you for voting! You now have " + player.votePoints + " vote points."); + } catch (Exception e) { + player.getActionSender().sendMessage("Api Services are currently offline. Please check back shortly"); + e.printStackTrace(); } - player.votePoints = (currentPoints + reward[0].give_amount); - //player.getActionSender().sendMessage("Thank you for voting! You now have " + reward[0].vote_points + " vote points."); - player.getActionSender().sendMessage( - "Thank you for voting! You now have " + player.votePoints + " vote points."); - } catch (Exception e) { - player.getActionSender().sendMessage("Api Services are currently offline. Please check back shortly"); - e.printStackTrace(); } + + }); + } else { + player.getActionSender().sendMessage("Voting Is Not Enabled"); + } + break; + case "coords": + case "coord": + case "pos": + player.getActionSender().sendMessage("Your coords are [" + player.absX + "," + player.absY + "]"); + break; + case "null": + break; + case "players": + if (PlayerHandler.getPlayerCount() != 1) { + player.getActionSender().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online."); + } else { + player.getActionSender().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); + } + break; + case "wealth": + int totalWealth = player.getPlayerAssistant().totalGold(); + player.getActionSender().sendMessage("You currently have " + totalWealth + "gp."); + break; + case "gfx100": + if (arguments.length == 0) + player.getActionSender().sendMessage("Must have 1 argument: ::gfx100 80"); + else + player.gfx100(Integer.parseInt(arguments[0])); + break; + case "gfx0": + if (arguments.length == 0) + player.getActionSender().sendMessage("Must have 1 argument: ::gfx0 80"); + else + player.gfx0(Integer.parseInt(arguments[0])); + break; + case "tele": + if (player.connectedFrom.equals("127.0.0.1")) { + try { + if (arguments.length < 2) { + player.getActionSender().sendMessage("Must specify x, y and optionally z coordinates: ::tele 3222 3218 0"); + return; + } + if (arguments.length == 3) + player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), Integer.parseInt(arguments[2])); + else + player.getPlayerAssistant().movePlayer(Integer.parseInt(arguments[0]), Integer.parseInt(arguments[1]), player.heightLevel); + } catch (Exception e) { + player.getActionSender().sendMessage("Invalid coordinates"); } - - }); - } else { - player.getActionSender().sendMessage("Voting Is Not Enabled"); - } - } - - if (playerCommand.equalsIgnoreCase("coords") || playerCommand.equalsIgnoreCase("coord") || playerCommand.equalsIgnoreCase("pos")){ - player.getActionSender().sendMessage("Your coords are [" + player.absX + "," + player.absY + "]"); - } - - if (playerCommand.equalsIgnoreCase("players")) { - if (PlayerHandler.getPlayerCount() > 1) { - player.getActionSender().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online."); - } else { - player.getActionSender().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); - } - } - - if (playerCommand.equalsIgnoreCase("wealth")) { - - int totalWealth = player.getPlayerAssistant().totalGold(); - player.getActionSender().sendMessage("You currently have " + totalWealth + "gp."); - - } - - if (playerCommand.contains("clip") && player.playerRights < 2) { - return; - } - - if (playerCommand.startsWith("gfx100")) - { - player.gfx100(Integer.parseInt(playerCommand.split(" ")[1])); - } - if (playerCommand.startsWith("gfx0")) - { - player.gfx0(Integer.parseInt(playerCommand.split(" ")[1])); - } - - String message = null; - System.out.println(player.playerName + " is running " + playerCommand); - - if (playerCommand.contains("tele")) { - if (player.connectedFrom.equals("127.0.0.1")) - { - player.getPlayerAssistant().startTeleport(Integer.parseInt(playerCommand.split(" ")[1]), Integer.parseInt(playerCommand.split(" ")[2]), 0, "modern"); - } else { - player.getActionSender().sendMessage("Can't tele with ip " + player.connectedFrom); - } - } - switch (playerCommand) - { + } else { + player.getActionSender().sendMessage("Can't tele with ip " + player.connectedFrom); + } + break; case "close_interface": - player.getPlayerAssistant().closeAllWindows(); - break; + player.getPlayerAssistant().closeAllWindows(); + break; case "commands": - player.getActionSender().sendMessage("::players, ::highscores, ::loc, ::stuck, ::randomtoggle, ::debug"); - break; + player.getActionSender().sendMessage("::players, ::highscores, ::loc, ::stuck, ::randomtoggle, ::debug"); + break; case "loc": player.getActionSender().sendMessage(player.absX + "," + player.absY); break; @@ -137,14 +144,12 @@ public class Commands implements PacketType { case "randomtoggle": case "togglerandom": player.randomEventsEnabled = !player.randomEventsEnabled; - message = player.randomEventsEnabled ? "You will now receive random events." : "You will no longer receieve random events."; - player.getActionSender().sendMessage(message); + player.getActionSender().sendMessage("You will " + (player.debugMode ? "now" : "no longer") + " receieve random events."); break; case "debug": case "debugmode": player.debugMode = !player.debugMode; - message = player.debugMode ? "You will now receieve additional debug information when doing things" : "You will no longer receive additional info when doing things"; - player.getActionSender().sendMessage(message); + player.getActionSender().sendMessage("You will " + (player.debugMode ? "now" : "no longer") + " receieve additional debug information when doing things."); break; case "highscores": for (Player p : PlayerHandler.players) { @@ -185,461 +190,503 @@ public class Commands implements PacketType { } - public static void donatorCommands(Client player, String playerCommand) { + public static void donatorCommands(Client player, String playerCommand, String[] arguments) { } - public static void moderatorCommands(Client player, String playerCommand) { - if (playerCommand.startsWith("yell")) { - for (int j = 0; j < PlayerHandler.players.length; j++) { - if (PlayerHandler.players[j] != null) { - Client c2 = (Client)PlayerHandler.players[j]; - if (player.playerRights == 1) { - c2.getActionSender().sendMessage("@blu@[Moderator] @bla@"+ Misc.optimizeText(player.playerName) +": " + Misc.optimizeText(playerCommand.substring(5)) +""); - } else if (player.playerRights == 2) { - c2.getActionSender().sendMessage("@gre@[Administator] @bla@"+ Misc.optimizeText(player.playerName) +": " + Misc.optimizeText(playerCommand.substring(5)) +""); - } else if (player.playerRights == 3) { - c2.getActionSender().sendMessage("@red@[Developer] @bla@"+ Misc.optimizeText(player.playerName) +": " + Misc.optimizeText(playerCommand.substring(5)) +""); - } - } - } - } - - if (playerCommand.startsWith("mute")) { - try { - String playerToBan = playerCommand.substring(5); - Connection.addNameToMuteList(playerToBan); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Client c2 = (Client)PlayerHandler.players[i]; - c2.getActionSender().sendMessage("You have been muted by: " + player.playerName); - break; + public static void moderatorCommands(Client player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) { + case "yell": + for (int j = 0; j < PlayerHandler.players.length; j++) { + if (PlayerHandler.players[j] != null) { + Client c2 = (Client) PlayerHandler.players[j]; + if (player.playerRights == 1) { + c2.getActionSender().sendMessage("@blu@[Moderator] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); + } else if (player.playerRights == 2) { + c2.getActionSender().sendMessage("@gre@[Administator] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); + } else if (player.playerRights == 3) { + c2.getActionSender().sendMessage("@red@[Developer] @bla@" + Misc.optimizeText(player.playerName) + ": " + Misc.optimizeText(String.join(" ", arguments)) + ""); } } } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } + break; - if (playerCommand.startsWith("ipmute")) { - try { - String playerToBan = playerCommand.substring(7); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Connection.addIpToMuteList(PlayerHandler.players[i].connectedFrom); - player.getActionSender().sendMessage("You have IP Muted the user: "+PlayerHandler.players[i].playerName); - Client c2 = (Client)PlayerHandler.players[i]; - c2.getActionSender().sendMessage("You have been muted by: " + player.playerName); - break; + case "mute": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::mute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.addNameToMuteList(playerToBan); + for (int i = 0; i < Constants.MAX_PLAYERS; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Client c2 = (Client) PlayerHandler.players[i]; + c2.getActionSender().sendMessage("You have been muted by: " + player.playerName); + break; + } } } + } catch (Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } + break; - if (playerCommand.startsWith("unipmute")) { - try { - String playerToBan = playerCommand.substring(9); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Connection.unIPMuteUser(PlayerHandler.players[i].connectedFrom); - player.getActionSender().sendMessage("You have Un Ip-Muted the user: "+PlayerHandler.players[i].playerName); - break; + case "ipmute": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::ipmute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + for (int i = 0; i < Constants.MAX_PLAYERS; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Connection.addIpToMuteList(PlayerHandler.players[i].connectedFrom); + player.getActionSender().sendMessage("You have IP Muted the user: " + PlayerHandler.players[i].playerName); + Client c2 = (Client) PlayerHandler.players[i]; + c2.getActionSender().sendMessage("You have been muted by: " + player.playerName); + break; + } } } + } catch (Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } + break; - if (playerCommand.startsWith("unmute")) { - try { - String playerToBan = playerCommand.substring(7); - Connection.unMuteUser(playerToBan); - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } + case "unipmute": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::unipmute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + for (int i = 0; i < Constants.MAX_PLAYERS; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Connection.unIPMuteUser(PlayerHandler.players[i].connectedFrom); + player.getActionSender().sendMessage("You have Un Ip-Muted the user: " + PlayerHandler.players[i].playerName); + break; + } + } + } + } catch (Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); + } + break; + + case "unmute": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::unmute playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.unMuteUser(playerToBan); + } catch (Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); + } + break; } } - public static void adminCommands(Client player, String playerCommand) { - - if (playerCommand.equalsIgnoreCase("clearbank")) { - player.getItemAssistant().clearBank(); - } - - if (playerCommand.startsWith("ipban")) { // use as ::ipban name - try { - String playerToBan = playerCommand.substring(6); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - Connection.addIpToBanList(PlayerHandler.players[i].connectedFrom); - Connection.addIpToFile(PlayerHandler.players[i].connectedFrom); - player.getActionSender().sendMessage("You have IP banned the user: "+PlayerHandler.players[i].playerName+" with the host: "+PlayerHandler.players[i].connectedFrom); - PlayerHandler.players[i].disconnected = true; + public static void adminCommands(Client player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) { + case "clearbank": + player.getItemAssistant().clearBank(); + break; + case "clicktotele": + player.clickToTele = !player.clickToTele; + player.getActionSender().sendMessage("Click to teleport: " + (player.clickToTele ? "Enabled" : "Disabled")); + break; + case "ipban": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::ipban playername"); + return; + } + String playerToBan = String.join(" ", arguments); + for(int i = 0; i < Constants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + Connection.addIpToBanList(PlayerHandler.players[i].connectedFrom); + Connection.addIpToFile(PlayerHandler.players[i].connectedFrom); + player.getActionSender().sendMessage("You have IP banned the user: "+PlayerHandler.players[i].playerName+" with the host: "+PlayerHandler.players[i].connectedFrom); + PlayerHandler.players[i].disconnected = true; + } } } + } catch(Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } - - if (playerCommand.startsWith("ban") && playerCommand.charAt(3) == ' ') { // use as ::ban name - try { - String playerToBan = playerCommand.substring(4); - Connection.addNameToBanList(playerToBan); - Connection.addNameToFile(playerToBan); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { - PlayerHandler.players[i].disconnected = true; + break; + case "ban": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::ban playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.addNameToBanList(playerToBan); + Connection.addNameToFile(playerToBan); + for(int i = 0; i < Constants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToBan)) { + PlayerHandler.players[i].disconnected = true; + } } } + } catch(Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } - - if (playerCommand.startsWith("unban")) { - try { - String playerToBan = playerCommand.substring(6); - Connection.removeNameFromBanList(playerToBan); - player.getActionSender().sendMessage(playerToBan + " has been unbanned."); - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } - - if (playerCommand.equalsIgnoreCase("empty")) { - player.getPlayerAssistant().handleEmpty(); - } - - if (playerCommand.startsWith("dialogue")) { - int npcType = 1552; - int id = Integer.parseInt(playerCommand.split(" ")[1]); - player.getDialogueHandler().sendDialogues(id, npcType); - } - - if (playerCommand.startsWith("interface")) { - String[] args = playerCommand.split(" "); - player.getPlayerAssistant().showInterface(Integer.parseInt(args[1])); - } - - if (playerCommand.startsWith("gfx")) { - String[] args = playerCommand.split(" "); - player.gfx0(Integer.parseInt(args[1])); - } - - if (playerCommand.startsWith("anim")) { - String[] args = playerCommand.split(" "); - player.startAnimation(Integer.parseInt(args[1])); - player.getPlayerAssistant().requestUpdates(); - } - - if (playerCommand.equalsIgnoreCase("mypos")) { - player.getActionSender().sendMessage("X: " + player.absX); - player.getActionSender().sendMessage("Y: " + player.absY); - player.getActionSender().sendMessage("H: " + player.heightLevel); - } - - if (playerCommand.startsWith("bank")) { - player.getPlayerAssistant().openUpBank(); - } - - - if (playerCommand.startsWith("xteletome")) { - try { - String teleTo = playerCommand.substring(10); + break; + case "unban": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::unban playername"); + return; + } + String playerToBan = String.join(" ", arguments); + Connection.removeNameFromBanList(playerToBan); + player.getActionSender().sendMessage(playerToBan + " has been unbanned."); + } catch(Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); + } + break; + case "empty": + player.getPlayerAssistant().handleEmpty(); + break; + case "dialogue": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an id: ::dialogue id"); + return; + } + int npcType = 1552; + int dialogueID = Integer.parseInt(arguments[0]); + player.getDialogueHandler().sendDialogues(dialogueID, npcType); + break; + case "interface": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an id: ::interface id"); + return; + } + int interfaceID = Integer.parseInt(arguments[0]); + player.getPlayerAssistant().showInterface(interfaceID); + break; + case "gfx": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an id: ::gfx id"); + return; + } + int gfxID = Integer.parseInt(arguments[0]); + player.gfx0(gfxID); + break; + case "anim": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an id: ::anim id"); + return; + } + int animationID = Integer.parseInt(arguments[0]); + player.startAnimation(animationID); + player.getPlayerAssistant().requestUpdates(); + break; + case "mypos": + player.getActionSender().sendMessage("X: " + player.absX); + player.getActionSender().sendMessage("Y: " + player.absY); + player.getActionSender().sendMessage("H: " + player.heightLevel); + break; + case "bank": + player.getPlayerAssistant().openUpBank(); + break; + case "xteletome": + case "teletome": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::teletome playername"); + return; + } + String teleToMe = String.join(" ", arguments); + for (int i = 0; i < PlayerHandler.players.length; i++) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleToMe)) { + Client p = (Client) PlayerHandler.players[i]; + player.getActionSender().sendMessage(p.playerName + " has been teleported to you."); + p.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel); + } + } + } + } catch (Exception e) { + player.getActionSender().sendMessage("Player is not online."); + } + break; + case "xteleto": + case "teleto": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::teleto playername"); + return; + } + String teleTo = String.join(" ", arguments); for (int i = 0; i < PlayerHandler.players.length; i++) { if (PlayerHandler.players[i] != null) { if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleTo)) { - Client p = (Client) PlayerHandler.players[i]; - player.getActionSender().sendMessage(p.playerName + " has been teleported to you."); - p.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel); + player.getPlayerAssistant().movePlayer(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), PlayerHandler.players[i].heightLevel); + return; } } } - } catch (Exception e) { - player.getActionSender().sendMessage("Player is not online."); - } - } - - if (playerCommand.startsWith("xteleto")) { - String name = playerCommand.substring(8); - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(name)) { - player.getPlayerAssistant().movePlayer(PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), PlayerHandler.players[i].heightLevel); + player.getActionSender().sendMessage("Could not find " + teleTo + " they must be online!"); + break; + case "up": + player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel + 1); + player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "up2": + player.getPlayerAssistant().movePlayer(player.absX, player.absY - 6400, player.heightLevel); + player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "down": + player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel - 1); + player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "down2": + player.getPlayerAssistant().movePlayer(player.absX, player.absY + 6400, player.heightLevel); + player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); + break; + case "spec": + player.specAmount = 100.0; + break; + case "setlevel": + try { + if (arguments.length < 2) { + player.getActionSender().sendMessage("Must specify a skill and level: ::setlevel 1 99"); + return; } + int skill = Integer.parseInt(arguments[0]); + int level = Integer.parseInt(arguments[1]); + if (level > 99) { + level = 99; + } else if (level < 0) { + level = 1; + } + player.playerXP[skill] = player.getPlayerAssistant().getXPForLevel(level) + 5; + player.playerLevel[skill] = player.getPlayerAssistant().getLevelForXP(player.playerXP[skill]); + player.getPlayerAssistant().refreshSkill(skill); + player.getPlayerAssistant().levelUp(skill); + } catch (Exception ಠ_ಠ) {} + break; + case "spellbook": + if (player.inWild()) { + return; } - } - } - if (playerCommand.startsWith("tele")) { - String[] arg = playerCommand.split(" "); - if (arg.length > 3) { - player.getPlayerAssistant().movePlayer(Integer.parseInt(arg[1]), Integer.parseInt(arg[2]), Integer.parseInt(arg[3])); - } else if (arg.length == 3) { - player.getPlayerAssistant().movePlayer(Integer.parseInt(arg[1]), Integer.parseInt(arg[2]), player.heightLevel); - } - } - - if (playerCommand.equalsIgnoreCase("up")) { - player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel + 1); - player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); - } - - if (playerCommand.equalsIgnoreCase("down2")) { - player.getPlayerAssistant().movePlayer(player.absX, player.absY + 6400, player.heightLevel); - } - - if (playerCommand.equalsIgnoreCase("down")) { - player.getPlayerAssistant().movePlayer(player.absX, player.absY, player.heightLevel - 1); - player.getActionSender().sendMessage("You are now on height level " + player.heightLevel + "."); - } - - if (playerCommand.equalsIgnoreCase("up2")) { - player.getPlayerAssistant().movePlayer(player.absX, player.absY - 6400, player.heightLevel); - } - - if (playerCommand.equals("spec")) { - player.specAmount = 100.0; - } - - if (playerCommand.startsWith("setlevel")) { - try { - String[] args = playerCommand.split(" "); - int skill = Integer.parseInt(args[1]); - int level = Integer.parseInt(args[2]); - if (level > 99) { - level = 99; - } else if (level < 0) { - level = 1; + if (player.playerMagicBook == 0) { + player.playerMagicBook = 1; + player.getActionSender().setSidebarInterface(6, 12855); + player.getActionSender().sendMessage("An ancient wisdomin fills your mind."); + player.getPlayerAssistant().resetAutocast(); + } else if (player.playerMagicBook == 1) { + player.getActionSender().setSidebarInterface(6, 1151); // modern + player.playerMagicBook = 0; + player.getActionSender().sendMessage("You feel a drain on your memory."); + player.autocastId = -1; + player.getPlayerAssistant().resetAutocast(); } - player.playerXP[skill] = player.getPlayerAssistant().getXPForLevel(level) + 5; - player.playerLevel[skill] = player.getPlayerAssistant().getLevelForXP(player.playerXP[skill]); - player.getPlayerAssistant().refreshSkill(skill); - player.getPlayerAssistant().levelUp(skill); - } catch (Exception e) { - - } - } - - if (playerCommand.equalsIgnoreCase("spellbook")) { - if (player.inWild()) { - return; - } - if (player.playerMagicBook == 0) { - player.playerMagicBook = 1; - player.getActionSender().setSidebarInterface(6, 12855); - player.getActionSender().sendMessage("An ancient wisdomin fills your mind."); - player.getPlayerAssistant().resetAutocast(); - } else if (player.playerMagicBook == 1) { - player.getActionSender().setSidebarInterface(6, 1151); // modern - player.playerMagicBook = 0; - player.getActionSender().sendMessage( "You feel a drain on your memory."); - player.autocastId = -1; - player.getPlayerAssistant().resetAutocast(); - } - } - - if (playerCommand.startsWith("item")) { - try { - String[] args = playerCommand.split(" "); - if (args.length == 3) { - int newItemID = Integer.parseInt(args[1]); - int newItemAmount = Integer.parseInt(args[2]); + break; + case "item": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("Must specify an item id: ::item 995 1000"); + return; + } + int newItemID = Integer.parseInt(arguments[0]); + int newItemAmount = arguments[1] != null ? Integer.parseInt(arguments[1]) : 1; if (newItemID <= 10000 && newItemID >= 0) { player.getItemAssistant().addItem(newItemID, newItemAmount); if (player.isBusy()) { player.getPlayerAssistant().closeAllWindows(); } - player.getActionSender().sendMessage("You spawn (" + newItemAmount + ") "+ ItemAssistant.getItemName(newItemID) + "."); + player.getActionSender().sendMessage("You spawn " + newItemAmount + " × "+ ItemAssistant.getItemName(newItemID) + "."); } else { player.getActionSender().sendMessage("No such item."); } - } else { - player.getActionSender().sendMessage("Use as ::item 995 200"); + } catch (Exception ಠ_ಠ) {} + break; + case "master": + for (int i = 0; i < 25; i++) { + player.playerLevel[i] = 99; + player.playerXP[i] = player.getPlayerAssistant().getXPForLevel(100); + player.getPlayerAssistant().refreshSkill(i); } - } catch (Exception e) { - } + player.getPlayerAssistant().requestUpdates(); + break; } - - if (playerCommand.equalsIgnoreCase("master")) { - for (int i = 0; i < 25; i++) { - player.playerLevel[i] = 99; - player.playerXP[i] = player.getPlayerAssistant().getXPForLevel(100); - player.getPlayerAssistant().refreshSkill(i); - } - player.getPlayerAssistant().requestUpdates(); - } - - } - public static void developerCommands(Client player, String playerCommand) { - - if (playerCommand.startsWith("giveadmin")) { - try { - String playerToAdmin = playerCommand.substring(10); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { - Client c2 = (Client)PlayerHandler.players[i]; - player.getActionSender().sendMessage("You have given " + playerToAdmin + " admin."); - c2.playerRights = 2; - c2.logout(); - break; + public static void developerCommands(Client player, String playerCommand, String[] arguments) { + switch (playerCommand.toLowerCase()) { + case "giveadmin": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::giveadmin playername"); + return; + } + String playerToAdmin = String.join(" ", arguments); + for(int i = 0; i < Constants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { + Client c2 = (Client)PlayerHandler.players[i]; + player.getActionSender().sendMessage("You have given " + playerToAdmin + " admin."); + c2.playerRights = 2; + c2.logout(); + break; + } } } + } catch(Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } - - if (playerCommand.startsWith("demote")) { - try { - String playerToAdmin = playerCommand.substring(7); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { - Client c2 = (Client)PlayerHandler.players[i]; - player.getActionSender().sendMessage("You have demoted " + playerToAdmin + "."); - c2.playerRights = 0; - c2.logout(); - break; + break; + case "demote": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::demote playername"); + return; + } + String playerToAdmin = String.join(" ", arguments); + for(int i = 0; i < Constants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToAdmin)) { + Client c2 = (Client)PlayerHandler.players[i]; + player.getActionSender().sendMessage("You have demoted " + playerToAdmin + "."); + c2.playerRights = 0; + c2.logout(); + break; + } } } + } catch(Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } - - if (playerCommand.startsWith("givemod")) { - try { - String playerToMod = playerCommand.substring(8); - for(int i = 0; i < Constants.MAX_PLAYERS; i++) { - if(PlayerHandler.players[i] != null) { - if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToMod)) { - Client c2 = (Client)PlayerHandler.players[i]; - player.getActionSender().sendMessage("You have given " + playerToMod + " mod."); - c2.playerRights = 1; - c2.logout(); - break; + break; + case "givemod": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify a player name: ::givemod playername"); + return; + } + String playerToMod = String.join(" ", arguments); + for(int i = 0; i < Constants.MAX_PLAYERS; i++) { + if(PlayerHandler.players[i] != null) { + if(PlayerHandler.players[i].playerName.equalsIgnoreCase(playerToMod)) { + Client c2 = (Client)PlayerHandler.players[i]; + player.getActionSender().sendMessage("You have given " + playerToMod + " mod."); + c2.playerRights = 1; + c2.logout(); + break; + } } } + } catch(Exception e) { + player.getActionSender().sendMessage("Player Must Be Offline."); } - } catch(Exception e) { - player.getActionSender().sendMessage("Player Must Be Offline."); - } - } - - if (playerCommand.startsWith("object")) { - String[] args = playerCommand.split(" "); - player.getActionSender().object(Integer.parseInt(args[1]), player.absX, player.absY, player.heightLevel, 0, 10); - Region.addObject(Integer.parseInt(args[1]), player.absX, player.absY, player.heightLevel, 10, 0, false); - } - - if (playerCommand.startsWith("object2")) { - String[] args = playerCommand.split(" "); - player.getActionSender().object(Integer.parseInt(args[1]), player.absX, player.absY, player.heightLevel, 0, 0); - Region.addObject(Integer.parseInt(args[1]), player.absX, player.absY, player.heightLevel, 0, 0, false); - } - - if (playerCommand.startsWith("npc")) { - try { - int newNPC = Integer.parseInt(playerCommand.substring(4)), maxHit = NpcHandler.getNpcListCombat(newNPC) / 10, - attack = NpcHandler.getNpcListCombat(newNPC), defence = NpcHandler.getNpcListCombat(newNPC); - boolean attackPlayer = NpcHandler.getNpcListCombat(newNPC) > 0; - if (newNPC > 0) { - NpcHandler.spawnNpc(player, newNPC, player.absX, player.absY, player.heightLevel, 0, NpcHandler.getNpcListHP(newNPC), maxHit, attack, defence, attackPlayer, false); - player.getActionSender().sendMessage("You spawn a " + NpcHandler.getNpcListName(newNPC).toLowerCase() + "."); - //player.npcSpawned = newNPC; - } else { - player.getActionSender().sendMessage("Npc " + newNPC + " does not exist."); + break; + case "object": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an ID: ::object 1000"); + return; } - } catch (Exception e) { - - } - } - - if (playerCommand.equalsIgnoreCase("cantAttack")) { - if (player.npcCanAttack == true) { - player.getActionSender().sendMessage("Npcs can no longer attack you."); - player.npcCanAttack = false; - } else if (player.npcCanAttack == false) { - player.getActionSender().sendMessage("Npcs can attack you again."); - player.npcCanAttack = true; - } - } - - if (playerCommand.startsWith("sound")) { - String[] args = playerCommand.split(" "); - player.getActionSender().sendSound(Integer.parseInt(args[1]), 100, 0); - } - - if (playerCommand.startsWith("tutprog")) { - String[] args = playerCommand.split(" "); - int id = Integer.parseInt(args[1]); - player.tutorialProgress = id; - } - - if (playerCommand.startsWith("song")) { - String[] args = playerCommand.split(" "); - int id = Integer.parseInt(args[1]); - player.getActionSender().sendSong(id); - } - - if (playerCommand.equalsIgnoreCase("run")) { - player.getActionSender().sendMessage("You have refilled your run-energy!"); - player.playerEnergy = 100; - } - - if (playerCommand.equalsIgnoreCase("runes")) { - final int amount = 10000; - final int[][] RUNES = { { 554, amount }, { 555, amount }, - { 556, amount }, { 557, amount }, { 558, amount }, - { 559, amount }, { 560, amount }, { 561, amount }, - { 562, amount }, { 563, amount }, { 564, amount }, - { 565, amount }, { 566, amount }, { 1963, 1 }, }; - for (int[] element : RUNES) { - int item = element[0]; - int amountToRecieve = element[1]; - player.getItemAssistant().addItem(item, amountToRecieve); - } - } - - if (playerCommand.startsWith("sidebars")) { - player.getPlayerAssistant().sendSidebars(); - } - - if (playerCommand.startsWith("update")) { - try { - String[] args = playerCommand.split(" "); - if (args.length == 2) { - int seconds = Integer.parseInt(args[1]); + player.getActionSender().object(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 10); + Region.addObject(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 10, 0, false); + break; + case "object2": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an ID: ::object2 1000"); + return; + } + player.getActionSender().object(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 0); + Region.addObject(Integer.parseInt(arguments[0]), player.absX, player.absY, player.heightLevel, 0, 0, false); + break; + case "npc": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an ID: ::npc 1000"); + return; + } + int newNPC = Integer.parseInt(arguments[0]), + maxHit = NpcHandler.getNpcListCombat(newNPC) / 10, + attack = NpcHandler.getNpcListCombat(newNPC), + defence = NpcHandler.getNpcListCombat(newNPC); + boolean attackPlayer = NpcHandler.getNpcListCombat(newNPC) > 0; + if (newNPC > 0) { + NpcHandler.spawnNpc(player, newNPC, player.absX, player.absY, player.heightLevel, 0, NpcHandler.getNpcListHP(newNPC), maxHit, attack, defence, attackPlayer, false); + player.getActionSender().sendMessage("You spawn a " + NpcHandler.getNpcListName(newNPC).toLowerCase() + "."); + //player.npcSpawned = newNPC; + } else { + player.getActionSender().sendMessage("Npc " + newNPC + " does not exist."); + } + } catch (Exception ಠ_ಠ) {} + break; + case "cantAttack": + player.npcCanAttack = !player.npcCanAttack; + player.getActionSender().sendMessage("Npcs " + (player.npcCanAttack ? "can" : "can no longer") + " attack you."); + break; + case "sound": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an ID: ::sound 10"); + return; + } + player.getActionSender().sendSound(Integer.parseInt(arguments[0]), 100, 0); + break; + case "tutprog": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an ID: ::tutprog 10"); + return; + } + player.tutorialProgress = Integer.parseInt(arguments[0]);; + break; + case "song": + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify an ID: ::song 10"); + return; + } + int songID = Integer.parseInt(arguments[0]); + player.getActionSender().sendSong(songID); + break; + case "run": + player.getActionSender().sendMessage("You have refilled your run-energy!"); + player.playerEnergy = 100; + break; + case "runes": + final int amount = 10000; + final int[][] RUNES = { { 554, amount }, { 555, amount }, + { 556, amount }, { 557, amount }, { 558, amount }, + { 559, amount }, { 560, amount }, { 561, amount }, + { 562, amount }, { 563, amount }, { 564, amount }, + { 565, amount }, { 566, amount }, { 1963, 1 }, }; + for (int[] element : RUNES) { + int item = element[0]; + int amountToRecieve = element[1]; + player.getItemAssistant().addItem(item, amountToRecieve); + } + break; + case "sidebars": + player.getPlayerAssistant().sendSidebars(); + break; + case "update": + try { + if (arguments.length == 0) { + player.getActionSender().sendMessage("You must specify the amount of time in seconds: ::update 300"); + return; + } + int seconds = Integer.parseInt(arguments[0]); PlayerHandler.updateSeconds = seconds; PlayerHandler.updateAnnounced = false; PlayerHandler.updateRunning = true; PlayerHandler.updateStartTime = System.currentTimeMillis(); - } else { - player.getActionSender().sendMessage("Use as ::update (seconds)"); - } - } catch (Exception e) { - } + } catch (Exception ಠ_ಠ) {} + break; } - } diff --git a/2006Redone Server/src/redone/net/packets/impl/Walking.java b/2006Redone Server/src/redone/net/packets/impl/Walking.java index fbb78b93..a5326fc7 100644 --- a/2006Redone Server/src/redone/net/packets/impl/Walking.java +++ b/2006Redone Server/src/redone/net/packets/impl/Walking.java @@ -147,7 +147,7 @@ public class Walking implements PacketType { } if((player.duelStatus >= 1 && player.duelStatus <= 4) || player.duelStatus == 6) { if(player.duelStatus == 6) { - player.getDueling().claimStakedItems(); + player.getDueling().claimStakedItems(); } return; } @@ -165,17 +165,25 @@ public class Walking implements PacketType { } player.getNewWalkCmdX()[0] = player.getNewWalkCmdY()[0] = 0; + int firstStepX, firstStepY; - int firstStepX = player.getInStream().readSignedWordBigEndianA() - - player.getMapRegionX() * 8; + if (player.clickToTele) + firstStepX = player.getInStream().readSignedWordBigEndianA(); + else + firstStepX = player.getInStream().readSignedWordBigEndianA()-player.getMapRegionX()*8; for (int i = 1; i < player.newWalkCmdSteps; i++) { player.getNewWalkCmdX()[i] = player.getInStream().readSignedByte(); player.getNewWalkCmdY()[i] = player.getInStream().readSignedByte(); } - int firstStepY = player.getInStream().readSignedWordBigEndian() - player.getMapRegionY() * 8; + if (player.clickToTele) + firstStepY = player.getInStream().readSignedWordBigEndian(); + else + firstStepY = player.getInStream().readSignedWordBigEndian()-player.getMapRegionY()*8; player.setNewWalkCmdIsRunning(player.getInStream().readSignedByteC() == 1 && player.playerEnergy > 0); for (int i1 = 0; i1 < player.newWalkCmdSteps; i1++) { + if (player.clickToTele) + player.getPlayerAssistant().movePlayer(player.getNewWalkCmdX()[i1] + firstStepX, player.getNewWalkCmdY()[i1] + firstStepY, player.heightLevel); player.getNewWalkCmdX()[i1] += firstStepX; player.getNewWalkCmdY()[i1] += firstStepY; }