Jump to content

client freezing


ni562

Recommended Posts

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
Link to comment
Share on other sites

 

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
Link to comment
Share on other sites

 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.

 

 

Link to comment
Share on other sites

 

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?

 

Link to comment
Share on other sites

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 :)

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

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