SRL Archive - First Scripts

Dr.Newheart's Nat THiever


drnewheart

2007-08-03 09:18:30

Howdy Y'all, Im Dr.NEwheart And I Have Created A Script That Thieves Nature Runes From The Western Chest In East Ardougne. Thanks Post Bugs\Errors And Progress Reports Would Be Nice!:spot:

Please Give Me Rep If You Like This Script.


By the way,
It has Anti-Randoms,
Anti-Ban,
And Failsafes.

Added Version 1.2
Better Anti-Ban and Multi-Player added.
Working On Gas Random.

Added Version 1.3
Gas Random Complete
Added Little Updates To Make It Run Smoother.

Added Version 1.35
Fixed A Few Bugs
Added SRL Stats Registry.

dvdcrayola

2007-08-03 16:27:08

ok, this is a good script for your first.. i do have a few tips for you though
(also i cant test it because im not a member)

1. your login procedure, just use the SRL login
{*******************************************************************************
procedure LoginPlayer;
By: WT-Fakawi and modified by Ron
Description: Logs Player[CurrentPlayer] in. Is usually preceeded by NextPlayer.
*******************************************************************************}
// * Still to implement, but have never encountered any of these:

// * Login limit exceeded.
// * Too many connections from your address."
// * Bad session id.
// * Could not complete login.
// * Please try using a different world.
// * Invalid login server requested
// * Malformed login packet.
// * Unexpected server response

procedure LoginPlayer;
var
ClickHereToPlay, tx, ty, CHx, CHy, c, tmpMask, LastPlayer: Integer;
begin
ClickHereToPlay := BitmapFromString(33, 1, 'z78DA758E510E80300843' +
'AF54C0E2F6E94CB8FF9134123392693FFA41FA4A23A6F0888443D' +
'26DC000A7DCE7F458F23EE444E721444B6A0F53D58FE44F4365B7' +
'067D37AC3D95AADF2F50962C79');
if (not (LoggedIn)) then
begin
// Beginning player not active...
if (not (Players[CurrentPlayer].Active)) then
begin
WriteLn('Current player is not Active...');
LastPlayer := CurrentPlayer;
repeat
CurrentPlayer := Random(HowManyPlayers);
Wait(100);
until (Players[CurrentPlayer].Active);
LoginPlayer;
FreeBitmap(ClickHereToPlay);
Exit;
end;
x := 150;
y := 173;
if (FindClient) then
FindWindowBySize(766, 504);
ActivateClient;
Wait(1000);
ClickOption('Cancel', 1);
ClickOption('Exist', 1);
tmpMask := CreateBitmapMaskFromText('Username', upchars);
if (FindBitmapMaskTolerance(tmpMask, x, y, 0, 0, 520, 340, 10, 50)) then
begin
Wait(25 + Random(50));
Mouse(x + 24, y + 3, 3, 0, True);
Wait(25 + Random(50));
//SendKeysSilent(Players[CurrentPlayer].Name + chr(13) + Players[CurrentPlayer].Pass)
WriteLn(Players[CurrentPlayer].Name);
TypeSend(Players[CurrentPlayer].Name);
Wait(100 + Random(100));
Mouse(327, 272, 0, 0, True);
TypeSend(Players[CurrentPlayer].Pass);
Wait(100 + Random(100));
end;
ClickOption('Login', 1);
// Waiting for Connecting to Server...
MarkTime(Mark);
while FindText(tx, ty, '...', upchars, 240, 180, 530, 240) do
begin
Wait(100);
if TimeFromMark(Mark) > 20000 then Break;
end;
MarkTime(Mark);
repeat
Wait(1000);
// Enter your username and password. If all failed...
if FindText(tx, ty, 'nter you', upchars, 240, 180, 530, 240) then
begin
WriteLn('Enter your username and Password');
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Your account is already logged in.
if FindText(tx, ty, 'lready', upchars, 240, 180, 530, 240) then
begin
WriteLn('Your account is already logged in');
LastPlayer := CurrentPlayer;
repeat
CurrentPlayer := Random(HowManyPlayers);
Wait(100);
until (Players[CurrentPlayer].Active) and (CurrentPlayer <> LastPlayer);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Invalid Username. 3 attempts. If fails, you haven't set your username/pass correct
if FindText(tx, ty, 'nvalid', upchars, 240, 180, 530, 240) then
begin
WriteLn('Invalid Username.');
SRL_Attempts := SRL_Attempts + 1;
if SRL_Attempts > 3 then
begin
Players[CurrentPlayer].loc := 'L/P ERROR';
NextPlayer(False);
end;
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Login attempts exceeded. Please wait 1 minute and try again.
if FindText(tx, ty, 'excee', upchars, 240, 180, 530, 240) then
begin
WriteLn('Login attempts exceeded. Please wait 1 minute and try again.');
Wait(60000);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// World is full.
if FindText(tx, ty, 'full', upchars, 240, 180, 530, 240) then
begin
WriteLn('World is full.');
Wait(3000);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Unable to connect. Login Server offline.
if FindText(tx, ty, 'offl', upchars, 240, 180, 530, 240) then
begin
WriteLn('Unable to connect Login Server offline.');
Wait((6000) + Random(6000));
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Error Connecting.
if FindText(tx, ty, 'rror', upchars, 240, 180, 530, 240) then
begin
WriteLn('Error Connecting.');
Wait(10000);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Error loading your profile. Will attempt to re-login 5 more times.)
if FindText(tx, ty, 'ontact', upchars, 240, 180, 530, 240) then
begin
WriteLn('Error loading your profile.');
Wait(2000);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Login server rejected session.
if FindText(tx, ty, 'reject', upchars, 240, 180, 530, 240) then
begin
WriteLn('Login server rejected session.');
Wait(1000);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Runescape has been updated.
if FindText(tx, ty, 'reload', upchars, 240, 180, 530, 240) then
begin
WriteLn('ERROR. RuneScape has been updated. Script Terminated.');
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
TerminateScript;
end;
// The Server is being updated. Please wait 1 minute.
if FindText(tx, ty, 'updat', upchars, 240, 180, 530, 240) then
begin
WriteLn('The Server is being updated.');
Wait(60000);
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Your account has been disabled.
if FindText(tx, ty, 'disabled', upchars, 420, 180, 500, 220) then
begin
WriteLn('Your account has been disabled');
Players[CurrentPlayer].loc := 'DISABLED';
NextPlayer(False);
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end else
// Waiting for Profile to be Transferred
if FindText(tx, ty, 'trans', upchars, 240, 180, 530, 240) then
begin
WriteLn('Waiting for your Profile to be Transferred');
Wait(2500);
end else
// You need a Members account...
if FindText(tx, ty, 'member', upchars, 240, 180, 530, 240) then
begin
WriteLn('You need a Members account...');
Players[CurrentPlayer].loc := 'Non-Member';
NextPlayer(False);
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
end else
// Welcome to RuneScape. If all failed...
if FindText(tx, ty, 'elcom', upchars, 240, 180, 530, 240) then
begin
WriteLn('Welcome.');
LoginPlayer;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
Exit;
end;

if TimeFromMark(Mark) > 180000 then
begin
WriteLn('three minutes have passed');
WriteFileString(TheFile, Chr(13) + 'THREE MINUTES HAVE PASSED!!!' +
Chr(13));
if (FindClient) then
FindWindowBySize(766, 504);
ActivateClient;
ClickOption('Cancel', 1);
ClickOption('Exist', 1);
end;
until (FindBitmapToleranceIn(ClickHereToPlay, CHx, CHy, 250, 270, 530, 390,
5)) or FindColor(CHx, CHy, 723587, 555, 10, 575, 30);
Wait(1000 + Random(500));
if (FindBitmapToleranceIn(ClickHereToPlay, CHx, CHy, 250, 270, 530, 390, 5)) then
Mouse(CHx, CHy, 50, 20, True) else Writeln('Found Compass'); // Clicks randomly on the button
repeat
Wait(1000);
c := c + 1;
until (LoggedIn) or (c >= 600);
end;
FreeBitmap(tmpMask);
FreeBitmap(ClickHereToPlay);
if LoggedIn then
begin
PlayerStartTime := (GetSystemTime div 1000); // PlayerStartTime
if NickNameBMP <> 0 then
FreeBitmap(NickNameBMP);
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,
upchars); // Screenname
WriteFileString(TheFile, Chr(13) + UpperCase(Players[CurrentPlayer].Name) +
Chr(13)); //* Save NAME to file
end;
end;
it will probably work better in the long run

2. always explain what your constants mean… use somthing like this
Const
user=''; //your username
pass=''; //your password
TimesToSteal=5; //how many times you want to steal from the chest
AntiBanAmount=30; //the lower the number the more times it will do an antiban procedure

3. your antiiban.. for how your script is set up now, it works great. but, once you get into leting in run for long periods of time.. (1 hour plus) you need to add some things
after this i think you want to add a gametab(4);
    0: begin
HoverSkill('Random', false);
wait(500+Random(75));
end;

your talking will need some more things to say.. because if it runs for a long time it will eventually say the same thing twise.. which will do the opposit of what it is supposed to. of coarse you could do somthing like this:
    4: begin
case random(10) of
0: if (ty0 = 0) then
begin
TypeSend('This is boring');
ty0 := ty0+1
end;

1: if (ty1 = 0) then
begin
TypeSend('I wish people came here');
ty1 := ty1+1
end;

2: if (ty2 = 0) then
begin
TypeSend('lalalalala');
ty2 := ty2+1
end;

3: if (ty3 = 0) then
begin
TypeSend('burp');
ty3 := ty3+1
end;

4: if (ty4 = 0) then
begin
TypeSend('i gotta pee');
ty4 := ty4+1
end;

5: if (ty5 = 0) then
begin
TypeSend('wonder why no one ever comes here');
ty5 := ty5+1
end;

6: if (ty6 = 0) then
begin
TypeSend('Doh re me fa sol la ti doh!');
ty6 := ty6+1
end;

7: if (ty7 = 0) then
begin
TypeSend('Doh ti la sol fa me re doh!');
ty7 := ty7+1
end;

8: if (ty8 = 0) then
begin
TypeSend('soooooo bored!');
ty8 := ty8+1
end;

9: if (ty9 = 0) then
begin
TypeSend('why would anyone waste their time theiving!');
ty9 := ty9+1
end;
end;
end;
it will make sure that if it uses that particular sentence, it wont again. but you should still add more.. oh and make sure you have this somewhere
 var
ty0,ty1,ty2,ty3,ty4,ty5,ty6,ty7,ty8,ty9: integer;

if you are going to use the changing compass in your antiban, you need to have one for each direction… or even better a procedure that holds one of the arrows down for a random amount of time, then re-alines(sp?) it to north

4. in your FindTheChest; procedure.. in stead of using istextup use istextupmulti because it is more reliable.
{*******************************************************************************
function IsUpTextMulti(UT1, UT2, UT3: String): Boolean;
By: WT-Fakawi
Description: Returns any of three UpText that might be to the right
Usefull when text is partially masked.
Use: IsUpTextMulti('Attack','tta','ack')
*******************************************************************************}

function IsUpTextMulti(UT1, UT2, UT3: string): Boolean;
var
tempx, tempy, I: Integer;
var
TheText: string;
begin
for I := 1 to 3 do
begin
case I of
1: TheText := UT1;
2: TheText := UT2;
3: TheText := UT3;
end;
if IsTextInAreaEx(7, 7, 334, 20, tempx, tempy, TheText, 100, upchars, True,
True, 0, 2, -1) then
Result := True;
end;
end;

your script was good though, these are just some things to change to improve it. also, you could later convert it to use multiple players

Ejjman

2007-08-03 17:26:22

kudos to you crayola :)

dvdcrayola

2007-08-03 19:37:50

thanks! i hope it helps, now i need to make MY first script… =]

drnewheart

2007-08-04 00:45:09

Thanks For The Help DvdCrayola I Finished Version 1.2 And did everything you said.

Anyone Have Any Proggies or Errors Or Suggestions? Im willing to update it in ANY way possible……. Does it need better AntiRandoms? or anything?

dvdcrayola

2007-08-04 15:01:29

ill take a look at it again! :p

EDIT: ok so far this is what i see

"Very Simple Script Although It Does The"

you need to add the word job haha.

hahahahaha
 TypeSend('I hate immigrants...');

in:
Procedure SetupToStealFromChest;
Procedure FindTheChest;

you need to add
If(not(LoggedIn))Then Exit;

oh and, what is Procedure FindGas; for? i think it might have been an accident? becasue its just blank.

and does anything else come out of the nature chest?

-DVD

drnewheart

2007-08-04 16:03:16

in:
Procedure SetupToStealFromChest;
Procedure FindTheChest;

you need to add
If(not(LoggedIn))Then Exit;

(oh and, what is Procedure FindGas; for? i think it might have been an accident? becasue its just blank.)

Something That Im Working On Right Now. It Finds The Poison Gas Random.

(and does anything else come out of the nature chest?)

3 Coins Come Out Of The Chest

dvdcrayola

2007-08-04 18:08:48

you could add into the progress report how many coins were earned too.

just an idea…

Sp0rky

2007-08-04 18:22:21

Very nice script for your first. It's a real shame your login procedure was useless, it's very nice :)

drnewheart

2007-08-04 19:19:38

From: Sp0rk-eh
Very nice script for your first. It's a real shaem your login procedure was useless, it's very nice :)


Check the new version it uses SRL's login Procedure. And Thanks:D

drnewheart

2007-08-04 19:20:41

From: dvdcrayola
you could add into the progress report how many coins were earned too.

just an idea…



Ya I took the idea and added it thanks!

jeffreytuner

2007-08-04 20:30:44

i will try and post a proggie

drnewheart

2007-08-05 00:00:57

From: jeffreytuner
i will try and post a proggie


Thanks All Help Is Appreciated.

dvdcrayola

2007-08-05 12:55:47

have you gotten any proggies drnewheart?

just curious to see how it preforms :p

drnewheart

2007-08-05 16:09:50

From: dvdcrayola
have you gotten any proggies drnewheart?

just curious to see how it preforms :p



Only A couple but I didnt keep them.

It avoided 5 gas,
Stole 168 nats,
and worked for about 45 minutes.

drnewheart

2007-08-07 11:27:11

I will Now Be Moving this Script to the Thieving Section.

noahthepoo

2007-10-29 06:00:41

it keep saying error in script what whent rong?

Narcle

2007-10-29 21:14:24

From: drnewheart
08-07-2007 11:27 AM
I will Now Be Moving this Script to the Thieving Section.


His last post was near 3 months ago, thats whats wrong. ;)
And he said he moved it.

sam the clam

2007-11-05 14:44:51

Looks good :p try it out as soon as I get on