Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[ABCL10][OpenSource] mfFletcher v1.0 [OpenSource][ABCL10]

Recommended Posts


-Cuts arrow shafts

-Cuts short bows

-Cuts long bows


-Makes headless arrows

-Makes arrows

-Makes bolts

-Makes darts


-Strings long bows

-Strings short bows







Download & Source:

Github source




Aug 16, 2014

-ABCL 10 implemented


Edited by modulusfrank12

Share this post

Link to post
Share on other sites

Nice work! Your missing a lot of the ABCL elements though. Your not ABC Sleeping prior to object interaction.

Also there are a few locations were you could have added ABC methods (perform).



Alright, I'll realyl implement ABCL10, thanks for reading my code! Really do appreciate it.


Edit: ABCL10 Implemented

Edited by modulusfrank12

Share this post

Link to post
Share on other sites

I love all your scripts! I chose this specific fletcher because it has better antiban and reliability then others I've tested.


I'm going to make as long a proggy with this script as I can! I'll update it until I'm out of my 5k logs!



Share this post

Link to post
Share on other sites

Had to stop the bot due to failed drunken dwarf random!


To anybody curious about the stability of this script, It was running for 1:30:00 flawlessly at around 89k an hour doing maple longs.


I'd pay for this script in terms of its performance!

  • Like 1

Share this post

Link to post
Share on other sites
This topic is now closed to further replies.

  • Similar Content

    • By gef30
      I've decided to update an old script i wrote 3 years ago, and here it is: Multi Fisher v2! Completely rewritten, with a full implementation of ABC2, Multi fisher allows you to fish anything, anywhere! 
      get it HERE
      Source code: https://github.com/frankkeuning/fisher
      Setup guide:
    • By sohilpenguins
      Plank Collector
      Hey guys, so I was just going through my computer cleaning out old stuff and found an old script I had made months ago. It's a Plank collector; it has mule support, glory support, and f2p support. I will be releasing the F2p, non-mule support version. I know the ruling works. However, I know some people don't like to or don't want to bother. 
      EDIT: I recommend you have 30 hp and a little bit of defence because the skeletons in the wilderness will kill you. If you die the bot will just go back to collecting so dying isnt a big deal once in a while, level 3's WILL DIE EVERYTRIP
    • By TheHippy
      Hey everyone! before i begin i have to say big shout-out to everyone that helped me to get better at bot scripting and especially to  @JoeDezzy1  for taking the time to explain to me an improved code structure that really help make my scripts not only more clean, but also more loop-able and safe. 
      So i have 2 new open-source scripts that i released to my Pastebin and they are simple scripts that deal with the Varrock  and Canifis agility courses. Below is only the Canifis course scripts because both of them are almost identical scripts. I would like it if anyone could please give me any pointers about my script that could help improve it, especially in the effectiveness of my moveCamera() function.  Also, in my antiBanCheck() function I found that abc_util 'should' checks execute very rarely and i doubt that its enough to be effective (is it because they need to be checked every, lets say, 50ms or so?).
      Hippy's Canifis Agility Course Script:
      //Works well and needs 'ACamera' class found here: https://bitbucket.org/snippets/FinalCalibur/L8MXK (start script in canafis)(Date Created: Sept 4, 2016) package scripts; import java.awt.Color; import java.awt.Graphics; import org.tribot.api.Clicking; import org.tribot.api.DynamicClicking; import org.tribot.api.General; import org.tribot.api.Timing; import org.tribot.api.input.Mouse; import org.tribot.api.interfaces.Positionable; import org.tribot.api.types.generic.Condition; import org.tribot.api.util.abc.ABCUtil; import org.tribot.api2007.Camera; import org.tribot.api2007.GroundItems; import org.tribot.api2007.Inventory; import org.tribot.api2007.Objects; import org.tribot.api2007.Player; import org.tribot.api2007.Skills; import org.tribot.api2007.WebWalking; import org.tribot.api2007.types.RSArea; import org.tribot.api2007.types.RSGroundItem; import org.tribot.api2007.types.RSItem; import org.tribot.api2007.types.RSObject; import org.tribot.api2007.types.RSTile; import org.tribot.script.Script; import org.tribot.script.ScriptManifest; import org.tribot.script.interfaces.Painting; import scripts.fc.api.viewport.ACamera; @ScriptManifest(authors = { "TheHippy" }, category = "Agility", name = "Hippy's Canafis Agility Course") public class CanafisAgilityCourse extends Script implements Painting { //--------------------------------------------------------VARIABLES & CONSTANTS-------------------------------------------------------- private static final Color Color = null; private static final int AGILITY_COIN_ID = 11849; private static final int AGILITY_COIN_TILE_RADIUS = 6; private static final int LOBSTER_ID = 379; private static final int ACS0 = 10819;//tall tree (start) private static final int ACS1 = 10820;//gap private static final int ACS2 = 10821;//gap private static final int ACS3 = 10828;//gap private static final int ACS4 = 10822;//gap private static final int ACS5 = 10831;//harry potter private static final int ACS6 = 10823;//gap private static final int ACS7 = 10832;//gap private static final RSArea AGILITY_AREA1 = new RSArea(new RSTile(3505, 3497, 2) , new RSTile(3509, 3492, 2) );//first roof private static final RSArea AGILITY_AREA2 = new RSArea(new RSTile(3503, 3506, 2) , new RSTile(3498, 3504, 2) ); private static final RSArea AGILITY_AREA3 = new RSArea(new RSTile(3492, 3504, 2) , new RSTile(3487, 3499, 2) ); private static final RSArea AGILITY_AREA4 = new RSArea(new RSTile(3479, 3499, 3) , new RSTile(3475, 3492, 3) ); private static final RSArea AGILITY_AREA5 = new RSArea(new RSTile(3478, 3486, 2) , new RSTile(3483, 3481, 2) ); private static final RSArea AGILITY_AREA6 = new RSArea(new RSTile(3487, 3469, 3) , new RSTile(3503, 3478, 3) ); private static final RSArea AGILITY_AREA7 = new RSArea(new RSTile(3509, 3475, 2) , new RSTile(3515, 3482, 2) ); private static final RSArea EMPTY_AREA = new RSArea(new RSTile(0, 0, 0) , new RSTile(0, 0, 0) ); private static final RSTile AGILITY_WALK_TILE0 = new RSTile(3506, 3487, 0);//ground start private static final RSTile AGILITY_WALK_TILE1 = new RSTile(3506, 3495, 2); private static final RSTile AGILITY_WALK_TILE2 = new RSTile(3498, 3505, 2); private static final RSTile AGILITY_WALK_TILE3 = new RSTile(3487, 3500, 2); private static final RSTile AGILITY_WALK_TILE4 = new RSTile(3479, 3494, 3); private static final RSTile AGILITY_WALK_TILE5 = new RSTile(3479, 3484, 2); private static final RSTile AGILITY_WALK_TILE6 = new RSTile(3501, 3476, 3); private static final RSTile AGILITY_WALK_TILE7 = new RSTile(3510, 3481, 2); private long scriptStartTime; private long scriptTime; private String time; private RSTile playerPosition; private RSTile newTile; private RSItem[] inventoryIds; private RSObject[] obstacle; private ABCUtil ABC_Util; private int startLvl; private int startXP; private int currentLvl; private int currentXP; private int eatAtHP; private long moveCameraTime; private ACamera aCamera = new ACamera(this);//async camera //--------------------------------------------------------RUN-------------------------------------------------------- @Override public void run() { if(onStart()){ while(true){ switch(checkState()){ case 0://retry course println("Agility Step 0"); newTile = AGILITY_WALK_TILE0; newTile = newTile.translate(General.random(-1,1),General.random(-1,1)); agilityCourseStep(newTile, ACS0, EMPTY_AREA); break; case 1: println("Agility Step 1"); agilityCourseStep(AGILITY_WALK_TILE1, ACS1, AGILITY_AREA1); break; case 2: println("Agility Step 2"); agilityCourseStep(AGILITY_WALK_TILE2, ACS2, AGILITY_AREA2); break; case 3: println("Agility Step 3"); agilityCourseStep(AGILITY_WALK_TILE3, ACS3, AGILITY_AREA3); break; case 4: println("Agility Step 4"); agilityCourseStep(AGILITY_WALK_TILE4, ACS4, AGILITY_AREA4); break; case 5: println("Agility Step 5"); agilityCourseStep(AGILITY_WALK_TILE5, ACS5, AGILITY_AREA5); break; case 6: println("Agility Step 6"); agilityCourseStep(AGILITY_WALK_TILE6, ACS6, AGILITY_AREA6); break; case 7: println("Agility Step 7"); agilityCourseStep(AGILITY_WALK_TILE7, ACS7, AGILITY_AREA7); break; } } } } //--------------------------------------------------------START OF METHODS-------------------------------------------------------- //execute once at beggining private boolean onStart(){ println("CanifisAgilityCourse script has started"); scriptStartTime = Timing.currentTimeMillis(); startLvl = Skills.getActualLevel(Skills.SKILLS.AGILITY); startXP = Skills.getXP(Skills.SKILLS.AGILITY); ABC_Util = new ABCUtil(); General.useAntiBanCompliance(true); Mouse.setSpeed(120); eatAtHP = ABC_Util.generateEatAtHP(); moveCameraTime = Timing.currentTimeMillis() + General.random(7000, 40000); Camera.setRotationMethod(Camera.ROTATION_METHOD.ONLY_KEYS); return true; } //checks what to do based off player area private int checkState(){ playerPosition = Player.getPosition(); if(playerPosition.getPlane() == 0){ return 0; } else if(AGILITY_AREA1.contains(playerPosition)){ return 1; } else if(AGILITY_AREA2.contains(playerPosition)){ return 2; } else if(AGILITY_AREA3.contains(playerPosition)){ return 3; } else if(AGILITY_AREA4.contains(playerPosition)){ return 4; } else if(AGILITY_AREA5.contains(playerPosition)){ return 5; } else if(AGILITY_AREA6.contains(playerPosition)){ return 6; } else if(AGILITY_AREA7.contains(playerPosition)){ return 7; } sleep(50); return 8; } //execute the next obstical private void agilityCourseStep(RSTile walkTile, int obstacleId, RSArea currentArea){ obstacle = Objects.findNearest(8, obstacleId); if(obstacle.length > 0 && obstacle[0].isOnScreen()){//click obstical getAgilityCoins(currentArea); Clicking.click(obstacle[0]); Timing.waitCondition(new Condition() { @Override public boolean active() { if(!currentArea.contains(Player.getPosition())){ return true; } antiBanCheck();//while checking, preform antiban sleep(General.randomSD(200,300)); return false; } }, General.random(2600, 6000));//worked too perfectly so a shorter time out is put sleep(General.random(2000, 3000)); }else{//walk to obstical first getAgilityCoins(currentArea); walkToWaitCondition(walkTile, 4000, 6000); getAgilityCoins(currentArea); sleep(General.random(2500, 3300)); obstacle = Objects.findNearest(8, obstacleId); if(obstacle.length > 0){ Clicking.click(obstacle[0]); antiBanCheck(); } } } //if checkState fails, tele to varrock to reset (disabled) /* private void agilityCourseFailSafe(){ GameTab.open(GameTab.TABS.MAGIC); sleep(General.randomSD(500, 1000)); RSInterfaceChild varrockTele = Interfaces.get(218, 16); if(varrockTele != null){ varrockTele.click(); } } */ //check if agility coins are nearby, if so pick them up private void getAgilityCoins(RSArea currentArea){ RSGroundItem[] agilityCoins = GroundItems.find(7, AGILITY_COIN_ID); if(agilityCoins.length > 0){ RSTile coinPosition = agilityCoins[0].getPosition(); if(currentArea.contains(coinPosition) && Player.getPosition().distanceTo(coinPosition) < AGILITY_COIN_TILE_RADIUS){ println("agility coin found"); walkToWaitCondition(agilityCoins[0].getPosition(), 4000, 6000); Timing.waitCondition(new Condition() {//wait until player at agility coin position @Override public boolean active() { if(Player.getPosition() == agilityCoins[0].getPosition()){ println("at agility coin!"); return true; } antiBanCheck();//while checking, preform antiban sleep(General.randomSD(50, 60)); return false; } }, General.random(3000, 4000)); DynamicClicking.clickRSGroundItem(agilityCoins[0], 1); Timing.waitCondition(new Condition() {//continue if no more agiltiy coin after click @Override public boolean active() { RSGroundItem[] agilityCoins = GroundItems.find(7, AGILITY_COIN_ID); if(agilityCoins.length < 1){ return true; } antiBanCheck();//while checking, preform antiban sleep(General.randomSD(50, 100)); return false; } }, General.random(2000, 3000)); } } } //WebWalking with condition private void walkToWaitCondition(Positionable destination, int waitMin, int waitMax){ WebWalking.walkTo(destination, new Condition() { @Override public boolean active() { if(Player.getPosition() == destination){ return true; } antiBanCheck();//while checking, preform antiban sleep(General.randomSD(50, 100)); return false; } }, General.random(waitMin, waitMax)); } //check if player should preform antiban actions private void antiBanCheck(){ if(Skills.getCurrentLevel(Skills.SKILLS.HITPOINTS) <= eatAtHP){ inventoryIds = Inventory.find(LOBSTER_ID); if(inventoryIds.length > 0){ inventoryIds[0].click(); eatAtHP = ABC_Util.generateEatAtHP(); } } if (ABC_Util.shouldCheckTabs()){ println("antiBan shouldCheckTabs execute"); ABC_Util.checkTabs(); } if (ABC_Util.shouldCheckXP()){ println("antiBan shouldCheckXP execute"); ABC_Util.checkXP(); } if (ABC_Util.shouldExamineEntity()){ println("antiBan shouldExamineEntity execute"); ABC_Util.examineEntity(); } if (ABC_Util.shouldMoveMouse()){ println("antiBan shouldMoveMouse execute"); ABC_Util.moveMouse(); } if (ABC_Util.shouldPickupMouse()){ println("antiBan shouldPickupMouse execute"); ABC_Util.pickupMouse(); } if (ABC_Util.shouldRightClick()){ println("antiBan shouldRightClick execute"); ABC_Util.rightClick(); } if (ABC_Util.shouldRotateCamera()){ println("antiBan shouldRotateCamera execute"); ABC_Util.rotateCamera(); } if (ABC_Util.shouldLeaveGame()){ println("antiBan shouldLeaveGame execute"); ABC_Util.leaveGame(); } if(Timing.currentTimeMillis() > moveCameraTime){ println("antiBan custom moveCamera execute"); moveCamera(); moveCameraTime = Timing.currentTimeMillis() + General.random(9000, 40000); } } //custom move camera function private void moveCamera(){ int randomInt = General.random(0, 100); int signInt = 0; if(randomInt > General.random(40, 60)){ signInt = -1; }else{ signInt = +1; } int setAngle = Camera.getCameraAngle() + (signInt * General.random(23, 124)); randomInt = General.random(0, 100); if(randomInt <= General.random(86, 100)){ //86-100% chance to execute aCamera.setCameraAngle(setAngle); } randomInt = General.random(0, 100); signInt = 0; if(randomInt > General.random(40, 60)){ signInt = -1; }else{ signInt = +1; } int setRotation = Camera.getCameraRotation() + (signInt * General.random(23, 174)); randomInt = General.random(0, 100); if(randomInt <= General.random(92, 100)){//92-100% chance to execute aCamera.setCameraRotation(setRotation); } } //draws GUI @SuppressWarnings("static-access") @Override public void onPaint(Graphics g) { currentLvl = Skills.getActualLevel(Skills.SKILLS.AGILITY) - startLvl; currentXP = Skills.getXP(Skills.SKILLS.AGILITY) - startXP; scriptTime = Timing.currentTimeMillis(); scriptTime = scriptTime - scriptStartTime; time = Timing.msToString(scriptTime); g.setColor(Color.GREEN); g.drawString("Script: CanafisAgilityCourse", 350, 330); g.drawString("Time Running: " + time, 350, 315); g.drawString("Gained XP: " + currentXP + "xp" , 350, 300); g.drawString("Gained Lvl: (+" + currentLvl + ")" , 350, 285); } } Thanks!
  • Our picks

    • This release will:

      Add new internal framework for capturing exceptions

      Fix issue with not selecting the last column in world hopper (Thanks @Todd)

      Add a message about pin usage in Banking#openBank (Thanks @Todd)

      Disable the firewall by default (Thanks @Todd)

      Fix handling of the welcome screen after login (Thanks @Encoded)

      Fix wrong amount bank withdrawal (Thanks @Encoded)

      Fix Screen#isInViewport

      Fix Game#isInViewport (Thanks @Encoded)

      Call onBreakEnd for ListenerManager Breaking Listeners (Thanks @Encoded)

      Fix Prayer#getPrayerPoints NumberFormatException (Thanks @JoeDezzy1)

      Note: If you are using LG, please restart both the RS client and TRiBot.
        • Thanks
        • Like
      • 19 replies
    • This release will:

      Fix LG for both OSBuddy and RuneLite

      Fix issue where the resizable client isn't able to be made smaller (Thanks @JoeDezzy1)

      Fix detection of the logout game tab when resizable mode and side panels are enabled (Thanks @JoeDezzy1)

      Add initial support for Sentry to allow us to identify and easily debug exceptions happening with all TRiBot users

      Add methods to determine if the bank is actually loaded, and not just the overarching interface (Thanks @wastedbro)

      Upcoming updates:

      Improved CLI support

      Full Sentry support

      Much more
        • Like
      • 64 replies
    • This release will:

      Fix NPE in Camera API (Thanks @wastedbro)

      Update deposit box interface ids (Thanks @Encoded)

      Add various bank methods (Thanks @wastedbro)




      Fix resizeable minimap bug (Thanks @wastedbro)

      Remove Java 8 requirement

      Please note: TRiBot is not yet fully compatible with Java 10+

      Fix the break handler issues by ensuring the break handler thread never gets paused

      Fix broken settings hooks

      Upcoming updates:

      Improved CLI support

      Much more

      Note: If you are using LG, please restart both the RS client and TRiBot
        • Like
      • 68 replies
    • This release will:

      Add support for using custom F key bindings to switch between game tabs (Thanks @erickho123)

      Fix tab opening for "Skills" and "Kourend Tasks" (Thanks @erickho123)

      Note: If you are using LG, please restart both the RS client and TRiBot
        • Like
      • 34 replies
    • This release will:

      Fix an issue where breaks would stop firing

      Fix Combat#getWildernessLevel, use dynamic search for text and cache ID for later calls

      Fix an NPE in the Combat API

      Fix Mouse#leaveGame bug where the mouse wouldn't actually leave the game screen
        • Like
      • 21 replies
  • Recently Browsing   0 members

    No registered users viewing this page.