By registering with us, you'll be able to discuss, share and private message with other members of our community.
Sign up now!I need more details. Which equip button? As in, what item, if it's a menu option, if the bank is open, at what stage of the process it happened, etc.The bot just got stuck.
It appears to be infinitely hitting the equip button over and over again.
Nice, may I ask what your screen setup is?4 hours on one account
I think this walking to altar thing isn't my fault, but maybe the client's. The trouble is that calculations regarding the ruins happens just at the moment when the game has to load a new section of the map, which may result in a false-positive nullcheck. I'll take this up with Cloud when I have time to discuss it.I did include the details.
The bot pressed the n key over and over again which opens and closes the equipment tab. The happened in two stages, once while at the bank just after crafting the nature runes and once at the altar just after crafting nature runes.
The reason I stopped using the bot was because it crashed four times in a row while walking to the altar. It would crash at the palm trees just before you can see the nature altar near the shilo wall.
Yes, that's the walking to altar problem I mentioned in my last post.Great bot, loving it so far.
I will babysit it for a few hours, and post a proggy then.
EDIT1:
While running I acquired this error
java.lang.NullPointerException
at com.raymondbl.runemate.natRunner.Tasks.WalkToAltar.enter(WalkToAltar.java:61)
at com.raymondbl.runemate.natRunner.Tasks.WalkToAltar.enter(WalkToAltar.java:67)
at com.raymondbl.runemate.natRunner.Tasks.WalkToAltar.enter(WalkToAltar.java:67)
at com.raymondbl.runemate.natRunner.Tasks.WalkToAltar.enter(WalkToAltar.java:67)
at com.raymondbl.runemate.natRunner.Tasks.WalkToAltar.enter(WalkToAltar.java:67)
at com.raymondbl.runemate.natRunner.Tasks.WalkToAltar.execute(WalkToAltar.java:36)
at com.runemate.game.api.script.framework.task.TaskScript.onLoop(ewb:173)
at com.runemate.game.api.script.framework.LoopingScript.run(kub:162)
at com.runemate.game.api.script.framework.AbstractScript.start(lsb:27)
at a.Lk.run(qbb:193)
I hope soon as all the function on action barYes, that's the walking to altar problem I mentioned in my last post.
EDIT: Guys, please don't think that I'm not dedicated to fixing the script. I've barely spent any time on the script at all since its first release - I sacrificed a lot to even write it in the first place, when I saw that a lot of people wanted it. I released it knowing it would have problems, but also knowing that it's better than nothing. Once I get past this insane school block of mine in a week or two, I'll be able to dedicate half an hour a day to this script and hopefully make it flawless.
InterfaceComponent ActionBar = Interfaces.getAt(640, 4);
if(dOpenChest(IdBankChest)) {
if ((Bank.getQuantity(this.IdAstralRune, this.IdCosmisRune) >= 1)) {
Bank.withdraw(IdCosmisRune, 1);
Bank.withdraw(IdAstralRune, 1);
Execution.delay(500,550);
if(Inventory.getQuantity(IdCosmisRune) < 2 && Inventory.getQuantity(IdAstralRune) < 2) {
Bank.close();
}
while(!ActionBar.isVisible()){
Execution.delay(50);
}
}
}
/*if(Interfaces.getAt(548,114).isValid()){
Interfaces.getAt(548,114).click();
}*/
dPressKey((char)KeyEvent.VK_1);
Execution.delay(1500);
int i = 0;
while (i <=5){
Interfaces.getAt(88, 7).getComponent(5).click(); //scroll bar for npc contact menu
i++;
}
while (Interfaces.getAt(88, 5).isVisible()) {
Interfaces.getAt(88, 5).getComponent(14).click(); //Dark Mage contact
Execution.delay(1000);
i = 0;
}
while (Players.getLocal().getAnimationId() == 4413) { //wait for npc contact animation
Execution.delay(50);
}
while(Interfaces.getAt(1191, 19).isVisible()|| Interfaces.getAt(1184, 19).isVisible()) { //communication window to click continue
if(Interfaces.getAt(1191, 19).isVisible() || Interfaces.getAt(1184, 19).isVisible()) {
dPressKey((char)KeyEvent.VK_SPACE);
}
Execution.delay(1000);
}
Execution.delay(1200);
dPressKey((char)KeyEvent.VK_2);//click repair pouch
//Interface.getAt(1188, 23).click(true); //click repair pouches
Execution.delay(1200);
while(Interfaces.getAt(1191, 19).isVisible()|| Interfaces.getAt(1184, 19).isVisible()) { //communication end window to click continue
if(Interfaces.getAt(1191, 19).isVisible() || Interfaces.getAt(1184, 19).isVisible()) {
dPressKey((char)KeyEvent.VK_SPACE);
}
Execution.delay(1000);
}
degraded = false;
private boolean dPressKey(char Key) {
Keyboard.pressKey(Key);
Execution.delay(80,130);
return Keyboard.releaseKey(Key);
}
Static sleeps are almost usually always a bad idea. Conditional sleeps are far better (Execution#delayWhile/delayUntil).
You don't need a #dPressKey method because Keyboard already has the method #typeKey(String key).As another point, there is absolutely no reason that you should ever be looking up a specific interface component by index. Use dynamic queries instead.
public void contactDMage()
{
Data.gui.setStatus("Casting NPC Contact...");
String key = ActionBar.getFirstAction(Data.NPC_CONTACT)
.getSlot().getKeyBind();
if(validateContactDMage())
{
if(Keyboard.typeKey(key))
{
if(Execution.delayUntil(() ->
isInterface(), 2000, 4000));
else if(validate()) {contactDMage(); return;}
Util.getInterface(5470).hover();
Mouse.scroll(true, (int)Random.nextGaussian(109, 420));
Mouse.scroll(true);
processDMage(Data.DARK_MAGE);
while(validate() || Util.processInterface(Data.NEXT_TEXTURE_ID))
{
if(Util.processInterface(Data.NEXT_TEXTURE_ID));
else if(Util.processInterface("Can you repair"));
}
}
else contactDMage();
}
}
private boolean validateContactDMage()
{
return validate() && !validateWithdrawRunes();
}
private boolean isInterface()
{
return !Util.isNull(Util.getInterface(Data.DARK_MAGE)) &&
Util.getInterface(Data.DARK_MAGE).isVisible();
}
private boolean processDMage(String text)
{
InterfaceComponent component = Util.getInterface(text);
if(!Util.isNull(component))
{
if(component.interact("Speak-to"))
{
if(Execution.delayUntil(() -> !Util.isNull(component), () ->
Data.player.getAnimationId() != -1, 2400, 4800));
else return processDMage(text);
}
else return processDMage(text);
return true;
}
else return false;
}
public static InterfaceComponent getInterface(int textureId)
{
return Interfaces.getVisible(Interfaces.getTextureFilter(textureId))
.first();
}
public static InterfaceComponent getInterface(String text)
{
return Interfaces.getVisible(Interfaces.getTextContainsFilter(text))
.first();
}
public static boolean processInterface(int textureId)
{
InterfaceComponent component = getInterface(textureId);
if(!isNull(component))
{
if(component.click())
{
if(Execution.delayUntil(() -> !isNull(component), () ->
Data.player.getAnimationId() != -1, 1200, 2400))
return true;
else return processInterface(textureId);
}
else return processInterface(textureId);
}
else return false;
}
public static boolean processInterface(String text)
{
InterfaceComponent component = getInterface(text);
if(!isNull(component))
{
if(component.click())
{
if(Execution.delayUntil(() -> !isNull(component), () ->
Data.player.getAnimationId() != -1, 2400, 4800));
else return processInterface(text);
}
else return processInterface(text);
return true;
}
else return false;
}
Are people not able to contact the Dark Mage even once, or is it just bugging out occasionally? Because the first scenario means it's a problem with my textureID, and the second scenario means it's a problem with the failsafe.
4 accounts banned, be cereful
We use essential cookies to make this site work, and optional cookies to enhance your experience.