1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Hey Guest, If you'd like to instant message with many other users, then join our
    Official Rune-Status Discord Server!
    Dismiss Notice
  3. Got your own Server? Looking for a Server to play right now??
    Make sure you check out the Public Server Directory!
    Dismiss Notice
  4. If you're new to the Rsps Scene and want to jump straight into learning how to Set-up and Customise your own RuneScape Private Sever then check out the Guides and Tutorials for RS2 here.
    Dismiss Notice

rev.317 Gideon Definition Suite 2017-09-14

Definition editor for Variable Parameters, Variable Bits, and Gideon client custom definitions.

  1. Mayhem
    Welcome, viewers and leechers to a my cache suite called...
    Gideon Definition Suite - Version 0.2!

    Tips:

    • Backup your cache, place one copy in your default documents folder, and one on your desktop.
      1. This is essential, so you can use both Toms Cache Suit / RSAM, and RS2 Definition Suite at the same time.
      2. Rename your backups. Make them something like this: `FOLDER_NAME_HERE
        This ensures that your backups are the one of the first folders in a list,
        such as the backup in the documents folder (helps gain quick access for toms cache suit / rsam),
        and helps gain quick access for RS2 Definition Suite.
    • Download and Install Clover 2.
      1. This useful apps customizes the Windows Explorer, adding tabs which quickens development!

    Video broke so I'll have to get new media later.

    Latest Updates:

    Currently allows modifying the Variable Bit definitions and Variable Parameter definitions. It also includes two custom definition editors used for modifying Gideon client's TITLES & OBJECT SPAWNS.

    Titles & Object spawn client-sided decoders will be released shortly.

    Old Updates:

    New suite, a few editors, and a nice layout. This cache suite doesn't pack directly to the cache, but allows the modification of cached configurations.

    Using CEBL, RS2 Definition Suite is a cache suite that will allow the operator to read, modify, and create new definitions for RS2 cached configs. This suite will allow the operator to export config data, so it may be packed using another cache suite such as Tom's Cache Suite. I created this suite mainly so I could extend varp definitions, but I liked it, so I kept working on it. This editor uses code from both cebl, and xLin's Interface Editor. Yes, I ripped some code, so I give credit's to him for the base of the cache loading. I created the form, and wrote the definition editors. That's all I'll take credit for.

    Get your copy today!

    Gideon Definition Suite is open source on Github. If you have issues with it after downloading from github, I won't be able to help. I'm new to using github for anything. lol

    Sorry you must be logged in to read this.
    Click here to log in.


    WARNING!

    I do not update Gideon Definition Suite through github anymore. For such a small application that I'll likely never update again without assistance, it's not worth my time managing a github page.

    While I will be releasing the titles and client-sided object spawn definitions decoders, I likely won't be releasing a tutorial with them. If I do decide to release any of tutorials, it'll be client-sided object spawns, as they are easier to work with.

    ObjectSpawns decoder class:

    
    package rs.config;
     
    import java.io.BufferedInputStream;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import rs.Signlink;
    import rs.stream.Stream;
    import rs.stream.StreamLoader;
     
    /**
     *
     * @author RSTrials
     */
    public class ObjectSpawns {
     
        public static ObjectSpawns[] cache;
        private static int count;
        private int id, x, y, height, face, type;
     
        public int getId() {
            return id;
        }
     
        public int getX() {
            return x;
        }
     
        public int getY() {
            return y;
        }
     
        public int getHeight() {
            return height;
        }
     
        public int getFace() {
            return face;
        }
     
        public int getType() {
            return type;
        }
     
        public static int getCount() {
            return cache.length;
        }
     
        public static final byte[] getFileData(String s) {
            try {
                File file = new File(s);
                int i = (int) file.length();
                byte abyte0[] = new byte;
                try (DataInputStream datainputstream = new DataInputStream(new BufferedInputStream(new FileInputStream(s)))) {
                    datainputstream.readFully(abyte0, 0, i);
                }
                return abyte0;
            } catch (Exception exception) {
            }
            return null;
        }
     
        public static void init(StreamLoader streamLoader) {
            //  - It is packed into the cache, but it wont load through the client for some strange reason, just stick with file reading for now.
            Stream stream = new Stream(streamLoader.getDataForName("sobj.dat")); //new Stream(getFileData(Signlink.findcachedir() + "/sobj.dat"));
            count = stream.readUnsignedWord();
            System.out.println("ObjectSpawns cache size: " + count);
            if (cache == null) {
                cache = new ObjectSpawns[count];
            }
            for (int j = 0; j < count; j++) {
                if (cache[j] == null) {
                    cache[j] = new ObjectSpawns();
                }
                cache[j].setDefaults();
                cache[j].decode(stream);
            }
     
            if (stream.currentOffset != stream.buffer.length) {
                System.out.println("ObjectSpawns load mismatch, cOffset: " + stream.currentOffset + ", bufferLength: " + stream.buffer.length);
            }
        }
     
        public void setDefaults() {
            this.id = 0;
            this.x = 0;
            this.y = 0;
            this.height = 0;
            this.face = 0;
            this.type = 10;
        }
     
        public ObjectSpawns() {
        }
     
        public ObjectSpawns(int id, int x, int y, int height, int face, int type) {
            this.id = id;
            this.x = x;
            this.y = y;
            this.height = height;
            this.face = face;
            this.type = type;
        }
     
        private void decode(Stream stream) {
            do {
                int j = stream.readUnsignedByte();
                switch (j) {
                    case 0:
                        return;
                    case 1:
                        id = stream.readUnsignedWord();
                        break;
                    case 2:
                        x = stream.readUnsignedWord();
                        y = stream.readUnsignedWord();
                        height = stream.readUnsignedByte();
                        break;
                    case 3:
                        face = stream.readUnsignedByte();
                        break;
                    case 4:
                        type = stream.readUnsignedByte();
                        break;
                    default:
                        System.out.println("Error unrecognised config code: " + j);
                        break;
                }
            } while (true);
        }
     
    }
    

    Titles decoder class (fix indicates prefix/suffix):

    
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package rs.config;
     
    import rs.stream.Stream;
    import rs.stream.StreamLoader;
     
    /**
     *
     * @author Jonahs-PC
     */
    public class Titles {
     
        public static Titles[] cache;
        private static int count;
        public int index, fix;
        public String tag;
        public String title;
     
        public static final Titles BLANK = new Titles(-1, "", 0, "");
     
        public String getTag() {
            return tag;
        }
     
        public int getIndex() {
            return index;
        }
     
        public int getFix() {
            return fix;
        }
     
        public String getTitle() {
            return title;
        }
     
        public static int getCount() {
            return cache.length;
        }
     
        public static Titles getTitle(int index) {
            for (Titles t : cache) {
                if (t.index == index) {
                    return t;
                }
            }
            return Titles.BLANK;
        }
     
        public static void init(StreamLoader streamLoader) {
            Stream stream = new Stream(streamLoader.getDataForName("titles.dat"));
            count = stream.readUnsignedWord();
            System.out.println("Titles cache size: " + count);
            if (cache == null) {
                cache = new Titles[count];
            }
            for (int j = 0; j < count; j++) {
                if (cache[j] == null) {
                    cache[j] = new Titles();
                }
                cache[j].setDefaults();
                cache[j].decode(stream);
            }
     
            if (stream.currentOffset != stream.buffer.length) {
                System.out.println("Title load mismatch, cOffset: " + stream.currentOffset + ", bufferLength: " + stream.buffer.length);
            }
        }
     
        public void setDefaults() {
            this.index = 0;
            this.fix = 0;
            this.tag = "";
            this.title = "";
        }
     
        public Titles() {
        }
     
        public Titles(int index, String tag, int fix, String title) // index, color, prefix/suffix (0 = pre, 1 = suf), title
        {
            this.index = index;
            this.fix = fix;
            this.title = title;
            this.tag = tag;
        }
     
        private void decode(Stream stream) {
            do {
                int j = stream.readUnsignedByte();
                switch (j) {
                    case 0:
                        return;
                    case 1:
                        index = stream.readUnsignedByte();
                        break;
                    case 2:
                        tag = stream.readString();
                        break;
                    case 3:
                        fix = stream.readUnsignedByte();
                        break;
                    case 4:
                        title = stream.readString();
                        break;
                    default:
                        System.out.println("Error unrecognised config code: " + j);
                        break;
                }
            } while (true);
        }
    }
    

    UP-TO-DATE SOURCE

    Sorry you must be logged in to read this.
    Click here to log in.
    Ian likes this.

Recent Reviews

  1. Ian
    Ian
    5/5,
    Version: 2017-09-14
    Brilliant piece of work man!
Loading...