RSPS Scripter
2019-02-26 11:08:35
Dear Villavu Members,
I need help with how to move the ingame minimap compass.
I have found some procedures but i realy dont know how to use them
when i was looking for TRSMinimap.SetCompassAngle i did only find this link https://srldocs.github.io/SRL/minimap.html#minimap and there was no Guide how to use this procedure or function on the forums.
my goal is when the script starts it has to move it compas to randomly move's to easy find the Gate ingame.
its realy sad that i even dont know how to make a simple script to move the compass :frusty:
I have found this code
the code did work but after running the script again i always get this Error –>
Compiled succesfully in 2078 ms.
Runtime error: "Index out of range (index:2, low:0, high:0)" at line 255, column 35 in file "C:\Simba SRL\Scripts\Inventory Checker full or not full.simba"
Succesfully executed in 35110 ms.
The following bitmaps were not freed: [0, Minimap mask, Smart[10660] Image, 3, 4]
so if re-open simba and run the script it only works 1 time after that i always get that error above.
any idea how to use the function or procedure and not getting the error above and using the inbuild procedure?
anyways you can find my script in this Attachment. [ATTACH]28624[/ATTACH]
and also here :) Thanks to "Dan the man"
I need help with how to move the ingame minimap compass.
I have found some procedures but i realy dont know how to use them
when i was looking for TRSMinimap.SetCompassAngle i did only find this link https://srldocs.github.io/SRL/minimap.html#minimap and there was no Guide how to use this procedure or function on the forums.
my goal is when the script starts it has to move it compas to randomly move's to easy find the Gate ingame.
its realy sad that i even dont know how to make a simple script to move the compass :frusty:
I have found this code
Minimap.SetCompassAngle([0,90,180,270][Random(4)]+Random(-15,15)); on this forums –> https://villavu.com/forum/showthread.php?t=118101the code did work but after running the script again i always get this Error –>
Compiled succesfully in 2078 ms.
Runtime error: "Index out of range (index:2, low:0, high:0)" at line 255, column 35 in file "C:\Simba SRL\Scripts\Inventory Checker full or not full.simba"
Succesfully executed in 35110 ms.
The following bitmaps were not freed: [0, Minimap mask, Smart[10660] Image, 3, 4]
so if re-open simba and run the script it only works 1 time after that i always get that error above.
any idea how to use the function or procedure and not getting the error above and using the inbuild procedure?
anyways you can find my script in this Attachment. [ATTACH]28624[/ATTACH]
and also here :) Thanks to "Dan the man"
program Inventory_Checker;
{$H-}
{$define SMART}
{$I SRL/OSR.simba}
{$I RSWalker/Walker.simba}
var
Walker : TRSWalker;
Supplies_Path,
Bank_Path : TPointArray;
procedure WalkTo(Path: TPointArray);
begin
Walker.WalkPath(Path);
end;
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;
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;
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;
end else
Result += rect.Expand(-Expand);
end;
end;
end;
Function Fill_inventory_wih_supplies(): boolean;
Begin
WriteLn('Picking');
end;
Function Open_Gate(): boolean;
var
i : Int32;
obj : TMSObject;
rectangles: array of TRectangle;
tpa : TPointArray;
atpa : T2DPointArray;
Pnts : TPointArray;
Pnt : Tpoint;
begin
while True do
begin
// Gate Location, color of Gate, min points, splitDist.
obj := [[[4374, 2618],[4376, 2620]], CTS2(4813184, 4), 200, 8];
rectangles := obj.Find(True, 50);
smart.Image.Clear();
for i:=0 to High(rectangles) do
smart.Image.DrawTPA(rectangles[i].ToTPA.Connect, $00FFFF);
begin
wait(RandomRange(1320, 1460));
mouse.Move(rectangles[0].Bounds);
wait(RandomRange(1320, 1460));
if MainScreen.IsUpText(['Op', 'en']) then
mouse.Click(mouse_Left);
wait(RandomRange(1320, 1460));
smart.Image.Clear();
wait(RandomRange(1320, 1460));
Fill_inventory_wih_supplies();
if not MainScreen.IsUpText(['Cl', 'ose']) then
Begin
WriteLn('The Gate is open');
Fill_inventory_wih_supplies();
end else
Open_Gate();
wait(RandomRange(1320, 1460));
end;
end;
smart.Image.Clear();
end;
Function Walk_to_supplies(): Boolean;
Begin
walkTo(Supplies_Path); //Walks to the Supplies
Open_Gate();
Result := True;
end;
Function Deposite_Supplies(): boolean;
Begin
//test
end;
Function Walk_to_Bank(): Boolean;
Begin
walkTo(Bank_Path); //Walks to the Bank
Deposite_Supplies();
Result := True;
end;
function Check_Inventory(): Boolean;
begin
Result := Gametabs.Open(tabInventory);
while (not Inventory.IsFull) do
begin
if Walk_to_supplies() then
Fill_inventory_wih_supplies();
end else
Walk_to_Bank();
end;
function setUp(): boolean
begin
SRL.Setup([]); //Setup SRL to allow us to acces it's functions.
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 := [[4538, 2690], [4540, 2658], [4521, 2630], [4500, 2620], [4460, 2611], [4427, 2610], [4402, 2619], [4375, 2623]];
//The path that we plan to walk (Bank_path = Varrock West Bank)
Bank_path := [[4373, 2624], [4430, 2625], [4471, 2638], [4509, 2643], [4537, 2688]];
AddOnTerminate(@Walker.Free); // automatic free once script shuts down
Walker.skipClose := 40; //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([150][Random(4)]);
end;
Result := True;
end;
begin //Main
if setUp then //Calls the setup of the script
writeln('We are set up and ready to go!');
if Check_Inventory then
writeln('Inventory is open');
if Walk_to_Bank then
writeln('Inventory is full going to bank');
if Walk_to_supplies then
writeln('Inventory is not full going to supplies');
if Fill_inventory_wih_supplies then
writeln('Picking supplies');
Check_Inventory();
end.