Jump to content
RuneSuite
Existing user? Sign In

Sign In



Sign Up
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Sadboys

Shift Drop (Project Insanity)

Recommended Posts

Hey all,

This is a really simple tutorial for adding shift drop into your stock Project Insanity (PI) client.

It's a cool feature, loved by all RuneScape players.

In your Client.java (inside src, under models.players)
Add the following code

public static boolean shiftPressed = false;

What are we doing here? (For newcomers)
Here, we are creating a boolean that we can refer back to later to check if the shift key is currently pressed. This variable will be changed by key event listeners as seen later on in this tutorial.

Then use CTRL+F or your IDE search tool to find the following condition:

if (j == 1 && menuActionRow > 0) {

And you should see something like this (although it may vary if you are not using a fresh/stock PI):

if(j == 1 && menuActionRow > 0) {
				int i1 = menuActionID[menuActionRow - 1];
				if(i1 == 632 || i1 == 78 || i1 == 867 || i1 == 431 || i1 == 53 || i1 == 74 || i1 == 454 || i1 == 539 || i1 == 493 || i1 == 847 || i1 == 447 || i1 == 1125) {
					int l1 = menuActionCmd2[menuActionRow - 1];
					int j2 = menuActionCmd3[menuActionRow - 1];
					RSInterface class9 = RSInterface.interfaceCache[j2];

Underneath RSInterface class9 = RSInterface.interfaceCache[j2]; add:

if (shiftPressed){
	boolean hasDrop = false;
	int dropId = 0;
	for (int i = 0; i < menuActionName.length; i++){
		if (menuActionName[i] == null) {
			continue;
		}
        // To check for destroyable items too                                    
		if (menuActionName[i].contains("Drop") || menuActionName[i].contains("Destroy") || menuActionName[i].contains("Release")) {
			hasDrop = true;
			dropId = i;
		}
	}
	if (hasDrop) {
		doAction(dropId);
		return;
	}
}

What are we doing here? (For newcomers)
Here, we are using the boolean shiftPressed to: firstly, check if the shift key has been pressed (which is set by the below event listeners) and we are then executing code based on the answer. If the shift key is pressed, then we are checking that the item has a drop, destroy or release option and dropping it.

Now close your client.java, as we are done with this class and are moving onto another.

Open RSApplet.java and search for:

	public final void keyPressed(KeyEvent keyevent) {

And you should see:

	public final void keyPressed(KeyEvent keyevent) {
		idleTime = 0;
		int i = keyevent.getKeyCode();
		int j = keyevent.getKeyChar();

Under this, add:

if(keyevent.isShiftDown()){
	client.shiftPressed = true;
}

Please note, if your client.java file has a capital c (Client.java), you will need to change this to Client.shiftPressed = true;

What are we doing here? (For newcomers)
Here we are inside the keyPressed method which deals with keys that are pressed, we are identifying the character that has been pressed and in this case, int i represents the key code of the character. So we are comparing it to KeyEvent.VK_SHIFT (the shift key), and if their codes match and we are telling the client that the shift key has been pressed and storing the answer into a boolean that we can refer back to and check on.

Now search for:

public final void keyReleased(KeyEvent keyevent) {

You should see:

public final void keyReleased(KeyEvent keyevent) {
		idleTime = 0;
		int i = keyevent.getKeyCode();
		char c = keyevent.getKeyChar();

Under the last line of the above, add:

if (i == KeyEvent.VK_SHIFT) {
	client.shiftPressed = false;
}

Again, please note, if your client.java file has a capital c (Client.java), you will need to change this to Client.shiftPressed = true;

What are we doing here? (For newcomers)
Here we are inside the keyReleased method which deals with keys that are released (unpressed), we are identifying the character that has been released and in this case, int i represents the key code of the character. So we are comparing it to KeyEvent.VK_SHIFT (the shift key), and if their codes match and we are telling the client that the shift key is no longer pressed and storing the answer into a boolean that we can refer back to and check on.

_______________________________________

Now save and build your source and you will be good to go. Any questions, feel free to ask!

Share this post


Link to post
Share on other sites

Thanks man :)

Share this post


Link to post
Share on other sites

This should be helpful!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

Get connected with us on social networks:

Contact

Lumbridge Castle

@ace

Discord

Discord

About Us

We run the scene

×
×
  • Create New...