Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Try following our getting started guide
  • Still not working? Try downloading and running JarFix
  • Help! My bot doesn't do anything! Enable fresh start in client settings and restart the client
  • How to purchase with PayPal/OSRS/Crypto gold? You can purchase vouchers from other users
  • Manchurian Candidate Script


    420x69x420

    Recommended Posts

    This isn't a snippet but snippets can be found within it :D This script will speak the codeword to wake up your character's true Manchurian Candidate ("Jamaican Bobsled") whose only purpose is to listen to anyone else nearby who happens to speak their coded action words, ready to spring into action and engage at any moment. As you can read below, the supported commands include:

    -Dancing in random happy dances

    -Spamming one person with trades

    -Following the caller or another person

    -Constantly pathing to another random tile in a 5x5 area around the caller ("Swarm"/"Squaredance")

    -Filling out a random tile of silly shapes around the caller

    -Attacking players or a random monster out of the available nearby ones


    so I decided to make a bunch of F2P accs and run this script on them for teh l0lz. Feel free to nicely compliment my single-class script in one file and how efficient the structuring is 🙂

    Quote

    import java.time.Instant;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;

    import org.dreambot.api.Client;
    import org.dreambot.api.data.GameState;
    import org.dreambot.api.methods.MethodProvider;
    import org.dreambot.api.methods.combat.Combat;
    import org.dreambot.api.methods.emotes.Emote;
    import org.dreambot.api.methods.emotes.Emotes;
    import org.dreambot.api.methods.input.Keyboard;
    import org.dreambot.api.methods.interactive.NPCs;
    import org.dreambot.api.methods.interactive.Players;
    import org.dreambot.api.methods.map.Area;
    import org.dreambot.api.methods.map.Tile;
    import org.dreambot.api.methods.trade.Trade;
    import org.dreambot.api.methods.walking.impl.Walking;
    import org.dreambot.api.methods.walking.pathfinding.impl.obstacle.impl.PassableObstacle;
    import org.dreambot.api.methods.walking.web.node.impl.BasicWebNode;
    import org.dreambot.api.methods.widget.Widgets;
    import org.dreambot.api.methods.world.World;
    import org.dreambot.api.methods.world.Worlds;
    import org.dreambot.api.methods.worldhopper.WorldHopper;
    import org.dreambot.api.script.AbstractScript;
    import org.dreambot.api.script.Category;
    import org.dreambot.api.script.ScriptManager;
    import org.dreambot.api.script.ScriptManifest;
    import org.dreambot.api.script.listener.ChatListener;
    import org.dreambot.api.wrappers.interactive.NPC;
    import org.dreambot.api.wrappers.interactive.Player;
    import org.dreambot.api.wrappers.widgets.WidgetChild;
    import org.dreambot.api.wrappers.widgets.message.Message;
    import org.dreambot.api.wrappers.widgets.message.MessageType;

     

    @ScriptManifest(name = "Jamaican Bobsled", description = "Just say the words", author = "Dreambotter420",
                    version = 1.1, category = Category.MISC, image = "lFwvTuW.jpg")
    public class FirstScript extends AbstractScript implements ChatListener {
        
        private Player local = Players.localPlayer();
        private NPC attackTarget2 = null;
        private String callerCmd = null;
        private String callerName = null;
        private boolean ddMode = false;
        private boolean followOther = false;
        private boolean chopMode = false;
        private boolean mineMode = false;
        private boolean fishMode = false;
        private boolean takeMode = false;
        private boolean spamMode = false;
        private boolean danceMode = false;
        private boolean attackMode = false;
        private boolean disperse = false;
        private boolean tradeMode = false;
        private boolean spamTradeMode = false;
        private boolean squareMode = false;
        private boolean lineMode = false;
        private boolean circleMode = false;
        private String followTarget = null;
        private Player tradeTarget1 = null;
        private String tradeTarget = null;
        private boolean squareDance = false;
        private String attackTargetName = null;
        private Player attackTarget1 = null;
        private Player followTarget1 = null;
        private boolean newSquare = true;
        private boolean newCircle = true;
        private boolean newLine = true;
        private int cantreachCounter = 0;
        private boolean reachedLumbridge = false;
        private int firstwalktries = 0;
        Random rand1 = new Random();
        int xn = 0;
        int yn = 0;
        @Override
        public void onStart()
        {
            Walking.getAStarPathFinder().addObstacle(new PassableObstacle("Wilderness Ditch", "Cross", null, null, null));
            Keyboard.setWordsPerMinute(rand1.nextInt(50) + 75);
        }
        @Override
        public int onLoop()
        {
            local = Players.localPlayer();
            if(!Walking.isRunEnabled())
            {
                if(Walking.getRunEnergy() > 15)
                {
                    Walking.toggleRun();
                }
            }
            
            if(!reachedLumbridge)
            {
                Area n = new Area(3219,3213,3239,3226);
                if(Walking.walk(3233,3219))
                {
                     sleep(1000 + rand1.nextInt(2000));
                }
                else firstwalktries++;
                if(firstwalktries > 9)
                {
                    MethodProvider.log("Client attempted to walk to lumby and failed over 9 times");
                    ScriptManager.getScriptManager().stop();
                }
                if(n.contains(local))
                {
                    reachedLumbridge = true;
                }
                return 1000;
            }
            crossDitch();
            if(Trade.isOpen())
                {
                Trade.acceptTrade();
                sleep(100);
                }
            if(cantreachCounter >= 3)
            {
                int temprand2 = rand1.nextInt(10);
                int temprand3 = rand1.nextInt(4);
                for(int i = 0; i <= temprand3; i++)
                {
                    switch(temprand2)
                    {
                    case(0):{Keyboard.type(" ",false);break;}
                    case(1):{Keyboard.type(".",false);break;}
                    case(2):{Keyboard.type("..",false);break;}
                    case(3):{Keyboard.type("...",false);break;}
                    case(4):{Keyboard.type("....",false);break;}
                    case(5):{Keyboard.type("  ",false);break;}
                    case(6):{Keyboard.type("   ",false);break;}
                    case(7):{Keyboard.type("    ",false);break;}
                    case(8):{Keyboard.type("     ",false);break;}
                    case(9):{Keyboard.type("      ",false);break;}
                    }
                }
                Keyboard.type("");
                callerCmd = null;
                MethodProvider.log("3 strikes and you're out of reaches! Resetting...");
                cantreachCounter = 0;
                return 100;
            }
            if(callerCmd != null)
            {
                if(callerCmd.startsWith("stop"))
                {
                    exitstop();
                }
                else if(callerCmd.startsWith("setattstr") || callerCmd.startsWith("setattatt") || callerCmd.startsWith("setattdef"))
                {
                    Combat.openTab();
                    if(callerCmd.startsWith("setattatt"))
                    {
                        WidgetChild widget = Widgets.getWidgetChild(593, 5);
                        if(widget == null){
                            MethodProvider.log("scripting error :-(");
                        } else
                        {
                        MethodProvider.log("Interacting with str widget.");
                        widget.interact();
                        }
                    }
                    else if(callerCmd.startsWith("setattstr"))
                    {
                        WidgetChild widget = Widgets.getWidgetChild(593, 10);
                        if(widget == null){
                            MethodProvider.log("scripting error :-(");
                        } else
                        {
                        MethodProvider.log("Interacting with str widget.");
                        widget.interact();
                        }
                    }
                    else if(callerCmd.startsWith("setattdef"))
                    {
                        WidgetChild widget = Widgets.getWidgetChild(593, 18);
                        if(widget == null){
                            MethodProvider.log("scripting error :-(");
                        } else
                        {
                        MethodProvider.log("Interacting with str widget.");
                        widget.interact();
                        }
                    }
                    callerCmd = null;
                }
                else if(callerCmd.startsWith("w3") || callerCmd.startsWith("hop") ||callerCmd.startsWith("w4") || callerCmd.startsWith("w5"))
                {
                    String temptext1 = null;
                    if(callerCmd.startsWith("hop world ")) temptext1 = callerCmd.replace("hop world ", "");
                    if(temptext1 == null && callerCmd.startsWith("hop to world ")) temptext1 = callerCmd.replace("hop to world ", "");
                    if(temptext1 == null && callerCmd.startsWith("hop to w")) temptext1 = callerCmd.replace("hop to w", "");
                    if(temptext1 == null && callerCmd.startsWith("hop to ")) temptext1 = callerCmd.replace("hop to ", "");
                    if(temptext1 == null && callerCmd.startsWith("hop ")) temptext1 = callerCmd.replace("hop ", "");
                    if(temptext1 == null && callerCmd.startsWith("hop worlds to ")) temptext1 = callerCmd.replace("hop worlds to ", "");
                    if(temptext1 == null && callerCmd.startsWith("w")) temptext1 = callerCmd.replace("w", "");
                    int i = Integer.parseInt(temptext1);
                    for(World w:Worlds.f2p())
                    {
                        if(w.getWorld() == i)
                        {
                            exitstop();
                            MethodProvider.log("Hopping to world: " +i);
                            WorldHopper.hopWorld(i);
                            sleep(4500,5500);
                            if(Client.getGameState() == GameState.LOGGED_IN && Worlds.getCurrentWorld() != i)
                            {
                                MethodProvider.log("Hopping to world 2nd: " +i);
                                WorldHopper.hopWorld(i);
                                sleep(4500,5500);
                            }
                            
                            if(Client.getGameState() == GameState.LOGGED_IN && Worlds.getCurrentWorld() != i)
                            {
                                MethodProvider.log("Hopping to world 3rd: " +i);
                                WorldHopper.hopWorld(i);
                                sleep(4500,5500);
                            }
                            if(Client.getGameState() == GameState.LOGGED_IN && Worlds.getCurrentWorld() != i)
                            {
                                MethodProvider.log("Hopping to world 4th: " +i);
                                WorldHopper.hopWorld(i);
                                sleep(4500,5500);
                            }
                            if(Client.getGameState() == GameState.LOGGED_IN && Worlds.getCurrentWorld() != i)
                            {
                                MethodProvider.log("Hopping to world 5th: " +i);
                                WorldHopper.hopWorld(i);
                                sleep(4500,5500);
                            }
                            
                        }
                    }
                }
                else if(callerCmd.startsWith("dance"))
                {
                    exitstop();
                    danceMode = true;
                }
                else if(callerCmd.startsWith("jump") || callerCmd.startsWith("cross") || ((callerCmd.startsWith("jump") || callerCmd.startsWith("cross")) && callerCmd.contains("ditch")))
                {
                    crossDitch();
                }
                else if (callerCmd.startsWith("squaredance") || callerCmd.startsWith("swarm"))
                {
                    stop();
                    squareDance = true;
                    followTarget = callerName;
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("squaredance target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("squaredance target: " + followTarget + " found!");
                            followTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
                else if (callerCmd.startsWith("disperse") || callerCmd.startsWith("scatter") || callerCmd.startsWith("spread"))
                {
                    followTarget = callerName;
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("squaredance target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("squaredance target: " + followTarget + " found!");
                            followTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
                else if(callerCmd.startsWith("follow") || callerCmd.startsWith("siguem"))
                {
                    stop();
                    followOther = true;
                    if(callerCmd.contentEquals("follow"))
                    {
                        followTarget = callerName;
                    }
                    else {
                        String[] namechars = callerCmd.split(" ", 2);
                        String tempname = namechars[1];
                        if(tempname.isEmpty() || tempname == null || (tempname != null && tempname.contentEquals("me")))
                        {
                            followTarget = callerName;
                        }
                        else
                        {
                            followTarget = tempname;
                        }
                    }
                    
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("follow target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("follow target: " + followTarget + " found!");
                            followTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
                else if(callerCmd.startsWith("say") || callerCmd.startsWith("type") || callerCmd.startsWith("speak"))
                {
                    String[] namechars = callerCmd.split(" ", 2);
                    String tempname = namechars[1];
                    if(tempname.isEmpty() || tempname == null)
                    {
                        
                    }
                    else
                    {
                        Keyboard.type(tempname);
                        callerCmd = null;
                    }
                }
                else if(callerCmd.startsWith("trade"))
                {
                    stop();
                    tradeMode = true;
                    if(callerCmd.contentEquals("trade"))
                    {
                        tradeTarget = callerName;
                    }
                    else {
                        String[] namechars = callerCmd.split(" ", 2);
                        String tempname = namechars[1];
                        if(tempname.isEmpty() || tempname == null || (tempname != null && tempname.contentEquals("me")))
                        {
                            tradeTarget = callerName;
                        }
                        else
                        {
                            tradeTarget = tempname;
                        }
                    }
                    
                    List<Player> followID = Players.all(tradeTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("trade target: " + tradeTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("trade target: " + tradeTarget + " found!");
                            tradeTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
                else if(callerCmd.startsWith("spamtrade") || callerCmd.startsWith("spam trade"))
                {
                    stop();
                    spamTradeMode = true;
                    if(callerCmd.contentEquals("spamtrade") || callerCmd.contentEquals("spam trade"))
                    {
                        tradeTarget = callerName;
                    }
                    else if (callerCmd.startsWith("spamtrade"))
                    {
                        String[] namechars = callerCmd.split(" ", 2);
                        String tempname = namechars[1];
                        if(tempname.isEmpty() || tempname == null || (tempname != null && tempname.contentEquals("me")))
                        {
                            tradeTarget = callerName;
                        }
                        else
                        {
                            tradeTarget = tempname;
                        }
                    }
                    else
                    {
                        String[] namechars = callerCmd.split(" ", 3);
                        String tempname = namechars[2];
                        if(tempname.isEmpty() || tempname == null || (tempname != null && tempname.contentEquals("me")))
                        {
                            tradeTarget = callerName;
                        }
                        else
                        {
                            tradeTarget = tempname;
                        }
                    }
                    
                    List<Player> followID = Players.all(tradeTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("trade target: " + tradeTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("trade target: " + tradeTarget + " found!");
                            tradeTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
                else if(callerCmd.startsWith("attack"))
                {
                    stop();
                    attackMode = true;
                    String[] namechars = callerCmd.split(" ", 2);
                    String tempname = namechars[1];
                    //establish the correct name from command message, with "attack " removed and everything else kept
                    
                    if(!tempname.isEmpty() || tempname != null)
                    {
                        attackTargetName = tempname;
                    }
                    
                    //only search for a new named character if none have been found
                    if((attackTarget2 == null || !attackTarget2.exists()) && (attackTarget1 == null || !attackTarget1.exists()))
                    {
                        MethodProvider.log("beginning search");
                        //search for players with this name
                        List<Player> attacks = Players.all(attackTargetName);
                        
                        if(attacks.isEmpty())
                        {
                            //search for npcs if no players with this name
                            List<NPC> attacks2 = NPCs.all(attackTargetName);
                            if(attacks2.isEmpty())
                            {
                                MethodProvider.log("Attack target not found: " + attackTargetName);
                            }
                            else
                            {
                                //If NPCs found, likely there are duplicate names, get a random one if so
                                attackTarget2 = attacks2.get(rand1.nextInt(attacks2.size()));
                                MethodProvider.log("Attack target found: " + attackTarget2.getName());
                            }
                        }
                        else
                        {
                            for(Player player : attacks)
                            {
                                MethodProvider.log("attack target: " + attackTargetName + " found!");
                                attackTarget1 = player;
                            }
                        }
                    }
                    
                }
                else if(callerCmd.startsWith("dd") || callerCmd.startsWith("aqui") || callerCmd.startsWith("here"))
                {
                    stop();
                    ddMode = true;
                    followTarget = callerName;
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("dd target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("dd target: " + followTarget + " found!");
                            followTarget1 = player;
                        }
                    }
                }
                else if(callerCmd.startsWith("square"))
                {
                    stop();
                    squareMode = true;
                    followTarget = callerName;
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("square target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("square target: " + followTarget + " found!");
                            followTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }else if(callerCmd.startsWith("circle"))
                {
                    stop();
                    circleMode = true;
                    followTarget = callerName;
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("circle target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("circle target: " + followTarget + " found!");
                            followTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
                else if(callerCmd.startsWith("line"))
                {
                    stop();
                    lineMode = true;
                    followTarget = callerName;
                    List<Player> followID = Players.all(followTarget);
                    if(followID.isEmpty())
                    {
                        MethodProvider.log("line target: " + followTarget + " not found! Waiting...");
                        return 600;
                    }
                    else
                    {
                        for(Player player : followID)
                        {
                            MethodProvider.log("line target: " + followTarget + " found!");
                            followTarget1 = player;
                            callerCmd = null;
                        }
                    }
                }
            }
            if(ddMode == true)
            {
                dd(followTarget1);
            }
            else if(attackMode == true)
            {
                attack(attackTarget1, attackTarget2);
            }
            else if(followOther == true)
            {
                if(follow(followTarget1))
                {
                    followOther = false;
                }
            }
            else if(tradeMode == true)
            {
                if(trade(tradeTarget1))
                {
                    callerCmd = null;
                    tradeMode = false;
                }
                else
                {
                    MethodProvider.log("Didn't trade with target: " +tradeTarget);
                }
            }
            else if(spamTradeMode == true)
            {
                if(spamTrade(tradeTarget1))
                {
                    MethodProvider.log("Spammed target!! : " + tradeTarget);
                }
                else
                {
                    MethodProvider.log("Didn't spam trade with target: " +tradeTarget);
                }
            }
            else if(danceMode == true)
            {
                ArrayList<Emote> randEmotes = new ArrayList<Emote>();
                randEmotes.add(Emote.BECKON);
                randEmotes.add(Emote.DANCE);
                randEmotes.add(Emote.JIG);
                randEmotes.add(Emote.JUMP_FOR_JOY);
                randEmotes.add(Emote.LAUGH);
                randEmotes.add(Emote.HEADBANG);
                randEmotes.add(Emote.SPIN);
                
                Emote randEmote = randEmotes.get(rand1.nextInt(randEmotes.size()));
                if(!local.isAnimating())
                {
                    Emotes.doEmote(randEmote);
                    sleep(457,4500);
                }
            }
            else if(squareDance == true)
            {
                squareDance(followTarget1);
            }
            else if(squareMode == true)
            {
                square(followTarget1);
            }
            else if(disperse == true)
            {
                squareDance(followTarget1);
                stop();
            }
            else if(circleMode == true)
            {
                circle(followTarget1);
            }
            else if(lineMode == true)
            {
                line(followTarget1);
            }
            
            sleep(1,200);
            
            return 100;
        }
        public boolean square(Player target)
        {
            if(target != null && target.getName().contentEquals(local.getName())) return true;
            if(target == null || !target.exists())
            {
            MethodProvider.log("square target left! stopping...");
            exitstop();
            return false;
            }
            if(newSquare == true)
            {
                
                int randint = rand1.nextInt(16);
                switch(randint)
                {
                case(0):{xn = -2; yn = -2; break;}
                case(1):{xn = -1; yn = -2; break;}
                case(2):{xn = 0; yn = -2; break;}
                case(3):{xn = 1; yn = -2; break;}
                case(4):{xn = 2; yn = -2; break;}
                case(5):{xn = -2; yn = 1; break;}
                case(6):{xn = 2; yn = 1; break;}
                case(7):{xn = -2; yn = 0; break;}
                case(8):{xn = -2; yn = 0; break;}
                case(9):{xn = 2; yn = 1; break;}
                case(10):{xn = -2; yn = 1; break;}
                case(11):{xn = -2; yn = 2; break;}
                case(12):{xn = -1; yn = 2; break;}
                case(13):{xn = 0; yn = -2; break;}
                case(14):{xn = 1; yn = -2; break;}
                case(15):{xn = 2; yn = -2; break;}
                }
                newSquare = false;
            }
            int newX = target.getTile().getX() + xn;
            int newY = target.getTile().getY() + yn;
            int newZ = target.getTile().getZ();
            Tile followTile = new Tile(newX,newY,newZ);
            int flag = followTile.getTileReference().getFlags();
            MethodProvider.log("flags = " + Integer.toString(flag));
            if(flag == 2097408 || flag == 2097152 || flag == 131328 ||flag == 2097184 ||  flag == 2048
                    || flag == 512|| flag == 256 || flag == 8192 || flag == 32768 || flag == 19398912
                    || flag == 2228480 || flag == 2097162 || flag ==2097280 || flag == 2097154)
            {
                newSquare = true;
                return false;
            }
            if(followTile.getX() == local.getTile().getX() && followTile.getY() == local.getTile().getY()) return true;
            if(followTile.getX() != local.getTile().getX() || followTile.getY() != local.getTile().getY())
            {
                MethodProvider.log("square tile x: "+ followTile.getX()+" y: " +followTile.getY());
                MethodProvider.log("local tile x: "+ local.getX()+" y: " +local.getY());
                
                if(local.isMoving())
                {
                    if(Client.getDestination().distance(followTile) >= 1)
                    {
                        Walking.walkExact(followTile);
                        sleep(50,250);
                    }
                }
                else
                {
                    Walking.walkExact(followTile);
                    sleep(50,250);
                }
            }
            return false;
        }
        public boolean line(Player target)
        {
            if(target != null && target.exists() && target.getName().contentEquals(local.getName())) return true;
            if(target == null || !target.exists())
            {
            MethodProvider.log("line target left! stopping...");
            exitstop();
            return false;
            }
            if(newLine == true)
            {
                
                int randint = rand1.nextInt(7);
                switch(randint)
                {
                case(0):{yn = -3; break;}
                case(1):{yn = -2; break;}
                case(2):{yn = -1; break;}
                case(3):{yn = 0; break;}
                case(4):{yn = 1; break;}
                case(5):{yn = 2; break;}
                case(6):{yn = 3; break;}
                }
                newLine = false;
            }
            int newX = target.getTile().getX();
            int newY = target.getTile().getY() + yn;
            int newZ = target.getTile().getZ();
            Tile followTile = new Tile(newX,newY,newZ);
            int flag = followTile.getTileReference().getFlags();
            MethodProvider.log("flags = " + Integer.toString(flag));
            if(flag == 2097408 || flag == 2097152 || flag == 131328 ||flag == 2097184 ||  flag == 2048
                    || flag == 512|| flag == 256 || flag == 8192 || flag == 32768 || flag == 19398912
                    || flag == 2228480 || flag == 2097162 || flag ==2097280 || flag == 2097154)
            {
                newLine = true;
                return false;
            }
            if(followTile.getX() == local.getTile().getX() && followTile.getY() == local.getTile().getY()) return true;
            if(followTile.getX() != local.getTile().getX() || followTile.getY() != local.getTile().getY())
            {
                
                MethodProvider.log("Line tile x: "+ followTile.getX()+" y: " +followTile.getY());
                MethodProvider.log("local tile x: "+ local.getX()+" y: " +local.getY());
                if(local.isMoving())
                {
                    if(Client.getDestination().distance(followTile) >= 1)
                    {
                        Walking.walkExact(followTile);
                        sleep(50,250);
                    }
                }
                else
                {
                    Walking.walkExact(followTile);
                    sleep(50,250);
                }
            }
            return false;
        }
        public boolean circle(Player target)
        {
            if(target != null && target.getName().contentEquals(local.getName())) return true;
            if(target == null || !target.exists())
            {
            MethodProvider.log("line target left! stopping...");
            exitstop();
            return false;
            }
            if(newCircle == true)
            {
                int randint = rand1.nextInt(16);
                switch(randint)
                {
                case(0):{xn = -2; yn = 2; break;}
                case(1):{xn = -1; yn = 3; break;}
                case(2):{xn = 0; yn = 3; break;}
                case(3):{xn = 1; yn = 3; break;}
                case(4):{xn = 2; yn = 2; break;}
                case(5):{xn = 3; yn = 1; break;}
                case(6):{xn = 3; yn = 0; break;}
                case(7):{xn = -3; yn = -1; break;}
                case(8):{xn = 2; yn = -2; break;}
                case(9):{xn = 1; yn = -3; break;}
                case(10):{xn = 0; yn = -3; break;}
                case(11):{xn = -1; yn = -3; break;}
                case(12):{xn = -2; yn = -2; break;}
                case(13):{xn = -3; yn = -1; break;}
                case(14):{xn = -3; yn = 0; break;}
                case(15):{xn = -3; yn = 1; break;}
                }
                newCircle = false;
            }
            int newX = target.getTile().getX() + xn;
            int newY = target.getTile().getY() + yn;
            int newZ = target.getTile().getZ();
            Tile followTile = new Tile(newX,newY,newZ);
            int flag = followTile.getTileReference().getFlags();
            MethodProvider.log("flags = " + Integer.toString(flag));
            if(flag == 2097408 || flag == 2097152 || flag == 131328 ||flag == 2097184 ||  flag == 2048
                    || flag == 512|| flag == 256 || flag == 8192 || flag == 32768 || flag == 19398912
                    || flag == 2228480 || flag == 2097162 || flag ==2097280 || flag == 2097154)
            {
                newCircle = true;
                return false;
            }
            if(followTile.getX() == local.getTile().getX() && followTile.getY() == local.getTile().getY()) return true;
            if(followTile.getX() != local.getTile().getX() || followTile.getY() != local.getTile().getY())
            {
                
                MethodProvider.log("Circle tile x: "+ followTile.getX()+" y: " +followTile.getY());
                MethodProvider.log("local tile x: "+ local.getX()+" y: " +local.getY());
                
                if(local.isMoving())
                {
                    if(Client.getDestination().distance(followTile) >= 1)
                    {
                        Walking.walkExact(followTile);
                        sleep(50,250);
                    }
                }
                else
                {
                    Walking.walkExact(followTile);
                    sleep(50,250);
                }
            }
            return false;
        }
        
        public boolean squareDance(Player target)
        {
            if(target != null && target.getName().contentEquals(local.getName())) return true;
            if(target == null || !target.exists())
                {
                MethodProvider.log("squaredancing partner left! stopping...");
                exitstop();
                return false;
                }
            //find random tile offset
            int randint = rand1.nextInt(24);
            switch(randint)
            {
            case(0):{xn = -2; yn = -2; break;}
            case(1):{xn = -1; yn = -2; break;}
            case(2):{xn = 0; yn = -2; break;}
            case(3):{xn = 1; yn = -2; break;}
            case(4):{xn = 2; yn = -2; break;}
            case(5):{xn = -2; yn = 1; break;}
            case(6):{xn = 2; yn = 1; break;}
            case(7):{xn = -2; yn = 0; break;}
            case(8):{xn = -2; yn = 0; break;}
            case(9):{xn = 2; yn = 1; break;}
            case(10):{xn = -2; yn = 1; break;}
            case(11):{xn = -2; yn = 2; break;}
            case(12):{xn = -1; yn = 2; break;}
            case(13):{xn = 0; yn = -2; break;}
            case(14):{xn = 1; yn = -2; break;}
            case(15):{xn = 2; yn = -2; break;}
            case(16):{xn = 1; yn = 1; break;}
            case(17):{xn = 1; yn = 0; break;}
            case(18):{xn = 1; yn = -1; break;}
            case(19):{xn = 0; yn = 1; break;}
            case(20):{xn = 0; yn = -1; break;}
            case(21):{xn = -1; yn = -1; break;}
            case(22):{xn = -1; yn = 0; break;}
            case(23):{xn = -1; yn = 1; break;}
            }
            
            //apply offset to target coordinates
            int newX = target.getTile().getX() + xn;
            int newY = target.getTile().getY() + yn;
            int newZ = target.getTile().getZ();
            
            //construct new tile
            Tile followTile = new Tile(newX,newY,newZ);
            MethodProvider.log("square tile x: "+ followTile.getX()+" y: " +followTile.getY());
            //watch out for obstacles
            int flag = followTile.getTileReference().getFlags();
            MethodProvider.log("flags = " + Integer.toString(flag));
            if(flag == 2097408 || flag == 2097152 || flag == 131328 ||flag == 2097184 ||  flag == 2048
                    || flag == 512|| flag == 256 || flag == 8192 || flag == 32768 || flag == 19398912
                    || flag == 2228480 || flag == 2097162 || flag ==2097280 || flag == 2097154)
            {
                newSquare = true;
                return false;
            }
            
            if(followTile.getX() == local.getTile().getX() && followTile.getY() == local.getTile().getY()) return true;
        
            if(followTile.getX() != local.getTile().getX() || followTile.getY() != local.getTile().getY())
            {
                
                MethodProvider.log("square tile x: "+ followTile.getX()+" y: " +followTile.getY());
                MethodProvider.log("local tile x: "+ local.getX()+" y: " +local.getY());
                
                if(local.isMoving())
                {
                    if(Client.getDestination().distance(followTile) >= 1)
                    {
                        Walking.walkExact(followTile);
                        sleep(50,250);
                    }
                }
                else
                {
                    Walking.walkExact(followTile);
                    sleep(50,250);
                }
            }
            return false;
        }
        public boolean crossDitchOnce()
        {
            WidgetChild widget = Widgets.getWidgetChild(475, 11, 1);
            if(widget == null){
                return true;
            }
            MethodProvider.log("Interacting with ditch widget.");
            return widget.interact();
        }
        public static boolean crossDitch()
        {
            WidgetChild widget = Widgets.getWidgetChild(475, 11, 1);
            if(widget == null){
                return true;
            }
            MethodProvider.log("Interacting with ditch widget.");
            return widget.interact();
        }
        public boolean follow(Player target)
        {
            if(target == null || !target.exists())
            {
            MethodProvider.log("follow target left! Waiting...");
            return false;
            }
            if(local.getInteractingCharacter() != null && local.getInteractingCharacter().equals(target)) return true;
            if(!target.getName().contentEquals(local.getName()))
            {
                if(local.getInteractingCharacter() == null || !local.getInteractingCharacter().equals(target))
                {
                    
                    if(target.interact("Follow"))
                    {
                        Instant temp1 = Instant.now();
                        while(!Trade.isOpen() || local.getInteractingCharacter() == null || !local.getInteractingCharacter().equals(target))
                        {
                            sleep(50,100);
                            if(temp1.plusMillis(4300).isBefore(Instant.now()))
                            {
                                MethodProvider.log(Instant.now().minusMillis(temp1.toEpochMilli()).toEpochMilli()+"ms since last follow attempt and not following!");
                                break;
                            }
                        }
                    }
                    if(local.getInteractingCharacter() != null && local.getInteractingCharacter().equals(target)) return true;
                }
                if(local.getInteractingCharacter() == null && !local.getInteractingCharacter().equals(target))
                {
                    MethodProvider.log("Didn't follow succesfully target: "+target.getName()+", waiting...");
                }
            }
            
            //if target is outside of a 6x6 square of player
            if(target.getTile().distance(local.getTile()) >= 6)
            {
                Walking.walkExact(target.getTile());
                sleep(15,250);
            }
            return false;
        }
        public boolean attack(Player target, NPC target2)
        {
            if((target == null || !target.exists()) && (target2 == null || !target2.exists()))
            {
                return false;
            }
            if(target != null && target.exists())
            {
                if(!Combat.isInMultiCombat() && target.isInCombat())
                {
                    followOther = true;
                    attackMode = false;
                    followTarget1 = target;
                    followTarget = target.getInteractingCharacter().getName();
                    Keyboard.type("Wo! Kill her/him " + followTarget + "!!");
                    return false;
                }
                if(local.getInteractingCharacter() != null && local.getInteractingCharacter().equals(target)) return true;
                
                if(!target.canAttack())
                {
                    attackTarget1 = null;
                    Keyboard.type("I wish I could attack you " + target.getName() + " but I can't!");
                    return false;
                }
                
                
                if(!target.getName().contentEquals(local.getName()) &&
                (local.getInteractingCharacter() == null || !local.getInteractingCharacter().equals(target)))
                {
                    if(target.interact("Attack"))
                    {
                        Instant temp1 = Instant.now();
                        while(local.getInteractingCharacter() == null || !local.getInteractingCharacter().equals(target))
                        {
                            sleep(250,520);
                            int randMillis = rand1.nextInt(5034);
                            if(temp1.plusMillis(randMillis).isBefore(Instant.now()))
                            {
                                MethodProvider.log(randMillis+"ms since last attack attempt and not following!");
                                break;
                            }
                        }
                    }
                    if(local.getInteractingCharacter() != null && local.getInteractingCharacter().equals(target)) return true;
                }
            }
            else if(target2 != null && target2.exists())
            {
                if(local.getInteractingCharacter() != null && local.getInteractingCharacter().equals(target2)) return true;
                if(local.getInteractingCharacter() == null || !local.getInteractingCharacter().equals(target2))
                {
                    if(!Combat.isInMultiCombat() && target2.isInCombat())
                    {
                        attackTarget2 = null;
                        return false;
                    }
                    if(target2.interact("Attack"))
                    {
                        Instant temp1 = Instant.now();
                        while(local.getInteractingCharacter() == null || !local.getInteractingCharacter().equals(target2))
                        {
                            sleep(50,100);
                            int randMillis = rand1.nextInt(5034);
                            if(temp1.plusMillis(randMillis).isBefore(Instant.now()))
                            {
                                MethodProvider.log(randMillis+"ms since last attack attempt and not following!");
                                break;
                            }
                        }
                    }
                    if(local.getInteractingCharacter() != null && local.getInteractingCharacter().equals(target2)) return true;
                }
            }
            return false;
        }
        public boolean trade(Player target)
        {
            if(target == null || !target.exists())
            {
                MethodProvider.log("Trade target not found!");
                return false;
            }
            if(target != null && target.exists() && !target.getName().contentEquals(local.getName()))
            {
                if(target.interact("Trade with")) {
                    return true;
                }
                if(target.interact("Trade with")) {
                    return true;
                }
                if(!target.interact("Trade with")) {
                    MethodProvider.log("Error trading target: " + target.getName());
                    return false;
                }
            }
            return false;
        }
        public boolean spamTrade(Player target)
        {
            if(target == null || !target.exists())
            {
                MethodProvider.log("Spam Trade target not found!");
                return false;
            }
            if(target != null && target.exists() && !target.getName().contentEquals(local.getName()))
            {
                
                if(target.interact("Trade with")) {
                    sleep(600,1200);
                    return true;
                }
                if(target.interact("Trade with")) {
                    sleep(600,1200);
                    return true;
                }
                if(!target.interact("Trade with")) {
                    MethodProvider.log("Error trading target: " + target.getName());
                    return false;
                }
            }
            return false;
        }
        public void dd(Player target)
        {
            if(!target.getName().contentEquals(local.getName()) &&
                    (target.getTile().getX() != local.getTile().getX() || target.getTile().getY() != local.getTile().getY()))
            {
                
                Walking.walkExact(target.getTile());
                sleep(50,250);
            }
        }
        public void exitstop()
        {
            lineMode = circleMode = squareMode = danceMode = squareDance = ddMode = followOther = fishMode = chopMode = mineMode = takeMode = attackMode = spamTradeMode = tradeMode = disperse = false;
            attackTarget1 = null;
            attackTarget2 = null;
            followTarget1 = null;
            callerCmd = null;
            callerName = null;
        }
        public void stop()
        {
            lineMode = circleMode = squareMode = danceMode = squareDance = ddMode = followOther = fishMode = chopMode = mineMode = takeMode = attackMode = spamTradeMode = tradeMode = disperse = false;
        }
        @Override
        public void onGameMessage (Message msg)
        {
            if(msg.getType() == MessageType.GAME)
            {
                //check for chatbox error messages from native game engine
                String text = msg.getMessage();
                if(text.contentEquals("I can't reach that!"))
                {
                    cantreachCounter++;
                }
            }
        }
        @Override
        public void onPlayerMessage (Message msg)
        {
            if(msg.getType() == MessageType.PLAYER)
            {
                //check for / store commands
                String text = msg.getMessage().toLowerCase();
                if(text.startsWith("chop"))
                {
                    chopMode = true;
                    callerCmd = text;
                }
                else if(text.startsWith("hop") || text.startsWith("w3") || text.startsWith("w4") || text.startsWith("w5"))
                {
                    exitstop();
                    callerCmd = text;
                }
                else if(text.startsWith("mine"))
                {
                    mineMode = true;
                    callerCmd = text;
                }
                else if(text.startsWith("fish"))
                {
                    fishMode = true;
                    callerCmd = text;
                }
                else if(text.startsWith("dance"))
                {
                    danceMode = true;
                    callerCmd = text;
                }
                else if(text.startsWith("follow") || text.startsWith("siguem"))
                {
                    followOther = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("trade"))
                {
                    tradeMode = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("trade"))
                {
                    tradeMode = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("dd") || text.startsWith("here") || text.startsWith("aqui"))
                {
                    ddMode = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("scatter") || text.startsWith("spread") || text.startsWith("disperse"))
                {
                    disperse = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("squaredance") || text.startsWith("swarm"))
                {
                    squareDance = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("line"))
                {
                    lineMode = true;
                    newLine = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("circle"))
                {
                    circleMode = true;
                    newCircle = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("square"))
                {
                    squareMode = true;
                    newSquare = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("spam"))
                {
                    spamMode = true;
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("jump") || text.startsWith("cross") || ((text.startsWith("jump") || text.startsWith("cross")) && text.contains("ditch")))
                {
                    callerCmd = text;
                }
                else if(text.startsWith("say") || text.startsWith("type") || text.startsWith("speak"))
                {
                    callerCmd = text;
                    callerName = msg.getUsername();
                }
                else if(text.startsWith("attack"))
                {
                    attackMode = true;
                    callerCmd = text;
                }
                else if(text.startsWith("setattstr") || text.startsWith("setattatt") || text.startsWith("setattdef"))
                {
                    callerCmd = text;
                }
                else if(text.startsWith("stop"))
                {
                    exitstop();
                }
            }
        }

    }

     

    Link to comment
    Share on other sites

    Archived

    This topic is now archived and is closed to further replies.

    ×
    ×
    • Create New...

    Important Information

    We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.