SCAR Code:
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.