Dear Villavu members,


my test account got banned i did suicide bot on the account for 8+- hours and next day the ban hammer.

well i think the main reason that my account got banned that here was no breaks.

So what does this script do?

It will collect you Wheat and will bank it near The Grand Echange, if you are planning to use it its not worth the time unless you use 15+ accounts

anyways you can find the script in this attechment Wheat_Farm_V1.simba

and also here

Simba Code:
program Wheat_Farm_V1;
{$H-}
{$define SMART}
{$I SRL/OSR.simba}
{$I RSWalker/Walker.simba}


var

  Walker        : TRSWalker;     // Used for RSWalker (to walk paths)
  Outside_Gate_path,
  Supplies_Path,
  Bank_Path     : TPointArray;   // Paths from field to bank, and bank to field
  Antiban       : TAntiban;      // Used for Antiban procedures



const

  LOGIN_NAME = '';    //Username/Email
  LOGIN_PASS = '';                     //Password
  RS_WORLD   = -1;                             //Desired World (-1 = Random)
  IS_MEMBER  = false;                          //True if your player is a Member

procedure declarePlayers();

begin

  with Players.New()^ do

begin

    LoginName  := LOGIN_NAME;
    Password   := LOGIN_PASS;
    IsActive   := True;
    IsMember   := IS_MEMBER;
    World      := RS_WORLD;

end;

  Players.SetCurrent(0);

end;

procedure setupAntiban();
begin
  Antiban.Init(SKILL_TOTAL, 4);

  Antiban.AddTask([@Antiban.LoseFocus,     ONE_MINUTE*5]);
  Antiban.AddTask([@Antiban.HoverPlayers,  ONE_MINUTE*8]);
  Antiban.AddTask([@Antiban.CheckStats,    ONE_MINUTE*10]);
  Antiban.AddTask([@Antiban.OpenRandomTab, ONE_MINUTE*10]);
  Antiban.AddTask([@Antiban.VeryShortBreak,ONE_MINUTE*25]);
  Antiban.AddTask([@Antiban.DoMiscStuff,   ONE_MINUTE*25]);
  Antiban.AddTask([@Antiban.RandomCompass, ONE_MINUTE*45]);

  Antiban.AddBreak([35 * ONE_MINUTE, 05 * ONE_MINUTE, 0.05]);
  Antiban.AddBreak([02 * ONE_HOUR,   15 * ONE_MINUTE, 0.20]);
  Antiban.AddBreak([05 * ONE_HOUR,   45 * ONE_MINUTE, 0.85]);
  Antiban.AddBreak([16 * ONE_HOUR,   08 * ONE_HOUR,   0.99]);
end;

Procedure myAntiban;
begin
  if not SRL.isLoggedIn() then
    Exit;

  SRL.DismissRandom();  //Dismiss random events if any are found
  Antiban.DoAntiban();  //Do the antiban
end;

procedure WalkTo(Path: TPointArray);

begin

  myAntiban();

  Walker.WalkPath(Path);

end;

type

    TMSObject = record
    WorldLoc  : TPointArray; //locations on the world map
    Color     : TCTS2Color;  //must have color
    MinCount  : Int32;       //size of TPA
    SplitDist : Int32;

end;

function TMSObject.Find(DoSort: Boolean=False; Expand:Int32=0): TRectArray;

var

    loc, me        : TPoint;
    rect           : TRectangle;
    locations, TPA : TPointArray;
    ATPA           : T2DPointArray;
    rectangles     : array of TRectangle;
begin

    me := Walker.GetMyPos();

    locations := Copy(Self.WorldLoc);

    if DoSort then Locations.Sorted(me);

    for loc in Locations do

begin

    rect := Walker.GetTileMSEx(me, loc, 1).Expand(Expand);
    if MainScreen.GetBounds.Contains(rect.Bounds) then

begin

    if (srl.FindColors(TPA, Color, rect.Bounds) < Self.MinCount) then
    Continue;

    if (Self.SplitDist > 0) then

begin

    TPA    := rect.Filter(TPA);
    ATPA   := TPA.Cluster(Self.SplitDist);
    ATPA.SortByMiddle(rect.Mean);
    Result += ATPA[0].MinAreaRect;
if  Length(Rectangles) = 0 then Exit;

end else

    Result += rect.Expand(-Expand);

end;
end;
end;

procedure waitLoop();

var

    InvCount: Integer;
    T: TTimeMarker;

begin

if not SRL.isLoggedIn() then
    Exit;

    InvCount := Inventory.Count(); //Gets the count in our inventory

    T.Start;                       //Start our timer

repeat

    wait(randomRange(75, 250));    //Wait a random amount of time

until((Inventory.Count() > InvCount) or (T.GetTime > 7000)); //Stop repeating once inv count changes or we time out

end;


function Deposite_Supplies(): boolean;

begin

    myAntiban();

    BankScreen.Open(blVarrockWest);       // Open bank using SRL's built in banker function

if BankScreen.IsOpen(5000) then           // If bank screen is open sometime within the 5 sec wait

begin

    wait(randomRange(150, 500));          // Have a realistic wait time before we actually do anything

    BankScreen.DepositAll();              // Deposit all Wheat

    wait(randomRange(2500, 2777));        // Have a realistic wait time before we actually do anything

    Result := True;                       // We want to return true when the function finishes, so we set Result to True

end;
end;

function Walk_to_Bank(): Boolean;

begin

    smart.Image.Clear();

    walkTo(Bank_Path);                    // Walks to the Bank

    wait(randomRange(1700, 2460));        // Have a realistic wait time before we actually do anything

    Deposite_Supplies();                  // Banks the Wheat

    Result := True;

end;

function Check_Gate(): boolean;

var

    i         :   Int32;
    obj       :   TMSObject;
    rectangles:   array of TRectangle;
    tpa       :   TPointArray;
    atpa      :   T2DPointArray;
    Pnts      :   TPointArray;
    Pnt       :   Tpoint;

begin

     //walkTo(Outside_Gate_path);


         //                                   Gate Location open and closed
         //      Tile 1       Tile 2       Tile 3      Tile 4       Tile 5       Tile 6     color of Gate,    min points,  splitDist.
    obj := [[[4373, 2619],[4373, 2616],[4378, 2613],[4373, 2619],[4373, 2616],[4378, 2613]], CTS2(4945285, 7, 0.07, 0.10), 200,        8];

    rectangles := obj.Find(True, 50);

if  Length(Rectangles) = 0 then
begin

    wait(RandomRange(1320, 1460));

    walkTo(Outside_Gate_path);

    Minimap.SetCompassAngle(RandomRange(150, 0), False);

    Check_Gate();

end;

    for i:=0 to High(rectangles) do

    smart.Image.DrawTPA(rectangles[i].ToTPA.Connect, $00FFFF);

    wait(RandomRange(1320, 1460));

begin

    wait(RandomRange(1320, 1460));

if  Length(Rectangles) = 0 then Exit;

    mouse.Move(rectangles[0].Bounds);

    wait(RandomRange(1320, 1460));

end;

if  MainScreen.IsUpText(['Op', 'en']) then
begin

    mouse.Click(mouse_Left);

    wait(RandomRange(1320, 1460));

    smart.Image.Clear();

    wait(RandomRange(1320, 1460));

    smart.Image.Clear();

    Walk_to_Bank();

end;

if MainScreen.IsUpText(['Clo', 'se']) then
begin

    wait(RandomRange(1320, 1460));

    Walk_to_Bank();

    smart.Image.Clear();

end;
end;

function Open_Gate_2(): boolean;

var

    i         :   Int32;
    obj       :   TMSObject;
    rectangles:   array of TRectangle;
    tpa       :   TPointArray;
    atpa      :   T2DPointArray;
    Pnts      :   TPointArray;
    Pnt       :   Tpoint;

begin    //                                   Gate Location open and closed
         //      Tile 1       Tile 2       Tile 3      Tile 4       Tile 5       Tile 6     color of Gate,    min points,  splitDist.
    obj := [[[4373, 2619],[4373, 2616],[4378, 2613],[4373, 2619],[4373, 2616],[4378, 2613]], CTS2(4945285, 7, 0.07, 0.10), 100,         8];

    wait(RandomRange(1320, 1460));

    rectangles := obj.Find(True, 50);

if  Length(Rectangles) = 0 then

begin

    walkTo(Outside_Gate_path);

    Minimap.SetCompassAngle(RandomRange(150, 0), False);

    Open_Gate_2();

end;

    for i:=0 to High(rectangles) do

    smart.Image.DrawTPA(rectangles[i].ToTPA.Connect, $00FFFF);

begin

    wait(RandomRange(1320, 1460));

if  Length(Rectangles) = 0 then Exit;

    mouse.Move(rectangles[0].Bounds);

    wait(RandomRange(1320, 1460));

end;

if  MainScreen.IsUpText(['Op', 'en']) then
begin

    mouse.Click(mouse_Left);

    wait(RandomRange(1320, 1460));

    smart.Image.Clear();

    wait(RandomRange(1320, 1460));

    smart.Image.Clear();

end;
end;

procedure Fill_inventory_with_supplies();

var

    TPA, Wheat: TPointArray;

    ATPA: T2DPointArray;

begin

if not SRL.isLoggedIn() then                    //If not logged in, then terminate script

    TerminateScript;

if chatBox.findTextOnLines(['reach'], [1..2]) then

    open_Gate_2();

if (SRL.FindColors(TPA, CTS2(6798010, 7, 0.04, 1.52), MainScreen.GetBounds) > 0) then //If we find colours at all then...

begin

    ATPA := TPA.Cluster(2);                     //Group them within a max pixel distance of 2

    //ATPA.FilterSize(100, 500);                //Remove and ATPA of size < 100, or > 500.

    ATPA.SortByIndex(MainScreen.GetMiddle);     //Sort by closest to Middle of the screen

    {$IFDEF SMART}                              //If we are using SMART, then...

    Smart.Image.DrawATPA(ATPA);                 //Draws the ATPA's on the screen.
                                                //smart.Image.DebugATPA(ATPA) works as well
    {$ENDIF}                                    //End SMART IF

for Wheat in ATPA do                            //For every possible Wheat in our ATPA

begin

      Mouse.Move(Wheat[Random(Length(Wheat))]); //Move the mouse to the Wheat

if MainScreen.IsUpText('Wheat') then            //If the uptext is 'Wheat', try to click it

begin

if Mouse.Click(ctRed) then                      //Clicks the mouse and looks to see if red 'x' appeard when cicked

begin

    waitLoop();                                 //Call to our waitLoop because we want to wait while picking.

    smart.Image.Clear();

    //myAntiban();

Repeat

while (not Inventory.IsFull) do                 // Keeps filling the Inventory until its full

    Fill_inventory_with_supplies();

until(true);

    Break;                                      // If found red 'x', then break because we clicked it

    WriteLn('its me Mario');

end;
end;
end;
end;
    {$IFDEF SMART}

    Smart.Image.Clear;                          // Clears the ATPA's from screen

    {$ENDIF}
end;

function Open_Gate(): boolean;

var

    i         :   Int32;
    obj       :   TMSObject;
    rectangles:   array of TRectangle;
    tpa       :   TPointArray;
    atpa      :   T2DPointArray;
    Pnts      :   TPointArray;
    Pnt       :   Tpoint;

begin    //                                   Gate Location open and closed
         //      Tile 1       Tile 2       Tile 3      Tile 4       Tile 5       Tile 6     color of Gate,    min points,  splitDist.
    obj := [[[4373, 2619],[4373, 2616],[4378, 2613],[4373, 2619],[4373, 2616],[4378, 2613]], CTS2(4945285, 7, 0.07, 0.10), 100,         8];

    rectangles := obj.Find(True, 50);

if  Length(Rectangles) = 0 then
begin

    walkTo(Outside_Gate_path); //Make new path to go inside field

    Minimap.SetCompassAngle(RandomRange(150, 0), False);

    Open_Gate();

end;

    wait(RandomRange(1320, 1460));

    for i:=0 to High(rectangles) do

    smart.Image.DrawTPA(rectangles[i].ToTPA.Connect, $00FFFF);

begin

    wait(RandomRange(1320, 1460));

if  Length(Rectangles) = 0 then Exit;

    mouse.Move(rectangles[0].Bounds);

    wait(RandomRange(1320, 1460));

end;

if  MainScreen.IsUpText(['Op', 'en']) then
begin

    mouse.Click(mouse_Left);

    wait(RandomRange(1320, 1460));

    smart.Image.Clear();

    wait(RandomRange(2800, 3120));

    Fill_inventory_with_supplies();

    smart.Image.Clear();

end;

if MainScreen.IsUpText(['Clo', 'Se']) then
begin

    smart.Image.Clear();

    wait(RandomRange(2800, 3120));

    Fill_inventory_with_supplies();

end;
end;


function Walk_to_supplies(): Boolean;

begin

    myAntiban(); //Do Antiban

    walkTo(Supplies_Path);    // Walks to the Supplies

    Open_Gate();              // Opens the Gate

    Result := True;

end;



function Check_Inventory(): Boolean;

begin

   Result := Gametabs.Open(tabInventory);   // Opens the Inventory Tab

   while (not Inventory.IsFull) do          // If the Inventory is not full then....

begin

    Walk_to_supplies();

end else

    wait(RandomRange(1320, 1460));

    walkTo(Outside_Gate_path);

    Check_Gate();

end;


function setUp(): boolean

begin

    {$IFDEF SMART}                    // If we are using SMART, then...

    Smart.EnableDrawing := True;      // let us draw on SMART

    {$ENDIF}                          // end SMART IF


    SRL.Setup([]);                    // Setup SRL to allow us to acces it's functions.

    setupAntiban();                   //Setup our antiban

    declarePlayers();                 // Declare the player we are using

    Walker.Init('World.png');         // Setup RSWalker by initializing the map we want to use.

                                      // The path that we plan to walk (Supplies_path = Grain field)
    Supplies_path := [[4541, 2687], [4537, 2648], [4509, 2625], [4476, 2614], [4437, 2607], [4408, 2612], [4379, 2614]];

                                     // The path that we plan to walk (Bank_path = Varrock West Bank)
    Bank_path     := [[4373, 2624], [4430, 2625], [4471, 2638], [4509, 2643], [4537, 2688]];


    Outside_Gate_path := [[4373, 2626], [4374, 2623]];

    AddOnTerminate(@Walker.Free);     // automatic free once script shuts down

    Walker.skipClose := 30;           // how close to the target point before we try to click the next point.

if (not SRL.isLoggedIn) then          // If not logged in then..

begin

    Players.LoginCurrent();           // Log player in

    MainScreen.setAngle(True);        // Sets the camera angle to the highest point

    wait(RandomRange(2010, 2530));

    //Minimap.SetCompassAngle(RandomRange(150, 0), False);

end;

    Result := True;

end;

begin //Main

if setUp then    //Calls the setup of the script

    writeln('We are set up and ready to go!');

    repeat

    myAntiban();

    Check_Inventory();

    smart.Image.Clear();

    until(false);

end.


Kind Regards

RSPS Scripter