SRL Archive - Reflection

~ EmPick ~


Emaziz

2011-01-20 14:42:03

emPick!
emPick is a pickpocking that is made to easily support all NPCs and banks in the whole world of runescape. While not all are added yet, I will add NPCs and locations on request. This script is depending on the NPC part of reflection to be functional as well as inventory part.

Current version: v1.31 at 02.21.2011
Status: Should be working, not maintained

(04.09.2011) I believe the script is now broken, and so I am hereby allowing anyone to do whatever they want to with this script. That means should you want to post a fixed/improved version of this current script, you are very welcome to do so! :-) :)


Current features:
  • Pickpocks Master Farmers and other NPCs at various locations. Check line 6 + in script to find list
  • Eats any food! (Keep food in bank slot 1)
  • Banks!
  • Anti-random
  • Anti-ban
  • Detailed progress reports
  • Breaks

IF YOU WANT TO ADD YOUR OWN NPCS AND LOCATIONS, FOLLOW THESE STEPS:
Step 1: Make up a name for the location, say 'AMF' for Ardougne Master Farmer.
Step 2: Set Loc := 'AMF'
Step 3: Make the path starting from bank and ending at NPC location.
Step 4: Add the path to LoadPath. Just add

'AMF':
begin
SetLength(Result,<TILEPATHLENGTH>);
Result := [<TILEPATHHERE>];
end;
Step 5: Go to function GetTarget at line 514 and add
'AMF':
Result := eGetNPC('Master Farmer');
do the case statement.
Step 6: Go to function BankOpen at line 638 and add
'AMF': result := OpenBank('nab',true,true);
to the case.

Known bugs:
  • Clicking may sometimes be too slow, so that the NPC moves away. This may result in talking to a vendor or attempting to steal from a market stall, causing market guard to attack. However, combat detection should prevent death. :)

Proggies:
-~EmPick Proggie report v1.30-~-~-
Script runtime: 7 hour(s), 40 minute(s), 56 second(s).
Next break: 51 minute(s), 9 second(s).
Total picks: 3316
Total stuns: 648
Pick/Stun ratio: 5.11728395061728
Total XP Gained: 148354
Total XP/Hour: 19310.7060019401
Total GP Stolen: 0
Total seeds stolen: 5762
Total food eaten: 553 Trout
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
enoyhs:
-~EmPick Proggie report v1.30-~-~-
Script runtime: 4 hour(s), 5 minute(s), 6 second(s).
Next break: 33 second(s).
Total picks: 1757
Total stuns: 535
Pick/Stun ratio: 3.28411214953271
Total XP Gained: 77798
Total XP/Hour: 19044.0741440604
Total GP Stolen: 0
Total seeds stolen: 3095
Total food eaten: 371 Trout
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

**BANNED The Man

2011-01-20 16:06:30

Some of your logic is intriguing :)
I fixed some of your standards, I saw some little things, I am going to check with someone else before I post full :)

{ Name: EmPickpock
{ Author: Emaziz
{ Version: 0.70
{ How-to: Fill in DeclarePlayers with username and password, nothing else is
{ required at the moment as it detects all food and health and stuff
{ automatically. :)
{]]-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-[[}
{.include SRL\SRL\misc\SMART.SCAR}
{.include SRL\SRL.scar}
{.include reflection\reflection.simba}
{}
var
Level, XP: integer;
NPCTarget: TNPC;
FoodName: string;
TargetHitDamage: integer;
GoldStolen, PrevGold, StartGold: integer;
ExpGained: integer;
StartXP: integer;


const
World = 68;
Signed = True;
Members = True; // Duh!

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name :='';
Pass :='';
Nick :='';
Level[SKILL_HITPOINTS] := 10;
Active := True;
Strings[0] := 'Pike';
Integers[0] := 0; // Wanted EXP, 0 is continue 'til stopped.
Integers[1] := 70; // Amount of lifepoints your food heals
Booleans[1] := True; // Wanna take breaks?
Integers[2] := 50; // How many minutes between each break. +- 5 minutes.
Integers[3] := 10; // How many minutes to break for. +- 5 minutes.
Loc := 'DMF'; // Location as to where to pickpock, check valid locations at line 22+
end;
end;

// DO NOT CHANGE THE FOLLOWING CONSTS \\
const
XP_Man = 8;
XP_Farmer = 14.5;
XP_Warrior = 26;
XP_Guard = 46.8;
XP_MasterFarmer = 43;
DMG_Man = 10;
DMG_Farmer = 0;
DMG_Warrior = 0;
DMG_Guard = 30;
DMG_MasterFarmer = 30;

//\\\\\\\\\\\\\\\\\\///////////////////\\

function LoadPath(Path:String;Bank:Boolean): TTileArray;
begin
if (not Bank) then
begin
case Path of
'DMF':
begin
SetLength(Result, 2);
Result := [Tile(3092, 3243), Tile(3080, 3250)];
end;
'VPG':
begin
SetLength(Result, 8);
Result := [
Tile(3167, 3489), Tile(3177, 3489), Tile(3185, 3489),
Tile(3195, 3487), Tile(3196, 3480), Tile(3197, 3471),
Tile(3200, 3459), Tile(3212, 3462)];
end;
end;
end;
if (Bank) then
begin
case Path of
'DMF':
begin
SetLength(Result, 2);
Result := [Tile(3080, 3250), Tile(3092, 3243)];
end;
'VPG':
begin
SetLength(Result, 9);
Result := [
Tile(3212, 3463), Tile(3212, 3457), Tile(3202, 3457),
Tile(3197, 3465), Tile(3195, 3474), Tile(3191, 3482),
Tile(3188, 3487), Tile(3179, 3487), Tile(3172, 3488)];
end;
end;
end;
writeln('Loaded path');
end;

procedure Terminate;
begin
writeln('Terminating script...');
TerminateScript;
end;

procedure Walk(Bank : boolean);
begin
R_MakeCompass('N');
case Bank of
True: // To bank
WalkPath(LoadPath(Players[CurrentPlayer].Loc,True));
False: // To target NPCs
begin
WalkPath(LoadPath(Players[CurrentPlayer].Loc,False));
end;
end;
writeln('Done walking');
end;

function IsFood(Item: TInvItem):boolean;
begin
Result := False;
if Item.Name = Players[0].Strings[0] then
Result := True;
end;

function GetTargetHitDMG: integer;
begin
Result := -1;
case NPCTarget.Name of
'Guard': Result := DMG_Guard;
'Master Farmer': Result := DMG_MasterFarmer;
end;
if Result = -1 then
writeln('Returned -1 as HitDMG, why???');
end;

function GetTargetXP: Extended;
begin
Result := -1;
case NPCTarget.Name of
'Guard': Result := XP_Guard;
'Master Farmer': Result := XP_MasterFarmer;
end;
if Result = -1 then
writeln('Returned -1 as XP...');
end;

function PickFailed: boolean;
begin
Result := True;
if (PrevGold <> GoldStolen) then
begin
Result := False;
PrevGold := GoldStolen;
end;

end;

//Procedure Eat, eats first food available in inventory
procedure Eat;
var
i: integer;
begin
for i := 1 to 28 do
begin
if (IsFood(GetInvItemAt(i))) then
begin
R_ClickItem(i,True,'');
wait(1000);
i := 29;
end;
end;
end;

{*******************************************************************************
function InChatMulti(Text: TStringArray; var OutPut: string): Boolean;
By: IceFire908
Description: Grabs Last Chat Line and performs checks on occurence of text
*******************************************************************************}
function InChatMulti(Text: TStringArray; var OutPut: string): Boolean;
var
s: string;
I: Integer;
begin
S := GetBlackChatMessage;
for I := High(Text) downto 0 do
begin
Result := (Pos(Text[I], s) > 0);
if (Result) then
begin
OutPut := Text[I];
Exit;
end;
end;
end;

//Procedure CheckEat, checks whether LP is high enough to fail a pickpock without dying, eats if isn't.
procedure CheckEat;
begin
if R_GetMMLevels('hp') <= TargetHitDamage then
begin
Eat;
writeln('Eating once...');
end
else
begin
writeln('Did not have to eat.');
end;
end;

//Function GetGold, returns amount of coins there is in inventory.
function GetGold: integer;
var
G: TInvItem;
begin
Result := 0;
if R_ItemNameExists(G,'Coins') then
begin
Result := G.StackSize;
end;
end;

procedure AntiBan;
var
a: integer;
begin
a := random(150);
LevelUp;
case a of
0: HoverSkill('thieving',false);
1: PickUpMouse;
2: RandomMovement;
3: HoverSkill('thieving',false);
4: HoverSkill('random',false);
end;
end;

function eGetNPC(npc:string): TNPC;
var
A: TNPCArray;
begin
A := GetNPCs(npc);
try
Result := A[0];
except
Result := NULL_NPC;
end;
end;

//Function GetTarget, finds and stores the NPC according to Players[].Loc
function GetTarget: TNPC;
begin
case Players[CurrentPlayer].Loc of
'VPG':
Result := eGetNPC('Guard');
'DMF':
Result := eGetNPC('Master Farmer');
end;
TargetHitDamage := GetTargetHitDMG;
end;

//Function IsCloseToTarget, checks whether distance from target is less or equal to 10;
function IsCloseToTarget: boolean;
begin
Result := False;
if DistanceFrom(NPCTarget.Tile) <= 10 then
begin
Result := True;
end;
end;

//Function PickTarget, pickpocks the target NPC if pickpockable.
function PickTarget: boolean;
var TP: TPoint;
S: string;
begin
writeln('Picking...');
PrevGold := GoldStolen;
NPCTarget := GetTarget;
if (NPCTarget = NULL_NPC) then
begin
writeln('Could not find target!');
Walk(False);
Exit;
end;
TP := TileToMs(NPCTarget.Tile, NPCTarget.Height);
MMouse(TP.x,TP.y,0,0);
ClickMouse2(True);
LevelUp;
AntiBan;
if (InChatMulti(['een','unned'],s)) then
begin
wait(500+random(500));
end;
wait(100+random(1000));
end;

//Procedure BankOpen, opens the corrent bank according to Players[].Loc
procedure BankOpen;
begin
case Players[CurrentPlayer].Loc of
'VPG': OpenBankNPC;
'DMF': OpenBank('db',true,true);
end;
end;

//Procedure DepositStuff, deposits everything but coins
procedure DepositStuff;
begin
if (R_BankScreen) then
DepositAll
else
writeln('Tried to deposit stuff whilst bank was closed!');
end;

//Function WithdrawFood, withdraws 'All' of first slot in bank, which should be food
procedure WithdrawFood;
begin
if (R_BankScreen) then
Withdraw(0,0,14)
else
writeln('Tried to withdraw food whilst bank was closed!');
end;

procedure PrintStats;
begin
writeln('-~-~-~-~-~-~-~-~-~-~-~-~-~-~-');
writeln('Gold stolen: ' + IntToStr(GoldStolen));
writeln('-~-~-~-~-~-~-~-~-~-~-~-~-~-~-');
end;

//Function HasFood, checks whether there is anything eatable in inventory.
function HasFood: boolean;
var i: integer;
begin
result := False
for i := 2 to 28 do
begin
if (IsFood(GetInvItemAt(i))) then
begin
result := True;
end;
end;
end;

procedure MainLoop;
begin
while (true) do
begin
BankOpen;// Opens bank
DepositStuff; // Deposits anything but coins.
WithdrawFood; // Withdraws item from slot 1
CloseBank; // Closes bank
Walk(False); // Walks to pickpocking place
while (HasFood) do
begin
CheckEat; // Checks if LP is too low to risk a fail, eats if it is
PickTarget; // Pickpockets the target
GoldStolen := GetGold - StartGold; // Updates gold stats
end;
writeln('Returning to bank');
Walk(True); // Walks to bank
PrintStats; // Prints stats
if (StartXP + ExpGained > Players[0].Integers[0]) then
begin
Players[0].Active := False;

break;
end;
end;
if AllPlayersInactive then Terminate;
end;


begin
Smart_Server := World;
Smart_Members := Members;
Smart_Signed := Signed;
DeclarePlayers;
SetupSRL;
SetupReflectionEx(False);
LogInPlayer;
SetAngle(True);
StartGold := GetGold;
GoldStolen := GetGold - StartGold;
PrevGold := GoldStolen;
while ( true ) do
MainLoop;
end.

-Boom

smurg

2011-01-20 19:50:08

From: Dynamite
Some of your logic is intriguing :)
I fixed some of your standards, I saw some little things, I am going to check with someone else before I post full :)

-Boom


I think you should take it to PM's and edit out the script.

He said he wants to learn and 'fixing' his script and posting it back in the thread isn't the best way to do it.

I don't know how the community is on this type of thing, but if it was my script, a personal message would be appreciated.

If you give suggestions, then he can fix the certain item and learn, instead of having everything already done already.

Emaziz

2011-01-21 01:38:49

From: smurg
I think you should take it to PM's and edit out the script.

He said he wants to learn and 'fixing' his script and posting it back in the thread isn't the best way to do it.

I don't know how the community is on this type of thing, but if it was my script, a personal message would be appreciated.

If you give suggestions, then he can fix the certain item and learn, instead of having everything already done already.


Thanks Smurg, you're absolutely correct :)

marpis

2011-01-25 15:04:29

Trying this now. I see you have absolutely no randomness in your waits, I don't know how the script works but I added some


//Function PickTarget, pickpocks the target NPC if pickpockable.
function PickTarget: boolean;
var TP: TPoint;
begin
RunEnergy(40+random(30));
if (NeedToEat) then Exit;
NPCTarget := GetTarget;
DetectPick;
if (NPCTarget = NULL_NPC) then
begin
debug('Could not find target!');
Walk(False);
Exit;
end;
DetectPick;
if not (TileOnMS(NPCTarget.Tile,NPCTarget.Height)) then
WalkToTile(NPCTarget.Tile,1,4);
TP := TileToMs(NPCTarget.Tile, NPCTarget.Height);
MMouse(TP.x,TP.y+10,0,10);
wait(50 + Random(20));
DetectPick;
if R_IsUpText('ickpocket') then
begin
ClickMouse2(True);
Wait(200 + Random(50));
DetectPick;
wait(100 + Random(50));
DetectPick;
wait(100 + Random(50));
end
else
begin
ClickMouse2(False);
if R_ChooseOption('Pickpock') then
begin
Wait(200 + Random(50));
DetectPick;
wait(100 + Random(50));
DetectPick;
wait(100 + Random(50));
end;
end;
AntiBan;
wait(100 + Random(50));
while (IsPicking) do
begin
wait(50 + Random(50));
DetectPick;
end;
end;

Emaziz

2011-01-25 16:18:27

From: marpis
Trying this now. I see you have absolutely no randomness in your waits, I don't know how the script works but I added some


The DetectPick procedure is only a detection procedure and does no interaction with the client so randomness between those calls should not be neccessary. :) Also because of all the functions being called in-between the picks, you'd need a super computer to actually perform all the tasks precisely every 600ms + as long as the picking animation lasts. But of course, it doesn't hurt :)

silor

2011-01-25 16:39:39

I still don't believe the randomness is that important (though obviously it's better to be safe than sorry), I ran the sudoku solver at ~180 SpH with no randomness at 200 MouseSpeed for hours, IMO it's the player reports which get you banned and it doesn't matter if you have a 50ms wait randomness. :)

You can use Me.InFight to check for being stunned aswell and smaller uptext's 'ickp' is sufficient (edit: in color, I dont know about ref), that's what I use in my thiever.

Emaziz

2011-01-26 01:45:09

From: silor
I still don't believe the randomness is that important (though obviously it's better to be safe than sorry), I ran the sudoku solver at ~180 SpH with no randomness at 200 MouseSpeed for hours, IMO it's the player reports which get you banned and it doesn't matter if you have a 50ms wait randomness. :)

You can use Me.InFight to check for being stunned aswell and smaller uptext's 'ickp' is sufficient (edit: in color, I dont know about ref), that's what I use in my thiever.


Thanks for the tip :) I've thought of changing the detection system into checking the inventory instead, that way I'd get 100% accurate seed info. Maybe I will use Me.InFight then, but the current system detects every stun perfectly :)

final_result

2011-01-30 17:34:38

Hi, I love the script and it seems very ambitious… I had this running for about 40 minutes at the Draynor Master Farmers but I think there is some things you should take into consideration:


//Procedure CheckEat, checks whether LP is high enough to fail a pickpock without dying, eats if isn't.
function NeedToEat: boolean;
begin
Result := False;
if R_GetMMLevels('hp') <= TargetHitDamage then
begin
debug('Need to eat!');
result := True;
end
end;

I don't really like this function as it consistently eats at a very low hp (30) which is really predictable and botlike and it also causes a lot of problems when the bot misclicks and either attacks a market guard or steals from the stall while the guard was there.

While I'm not as familiar with scripting as I would like I think this would work, but forgive me if its wrong:



//Procedure CheckEat, checks whether LP is high enough to fail a pickpock without dying, eats if isn't.
function NeedToEat: boolean;
begin
Result := False;
if R_GetMMLevels('hp') - Random (330) <= TargetHitDamage then
begin
debug('Need to eat!');
result := True;
end
end;

Which would make it randomly eat from LP 360 to 30.

Also, when it does get attacked by market guards, it doesn't realize this and continues trying to pickpocket, maybe you could have a failsafe to read the chat log to see if you are getting the message "You can't do this while in combat" and have the bot run to the bank.

EDIT: I hope you are still updating this, its an awesome script and I will post proggies when I can, but I only have one P2P account so it won't be very long :P

wondersueak

2011-01-30 21:39:16

It never ate any food. I let the hp get down to about 100 to see if it would eat the food that was in my inventory, but it never did so I terminated the script before the character died.

good script though.

Emaziz

2011-01-31 01:54:20

@final_result: I always eat only when i have to when pickpocking. :)
I may add an option to eat earlier tho if it makes you feel safer.

Have you ever seen the bot attack a market guard or steal from the stall? That shouldn't be possible. :/ anyway I'll add a combat failsafe then. Looking forward for some proggies :)

From: wondersueak
It never ate any food. I let the hp get down to about 100 to see if it would eat the food that was in my inventory, but it never did so I terminated the script before the character died.

good script though.


It only eats when it has to, to make sure it wont waste any. If you are pickpocking master farmers it wont eat until you Are below 31 lp :)

EDIT: New version v1.20 is up. Combat detection and unpredictable food eating added.

wondersueak

2011-01-31 19:36:26

I was pickpocketing varrock east guards.

Thanks!

final_result

2011-01-31 20:25:12

From: Emaziz
@final_result: I always eat only when i have to when pickpocking. :)
I may add an option to eat earlier tho if it makes you feel safer.

Have you ever seen the bot attack a market guard or steal from the stall? That shouldn't be possible. :/ anyway I'll add a combat failsafe then. Looking forward for some proggies :)



It only eats when it has to, to make sure it wont waste any. If you are pickpocking master farmers it wont eat until you Are below 31 lp :)

EDIT: New version v1.20 is up. Combat detection and unpredictable food eating added.


It happens when the Master Farmer is moving and so is the market guard, it will click on the market guard instead, I can prevent this by equipping a unloaded weapon, but when the Master Farmer is in very close proximity to the stall, it doesn't always rightclick and check for uptext, so sometimes it clicks the stall, causing the guard to attack the bot.

I suppose some people do it, but the majority eat earlier and it does seem botlike to me.

EDIT: You forgot to upload the new version :P

P3rs0nal1ty

2011-02-01 00:25:12

definately will be testing once i get high enough thieveing for MF (:

Emaziz

2011-02-01 04:53:51

From: final_result
It happens when the Master Farmer is moving and so is the market guard, it will click on the market guard instead, I can prevent this by equipping a unloaded weapon, but when the Master Farmer is in very close proximity to the stall, it doesn't always rightclick and check for uptext, so sometimes it clicks the stall, causing the guard to attack the bot.

I suppose some people do it, but the majority eat earlier and it does seem botlike to me.

EDIT: You forgot to upload the new version :P


Lol >_> i uploaded then removed in order to apply a hotfix, which i obviously forgot. Will upload once i get home today

Emaziz

2011-02-01 04:56:08

From: donkey60000
definately will be testing once i get high enough thieveing for MF (:


You can also pickpock men at edgeville :)

(sorry for double post, quoting on iPhone is a pain in the ass)

EDIT:

Now v1.20 is uploaded! I totally forgot it >_> LANing with 7 friends all day. Age of Empires for the win ;)

IPwnz

2011-02-01 18:08:34

Good script. I'm really happy you added the health option to eat food, to make it more human like. However, is there anyway that you can force the script to make sure that it never has a full inventory? When watching the script, it often fills up invent space and then only eats a piece of food AFTER you get the message that you can't pick because of invent space. It would be nice if you could make it always have one spot open.

Also..could you slap in a bank pin?

p.s. I just ran the v1.20 script and it is stuck. I'll try again, but it was having problems getting out of the bank screen.

Emaziz

2011-02-02 05:55:18

From: IPwnz
Good script. I'm really happy you added the health option to eat food, to make it more human like. However, is there anyway that you can force the script to make sure that it never has a full inventory? When watching the script, it often fills up invent space and then only eats a piece of food AFTER you get the message that you can't pick because of invent space. It would be nice if you could make it always have one spot open.

Also..could you slap in a bank pin?

p.s. I just ran the v1.20 script and it is stuck. I'll try again, but it was having a lot of problem getting out of the bank screen.


I checked it out and it seems to fail to detect inventory items, aka food. Reflection is broken? Anyways this is a busy day so I won't be able to fix it yet.

IPwnz

2011-02-02 21:42:43

Your Eat function tries to calculate what type of food was eaten incorrectly, you need to move the food name finding piece earlier in the function. Something like:


function Eat: boolean;
var
i: integer;
begin
Result := False;
for i := 1 to 28 do
begin
if (IsFood(GetInvItemAt(i))) then
begin
FoodName := GetInvItemAt(i).Name;
R_ClickItem(i,True,'');
FoodEaten := Foodeaten + 1;
debug('Ate ' + FoodName);
Result := True;
i := 29;
end;
end;
wait(100);
end;

Emaziz

2011-02-03 04:04:59

From: IPwnz
Your Eat function tries to calculate what type of food was eaten incorrectly, you need to move the food name finding piece earlier in the function. Something like:


function Eat: boolean;
var
i: integer;
begin
Result := False;
for i := 1 to 28 do
begin
if (IsFood(GetInvItemAt(i))) then
begin
FoodName := GetInvItemAt(i).Name;
R_ClickItem(i,True,'');
FoodEaten := Foodeaten + 1;
debug('Ate ' + FoodName);
Result := True;
i := 29;
end;
end;
wait(100);
end;


Except that the food isn't eaten within the very millisecond it's clicked. So it still works :)

EDIT: Since inventory reflection detection seems to be working again I've uploaded the version with combat detection and quicker eating when inventory is full. Cheers :)

oxu24

2011-02-03 14:27:15

Works very well in master farmer spot and easy to use for 1st time user like me i'll use this over night today

Emaziz

2011-02-03 14:59:45

From: oxu24
Works very well in master farmer spot and easy to use for 1st time user like me i'll use this over night today


Thanks for feedback, remember to copy the proggie ;)

wand2658

2011-02-19 14:00:28

[Error] (197:6): Unknown identifier 'R_ItemNameExists' at line 196
Compiling failed.


Can't run

Emaziz

2011-02-20 15:13:28

From: wand2658
[Error] (197:6): Unknown identifier 'R_ItemNameExists' at line 196
Compiling failed.


Can't run


Getting tired of reflection developers changing name on the functions.. :duh:

Fixed.

wand2658

2011-02-21 20:43:21

Misclicks sometimes, otherwise really good.

-~EmPick Proggie report v1.30-~-~-
Script runtime: 1 hour(s), 44 minute(s), 7 second(s).
Next break: 5 minute(s), 23 second(s).
Total picks: 468
Total stuns: 273
Pick/Stun ratio: 1.71428571428571
Total XP Gained: 21021
Total XP/Hour: 12112.0687585528
Total GP Stolen: 0
Total seeds stolen: 839
Total food eaten: 165 Tuna
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Emaziz

2011-02-22 08:02:07

From: wand2658
Misclicks sometimes, otherwise really good.

-~EmPick Proggie report v1.30-~-~-
Script runtime: 1 hour(s), 44 minute(s), 7 second(s).
Next break: 5 minute(s), 23 second(s).
Total picks: 468
Total stuns: 273
Pick/Stun ratio: 1.71428571428571
Total XP Gained: 21021
Total XP/Hour: 12112.0687585528
Total GP Stolen: 0
Total seeds stolen: 839
Total food eaten: 165 Tuna
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-


Thanks :) Miss clicking is really hard to completely avoid, but it will be tweaked in the new version coming out sometime soon. :)

bevardis

2011-02-22 09:49:25

Works well.

Note: you have to put i.e. 500, not 50 in the hp variable.

Emaziz

2011-02-22 11:08:17

From: bevardis
Works well.

Note: you have to put i.e. 500, not 50 in the hp variable.


What "hp variable" are you referring to?

If it is "Integers[3]", that is a variable that you are supposed to change to whatever you'd like it to be. Personally, I like 50 since I'm a lvl 3 and I would hate to waste a lot of food. :)

bevardis

2011-02-25 16:51:15

-~EmPick Proggie report v1.30-~-~-
Script runtime: 6 hour(s), 27 minute(s), 49 second(s).
Next break: 2 minute(s), 49 second(s).
Total picks: 1801
Total stuns: 721
Pick/Stun ratio: 2.49791955617198
Total XP Gained: 78536
Total XP/Hour: 12150.1806220825
Total GP Stolen: 0
Total seeds stolen: 3060
Total food eaten: 415 Trout
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-




Pin := '0000';
You also need this line, it wasn't there last time I checked.

Sometimes logs on to a freetoplay world after a break.


But it's good.

I meant that you have to enter the hundreds of hp, not the hitpoints level.

Emaziz

2011-02-25 19:29:02

From: bevardis
Pin := '0000';
You also need this line, it wasn't there last time I checked.

Sometimes logs on to a freetoplay world after a break.


But it's good.

I meant that you have to enter the hundreds of hp, not the hitpoints level.


Where did I enter the hitpoints level..? :P

Anyway, I was supposed to release V2.0 next week but since it's holiday and I managed to forget to bring the V2.0 file with me from school, it will be released in about 2 weeks. V2.0 features better efficiency, more locations, better mouse accuracy, better failsafes and way way better antiban. Basically it's a whole new script. :)

bevardis

2011-02-26 04:34:46

Nevermind now, I had the older version.

enoyhs

2011-02-28 14:43:00

Great script!

-~EmPick Proggie report v1.30-~-~-
Script runtime: 4 hour(s), 5 minute(s), 6 second(s).
Next break: 33 second(s).
Total picks: 1757
Total stuns: 535
Pick/Stun ratio: 3.28411214953271
Total XP Gained: 77798
Total XP/Hour: 19044.0741440604
Total GP Stolen: 0
Total seeds stolen: 3095
Total food eaten: 371 Trout
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Waiting for version 2.0 :)

Emaziz

2011-02-28 18:48:17

From: enoyhs
Great script!

-~EmPick Proggie report v1.30-~-~-
Script runtime: 4 hour(s), 5 minute(s), 6 second(s).
Next break: 33 second(s).
Total picks: 1757
Total stuns: 535
Pick/Stun ratio: 3.28411214953271
Total XP Gained: 77798
Total XP/Hour: 19044.0741440604
Total GP Stolen: 0
Total seeds stolen: 3095
Total food eaten: 371 Trout
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Waiting for version 2.0 :)


Thanks for feedback, finally a good progress report! :)

chitin

2011-03-01 15:31:19

on 1.31 the version number says 1.3 and the mem constant set to false even though a duh is next to it -.-

Emaziz

2011-03-01 20:58:58

From: chitin
on 1.31 the version number says 1.3 and the mem constant set to false even though a duh is next to it -.-


Hehe, v1.31 was merely a function name change, so I didn't really care about the version constant. Besides the script is pretty much only a patchwork, but a clean great v2.0 will be released next week… Hopefully :)

pyroryan

2011-03-01 21:14:25

From: Emaziz
Thanks :) Miss clicking is really hard to completely avoid, but it will be tweaked in the new version coming out sometime soon. :)


Using crosshair color might suit your needs. But there are other solutions as well.

Emaziz

2011-03-01 21:39:18

From: pyroryan
Using crosshair color might suit your needs. But there are other solutions as well.


Thanks, I'll this along with other methods to see if I can eliminate unwanted missclicks for v2.0. :)

pyroryan

2011-03-01 21:46:21

From: Emaziz
Thanks, I'll this along with other methods to see if I can eliminate unwanted missclicks for v2.0. :)


Well, its more helpful for detecting misclicks, not eliminating.

Emaziz

2011-03-01 22:08:59

EDIT: Read first post, sorry about the update :(

Mystic

2011-03-07 15:25:53

<3 this script! Can't wait for it to do master farmers at Ardy :D

Emaziz

2011-03-07 15:56:43

From: Penguin
<3 this script! Can't wait for it to do master farmers at Ardy :D

I just said I wouldn't update/fix this anymore. :P
However, adding new NPCs and locations is quite easy!

Step 1: Make up a name for the location, say 'AMF' for Ardougne Master Farmer.
Step 2: Set Loc := 'AMF'
Step 3: Make the path and add it to LoadPath. Just add

'AMF':
begin
SetLength(Result,5);
Result := [<TILEPATHHERE>];
end;
Step 4: Go to function GetTarget at line 514 and add
'DMF':
Result := eGetNPC('Master Farmer');
do the case statement.
Step 5: Go to function BankOpen at line 638 and add
'AMF': result := OpenBank('nab',true,true);
to the case.

I think I covered it there. Should problems occur, just ask :)

blother

2011-03-08 19:58:34

Hey, i'll port a proggy in a few hours, but one thing i noticed is how it counts down every second for breaks and it is really kind of annoying. This keeps you from checking some of the things that happened during the script, like exp or the seeds, and it just doesn't seem like it is neccesary.

blother

2011-03-08 21:37:24

-~EmPick Proggie report v1.30-~-~-
Script runtime: 3 hour(s), 6 minute(s), 9 second(s).
Next break: 3 minute(s), 48 second(s).
Total picks: 1257
Total stuns: 439
Pick/Stun ratio: 2.8633257403189
Total XP Gained: 56168
Total XP/Hour: 18103.094946957
Total GP Stolen: 0
Total seeds stolen: 2171
Total food eaten: 153 Lobster
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Manually stopped because i try not to auto when i'm asleep on main.

Worked flawlessly except for one thing you might want to consider. I would eat food to make room to get seeds from the farmers. I switched the amount of food to take to 10 and i will post a proggy tomarrow around the same time as today and tell you how it works out. This might be based on my level which is at 63, but i don't know.

Emaziz

2011-03-09 01:42:25

From: blother
-~EmPick Proggie report v1.30-~-~-
Script runtime: 3 hour(s), 6 minute(s), 9 second(s).
Next break: 3 minute(s), 48 second(s).
Total picks: 1257
Total stuns: 439
Pick/Stun ratio: 2.8633257403189
Total XP Gained: 56168
Total XP/Hour: 18103.094946957
Total GP Stolen: 0
Total seeds stolen: 2171
Total food eaten: 153 Lobster
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Manually stopped because i try not to auto when i'm asleep on main.

Worked flawlessly except for one thing you might want to consider. I would eat food to make room to get seeds from the farmers. I switched the amount of food to take to 10 and i will post a proggy tomarrow around the same time as today and tell you how it works out. This might be based on my level which is at 63, but i don't know.


Hiya, thanks for proggy :) As I stated previously this script won't be updated more. Since you already managed to change the amount of food it shouldn't be a problem tho', and really the amount of food you need depends on your thieving level (since you'll lose more health at lower thieving lvl). About the breaking, that's also something you could easily edit by yourself in procedure doBreak :)

blother

2011-03-09 06:39:48

From: Emaziz
Hiya, thanks for proggy :) As I stated previously this script won't be updated more. Since you already managed to change the amount of food it shouldn't be a problem tho', and really the amount of food you need depends on your thieving level (since you'll lose more health at lower thieving lvl). About the breaking, that's also something you could easily edit by yourself in procedure doBreak :)


Oh, i guess i didn't see you weren't updating :P. It it will be good practice for me to go through and change the stuff myself since i'm still learning.

vashanddou

2011-03-23 07:21:29

-~EmPick Proggie report v1.30-~-~-
Script runtime: 45 minute(s), 4 second(s).
Next break: 14 hour(s), 15 minute(s), 55 second(s).
Total picks: 197
Total stuns: 91
Pick/Stun ratio: 2.16483516483516
Total XP Gained: 273399
Total XP/Hour: 363946.854335307
Total GP Stolen: 0
Total seeds stolen: 343
Total food eaten: 39 Lobster

idk about you, but 363k/hr seems a bit off lol.

Emaziz

2011-03-23 07:49:49

From: vashanddou
-~EmPick Proggie report v1.30-~-~-
Script runtime: 45 minute(s), 4 second(s).
Next break: 14 hour(s), 15 minute(s), 55 second(s).
Total picks: 197
Total stuns: 91
Pick/Stun ratio: 2.16483516483516
Total XP Gained: 273399
Total XP/Hour: 363946.854335307
Total GP Stolen: 0
Total seeds stolen: 343
Total food eaten: 39 Lobster

idk about you, but 363k/hr seems a bit off lol.


1. As stated on post 1, this hasn't been updated in a while and it won't.
2. Did this only occur once or does it occur every time you run? I use the same XP check on all my scripts and it's still working on all. It's probably a one time incident.
3. Big deal? :p

Santa

2011-03-24 15:27:20

I'm sort of a scripting noob.. lol
Do you think you could tell me how to make a path? Or send me in the direction of a place to learn it. Thanks! :D

Emaziz

2011-03-24 16:04:55

I don't know how much you know about tiles and paths, so here's a short guide ;)

A path is an array of TTile. TTile is a variable containing an X variable and an Y variable.

So basically a path is a number of points stored in one variable.

An example for a path is this:

path := [Tile(2618,3332),Tile(2607,3303),Tile(2591,3297),Tile(2582,3295)];
That path starts in Ardougne North Bank and stops at Ardougne Palace.

There are mainly three ways of acquiring these tiles
1) Use a mapping tool
2) Make a script that outputs the players current tile
3) Use RSBot to get the tiles

The quickest one is number 1, the mapping tool. I'm not sure if this is still downloaded with reflection, but if it is you will find it under "Simba\Includes\Reflection\Tools\Pathmaker".

If you don't have it, PM me and I will upload it for you.

Here's what it looks like:

It's quite simple to use.
Once you open the progam,
1) Press "Image" in the top menu and then "Load Image"
2) Select "mapp2.png" from the default folder
3) Change X-offset and Y-offset (marked with yellow on my image) to the values also shown on the image
4) Click on the image to place your tiles. The first click should be in the bank, the following clicks should make a path from the bank to the NPC location. All clicks should also be within the circle surrounding your previous point as this is the distance you can walk in one click (Minimap size).
5) Once you have clicked yourself a path to the NPC(s) from the bank, click "Path" in the top menu and select "Export path".
6) A text box will appear, showing you the values of all tiles. Click the checkbox labeled "Short print style" to make it show the array.
7) Copy the array, example:
[Point(3222, 3217), Point(3232, 3227), Point(3223, 3239), 
Point(3209, 3246), Point(3194, 3245)]
and replace all "Point" with "Tile".
8) Voila! You got yourself a tile path. Now follow the rest of the guide on first post. :)

cause

2011-03-26 05:31:03

-~EmPick Proggie report v1.30-~-~-
Script runtime: 10 hour(s), 32 minute(s), 9 second(s).
Next break: 20 minute(s), 36 second(s).
Total picks: 0
Total stuns: 0
Total XP Gained: 141888
Total XP/Hour: 13466.9590255977
Total GP Stolen: 0
Total seeds stolen: 0
Total food eaten: 783 Tuna
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-

Awesome script, trained to 39 on edgeville men then to 56 on the master farmer.

chitin

2011-03-26 09:39:09

well dude this script is pretty awesome. got from 53-91 in a week and a half. and made around 17m doing it. i runs great but theres just 1 problem and idk if its some of my adjustments i made, i hardly doubt it. but the script fails at random detection. everytime it goes in a random it just keeps clicking on mm. im half surprised on not banned lol but idc. anyway how would i add more random detection? during thieving. cuz its really the only thing thats messing up.

i was sure it was R_FindRandoms; and i tried to stick that in at more places but still it just clicks mm randomly like its tryn to get to a bank… it does fail without a random on occasion but i have no idea why.

i set it to run like 15 hrs straight and it went to 17 hrs with one break lol.

Emaziz

2011-03-26 10:59:46

From: chitin
well dude this script is pretty awesome. got from 53-91 in a week and a half. and made around 17m doing it. i runs great but theres just 1 problem and idk if its some of my adjustments i made, i hardly doubt it. but the script fails at random detection. everytime it goes in a random it just keeps clicking on mm. im half surprised on not banned lol but idc. anyway how would i add more random detection? during thieving. cuz its really the only thing thats messing up.

i was sure it was R_FindRandoms; and i tried to stick that in at more places but still it just clicks mm randomly like its tryn to get to a bank… it does fail without a random on occasion but i have no idea why.

i set it to run like 15 hrs straight and it went to 17 hrs with one break lol.


You'd have to find the loop at which the script is stuck at, and place R_FindRandoms there. If you can't figure out which loop it is, try placing "writeln('<loop name>'); in each loop to identify which loop it is. :)

chitin

2011-03-27 01:33:40

From: Emaziz
You'd have to find the loop at which the script is stuck at, and place R_FindRandoms there. If you can't figure out which loop it is, try placing "writeln('<loop name>'); in each loop to identify which loop it is. :)


thats a good idea. but im pretty sure i already found it. havnt had the chance to double check yet though so ill add it in anyway. il let you know where it was.

kingarabian

2011-03-27 12:07:12

Thanks got me from 26-53 thieving <3.

GTFO

2011-04-14 04:45:13

was wondering if you can add the theiving guild pickpocketing trainer seeing as how hes the best xp for lower lvls, thanks.

towinthiswar

2011-04-16 21:30:13

It's working well except that it pauses for a very long time (50s) every time I get stunned.

chitin

2011-04-25 12:47:39

well its been a long time and ive fiddles with this script so much i dont even know how the original looked like. jk i actually marked all the changes i made but to my avail i ran into such a situation that if i were to add random checks it would give me 10k xp/hr less than it would be with the original setup. and since im not too far away from my pc all the time i decided to leave it as it was. i couldnt for the life of me figure out where exactly the random check was stopped at because my pc failz so the lag boots and…u know what forget it. point being as it was got me from 53-99 twice on master farmers and got me 50m lol. so thanks.

HarryJames

2011-04-25 13:00:17

Hey Em :)
Can I work on the script, adding NPCs and things, not sure if you still not maintaining it!

Emaziz

2011-04-26 07:28:18

From: HarryJames
Hey Em :)
Can I work on the script, adding NPCs and things, not sure if you still not maintaining it!


You are very welcome to do so! :)
I'd actually like it improved myself, hehe ^^,

chitin

2011-05-26 13:02:16

oh noes with the new draynor update this script is having a hard time banking. srl updated for the "counter" quick bank, but about after an hour of running (and i leave at north on start) the script gets lost 0.0 / or just has banking problems. also when it walks to bank it stays inside for like a good 40 seconds before opening it…probably because the mm flag doesnt go away… id love to fix it but my script knowledge is beginner-intermediate at best.

why did you stop working on this script but not herbs em? i know you got school and stuff. which i wish u luck with btw.

Emaziz

2011-05-27 02:24:22

From: chitin
oh noes with the new draynor update this script is having a hard time banking. srl updated for the "counter" quick bank, but about after an hour of running (and i leave at north on start) the script gets lost 0.0 / or just has banking problems. also when it walks to bank it stays inside for like a good 40 seconds before opening it…probably because the mm flag doesnt go away… id love to fix it but my script knowledge is beginner-intermediate at best.

why did you stop working on this script but not herbs em? i know you got school and stuff. which i wish u luck with btw.


You know that feeling when you've been working on something for 1 week and then it suddenly disappears? It sucks. :(
(And I'm not working on anything atm, playing WoW :D)

Anyway, the script calls the SRL function "OpenBank('db',true,true)" in order to open bank, if bank is not opened correctly then there's something wrong with the SRL function itself. The problem may however be the MM-flag not going away. Since this has not been a problem before it may be that Jagex shifted some tiles in Draynor, "moving" the bank a few tiles away from it's original position. In that case all we need is a new path.

Other than that I have no clue. ;)

EDIT: Oh, and I don't have any accounts to play on so I can't fix it myself. Nor do I feel like fixing it myself. :)

chitin

2011-05-27 02:44:41

From: Emaziz
You know that feeling when you've been working on something for 1 week and then it suddenly disappears? It sucks. :(
(And I'm not working on anything atm, playing WoW :D)

Anyway, the script calls the SRL function "OpenBank('db',true,true)" in order to open bank, if bank is not opened correctly then there's something wrong with the SRL function itself. The problem may however be the MM-flag not going away. Since this has not been a problem before it may be that Jagex shifted some tiles in Draynor, "moving" the bank a few tiles away from it's original position. In that case all we need is a new path.

Other than that I have no clue. ;)

EDIT: Oh, and I don't have any accounts to play on so I can't fix it myself. Nor do I feel like fixing it myself. :)


sounds like depression? (sudden loss of interest…)
the mmflag not going away is normal. it never went [before] away because the script always used to walk on the banker npcs. thats not even the issue…that issue just costs 40 seconds per run which im ok with….

its something i have no clue how to solve…..ugh and now i gota trek for some1 experienced to take a look 0.0 ……that or get 99 thiev again..but legit…and we all know thats not gonna happen :duh:

blother

2011-07-29 18:04:55

anyone know if this was ever fixed?

Mike408

2011-08-20 23:34:31

At edgeville men, the house doors close and script fails to open doors and tries to pickpocket. A message keeps appearing in RS "I can't reach that!"

Mike408

2011-08-24 18:21:23

There's no pin entry!

Becks

2011-08-25 03:50:35

Outdated^^

Mike408

2011-09-04 23:24:18

Yee. Emaziz just opened this script to public :).

chitin

2011-10-09 04:28:35

ahhhh some1 should fix this cuz i tries n i tries and i just dont know ref lib well enough to replace everything properly. when i get rid of one thing another always seems to come up. its like 1 step forward 2 steps back….some1 fix pl0x. same with his amazing emherb