Jump to content
modulusfrank12

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

Recommended Posts

Features:

-Cuts arrow shafts

-Cuts short bows

-Cuts long bows

 

-Makes headless arrows

-Makes arrows

-Makes bolts

-Makes darts

 

-Strings long bows

-Strings short bows

 

 

Images:

 

1w42gRc.png

 

Download & Source:

Github source

Download

 

Updates:

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

 

Warfront1

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!

 

OnCX2PB.png

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
Guest
This topic is now closed to further replies.

  • Similar Content

    • 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
      https://tribot.org/repository/script/id/1868-s-plank-collector/
    • 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 LG support for Runelite


      Fix NPCChat issues


      Fix a bug where the camera angle setter would just hold down a key for 5 seconds (the timeout)


      Slightly adjust the rotation via keys to be more accurate


      Add the ability for asynchronous camera movement via keys


      Make Camera rotation via mouse more fluid, with more antiban, and work much better in resizable mode


      Add a "Camera#setCamera" method, allowing the rotation and angle to be set in parallel


      Increase the likelihood of using the mouse for camera movements


      Add support for adjusting the camera to positionable entities (Positionable#adjustCameraTo)



      Upcoming updates:

      Improved CLI support


      Much more



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

      Allow for clicking through the chat box when possible (Thanks @Todd)


      Fix Combat#selectIndex (Thanks @Encoded)


      Ensure worlds stay sorted and added a check to avoid misclicks in the in-game world hopper (Thanks @erickho123)


      Fix out-dated Options API interface indices (Thanks @Todd)



      Upcoming updates:

      Break handler bug fix


      Improved CLI support


      Much more



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

      Fix login bot after today's game update (Thanks @JoeDezzy1)


      Fix latest in-game world hopping issues (Thanks @erickho123)


      Compact Settings UI and set location relative to TRiBot (Thanks @JoeDezzy1)


      Fix an older implementation of GrandExchange#getWindowState (Thanks @JoeDezzy1)


      Improve the preformance of NPCChat by only searching in certain interface parents (Thanks @JoeDezzy1)



      Upcoming updates:

      Break handler bug fix


      Improved CLI support


      LG support for RuneLite


      Much more



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

      Fix bytecode manipulation in order to prevent the modification of parameters within the Filter and Condition classes themselves (thanks @wastedbro)


      Fix NPE caused by non-null value in GE API (thanks @erickho123)


      Add and fix equals methods for api2007.types (thanks @JoeDezzy1)


      Modify Mouse#leaveGame to make the mouse leave the game from top, left, right, or bottom (thanks @erickho123)


      Add Entrana area to Ships API (thanks @erickho123)


      Fix raid prayers index/settings in Prayer API (thanks @erickho123)



      Upcoming updates:

      Break handler bug fix


      Improved CLI support


      Much more



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

      Implement better canvas locking/synchronization mechanism


      Fix small Login API bug


      Remove the requirement for xbooting Java classes


      Use ExecutorService to perform canvas work in parallel


      Add "Account Management" game tab to GameTab API (thanks @Encoded)


      Fix NPCChat#getMessage (thanks @Encoded )


      Fix NPCChat#selectOption (thanks @Encoded )


      Fix Banking API after today's update (thanks @Encoded )


      Fix in-game world hopper after today's update (thanks @Encoded )



      Upcoming updates:

      Break handler bug fix


      Improved CLI support


      Much more



      Note: If you are using LG, please restart both the RS client and TRiBot
        • Thanks
        • Like
      • 38 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

×