Jump to content

client freezing


Recommended Posts

Posted (edited)

The first bit of code runs smoothly, but the 2nd freezes my client... any ideas?

if(!player.isAnimating()){
  if (!player.isMoving()){
      wheel.interact("Spin"); //Wheel is now visible, spin bowstring
      sleep(random(700, 3000));
      spinMenu.hover();
      mouse.click(true);

     if(menu.isOpen()){
        sleep(random(700, 3000));
        menu.selectAction("Make X");
      }
   }
}

vs 

 

if(!player.isAnimating()){
    if (!player.isMoving()){
      if(!spinMenu.isVisible()){
         wheel.interact("Spin"); //Wheel is now visible, spin bowstring
         sleep(random(700, 3000));
       }

       spinMenu.hover();
       mouse.click(true);

      if(menu.isOpen()){
       sleep(random(700, 3000));
       menu.selectAction("Make X");
      }
   }
}
 
Edited by ni562
Posted (edited)

 

The first bit of code runs smoothly, but the 2nd freezes my client... any ideas?

if(!player.isAnimating()){
  if (!player.isMoving()){
      wheel.interact("Spin"); //Wheel is now visible, spin bowstring
      sleep(random(700, 3000));
      spinMenu.hover();
      mouse.click(true);

     if(menu.isOpen()){
        sleep(random(700, 3000));
        menu.selectAction("Make X");
      }
   }
}

vs 

 

if(!player.isAnimating()){
    if (!player.isMoving()){
      if(!spinMenu.isVisible()){
         wheel.interact("Spin"); //Wheel is now visible, spin bowstring
         sleep(random(700, 3000));
       }

       spinMenu.hover();
       mouse.click(true);

      if(menu.isOpen()){
       sleep(random(700, 3000));
       menu.selectAction("Make X");
      }
   }
}

 

 

Perhaps you should take a look at the debugging console. You can find it under settings -> show logger.

 

You can then determine your error from the output. Probably a NPE.

 

Your logic and code structure could also use some improvement smile.png

if(!myPlayer().isAnimating() && !myPlayer().isMoving()){

    RS2Widget spinMenu = getWidgets().get(); // Whatever you do to get the spin menu

    if(spinMenu == null || !spinMenu.isVisible()){

         wheel.interact("Spin");
         sleep(random(700, 3000));
    } else {

         spinMenu.interact("Make X");
    }
}
Edited by Explv
Posted
 if(!spinMenu.isVisible()){
         wheel.interact("Spin"); //Wheel is now visible, spin bowstring
         sleep(random(700, 3000));
 }

Perhaps you should take a look at the debugging console. You can find it under settings -> show log (or something similar).

 

My guess is you probably have a null pointer exception.

 

for sure just because he didn't do a null check with spinMenu

 

 

op:

btw spinMenu is a widget  null check it before using it. And you can use its built in interaction method

 

spinMenu.interact("ACTION");

 

it already search menu action for action.

 

 

Posted

 

Perhaps you should take a look at the debugging console. You can find it under settings -> show logger.

 

You can then determine your error from the output. Probably a NPE.

 

Your logic and code structure could also use some improvement smile.png

if(!myPlayer().isAnimating() && !myPlayer().isMoving()){

    RS2Widget spinMenu = getWidgets().get(); // Whatever you do to get the spin menu

    if(spinMenu == null || !spinMenu.isVisible()){

         wheel.interact("Spin");
         sleep(random(700, 3000));
    } else {

         spinMenu.interact("Make X");
    }
}

Hey thanks, that seems to fix the issue...

 

 

if i change you're code from 

if(spinMenu == null || !spinMenu.isVisible()){

 to

if (!spinMenu.isVisible()) {

 I get a null pointer on that line...How come it works when I check for null, but crashes when i don't?

 

Posted

Hey thanks, that seems to fix the issue...

 

 

if i change you're code from 

if(spinMenu == null || !spinMenu.isVisible()){

 to

if (!spinMenu.isVisible()) {

 I get a null pointer on that line...How come it works when I check for null, but crashes when i don't?

 

 

Because when the widget is not on screen, when you do getWidegets().get()  it will return null.

 

So always make sure you null check :)

 

Posted

Because when the widget is not on screen, when you do getWidegets().get()  it will return null.

 

So always make sure you null check smile.png

 

 

I'm not sure i follow..how does checking for null not make it crash? Does it skip the 2nd condition because it's an or and the first condition was true?

Posted

I'm not sure i follow..how does checking for null not make it crash? Does it skip the 2nd condition because it's an or and the first condition was true?

 

Yes, it is a logical OR  ||  so the second condition in the OR is not checked if the first evaluates to true.

 

If you were to use a bitwise OR  |  then both sides of the condition would be checked and a null pointer exception thrown.

Posted

Yes, it is a logical OR  ||  so the second condition in the OR is not checked if the first evaluates to true.

 

If you were to use a bitwise OR  |  then both sides of the condition would be checked and a null pointer exception thrown.

 

 

sweeet, i didn't know that...Im sure it'll be useful in the future.  Thanks for the help dude

Posted

I realized the 2nd part of the if statement was useless...it will never get to the 2nd condition.

if(spinMenu == null || !spinMenu.isVisible()){

is the same as

if(spinMenu == null ){

because if (spinMenu == null) then it's deff not visible and if it's not null then it is visible.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...