SRL Archive - Reflection Development

Stealing hooks from RSBot


Widget

2009-12-13 22:46:12

It doesn't seem like many people are against it anymore since Method stopped updating his updater and no one else looks to be writing one, so I'll put this here.

Notepad++: http://sourceforge.net/projects/notepad-plus/files/
DJ Java Decompiler: http://uppit.com/v/YSFKH3VU


First, check out (from the repos) RSBot if you don't already have it.

Actually nevermind, all you need is this one jar file. Just make sure you have the newest one.

Now open it with the DJ Java Decompiler thing.



Also, while you're at it, make a new folder and call it something (I used decomp).



Now select all the classes.



And decompile them toward the folder you just made.



Now open up Notepad++, and go to Search > Find In Files.



Click Browse… and pick the folder you decompiled everything to.



I'll be using RSCharacter as an example (I guess it's just everyone's favorite example). We search for the class that implements it, so we search for "implements rscharacter".



For this one, there will only be one result. For things like objects there are 5. I think it's only objects that get more than one though. Double-click the result to open up the file.



Scroll down, and there are your hooks! :D

Sex

2009-12-14 00:02:59

Anyway somebody can create something to parse the file automatically and put the hooks into the Hooks.scar file?

senrath

2009-12-14 00:43:37

From: Sex
Anyway somebody can create something to parse the file automatically and put the hooks into the Hooks.scar file?


Yeah, um, at this point it's more than just ripping the hooks that's needed.

Sex

2009-12-14 01:30:58

Oh. Sorry, I'm not that good with Java and the like.

super_

2009-12-14 08:58:55

why even decompile?

Gu3st...

2009-12-14 10:31:39

From: super_
why even decompile?
Is it possible to read it without decompiling it?

Bobarkinator

2009-12-14 12:06:43

You can use BCEL.

noidea

2009-12-14 12:29:02

I thought. They had the source on the website

Bobarkinator

2009-12-14 12:40:53

From: noidea
I thought. They had the source on the website


They have the bot source. We're talking about the rs.jar

mormonman

2009-12-14 16:20:39

I thought people already knew this?
Did you pay for dj decomp?

Simtoon

2009-12-14 16:31:25

not everyone theres alway people asking

super_

2009-12-14 17:11:29

why do you guys restrict it to BCEL? there are plenty of other classfile manipulation libraries… and who said you even needed one? reflection would work fine.

mormonman

2009-12-14 17:49:31

New object system:

public final RSAnimableNode getRSAnimableList()
{
return r;
}

public final RSInteractable getRSObject2_0()
{
return h;
}

public final RSInteractable getRSObject2_1()
{
return k;
}

public final RSInteractable getRSObject3_0()
{
return n;
}

public final RSInteractable getRSObject4()
{
return s;
}

public final RSInteractable getRSObject3_1()
{
return v;
}

public final RSGround getUnknownRSGround()
{
return z;
}

public final RSInteractable getRSObject1()
{
return A;
}

Kyle Undefined

2009-12-15 18:00:22

I don't know if this is what you need, but here's this:

Implements RSInterface:

public final int getMasterX()
{
return masterX;
}

public final int getMasterY()
{
return masterY;
}

public final RSInterface[] getComponents()
{
return N;
}

public final int getType()
{
return Qc;
}

public final int getSpecialType()
{
return qb;
}

public final String[] getActions()
{
return Ab;
}

public final boolean isInventoryInterface()
{
return bb;
}

public final String getToolTip()
{
return Pc;
}

public final int getX()
{
return Gb;
}

public final int getY()
{
return Jc;
}

public final int getWidth2()
{
return Ib;
}

public final int getHeight2()
{
return Cb;
}

public final int getBoundsArrayIndex()
{
return s;
}

public final int getBorderThickness()
{
return Ic;
}

public final int getXRotation()
{
return h;
}

public final int getComponentIndex()
{
return z;
}

public final int getHeight()
{
return Qb;
}

public final int getHorizontalScrollBarSize()
{
return Z;
}

public final int getHorizontalScrollBarThumbPosition()
{
return v;
}

public final int getHorizontalScrollBarThumbSize()
{
return Ib;
}

public final int getID()
{
return sc;
}

public final boolean isHorizontallyFlipped()
{
return Fb;
}

public final boolean isVerticallyFlipped()
{
return m;
}

public final int getComponentStackSize()
{
return Nc;
}

public final int getComponentID()
{
return Sb;
}

public final String getComponentName()
{
return eb;
}

public final int getModelZoom()
{
return wb;
}

public final int getModelID()
{
return lb;
}

public final int getModelType()
{
return xb;
}

public final int getParentID()
{
return tb;
}

public final String getSelectedActionName()
{
return Db;
}

public final int getShadowColor()
{
return Xb;
}

public final String getText()
{
return qc;
}

public final int getTextColor()
{
return mc;
}

public final int getTextureID()
{
return Y;
}

public final int getVerticalScrollBarSize()
{
return Ob;
}

public final int getVerticalScrollBarPosition()
{
return hc;
}

public final int getVerticalScrollBarThumbSize()
{
return Cb;
}

public final int getWidth()
{
return Cc;
}

public final int getYRotation()
{
return Rc;
}

public final int getZRotation()
{
return cd;
}

Implements RSPlayer:

public final int getTeam()
{
return Jc;
}

public final String getName()
{
return mc;
}

public final int getLevel()
{
return bd;
}

Implements RSInteractableDef:
public final RSInteractable getRSInteractable()
{
return q;
}

Implements TileData:
public final int getHeight(int x, int z)
{
return a(x, z);
}

Implements Client:
public final int[] getRSNPCIndexArray()
{
return hb.B;
}

public final RSNPC[] getRSNPCArray()
{
return jf.x;
}

public final int getRSNPCCount()
{
return rp.h;
}

public final RSPlayer[] getRSPlayerArray()
{
return mn.A;
}

public final int[] getRSPlayerIndexArray()
{
return to.f;
}

public final int getRSPlayerCount()
{
return ss.K;
}

public final int getBaseX()
{
return ok.p;
}

public final RSPlayer getMyRSPlayer()
{
return sh.j;
}

public final int getBaseY()
{
return qr.t;
}

public final int getPublicChatMode()
{
return ae.x;
}

public final int getLoopCycle()
{
return va.g;
}

public final int getSelfInteracting()
{
return ok.p;
}

public final byte[][][] getGroundByteArray()
{
return vn.g;
}

public final int getPlane()
{
return gn.n;
}

public final int getCamPosX()
{
return ok.n;
}

public final int getCamPosY()
{
return hd.V;
}

public final int getCamPosZ()
{
return te.e;
}

public final int getCameraPitch()
{
return rr.m;
}

public final int getCameraYaw()
{
return ij.c;
}

public final Rectangle[] getRSInterfaceBoundsArray()
{
return r.b;
}

public final boolean[] getValidRSInterfaceArray()
{
return pr.S;
}

public final String getCurrentUsername()
{
return ag.H;
}

public final String getCurrentPassword()
{
return le.d;
}

public final Mouse getMouse()
{
return rf.W;
}

public final Keyboard getKeyboard()
{
return pd.f;
}

public final MouseWheel getMouseWheel()
{
return ld.c;
}

public final Callback getCallback()
{
return callback;
}

public final void setCallback(Callback arg0)
{
callback = arg0;
}

public final int getLoginIndex()
{
return ho.J;
}

public final int[] getSkillExperiencesMax()
{
return lt.u;
}

public final int getMinimapScale()
{
return li.r;
}

public final int[] getCURVECOS()
{
return an.s;
}

public final int[] getCURVESIN()
{
return an.m;
}

public final int getMinimapSetting()
{
return sj.N;
}

public final int getMinimapAngle()
{
return nt.b;
}

public final float getMinimapOffset()
{
return wi.K;
}

public final boolean isSpellSelected()
{
return et.u;
}

public final int isItemSelected()
{
return nf.r;
}

public final String getSelectedItemName()
{
return bi.r;
}

public final NodeCache getRSItemNodeCache()
{
return tf.m;
}

public final StatusNodeList getRSInteractingDefList()
{
return gi.h;
}

public final RSGround[][][] getRSGroundArray()
{
return bf.o;
}

public final int getMenuOptionsCount()
{
return lt.w;
}

public final boolean isMenuOpen()
{
return di.B;
}

public final int getMenuX()
{
return et.m;
}

public final int getMenuY()
{
return bu.G;
}

public final NodeList getActionDataList()
{
return ui.k;
}

public final Signlink getSignlink()
{
return tj.d;
}

public final boolean isFlagged()
{
return o.k;
}

public final RSItemDefFactory getRSItemDefFactory()
{
return pc.P;
}

public final int getDestX()
{
return kg.P;
}

public final int getDestY()
{
return ea.a;
}

public final TileData[] getTileData()
{
return mt.I;
}

public final DetailInfo getDetailInfo()
{
return ke.b;
}

public final RSGroundData[] getRSGroundDataArray()
{
return ol.W;
}

public final String[] getChatMessages()
{
return qd.b;
}

public final String[] getChatNames()
{
return qd.b;
}

public final int[] getChatTypes()
{
return rt.a;
}

public final int[] getSkillLevels()
{
return uo.j;
}

public final int[] getSkillExperiences()
{
return es.a;
}

public final int[] getSkillLevelMaxes()
{
return ig.F;
}

public final Settings getSettingArray()
{
return mu.c;
}

public final NodeCache getRSInterfaceNC()
{
return ba.g;
}

public final int getGUIRSInterfaceIndex()
{
return ub.n;
}

public final RSInterface[][] getRSInterfaceCache()
{
return hh.f;
}

Implements RSNPCDef:
public final String[] getActions()
{
return C;
}

public final String getName()
{
return S;
}

public final int getType()
{
return gb;
}

public final int getLevel()
{
return k;
}

Implements RsItem:

public final int getID()
{
return p;
}

public final int getStackSize()
{
return n;
}

Implements NodeListCache:
public final NodeList getNodeList()
{
return m;
}

Implements Node:
public final long getID()
{
return e;
}

public final Node getNext()
{
return c;
}

public final Node getPrevious()
{
return d;
}

Implements RSItemDef:

public final String getName()
{
return c;
}

public final String[] getGroundActions()
{
return Db;
}

public final RSItemDefFactory getFactory()
{
return db;
}

public final int getID()
{
return U;
}

public final int getCertTemplateID()
{
return bb;
}

public final int getCertID()
{
return K;
}

public final boolean isMembersObject()
{
return hb;
}

public final int getTeam()
{
return Ab;
}

public final String[] getActions()
{
return j;
}

Implements RSNPC:
public final RSNPCDef getRSNPCDef()
{
return mc;
}

Implements RSItemDefFactory:
public final MRUNodes getMRUNodes()
{
return j;
}

public final boolean isMembers()
{
return v;
}

Implements RSAnimableNode:
public final RSAnimable getRSAnimable()
{
return e;
}

public final RSAnimableNode getNext()
{
return b;
}

Implements MouseDataNode:
public final int getY()
{
return z;
}

public final int getX()
{
return D;
}

public final int getModifiers()
{
return G;
}

public final long getTime()
{
return E;
}

Implements RSGround:
public final int getX()
{
return q;
}

public final int getY()
{
return u;
}

public final int getPlane1()
{
return B;
}

public final int getPlane2()
{
return o;
}

public final RSAnimableNode getRSAnimableList()
{
return r;
}

public final RSInteractable getRSObject2_0()
{
return h;
}

public final RSInteractable getRSObject2_1()
{
return k;
}

public final RSInteractable getRSObject3_0()
{
return n;
}

public final RSInteractable getRSObject4()
{
return s;
}

public final RSInteractable getRSObject3_1()
{
return v;
}

public final RSGround getUnknownRSGround()
{
return z;
}

public final RSInteractable getRSObject1()
{
return A;
}

Implements DetailInfo:
public final int getDetailLevel()
{
return super.n;
}

Implements Runnable, Signlink:
public final EventQueue getEventQueue()
{
return i;
}

public final Applet getGameApplet()
{
return f;
}

Implements MouseListener, MouseMotionListener:
public final int getMouseX()
{
return N;
}

public final int getMouseY()
{
return O;
}

public final NodeList getMouseDataList()
{
return Q;
}

public final NodeList getLastMouseDataList()
{
return J;
}

public final boolean isLoggingMouseMovements()
{
return R;
}

public final Component getComponent()
{
return S;
}

Implements RSInterfaceNode:
public final int getMainID()
{
return p;
}

Implements Stream:
public final int getCurrentOffset()
{
return lb;
}

Implements StatusNodeList:
public final StatusNode getHead()
{
return l;
}

public final StatusNode getNext()
{
return n;
}

Implements ActionDataNode:
public final String getMenuOption()
{
return u;
}

public final String getMenuAction()
{
return s;
}

Implements RSGroundData:
public final int[][] getBlocks()
{
return f;
}

Implements MRUNodes:
public final NodeSubList getList()
{
return m;
}

public final int getInitialCount()
{
return o;
}

public final int getSpaceLeft()
{
return f;
}

public final NodeCache getNodeCache()
{
return a;
}

Implements RSAnimable:
public final short getX1()
{
return n;
}

public final short getX2()
{
return m;
}

public final short getY1()
{
return s;
}

public final short getY2()
{
return x;
}

public final int getX()
{
return o;
}

public final int getY()
{
return j;
}

Implements StatusNode:
public final StatusNode getNext()
{
return e;
}

public final StatusNode getPrevious()
{
return c;
}

Implements RSObjectsDef:
public final int[] getChildrenIDs()
{
return n;
}

public final String getName()
{
return N;
}

public final String[] getActions()
{
return d;
}

I know I probably got some stuff that's not needed, or missed something, but this data looks like it's useful :p

~Camo

mormonman

2009-12-15 18:23:01

Unfortunately all of those hooks(or most) are now outdated… runescape had an update :P

Kyle Undefined

2009-12-15 22:10:29

You've got to be kidding me…

~Camo

Dervish

2009-12-16 02:03:43

From: Camo Developer
You've got to be kidding me…

~Camo


RuneTek 5 ;(

Quickmarch

2009-12-16 07:54:58

From: Dr D. Dervish
RuneTek 5 ;(


Jagex change them almost every update…

mormonman

2009-12-16 09:26:41

rsbot is updated now, so i am gunna get some fixes out after school.

Dub

2009-12-16 12:35:14

Wow, why would you need java code for a pascal bot? Or is this some kind of new bot, this RSBot you guys speak of?.. Enlighten me!
Don't flame me for having lived in a cave for 3 years :P.

Floor66

2009-12-16 13:55:11

RSBot is a java bot. Unrelated to SCAR or SRL.

Reflection is SRL's way to get info from the RS client so you can make awesome scripts happen. Reflection needs 'hooks', which we can get from RSBot.

Reflection can only be used with SMART, which was created by Benland, and which loads RS in a seperate program launched with SCAR/SRL (you have to include some stuff, read tuts on it).
You can of course also just use colour with SMART. SMART has a built in mouse so you can auto AND use your computer.

Kyle Undefined

2009-12-16 14:04:16

RSBot allows you to control the source of runescape and what it does, rather than just reading what the client is given when using Reflection.

Updated hook list:
Implements RSCharacter:
public final String getMessage()
{
return ib;
}

public final int isMoving()
{
return lc;
}

public final int getAnimation()
{
return B;
}

public final int[] getLocationY()
{
return gc;
}

public final int[] getLocationX()
{
return cc;
}

public final int getLoopCycleStatus()
{
return Sb;
}

public final int getHPRatio()
{
return Hb;
}

public final int getHeight()
{
return rb;
}

public final int getInteracting()
{
return ub;
}
Implements RSInterface:
public final int getMasterX()
{
return masterX;
}

public final int getMasterY()
{
return masterY;
}

public final RSInterface[] getComponents()
{
return z;
}

public final int getType()
{
return Zc;
}

public final int getSpecialType()
{
return Oc;
}

public final String[] getActions()
{
return c;
}

public final boolean isInventoryInterface()
{
return N;
}

public final String getToolTip()
{
return Sc;
}

public final int getX()
{
return bb;
}

public final int getY()
{
return tc;
}

public final int getWidth2()
{
return Ob;
}

public final int getHeight2()
{
return Zb;
}

public final int getBoundsArrayIndex()
{
return hb;
}

public final int getBorderThickness()
{
return F;
}

public final int getXRotation()
{
return Fc;
}

public final int getComponentIndex()
{
return H;
}

public final int getHeight()
{
return uc;
}

public final int getHorizontalScrollBarSize()
{
return xc;
}

public final int getHorizontalScrollBarThumbPosition()
{
return Yc;
}

public final int getHorizontalScrollBarThumbSize()
{
return Ob;
}

public final int getID()
{
return p;
}

public final boolean isHorizontallyFlipped()
{
return O;
}

public final boolean isVerticallyFlipped()
{
return v;
}

public final int getComponentStackSize()
{
return E;
}

public final int getComponentID()
{
return Ub;
}

public final String getComponentName()
{
return k;
}

public final int getModelZoom()
{
return Yb;
}

public final int getModelID()
{
return P;
}

public final int getModelType()
{
return Nc;
}

public final int getParentID()
{
return D;
}

public final String getSelectedActionName()
{
return A;
}

public final int getShadowColor()
{
return bd;
}

public final String getText()
{
return nc;
}

public final int getTextColor()
{
return Fb;
}

public final int getTextureID()
{
return eb;
}

public final int getVerticalScrollBarSize()
{
return xb;
}

public final int getVerticalScrollBarPosition()
{
return u;
}

public final int getVerticalScrollBarThumbSize()
{
return Zb;
}

public final int getWidth()
{
return Eb;
}

public final int getYRotation()
{
return yb;
}

public final int getZRotation()
{
return K;
}

Implements RSPlayer:
public final int getTeam()
{
return Qc;
}

public final String getName()
{
return rc;
}

public final int getLevel()
{
return oc;
}

Implements RSInteractableDef:
public final RSInteractable getRSInteractable()
{
return l;
}

Implements TileData:
public final int getHeight(int x, int z)
{
return a(x, z);
}

Implements Client:
public final int[] getRSNPCIndexArray()
{
return vj.e;
}

public final RSNPC[] getRSNPCArray()
{
return jd.G;
}

public final int getRSNPCCount()
{
return bc.s;
}

public final RSPlayer[] getRSPlayerArray()
{
return sa.H;
}

public final int[] getRSPlayerIndexArray()
{
return ac.c;
}

public final int getRSPlayerCount()
{
return vg.s;
}

public final int getBaseX()
{
return ba.m;
}

public final RSPlayer getMyRSPlayer()
{
return ms.g;
}

public final int getBaseY()
{
return fi.f;
}

public final int getPublicChatMode()
{
return tl.d;
}

public final int getLoopCycle()
{
return ea.a;
}

public final int getSelfInteracting()
{
return ba.m;
}

public final byte[][][] getGroundByteArray()
{
return am.q;
}

public final int getPlane()
{
return vd.f;
}

public final int getCamPosX()
{
return lo.i;
}

public final int getCamPosY()
{
return tp.e;
}

public final int getCamPosZ()
{
return nt.F;
}

public final int getCameraPitch()
{
return tc.c;
}

public final int getCameraYaw()
{
return i.j;
}

public final Rectangle[] getRSInterfaceBoundsArray()
{
return ha.P;
}

public final boolean[] getValidRSInterfaceArray()
{
return kn.R;
}

public final String getCurrentUsername()
{
return bg.q;
}

public final String getCurrentPassword()
{
return b.S;
}

public final Mouse getMouse()
{
return lg.a;
}

public final Keyboard getKeyboard()
{
return ss.l;
}

public final MouseWheel getMouseWheel()
{
return qq.s;
}

public final Callback getCallback()
{
return callback;
}

public final void setCallback(Callback arg0)
{
callback = arg0;
}

public final int getLoginIndex()
{
return ug.g;
}

public final int[] getSkillExperiencesMax()
{
return qa.b;
}

public final int getMinimapScale()
{
return km.Mc;
}

public final int[] getCURVECOS()
{
return tn.j;
}

public final int[] getCURVESIN()
{
return tn.k;
}

public final int getMinimapSetting()
{
return em.K;
}

public final int getMinimapAngle()
{
return hc.m;
}

public final float getMinimapOffset()
{
return uk.C;
}

public final boolean isSpellSelected()
{
return dm.k;
}

public final int isItemSelected()
{
return bk.S;
}

public final String getSelectedItemName()
{
return uo.D;
}

public final NodeCache getRSItemNodeCache()
{
return wg.d;
}

public final StatusNodeList getRSInteractingDefList()
{
return ab.O;
}

public final RSGround[][][] getRSGroundArray()
{
return dn.Z;
}

public final int getMenuOptionsCount()
{
return fm.k;
}

public final boolean isMenuOpen()
{
return qo.K;
}

public final int getMenuX()
{
return fa.f;
}

public final int getMenuY()
{
return sr.d;
}

public final NodeList getActionDataList()
{
return cl.d;
}

public final Signlink getSignlink()
{
return df.T;
}

public final boolean isFlagged()
{
return cl.i;
}

public final RSItemDefFactory getRSItemDefFactory()
{
return jr.c;
}

public final int getDestX()
{
return vb.N;
}

public final int getDestY()
{
return fs.m;
}

public final TileData[] getTileData()
{
return tn.i;
}

public final DetailInfo getDetailInfo()
{
return jb.c;
}

public final RSGroundData[] getRSGroundDataArray()
{
return it.J;
}

public final String[] getChatMessages()
{
return ka.h;
}

public final String[] getChatNames()
{
return ka.h;
}

public final int[] getChatTypes()
{
return ei.c;
}

public final int[] getSkillLevels()
{
return vd.e;
}

public final int[] getSkillExperiences()
{
return bo.P;
}

public final int[] getSkillLevelMaxes()
{
return il.f;
}

public final Settings getSettingArray()
{
return tg.h;
}

public final NodeCache getRSInterfaceNC()
{
return bj.Pb;
}

public final int getGUIRSInterfaceIndex()
{
return dm.j;
}

public final RSInterface[][] getRSInterfaceCache()
{
return vp.d;
}

Implements RSNPCDef:
public final String[] getActions()
{
return s;
}

public final String getName()
{
return B;
}

public final int getType()
{
return ob;
}

public final int getLevel()
{
return i;
}

Implements RsItem:
public final int getID()
{
return l;
}

public final int getStackSize()
{
return n;
}

Implements NodeCache:
public final Node[] getCache()
{
return p;
}

Implements NodeListCache:
public final NodeList getNodeList()
{
return m;
}

Implements Node:
public final long getID()
{
return a;
}

public final Node getNext()
{
return h;
}

public final Node getPrevious()
{
return i;
}

Implements RSItemDef:
public final String getName()
{
return e;
}

public final String[] getGroundActions()
{
return wb;
}

public final RSItemDefFactory getFactory()
{
return x;
}

public final int getID()
{
return bb;
}

public final int getCertTemplateID()
{
return tb;
}

public final int getCertID()
{
return tb;
}

public final boolean isMembersObject()
{
return M;
}

public final String[] getActions()
{
return t;
}

public final int getTeam()
{
return mb;
}

Implements RSNPC:
public final RSNPCDef getRSNPCDef()
{
return tc;
}

Implements RSItemDefFactory:
public final MRUNodes getMRUNodes()
{
return q;
}

public final boolean isMembers()
{
return c;
}

Implements RSAnimableNode:
public final RSAnimable getRSAnimable()
{
return d;
}

public final RSAnimableNode getNext()
{
return e;
}

Implements MouseDataNode:
public final int getX()
{
return t;
}

public final int getY()
{
return v;
}

public final int getModifiers()
{
return s;
}

public final long getTime()
{
return D;
}

Implements RSGround:
public final int getX()
{
return q;
}

public final int getY()
{
return o;
}

public final int getPlane1()
{
return l;
}

public final int getPlane2()
{
return r;
}

public final RSAnimableNode getRSAnimableList()
{
return f;
}

public final RSInteractable getRSObject3_0()
{
return d;
}

public final RSInteractable getRSObject1()
{
return h;
}

public final RSInteractable getRSObject2_0()
{
return p;
}

public final RSInteractable getRSObject2_1()
{
return t;
}

public final RSInteractable getRSObject4()
{
return x;
}

public final RSInteractable getRSObject3_1()
{
return y;
}

public final RSGround getUnknownRSGround()
{
return z;
}

Implements DetailInfo:
public final int getDetailLevel()
{
return super.q;
}

Implements Runnable, Signlink:
public final Applet getGameApplet()
{
return m;
}

public final EventQueue getEventQueue()
{
return f;
}

Implements MouseListener, MouseMotionListener:
public final int getMouseX()
{
return L;
}

public final int getMouseY()
{
return K;
}

public final NodeList getMouseDataList()
{
return O;
}

public final NodeList getLastMouseDataList()
{
return H;
}

public final Component getComponent()
{
return P;
}

public final boolean isLoggingMouseMovements()
{
return Q;
}

Implements RSInterfaceNode:
public final int getMainID()
{
return q;
}

Implements Stream:
public final int getCurrentOffset()
{
return H;
}

Implements StatusNodeList:
public final StatusNode getHead()
{
return h;
}

public final StatusNode getNext()
{
return n;
}

Implements ActionDataNode:
public final String getMenuOption()
{
return C;
}

public final String getMenuAction()
{
return l;
}

Implements RSGroundData:
public final int[][] getBlocks()
{
return y;
}

Implements MRUNodes:
public final NodeSubList getList()
{
return d;
}

public final int getInitialCount()
{
return a;
}

public final int getSpaceLeft()
{
return s;
}

public final NodeCache getNodeCache()
{
return u;
}

Implements RSAnimable:
public final short getX1()
{
return r;
}

public final short getX2()
{
return p;
}

public final short getY1()
{
return l;
}

public final short getY2()
{
return v;
}

public final int getX()
{
return s;
}

public final int getY()
{
return e;
}

Implements StatusNode:
public final StatusNode getNext()
{
return f;
}

public final StatusNode getPrevious()
{
return g;
}

Implements RSObjectDef:
public final int[] getChildrenIDs()
{
return b;
}

public final String getName()
{
return W;
}

public final String[] getActions()
{
return P;
}

Implements NodeList:
public final Node getHead()
{
return h;
}

public final Node getCurrent()
{
return r;
}

~Camo

mormonman

2009-12-16 14:17:07

From: Dub
Wow, why would you need java code for a pascal bot? Or is this some kind of new bot, this RSBot you guys speak of?.. Enlighten me!
Don't flame me for having lived in a cave for 3 years :P.


because they have all the functions already figured out, allowing us to be lazy and just transpose them to pascal from java.

n3ss3s

2009-12-16 14:44:22

where ma credits bch

MylesMadness

2009-12-16 15:25:57

Let me say this before I go insane, the hooks GET the feilds, which are what were stealing from rsbot.

mormonman

2009-12-16 16:21:52

From: MylesMadness
Let me say this before I go insane, the hooks GET the feilds, which are what were stealing from rsbot.


I don't see anyone saying otherwise. We use hooks to get certain fields from the runescape client with reflection and then we use those fields in our functions to output such things as the point on the screen where a tile is located(or on minimap).

MylesMadness

2009-12-16 17:24:16

From: mormonman
I don't see anyone saying otherwise. We use hooks to get certain fields from the runescape client with reflection and then we use those fields in our functions to output such things as the point on the screen where a tile is located(or on minimap).
Floor did is it in this thread, but lots of people have been posting that in other threads

Method

2009-12-16 17:41:59

From: Floor66
Reflection can only be used with SMART, which was created by Benland, and which loads RS in a seperate program launched with SCAR/SRL (you have to include some stuff, read tuts on it).
You can of course also just use colour with SMART. SMART has a built in mouse so you can auto AND use your computer.


Reflection can be used in any Java application, not just with SMART.

Gu3st...

2009-12-19 11:30:24

From: Method
Reflection can be used in any Java application, not just with SMART.
Not the reflection inside SRL, that he was talking about…
You can't use SRL's Reflection with JaGeX's client, is a better way of saying it

Method

2009-12-19 21:03:11

From: Zyt3x
Not the reflection inside SRL, that he was talking about…
You can't use SRL's Reflection with JaGeX's client, is a better way of saying it


SMART loads the RuneScape client, so…that's exactly what you're doing.

timmy15915

2009-12-20 02:14:58

lmao

Dub

2009-12-20 13:45:26

From: timmy15915
lmao


Wtf is this, spammerz? So anyway. Why does the updating for SRL Reflection take sooooooo long while RSBot etc. have it updated one or two days after the update…? :S

senrath

2009-12-20 13:47:48

Because we don't actually have all that many people working on it. And the spammer has already been dealt with (note that he's suspended), so you don't need to comment on it.

mormonman

2009-12-20 14:13:52

Actually it took rsbot something like 5 or 6 weeks to update after the runetek5 update.

Kyle Undefined

2009-12-20 14:15:15

But now that they have the major update out of the way, it takes little to no time at all for them to update after a RS update.

~Camo

JPHamlett

2009-12-20 14:49:55

you guys I almost have a beta Reflection ready for you guys

Kyle Undefined

2009-12-20 15:44:39

Awesome! When do you expect a test date?

~Camo

mastaraymond

2009-12-20 15:46:51

I don't get it.. You have lists of the hooks from RSBot, yet you can't port (copy + paste) them to use with SMART?

swisspking

2009-12-20 15:47:50

Nice Job, J_Pizzle (if it works then).

I'm wondering if it would be worth it for me to start "learning" Reflection, I read Reflection isn't used very often, though I think it's a great tool from what I heard.

I mean like.. What if another big update would come? Would Reflection "die" again then? (I just don't want to spend my time in a moribund skill, that's what I wanted to say:))

~Swiss

Kyle Undefined

2009-12-20 15:50:49

Basically from what I understand is, we get the return value and that's what we use as hooks. But I'm not 100% sure on how this works. I haven't tried that yet, but sounds like it would work since the Hooks.scar has those type of fields…Hmm

~Camo

JPHamlett

2009-12-20 15:56:54

From: mastaraymond
I don't get it.. You have lists of the hooks from RSBot, yet you can't port (copy + paste) them to use with SMART?


The rs way of doing everything has changed you can copy and paste the hooks but that wont help the functions work thats what my include goes around its almost done i ahve just fixed tiletoms (hopefully) then ill relase it if it seems to work

mormonman

2009-12-20 18:20:21

From: J_Pizzle
The rs way of doing everything has changed you can copy and paste the hooks but that wont help the functions work thats what my include goes around its almost done i ahve just fixed tiletoms (hopefully) then ill relase it if it seems to work


What method did you use for tiletoms?

Wanted

2009-12-20 21:50:08

From: mastaraymond
I don't get it.. You have lists of the hooks from RSBot, yet you can't port (copy + paste) them to use with SMART?


Yea you can just copy and paste the hooks into SCAR and stuff like GetMyPos works just fine, it's when you trying using the new hooks with SCAR functions like TileToMS you run into problems because the maths in SCAR are designed for runescape preRuneTek5, so the hooks are fine we just need new ways of using the hooks to get numbers and stuff.

n3ss3s

2009-12-23 05:01:06

we just need new ways of using the hooks to get numbers and stuff.


Which can just be translated from rsbot aswell…

Widget

2009-12-23 09:27:23

From: Dub
Wtf is this, spammerz? So anyway. Why does the updating for SRL Reflection take sooooooo long while RSBot etc. have it updated one or two days after the update…? :S


I'm not sure if it's been explained properly since you're still new to this, but people write programs ("updaters") that analyze the java bytecode in the client to find specific variable names ("fields/hooks") that correspond to the variables that we're looking for (like camera position, player arrays, etc). Every now and then updates break the patterns that the updaters look for, so parts have to be rewritten (like for RuneTek5), but after that you just run the thing and it spits out new hooks (or in RSBot's case, it spits out a hacked rs.jar).

Ben wrote me a script awhile back to leech hooks easier (back when the reflection include was one file). I'll post it here and let people update the references.

Bobarkinator

2009-12-23 22:30:54

From: Widget
I'm not sure if it's been explained properly since you're still new to this, but people write programs ("updaters") that analyze the java bytecode in the client to find specific variable names ("fields/hooks") that correspond to the variables that we're looking for (like camera position, player arrays, etc). Every now and then updates break the patterns that the updaters look for, so parts have to be rewritten (like for RuneTek5), but after that you just run the thing and it spits out new hooks (or in RSBot's case, it spits out a hacked rs.jar).

Ben wrote me a script awhile back to leech hooks easier (back when the reflection include was one file). I'll post it here and let people update the references.


I already had it half updated, I can post my version when I get home.

wesleyxD

2009-12-27 05:10:38

From: Bobarkinator
I already had it half updated, I can post my version when I get home.


you are home now???

Bobarkinator

2009-12-27 15:54:05

import java.io.*;
import java.util.*;
import java.util.zip.*;
import org.apache.bcel.classfile.*;
import org.apache.bcel.generic.*;

/**
* Parses RSBot's rs.jar file looking for specified methods in specific
* interfaces via bytecode manipulation, in order to convert the fields to SMART
* format paths. Figure it out, its simple and self explanatory...
* @author BenLand100
*/

public class SMART_RSBot_Parser {

/**
* Expand this with what you need, once again, easy to undestand.
*/
private static final Interface[] stuff = new Interface[] {
new Interface("org.rsbot.accessors.Client",
"getRSNPCIndexArray=NPCIndexArray",
"getRSNPCCount=NPCCount",
"getRSNPCArray=NPCArray",
"getRSPlayerArray=PlayerArray",
"getRSPlayerIndexArray=PlayerIndexArray",
"getRSPlayerCount=PlayerCount",
"getMyRSPlayer=MyPlayer",
"getBaseX=BaseX",
"getBaseY=BaseY",
"getPlane=BaseLayer",
"getLoopCycle=LoopCycle",
"getSelfInteracting=SelfInteracting",
"getGroundByteArray=GroundSettings",
"getCamPosX=CamX",
"getCamPosY=CamY",
"getCamPosZ=CamZ",
"getCameraYaw=CamYaw",
"getCameraPitch=CamPitch",
"getLoginIndex=LoginIndex",
"getSettingArray=SettingsArray",
"getSkillLevels=CurrentLevels",
"getSkillLevelMaxes=LevelMaxes",
"getSkillExperiences=Experiences",
"getMinimapOffset=MapOffsetAngle",
"getMinimapAngle=CompassAngle",
"getDestX=FlagX",
"getDestY=FlagY",
"getTileData=TileData"

),
new Interface("org.rsbot.accessors.RSCharacter",
"getAnimation=CharAnim",
"isMoving=CharMotion",
"getHeight=CharHeight",
"getHPRatio=CharHPRatio",
"getLoopCycleStatus=LoopCycleStatus",
"getInteracting=CharInteracting"),
new Interface("org.rsbot.accessors.RSPlayer",
"getName=CharName",
"getLevel=CharLevel"),
new Interface("org.rsbot.accessors.RSNPC",
"getRSNPCDef=NPCDef"),
new Interface("org.rsbot.accessors.RSNPCDef",
"getName=NPCName",
"getType=NPCType",
"getLevel=NPCLevel"),
new Interface("org.rsbot.accessors.RSAnimable",
"getX=CurrentX",
"getY=CurrentY")
};

/**
* Simple class to hold interface information
*/
private static class Interface {
public String name; //Name of the interface implemented
public String[] data; //Refactoring, MethodName=HookName
public Interface(String name, String... data) {
this.name = name;
this.data = data;
}
};

/**
* Does the work, should not have to mess with this, unless you want to make
* it "user friendly"
* @param args
*/
public static void main(String[] args) {
try {
LinkedList<ClassGen> gens = getClassGens(new File("C:/Documents and Settings/Will/My Documents/RSBot/lib/rs.jar")); // CHANGE THIS!!
HashMap<String,Interface> imap = new HashMap<String,Interface>();
System.out.println("const");
for (Interface i : stuff)
imap.put(i.name, i);
for (ClassGen gen : gens) {
if (gen.getSuperclassName().equals("cl"))
System.out.println(gen.getClassName() + " - " + gen.getSuperclassName());
String[] inters = gen.getInterfaceNames();
for (String inter : inters) {
//System.out.print(inter + ", ");
if (imap.containsKey(inter)) {
Interface i = imap.remove(inter);
System.out.println(" // " + inter.split("accessors.")[1]);
HashMap<String,String> hooks = new HashMap<String,String>();
for (String data : i.data) {
String[] parts = data.split("\\=");
hooks.put(parts[0], parts[1]);
}
ConstantPoolGen cpg = gen.getConstantPool();
for (Method m : gen.getMethods()) {
String name = m.getName();
if (hooks.containsKey(name)) {
String hook = hooks.remove(name);
MethodGen mg = new MethodGen(m, gen.getClassName(), cpg);
InstructionList il = mg.getInstructionList();
Instruction[] ins = il.getInstructions();
String field = "";
if (ins[0] instanceof GETSTATIC) {
GETSTATIC get = (GETSTATIC)ins[0];
field = get.getClassName(cpg) + "." + get.getFieldName(cpg);
System.out.println(" " + hook + " = '" + field + "';");
} else {
GETFIELD get = (GETFIELD)ins[1];
field = get.getFieldName(cpg);
System.out.println(" " + hook + " = '" + field + "';");
}
//System.out.println(" " + hook + " = " + field + "");
}
}
System.out.println();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Returns all ClassGens found in the rs.jar
* @param jar rs.jar file
* @return LinkedList of ClassGen
* @throws java.io.IOException
*/
private static LinkedList< ClassGen> getClassGens(File jar) throws IOException {
ClassGen tmpClass;
ZipInputStream zis = new ZipInputStream(new FileInputStream(jar));
LinkedList<ClassGen> gens = new LinkedList<ClassGen>();
byte buf[] = new byte[0xFFFF];
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
String name = entry.getName();
if (!name.endsWith(".class"))
continue;
name = name.replace(".class", "");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int len;
while ((len = zis.read(buf, 0, buf.length)) != -1) {
bos.write(buf, 0, len);
}
tmpClass = new ClassGen(new ClassParser(new ByteArrayInputStream(bos.toByteArray()), name).parse());
//if (tmpClass.getInterfaceNames().length == 0) continue;
gens.add(tmpClass);
}
return gens;
}


}

That's just what I started with, there are many more to correct/add.

Wanted

2010-01-04 21:19:32

All the image links are dead -.-

Edit: Figured it out anyway

RS build 578

Edit: Wat da fux, none of these hooks worked.

//------------------------------------------------------------------\\
//-- Scar Non-Standard Resource Library --||
//-- Reflection Routines - Hooks --||
//------------------------------------------------------------------//


const
// Build number
RsBuild = 578;

// NPC
NPCDef = 'tc';

// Player
CharName = '';
CharLevel = '';

// Client
NPCIndexArray = 'mh.e';
NPCArray = 'vh.s';
NPCCount = 'jo.m';

PlayerIndexArray = 'ep.a';
PlayerArray = 'am.a';
PlayerCount = 'bp.u';
MyPlayer = 'at.N';

BaseX = 'jl.ab';
BaseY = 'ij.d';

LoopCycle = 'ib';

GroundHeights = '';
GroundSettings = 'us.V';
BaseLayer = 'uo.y';

CamX = 'hp.e';
CamY = 'mh.d';
CamZ = 'fp.u';
CamPitch = 'pd.w';
CamYaw = 'ac.A';

LoginIndex = 'ub.bb';

SettingsArray = 'mk.e';

IsMembers = 'M';

MaxLevels = 'sr.i';
CurrentLevels = 'pg.U';
Experiences = 'at.L';

MapOffsetAngle = 'ae.R';
CompassAngle = 'q.q';

ChatMessages = 'es.b';
ChatTypes = 'qq.e';
ChatNames = 'es.b';

MenuOptionsCount = 'pg.S';
MenuOpen = 'vs.u';
MenuX = 'ro.n';
MenuY = 'vf.P';
MenuOption = 'pg.S';
MenuAction = 'y';

SelectedItemName = 'vo.m';

FlagX = 'ur.t';
FlagY = 'sa.W';

// Character
CharAnim = 'W';
CharMotion = 'kc';
CurrentX = 'wc';
CurrentY = 'L';
LoopCycleStatus = 'ib';
CharHPRatio = 'Nb';
CharHeight = 'Lb';
TurnDirection = '';
CharInteracting = 'nb';

SelfInteracting = 'jl.ab';

// NPCDef
NPCName = 'Rc';
NPCType = 'ub';
NPCLevel = 'Ec';

// Ground Item Finding
GroundItemArray = '';
GroundItemHead = '';
NextGroundItem = '';
GroundItem = '';
GroundItemID = '';
GroundItemStackSize = '';

GroundArray = 'td.V';

// Object Hooks
Object1 = '';
Object2 = '';
Object3 = '';
Object4 = '';
Object5Array = '';

ObjectUID1 = '';
ObjectUID2 = '';
ObjectUID3 = '';
ObjectUID4 = '';
ObjectUID5 = '';

// Interface Hooks
// General
InterfaceCache = 'bj.g';
ValidInterfaceArray = '';
InterfaceChildren = '';
InterfaceText = '';
TextColor = '';
SelectedModelID = '';
NotSelectedModelID = '';
SelectedModelType = '';
NotSelectedModelType = '';
ModelZoom = '';

// Bank
BankItemID = '';
BankItemStackSize = '';
BankItemName = '';
BankItemIndex = '';

// Inventory
InventoryItemIDs = '';
InventoryItemStackSizes = 'v';

// Ground Data
GroundDataArray = '';
GroundDataBlocks = '';

Implements RSInteractableDef
Implements TileData
Implements Client
Implements RSNPCDef
Implements RsItem
Implements NodeListCache
Implements Node
Implements RSItemDef
Implements RSNPC
Implements RSItemDefFactory
Implements RSAnimableNode
Implements MouseDataNode
Implements RSGround
Implements DetailInfo
Implements Runnable, Signlink
Implements MouseListener, MouseMotionListener
Implements RSInterfaceNode
Implements Stream
Implements StatusNodeList
Implements ActionDataNode
Implements RSGroundData
Implements MRUNodes
Implements RSAnimable
Implements StatusNode

public final String getMessage()
{
return ub;
}

public final int isMoving()
{
return kc;
}

public final int getAnimation()
{
return W;
}

public final int[] getLocationY()
{
return ac;
}

public final int[] getLocationX()
{
return ec;
}

public final int getLoopCycleStatus()
{
return ib;
}

public final int getHPRatio()
{
return Nb;
}

public final int getHeight()
{
return Lb;
}

public final int getInteracting()
{
return nb;
}
public final int getMasterX()
{
return masterX;
}

public final int getMasterY()
{
return masterY;
}

public final RSInterface[] getComponents()
{
return wb;
}

public final int getType()
{
return ub;
}

public final int getSpecialType()
{
return vb;
}

public final String[] getActions()
{
return ab;
}

public final boolean isInventoryInterface()
{
return Lc;
}

public final String getToolTip()
{
return uc;
}

public final int getX()
{
return wc;
}

public final int getY()
{
return L;
}

public final int getWidth2()
{
return w;
}

public final int getHeight2()
{
return cb;
}

public final int getBoundsArrayIndex()
{
return R;
}

public final int getBorderThickness()
{
return Cb;
}

public final int getXRotation()
{
return dd;
}

public final int getComponentIndex()
{
return hc;
}

public final int getHeight()
{
return Rb;
}

public final int getHorizontalScrollBarSize()
{
return Eb;
}

public final int getHorizontalScrollBarThumbPosition()
{
return S;
}

public final int getHorizontalScrollBarThumbSize()
{
return w;
}

public final int getID()
{
return Yc;
}

public final boolean isHorizontallyFlipped()
{
return sb;
}

public final boolean isVerticallyFlipped()
{
return u;
}

public final int getComponentStackSize()
{
return i;
}

public final int getComponentID()
{
return mc;
}

public final String getComponentName()
{
return kc;
}

public final int getModelZoom()
{
return M;
}

public final int getModelID()
{
return Pc;
}

public final int getModelType()
{
return Qb;
}

public final int getParentID()
{
return yb;
}

public final String getSelectedActionName()
{
return P;
}

public final int getShadowColor()
{
return I;
}

public final String getText()
{
return Xc;
}

public final int getTextColor()
{
return Sb;
}

public final int getTextureID()
{
return dc;
}

public final int getVerticalScrollBarSize()
{
return ib;
}

public final int getVerticalScrollBarPosition()
{
return V;
}

public final int getVerticalScrollBarThumbSize()
{
return cb;
}

public final int getWidth()
{
return cc;
}

public final int getYRotation()
{
return xb;
}

public final int getZRotation()
{
return bd;
}
public final int getTeam()
{
return Uc;
}

public final String getName()
{
return Rc;
}

public final int getLevel()
{
return Ec;
}
public final RSInteractable getRSInteractable()
{
return p;
}
public final int getHeight(int x, int z)
{
return c(x, z);
}
public client()
{
}

public final int[] getRSNPCIndexArray()
{
return mh.e;
}

public final RSNPC[] getRSNPCArray()
{
return vh.s;
}

public final int getRSNPCCount()
{
return jo.m;
}

public final RSPlayer[] getRSPlayerArray()
{
return am.a;
}

public final int[] getRSPlayerIndexArray()
{
return ep.a;
}

public final int getRSPlayerCount()
{
return bp.u;
}

public final int getBaseX()
{
return jl.ab;
}

public final RSPlayer getMyRSPlayer()
{
return at.N;
}

public final int getBaseY()
{
return ij.d;
}

public final int getPublicChatMode()
{
return bd.i;
}

public final int getLoopCycle()
{
return gm.f;
}

public final int getSelfInteracting()
{
return jl.ab;
}

public final byte[][][] getGroundByteArray()
{
return us.V;
}

public final int getPlane()
{
return uo.y;
}

public final int getCamPosX()
{
return hp.e;
}

public final int getCamPosY()
{
return mh.d;
}

public final int getCamPosZ()
{
return fp.u;
}

public final int getCameraPitch()
{
return pd.w;
}

public final int getCameraYaw()
{
return ac.A;
}

public final Rectangle[] getRSInterfaceBoundsArray()
{
return e.c;
}

public final boolean[] getValidRSInterfaceArray()
{
return hf.i;
}

public final String getCurrentUsername()
{
return vr.j;
}

public final String getCurrentPassword()
{
return as.f;
}

public final Mouse getMouse()
{
return na.Y;
}

public final MouseWheel getMouseWheel()
{
return tk.f;
}

public final Keyboard getKeyboard()
{
return kb.I;
}

public final Callback getCallback()
{
return callback;
}

public final void setCallback(Callback arg0)
{
callback = arg0;
}

public final int getLoginIndex()
{
return ub.bb;
}

public final int[] getSkillExperiencesMax()
{
return at.L;
}

public final int getMinimapScale()
{
return fk.c;
}

public final int[] getCURVECOS()
{
return wm.f;
}

public final int[] getCURVESIN()
{
return wm.h;
}

public final int getMinimapSetting()
{
return sd.R;
}

public final int getMinimapAngle()
{
return ae.R;
}

public final float getMinimapOffset()
{
return q.q;
}

public final boolean isSpellSelected()
{
return td.X;
}

public final int isItemSelected()
{
return ju.R;
}

public final String getSelectedItemName()
{
return vo.m;
}

public final NodeCache getRSItemNodeCache()
{
return gs.h;
}

public final StatusNodeList getRSInteractingDefList()
{
return bt.Ab;
}

public final RSGround[][][] getRSGroundArray()
{
return td.V;
}

public final int getMenuOptionsCount()
{
return pg.S;
}

public final boolean isMenuOpen()
{
return vs.u;
}

public final int getMenuX()
{
return ro.n;
}

public final int getMenuY()
{
return vf.P;
}

public final NodeList getActionDataList()
{
return hg.j;
}

public final Signlink getSignlink()
{
return tb.W;
}

public final boolean isFlagged()
{
return nk.jc;
}

public final RSItemDefFactory getRSItemDefFactory()
{
return sb.Q;
}

public final int getDestX()
{
return ur.t;
}

public final int getDestY()
{
return sa.W;
}

public final TileData[] getTileData()
{
return vh.w;
}

public final DetailInfo getDetailInfo()
{
return mo.c;
}

public final RSGroundData[] getRSGroundDataArray()
{
return jt.X;
}

public final String[] getChatMessages()
{
return es.b;
}

public final String[] getChatNames()
{
return es.b;
}

public final int[] getChatTypes()
{
return qq.e;
}

public final int[] getSkillLevels()
{
return pg.U;
}

public final int[] getSkillExperiences()
{
return ek.ab;
}

public final int[] getSkillLevelMaxes()
{
return sr.i;
}

public final Settings getSettingArray()
{
return mk.e;
}

public final NodeCache getRSInterfaceNC()
{
return tc.Y;
}

public final int getGUIRSInterfaceIndex()
{
return hs.z;
}

public final RSInterface[][] getRSInterfaceCache()
{
return bj.g;
}
public final String[] getActions()
{
return z;
}

public final String getName()
{
return eb;
}

public final int getType()
{
return wb;
}

public final int getLevel()
{
return fb;
}
public final int getID()
{
return t;
}

public final int getStackSize()
{
return v;
}
public rr()
{
v = new ld();
}

public final NodeList getNodeList()
{
return v;
}

public final long getID()
{
return d;
}

public final Node getNext()
{
return c;
}

public final Node getPrevious()
{
return e;
}
public final String getName()
{
return R;
}

public final String[] getGroundActions()
{
return r;
}

public final int getID()
{
return ub;
}

public final RSItemDefFactory getFactory()
{
return O;
}

public final int getCertTemplateID()
{
return yb;
}

public final int getCertID()
{
return yb;
}

public final boolean isMembersObject()
{
return M;
}

public final String[] getActions()
{
return gb;
}

public final int getTeam()
{
return xb;
}
public final RSNPCDef getRSNPCDef()
{
return tc;
}
public final MRUNodes getMRUNodes()
{
return m;
}

public final boolean isMembers()
{
return o;
}
public final RSAnimable getRSAnimable()
{
return l;
}

public final RSAnimableNode getNext()
{
return e;
}
public final int getX()
{
return M;
}

public final int getModifiers()
{
return E;
}

public final int getY()
{
return H;
}

public final long getTime()
{
return D;
}
public final int getX()
{
return y;
}

public final int getY()
{
return s;
}

public final int getPlane1()
{
return m;
}

public final int getPlane2()
{
return a;
}

public final RSAnimableNode getRSAnimableList()
{
return j;
}

public final RSInteractable getRSObject3_0()
{
return e;
}

public final RSInteractable getRSObject1()
{
return g;
}

public final RSInteractable getRSObject2_0()
{
return l;
}

public final RSInteractable getRSObject3_1()
{
return n;
}

public final RSInteractable getRSObject4()
{
return t;
}

public final RSGround getUnknownRSGround()
{
return B;
}

public final RSInteractable getRSObject2_1()
{
return D;
}

public final int getDetailLevel()
{
return super.a;
}

public final Applet getGameApplet()
{
return e;
}

public final EventQueue getEventQueue()
{
return k;
}

public final int getMouseX()
{
return L;
}

public final int getMouseY()
{
return K;
}

public final NodeList getMouseDataList()
{
return N;
}

public final NodeList getLastMouseDataList()
{
return p;
}

public final boolean isLoggingMouseMovements()
{
return O;
}

public final Component getComponent()
{
return P;
}

public cu()
{
}

public final int getMainID()
{
return x;
}

public final int getCurrentOffset()
{
return U;
}

public final StatusNode getHead()
{
return j;
}

public final StatusNode getNext()
{
return m;
}

public final String getMenuAction()
{
return y;
}

public final String getMenuOption()
{
return z;
}

public final int[][] getBlocks()
{
return d;
}
public final NodeSubList getList()
{
return w;
}

public final int getInitialCount()
{
return h;
}

public final int getSpaceLeft()
{
return y;
}

public final NodeCache getNodeCache()
{
return k;
}
public final short getX1()
{
return o;
}

public final short getX2()
{
return t;
}

public final short getY1()
{
return f;
}

public final short getY2()
{
return l;
}

public final int getX()
{
return p;
}

public final int getY()
{
return v;
}

public final StatusNode getNext()
{
return f;
}

public final StatusNode getPrevious()
{
return d;
}

getRSNPCIndexArray = mh.e
getRSNPCArray = vh.s
getRSNPCCount = jo.m
getRSPlayerIndexArray = ep.a
getRSPlayerArray = am.a
getRSPlayerCount = bp.u
getBaseX = jl.ab
getBaseY = ij.d
getMyRSPlayer = at.N
getPublicChatMode = bd.i
getLoopCycle = ib
getSelfInteracting = jl.ab
getGroundByteArray = us.V
getPlane = uo.y
getCamPosX = hp.e
getCamPosY = mh.d
getCamPosZ = fp.u
getCameraPitch = pd.w
getCameraYaw = ac.A
getRSInterfaceBoundsArray = e.c
getValidRSInterfaceArray = hf.i
getCurrentUsername = vr.j
getCurrentPassword = as.f
getRSInterfaceCache = bj.g
getMouseWheel = tk.f
getKeyboard = kb.I
getMouse = na.Y
getLoginIndex = ub.bb
getSettingArray = mk.e
getSkillExperiencesMax = at.L
getMinimapScale = fk.c
getCURVECOS = wm.f
getCURVESIN = wm.h
getMinimapSetting = sd.R
getMinimapAngle = ae.R
getMinimapOffset = q.q
isSpellSelected = td.X
isItemSelected = ju.R
getSelectedItemName = vo.m
getRSItemNodeCache = gs.h
getRSInteractingDefList = bt.Ab
getRSGroundArray = td.V
getChatMessages = es.b
getChatNames = es.b
getChatTypes = qq.e
getMenuOption = pg.S
getMenuOptionsCount = pg.S
getMenuAction = y
isMenuOpen = vs.u
getMenuX = ro.n
getMenuY = vf.P
getActionDataList = hg.j
getSignlink = tb.W
isFlagged = nk.jc
isMembers = M
getDestX = ur.t
getDestY = sa.W
getDetailLevel = super.a
getTileData = vh.w
getRSGroundDataArray = jt.X
getSkillLevels = pg.U
getSkillExperiences = at.L
getSkillLevelMaxes = sr.i
getRSInterfaceNC = tc.Y
getGUIRSInterfaceIndex = hs.z
getMessage = ub
isMoving = kc
getAnimation = W
getLocationY = ac
getLocationX = ec
getLoopCycleStatus = ib
getHPRatio = Nb
getHeight = Lb
getInteracting = nb
getX = wc
getY = L
getRSNPCDef = tc
getLevel = Ec
getName = Rc
getType = ub
getInteracting = nb
getStackSize = v
menuoption
pg.S
menuoption
getMenuOption

Edit: Wat da fux, none of these hooks worked.