SRL Archive - Other Scripts

SRL Members Application Tool 2010


BobboHobbo

2009-12-26 03:28:26

SRL Members Application Tool 2010

The SRL Members Application Tool 2010 is an updated version of the previous simple members application tool. Ive decided to re make it and here is the end result.


Script Includes
  • Easy and simple way to show how your script lines up with the SRL Member standards
  • Script calculates how many lines and characters your script has and marks you accordingly
  • User input setting which you put your post count and your attitude giving your the mark for the amount you contribute to the community
  • Own debug box showing everything you need and your result
  • Red and green colouring which displays how good your scritpt is
  • A basic percentage out of 100% for your script is given (Over 75 is good)
  • Fairly accurate :)

How to use
Firstly copy your script. Now run the SRL Members Application Tool 2010, now a form should show up. Paste your script into the Script Box clearly labelled and hit the generate mark button. Your result will show up in the debug and also on the form.

Note This is just a tool to make you decide if you should apply for members. It does not guarantee you members!

Change log

[B]Version 0.02[/B]
- Added FindTextMulti
- Added FindDTM to multi solution.

[B]Version 0.01[/B]
- Release
Preview


Make sure you post any suggestions and errors

Thanks

~ BobboHobbo

bbri06

2009-12-26 03:50:06

Neat tool.


Add tdtmpointdef
You should Apply for members if you havent cheated!
[==================================]
[= Result: 91%
[==================================]

I'll check out tdtmpointdef, thanks!

BobboHobbo

2009-12-26 03:54:13

From: bbri06
Neat tool.


Add tdtmpointdef
You should Apply for members if you havent cheated!
[==================================]
[= Result: 91%
[==================================]

I'll check out tdtmpointdef, thanks!


You wouldnt really need Tdtmpointdef if you already have other forms of walking if im thinking of the right thing. tdtmpointdef is for DDTM's which are used for walking.

bbri06

2009-12-26 04:29:39

I decided to incorporate them anyways as I had been looking for a more accurate bank finding procedure and they fit the task perfectly, works absolutely beautifully! +rep for this post and your tutorial on DDTMs, thanks a ton!

BobboHobbo

2009-12-26 04:48:05

From: bbri06
I decided to incorporate them anyways as I had been looking for a more accurate bank finding procedure and they fit the task perfectly, works absolutely beautifully! +rep for this post and your tutorial on DDTMs, thanks a ton!


:) Ill be looking forward to your application.

Coh3n

2009-12-27 00:50:36

Haha, this tool is awesome! :p This result was my Draynor script:

[PHP]
Add fflag
Add tdtmpointdef
You should Apply for members if you havent cheated!
[==================================]
[= Result: 91%
[==================================]
[/PHP]


if FindText('dtmrotated') and not FindText('freedtm') then
You may want to add in 'FindDTM' as well as 'DTMRotated'. ;)

BobboHobbo

2009-12-27 03:10:35

From: Coh3n
Haha, this tool is awesome! :p This result was my Draynor script:

[PHP]
Add fflag
Add tdtmpointdef
You should Apply for members if you havent cheated!
[==================================]
[= Result: 91%
[==================================]
[/PHP]


if FindText('dtmrotated') and not FindText('freedtm') then
You may want to add in 'FindDTM' as well as 'DTMRotated'. ;)


I tried that it made it fail for some reason :S. Ill make a FindTextMulti one so there cant be fails :).

Sandstorm

2009-12-27 13:56:33

Add tdtmpointdef
Make sure include walking in your script!
You should Apply for members if you havent cheated!
[==================================]
[= Result: 88%
[==================================]

On my reflection soul wars script :P (which does, by the way, have walking - just not color walking). There aren't even any dtms in it, as far as I remember. You might want to fix that, if it's a bug and not my fault.

Pretty good though!

~Sand

Mr. Doctor

2009-12-27 14:11:46

I did both of my scripts, 91% on one and 80% on another. I entered with both scripts and did not make it both times.

Sabzi

2009-12-27 14:39:19

Not everything is about what you use but how you use.

Rick

2009-12-27 14:47:02

I like it.

Spelling mistake in your screenie :p "ethier" -> "either"

Dervish

2009-12-27 15:58:45

I had DTMs Freed, yet it told me to make sure I freed them.

BobboHobbo

2009-12-27 16:36:16

From: Sabzi
Not everything is about what you use but how you use.


Exactly, that solves JunkJ question xD. but calculating how its being used would be interesting. But there would be too many ways to go over to make it reliable.

Sabzi

2009-12-27 16:56:32

From: BobboHobbo
Exactly, that solves JunkJ question xD. but calculating how its being used would be interesting. But there would be too many ways to go over to make it reliable.


Yes, that was an answer for JunkJ and not a suggestion.
That would be near impossible because there are several ways to use the things good. And the border between good and bad is very narrow.
And even if you could write it there are still cases where the bad is betterand the good is worse. I hope you understand what I'm trying to say. For example for an easy task not the most complicated method is the best way and that would count as bad even if the method is quiet good. And so on and so on …

BobboHobbo

2009-12-27 17:04:46

From: Sabzi
Yes, that was an answer for JunkJ and not a suggestion.
That would be near impossible because there are several ways to use the things good. And the border between good and bad is very narrow.
And even if you could write it there are still cases where the bad is betterand the goodis worse. I hope you understand what I'm trying to say. For example for an easy task not the most complicated method is the best way and that would count as bad even if the method is quiet good. And so on and so on …


Yeah.. thats true. Alwell

BobboHobbo

2009-12-27 17:06:58

From: Sabzi
Yes, that was an answer for JunkJ and not a suggestion.
That would be near impossible because there are several ways to use the things good. And the border between good and bad is very narrow.
And even if you could write it there are still cases where the bad is betterand the goodis worse. I hope you understand what I'm trying to say. For example for an easy task not the most complicated method is the best way and that would count as bad even if the method is quiet good. And so on and so on …


Yeah.. thats true. Alwell

By the way im going to add your quote in the script :)

"Not everything is about what you use but how you use."

Sandstorm

2009-12-28 20:21:45

I think the use of post count in your score will turn out to be a double edged sword, of sorts. It will cause people to post more, yes, but it will also probably cause spam (hopefully not - but it might). Not only that, but it isn't accurate. Just because someone has a low post count does not mean they don't contribute. If I posted 100 meaningful, on-topic, helpful posts, and someone else posted 1000 useless, spam, completely offtopic, unhelpful posts, from what I gather, they'll receive a better score for the 900 extra posts. Know what I mean?

~Sand

bbri06

2009-12-29 00:56:21

Sandstorm, the application values post count very little.

BobboHobbo

2009-12-29 07:01:26

From: Sandstorm
I think the use of post count in your score will turn out to be a double edged sword, of sorts. It will cause people to post more, yes, but it will also probably cause spam (hopefully not - but it might). Not only that, but it isn't accurate. Just because someone has a low post count does not mean they don't contribute. If I posted 100 meaningful, on-topic, helpful posts, and someone else posted 1000 useless, spam, completely offtopic, unhelpful posts, from what I gather, they'll receive a better score for the 900 extra posts. Know what I mean?

~Sand


It gives you like 2 points if you have over 100 posts which isnt much..

Sandstorm

2009-12-29 18:42:37

From: BobboHobbo
It gives you like 2 points if you have over 100 posts which isnt much..


Ah. I didn't really have time to look over the code, so I assumed it added more points the higher your post count.

~Sand

Simtoon

2009-12-30 18:34:39


Add fflag
Add tdtmpointdef
Add while
You should Apply for members if you havent cheated!
[==================================]
[= Result: 89%
[==================================]

My Members App.

Naum

2009-12-31 15:15:42

Heh.., a script I made a year ago lol.

Add tdtmpointdef
You should Apply for members if you havent cheated!
[==================================]
[= Result: 95%
[==================================]


Program CowHider_BankerXtreme;
(* Un-comment Smart.scar to use SMART*)
{.include SRL/SRL/Misc/SMART.scar}
{.Include Srl/Srl.Scar}
{.Include Srl/Srl/Misc/Users.Scar}
{.Include Srl/Srl/Misc/DoorProfiles.Scar}
{.Include Srl/Srl/Skill/Fighting.Scar}

Type
TCow = Record
CowType, UpText : String;
CowColor : LongInt;
Tolerance : ShortInt;
Finder : Function() : Boolean; //Pointer.
End;

Type
TInt = (Low1, Medium, High); //Different Run types :)
RandOff = Set Of TInt;

//Type Not needed atm.
// TCol = TColor;
{--------------}
Const WorldNumber = 81; //Change to change the world used in SMART.
{------}

Var Cow : Array [0..3] Of TCow;
Options : RandOff;

Var X, Y, GateColor, XpGained, HideDTM : Integer;
ObjectRecord: TAutoColorInfo;
Hides, Banked, W : Integer;
MR, StartScript : Boolean;

Const Ver = '0.1 pub';

Function FindCow() : Boolean; Forward;

Procedure SetUpRecords;
Begin
With Cow[0] Do
Begin
CowType := 'Brown';
CowColor := 8953263;
Tolerance := 14;
UpText := 'Cow';
Finder := @FindCow;
End;

With Cow[1] Do
Begin
CowType := 'Brown, White';
CowColor := 12172994;
Tolerance := 13;
UpText := 'Cow';
Finder := @FindCow;
End;

With Cow[2] Do
Begin
CowType := 'Black, White';
CowColor := 3952728;
Tolerance := 15;
UpText := 'Cow';
Finder := @FindCow;
End;

With Cow[3] Do
Begin
CowType := 'Black';
CowColor := 5791854;
Tolerance := 11;
UpText := 'Cow';
Finder := @FindCow;
End;

with ObjectRecord do
begin
UpText := 'Cow';
MaxDist := 30;
Color := 8953263;
HueMod := 0.09;
SatMod := 1.00;
LumTol := 14;
MinR := 120; MaxR := 214;
MinG := 116; MaxG := 197;
MinB := 107; MaxB := 191;
MinX := 17.15; MaxX := 54.27;
MinY := 17.94; MaxY := 56.47;
MinZ := 17.66; MaxZ := 56.47;
end;
Begin
HideDTM := DTMFromString('78DA63546366606866644006DB56AF06D3305' +
'14605A09A2A54353059B81A03A09A1A026AF4816AFA09A89102AA' +
'E921A04619A866127E350085F6063E');
Wait(HideDTM + Random(200));
End;
End;

Procedure N(Term : String);
Begin
WriteLn(Term);
If LoggedIn Then LogOut;
NextPlayer(False);
End;

function PlayersOnMap2(xx1, yy1, xx2, yy2 : integer) : integer; //FBjds!
var
playerses : TPointArray;
begin
FindColorsTolerance(playerses, 16711422, xx1, yy1, xx2, yy2, 19);
RAaSTPA(playerses, 4);
Result := getArrayLength(playerses) - 1;
end;

Procedure AntiBan;
Var I : Byte;
Begin
FindNormalRandoms;
Case Random(25) Of
0 : Begin
GameTab(1 + Random(11));
Wait(200 + Random(400));
If Random(2) = 1 Then
Begin
GameTab(1 + Random(11));
Wait(200 + Random(400));
End Else
GameTab(4 + Random(3));
End;

1, 21..24 : SleepAndMoveMouse(1000 + Random(200));

2 : PickUpMouse;

3 : for i := 1 to (3 + Random(4)) do //From BoredHuman;
begin
MMouse(Random(MSX2), Random(MSY2), 0, 0);
if IsUpText('opti') then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, False);
ChooseOption('Examine');
end;
FindNormalRandoms;
end;

4 : If Random(20) = 1 Then
If PlayersOnMap2(MMX1, MMY1, MMX2, MMY2) >= 3 Then
Case Random(9) Of
0 : TypeSend(AddMistakes('Soo Boring..', 50));
1 : TypeSend(AddMistakes('laddeda', 50));
2 : TypeSend(AddMistakes('hello ppz', 50));
3 : TypeSend(AddMistakes('.', 50));
4 : TypeSend(AddMistakes('More cowhides', 50));
5 : If PlayersOnMap2(MMX1, MMY1, MMX2, MMY2) >= 1 Then
TypeSend(AddMistakes('Hey!', 50));
6 : TypeSend(AddMistakes('ll', 50));
7 : TypeSend(AddMistakes('ahah!', 50));
8 : TypeSend(AddMistakes('i got loads of hides', 50));
{ 9 : Begin
If PlayersOnMap2(MMX1, MMY1, MMX2, MMY2) >- 1 Then
TypeSend(AddMistakes('How Many cowhides you got?', 20));
If (Length(GetChatBoxText(8, clChat)) =< 10) Then
TypeSend(AddMistakes('kkll', 20)));
End;
End; }

5 : If Random(2) = 1 Then
SetRun(True);
End;
End;
End;

function LinearWalkX(TheColor: Integer; Direction: Integer; Radius: Integer; Xmod, Ymod: Integer): Boolean;
var
tpa: TPointArray;
i: Integer;
begin
FindNormalRandoms;
Result := False;
if LinearWalkEx(tpa, MMCX, MMCY, TheColor, 0, Direction, Radius) then
for i := 0 to High(tpa) do
if MFNF(tpa[i].x - 10, tpa[i].y, Xmod, Ymod) then
begin
Wait(6000 + Random(1000));
FFlag(10);
Result := True;
Break;
end;
end;


Function FindGate_MM : Boolean;
Var TPA : Array Of TPoint;
P : TPoint;
Begin
FindNormalRandoms;
Players[CurrentPlayer].Loc := 'Finding Gate on Minimap';
FindColorsSpiralTolerance(MMCX, MMCY, TPA, 238, MMX1, MMY1, MMX2, MMY2, 15)
TPA := FilterDropDots(TPA);
SplitTPA(TPA, 10);
FilterPointsPie(TPA, 250.0, 340.0, 0.0, 69.0, MMCX, MMCY);
P := MiddleTPA(TPA);
GateColor := GetColor(P.x, P.y);
Result := (GateColor > 0)
If Result Then
MouseFlag(P.x, P.y + 5, 2, 2, 0);
End;

Function OpenGate_Prime : Boolean;
Begin
If FindObjCustom(x, y, ['Gate'], [4808555, 3559518, 1054232, 1053975], 25) Then
MMouse(x, y, 0, 0);
Wait(200 + Random(200));
Result := IsUpText('lose');
If Result Then Exit;
If IsUpText('pen') Then
Mouse(x, y, 0, 0, True);
Wait(1000 + Random(2000));
Result := True;
End;

Function OpenGate : Boolean;
Label Cont;
Var TPA : Array Of TPoint;
ATPA : T2DPointArray;
I : Integer;
Arr : TIntegerArray;
Begin
Players[CurrentPlayer].Loc := 'Trying to Open Gate';
FindNormalRandoms;

Result := OpenGate_Prime;
If Result Then Exit;

Arr := [3425614, 3161671, 3032658];
MouseSpeed := 25;
For I := 0 To High(Arr) Do
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Arr[I], MSX1, MSY1, MSX2, MSY2, 10);
If Length(TPA) > 0 Then
Begin
ATPA := TPAtoATPAEx(TPA, 3, 5);
SortATPAFromFirstPoint(ATPA, Point(MSCX, MSCY));
For I := 0 To High(ATPA) Do
If MiddleTPAEx(ATPA[I], x, y) Then
Begin
MMouse(x, y, 0, 0);
Wait(190 + Random(10));
If IsUpText('pen') Then
Begin
MouseFlag(x, y, 0, 0, 0);
GoTo Cont;
End Else
Begin
If IsUpText('lose') Then GoTo Cont;
If Not IsUpText('lose') Or Not IsUpText('pen') Then
Result := False
Else
Begin
Cont :
Result := True;
MouseSpeed := 15;
Exit;
End;
End;
End;
End;
End;

Procedure WeStuck;
Var TPA : Array Of TPoint;
Begin
FindColorsTolerance(TPA, 1523801, MSX1, MSY1, MSX2, MSY2, 2);
If Length(TPA) > 200 Then
MouseFlag(MMCX - 50, MMCY, 10, 10, 0);

FindColorsTolerance(TPA, 5988193, MSX1, MSY1, MSX2, MSY2, 2);
If Length(TPA) > 400 Then
MouseFlag(MMCX, MMCY + 30, 10, 10, 0);

FindNormalRandoms;
End;

Function FilterFights(Var x, y : Integer) : Boolean;
Var
xx, yy : Integer;
Begin
If IsFightAt(xx, yy) Then
GetMousePos(x, y);
Result := X > 0;
End;


Function FindCow_Prime() : Boolean;
Label Lab0l;
Begin
MouseSpeed := 30;
Try
Lab0l :
Mr := FindObjRecordEx(x, y, ObjectRecord, MSX1, MSY1, MSX2, MSY2, True, True);

If IsUpText('ilk') Then Exit Else
Result := Mr;

If Not Result Then Exit Else
Wait(100 + Random(50));

If IsFightAt(x - 5, y + 8) Then Begin Result := False; Exit End;

If Not IsUpText('ow') Then GoTo Lab0l;

GetMousePos(x, y);

Except WriteLn('Could not get a DIB handle :( in FindCow_Prime!');

Finally End;
End;

Function InFight2 : Boolean; //Modded by me
Label Beginning;

Var
TPA, TPA2, TPA1 : TPointArray;
I : Integer;
Begin
Beginning :
Result := InFight;
Begin
If InFight Then Exit;

FindColorsTolerance(TPA1, 198716, MSCX - 65, MSCY - 65, MSCX + 65, MSCY + 65, 0);
FindColorsTolerance(TPA2, 10496, MSCX - 65, MSCY - 65, MSCX + 65, MSCY + 65, 0);

TPA := CombineTPA(TPA1, TPA2);
If High(TPA) = -1 Then
Exit
Else Begin
Result := True ;
Inc(I);
If I > 40 Then Exit;
End;
GoTo Beginning;
{ FindColorsTolerance(TPA2, 198716, MSCX - 70, MSCY - 70, MSCX + 70, MSCY + 70,0);
If High(Length(TPA) + Length(TPA2) - 2) > 0 Then
Begin
Box := GetTPABounds(CombineTPA(TPA, TPA2))
Arr := GetColorsBox(Box.x1, Box.y1, Box.x2, Box.y2, True);
End;
For I := 0 To High(Arr) Do
FindColorsTolerance(G, Arr[I], MSCX - 70, MSCY - 70, MSCX + 70, MSCY + 70, 0);
If High(Length(G) + Length(R) - 2) > 0 Then
Begin
G := RemovePointsInBox(G, IntToBox(233, 134, 282, 172));
R := RemovePointsInBox(R, IntToBox(233, 134, 282, 172));
End;
Result := (High(CombineTPA(G, R)) > 0); }
End;
End;

Function FindCow : Boolean;
Var TPA : Array Of TPoint;
I : Integer;
ATPA : T2DPointArray;
T : Boolean;
Begin
Players[CurrentPlayer].Loc := 'Finding Cow';
MouseSpeed := 19;
WeStuck;

If FindCow_Prime Then
Begin
Result := True;
MR := True;
MouseSpeed := 15;
Exit;
End;

For I := 0 To High(Cow) Do
Begin
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Cow[I].CowColor, MSX1, MSY1, MSX2, MSY2, 15);
If High(TPA) > -1 Then
T := True;

//WriteLn(Length(TPA));
If T = True Then
Begin
WriteLn('Finding '+Cow[I].CowType+' Cow');
Break;
End;
End;
SortATPAFromFirstPoint(ATPA, Point(MSCX, MSCY));
Result := InFight2;
If Result Then Exit;
If Length(TPA) > 0 Then
Begin
ATPA := TPAtoATPA(TPA, 30);
For I := 0 To High(ATPA) Do
If MiddleTPAEx(ATPA[I], x, y) Then
Begin
If FilterFights(x, y) Then
RemovePointsInBox(ATPA[I], IntToBox(x - 50, y - 50, x + 50, y + 50));

Result := InFight2;
If Result Then Exit;

//DebugTPA(ATPA[I], '');
//TerminateScript;
MMouse(x, y, 0, 0);

Wait(200 + Random(10));
If IsUpText('ilk') Then
Begin
InvertATPA(ATPA);
If Random(4) = 1 Then
Begin
WriteLn('TPA Finding mucking up becuase of Milk Cow');
WriteLn('Randomly Relocating');
MouseFlag(MMCX + 10, MMCY + 10, 20, 20, 0);
Result := False;
Break;
End;
MR := False;
End Else
//For I := 0 To High(Cow) Do
If IsUpText('Cow') Then
Begin
GetMousePos(x, y);
Result := True;
MR := True;
MouseSpeed := 15;
Exit;
End;
End;
MouseSpeed := 15;
End;
Result := False;
MR := False;
End;

Procedure WalkToCows;
Label gg;
Var F : Integer;
Begin
Players[CurrentPlayer].Loc := 'Walking To Cows';
GoTo GG;
GG :
If Not LinearWalkX(FindWaterColor, 20, 60, 0, 0) Then
If Not LinearWalkX(FindWaterColor, 25, 65, -2, 3) Then
N('Lost Walk [1] in WalkToCows')
Else
FFlag(0);

If Not LinearWalk(FindFallyRoadColor, 0, 69, 0, 0) Then
If Not LinearWalk(FindFallyRoadColor, 5, 66, 3, 4) Then
N('Lost Walk [2] in WalkToCows')
Else
FFlag(0);

If FindRoadColor = 0 Then
MouseFlag(MMCX, MMCY - 50, 5, 5, 0);
If Not LinearWalk(FindRoadColor, 0, 62, 0, 0) Then
If Not LinearWalk(FindRoadColor, -20, 52, 0, 0) Then
N('Lost Walk [3] in WalkToCows')
Else
FFlag(0);
Begin
If Not FindSymbolIn(x, y, 'tree', 538, 22, 643, 162) Then
Begin
If MFF(569, 93, 10, 10) Then
Wait(800 + Random(801));
If Not FlagPresent Then
N('Lost FailSafe [1] in WalkToCows')
End Else
MouseFlag(x - 10, y, 0, 0, 5);
If Not IsMoving(1000) Then
N('Lost Symbol [1] in WalkToCows - Failsafe[1]')
Else
Wait(1);
End;

FindNormalRandoms;

If Not FindGate_MM Then N('Could not find Gate in FindGate_MM') Else
Begin
If OpenGate Then
Begin
MouseFlag(MMCX, MMCY - RandomRange(15, 45), 5, 5, 0)
WriteLn('We Are at The Cow Area');
End Else
For F := 0 To High(Cow) Do
If Not Cow[F].Finder() Then
N('Could not find Gate in FindGate_MM');

Exit;
End;
Wait(1);
End;


function PixelShift(x1, y1, x2, y2, step, t: integer): integer; //Marpis
var
bmp, bmp2, x, y: integer;
begin
bmp := BitmapFromString((x2 -x1), (y2 - y1), '');
bmp2 := BitmapFromString((x2 -x1), (y2 - y1), '');
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(bmp), x1, y1, x2, y2, 0, 0, (x2 - x1), (y2 - y1));
wait(t);
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(bmp2), x1, y1, x2, y2, 0, 0, (x2 - x1), (y2 - y1));
for x := 1 to ((x2 - x1)/step) do
for y := 1 to ((y2 - y1)/step) do
if FastGetPixel(bmp2, x * step, y * step) <> FastGetPixel(bmp, x * step, y * step) then
Inc(result);
FreeBitmap(bmp);
FreeBitmap(bmp2);
end;

function m_IsMoving: boolean; //Marpis
begin
result := PixelShift(MMX1, MMY1, MMX2, MMY2, 5, 200) > 100;
end;


Function PickUpHide : Boolean;
Var TPA : TPointArray;
P : TPoint;
Begin
Players[CurrentPlayer].Loc := 'Picking Up Hides';
If FindObj(x, y, 'ake', 13619157, 20) Then
Mouse(x, y, 0, 0, False);

Wait(400 + Random(200));
Result := ChooseOption('owhide');
While FlagPresent Do Wait(100 + Random(200));

Wait(400 + Random(800));
If Result Then Exit;

X := MMCX;
Y := MMCY;
Result := FindObjTPA(X, Y, 12171971, 10, 2, 10, 10, 40, ['ake']);
If Result Then
Begin
Mouse(x, y, 0, 0, False);
Result := ChooseOption('whide');
Wait(2000 + Random(1000));
While m_IsMoving Do Wait(200 + Random(200));

Exit;
End;

FindColorsTolerance(TPA, 12171971, MSCX - 50, MSCY - 50, MSCX + 50, MSCY + 50, 8);
If Length(TPA) = 0 Then FindColorsSpiralTolerance(MSCX, MSCY, TPA, 12171971, MSCX - 150, MSCY - 150, MSCX + 150, MSCY + 150, 11);
If Length(TPA) > 0 Then
Begin
SplitTPAEx(TPA, 10, 10);
P := MiddleTPA(TPA);
MMouse(P.x, P.y, 0, 0);
Wait(200 + Random(200));
If IsUpText('ake') Then
Mouse(P.x, P.y, 0, 0, False);
Result := ChooseOption('whide');
Wait(2000 + Random(1500));
End;
FindNormalRandoms;
End;

Procedure GetCowHides;
Label Lol, Lolx, Loly;
Var TPA : TPointArray;
IMark, I : Integer;
Begin
Players[CurrentPlayer].Loc := 'Killing Cows';
Repeat
FindNormalRandoms;
Lol :
For I := 0 To High(Cow) Do
Begin
If Not Cow[I].Finder() Then Break;
Begin
Case Random(3) Of
0, 2 : Mouse(x, y, 0, 0, True);
1 : Begin
Mouse(x, y, 0, 0, False);
Wait(100 + Random(100));
ChooseOption('tack');
End;
End;
Break;
End;
End;
Wait(800 + Random(800));
MouseSpeed := 17;
While m_IsMoving Do Wait(1300 + Random(800));

MarkTime(IMark);

If Not MR Then
For I := 0 To High(Cow) Do
Begin
If Cow[I].Finder() Then
Begin
Mouse(x, y, 1, 1, True)
Wait(100 + Random(300));
Break;
End Else
Break;
End;

If Not MR Then GoTo Loly;

I := 0;
While Not InFight2 or (I >= 30) = False Do
Begin
Wait(100 + Random(90));
Inc(I);
End;

If InFight2 Then
GoTo Lolx
Else
GoTo Loly;

If Not MR Then
Begin
Begin
Loly :
If FindObj(x, y, 'acks', 1143694, 15) Then
MouseFlag(MMCX - 20, MMCY + 17, 5, 5, 0)
Else
If FindColorsTolerance(TPA, 62965, MMX1, MMY1, MMX2, MMY2, 3) Then
Begin
TPA := RemovePointsInBox(TPA, IntToBox(665, 8, 709, 166));
For I := 0 to High(TPA) Do
If PointInBox(TPA[I], IntToBox(MMCX - (I*5), MMCY - (I*5), MMCX + (I*5), MMCY + (I*5))) Then
Begin
MouseFlag(TPA[I].x, TPA[I].y, 3, 3, 0);
FindNormalRandoms;
Break;
End;
End;
End;
GoTo Lol;
End;

Lolx :
Begin
If InvFull Then Exit;
Repeat
Wait(500 + Random(300));
AntiBan;
Until(Not (InFight2)) xOr (TimeFromMark(IMark) > 18000 + Random(2000));
If PickUpHide Then
Inc(Hides);
End;
XpGained := Round(XpGained + 4.375);

If InvFull Then Exit;
Until(InvFull) xOr (Not(LoggedIn));
If Not LoggedIn Then N('Not Logged In..');
End;

Function FindBankers() : Boolean;
Var TPA : TPointArray;
ATPA : T2DPointArray;
TB : TBoxArray;
II : Integer;

Begin
Players[CurrentPlayer].Loc := 'Finding Bankers on Minimap';
FindNormalRandoms;
Begin
FindColorsTolerance(TPA, (iAbs(ClBlue - ClWhite)+1), MMX1, MMY1, MMX2, MMY2, 1);
ATPA := TPAToATPA(TPA, 20);
If High(ATPA) = -1 Then Exit Else
SetArrayLength(TB, High(ATPA));
For II := 0 To High(TB) Do
Begin
TB[II] := GetTPABounds(ATPA[II]);

If CountColorTolerance(124132, TB[II].x1, TB[II].y1, TB[II].x2, TB[II].y2, 34) >= 20 Then
Mouse(TB[II].x1, TB[II].y1 + 4, 4, 4, True)
Else
Continue;
End;
Wait(1600 + Random(400));
Result := FlagPresent;
If Result Then
Begin
WriteLn('Found Bankers on MiniMap!');
FFlag(0);
Exit;
End Else
If FindSymbol(x, y, 'bank') Then
Begin
WriteLn('Trying Failsafe [1]');
Mouse(x, y, 0, 0, True)
Result := True;//m_IsMoving;
FFlag(0);
End Else
N('Could not enter bank in FindBankers');
End;
End;

Function OpenFallyBank : Boolean;
Var TPA : TPointArray;
P : TPoint;
I : Integer;
ATPA : T2DPointArray;
Begin
Players[CurrentPlayer].Loc := 'Opening Falador Bank';
FindColorsSpiralTolerance(MMCX, MMCY, TPA, 2701894, 1, 1, 518, 224, 15);
Begin
SplitTPAEx(TPA, 4, 5); //Ultra Filteration
RAaSTPA(TPA, 40);
ATPA := SplitTPA(TPA, 20);
End;

If Length(ATPA) > 0 Then
For I := 6 To High(ATPA) Do //Skip the few points for faster finding
Begin
P := MiddleTPA(ATPA[I]);

MMouse(P.x, P.y, 0, 0);

Wait(400 + Random(100));

If IsUpText('ooth') Then
Begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, False);
Wait(80 + Random(80));
If ChooseOption('uickly') Then
Wait(RandomRange(2001, 4001));

Result := BankScreen Or PinScreen;
If Result Then Break;
End Else

Continue;
End;
If Result Then WriteLn('BankScreen!');
End;


Procedure Bank;
Label Ben, Start;
Var TPA, TPA2 : TPointArray;
ATPA : Array Of Array Of TPoint;
Box : TBox;
Begin
GoTo Start;
Start :
Players[CurrentPlayer].Loc := 'Bank';
FindNormalRandoms;
Ben :
FindColorsTolerance(TPA, 238, MMCX - 80, MMCY, 731, 165, 15);
Begin
//SortCircleWise(TPA, MMCX, MMCY, 10, False, False);
TPA := FilterDropDots(TPA);
FilterPointsPie(TPA, -90.7, 90.2, 10.0, 75.1, MMCX, MMCY);
ATPA := TPAToATPAEx(TPA, 3, 1);
{}InvertATPA(ATPA);{} //TPA's Bloody Awesome!
If Length(ATPA) > 0 Then
If MiddleTPAEx(ATPA[0], x, y) Then
Mouse(x - 3, y - 5, 5, 5, True);

While m_IsMoving Do Wait(800 + Random(800));

FindSymbols(TPA2, 'tree')
If Not Length(TPA2) = 2 Then
Begin
Mouse(560, 92, 10, 10, True);
FFlag(0);
GoTo Ben;
End;
End;

If Not OpenGate Then N('Couldnt Open Gate in Bank');
If Not FindSymbolIn(x, y, 'tree', 627, 1, 714, 169) Then
N('Lost Walk [1] in Bank')
Else
Begin
Mouse(x, y - 10, 2, 2, True);
Wait(5000 + Random(3000));
FFlag(0);
End;
FindNormalRandoms;
Begin
If FindColorsTolerance(TPA, FindFallyRoadColor, MMX1, MMY1, MMX2, MMY2, 0) Then
Begin
RAaSTPA(TPA, 90); //Points Clashed, so I went for higher density
Box := GetTPABounds(TPA);
MouseBox(Box.x1 + (7 + Random(3)), Box.y1 + (7 - Random(3)), Box.x2 - 2, Box.y2 - 3, 1);
End Else
If Not LinearWalk(FindFallyRoadColor, 130, 70, -2, 3) Then
N('Lost Walk [2] in Bank')
Else
FFlag(0);

Begin
If Not CountColor(FindWaterColor, MMX1, MMY1, MMX2, MMY2) > 10 Then
N('Lost in Bank')
Else
Begin
If Not LinearWalk(FindFallyRoadColor, 160, 70, 0, 0) Then
If Not LinearWalk(FindWaterColor, 165, 72, 0, 0) Then
N('Lost Walk [3] in Bank')
Else
FFlag(0);

If Not LinearWalk(FindFallyRoadColor, 180, 73, 0, 0) Then
If Not LinearWalk(FindFallyRoadColor, 176, 72, 0, 0) Then
N('Lost Walk [4] in Bank')
Else
FFlag(0);

If Not LinearWalk(FindFallyRoadColor, 180, 53, 0, 0) Then
If Not LinearWalk(FindFallyRoadColor, 176, 50, 0, 0) Then
N('Lost Walk [5] in Bank')
Else
Begin
Wait(3000 + Random(4000));
FFlag(0);
End;
FindNormalRandoms;

If Not FindBankers Then
N('Lost In Finding, in FindBankers')
Else
If OpenFallyBank Then
Begin
If PinScreen Then
InPin(Players[CurrentPlayer].Pin);
Wait(500 + Random(500));
If BankScreen Then
DepositAll();
If CloseBank Then
Begin
Inc(Banked);
Inc(Players[CurrentPlayer].Integers[77]);
End;
End;
End;
End;
FindNormalRandoms;
End;
End;

Procedure ProgressReport(Loc : String);
Var I, Space, Xpl : Integer;
Begin
Xpl := Trunc((3600000 / GetTimeRunning) + 1);
SRLRandomsReport;

If Length(TimeRunning) > 30 Then
Space := 60
Else
Space := 50;

Begin
WriteLn('');
WriteLn(Padr('(|'+Replicate('>', Space - 2), Space) + '|)');
WriteLn(Padr('(| Cow Killer + Hide Banker ', Space) + '|)');
WriteLn(Padr('(| Version '+Ver+' ', Space) + '|)');
WriteLn(Padr('(| By NaumanAkhlaQ ', Space) + '|)');
WriteLn(Padr('(| Used '+IntToStr(CurrentPlayer)+' Out Of '+IntToStr(HowManyPlayers)+' !', Space) + '|)');
WriteLn(Padr('(|'+Replicate('-', Space - 2), Space) + '|)');
WriteLn(Padr('(| ~> Worked For : '+TimeRunning+'.', Space) + '|)');
WriteLn(Padr('(| -> Location = '+Loc+'.', Space) + '|)');
WriteLn(Padr('(|'+Replicate('>', Space - 2), Space) + '|)');
WriteLn(Padr('(| > Hides Collected - '+IntToStr(Hides)+'.', Space) + '|)');
WriteLn(Padr('(| > Banked - '+IntToStr(Banked)+'.', Space) + '|)');
WriteLn(Padr('(| > XpGained - '+FloatToStr(XpGained)+'.', Space) + '|)');
WriteLn(Padr('(| > Hides Per Hour (HPH) - '+FloatToStr(Xpl * Hides)+'.', Space) + '|)');
WriteLn(Padr('(|'+Replicate('<', Space - 2), Space) + '|)');
WriteLn(Padr('(|Written On '+TheTime+' '+TheDate(3)+' !', Space) + '|)');
WriteLn(Padr('(|'+Replicate('<', Space - 2), Space) + '|)');
WriteLn(Padr('(| Player Information :', Space) + '|)');
For I := 0 To High(Players) Do
Begin
WriteLn('+++++++++++++');
WriteLn(' Player['+IntToStr(I)+']');
WriteLn('[-} '+ Players[I].Name +' /\ Collected '+IntToStr(Players[I].integers[88])+' Hides! /\ Banked ' +IntToStr(Players[I].integers[77])+' Loads!');
WriteLn('[-} Gained '+IntToStr(XpGained)+' Fighting Xp! /\ '+ Players[I].Name +#39 +'s Active Is '+BoolToStr(Players[I].Active)+' !');
If Players[CurrentPlayer].Loc =
'' Then
WriteLn('[-} '+Players[I].Name +#39+'s Location is ''Not Yet Used'' !')
Else
WriteLn('[-} '+Players[I].Name +#39+'s Location is '+Players[I].Loc+' !');
WriteLn('+++++++++++++');
End;
End;
End;

Procedure CheckRun;
Var Energy : Byte;
S : String;
Begin
Players[CurrentPlayer].Loc := 'Checking Run Status';
Try
If Random(2) = 1 Then Begin
If Low1 In Options Then Energy := 20 + Random(10);
End Else
If Medium In Options Then Energy := 40 + Random(10);
Except
WriteLn('Error In TInt, RandOff');
Finally
If GetMMLevels('run', S) >= Energy Then
SetRun(True);
End;
End;

Procedure ScriptTerminate;
Begin
ProgressReport(Players[CurrentPlayer].Loc);
End;

Procedure Checks;
Var S : String;
Begin
If Random(2) = 1 Then CheckRun;
Status(Players[CurrentPlayer].Loc);
If IsFKeyDown(2) Then ProgressReport(Players[CurrentPlayer].Loc);
If IsFKeyDown(5) Then
Begin
GetApplication.BringToFront;
S := ReadLn('What Do you want to say?');
GetApplication.Minimize;
Mouse(111, 462, 100, 5, True);
TypeSend(AddMistakes(S, 30));
End;
If IsFKeyDown(4) Then
Begin
While InFight2 Do Wait(300 + Random(900));
NextPlayer(False);
End;
End;

Function Setup : Variant;
Begin
Options := [Low1, Medium];
ActivateClient;
SymbolAccuracy := 0.45;
SetUpRecords;
SRL_Procs[srl_OnRandomCall] := @Checks;
SRL_Procs[srl_AntiBan] := @Checks;
{-------------------------------}
{$IFDEF SMART}
WriteLn('SMART IS LOADING -');
SmartSetupEx(WorldNumber, False, True, False);
SetTargetDc(SMARTGetDC);
While SmartGetColor(253, 233) <> 1118604 Do
Wait(10);

If SmartReady Then
WriteLn('Loaded');
{$ENDIF}
{-------------------------------}

Wait((900 xOr 90) + Random(200));
If Not LoggedIn Then LoginPlayer;
SetRun(True);
Result := 50 Xor 60;
End;

Var BK : Integer;
BackGround : TImage;
FrmDesign : TForm;
X2, Y2 : Integer;
StartPos, StartMousePos : TPoint;
AreMoving : boolean;
Memo1 : TMemo;
Button2 : TButton;
Button3 : TButton;
Button4 : TButton;
Button5 : TButton;
CB : TCheckBox;

//Const Ver = '0.1';

//Get Pos = Image Moving Functions Aided by mastaRaymond :)
Procedure GetPos(Sender1: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin
GetMousePos(X2, Y2);
StartPos := Point(frmDesign.left,frmDesign.top);
StartMousePos := Point(x2,y2);
Aremoving := True;
End;

Procedure CheckVersion;
Var S : String;
Var T : Integer;
Begin
Memo1.Lines.Add('');
MarkTime(T);
Memo1.Lines.Add('<<<< Version Checker Activated! >>>>');
Try
S := GetPage('http://cowkiller.freehostia.com/New%20Text%20Document%20(2).txt');
Except
end;
If S = Ver Then
Memo1.Lines.Add('Your version is up to date :)')
Else
Begin
Memo1.Lines.Add('Your version is NOT up to date :(');
Memo1.Lines.Add('Your Version Is '+Ver+', The Newest Version Is '+S);
End;
End;


Procedure DrawCow;
Begin
Memo1.Lines.Add('');
Memo1.Lines.Add('Thank-you for using this script :)');
Wait(800);
End;

Procedure Click(SenderSS : TObject);
Var F : Integer;
Begin
Case SenderSS Of
Button2 : Begin
DrawCow;
For F := 240 DownTo 10 Do
Begin
MakeWindowTransparent(FrmDesign.Handle, F);
Wait(2);
End;
StartScript := True;
FrmDesign.ModalResult := mrOk;
End;

Button3 : Begin
Memo1.Lines.Add('');
Memo1.Lines.Add('<<<< Player Form Activated! >>>>');
SRLPlayerForm(True, ['Use percision running'], ['Loads To Bank?'], [], []);
if(srlpf_TerminateWhenDone)then
TerminateScript;
End;

Button4 : Try CheckVersion Except Memo1.Lines.Add('< Could Not CheckVersion - Connection Error! >') end;

CB : Begin
If Not CB.Checked Then
Begin
Memo1.ReadOnly := False
Memo1.Color := 10666964;
End Else
Begin
Memo1.ReadOnly := True;
Memo1.Color := 4479587;
End;
End;

//Button5 :
End;
End;

Procedure GetPosX(Sender2: TObject; Shift: TShiftState; X, Y: Integer);

Begin
if AreMoving then
begin
GetMousePos(X2, Y2);
FrmDesign.Left := StartPos.x + (x2-StartMousePos.x);
FrmDesign.Top := StartPos.y + (y2-StartMousePos.y);
end;
{ BackGround.Left := Fx[2];
BackGround.Top := Fy[2];}
End;

Procedure GetPosY(Sender3: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin
GetMousePos(X2,y2);
FrmDesign.Left := StartPos.x + (x2-StartMousePos.x);
FrmDesign.Top := StartPos.y + (y2-StartMousePos.y);
AreMoving := False;
{ BackGround.Left := Fx[2];
BackGround.Top := Fy[2];}
End;


Procedure IsClose(Sender4: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Begin
GetMousePos(X2, Y2);
End;

Procedure IsClose2(Sender5: TObject; Shift: TShiftState; X, Y: Integer);
Begin
GetMousePos(X2, Y2);
End;

Procedure Close(Sender5: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Begin
GetMousePos(X, Y);
//If (X = X2) And (Y = Y2) Then
FrmDesign.Close;
WriteLn('User called = Form End [0.01]');
StartScript := False;
End;


Procedure Form;
Var BK2 : TImage;
Begin
ClearDebug;
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 195;
frmDesign.Width := 462;
frmDesign.BorderIcons := [];
frmDesign.BorderStyle := bsNone;
frmDesign.Height := 399;
frmDesign.Caption := ' NAQ'#39's - Cow Killer + Hide Banker Xtreme!';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'Arial';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
frmDesign.Position := poMainFormCenter;

CB := TCheckBox.Create(frmDesign);
CB.Parent := frmDesign;
CB.Left := 22;
CB.Top := 378;
CB.Caption := 'Read Only?';
CB.Width := 150;
CB.Height := 15;
CB.TabOrder := 18;
CB.ShowHint := True;
CB.Hint := 'Click this to make the form memo box Read - Only!';
CB.OnClick := @Click;

Background := TImage.Create(frmDesign);
Background.Parent := frmDesign;
Background.SetBounds(0, 0, 462, 399);
BackGround.OnMouseDown := @GetPos;
BackGround.OnMouseMove := @GetPosX;
BackGround.OnMouseUp := @GetPosY;
Try
BK := LoadBitmap(ScriptPath+'my back(1).bmp');
Except end;
SafeCopyCanvas(GetBitmapCanvas(BK), Background.Canvas, 0, 0, 462, 399, 0, 0, 462, 399);
FreeBitmap(BK);

BK2 := TImage.Create(frmDesign);
BK2.Parent := frmDesign;
BK2.SetBounds(429, 6, 28, 27);
BK2.OnMouseDown := @IsClose;
BK2.OnMouseUp := @Close;
BK2.ShowHint := True;
BK2.Hint := 'Click This X To Close The Scipt :(';
SafeDrawBitmap(W, BK2.Canvas, (MSCX Xor MSCY - (85 * 5)), 0 mod 2);
FreeBitmap(W);

Memo1 := TMemo.Create(frmDesign);
Memo1.Parent := frmDesign;
Memo1.Left := 22;
Memo1.Top := 144;
Memo1.Width := 300;
Memo1.Color := 10666964;
Memo1.WordWrap := True;
Memo1.Height := 233;
Memo1.ScrollBars := ssBoth;
Memo1.Lines.Add('Welcome to Fally Cow Hider Xtreme - Setup Form');
Memo1.Lines.Add('Please Select an Operation to Perform!!!');
Memo1.Lines.Add('');
Memo1.Lines.Add('Current Version you are using is '+Ver);
Memo1.Lines.Add(Replicate('>', 40));
Memo1.TabOrder := 8;
Memo1.ShowHint := True;
Memo1.Hint := 'Info is Displayed Here!';
Memo1.ReadOnly := False;
Memo1.Enabled := True;

Button2 := TButton.Create(frmDesign);
Button2.Parent := frmDesign;
Button2.Left := 340;
Button2.ShowHint := True;
Button2.Hint := 'Press This To Start The Script * '+UpperCase('Make Sure you Have Filled In Your Player Information First :) *');
Button2.Top := 296;
Button2.Width := 105;
Button2.Font.Name := 'Comic Sans MS';
Button2.Font.Size := -17;
Button2.Height := 43;
Button2.Caption := 'Start Script';
Button2.TabOrder := 0;
Button2.OnClick := @Click;

Button3 := TButton.Create(frmDesign);
Button3.Parent := frmDesign;
Button3.Left := 340;
Button3.ShowHint := True;
Button3.Hint := 'Setup all your player details here :)';
Button3.Top := 144;
Button3.Width := 105;
Button3.Height := 33;
Button3.Caption := 'Setup Players';
Button3.TabOrder := 10;
Button3.OnClick := @Click;

Button4 := TButton.Create(frmDesign);
Button4.Parent := frmDesign;
Button4.Left := 340;
Button4.ShowHint := True;
Button4.Hint := 'This will connect to my webiste for updates (Lags for approx. 3 seconds)';
Button4.Top := 192;
Button4.Width := 105;
Button4.Height := 33;
Button4.Caption := 'Check for Updates';
Button4.TabOrder := 11;
Button4.OnClick := @Click;

Button5 := TButton.Create(frmDesign);
Button5.Parent := frmDesign;
Button5.Left := 340;
Button5.ShowHint := True;
Button5.Hint := 'Will connect to my site to get the latest progress report';
Button5.Top := 240;
Button5.Width := 105;
Button5.Height := 33;
Button5.Caption := 'Get Latest Proggie';
Button5.TabOrder := 12;
Button5.OnClick := @Click;

frmDesign.ShowModal;
End;

procedure SafeInitForm;
var
V : TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('Form', v);
end;

procedure ShowFormModal;
begin
ClearDebug;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
V := [];
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;

Procedure FormShow;
Begin
SafeInitForm;
SafeShowFormModal;
End;

Procedure DoSig;
Begin
ChangeReportWidth(260);
WriteLn(' ______ ______ ');
Wait(50);
WriteLn('| ___ \ / _____) ');
Wait(50);
WriteLn('| | | | ____ _ _ ____ ____ ____ _____ | / ___ _ _ _ ');
Wait(50);
WriteLn('| | | |/ _ | | | | \ / _ | _ \(___ ) | | / _ \| | | | ');
Wait(50);
WriteLn('| | | ( ( | | |_| | | | ( ( | | | | |/ __/ | \____| |_| | | | | ');
Wait(50);
WriteLn('|_| |_|\_||_|\____|_|_|_|\_||_|_| |_(_____) \______)___/ \____| ');
Wait(50);
WriteLn(' ');
Wait(500);
WriteLn(' _ _ _ _ _ _ ');
Wait(50);
WriteLn('| | / |_) | | | | ');
Wait(50);
WriteLn('| | / / _| | | ____ ____ ____ ____ _ | | ');
Wait(50);
WriteLn('| |< < | | | |/ _ )/ ___) / _ | _ \ / || | ');
Wait(50);
WriteLn('| | \ \| | | ( (/ /| | ( ( | | | | ( (_| | ');
Wait(50);
WriteLn('|_| \_)_|_|_|\____)_| \_||_|_| |_|\____| ');
Wait(50);
WriteLn(' ');
Wait(500);
WriteLn(' _ _ _ _ _ _ ');
Wait(50);
WriteLn('| | | (_) | | \ \ / / ');
Wait(50);
WriteLn('| |__ | |_ _ | | ____ ____ __\ \/ / |_ ____ ____ ____ ____ ');
Wait(50);
WriteLn('| __)| | |/ || |/ _ )/ ___) (___) (| _) / ___) _ ) \ / _ )');
Wait(50);
WriteLn('| | | | ( (_| ( (/ /| | / /\ \ |__| | ( (/ /| | | ( (/ / ');
Wait(50);
WriteLn('|_| |_|_|\____|\____)_| /_/ \_\___)_| \____)_|_|_|\____)');
Wait(900);
WriteLn('');
End;


Procedure MainLoop;
Begin
FormShow;
SRLPlayerForm(False, [], ['Loads To Bank?'], [], []);
Begin
FreeForm(FrmDesign);
ClearDebug;
If StartScript = False Then TerminateScript Else
Wait(1);

SetupSRL;

If Setup * 1 > 0 Then WriteLn('[Setup] Status - Completed!');
{{$IFDEF SMART} {
SetTargetDC(SMARTGetDC);
{$ENDIF} {
Wait(1);}
Repeat
Repeat
SetAngle(True);
MakeCompass('S');
WalkToCows;
GetCowHides;
Bank;
ProgressReport(Players[CurrentPlayer].Loc);
Until(Banked >= Players[CurrentPlayer].Integers[0]) xOr (Not (LoggedIn));

If Not LoggedIn Then NextPlayer(False) Else
Begin
LogOut;
NextPlayer(True);
End;
ProgressReport(Players[CurrentPlayer].Loc);
Until(AllPlayersInactive);

If AllPlayersInactive Then ProgressReport(Players[CurrentPlayer].Loc);
End;
End;

Begin
{$IfDef SRL_SMART}
Smart_Server := WorldNumber;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ENDIF}
DoSig;
W := BitmapFromString(28, 27, 'beNqt1HtQkukewPFXQUFAEJAw75f' +
'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' +
'THd/X/MnwDv/nCv');

MainLoop;
WriteLn('Thanks for using - Please Post your proggie :-)!');

Wait(1);
{---}
End.

..On topic: This looks really, really good. This has a day and night difference from the first one you made. Rep+

BobboHobbo

2010-01-02 03:00:11

From: Naum
Heh.., a script I made a year ago lol.



Program CowHider_BankerXtreme;
(* Un-comment Smart.scar to use SMART*)
{.include SRL/SRL/Misc/SMART.scar}
{.Include Srl/Srl.Scar}
{.Include Srl/Srl/Misc/Users.Scar}
{.Include Srl/Srl/Misc/DoorProfiles.Scar}
{.Include Srl/Srl/Skill/Fighting.Scar}

Type
TCow = Record
CowType, UpText : String;
CowColor : LongInt;
Tolerance : ShortInt;
Finder : Function() : Boolean; //Pointer.
End;

Type
TInt = (Low1, Medium, High); //Different Run types :)
RandOff = Set Of TInt;

//Type Not needed atm.
// TCol = TColor;
{--------------}
Const WorldNumber = 81; //Change to change the world used in SMART.
{------}

Var Cow : Array [0..3] Of TCow;
Options : RandOff;

Var X, Y, GateColor, XpGained, HideDTM : Integer;
ObjectRecord: TAutoColorInfo;
Hides, Banked, W : Integer;
MR, StartScript : Boolean;

Const Ver = '0.1 pub';

Function FindCow() : Boolean; Forward;

Procedure SetUpRecords;
Begin
With Cow[0] Do
Begin
CowType := 'Brown';
CowColor := 8953263;
Tolerance := 14;
UpText := 'Cow';
Finder := @FindCow;
End;

With Cow[1] Do
Begin
CowType := 'Brown, White';
CowColor := 12172994;
Tolerance := 13;
UpText := 'Cow';
Finder := @FindCow;
End;

With Cow[2] Do
Begin
CowType := 'Black, White';
CowColor := 3952728;
Tolerance := 15;
UpText := 'Cow';
Finder := @FindCow;
End;

With Cow[3] Do
Begin
CowType := 'Black';
CowColor := 5791854;
Tolerance := 11;
UpText := 'Cow';
Finder := @FindCow;
End;

with ObjectRecord do
begin
UpText := 'Cow';
MaxDist := 30;
Color := 8953263;
HueMod := 0.09;
SatMod := 1.00;
LumTol := 14;
MinR := 120; MaxR := 214;
MinG := 116; MaxG := 197;
MinB := 107; MaxB := 191;
MinX := 17.15; MaxX := 54.27;
MinY := 17.94; MaxY := 56.47;
MinZ := 17.66; MaxZ := 56.47;
end;
Begin
HideDTM := DTMFromString('78DA63546366606866644006DB56AF06D3305' +
'14605A09A2A54353059B81A03A09A1A026AF4816AFA09A89102AA' +
'E921A04619A866127E350085F6063E');
Wait(HideDTM + Random(200));
End;
End;

Procedure N(Term : String);
Begin
WriteLn(Term);
If LoggedIn Then LogOut;
NextPlayer(False);
End;

function PlayersOnMap2(xx1, yy1, xx2, yy2 : integer) : integer; //FBjds!
var
playerses : TPointArray;
begin
FindColorsTolerance(playerses, 16711422, xx1, yy1, xx2, yy2, 19);
RAaSTPA(playerses, 4);
Result := getArrayLength(playerses) - 1;
end;

Procedure AntiBan;
Var I : Byte;
Begin
FindNormalRandoms;
Case Random(25) Of
0 : Begin
GameTab(1 + Random(11));
Wait(200 + Random(400));
If Random(2) = 1 Then
Begin
GameTab(1 + Random(11));
Wait(200 + Random(400));
End Else
GameTab(4 + Random(3));
End;

1, 21..24 : SleepAndMoveMouse(1000 + Random(200));

2 : PickUpMouse;

3 : for i := 1 to (3 + Random(4)) do //From BoredHuman;
begin
MMouse(Random(MSX2), Random(MSY2), 0, 0);
if IsUpText('opti') then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, False);
ChooseOption('Examine');
end;
FindNormalRandoms;
end;

4 : If Random(20) = 1 Then
If PlayersOnMap2(MMX1, MMY1, MMX2, MMY2) >= 3 Then
Case Random(9) Of
0 : TypeSend(AddMistakes('Soo Boring..', 50));
1 : TypeSend(AddMistakes('laddeda', 50));
2 : TypeSend(AddMistakes('hello ppz', 50));
3 : TypeSend(AddMistakes('.', 50));
4 : TypeSend(AddMistakes('More cowhides', 50));
5 : If PlayersOnMap2(MMX1, MMY1, MMX2, MMY2) >= 1 Then
TypeSend(AddMistakes('Hey!', 50));
6 : TypeSend(AddMistakes('ll', 50));
7 : TypeSend(AddMistakes('ahah!', 50));
8 : TypeSend(AddMistakes('i got loads of hides', 50));
{ 9 : Begin
If PlayersOnMap2(MMX1, MMY1, MMX2, MMY2) >- 1 Then
TypeSend(AddMistakes('How Many cowhides you got?', 20));
If (Length(GetChatBoxText(8, clChat)) =< 10) Then
TypeSend(AddMistakes('kkll', 20)));
End;
End; }

5 : If Random(2) = 1 Then
SetRun(True);
End;
End;
End;

function LinearWalkX(TheColor: Integer; Direction: Integer; Radius: Integer; Xmod, Ymod: Integer): Boolean;
var
tpa: TPointArray;
i: Integer;
begin
FindNormalRandoms;
Result := False;
if LinearWalkEx(tpa, MMCX, MMCY, TheColor, 0, Direction, Radius) then
for i := 0 to High(tpa) do
if MFNF(tpa[i].x - 10, tpa[i].y, Xmod, Ymod) then
begin
Wait(6000 + Random(1000));
FFlag(10);
Result := True;
Break;
end;
end;


Function FindGate_MM : Boolean;
Var TPA : Array Of TPoint;
P : TPoint;
Begin
FindNormalRandoms;
Players[CurrentPlayer].Loc := 'Finding Gate on Minimap';
FindColorsSpiralTolerance(MMCX, MMCY, TPA, 238, MMX1, MMY1, MMX2, MMY2, 15)
TPA := FilterDropDots(TPA);
SplitTPA(TPA, 10);
FilterPointsPie(TPA, 250.0, 340.0, 0.0, 69.0, MMCX, MMCY);
P := MiddleTPA(TPA);
GateColor := GetColor(P.x, P.y);
Result := (GateColor > 0)
If Result Then
MouseFlag(P.x, P.y + 5, 2, 2, 0);
End;

Function OpenGate_Prime : Boolean;
Begin
If FindObjCustom(x, y, ['Gate'], [4808555, 3559518, 1054232, 1053975], 25) Then
MMouse(x, y, 0, 0);
Wait(200 + Random(200));
Result := IsUpText('lose');
If Result Then Exit;
If IsUpText('pen') Then
Mouse(x, y, 0, 0, True);
Wait(1000 + Random(2000));
Result := True;
End;

Function OpenGate : Boolean;
Label Cont;
Var TPA : Array Of TPoint;
ATPA : T2DPointArray;
I : Integer;
Arr : TIntegerArray;
Begin
Players[CurrentPlayer].Loc := 'Trying to Open Gate';
FindNormalRandoms;

Result := OpenGate_Prime;
If Result Then Exit;

Arr := [3425614, 3161671, 3032658];
MouseSpeed := 25;
For I := 0 To High(Arr) Do
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Arr[I], MSX1, MSY1, MSX2, MSY2, 10);
If Length(TPA) > 0 Then
Begin
ATPA := TPAtoATPAEx(TPA, 3, 5);
SortATPAFromFirstPoint(ATPA, Point(MSCX, MSCY));
For I := 0 To High(ATPA) Do
If MiddleTPAEx(ATPA[I], x, y) Then
Begin
MMouse(x, y, 0, 0);
Wait(190 + Random(10));
If IsUpText('pen') Then
Begin
MouseFlag(x, y, 0, 0, 0);
GoTo Cont;
End Else
Begin
If IsUpText('lose') Then GoTo Cont;
If Not IsUpText('lose') Or Not IsUpText('pen') Then
Result := False
Else
Begin
Cont :
Result := True;
MouseSpeed := 15;
Exit;
End;
End;
End;
End;
End;

Procedure WeStuck;
Var TPA : Array Of TPoint;
Begin
FindColorsTolerance(TPA, 1523801, MSX1, MSY1, MSX2, MSY2, 2);
If Length(TPA) > 200 Then
MouseFlag(MMCX - 50, MMCY, 10, 10, 0);

FindColorsTolerance(TPA, 5988193, MSX1, MSY1, MSX2, MSY2, 2);
If Length(TPA) > 400 Then
MouseFlag(MMCX, MMCY + 30, 10, 10, 0);

FindNormalRandoms;
End;

Function FilterFights(Var x, y : Integer) : Boolean;
Var
xx, yy : Integer;
Begin
If IsFightAt(xx, yy) Then
GetMousePos(x, y);
Result := X > 0;
End;


Function FindCow_Prime() : Boolean;
Label Lab0l;
Begin
MouseSpeed := 30;
Try
Lab0l :
Mr := FindObjRecordEx(x, y, ObjectRecord, MSX1, MSY1, MSX2, MSY2, True, True);

If IsUpText('ilk') Then Exit Else
Result := Mr;

If Not Result Then Exit Else
Wait(100 + Random(50));

If IsFightAt(x - 5, y + 8) Then Begin Result := False; Exit End;

If Not IsUpText('ow') Then GoTo Lab0l;

GetMousePos(x, y);

Except WriteLn('Could not get a DIB handle :( in FindCow_Prime!');

Finally End;
End;

Function InFight2 : Boolean; //Modded by me
Label Beginning;

Var
TPA, TPA2, TPA1 : TPointArray;
I : Integer;
Begin
Beginning :
Result := InFight;
Begin
If InFight Then Exit;

FindColorsTolerance(TPA1, 198716, MSCX - 65, MSCY - 65, MSCX + 65, MSCY + 65, 0);
FindColorsTolerance(TPA2, 10496, MSCX - 65, MSCY - 65, MSCX + 65, MSCY + 65, 0);

TPA := CombineTPA(TPA1, TPA2);
If High(TPA) = -1 Then
Exit
Else Begin
Result := True ;
Inc(I);
If I > 40 Then Exit;
End;
GoTo Beginning;
{ FindColorsTolerance(TPA2, 198716, MSCX - 70, MSCY - 70, MSCX + 70, MSCY + 70,0);
If High(Length(TPA) + Length(TPA2) - 2) > 0 Then
Begin
Box := GetTPABounds(CombineTPA(TPA, TPA2))
Arr := GetColorsBox(Box.x1, Box.y1, Box.x2, Box.y2, True);
End;
For I := 0 To High(Arr) Do
FindColorsTolerance(G, Arr[I], MSCX - 70, MSCY - 70, MSCX + 70, MSCY + 70, 0);
If High(Length(G) + Length(R) - 2) > 0 Then
Begin
G := RemovePointsInBox(G, IntToBox(233, 134, 282, 172));
R := RemovePointsInBox(R, IntToBox(233, 134, 282, 172));
End;
Result := (High(CombineTPA(G, R)) > 0); }
End;
End;

Function FindCow : Boolean;
Var TPA : Array Of TPoint;
I : Integer;
ATPA : T2DPointArray;
T : Boolean;
Begin
Players[CurrentPlayer].Loc := 'Finding Cow';
MouseSpeed := 19;
WeStuck;

If FindCow_Prime Then
Begin
Result := True;
MR := True;
MouseSpeed := 15;
Exit;
End;

For I := 0 To High(Cow) Do
Begin
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Cow[I].CowColor, MSX1, MSY1, MSX2, MSY2, 15);
If High(TPA) > -1 Then
T := True;

//WriteLn(Length(TPA));
If T = True Then
Begin
WriteLn('Finding '+Cow[I].CowType+' Cow');
Break;
End;
End;
SortATPAFromFirstPoint(ATPA, Point(MSCX, MSCY));
Result := InFight2;
If Result Then Exit;
If Length(TPA) > 0 Then
Begin
ATPA := TPAtoATPA(TPA, 30);
For I := 0 To High(ATPA) Do
If MiddleTPAEx(ATPA[I], x, y) Then
Begin
If FilterFights(x, y) Then
RemovePointsInBox(ATPA[I], IntToBox(x - 50, y - 50, x + 50, y + 50));

Result := InFight2;
If Result Then Exit;

//DebugTPA(ATPA[I], '');
//TerminateScript;
MMouse(x, y, 0, 0);

Wait(200 + Random(10));
If IsUpText('ilk') Then
Begin
InvertATPA(ATPA);
If Random(4) = 1 Then
Begin
WriteLn('TPA Finding mucking up becuase of Milk Cow');
WriteLn('Randomly Relocating');
MouseFlag(MMCX + 10, MMCY + 10, 20, 20, 0);
Result := False;
Break;
End;
MR := False;
End Else
//For I := 0 To High(Cow) Do
If IsUpText('Cow') Then
Begin
GetMousePos(x, y);
Result := True;
MR := True;
MouseSpeed := 15;
Exit;
End;
End;
MouseSpeed := 15;
End;
Result := False;
MR := False;
End;

Procedure WalkToCows;
Label gg;
Var F : Integer;
Begin
Players[CurrentPlayer].Loc := 'Walking To Cows';
GoTo GG;
GG :
If Not LinearWalkX(FindWaterColor, 20, 60, 0, 0) Then
If Not LinearWalkX(FindWaterColor, 25, 65, -2, 3) Then
N('Lost Walk [1] in WalkToCows')
Else
FFlag(0);

If Not LinearWalk(FindFallyRoadColor, 0, 69, 0, 0) Then
If Not LinearWalk(FindFallyRoadColor, 5, 66, 3, 4) Then
N('Lost Walk [2] in WalkToCows')
Else
FFlag(0);

If FindRoadColor = 0 Then
MouseFlag(MMCX, MMCY - 50, 5, 5, 0);
If Not LinearWalk(FindRoadColor, 0, 62, 0, 0) Then
If Not LinearWalk(FindRoadColor, -20, 52, 0, 0) Then
N('Lost Walk [3] in WalkToCows')
Else
FFlag(0);
Begin
If Not FindSymbolIn(x, y, 'tree', 538, 22, 643, 162) Then
Begin
If MFF(569, 93, 10, 10) Then
Wait(800 + Random(801));
If Not FlagPresent Then
N('Lost FailSafe [1] in WalkToCows')
End Else
MouseFlag(x - 10, y, 0, 0, 5);
If Not IsMoving(1000) Then
N('Lost Symbol [1] in WalkToCows - Failsafe[1]')
Else
Wait(1);
End;

FindNormalRandoms;

If Not FindGate_MM Then N('Could not find Gate in FindGate_MM') Else
Begin
If OpenGate Then
Begin
MouseFlag(MMCX, MMCY - RandomRange(15, 45), 5, 5, 0)
WriteLn('We Are at The Cow Area');
End Else
For F := 0 To High(Cow) Do
If Not Cow[F].Finder() Then
N('Could not find Gate in FindGate_MM');

Exit;
End;
Wait(1);
End;


function PixelShift(x1, y1, x2, y2, step, t: integer): integer; //Marpis
var
bmp, bmp2, x, y: integer;
begin
bmp := BitmapFromString((x2 -x1), (y2 - y1), '');
bmp2 := BitmapFromString((x2 -x1), (y2 - y1), '');
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(bmp), x1, y1, x2, y2, 0, 0, (x2 - x1), (y2 - y1));
wait(t);
SafeCopyCanvas(GetClientCanvas, GetBitmapCanvas(bmp2), x1, y1, x2, y2, 0, 0, (x2 - x1), (y2 - y1));
for x := 1 to ((x2 - x1)/step) do
for y := 1 to ((y2 - y1)/step) do
if FastGetPixel(bmp2, x * step, y * step) <> FastGetPixel(bmp, x * step, y * step) then
Inc(result);
FreeBitmap(bmp);
FreeBitmap(bmp2);
end;

function m_IsMoving: boolean; //Marpis
begin
result := PixelShift(MMX1, MMY1, MMX2, MMY2, 5, 200) > 100;
end;


Function PickUpHide : Boolean;
Var TPA : TPointArray;
P : TPoint;
Begin
Players[CurrentPlayer].Loc := 'Picking Up Hides';
If FindObj(x, y, 'ake', 13619157, 20) Then
Mouse(x, y, 0, 0, False);

Wait(400 + Random(200));
Result := ChooseOption('owhide');
While FlagPresent Do Wait(100 + Random(200));

Wait(400 + Random(800));
If Result Then Exit;

X := MMCX;
Y := MMCY;
Result := FindObjTPA(X, Y, 12171971, 10, 2, 10, 10, 40, ['ake']);
If Result Then
Begin
Mouse(x, y, 0, 0, False);
Result := ChooseOption('whide');
Wait(2000 + Random(1000));
While m_IsMoving Do Wait(200 + Random(200));

Exit;
End;

FindColorsTolerance(TPA, 12171971, MSCX - 50, MSCY - 50, MSCX + 50, MSCY + 50, 8);
If Length(TPA) = 0 Then FindColorsSpiralTolerance(MSCX, MSCY, TPA, 12171971, MSCX - 150, MSCY - 150, MSCX + 150, MSCY + 150, 11);
If Length(TPA) > 0 Then
Begin
SplitTPAEx(TPA, 10, 10);
P := MiddleTPA(TPA);
MMouse(P.x, P.y, 0, 0);
Wait(200 + Random(200));
If IsUpText('ake') Then
Mouse(P.x, P.y, 0, 0, False);
Result := ChooseOption('whide');
Wait(2000 + Random(1500));
End;
FindNormalRandoms;
End;

Procedure GetCowHides;
Label Lol, Lolx, Loly;
Var TPA : TPointArray;
IMark, I : Integer;
Begin
Players[CurrentPlayer].Loc := 'Killing Cows';
Repeat
FindNormalRandoms;
Lol :
For I := 0 To High(Cow) Do
Begin
If Not Cow[I].Finder() Then Break;
Begin
Case Random(3) Of
0, 2 : Mouse(x, y, 0, 0, True);
1 : Begin
Mouse(x, y, 0, 0, False);
Wait(100 + Random(100));
ChooseOption('tack');
End;
End;
Break;
End;
End;
Wait(800 + Random(800));
MouseSpeed := 17;
While m_IsMoving Do Wait(1300 + Random(800));

MarkTime(IMark);

If Not MR Then
For I := 0 To High(Cow) Do
Begin
If Cow[I].Finder() Then
Begin
Mouse(x, y, 1, 1, True)
Wait(100 + Random(300));
Break;
End Else
Break;
End;

If Not MR Then GoTo Loly;

I := 0;
While Not InFight2 or (I >= 30) = False Do
Begin
Wait(100 + Random(90));
Inc(I);
End;

If InFight2 Then
GoTo Lolx
Else
GoTo Loly;

If Not MR Then
Begin
Begin
Loly :
If FindObj(x, y, 'acks', 1143694, 15) Then
MouseFlag(MMCX - 20, MMCY + 17, 5, 5, 0)
Else
If FindColorsTolerance(TPA, 62965, MMX1, MMY1, MMX2, MMY2, 3) Then
Begin
TPA := RemovePointsInBox(TPA, IntToBox(665, 8, 709, 166));
For I := 0 to High(TPA) Do
If PointInBox(TPA[I], IntToBox(MMCX - (I*5), MMCY - (I*5), MMCX + (I*5), MMCY + (I*5))) Then
Begin
MouseFlag(TPA[I].x, TPA[I].y, 3, 3, 0);
FindNormalRandoms;
Break;
End;
End;
End;
GoTo Lol;
End;

Lolx :
Begin
If InvFull Then Exit;
Repeat
Wait(500 + Random(300));
AntiBan;
Until(Not (InFight2)) xOr (TimeFromMark(IMark) > 18000 + Random(2000));
If PickUpHide Then
Inc(Hides);
End;
XpGained := Round(XpGained + 4.375);

If InvFull Then Exit;
Until(InvFull) xOr (Not(LoggedIn));
If Not LoggedIn Then N('Not Logged In..');
End;

Function FindBankers() : Boolean;
Var TPA : TPointArray;
ATPA : T2DPointArray;
TB : TBoxArray;
II : Integer;

Begin
Players[CurrentPlayer].Loc := 'Finding Bankers on Minimap';
FindNormalRandoms;
Begin
FindColorsTolerance(TPA, (iAbs(ClBlue - ClWhite)+1), MMX1, MMY1, MMX2, MMY2, 1);
ATPA := TPAToATPA(TPA, 20);
If High(ATPA) = -1 Then Exit Else
SetArrayLength(TB, High(ATPA));
For II := 0 To High(TB) Do
Begin
TB[II] := GetTPABounds(ATPA[II]);

If CountColorTolerance(124132, TB[II].x1, TB[II].y1, TB[II].x2, TB[II].y2, 34) >= 20 Then
Mouse(TB[II].x1, TB[II].y1 + 4, 4, 4, True)
Else
Continue;
End;
Wait(1600 + Random(400));
Result := FlagPresent;
If Result Then
Begin
WriteLn('Found Bankers on MiniMap!');
FFlag(0);
Exit;
End Else
If FindSymbol(x, y, 'bank') Then
Begin
WriteLn('Trying Failsafe [1]');
Mouse(x, y, 0, 0, True)
Result := True;//m_IsMoving;
FFlag(0);
End Else
N('Could not enter bank in FindBankers');
End;
End;

Function OpenFallyBank : Boolean;
Var TPA : TPointArray;
P : TPoint;
I : Integer;
ATPA : T2DPointArray;
Begin
Players[CurrentPlayer].Loc := 'Opening Falador Bank';
FindColorsSpiralTolerance(MMCX, MMCY, TPA, 2701894, 1, 1, 518, 224, 15);
Begin
SplitTPAEx(TPA, 4, 5); //Ultra Filteration
RAaSTPA(TPA, 40);
ATPA := SplitTPA(TPA, 20);
End;

If Length(ATPA) > 0 Then
For I := 6 To High(ATPA) Do //Skip the few points for faster finding
Begin
P := MiddleTPA(ATPA[I]);

MMouse(P.x, P.y, 0, 0);

Wait(400 + Random(100));

If IsUpText('ooth') Then
Begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, False);
Wait(80 + Random(80));
If ChooseOption('uickly') Then
Wait(RandomRange(2001, 4001));

Result := BankScreen Or PinScreen;
If Result Then Break;
End Else

Continue;
End;
If Result Then WriteLn('BankScreen!');
End;


Procedure Bank;
Label Ben, Start;
Var TPA, TPA2 : TPointArray;
ATPA : Array Of Array Of TPoint;
Box : TBox;
Begin
GoTo Start;
Start :
Players[CurrentPlayer].Loc := 'Bank';
FindNormalRandoms;
Ben :
FindColorsTolerance(TPA, 238, MMCX - 80, MMCY, 731, 165, 15);
Begin
//SortCircleWise(TPA, MMCX, MMCY, 10, False, False);
TPA := FilterDropDots(TPA);
FilterPointsPie(TPA, -90.7, 90.2, 10.0, 75.1, MMCX, MMCY);
ATPA := TPAToATPAEx(TPA, 3, 1);
{}InvertATPA(ATPA);{} //TPA's Bloody Awesome!
If Length(ATPA) > 0 Then
If MiddleTPAEx(ATPA[0], x, y) Then
Mouse(x - 3, y - 5, 5, 5, True);

While m_IsMoving Do Wait(800 + Random(800));

FindSymbols(TPA2, 'tree')
If Not Length(TPA2) = 2 Then
Begin
Mouse(560, 92, 10, 10, True);
FFlag(0);
GoTo Ben;
End;
End;

If Not OpenGate Then N('Couldnt Open Gate in Bank');
If Not FindSymbolIn(x, y, 'tree', 627, 1, 714, 169) Then
N('Lost Walk [1] in Bank')
Else
Begin
Mouse(x, y - 10, 2, 2, True);
Wait(5000 + Random(3000));
FFlag(0);
End;
FindNormalRandoms;
Begin
If FindColorsTolerance(TPA, FindFallyRoadColor, MMX1, MMY1, MMX2, MMY2, 0) Then
Begin
RAaSTPA(TPA, 90); //Points Clashed, so I went for higher density
Box := GetTPABounds(TPA);
MouseBox(Box.x1 + (7 + Random(3)), Box.y1 + (7 - Random(3)), Box.x2 - 2, Box.y2 - 3, 1);
End Else
If Not LinearWalk(FindFallyRoadColor, 130, 70, -2, 3) Then
N('Lost Walk [2] in Bank')
Else
FFlag(0);

Begin
If Not CountColor(FindWaterColor, MMX1, MMY1, MMX2, MMY2) > 10 Then
N('Lost in Bank')
Else
Begin
If Not LinearWalk(FindFallyRoadColor, 160, 70, 0, 0) Then
If Not LinearWalk(FindWaterColor, 165, 72, 0, 0) Then
N('Lost Walk [3] in Bank')
Else
FFlag(0);

If Not LinearWalk(FindFallyRoadColor, 180, 73, 0, 0) Then
If Not LinearWalk(FindFallyRoadColor, 176, 72, 0, 0) Then
N('Lost Walk [4] in Bank')
Else
FFlag(0);

If Not LinearWalk(FindFallyRoadColor, 180, 53, 0, 0) Then
If Not LinearWalk(FindFallyRoadColor, 176, 50, 0, 0) Then
N('Lost Walk [5] in Bank')
Else
Begin
Wait(3000 + Random(4000));
FFlag(0);
End;
FindNormalRandoms;

If Not FindBankers Then
N('Lost In Finding, in FindBankers')
Else
If OpenFallyBank Then
Begin
If PinScreen Then
InPin(Players[CurrentPlayer].Pin);
Wait(500 + Random(500));
If BankScreen Then
DepositAll();
If CloseBank Then
Begin
Inc(Banked);
Inc(Players[CurrentPlayer].Integers[77]);
End;
End;
End;
End;
FindNormalRandoms;
End;
End;

Procedure ProgressReport(Loc : String);
Var I, Space, Xpl : Integer;
Begin
Xpl := Trunc((3600000 / GetTimeRunning) + 1);
SRLRandomsReport;

If Length(TimeRunning) > 30 Then
Space := 60
Else
Space := 50;

Begin
WriteLn('');
WriteLn(Padr('(|'+Replicate('>', Space - 2), Space) + '|)');
WriteLn(Padr('(| Cow Killer + Hide Banker ', Space) + '|)');
WriteLn(Padr('(| Version '+Ver+' ', Space) + '|)');
WriteLn(Padr('(| By NaumanAkhlaQ ', Space) + '|)');
WriteLn(Padr('(| Used '+IntToStr(CurrentPlayer)+' Out Of '+IntToStr(HowManyPlayers)+' !', Space) + '|)');
WriteLn(Padr('(|'+Replicate('-', Space - 2), Space) + '|)');
WriteLn(Padr('(| ~> Worked For : '+TimeRunning+'.', Space) + '|)');
WriteLn(Padr('(| -> Location = '+Loc+'.', Space) + '|)');
WriteLn(Padr('(|'+Replicate('>', Space - 2), Space) + '|)');
WriteLn(Padr('(| > Hides Collected - '+IntToStr(Hides)+'.', Space) + '|)');
WriteLn(Padr('(| > Banked - '+IntToStr(Banked)+'.', Space) + '|)');
WriteLn(Padr('(| > XpGained - '+FloatToStr(XpGained)+'.', Space) + '|)');
WriteLn(Padr('(| > Hides Per Hour (HPH) - '+FloatToStr(Xpl * Hides)+'.', Space) + '|)');
WriteLn(Padr('(|'+Replicate('<', Space - 2), Space) + '|)');
WriteLn(Padr('(|Written On '+TheTime+' '+TheDate(3)+' !', Space) + '|)');
WriteLn(Padr('(|'+Replicate('<', Space - 2), Space) + '|)');
WriteLn(Padr('(| Player Information :', Space) + '|)');
For I := 0 To High(Players) Do
Begin
WriteLn('+++++++++++++');
WriteLn(' Player['+IntToStr(I)+']');
WriteLn('[-} '+ Players[I].Name +' /\ Collected '+IntToStr(Players[I].integers[88])+' Hides! /\ Banked ' +IntToStr(Players[I].integers[77])+' Loads!');
WriteLn('[-} Gained '+IntToStr(XpGained)+' Fighting Xp! /\ '+ Players[I].Name +#39 +'s Active Is '+BoolToStr(Players[I].Active)+' !');
If Players[CurrentPlayer].Loc =
'' Then
WriteLn('[-} '+Players[I].Name +#39+'s Location is ''Not Yet Used'' !')
Else
WriteLn('[-} '+Players[I].Name +#39+'s Location is '+Players[I].Loc+' !');
WriteLn('+++++++++++++');
End;
End;
End;

Procedure CheckRun;
Var Energy : Byte;
S : String;
Begin
Players[CurrentPlayer].Loc := 'Checking Run Status';
Try
If Random(2) = 1 Then Begin
If Low1 In Options Then Energy := 20 + Random(10);
End Else
If Medium In Options Then Energy := 40 + Random(10);
Except
WriteLn('Error In TInt, RandOff');
Finally
If GetMMLevels('run', S) >= Energy Then
SetRun(True);
End;
End;

Procedure ScriptTerminate;
Begin
ProgressReport(Players[CurrentPlayer].Loc);
End;

Procedure Checks;
Var S : String;
Begin
If Random(2) = 1 Then CheckRun;
Status(Players[CurrentPlayer].Loc);
If IsFKeyDown(2) Then ProgressReport(Players[CurrentPlayer].Loc);
If IsFKeyDown(5) Then
Begin
GetApplication.BringToFront;
S := ReadLn('What Do you want to say?');
GetApplication.Minimize;
Mouse(111, 462, 100, 5, True);
TypeSend(AddMistakes(S, 30));
End;
If IsFKeyDown(4) Then
Begin
While InFight2 Do Wait(300 + Random(900));
NextPlayer(False);
End;
End;

Function Setup : Variant;
Begin
Options := [Low1, Medium];
ActivateClient;
SymbolAccuracy := 0.45;
SetUpRecords;
SRL_Procs[srl_OnRandomCall] := @Checks;
SRL_Procs[srl_AntiBan] := @Checks;
{-------------------------------}
{$IFDEF SMART}
WriteLn('SMART IS LOADING -');
SmartSetupEx(WorldNumber, False, True, False);
SetTargetDc(SMARTGetDC);
While SmartGetColor(253, 233) <> 1118604 Do
Wait(10);

If SmartReady Then
WriteLn('Loaded');
{$ENDIF}
{-------------------------------}

Wait((900 xOr 90) + Random(200));
If Not LoggedIn Then LoginPlayer;
SetRun(True);
Result := 50 Xor 60;
End;

Var BK : Integer;
BackGround : TImage;
FrmDesign : TForm;
X2, Y2 : Integer;
StartPos, StartMousePos : TPoint;
AreMoving : boolean;
Memo1 : TMemo;
Button2 : TButton;
Button3 : TButton;
Button4 : TButton;
Button5 : TButton;
CB : TCheckBox;

//Const Ver = '0.1';

//Get Pos = Image Moving Functions Aided by mastaRaymond :)
Procedure GetPos(Sender1: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin
GetMousePos(X2, Y2);
StartPos := Point(frmDesign.left,frmDesign.top);
StartMousePos := Point(x2,y2);
Aremoving := True;
End;

Procedure CheckVersion;
Var S : String;
Var T : Integer;
Begin
Memo1.Lines.Add('');
MarkTime(T);
Memo1.Lines.Add('<<<< Version Checker Activated! >>>>');
Try
S := GetPage('http://cowkiller.freehostia.com/New%20Text%20Document%20(2).txt');
Except
end;
If S = Ver Then
Memo1.Lines.Add('Your version is up to date :)')
Else
Begin
Memo1.Lines.Add('Your version is NOT up to date :(');
Memo1.Lines.Add('Your Version Is '+Ver+', The Newest Version Is '+S);
End;
End;


Procedure DrawCow;
Begin
Memo1.Lines.Add('');
Memo1.Lines.Add('Thank-you for using this script :)');
Wait(800);
End;

Procedure Click(SenderSS : TObject);
Var F : Integer;
Begin
Case SenderSS Of
Button2 : Begin
DrawCow;
For F := 240 DownTo 10 Do
Begin
MakeWindowTransparent(FrmDesign.Handle, F);
Wait(2);
End;
StartScript := True;
FrmDesign.ModalResult := mrOk;
End;

Button3 : Begin
Memo1.Lines.Add('');
Memo1.Lines.Add('<<<< Player Form Activated! >>>>');
SRLPlayerForm(True, ['Use percision running'], ['Loads To Bank?'], [], []);
if(srlpf_TerminateWhenDone)then
TerminateScript;
End;

Button4 : Try CheckVersion Except Memo1.Lines.Add('< Could Not CheckVersion - Connection Error! >') end;

CB : Begin
If Not CB.Checked Then
Begin
Memo1.ReadOnly := False
Memo1.Color := 10666964;
End Else
Begin
Memo1.ReadOnly := True;
Memo1.Color := 4479587;
End;
End;

//Button5 :
End;
End;

Procedure GetPosX(Sender2: TObject; Shift: TShiftState; X, Y: Integer);

Begin
if AreMoving then
begin
GetMousePos(X2, Y2);
FrmDesign.Left := StartPos.x + (x2-StartMousePos.x);
FrmDesign.Top := StartPos.y + (y2-StartMousePos.y);
end;
{ BackGround.Left := Fx[2];
BackGround.Top := Fy[2];}
End;

Procedure GetPosY(Sender3: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

Begin
GetMousePos(X2,y2);
FrmDesign.Left := StartPos.x + (x2-StartMousePos.x);
FrmDesign.Top := StartPos.y + (y2-StartMousePos.y);
AreMoving := False;
{ BackGround.Left := Fx[2];
BackGround.Top := Fy[2];}
End;


Procedure IsClose(Sender4: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Begin
GetMousePos(X2, Y2);
End;

Procedure IsClose2(Sender5: TObject; Shift: TShiftState; X, Y: Integer);
Begin
GetMousePos(X2, Y2);
End;

Procedure Close(Sender5: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Begin
GetMousePos(X, Y);
//If (X = X2) And (Y = Y2) Then
FrmDesign.Close;
WriteLn('User called = Form End [0.01]');
StartScript := False;
End;


Procedure Form;
Var BK2 : TImage;
Begin
ClearDebug;
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 195;
frmDesign.Width := 462;
frmDesign.BorderIcons := [];
frmDesign.BorderStyle := bsNone;
frmDesign.Height := 399;
frmDesign.Caption := ' NAQ'#39's - Cow Killer + Hide Banker Xtreme!';
frmDesign.Color := clBtnFace;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'Arial';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
frmDesign.Position := poMainFormCenter;

CB := TCheckBox.Create(frmDesign);
CB.Parent := frmDesign;
CB.Left := 22;
CB.Top := 378;
CB.Caption := 'Read Only?';
CB.Width := 150;
CB.Height := 15;
CB.TabOrder := 18;
CB.ShowHint := True;
CB.Hint := 'Click this to make the form memo box Read - Only!';
CB.OnClick := @Click;

Background := TImage.Create(frmDesign);
Background.Parent := frmDesign;
Background.SetBounds(0, 0, 462, 399);
BackGround.OnMouseDown := @GetPos;
BackGround.OnMouseMove := @GetPosX;
BackGround.OnMouseUp := @GetPosY;
Try
BK := LoadBitmap(ScriptPath+'my back(1).bmp');
Except end;
SafeCopyCanvas(GetBitmapCanvas(BK), Background.Canvas, 0, 0, 462, 399, 0, 0, 462, 399);
FreeBitmap(BK);

BK2 := TImage.Create(frmDesign);
BK2.Parent := frmDesign;
BK2.SetBounds(429, 6, 28, 27);
BK2.OnMouseDown := @IsClose;
BK2.OnMouseUp := @Close;
BK2.ShowHint := True;
BK2.Hint := 'Click This X To Close The Scipt :(';
SafeDrawBitmap(W, BK2.Canvas, (MSCX Xor MSCY - (85 * 5)), 0 mod 2);
FreeBitmap(W);

Memo1 := TMemo.Create(frmDesign);
Memo1.Parent := frmDesign;
Memo1.Left := 22;
Memo1.Top := 144;
Memo1.Width := 300;
Memo1.Color := 10666964;
Memo1.WordWrap := True;
Memo1.Height := 233;
Memo1.ScrollBars := ssBoth;
Memo1.Lines.Add('Welcome to Fally Cow Hider Xtreme - Setup Form');
Memo1.Lines.Add('Please Select an Operation to Perform!!!');
Memo1.Lines.Add('');
Memo1.Lines.Add('Current Version you are using is '+Ver);
Memo1.Lines.Add(Replicate('>', 40));
Memo1.TabOrder := 8;
Memo1.ShowHint := True;
Memo1.Hint := 'Info is Displayed Here!';
Memo1.ReadOnly := False;
Memo1.Enabled := True;

Button2 := TButton.Create(frmDesign);
Button2.Parent := frmDesign;
Button2.Left := 340;
Button2.ShowHint := True;
Button2.Hint := 'Press This To Start The Script * '+UpperCase('Make Sure you Have Filled In Your Player Information First :) *');
Button2.Top := 296;
Button2.Width := 105;
Button2.Font.Name := 'Comic Sans MS';
Button2.Font.Size := -17;
Button2.Height := 43;
Button2.Caption := 'Start Script';
Button2.TabOrder := 0;
Button2.OnClick := @Click;

Button3 := TButton.Create(frmDesign);
Button3.Parent := frmDesign;
Button3.Left := 340;
Button3.ShowHint := True;
Button3.Hint := 'Setup all your player details here :)';
Button3.Top := 144;
Button3.Width := 105;
Button3.Height := 33;
Button3.Caption := 'Setup Players';
Button3.TabOrder := 10;
Button3.OnClick := @Click;

Button4 := TButton.Create(frmDesign);
Button4.Parent := frmDesign;
Button4.Left := 340;
Button4.ShowHint := True;
Button4.Hint := 'This will connect to my webiste for updates (Lags for approx. 3 seconds)';
Button4.Top := 192;
Button4.Width := 105;
Button4.Height := 33;
Button4.Caption := 'Check for Updates';
Button4.TabOrder := 11;
Button4.OnClick := @Click;

Button5 := TButton.Create(frmDesign);
Button5.Parent := frmDesign;
Button5.Left := 340;
Button5.ShowHint := True;
Button5.Hint := 'Will connect to my site to get the latest progress report';
Button5.Top := 240;
Button5.Width := 105;
Button5.Height := 33;
Button5.Caption := 'Get Latest Proggie';
Button5.TabOrder := 12;
Button5.OnClick := @Click;

frmDesign.ShowModal;
End;

procedure SafeInitForm;
var
V : TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('Form', v);
end;

procedure ShowFormModal;
begin
ClearDebug;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
V := [];
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;

Procedure FormShow;
Begin
SafeInitForm;
SafeShowFormModal;
End;

Procedure DoSig;
Begin
ChangeReportWidth(260);
WriteLn(' ______ ______ ');
Wait(50);
WriteLn('| ___ \ / _____) ');
Wait(50);
WriteLn('| | | | ____ _ _ ____ ____ ____ _____ | / ___ _ _ _ ');
Wait(50);
WriteLn('| | | |/ _ | | | | \ / _ | _ \(___ ) | | / _ \| | | | ');
Wait(50);
WriteLn('| | | ( ( | | |_| | | | ( ( | | | | |/ __/ | \____| |_| | | | | ');
Wait(50);
WriteLn('|_| |_|\_||_|\____|_|_|_|\_||_|_| |_(_____) \______)___/ \____| ');
Wait(50);
WriteLn(' ');
Wait(500);
WriteLn(' _ _ _ _ _ _ ');
Wait(50);
WriteLn('| | / |_) | | | | ');
Wait(50);
WriteLn('| | / / _| | | ____ ____ ____ ____ _ | | ');
Wait(50);
WriteLn('| |< < | | | |/ _ )/ ___) / _ | _ \ / || | ');
Wait(50);
WriteLn('| | \ \| | | ( (/ /| | ( ( | | | | ( (_| | ');
Wait(50);
WriteLn('|_| \_)_|_|_|\____)_| \_||_|_| |_|\____| ');
Wait(50);
WriteLn(' ');
Wait(500);
WriteLn(' _ _ _ _ _ _ ');
Wait(50);
WriteLn('| | | (_) | | \ \ / / ');
Wait(50);
WriteLn('| |__ | |_ _ | | ____ ____ __\ \/ / |_ ____ ____ ____ ____ ');
Wait(50);
WriteLn('| __)| | |/ || |/ _ )/ ___) (___) (| _) / ___) _ ) \ / _ )');
Wait(50);
WriteLn('| | | | ( (_| ( (/ /| | / /\ \ |__| | ( (/ /| | | ( (/ / ');
Wait(50);
WriteLn('|_| |_|_|\____|\____)_| /_/ \_\___)_| \____)_|_|_|\____)');
Wait(900);
WriteLn('');
End;


Procedure MainLoop;
Begin
FormShow;
SRLPlayerForm(False, [], ['Loads To Bank?'], [], []);
Begin
FreeForm(FrmDesign);
ClearDebug;
If StartScript = False Then TerminateScript Else
Wait(1);

SetupSRL;

If Setup * 1 > 0 Then WriteLn('[Setup] Status - Completed!');
{{$IFDEF SMART} {
SetTargetDC(SMARTGetDC);
{$ENDIF} {
Wait(1);}
Repeat
Repeat
SetAngle(True);
MakeCompass('S');
WalkToCows;
GetCowHides;
Bank;
ProgressReport(Players[CurrentPlayer].Loc);
Until(Banked >= Players[CurrentPlayer].Integers[0]) xOr (Not (LoggedIn));

If Not LoggedIn Then NextPlayer(False) Else
Begin
LogOut;
NextPlayer(True);
End;
ProgressReport(Players[CurrentPlayer].Loc);
Until(AllPlayersInactive);

If AllPlayersInactive Then ProgressReport(Players[CurrentPlayer].Loc);
End;
End;

Begin
{$IfDef SRL_SMART}
Smart_Server := WorldNumber;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
{$ENDIF}
DoSig;
W := BitmapFromString(28, 27, 'beNqt1HtQkukewPFXQUFAEJAw75f' +
'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' +
'THd/X/MnwDv/nCv');

MainLoop;
WriteLn('Thanks for using - Please Post your proggie :-)!');

Wait(1);
{---}
End.

..On topic: This looks really, really good. This has a day and night difference from the first one you made. Rep+


Nice, Well obviously thats why your a member :).

9vs

2010-01-02 19:47:16

Well done, thanks for your hard work.

x[Warrior]x3500

2010-01-26 22:40:01

hehe. just threw up my old script (super varrock clay softener) n got a 88%. tried out a newer script that i just made and it uses ATPAs with autocolors primarily for walking procedures (works really well). your tool said there was not any walking :( lol but VERY nice tool. handy for little things i might have missed

Press Play

2010-05-02 04:02:35

i put in an outdated script that i made 2 years ago and i got 83% :)
i like it (Y)

Dgby714

2010-05-02 04:08:13

From: -daazndagger-
i put in an outdated script that i made 2 years ago and i got 83% :)
i like it (Y)


Gonna take a guess and say it needs to be a currently working script =) but nice score on the old one

Feroc1ty

2011-01-31 05:11:49

Something like this is exactly the reason codes get more advanced and bulky rather than going the opposite direction, which is simplicity.

A script should be as simple as possible, but not too simple.

Sabzi

2012-01-04 06:28:54

Bump, I think this tool would give some clue for applicants, even if it's very rough.
I fixed the form up, somewhy simba manages positions a bit else, I guess.
Anyway here's the fixed tool:
program SRLMemberTool;

var
// InitForm variables.
EndInitForm: Boolean;
AppTool: TForm;
ResultL, TitleLabel, ResultDescriptionL, Label1, LastUpdated, LinesQL, LinesAL, CharsQ, CharsA, PostsL: TLabel;
AcutalResultL: TLabel;
ScriptB, ControlB, ScriptAnalyzeB, Debugb, UserinputGB: TGroupBox;
Memo1, DebugBox: TMemo;
HelpButton, GenerateButton, CopyToClipB, ResetB: TButton;
PostcountE: TEdit;
Attitude: TComboBox;
I: integer;
ScriptText: string;

function FindText(word: string): boolean;
begin
Scripttext := Lowercase(Memo1.Text);
Result := (Pos(lowercase(Word), LowerCase(ScriptText)) > 0);
end;

function FindTextMulti(Text: TStringArray): boolean;
var
i, n: Integer;
begin
Scripttext := Lowercase(Memo1.Text);
n := High(Text);
for i := 0 to n do
if (Pos(Text[i], ScriptText) <> 0) then
begin
Result := True;
Exit;
end;
end;

function CountAndFindText(Word: string; Worth: integer; plusminus: boolean): boolean;
//By Garret. Modded by me :)
var
N, tt: Integer;
s: string;
begin
Scripttext := Lowercase(Memo1.Text);
Result := (Pos(lowercase(Word), LowerCase(ScriptText)) > 0);
if Result then
begin
S := Lowercase(Memo1.Text);
repeat
TT := TT + 1;
if PlusMinus then
I := I + worth
else
I := I - worth;
N := Pos(LowerCase(Word), LowerCase(S));
Delete(S, N, Length(Word));
until ((N = 0) or (TT >= 2));
I := I - 1;
end;
end;

procedure MultiWordSolution;
begin
if FindTextMulti(['dtmrotated', 'finddtm']) and not FindText('freedtm') then
begin
I := I - 1;
DebugBox.Lines.Add('Make sure you free your DTMs!');
end
else
I := I + 2;
if FindText('tform') and not FindText('freeform') then
begin
I := I - 1;
DebugBox.Lines.Add('Make sure you free your form: Freeform(formname);');
end
else
I := I + 2;
if FindText('findbitmap') and not FindText('freebitmap') then
begin
I := I - 1;
DebugBox.Lines.Add('Make sure you free your Bitmaps!');
end
else
I := I + 2;
if FindTextMulti(['radial','linearwalk','walkpath']) then
begin
I := I + 5;
end
else if FindText('findsymbol') then
I := I + 3
else
DebugBox.Lines.Add('Make sure include walking in your script!');
end;

procedure GenerateMark;
var
AcceptedWords: TStringArray;
DeclinedWords: TStringArray;
WordsWorth: TIntegerArray;
PlusOrMinus: Array of Boolean;
z, PC: integer;
att: string;
d: extended;
begin
Scripttext := Lowercase(Memo1.Text);
DebugBox.Clear;
if ((memo1.Lines.Count) < 200) then
LinesAL.Font.Color := clRed
else
LinesAL.Font.Color := clLime;
if ((Length(memo1.Text)) < 10000) then
CharsA.Font.Color := clRed
else
CharsA.Font.Color := clLime;
LinesAL.caption := IntToStr(memo1.Lines.Count);
CharsA.caption := IntToStr(Length(memo1.Text));
AcceptedWords := ['exit;', 'fflag', 'players', '$i srl', 'loggedin', 'tdtmpointdef', 'tpa', 'tpointarray', 'while', 'repeat', 'tpoint'];
DeclinedWords := ['', '', '', '', '', '', '', '', '', '', '', '', 'clickmouse', 'findfastrandoms', 'sendkeys'];
WordsWorth := [1, 2, 8, 5, 2, 3, 3, 3, 1, 1, 2, 3, 10, 10];
//declinded Words after gap or (1,3).
ScriptText := Lowercase(Memo1.Text);
for Z := 0 to High(AcceptedWords) do
if not CountAndFindText(AcceptedWords[Z], WordsWorth[Z], true) then
DebugBox.Lines.Add('Add ' + AcceptedWords[Z]);
for Z := 12 to High(WordsWorth) do
if CountAndFindText(DeclinedWords[Z], WordsWorth[Z], false) then
DebugBox.Lines.Add('GET RID OF ' + DeclinedWords[Z]);
MultiWordSolution;
if Memo1.Lines.Count < 200 then
begin
I := I - 10;
DebugBox.Lines.Add('For a good Application you need 200+ Lines!');
end;
if ((Length(memo1.Text)) < 10000) then
begin
I := I - 10;
DebugBox.Lines.Add('For a good Application you need 10,000+ Characters!!');
end;
PC := StrToInt(PostcountE.text);
if (PC < 50) then
begin
I := I - 5;
DebugBox.Lines.Add('Getting a high post count will increase your chances');
end;
if (PC > 150) then
I := I + 3;
att := Lowercase(Attitude.Text);
case Att of
'bad(0 marks)': DebugBox.Lines.Add('Improve the attitude to increase your chances.');
'attitude': DebugBox.Lines.Add('Please select a attitude to increase your score');
'great(2 marks)': incEx(I, 2);
'unknown(1 marks)': Inc(I);
end;
D := I / 65.0 * 100.0;
D := Round(d);
if (D < 0) then
D := 0;
if (D > 100) then
D := 100;
if (D > 75) then
begin
AcutalResultL.Font.Color := clLime;
DebugBox.Lines.Add('You should Apply for members if you havent cheated!');
ResultDescriptionL.Caption := 'You should Apply for members if you havent cheated!';
end
else
begin
AcutalResultL.Font.Color := clRed;
DebugBox.Lines.Add('Sorry not good enough yet, or ethier you do not use SRL stuff.');
ResultDescriptionL.Caption := 'Sorry not good enough yet, or ethier you do not use SRL stuff.';
end;
with DebugBox do
with Lines do
begin
Add('[==================================]');
Add('[= Result: ' + FloatToStr(D) + '%');
Add('[==================================]');
end;
AcutalResultL.Caption := FloatToStr(D) + '%';
end;

procedure CopyToClip(Sender: TObject);
begin
if (DebugBox.Lines.Count >= 1) then
begin
DebugBox.SelectAll;
DebugBox.CopyToClipBoard;
Messagebox('You sucessfully copied the debug box', 'Successful', 0);
end
else
Messagebox('You cant copy nothing', 'Error!', 0);
end;

procedure HandleButtons(Sender: TObject);
begin
case Sender of
generateButton:
begin
GenerateMark;
I := 0;
end;
HelpButton: Messagebox('All you need to do is copy and paste your script in the box!', 'Help Eh?', 0);
ResetB:
begin
DebugBox.Clear;
memo1.Clear;
PostcountE.text := '';
Attitude.Text := 'Attitude';
end;
end;
end;
// When the InitForm is closed, this code will be executed.

procedure InitFormOnClose(Sender: TObject; var Action: TCloseAction);
begin
if (not (AppTool.ModalResult = 1)) then
EndInitForm := True;
end;
// This form was parsed using DFM Form Parser v.26c Beta by Ron.
// Generated from APP TOOL.dfm.

procedure InitForm;
var
TimeInitForm: Integer;
begin
TimeInitForm := GetSystemTime;
AppTool := TForm.Create(nil);
with AppTool do
begin
OnClose := @ InitFormOnClose;
Position := poScreenCenter;
BorderStyle := bsSingle;
BorderIcons := [biMinimize, biSystemMenu];
ClientWidth := 669;
ClientHeight := 465;
Caption := 'BobboHobbo' #39 's SRL Member Application Decider Tool 2010';
Color := clBtnFace;
Font.Color := clWindowText;
Font.Height := - 11;
Font.Name := 'MS Sans Serif';
Font.Style := [];
PixelsPerInch := 96;
end;
ResultL := TLabel.Create(AppTool);
with ResultL do
begin
Parent := AppTool;
Left := 40;
Top := 264;
Width := 71;
Height := 13;
Caption := 'Your Result:';
Font.Color := clWindowText;
Font.Height := - 11;
Font.Name := 'MS Sans Serif';
Font.Style := [fsBold];
end;
AcutalResultL := TLabel.Create(AppTool);
with AcutalResultL do
begin
Parent := AppTool;
Left := 112;
Top := 264;
Width := 31;
Height := 13;
Caption := '';
Font.Color := clLime;
Font.Height := - 11;
Font.Name := 'MS Sans Serif';
Font.Style := [fsBold];
end;
TitleLabel := TLabel.Create(AppTool);
with TitleLabel do
begin
Parent := AppTool;
Left := 56;
Top := 8;
Width := 557;
Height := 20;
Caption := 'BobboHobbo' #39 's SRL Member Application Decider Tool 2010';
Font.Color := clWindowText;
Font.Height := - 17;
Font.Name := 'Verdana';
Font.Style := [fsBold, fsItalic];
end;
ResultDescriptionL := TLabel.Create(AppTool);
with ResultDescriptionL do
begin
Parent := AppTool;
Left := 152;
Top := 264;
Width := 136;
Height := 13;
Caption := 'No result has been taken yet';
end;
Label1 := TLabel.Create(AppTool);
with Label1 do
begin
Parent := AppTool;
Left := 24;
Top := 440;
Width := 178;
Height := 13;
Caption := 'Made by BobboHobbo @ Villavu.com';
end;
LastUpdated := TLabel.Create(AppTool);
with LastUpdated do
begin
Parent := AppTool;
Left := 536;
Top := 264;
Width := 113;
Height := 13;
Caption := 'Last Updated 27/12/09';
end;
ScriptB := TGroupBox.Create(AppTool);
with ScriptB do
begin
Parent := AppTool;
Left := 24;
Top := 40;
Width := 513;
Height := 217;
Caption := 'The Script Box';
TabOrder := 0;
end;
Memo1 := TMemo.Create(ScriptB);
with Memo1 do
begin
Parent := ScriptB;
Left := 16;
Top := 0;
Width := 481;
Height := 177;
Font.Name := 'Courier New';
with Memo1.Lines do
begin
Add('Paste your script into this box and hit the generate button!');
end;
ScrollBars := ssBoth;
TabOrder := 0;
end;
ControlB := TGroupBox.Create(AppTool);
with ControlB do
begin
Parent := AppTool;
Left := 24;
Top := 288;
Width := 185;
Height := 145;
Caption := 'The Controls';
TabOrder := 1;
end;
HelpButton := TButton.Create(ControlB);
with HelpButton do
begin
Parent := ControlB;
Left := 16;
Top := 4;
Width := 152;
Height := 33;
Caption := 'Help';
TabOrder := 0;
Onclick := @ handlebuttons;
end;
GenerateButton := TButton.Create(ControlB);
with GenerateButton do
begin
Parent := ControlB;
Left := 16;
Top := 44;
Width := 152;
Height := 32;
Caption := 'Generate Mark';
TabOrder := 1;
Onclick := @ HandleButtons;
end;
CopyToClipB := TButton.Create(ControlB);
with CopyToClipB do
begin
Parent := ControlB;
Left := 16;
Top := 84;
Width := 152;
Height := 32;
OnClick := @CopyToClip;
Caption := 'Copy Debug to Clipboard';
TabOrder := 2;
end;
ScriptAnalyzeB := TGroupBox.Create(AppTool);
with ScriptAnalyzeB do
begin
Parent := AppTool;
Left := 544;
Top := 48;
Width := 112;
Height := 57;
Caption := 'Script Details';
TabOrder := 2;
end;
LinesQL := TLabel.Create(ScriptAnalyzeB);
with LinesQL do
begin
Parent := ScriptAnalyzeB;
Left := 8;
Top := 0;
Width := 35;
Height := 13;
Caption := 'Lines:';
Font.Color := clWindowText;
Font.Height := - 11;
Font.Name := 'MS Sans Serif';
Font.Style := [fsBold];
end;
LinesAL := TLabel.Create(ScriptAnalyzeB);
with LinesAL do
begin
Parent := ScriptAnalyzeB;
Left := 48;
Top := 0;
Width := 25;
Height := 13;
Caption := '0';
end;
CharsQ := TLabel.Create(ScriptAnalyzeB);
with CharsQ do
begin
Parent := ScriptAnalyzeB;
Left := 8;
Top := 20;
Width := 37;
Height := 13;
Caption := 'Chars:';
Font.Color := clWindowText;
Font.Height := - 11;
Font.Name := 'MS Sans Serif';
Font.Style := [fsBold];
end;
CharsA := TLabel.Create(ScriptAnalyzeB);
with CharsA do
begin
Parent := ScriptAnalyzeB;
Left := 48;
Top := 20;
Width := 6;
Height := 13;
Caption := '0';
end;
Debugb := TGroupBox.Create(AppTool);
with Debugb do
begin
Parent := AppTool;
Left := 224;
Top := 280;
Width := 433;
Height := 177;
Caption := 'The Debug Box';
TabOrder := 3;
end;
DebugBox := TMemo.Create(Debugb);
with DebugBox do
begin
Parent := Debugb;
Left := 16;
Top := 0;
Width := 401;
Height := 153;
with DebugBox.Lines do
begin
Add('Nothing has been generated yet!');
end;
ScrollBars := ssVertical;
TabOrder := 0;
end;
UserinputGB := TGroupBox.Create(AppTool);
with UserinputGB do
begin
Parent := AppTool;
Left := 544;
Top := 112;
Width := 112;
Height := 88;
Caption := 'User Input';
TabOrder := 4;
end;
PostsL := TLabel.Create(UserinputGB);
with PostsL do
begin
Parent := UserinputGB;
Left := 16;
Top := 0;
Width := 82;
Height := 13;
Caption := 'Users Post Count';
end;
PostcountE := TEdit.Create(UserinputGB);
with PostcountE do
begin
Parent := UserinputGB;
Left := 40;
Top := 20;
Width := 33;
Height := 21;
MaxLength := 4;
TabOrder := 0;
Text := '0';
end;
Attitude := TComboBox.Create(UserinputGB);
with Attitude do
begin
Parent := UserinputGB;
Left := 8;
Top := 45;
Width := 96;
Height := 21;
ItemHeight := 13;
TabOrder := 1;
Text := 'Attitude';
with Attitude.Items do
begin
Add('Great(2 marks)');
Add('Unknown(1 marks)');
Add('Bad(0 marks)');
end;
ResetB := TButton.Create(AppTool);
with ResetB do
begin
Parent := AppTool;
Left := 552;
Top := 230;
Width := 96;
onclick := @ HandleButtons;
Height := 25;
Caption := 'Reset';
TabOrder := 5;
end;
WriteLn('InitForm compiled in ' + IntToStr(GetSystemTime - TimeInitForm) + ' milliseconds!');
end;
WriteLn('InitForm compiled in ' + IntToStr(GetSystemTime - TimeInitForm) + ' milliseconds!');
end;

procedure SafeInitForm;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
ThreadSafeCall('InitForm', v);
end;

procedure ShowInitFormModal;
begin
AppTool.ShowModal;
end;

procedure SafeShowInitFormModal;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
ThreadSafeCall('ShowInitFormModal', v);
end;

procedure MainInitForm;
begin
try
SafeInitForm;
SafeShowInitFormModal;
finally
AppTool.Free;
except
WriteLn('An error seems to have occurred in: InitForm');
end;
end;

begin
ClearDebug;

MainInitForm;
if (EndInitForm) then
TerminateScript;
end.

I have fixed up some form elements position that were somewhy below their planned position, made it to compile in simba(createform, messagebox), changed ".include srl" to "$i srl"(in the checking function).
So I have not changed anything(except .include -> $i) in the scoring system so that may not suffice for today, but I think it's good enough.

TL;DR: Made it to look good and compile.

Kyle Undefined

2012-01-05 12:22:28

Nice work :D

[Nathan]

2012-01-05 12:44:14

Looks good, needs updating to simba, srl-5 though I would imagine.

Add $i srl - ?
Add repeat - while loops do the same thing?

[XoL]

2012-01-05 12:44:20

Got 89% on it with my R4_ManThief3 (+ Attitude/Post count) :P
Tempting to apply now, but I think I should wait haha.


Add fflag
Add tdtmpointdef
You should Apply for members if you havent cheated!
[==================================]
[= Result: 89%
[==================================]

Shuttleu

2012-01-05 13:19:55

LOL
Add while
GET RID OF clickmouse
Make sure you free your form: Freeform(formname);
Make sure include walking in your script!
Getting a high post count will increase your chances
Please select a attitude to increase your score
Sorry not good enough yet, or ethier you do not use SRL stuff.
[==================================]
[= Result: 18%
[==================================]


dont need any whiles
i dont use ClickMouse, i use ClickMouse2
my form does get freed
dont need walking

this is VV btw

~shut