December 15, 201510 yr 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 December 15, 201510 yr by ni562
December 15, 201510 yr 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 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 December 15, 201510 yr by Explv
December 15, 201510 yr 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.
December 15, 201510 yr Author 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 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?
December 15, 201510 yr 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
December 15, 201510 yr Author Because when the widget is not on screen, when you do getWidegets().get() it will return null. So always make sure you null check 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?
December 15, 201510 yr 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.
December 15, 201510 yr Author 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
December 15, 201510 yr sweeet, i didn't know that...Im sure it'll be useful in the future. Thanks for the help dude No problem For more information on the different operators in Java you can take a look at this Java tutorial: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
December 15, 201510 yr Author 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.
December 15, 201510 yr 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. Pretty much :P
Create an account or sign in to comment