diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/Cache/main_file_sprites.dat b/Cache/main_file_sprites.dat index bb91434..cff5f78 100644 Binary files a/Cache/main_file_sprites.dat and b/Cache/main_file_sprites.dat differ diff --git a/Cache/sound0.wav b/Cache/sound0.wav index 061d21b..c02a4dc 100644 Binary files a/Cache/sound0.wav and b/Cache/sound0.wav differ diff --git a/Cache/sound1.wav b/Cache/sound1.wav index 061d21b..1c32e41 100644 Binary files a/Cache/sound1.wav and b/Cache/sound1.wav differ diff --git a/Cache/sound2.wav b/Cache/sound2.wav index 061d21b..1c32e41 100644 Binary files a/Cache/sound2.wav and b/Cache/sound2.wav differ diff --git a/Cache/sound3.wav b/Cache/sound3.wav index 061d21b..1c32e41 100644 Binary files a/Cache/sound3.wav and b/Cache/sound3.wav differ diff --git a/Cache/sound4.wav b/Cache/sound4.wav index 061d21b..c02a4dc 100644 Binary files a/Cache/sound4.wav and b/Cache/sound4.wav differ diff --git a/src/main/java/org/rebotted/Client.java b/src/main/java/org/rebotted/Client.java index 47ee5d4..949465c 100644 --- a/src/main/java/org/rebotted/Client.java +++ b/src/main/java/org/rebotted/Client.java @@ -2906,20 +2906,22 @@ public class Client extends GameApplet { public void drawSideIcons() { - // local variables will not stay in memory which will help with - // performance. - final int[] sideIconsX = {17, 49, 83, 114, 146, 180, 214, 16, 49, 82, 116, 148, 184, 216}, - sideIconsY = {9, 7, 7, 5, 2, 3, 7, 303, 306, 306, 302, 305, 303, 303, 303}, - sideIconsId = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, - sideIconsTab = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; - int xOffset = frameMode == ScreenMode.FIXED ? 0 : frameWidth - 247; int yOffset = frameMode == ScreenMode.FIXED ? 0 : frameHeight - 336; + int[] x; + int[] y; + if(frameMode == ScreenMode.FIXED && !Configuration.OSRS_GAMEFRAME) { + x = GameFrameIds.REDONE_ICONS_X; + y = GameFrameIds.REDONE_ICONS_Y; + } else { + x = GameFrameIds.OSRS_ICONS_X; + y = GameFrameIds.OSRS_ICONS_Y; + } if (frameMode == ScreenMode.FIXED || frameMode != ScreenMode.FIXED && !changeTabArea) { - for (int i = 0; i < sideIconsTab.length; i++) { - if (tabInterfaceIDs[sideIconsTab[i]] != -1) { - if (sideIconsId[i] != -1) { - sideIcons[sideIconsId[i]].drawSprite(sideIconsX[i] + xOffset, sideIconsY[i] + yOffset); + for (int i = 0; i < GameFrameIds.SIDE_ICONS_ID.length; i++) { + if (tabInterfaceIDs[GameFrameIds.SIDE_ICONS_ID[i]] != -1) { + if (GameFrameIds.SIDE_ICONS_ID[i] != -1) { + sideIcons[GameFrameIds.SIDE_ICONS_ID[i]].drawSprite(x[i] + xOffset, y[i] + yOffset); } } } @@ -2927,8 +2929,8 @@ public class Client extends GameApplet { int[] iconId = {0, 1, 2, 3, 4, 5, 6, -1, 8, 9, 7, 11, 12, 13}; int[] iconX = {219, 189, 156, 126, 93, 62, 30, 219, 189, 156, 124, 92, 59, 28}; int[] iconY = {67, 69, 67, 69, 72, 72, 69, 32, 29, 29, 32, 30, 33, 31, 32}; - for (int i = 0; i < sideIconsTab.length; i++) { - if (tabInterfaceIDs[sideIconsTab[i]] != -1) { + for (int i = 0; i < GameFrameIds.SIDE_ICONS_ID.length; i++) { + if (tabInterfaceIDs[GameFrameIds.SIDE_ICONS_ID[i]] != -1) { if (iconId[i] != -1) { sideIcons[iconId[i]].drawSprite(frameWidth - iconX[i], frameHeight - iconY[i]); } @@ -2938,8 +2940,8 @@ public class Client extends GameApplet { int[] iconId = {0, 1, 2, 3, 4, 5, 6, -1, 8, 9, 7, 11, 12, 13}; int[] iconX = {50, 80, 114, 143, 176, 208, 240, 242, 273, 306, 338, 370, 404, 433}; int[] iconY = {30, 32, 30, 32, 34, 34, 32, 32, 29, 29, 32, 31, 32, 32, 32}; - for (int i = 0; i < sideIconsTab.length; i++) { - if (tabInterfaceIDs[sideIconsTab[i]] != -1) { + for (int i = 0; i < GameFrameIds.SIDE_ICONS_ID.length; i++) { + if (tabInterfaceIDs[GameFrameIds.SIDE_ICONS_ID[i]] != -1) { if (iconId[i] != -1) { sideIcons[iconId[i]].drawSprite(frameWidth - 461 + iconX[i], frameHeight - iconY[i]); } @@ -2950,16 +2952,24 @@ public class Client extends GameApplet { private void drawRedStones() { - final int[] redStonesX = {6, 44, 77, 110, 143, 176, 209, 6, 44, 77, 110, 143, 176, 209}, - redStonesY = {0, 0, 0, 0, 0, 0, 0, 298, 298, 298, 298, 298, 298, 298}, - redStonesId = {35, 39, 39, 39, 39, 39, 36, 37, 39, 39, 39, 39, 39, 38}; - int xOffset = frameMode == ScreenMode.FIXED ? 0 : frameWidth - 247; int yOffset = frameMode == ScreenMode.FIXED ? 0 : frameHeight - 336; + int[] stones; + int[] x; + int[] y; + if(frameMode == ScreenMode.FIXED && !Configuration.OSRS_GAMEFRAME) { + stones = GameFrameIds.REDONE_STONES_IDS; + x = GameFrameIds.REDONE_STONES_X; + y = GameFrameIds.REDONE_STONES_Y; + } else { + stones = GameFrameIds.OSRS_STONES_IDS; + x = GameFrameIds.OSRS_STONES_X; + y = GameFrameIds.OSRS_STONES_Y; + } if (frameMode == ScreenMode.FIXED || frameMode != ScreenMode.FIXED && !changeTabArea) { if (tabInterfaceIDs[tabId] != -1 && tabId != 15) { - SpriteCache.lookup(redStonesId[tabId]).drawSprite(redStonesX[tabId] + xOffset, - redStonesY[tabId] + yOffset); + SpriteCache.lookup(stones[tabId]).drawSprite(x[tabId] + xOffset, + y[tabId] + yOffset); } } else if (changeTabArea && frameWidth < 1000) { int[] stoneX = {226, 194, 162, 130, 99, 65, 34, 219, 195, 161, 130, 98, 65, 33}; @@ -2985,12 +2995,18 @@ public class Client extends GameApplet { tabImageProducer.initDrawingArea(); } Rasterizer3D.scanOffsets = anIntArray1181; + final int fixedInventory; + if(Configuration.OSRS_GAMEFRAME) { + fixedInventory = GameFrameIds.OSRS_INVENTORY; + } else { + fixedInventory = GameFrameIds.REDONE_INVENTORY; + } if (frameMode == ScreenMode.FIXED) { - SpriteCache.lookup(21).drawSprite(0, 0); + SpriteCache.lookup(fixedInventory).drawSprite(0, 0); } else if (frameMode != ScreenMode.FIXED && !changeTabArea) { Rasterizer2D.drawTransparentBox(frameWidth - 217, frameHeight - 304, 195, 270, 0x3E3529, transparentTabArea ? 80 : 256); - SpriteCache.lookup(47).drawSprite(xOffset, yOffset); + SpriteCache.lookup(GameFrameIds.OSRS_INVENTORY_2).drawSprite(xOffset, yOffset); } else { if (frameWidth >= 1000) { if (showTabComponents) { @@ -6551,6 +6567,19 @@ public class Client extends GameApplet { frameMode(ScreenMode.FIXED); } + if (inputString.equals("::osrs")) { + Configuration.OSRS_GAMEFRAME = true; + drawRedStones(); + drawSideIcons(); + drawTabArea(); + } + if (inputString.equals("::06")) { + Configuration.OSRS_GAMEFRAME = false; + drawRedStones(); + drawSideIcons(); + drawTabArea(); + } + if (inputString.equals("::resize")) { frameMode(ScreenMode.RESIZABLE); } @@ -7964,6 +7993,7 @@ public class Client extends GameApplet { return; } if (response == 2) { + botFrame.setTitle(Configuration.CLIENT_NAME + " - ["+StringUtils.capitalizeEachWord(myUsername)+"]"); myPrivilege = socketStream.read(); flagged = socketStream.read() == 1; aLong1220 = 0L; @@ -13703,7 +13733,7 @@ public class Client extends GameApplet { menuActionRow = 2; } if (hpHover && Configuration.enableOrbs) { - menuActionText[1] = Configuration.hpAboveHeads ? "Turn HP Above Heads on" : "Turn HP Above heads off"; + menuActionText[1] = Configuration.hpAboveHeads ? "Turn HP Above Heads on" : "Turn HP Above Heads off"; menuActionTypes[1] = 1508; menuActionRow = 2; } diff --git a/src/main/java/org/rebotted/Configuration.java b/src/main/java/org/rebotted/Configuration.java index 711531e..99abcfc 100644 --- a/src/main/java/org/rebotted/Configuration.java +++ b/src/main/java/org/rebotted/Configuration.java @@ -13,6 +13,8 @@ public final class Configuration { } + public static boolean OSRS_GAMEFRAME = false; + public static final BigInteger RSA_MODULUS = new BigInteger( "91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443"); diff --git a/src/main/java/org/rebotted/GameApplet.java b/src/main/java/org/rebotted/GameApplet.java index d2b6f19..b8cf8be 100644 --- a/src/main/java/org/rebotted/GameApplet.java +++ b/src/main/java/org/rebotted/GameApplet.java @@ -70,7 +70,10 @@ public class GameApplet extends Applet implements Runnable, MouseListener, public void refreshFrameSize(boolean undecorated, int width, int height, boolean resizable, boolean full) { SwingUtilities.invokeLater(() -> { - Client.botFrame.setResizable(true); + if(!resizable) { + Client.botFrame.setSize(new Dimension(774, 559)); + } + Client.botFrame.setResizable(resizable); }); } @@ -263,6 +266,8 @@ public class GameApplet extends Applet implements Runnable, MouseListener, public void mouseWheelMoved(MouseWheelEvent event) { int rotation = event.getWheelRotation(); handleInterfaceScrolling(event); + final Rectangle viewport = new Rectangle(0, 0, 515,335); + final Point p = new Point(mouseX, mouseY); if (mouseX > 0 && mouseX < 512 && mouseY > Client.frameHeight - 165 && mouseY < Client.frameHeight - 25) { int scrollPos = Client.anInt1089; @@ -275,6 +280,14 @@ public class GameApplet extends Applet implements Runnable, MouseListener, Client.anInt1089 = scrollPos; Client.updateChatbox = true; } + } else { + if(Client.loggedIn && viewport.contains(p)) { + if (Client.cameraZoom < 1800 && rotation == 1) { + Client.cameraZoom = Client.cameraZoom + 20; + } else if (Client.cameraZoom > 20 && rotation == -1) { + Client.cameraZoom = Client.cameraZoom - 20; + } + } } } diff --git a/src/main/java/org/rebotted/GameFrameIds.java b/src/main/java/org/rebotted/GameFrameIds.java new file mode 100644 index 0000000..2a472fe --- /dev/null +++ b/src/main/java/org/rebotted/GameFrameIds.java @@ -0,0 +1,31 @@ +package org.rebotted; + +public class GameFrameIds { + + public static int OSRS_INVENTORY = 21; + + public static int OSRS_INVENTORY_2 = 47; + + public static int REDONE_INVENTORY = 62; + + public static int[] OSRS_STONES_X = {6, 44, 77, 110, 143, 176, 209, 6, 44, 77, 110, 143, 176, 209}; + + public static int[] REDONE_STONES_X = {20, 52, 80, 108, 151, 179, 207, 20, 52, 80, 108, 151, 179, 207}; + + public static int[] OSRS_STONES_Y = {0, 0, 0, 0, 0, 0, 0, 298, 298, 298, 298, 298, 298, 298}; + + public static int[] REDONE_STONES_Y = {0, 0, 0, 0, 0, 0, 0, 298, 298, 298, 298, 298, 298, 298}; + + public static int[] OSRS_STONES_IDS = {35, 39, 39, 39, 39, 39, 36, 37, 39, 39, 39, 39, 39, 38}; + + public static int[] REDONE_STONES_IDS = {63, 72, 68, 65, 70, 71, 64, 66, 70, 71, 69, 72, 68, 67}; + + public static int[] OSRS_ICONS_X = {17, 49, 83, 114, 146, 180, 214, 16, 49, 82, 116, 148, 184, 216}, + OSRS_ICONS_Y = {9, 7, 7, 5, 2, 3, 7, 303, 306, 306, 302, 305, 303, 303, 303}; + + public static int[] REDONE_ICONS_X = {29, 54, 84, 116, 153, 182, 210, 28, 56, 84, 118, 155, 185, 210}, + REDONE_ICONS_Y = {10, 8, 7, 5, 2, 3, 9, 300, 306, 306, 302, 305, 303, 303, 303}; + + public static int[] SIDE_ICONS_ID = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; + +} diff --git a/src/main/java/org/rebotted/cache/graphics/Sprite.java b/src/main/java/org/rebotted/cache/graphics/Sprite.java index 7adc94d..84fce56 100644 --- a/src/main/java/org/rebotted/cache/graphics/Sprite.java +++ b/src/main/java/org/rebotted/cache/graphics/Sprite.java @@ -22,7 +22,8 @@ public final class Sprite extends Rasterizer2D { private int offsetY; private int maxWidth; private int maxHeight; - + private byte[] spriteData; + public Sprite() { } @@ -41,7 +42,7 @@ public final class Sprite extends Rasterizer2D { this.maxHeight = height; offsetX = 0; offsetY = 0; - + setSpriteData(sprite.getSpriteData()); myPixels = new int[width * height]; System.arraycopy(sprite.myPixels, 0, myPixels, 0, myPixels.length); @@ -59,6 +60,7 @@ public final class Sprite extends Rasterizer2D { maxHeight = myHeight; offsetX = 0; offsetY = 0; + spriteData = data; myPixels = new int[myWidth * myHeight]; PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, myWidth, myHeight, myPixels, 0, myWidth); pixelgrabber.grabPixels(); @@ -941,4 +943,11 @@ public final class Sprite extends Rasterizer2D { this.maxHeight = maxHeight; } + public byte[] getSpriteData() { + return spriteData; + } + + public void setSpriteData(byte[] spriteData) { + this.spriteData = spriteData; + } } diff --git a/src/main/java/org/rebotted/cache/graphics/SpriteCache.java b/src/main/java/org/rebotted/cache/graphics/SpriteCache.java index edc2036..d9f7c7d 100644 --- a/src/main/java/org/rebotted/cache/graphics/SpriteCache.java +++ b/src/main/java/org/rebotted/cache/graphics/SpriteCache.java @@ -1,10 +1,7 @@ package org.rebotted.cache.graphics; -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.IOException; +import java.io.*; import org.apache.commons.compress.compressors.xz.XZCompressorInputStream; - import org.rebotted.io.Buffer; import org.rebotted.sign.SignLink; import org.rebotted.util.FileUtils; @@ -14,7 +11,7 @@ public final class SpriteCache { private static Sprite[] sprites; private static int totalSprites; - + private static int i = 0; public static void load() { Buffer data = new Buffer(FileUtils.readFile(SignLink.findcachedir() + "main_file_sprites.dat")); @@ -26,10 +23,9 @@ public final class SpriteCache { for (int index = 0; index < totalSprites; index++) { sprites[index] = SpriteCache.decode(dataFile); - + sprites[index].setTransparency(255, 0, 255); } - System.out.println("Sprites Loaded: " + totalSprites); } catch (IOException ex) { ex.printStackTrace(); @@ -72,25 +68,25 @@ public final class SpriteCache { } } } - + public Sprite[] getSprites() { return sprites; } - - public static Sprite lookup(int id) { + + public static Sprite lookup(int id) { if (id < 0 || id > sprites.length) { throw new IllegalArgumentException(String.format("Invalid id: %d while trying to lookup a sprite.", id)); - } + } return sprites[id]; } - + public static void set(int id, Sprite sprite) { if (id < 0 || id > sprites.length) { throw new IllegalArgumentException(String.format("Invalid id: %d while trying to lookup a sprite.", id)); - } + } sprites[id] = sprite; } - + public int totalSprites() { return totalSprites; } diff --git a/src/main/java/org/rebotted/cache/graphics/Widget.java b/src/main/java/org/rebotted/cache/graphics/Widget.java index a48ddc5..f492518 100644 --- a/src/main/java/org/rebotted/cache/graphics/Widget.java +++ b/src/main/java/org/rebotted/cache/graphics/Widget.java @@ -467,8 +467,8 @@ public final class Widget { rsinterface.height = 20; rsinterface.opacity = 0; rsinterface.mOverInterToTrigger = 52; - rsinterface.disabledSprite = SpriteCache.lookup(disabledSpriteId); - rsinterface.enabledSprite = SpriteCache.lookup(enabledSpriteId); + rsinterface.disabledSprite = SpriteCache.lookup(disabledSpriteId); + rsinterface.enabledSprite = SpriteCache.lookup(enabledSpriteId); } public static void addText(int id, String text, GameFont wid[], int idx, int color) { @@ -1180,7 +1180,7 @@ public final class Widget { Tab.scripts[0][1] = configFrame; Tab.scripts[0][2] = 0; Tab.disabledSprite = SpriteCache.lookup(disabledSpriteId); - Tab.enabledSprite = SpriteCache.lookup(enabledSpriteId); + Tab.enabledSprite = SpriteCache.lookup(enabledSpriteId); Tab.tooltip = tT; } @@ -1464,7 +1464,7 @@ public final class Widget { RSInterface.contentType = 0; RSInterface.opacity = 0; RSInterface.hoverType = 52; - RSInterface.disabledSprite = SpriteCache.lookup(spriteId); + RSInterface.disabledSprite = SpriteCache.lookup(spriteId); RSInterface.width = 500; RSInterface.height = 500; RSInterface.tooltip = ""; @@ -2016,8 +2016,8 @@ public final class Widget { hover.contentType = 0; hover.opacity = 0; hover.hoverType = hoverid; - hover.disabledSprite = SpriteCache.lookup(disabledSpriteId); - hover.enabledSprite = SpriteCache.lookup(enabledSpriteId); + hover.disabledSprite = SpriteCache.lookup(disabledSpriteId); + hover.enabledSprite = SpriteCache.lookup(enabledSpriteId); hover.width = Width; hover.tooltip = Tooltip; hover.height = Height; @@ -2064,7 +2064,7 @@ public final class Widget { Tab.scripts[0][0] = 5; Tab.scripts[0][1] = configFrame; Tab.scripts[0][2] = 0; - Tab.disabledSprite = SpriteCache.lookup(disabledSpriteId); + Tab.disabledSprite = SpriteCache.lookup(disabledSpriteId); Tab.enabledSprite = SpriteCache.lookup(enabledSpriteId); } diff --git a/src/main/java/org/rebotted/ui/BotFrame.java b/src/main/java/org/rebotted/ui/BotFrame.java index 736fd8c..1bd8ef8 100644 --- a/src/main/java/org/rebotted/ui/BotFrame.java +++ b/src/main/java/org/rebotted/ui/BotFrame.java @@ -10,25 +10,18 @@ import java.awt.event.ActionListener; public final class BotFrame extends JFrame implements ActionListener { - private final GameApplet applet; - public Toolkit toolkit = Toolkit.getDefaultToolkit(); - public Dimension screenSize = toolkit.getScreenSize(); - public int screenWidth = (int) screenSize.getWidth(); - public int screenHeight = (int) screenSize.getHeight(); private static final long serialVersionUID = 1L; + private final BotMenuBar botMenuBar; - protected final Insets insets; public BotFrame(GameApplet applet, boolean resizable) { - this.applet = applet; setTitle(Configuration.CLIENT_NAME); setResizable(resizable); - insets = getInsets(); botMenuBar = new BotMenuBar(this); setJMenuBar(botMenuBar); add(applet, BorderLayout.CENTER); setMinimumSize(new Dimension(774, 559)); - setSize(774, 559); + setSize(new Dimension(774, 559)); pack(); setLocationRelativeTo(getParent()); setLocationRelativeTo(getOwner()); diff --git a/src/main/java/org/rebotted/ui/BotMenuBar.java b/src/main/java/org/rebotted/ui/BotMenuBar.java index 5759006..3cb8233 100644 --- a/src/main/java/org/rebotted/ui/BotMenuBar.java +++ b/src/main/java/org/rebotted/ui/BotMenuBar.java @@ -9,7 +9,7 @@ import javax.swing.*; public class BotMenuBar extends JMenuBar { private BotFrame botUI; private JButton startButton, pauseButton, stopButton; - private JMenu features, file, scripts; + private JMenu file, scripts; private JMenuItem run, pause, stop; public BotMenuBar(BotFrame botUI) { @@ -25,7 +25,6 @@ public class BotMenuBar extends JMenuBar { private void createMenu() { file = new JMenu("File"); - features = new JMenu("Features"); scripts = new JMenu("Script"); final JMenuItem exit = new JMenuItem("Exit"); @@ -76,7 +75,6 @@ public class BotMenuBar extends JMenuBar { private void configureComponents() { removeAll(); add(file); - add(features); add(scripts); add(Box.createHorizontalGlue()); /*add(startButton); @@ -85,11 +83,6 @@ public class BotMenuBar extends JMenuBar { } - - public JMenu getFeatures() { - return features; - } - public JMenu getFile() { return file; } diff --git a/src/main/java/org/rebotted/util/StringUtils.java b/src/main/java/org/rebotted/util/StringUtils.java index 1810042..97ee0cd 100644 --- a/src/main/java/org/rebotted/util/StringUtils.java +++ b/src/main/java/org/rebotted/util/StringUtils.java @@ -90,4 +90,31 @@ public final class StringUtils { stringbuffer.append("*"); return stringbuffer.toString(); } + + public static String capitalizeEachWord(String str){ + + if(str == null || str.length() == 0) + return ""; + + if(str.length() == 1) + return str.toUpperCase(); + + String[] words = str.split(" "); + + StringBuilder sbCapitalizedWords = new StringBuilder(str.length()); + + for(String word : words){ + + if(word.length() > 1) + sbCapitalizedWords + .append(word.substring(0, 1).toUpperCase()) + .append(word.substring(1)); + else + sbCapitalizedWords.append(word.toUpperCase()); + + sbCapitalizedWords.append(" "); + } + + return sbCapitalizedWords.toString().trim(); + } }