SRL Archive - OSR Help

SPS Walking


VastlySuperior

2012-07-16 09:43:35

I have a problem. My script will walk to the first destination in the sequence, but when it needs to walk to another destination it just stands where it is although the debug shows that it executes the other walking procedures.

Any ideas what It Could be?

While on the topic of sps walking, it is a bit unreliable and inaccurate for me, is there any way to get it to perform better or must I rather shift to another method of walking?

CephaXz

2012-07-16 09:47:06

Map is probably outdated. You might want to make a custom one yourself. Or maybe you can include more SPS areas around the place you want to walk, it does help.

riwu

2012-07-16 09:47:15

Make sure ur points are close enough. SPS isn't accurate in some places, to improve the accuracy u could try creating ur own custom sps map (there are some tutorials on that), though it will still not be extremely precise (like walking to the exact tile u want)

VastlySuperior

2012-07-16 09:58:16

From: riwu
Make sure ur points are close enough. SPS isn't accurate in some places, to improve the accuracy u could try creating ur own custom sps map (there are some tutorials on that), though it will still not be extremely precise (like walking to the exact tile u want)


Ok, what can I use to walk to an exact spot I`m aiming for? What method of walking will be best to use, Radial or DTM?

Or what will you recommend for me to use?

riwu

2012-07-16 10:04:49

U can try Home's console walking (http://villavu.com/forum/showthread.php?t=83408&highlight=home), DTM walking is relatively accurate too. Really depends on where u are trying to walk, most of the time u dont really need to be that accurate. (and if its too accurate, u may want to add some random offsets to prevent getting ban)

Google

2012-07-16 11:14:51

The map you picked your coords on are different colors that the minimap. You can try going into the SPS includes and changing the tolerance to see if that makes a difference or you can read up on my tutorial and make a new SPS Minimap Map which are severely accurate. Link below.

http://villavu.com/forum/showthread.php?t=84360

VastlySuperior

2012-07-16 12:19:10

From: GOOGLE
The map you picked your coords on are different colors that the minimap. You can try going into the SPS includes and changing the tolerance to see if that makes a difference or you can read up on my tutorial and make a new SPS Minimap Map which are severely accurate. Link below.

http://villavu.com/forum/showthread.php?t=84360


Thanks Google. I already had it open after the first suggestion and have looked at it and are busy creating another map. Just a question I`m using SPS_PathCreator to make my points and I use runescape surface map to do it from. The area I`m in is the same area where the first part of my walking takes place, why does it work for that one but not the others?

I`m trying to understand what happens that upset this map area.

Google

2012-07-16 12:44:59

Its a color positioning system that takes the coords you provided from the surface map and searches for the color inside the circle or blue box when picking a point. So you said it walks a few points then stops this is because it is not finding the next color because the world map colors are far different than the minimap colors in some areas of the runescape world.

^This is why making a custom SPS map will be very accurate because it is taking direct colors off of the minimap.

Now you can also try going into the SPS includes and changing the tolerance from 600 to 700 - 800 and see if that makes a difference before you make a minimap map if you are having trouble making one. May I ask what area you are trying to walk in?

Also I tend to stay away from the path makers because they are usually not so accurate. I am not home right now and forget the code for manually getting your coords into the debug box while walking but I will upload that later.

VastlySuperior

2012-07-16 13:46:49

I`m in Draynor Area

CephaXz

2012-07-16 13:53:15

I used this to check my position.

procedure getmyposition;
var
P: TPoint;
begin
P := SPS_GetMyPos;
writeln('Point'+ToStr(P));
end;

And of course, you need to do SPS_Setup first.

VastlySuperior

2012-07-16 14:02:19

Can Anyone Test This Code for me to see if the walking works for you. I have created a custom sps map but even with that it do not walk from the mine to the water and from the water to the bank.

It does however walk from the bank to the mine.

Start in Draynor Village Bank

I have put the wait conditions in just to test the script to see where the problems is. It is actually not necessary to use it.

Thanks for testing this for me. Feedback will be appreciated.

program ClMinSofBank;
{$DEFINE SMART}
{$i srl/srl.simba}
{$IFDEF SIMBAMAJOR980}
{$I SRL/SRL/MISC/PAINTSMART.SIMBA}
{$ELSE}
{$I SRL/SRL/MISC/SMARTGRAPHICS.SIMBA}
{$ENDIF}
{$i sps/sps.simba}
{$I SRL/SRL/Skill/magic.simba}
{$i ObjectDTM/ObjDTMInclude.simba}

const // declare constants used
// srlstats_user = 'anonymous'; // your srl stats username
// srlstats_password = 'anonymous'; // your srl stats password
Server = 38; // enter "0" to pick a random server.
Members = false; // is this player a member
NumbOfPlayers = 1; // how many players should be active
StartPlayer = 0; // the player who should be first used
WorldSwitching = false; // switch world after the break
ChooseActivity = 1; // choose option to run
// 0 = mine clay and bank it
// 1 = mine clay and soften it then bank it
// 2 = get soft clay from bank and craft it then bank it
// 3 = get soft clay from bank and craft it and drop it
// 4 = mine clay,soften it,craft it,bank it
// 5 = mine clay,soften it,craft it,drop it
// 6 = fire softpots,urns,bowls and bank it
// 7 = fire softpots,urns,bowls and drop it
// 8 = get clay from bank,soften it bank it
ChoosePottery = 0; // valid pottery options to choose from
// 0 =
LoadsToDo = 30; // set how many repetitions to do of a certain activity
AutoSwitch = true; // if loads are finished doing, attempt to switch to new activity

var // Declare Global Variables
WalkPath: tpointarray;

procedure statsguise(wat:string); // Status Update In Pinbar
begin
status(wat);
disguise(wat);
end;

procedure globalfailsafe(reason:string); // GlobalFailsafe
begin
writeln('we have a bug. kill it !!');
players[currentplayer].loc := reason;
logout;
stats_commit;
terminatescript;
end;

procedure AntiBan; // AntiBan Procedure
begin
if(not(loggedin))then exit;
findnormalrandoms;
begin
case random(5) of
1: examineinv;
2: pickupmouse;
3: boredhuman;
4: randommovement;
5: randomrclick;
end;
end;
end;

procedure Rest; // Rest Procedure
var
s: string;
begin
if(not(loggedin))then
exit;
writeln('Are We Tired? Then Rest If So');
if not (loggedin) then
exit;
if (getmmlevels('run', s) <= 25) then
restuntil(randomrange(75,100))
end;

procedure WalkToMine; // Walk To The Clay Mine
Begin
if(not(loggedin))then
exit;
sps_setup(runescape_surface,['10_8', '10_9', '11_8', '9_8', '9_9']);
writeln('We Are Going To Mine Clay. Walking To The Clay Mine From The Bank.....');
makecompass('n');
setangle(srl_angle_high);
WalkPath := [Point(4208, 3684), Point(4206, 3667), Point(4224, 3657), Point(4252, 3658), Point(4253, 3606), Point(4255, 3555), Point(4271, 3508), Point(4282, 3455), Point(4324, 3431), Point(4369, 3415), Point(4407, 3388)];
sps_walkpath(WalkPath);
FFlag(10);
writeln('We Have Arrived at the Clay Mine');
Rest;
wait(1000+random(400));
End;

procedure WalkToWaterFromMine; // Walk To Water
Begin
if(not(loggedin))then
exit;
findnormalrandoms;
sps_setup(runescape_surface,['10_7', '10_8', '11_7', '11_8']);
writeln('Going To Make SoftClay. Walking To The Water From The Mine.....');
makecompass('n');
setangle(srl_angle_high);
WalkPath := [Point(4400, 3400), Point(4388, 3410), Point(4373, 3414), Point(4356, 3418), Point(4341, 3424), Point(4330, 3428), Point(4316, 3435), Point(4301, 3441), Point(4288, 3454), Point(4279, 3467), Point(4275, 3478), Point(4274, 3491), Point(4270, 3511), Point(4269, 3524), Point(4262, 3536), Point(4257, 3548), Point(4255, 3564), Point(4247, 3572), Point(4233, 3572), Point(4222, 3571), Point(4215, 3567)];
sps_walkpath(WalkPath);
FFlag(10);
writeln('We Have Arrived at the Water');
Rest;
wait(1000+random(400));
End;

procedure WalkToBankFromWater; //Walk To Bank From Water
Begin
if(not(loggedin))then
exit;
findnormalrandoms;
sps_setup(runescape_surface,['10_7', '10_8', '10_9', '9_7', '9_8', '9_9']);
writeln('We Are Going To Bank Our Inventory. Walking To The Bank From The Water.....');
makecompass('n');
setangle(srl_angle_high);
WalkPath := [Point(4213, 3575), Point(4215, 3613), Point(4218, 3649), Point(4208, 3684)];
sps_walkpath(WalkPath);
FFlag(10);
writeln('We Have Arrived at the Bank');
Rest;
wait(1000+random(400));
End;

procedure WalkFromMineToBank; // Walk From The Clay Mine To The Bank
Begin
if(not(loggedin))then
exit;
findnormalrandoms;
sps_setup(runescape_surface,['10_7', '10_8', '10_9', '11_7', '11_8', '9_9']);
writeln('We Are Going To Bank Our Inventory. Walking To The Bank From The Mine.....');
makecompass('n');
setangle(srl_angle_high);
WalkPath := [Point(4404, 3388), Point(4350, 3405), Point(4301, 3428), Point(4278, 3473), Point(4268, 3530), Point(4252, 3575), Point(4252, 3614), Point(4251, 3657), Point(4218, 3659), Point(4209, 3684)];
sps_walkpath(WalkPath);
FFlag(10);
writeln('We Have Arrived at the Bank');
Rest;
wait(1000+random(400));
End;

procedure Activity(Choice:integer); // Choose Activity To Implement
begin
if(not(loggedin))then
exit;
writeln('Choose Which Activity To Do');
case Choice of
0: begin // mine clay and bank it
disguise('mine clay and bank it');
if invfull then // check if invfull, if full, then bank, if empty then get soft clay go to craft shop, then bank crafted item
begin

end;
WalkToMine;
WalkFromMineToBank;
end;
1: begin // mine clay and soften it then bank it
disguise('mine clay and soften it then bank it');
if invfull then // check if invfull, if full, then bank, if empty then get pickaxe and go to mine and then wet clay and then bank
begin

end;
WalkToMine;
WalkToWaterFromMine;
WalkToBankFromWater;
end;
2: begin // get soft clay from bank and craft it then bank it
disguise('get soft clay from bank and craft it then bank it');
if invfull then // check if invfull, if full, then bank, if empty then get soft clay go to craft shop, then bank crafted item
begin

end;

end;
3: begin // get soft clay from bank and craft it and drop it
disguise('get soft clay from bank and craft it and drop it');
if invfull then // check if invfull, if full, then bank, if empty then get soft clay go to craft shop, then bank crafted item
begin

end;
end;
4: begin // mine clay,soften it,craft it,bank it
disguise('mine clay,soften it,craft it,bank it');
if invfull then // check if invfull, if full, then bank, if empty then get soft clay go to craft shop, then bank crafted item
begin

end;
end;
5: begin // mine clay,soften it,craft it,drop it
disguise('mine clay,soften it,craft it,drop it');
if invfull then // check if invfull, if full, then bank, if empty then get soft clay go to craft shop, then bank crafted item
begin

end;
end;
end;
end;

procedure DeclarePlayers; // Setup Players
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
name := '';
pass := '';
pin := '';
worldinfo := [38];
boxrewards := ['xp','xp','lamp'];
lampskill := skill_slayer;
active := true;
end;
end;

procedure SetupClient; // Setup Client For Run
begin
writeln('start bot client');
{$IFDEF SIMBAMAJOR980}
SMART_SERVER := server;
SMART_MEMBERS := TRUE;
SMART_SIGNED := TRUE;
SMART_SUPERDETAIL := FALSE;
{$ELSE}
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
{$ENDIF}

cleardebug;
Setupsrl;
IgnoreBar;
objdtm_setup;
objdtm_debug := true;
DeclarePlayers;
if not (loggedin) then
loginplayer;
wait(4000+random(400));
end;

begin // Main Program Loop
SetupClient;
Repeat
Activity(ChooseActivity);
Until allplayersinactive;
end.

VastlySuperior

2012-07-17 00:53:53

Can Anyone please have a test with this script to see if it walks for you? Please let me know if it works correctly or not.

Thanks in advance

E. Ok, something really weird is going on with my walking. When I take this part of my code:
1:  begin   // mine clay and soften it then bank it
disguise('mine clay and soften it then bank it');
if invfull then // check if invfull, if full, then bank, if empty then get pickaxe and go to mine and then wet clay and then bank
begin

end;
// WalkToMine;
WalkToWaterFromMine;
WalkToBankFromWater;
end;
and execute each part of the walking separately from the locations where they should be, then they walk that small part of the script.

First it walks to the mine, then it just stand there doing nothing. Then I comment the other 2 paths out and just leave the one, 2 the water and run the script again, then it walks to the water, but just stand there not walking again to the bank, then I comment out the walktowaterfrommine and leave the other 2 and run the script again. Then it walks to the bank, but not to the mine.

What the hell is going on here? I just don`t understand this, the same happens with the custom map I created, it only walks the first part of the path, the second and third part is executed but it just stand there and don`t move.

Can anyone shed some light on this for me?

euphemism

2012-07-17 12:57:45

From: GOOGLE
Its a color positioning system that takes the coords you provided from the surface map and searches for the color inside the circle or blue box when picking a point. So you said it walks a few points then stops this is because it is not finding the next color because the world map colors are far different than the minimap colors in some areas of the runescape world.


No, please read this post on how exactly SPS functions. What you have described is known as TPA walking.