From: Solar
In reply to your question earlier, I'm at about 65 magic now. My main aim is to get 68, but I'll probably continue past this.
Do you use a script to buy the runes or just buy from players?
Yes i use a script to buy body runes, first i did the Fix ShatteredHand put in bugs section, second i made it like hop to worlds R, R is equal to 320 or any world just above the f2p ones, when it reached a world like 348 a world which doesn't exist it would rehop the same world several times, i got past this by making it recognize it entered a wrong value number (as a boolean before hoping) then inc it by 2 instead of one repeats till it reaches a valid world then switches, i.e instead of trying to log in to 348 it would log in to 350, once it reaches 378 or greater than 378 it resets back to like 320 or w/e world i decide and repeats the process.
It works quiet well, but the body runes shop are pretty much depleted at most times (you want to buy it beyond 2k), my buy is pretty slow as i choose slow mouse speed/clicks, anyway got so far 22k body runes.. Only like 170k to go lol…
STill its much better to buy from Shop than players, mainly for me i simply cant afford to buy from players, they charge 24 EA, from shop i average 9-11 ea, less than half the price. If you got the money then go ahead and buy from players.
The script i use is quiet simple too, i think you can take meanderingmonk's base code and evolve it to buy runes from a shop, you dont even need any fancy commands just this:
progress,CaveEntrances,r: integer;
MinRunes = 2000;
Startworld = 346;
ResetWorld = 340;
function Getrunes(): Integer;
var
s: string;
i,BoltCount: integer;
begin
wait(randomrange(200,400));
s := GetTextAtExWrap(314, 60, 344, 82, 0, 5, 1, 65535, 0, statchars07);
BoltCount := StrToIntDef(GetNumbers(s), -1);
writeln(boltcount);
if (Boltcount >= MinRunes) then
begin
//findnormalrandoms;
mouse(randomrange(323,327),randomrange(75,80),0,0,0);
wait(randomrange(200,300));
mouse(randomrange(305,307),randomrange(150,154),0,0,1);
end
else
begin
if (Boltcount <= MinRunes) then
begin
////findnormalrandoms;
writeln('hopin worlds');
mouse(randomrange(486,487),randomrange(40,41),0,0,mouse_right);
WaitOption('lose',1000);
waithumanclick;
repeat
if ShopScreenS then
mouse(randomrange(486,487),randomrange(40,41),0,0,mouse_left);
wait(500);
logout;
wait(500);
logout;
////findnormalrandoms;
if (not(loggedin)) then exit;
until (not(loggedin));
end;
end;
end;
This is the script:
procedure ResetR;
begin
if (r >= 378) then
begin
writeln('reseting R value');
r := ResetWorld;
end;
end;
procedure progressreport;
begin
ClearDebug;
WriteLn('- Runtime: ' + TimeRunning);
Writeln('- Worlds Hopped: ' + IntToStr(CaveEntrances));
end;
procedure WaitHumanClick;
begin
case random(600) of
1..570: Wait(RandomRange(70, 80));
571..590: Wait(RandomRange(90, 100));
591..600: Wait(RandomRange(110, 120));
end;
end;
function ShopScreenS: Boolean;
begin
Result := (FindTextTPA(2070783, 10, 22, 30, 476, 52, 'Store', 'UpChars07', Nothing)
or (GetColor(482, 36) = 65536));
end;
function FindObjectClose(Color,Tol,CTS:integer; hMoD,sMoD: extended; Uptext: Array of String; WaitUptextWait,WaitUptextRandom: Integer; x,y,xs,ys:integer): boolean;
var
III,i,tmpcts: integer;
TPA:tpointarray;
TPAA: T2DPointArray;
begin
tmpcts := GetColorToleranceSpeed;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(hMoD, SMoD);
FindColorsTolerance(TPA, color, x,y,xs,ys, Tol)
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if length(tpa) < 0 then exit;
SplitTPAWrap(TPA,10,TPAA);
SortATPAFromSize(TPAA,10,true);
for I := 0 to High(TPAA) do
begin
MiddleTPAEx(TPAA[i], X, Y);
MMouse(x, y, RandomRange(-5, 5), RandomRange(-5, 5));
if WaitUpTextMulti(uptext,WaitUptextWait+random(WaitUptextRandom)) then
Begin
Result := True;
exit;
end;
end;
end;
function FindObjExX(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray;
Tol, Step, xs, ys, xe, ye: Integer): Boolean;
var
MidX, MidY, i, j, k, x, y, width, height, HalfWidth, HalfHeight: Integer;
ColorFound: Boolean;
SearchBoxes: Array of Array of TBox;
p: TPointArray;
begin
Result := False;
//check for all the colors
for i := 0 to (GetArrayLength(Color)-1) do
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 1.04);
if (FindColorSpiralTolerance(cx, cy, Color[i], xs, ys, xe, ye, Tol)) then
begin
ColorToleranceSpeed(0);
SetColorSpeed2Modifiers(0.2, 0.2);
ColorFound := True;
Break;
end;
end;
if not(ColorFound) then
Exit; //None of the colors could be found on screen
//Start coordinates
MidX := Round((xe - xs) / 2);
MidY := Round((ye - ys) / 2);
//width and height in boxes
Width := Ceil(abs(xe - xs) / 2 / Step - 0.5) * 2 + 1;
Height := Ceil(abs(ye - ys) / 2 / Step - 0.5) * 2 + 1;
SetLength(SearchBoxes, Width);
//Getting mid of screen in boxes, not pixels
HalfWidth := Floor(Width / 2);
HalfHeight := Floor(Height / 2)
//Create the search boxes, starting in mid because of backwards compatibility
for x := -1 * HalfWidth to HalfWidth do
begin
SetLength(SearchBoxes[x + HalfWidth], Height);
for y := -1 * HalfHeight to HalfHeight do
SearchBoxes[x + HalfWidth][y + HalfHeight] := IntToBox(
Max(xs, xs + Round(MidX + ((x - 0.5) * Step))),
Max(ys, ys + Round(MidY + ((y - 0.5) * Step))),
Min(xe, xs + Round(MidX + ((x + 0.5) * Step))),
Min(ye, ys + Round(MidY + ((y + 0.5) * Step))));
end;
//Create a TPA, where points are representing the boxes
p := TPAFromBox(IntToBox(0, 0, Width-1, Height-1));
//Sort thid TPA from the middle to get a spiral like effect
SortTPAFrom(p, Point(floor(Width / 2), floor(Height / 2)));
//Loop through the boxes, searching for the object (the k and j loop might be better to switch though)
for k := 0 to High(Color) do
for j := 0 to High(p) do
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 1.04);
if (FindColorTolerance(cx, cy, Color[k], SearchBoxes[p[j].x][p[j].y].x1,
SearchBoxes[p[j].x][p[j].y].y1, SearchBoxes[p[j].x][p[j].y].x2,
SearchBoxes[p[j].x][p[j].y].y2, Tol)) then
begin
MMouse(cx, cy, 3, 3);
If (WaitUptextMulti(Text, 300)) then
begin
ColorToleranceSpeed(0);
SetColorSpeed2Modifiers(0.2, 0.2);
GetMousePos(cx, cy);
Result := True;
Exit;
end;
end;
end;
end;
function onLobbyscreen:boolean;
var
Tpa:tpointarray;
begin
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.30, 1.71);
result := FindColorsTolerance(TPA, 265562, 305, 312, 489, 369, 5)
ColorToleranceSpeed(0);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
function FindSeller:boolean;
var
x,y,cts:integer;
begin
result := FindObjExx(x,y,['talk','talk-to','alk-t','alk-to','alk','to','agic','tore','wner','magic','store','owner'], [7621383],11,50,MSX1, MSY1, MSX2, MSY2);
//result := FindObjectClose(7621383, 11,2,0.03,1.04,['talk','talk-to','alk-t','alk-to','alk','to','ardok','nardok','squire','quire','uire','agic','tore','wner','magic','store','owner'],300,150, MSX1, MSY1, MSX2, MSY2);
end;
procedure Seller;
begin
if (not(ShopScreens)) then
begin
if onLobbyscreen then
mouse(384,328,3,3,Mouse_left);
if (findseller) then
begin
//findnormalrandoms;
clickmouse2(mouse_right);
waithumanclick;
chooseoption('rade');
end;
end;
end;
function onshopscreen:boolean;
var
tpa:tpointarray;
begin
result := FindColorsTolerance(tpa,65535,254, 60, 292, 82,0);
end;
function Getrunes(): Integer;
var
s: string;
OAtto, i,BoltCount: integer;
begin
wait(randomrange(200,400));
s := GetTextAtExWrap(314, 60, 344, 82, 0, 5, 1, 65535, 0, statchars07);
BoltCount := StrToIntDef(GetNumbers(s), -1);
writeln(boltcount);
if (Boltcount >= MinRunes) then
begin
//findnormalrandoms;
mouse(randomrange(323,327),randomrange(75,80),0,0,0);
wait(randomrange(200,300));
mouse(randomrange(305,307),randomrange(150,154),0,0,1);
end
else
begin
if (Boltcount <= MinRunes) then
begin
////findnormalrandoms;
writeln('hopin worlds');
mouse(randomrange(486,487),randomrange(40,41),0,0,mouse_right);
WaitOption('lose',1000);
waithumanclick;
repeat
if ShopScreenS then
mouse(randomrange(486,487),randomrange(40,41),0,0,mouse_left);
wait(500);
logout;
wait(500);
logout;
////findnormalrandoms;
if (not(loggedin)) then exit;
until (not(loggedin));
end;
end;
end;
procedure mainloop;
begin
////findnormalrandoms;
if (not(shopscreens)) then
Seller;
if (onshopscreen) then
Getrunes;
end;
begin
playersetup;
setupsrl;
R := StartWorld;
ActivateClient;
SRL_CombatRandoms := False;
repeat
if (loggedin) then
begin
mainloop;
////findnormalrandoms;
end
else
begin
if (not(loggedin)) then
begin
wait(400);
ChangeWorld(R);
inc(r);
if (Wrongworld = true) then
begin
incex(r,2);
ResetR;
ChangeWorld(r);
if onLobbyscreen then
mouse(384,328,3,3,Mouse_left);
inc(r);
end;
if onLobbyscreen then
mouse(384,328,3,3,Mouse_left);
caveEntrances := (caveEntrances + 1);
setangle(0);
progressreport;
end;
end;
until (false);
end.
Won't compile for you tho. Need to edit the world switch file thingy. Pretty much not a universal script idc about it, it just gets the job done. Mainly use it to buy bone bolts :_)
I commented out findnormalrandoms because it keeps detecting the frog event at the shop for some reason, i use this build for buying from any shop. It works quiet well :-). You just need to add wait time after it does the buy click and before, so the script can see your runes as the numbers else if its blocked it will register it as -1 and then hop.
Edit: ofc you make a declare players procedure