• Log in or sign up for an account here: https://www.sythe.org/login

Learning Reflection RSPS Bot

accentor

Newcomer
Joined
May 10, 2019
Sythe Gold
0
Messages
1
Age
33
Just started learning about reflection and was trying to use it to get an array of players that are logged in a 718 rsps. In the client.class I found a field which I thougth would contain this called aClass365_Sub1_Sub1_Sub2_Sub2Array8805 when I try to access this variable I get 2048 null values no mater how many people are logged into the client. After I get this to work would like to find the field for the players usernames and then print those out instead of the reference to the player but I need to get this part working first. My current code is
Code:
import java.net.MalformedURLException;
import java.util.ArrayList;
public class test {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, MalformedURLException {
       
       
        for(Player2 player : getLoaded())
        {
            System.out.println(player);
        }
       
    }   
    public static Player2[] getLoaded() throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, MalformedURLException {

            ArrayList<Player2> players = new ArrayList<Player2>();
           
         Object[] oPlayers = Reflection1.getPlayerArray(); //Assuming the player array method is stored in the class client
        // System.out.println(oPlayers.length);
         int i = 0;
            for(Object o : oPlayers) {
                if(o != null) {
                System.out.println("o != null");
                Player2 cur = new Player2(o);
                System.out.println(cur);
                players.add(cur);
            }
                System.out.println( i + " " + "o = null");
                i++;
            }
           
            return players.toArray(new Player2[players.size()]);
    }
    }
Code:
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class Reflection1 {
    public static Object[] getPlayerArray() throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, MalformedURLException {
       
        File file = new File("C:\\Users\\accen\\Desktop\\718\\Matrix Package\\Matrix Client\\bin");
        URL url = file.toURI().toURL();
        URL[] urls = {url};
        ClassLoader loader = new URLClassLoader(urls);
        Class myClass = loader.loadClass("client");
        System.out.println(myClass.getName());
        Field field1 = myClass.getDeclaredField("aClass365_Sub1_Sub1_Sub2_Sub2Array8805");//Believe this holds the players that are logged into server
        field1.setAccessible(true);
        Object[] players = (Object[]) field1.get(null);
        System.out.println(players.length); // it is set to 2048 in the client class
        // should return a player Object
       
        return (Object[]) field1.get(null);// returns 2048 null value*/
       
    }
   
}
Code:
import java.io.File;
import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;

public class Player2 {
    private Object player;

   
    public Player2(Object player){
    this.player = player;
    }
   
/*
* Not sure what  field is username yet just guessing aString10197
* currently not implemented will try and use later when everything else works
*/
    public String getUserName() throws IllegalArgumentException, IllegalAccessException, MalformedURLException, ClassNotFoundException, NoSuchFieldException, SecurityException {
        File file = new File("C:\\Users\\accen\\Desktop\\718\\Matrix Package\\Matrix Client\\bin");
        URL url = file.toURI().toURL();
        URL[] urls = {url};
        ClassLoader loader = new URLClassLoader(urls);
        Class myClass = loader.loadClass("Player");
        Field f = myClass.getDeclaredField("aString10195");
        f.setAccessible(true);
        System.out.println(f.get(player));
    return (String) f.get(player);
    }
}
 
Runescape Gamblingrunescape gambling
Back
Top