Jump to content
Existing user? Sign In

Sign In



Sign Up

Shift Drop (Project Insanity)


Sadboys

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!

Link to comment
Share on other sites

  • 6 months later...
  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

  • 3 months later...
  • 1 month later...
  • 1 month later...
  • 4 weeks later...
  • 4 months later...
  • 2 weeks later...

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



Contact

[email protected]

astra.security

What is a RSPS?

A RSPS, also known as RuneScape private server, is an online game based on RuneScape, and controlled by independent individuals.

Popular RSPS Servers

Runewild Ikov RedemptionRSPS

Disclaimer

Runesuite is not affiliated with runescape, jagex in any way & exists solely for educational purposes.

×
×
  • Create New...