Hobbit
2007-11-20 00:56:11
Hey well I was digging around through some old files on an online storage thing I have, since I really have nothing better to do during my stay, and I stumbled apon some old gems.
They're some ancient scripts from SRL's private days along with Original SRL 11
I'll attach SRL but put the scripts in SCAR tags aswell as attach.
Have fun looking through some SRL history :)
They're some ancient scripts from SRL's private days along with Original SRL 11
I'll attach SRL but put the scripts in SCAR tags aswell as attach.
Have fun looking through some SRL history :)
{===========================================================================]
[ Dankness Village Fisher ]
[ ]
[ NAME : Draynor Village Fisher ]
[ WRITER : Dankness ]
[ DESCRIPTION : Fishes and Banks in Draynor Village and Lumbridge ]
[ AUTOCOLOR : Yes ]
[ VERSION : 2.25 ]
[ SRL VERSION : 1.1 Revision 483? ]
[ ]
[===========================================================================]
[ Instructions. ]
[===========================================================================]
[ 1. USE Scunerape with Low Detail, Very Bright. ]
[ 2. Set your Screen to 32 bit TRUE color. ]
[ 3. Set Variables as Needed on Lines 49-53 ]
[ 4. Run Script and SetUp Players in Player Manager ]
[ 5. Have Extra Fishing Equipment on First Page of Bank Booth ]
[ 6. Have Feathers if Fly Fishing on First Page of Bank Booth ]
[===========================================================================]
[ Major Credits to the Following People : ]
[ --> Thanks to WT-Fakawi for His Walking Procedures, DTMs and All the ]
[ Advise he's Given me :) ]
[ --> Thanks to Masquerader for his Sweet Player Management Forms ]
[ --> Thanks to Stupid3000 for SSI2 and his great Scripts ]
[ --> Credit to MoparisBest,Odie5553,HatlessCow and many others that I ]
[ Learned to script from there scripts ]
[===========================================================================}
program DraynorNetFisher;
{.include SRL\SRL.Scar}
{.include SRL\SRL\Skill\Fishing.Scar}
{.include SRL\SRL\Misc\DraynorColorFinder.Scar}
{.include SRL\SRL\Misc\PlayerForm.Scar}
//----------------------------------------------------------------------------//
var FishSpotDTM, ShrimpDTM, SalmonDTM, TroutDTM, AnchovieDTM,
NetDTM, FeatherDTM, DB1, DB2, DB3, FishingWaitTime,
FishColor, TotalShrimp, TotalAnchovies, TotalSalmons,
TotalTrouts, Trips, TripsToDo : Integer;
UseGUI, UseAntiBan : Boolean;
FishingText : string;
//----------------------------------------------------------------------------//
// Set Variables Here
//----------------------------------------------------------------------------//
procedure SetUpVars;
begin
BenMouse := False; //** Use Benlands Spline Mouse ( sometimes Misclicks )
TripsToDo := 3; //** Amount of Trips to Do + Random 4 Trips before Switching Chars
RandomPlayer := True; //** Set to True to Pick a Random Player each Player Switch
UseAntiBan := True; //** Will Chat, Rotate Screen, Check Exp and other humanlike behavors
UseGUI := True; //** Must Use GUI Atleast Once to Setup Chars.SRL, Afterwards it will Load Players from File
ReinCarnate := True; //** Set to True to Attempt Walkback on Death, Works 100% of the Time
end;
//----------------------------------------------------------------------------//
// Set Colors Here if Having Problems With AutoColor Picker
//----------------------------------------------------------------------------//
procedure SetColorsHere;
begin
BankColor := 0; //** Bank Color on MiniMap ** Leave at Zero to Autoset
FishColor := 0; //** Color of the Fish Logo on Minimap ** Leave at Zero to autoset
RockColor := 0; //** Color of the Rock on Minimap ** Leave at Zero to autoset
WaterColor := 0; //** Color of the Water on Minimap ** Leave at Zero to autoset
RoadColor := 0; //** Color of the Road on Minimap ** Leave at Zero to autoset
end;
//----------------------------------------------------------------------------//
// DTMs and General Variables
//----------------------------------------------------------------------------//
procedure SetFishingStyle;
begin
case LowerCase ( Players[CurrentPlayer].Skill ) of
'net' : begin
FishingText := 'Net';
FishingWaitTime := 3500;
NetDTM := FishingItemDTM[1];
end;
'lure' : begin
FishingText := 'Lure';
FishingWaitTime := 7000;
NetDTM := FishingItemDTM[3];
end;
end;
end;
procedure LoadDTMs;
begin
DB1 := DTMFromString('78DA636C67626008664001FFFFFF67F80FA41' +
'921ECFF8CB54035DEA86AFEFC61621081AA0101C63A4C73B0AA09' +
'C7AF06000153117B');
DB2 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' +
'921ECFF8C3540353EA86AFEFC61621081AA0101C63AA09A1022D4' +
'44E057030001B5117D');
DB3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' +
'921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40026A' +
'6A816A42F1AB010000781176');
FishSpotDTM := DTMFromstring('78DA63FCC4C0C070910105CC38F086410E483' +
'342F98C1F31D5E4B52C4255F399083520BB2E10A1E6127E3500EE' +
'831204');
AnchovieDTM := DTMFromString('78DA632C64626078CA800232329A194480342' +
'394CF580E547317554D71F10454354540356F51D5F4F46E425593' +
'0154F398805D5540358F18D000238A1A00484D0D11');
ShrimpDTM := DTMFromString('78DA632C606260E062644006299E160C22401' +
'A26CA980154C389AA665E671DAA9A6AA01A665435CB26B4A0AA29' +
'04AA114455737EFF361435003AE608D8');
SalmonDTM := DTMFromString('78DA639CCDC4C0F08C0105CC4E0E671001D28' +
'C503EE30CA09A57A86A0ED7E6A3AA590854F31455CDFEAA1C5435' +
'73806A1EA1AA4977B242510300BD7E0BF4');
TroutDTM := DTMFromString('78DA632C626260E0616440067B366D621001D' +
'23051C61CA01A7E543547F7ED4355530E54C381AA66DDA245A86A' +
'4076B1A3AAA92C2C4051030009CD0A03');
FeatherDTM := DTMFromString('78DA632C65626078CC800276AC5BCB2002A41' +
'9A17CC642A09A67A86A0EEFDE85AAA61CA8E61EAA1A060D064C73' +
'9E1350530654F304BF7B0074B60DDD');
end;
const Ver = 'v2.25';
const VerDate = '04.25.06';
//----------------------------------------------------------------------------//
// Title Screen
//----------------------------------------------------------------------------//
procedure Intro;
var a:string; i:integer;
begin
WriteLn ( '________' );
WriteLn ( '\______ \____________ ___.__. ____ ___________' );
WriteLn ( ' | | \_ __ \__ \< | |/ \ / _ \_ __ \' );
WriteLn ( ' | ` \ | \// __ \\___ | | ( <_> ) | \/' );
WriteLn ( '/_______ /__| (____ / ____|___| /\____/|__|' );
WriteLn ( ' \/ \/\/ \/' );
WriteLn ( ' _______ __ __' );
WriteLn ( ' \ \ _____/ |__/ |_ ___________' );
WriteLn ( ' / | \_/ __ \ __\ __\/ __ \_ __ \' );
WriteLn ( '/ | \ ___/| | | | \ ___/| | \/' );
WriteLn ( '\____|__ /\___ >__| |__| \___ >__|' );
WriteLn ( ' \/ \/ \/' );
WriteLn (' --> Version 2.25 --> by Dankness <-- '+VerDate);
A := '/';
for I := 1 to 48 do A := A + '=';
A := A + '\';
writeln(a);
a:='|';
for I := 1 to 10 do A := A + ' ';
A := A + 'Please Vist The SRL Forum at';
for I := 1 to 10 do A := A + ' ';
A := A + '|';
writeln(a);
WriteLn ('| [url]http://www.villavu.com/forums/[/url] |');
a:='\';
for I := 1 to 48 do A := A + '=';
A := A + '/';
Writeln ( A );
Wait( 500 + Random (500));
end;
//----------------------------------------------------------------------------//
// Auto Color Detection Procedures
//----------------------------------------------------------------------------//
procedure CouldNotFindColors;
begin
WriteLn ('ERROR, script could not find colors, please run the script again'
+' or set your own colors.');
TerminateScript;
end;
procedure SetColorsIfNeeded;
var C : Integer;
begin
PerfectNorth;
if ( ReinCarnate ) then
begin
repeat
C:=C+1;
wait(100);
FindDraynorRoadColor(588,39,617,71);
until (C>100) or (RoadColor<>0);
C:=0;
repeat
C:=C+1;
wait(100);
FindDraynorWaterColor;
until (C>100) or (WaterColor<>0);
C:=0;
repeat
C:=C+1;
wait(100);
FindDraynorRockColor;
until (C>100) or (RockColor<>0);
writeln('Road Color MM : '+inttostr(RoadColor));
writeln('Water Color MM : '+inttostr(WaterColor));
writeln('Rock Color MM : '+inttostr(RockColor));
if (( RoadColor = 0 ) or ( WaterColor = 0 ) or ( RockColor = 0)) then
begin
ReinCarnate := False;
WriteLn ('Could Not Find Colors for WalkBack Please Stand at Lowest Bank Slot and Align MiniMap to North and Restart Script/Change Worlds');
WriteLn (' Script will Work Without Walkback Function.');
end;
end;
if ( BankColor = 0 )then begin
Status ( 'Finding bank color please Wait...');
while ( BankColor = 0 ) do
begin
C := C + 1;
if ( BankColor = 0 )then BankColor := GetSymbolColor ( x, y, 'bank');
if ( C > 20 ) then CouldNotFindColors;
Wait ( Random ( 50 ) + 500);
end;
end;
WriteLn ( 'Bank Color MM : ' + IntToStr ( BankColor));
end;
procedure SetFishColorIfNeeded;
var C : Integer;
begin
if ( FishColor = 0 )then begin
Status('Finding Fish Logo color please Wait...');
while ( FishColor = 0 )do
begin
C := C + 1;
if( FishColor = 0 )then FishColor := GetSymbolColor ( x, y, 'fish');
if ( C > 20 ) then CouldNotFindColors;
Wait( Random ( 50 ) + 500 );
end;
WriteLn ('Fish Color MM : '+ IntToStr ( Fishcolor ));
end;
end;
//----------------------------------------------------------------------------//
//** Location Functions
//----------------------------------------------------------------------------//
function WeAreAtBank : Boolean;
begin
if ( FindSymbol ( x, y, 'bank' )) or ( FindMMColor ( x, y, BankColor )) then
begin
Players[CurrentPlayer].Loc := 'Draynor Bank';
Result := True;
end;
end;
function WeAreAtFish : Boolean;
begin
if ( FindSymbol ( x, y, 'fish' )) or ( FindMMColor ( x, y, FishColor )) then
begin
Players[CurrentPlayer].Loc := 'At-Fish';
Result := True;
end;
end;
function WeAreInLumbridgeCastle: Boolean;
var WX, WY:integer;
begin
if ( (FindSymbol(x, y, 'water')) and (not FindColor(WX, WY, WaterColor, MMX1, MMY1, MMX2, MMY2)) ) then
begin
Players[CurrentPlayer].Loc := 'Lumbridge';
Result := True;
end;
end;
function WeAreAtFurnace : Boolean;
begin
if ( FindSymbol ( x, y, 'furnace') ) then Result := True;
end;
//----------------------------------------------------------------------------//
procedure FindRegularRandoms;
begin
FindNormalRandoms;
end;
//----------------------------------------------------------------------------//
// Walkback From Lumbridge procedures Based On WT-Fawkis Procedures
//----------------------------------------------------------------------------//
procedure WalkLumbridgeFishtoDraynor;
var RX, RY : Integer;
begin
Face ('N');
SetRun ( False );
if ( not ( LoggedIn )) then Exit;
if ( WeAreAtFish ) then begin
if ( FindMMColor ( X, Y, FishColor )) then Mouse( X, Y , 4, 4, True );
Flag;
// if ( FindMMColor ( X, Y, FishColor )) then Mouse( X, Y - 30, 4, 4, True );
If ( FindColorTolerance ( X, Y, 1191750, MMX1, MMY1, MMX2, MMY2, 60 )) then
MouseFindFlag ( X, Y, 2, 1);
Wait ( 5000 + Random ( 2000 ));
Flag;
MarkTime ( Mark );
repeat
Wait ( 100 );
FindRegularRandoms;
if(TimeFromMark(Mark) > 60000) then begin Logout; Exit; end;
if ( not ( LoggedIn )) then Exit;
until ( WeAreAtFurnace );
if ( WeAreAtFurnace ) then Mouse ( X, Y - 20, 3, 3, True );
FFlag ( 10 );
end;
MarkTime(Mark);
Repeat
if not(Loggedin) then Exit;
if(TimeFromMark(Mark) > 60000) then begin Logout; Exit; end;
RadialWalk(RoadColor, 260, 380, 40, 1, -1);
FindRegularRandoms;
Until FindColor(RX, RY, RockColor, MMX1+10, MMY1+10, MMX2-10, MMY2-10);
MarkTime(Mark);
SetRun(True);
RadialWalk(RoadColor,200,300,60,-1,1);
RadialWalk(RoadColor,200,300,60,-1,1);
Repeat
if not(Loggedin) then Exit;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
RadialWalk(RoadColor,200,350,40,1,-1);
FindRegularRandoms;
Until FindColor(RX,RY,RockColor,MMX1+30,MMY1+30,MMX2-30,MMY2-30);
SetRun(False);
RadialWalk(RoadColor,200,350,60,1,-1);
MarkTime(Mark);
Repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
FindRegularRandoms;
RadialWalk(RoadColor,120,320,40,-1,1);
Until FindColor ( x, y, BankColor, MMX1, MMY1, MMX2, MMY2 );
Mouse (X, Y, 3, 3, True);
if (not(loggedin)) then exit;
end;
//----------------------------------------------------------------------------//
procedure WalkLumbridgetoDraynor;
var RC : Integer;
begin
Face ('N');
MarkTime ( Mark );
repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
FindRegularRandoms;
Until WeAreInLumbridgeCastle;
if ( WeAreInLumbridgeCastle ) then
begin
PerfectNorth;
LinearWalk(RoadColor, 90, 80, -1, 0);
Flag;
RadialWalk(RoadColor, 370, 220, 72, 0, 1);
for RC := 1 to 2 do
RadialWalk(RoadColor, 370, 220, 60, 0, 1);
end;
end;
//----------------------------------------------------------------------------//
Procedure WalkDraynorToLumbridge;
var RX,RY:integer;
Begin
Players[CurrentPlayer].Loc:='DraynorToLum';
MarkTime(Mark);
Repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
RadialWalk(RoadColor,430,320,40,-1,-1);
FindRegularRandoms;
Until FindColor(RX,RY,RockColor,MMX1+30,MMY1+30,MMX2-30,MMY2-30);
FFlag(10);
MarkTime(Mark);
repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
FindRegularRandoms;
if FindColor(x,y,WaterColor,680,65,701,71) then Break;
RadialWalk(RoadColor,170,30,50,-1,-1);
FindRegularRandoms;
until FindColor(x,y,WaterColor,640,10,722,61);
MarkTime(Mark);
repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
FindRegularRandoms;
RadialWalk(RoadColor,80,240,40,0,-1);
until FindSymbol(rx,ry,'furnace');
FFlag(10);
RadialWalk(RoadColor,160,200,35,0,-1);
repeat
FindRegularRandoms;
Wait(100);
if not(Loggedin) then break;
if(TimeFromMark(Mark)>600000) then begin Logout; Exit; end;
Until(FindSymbol(rx,ry,'furnace'));
Mouse( RX, RY - 20, 3, 3, True);
Flag;
MouseFindFlag ( 710, 88, 1, 1 );
Flag;
SetFishColorIfNeeded;
If ( WeAreAtFish ) then Mouse ( X, Y, 3, 3, True );
FFlag ( 10 );
if ( FindColor ( X, Y, FishColor, MMX1, MMCY + 20, MMX2, MMY2 )) then Mouse ( X, Y, 3, 3, True );
FFlag ( 10 );
end;
//----------------------------------------------------------------------------//
// Walking Procedures for Draynor Net Fishing
//----------------------------------------------------------------------------//
procedure WalkDraynortoBank;
begin
Face ('N');
Status ( 'Walking to Bank' );
if ( not ( LoggedIn )) then Exit;
Mouse( 665, 43, 5, 2, True);
Flag;
Players[CurrentPlayer].Loc :='Walk-Bank';
if ( FindMMColor ( X, Y, BankColor )) then
Mouse ( X, Y, 3, 3, True );
Flag;
end;
procedure WalkDraynorBankToFish;
var RR : Integer;
begin
Face ('N');
Status ( 'Walking to Fish' );
RR := Random ( 11 );
if ( RR = 3 ) or ( RR = 5 ) or ( RR = 8 ) then
SetRun ( True );
if ( not ( LoggedIn )) then Exit;
Players[CurrentPlayer].Loc :='Walk-Fish';
Face ( 'N' );
Mouse( 649, 123, 5, 5, True);
FFlag ( 10 );
SetFishColorIfNeeded;
MarkTime ( Mark );
Repeat
if not ( Loggedin ) then Exit;
if(TimeFromMark(Mark)>240000) then begin Logout; Exit; end;
Wait ( 100 + Random ( 100 ));
Until ( FindMMColor ( x, y, FishColor ));
Mouse( x, y, 4, 4, True);
FFlag ( 10 );
Players[CurrentPlayer].Loc :='At-Fish';
end;
//----------------------------------------------------------------------------//
// FindRandoms Procedure
//----------------------------------------------------------------------------//
procedure PlayDead;
begin
if (GetColor(30, 418) = 0) and (GetColor(72, 429) = 0) then
begin
Deaths:=Deaths+1;
if Reincarnate then
WalkLumbridgetoDraynor
else
begin
Players[CurrentPlayer].Loc := 'Died';
Players[CurrentPlayer].Active := False;
Logout;
end;
end;
end;
procedure FindRandoms;
begin
FindRegularRandoms;
PlayDead;
FindScapeRune;
GambleNewBox;
FindTrade;
if (UseAntiBan) then begin
HoverEvery ( 10 + Random ( 10 ), 'fishing');
LogOutEvery( 2 + Random ( 2 ), 5 + Random ( 5));
RandomChatEvery ( 10 + Random ( 5));
RotateEvery ( 20 + random( 10 ));
LeaveScreenEvery ( 5 + random ( 5 ));
end;
if(KillScriptTime>0)then KillScript ( KillScriptTime );
if ( FindFight ) then begin
SetRun ( True );
RunAwayDirection ( 'E' );
Wait ( 5000 + Random ( 3000 ));
if ( not ( FindMMColor ( x,y, FishColor ))) then RunBack;
if ( FindMMColor ( x, y, FishColor )) then Mouse ( x, y, 5, 5, True );
FFlag ( 10 );
end;
if (NoGameTab or InBlack or FindNewBox) then LogOut;
DwarfItem;
end;
//----------------------------------------------------------------------------//
// Walking Procedures
//----------------------------------------------------------------------------//
procedure WalkToBank;
begin
case ( LowerCase ( Players[CurrentPlayer].Skill )) of
'net' : WalkDraynortoBank;
'lure' : WalkLumbridgeFishtoDraynor;
end;
end;
procedure WalkToFish;
begin
case ( LowerCase ( Players[CurrentPlayer].Skill )) of
'net' : WalkDraynorBankToFish;
'lure' : WalkDraynorToLumbridge;
end;
end;
//----------------------------------------------------------------------------//
// Fishing Procedures
//----------------------------------------------------------------------------//
function CheckFeathers : Boolean;
begin
if ( LowerCase ( Players[CurrentPlayer].Skill ) = 'lure' ) and
( not ( FindInvDTM ( X, Y, FeatherDTM ))) then Result := True;
end;
function DoneFishing : Boolean;
begin
if ( InventoryFull ) then Result := True;
if ( not ( LoggedIn )) then Result := True;
if ( not (FindFishingEquipment )) then Result := True;
CheckFeathers;
end;
function FindFish : Boolean;
begin
if ( LoggedIn ) then Begin
Result:= False;
If ( FindMsDTM ( X, Y, FishSpotDTM )) then
MMouse ( x, y, 5, 5);
Result := Option2( FishingText );
Mouse ( X, Y, 5, 5, True );
end;
end;
procedure FindFishingSpot;
begin
if ( LoggedIn ) then Begin
if ( DoneFishing ) then Exit;
MarkTime ( Mark );
repeat
Status('Waiting Until Fishing Spot Appears');
Wait ( 300 + Random ( 300 ));
FindRandoms;
if ( DoneFishing ) then Exit;
if ( TimeFromMark ( Mark ) > 600000 ) then Logout;
until ( FindFish ) or ( DoneFishing );
end;
end;
//----------------------------------------------------------------------------//
// Banking Procedures
//----------------------------------------------------------------------------//
procedure WalkToBanker;
begin
if ( FindMMDtm ( X, Y, DB1 )) or ( FindMMDtm ( X, Y, DB2)) or ( FindMMDtm ( X, Y, DB3 )) then
Mouse ( x, y, 0, 0, True);
FFlag ( 10 );
end;
procedure WithdrawNet;
begin
if ( BankScreen ) and ( not ( FindInvDTM ( X, Y, NetDTM ))) then
begin
if ( FindMsDTM ( X, Y, NetDTM )) then Mouse ( x, y, 5, 5, True );
Wait ( 500 + Random ( 500 ));
CloseWindow;
end;
end;
procedure DepositFish;
var TempCounter,TempCount,ShrimpCount,AnchovyCount,TroutCount,SalmonCount : Integer;
begin
if ( FindInvDTM ( X, Y, ShrimpDTM ) ) then begin
TempCount := InventoryCount;
Mouse (x, y, 5, 5, False);
Wait ( 250 + Random ( 100));
ChooseOption ( x, y, 'Store All' );
Wait ( 1000 + Random ( 400 ));
TempCounter := InventoryCount;
Shrimpcount := TempCount - TempCounter;
TotalShrimp := TotalShrimp + ShrimpCount;
Players[CurrentPlayer].MagicLevel := Players[CurrentPlayer].MagicLevel + ShrimpCount;
Status('Caught ' + IntToStr ( TotalShrimp ) + ' Shrimp[s] so far.');
end;
if ( FindInvDTM ( X, Y, AnchovieDTM ) ) then begin
TempCount := InventoryCount;
Mouse ( x, y, 5, 5, False );
Wait ( 250 + Random ( 100));
ChooseOption ( x, y, 'Store All' );
Wait ( 1000 + Random ( 400 ));
TempCounter := InventoryCount;
AnchovyCount := TempCount - TempCounter;
TotalAnchovies := TotalAnchovies + AnchovyCount;
Players[CurrentPlayer].CraftingLevel := Players[CurrentPlayer].CraftingLevel + AnchovyCount;
Status ('Caught ' + IntToStr ( TotalAnchovies ) + ' Anchovy[s] so far.');
end;
if ( FindInvDTM ( X, Y, SalmonDTM ) ) then begin
TempCount := InventoryCount;
Mouse (x, y, 5, 5, False);
ChooseOption ( x, y, 'Store All' );
TempCounter := InventoryCount;
Salmoncount := TempCount - TempCounter;
TotalSalmons := TotalSalmons + SalmonCount;
Players[CurrentPlayer].StrengthLevel := Players[CurrentPlayer].StrengthLevel + SalmonCount;
Status('Caught ' + IntToStr ( Players[CurrentPlayer].StrengthLevel ) + ' Salmon[s] so far.');
end;
if ( FindInvDTM ( X, Y, TroutDTM ) ) then begin
TempCount := InventoryCount;
Mouse ( x, y, 5, 5, False );
ChooseOption ( x, y, 'Store All' );
TempCounter := InventoryCount;
TroutCount := TempCount - TempCounter;
TotalTrouts := TotalTrouts + TroutCount;
Players[CurrentPlayer].DefenceLevel := Players[CurrentPlayer].DefenceLevel + TroutCount;
Status ('Caught ' + IntToStr ( Players[CurrentPlayer].DefenceLevel ) + ' Trout[s] so far.');
end;
end;
procedure WithdrawFeathers;
begin
if ( Players[CurrentPlayer].Skill = 'lure' ) then begin
if ( FindMsDTM ( X, Y, FeatherDTM ) ) then begin
Mouse ( x, y, 5, 5, False );
ChooseOption ( x, y, 'Withdraw X' );
repeat
Wait ( 100 );
if (not ( BankScreen )) then Exit;
until ( not ( GetColor ( 145, 434 ) = 0 ) );
Wait ( 150 + Random ( 100) );
TypeSend ( '27' + Chr ( 13 ) );
end;
end;
end;
procedure Bank;
begin
WalkToBanker;
Flag;
MarkTime(Mark);
repeat
if not ( Loggedin ) then Exit;
if(TimeFromMark(Mark)>60000) then begin Logout; Exit; end;
OpenBank;
until (BankScreen);
Flag;
Wait ( 500 + Random ( 500 ));
if ( BankScreen ) then begin
Players[CurrentPlayer].Loc :='At-Bank';
Status('Depositing Fishes');
DepositFish;
Deposit( 2, 28, 2);
if ( not ( FindInvDTM ( X, Y, NetDTM ))) then
begin
Deposit( 1, 28, 2);
WithdrawNet;
end;
Wait ( 1000 + Random ( 500 ));
WithdrawFeathers;
Players[CurrentPlayer].Banked := Players[CurrentPlayer].Banked + 1;
Banks := Banks + 1;
Trips := Trips + 1;
CloseWindow;
Gametab ( 2 );
Players[CurrentPlayer].MiningLevel := GetSkillLevel ( 'fishing' );
if not ( FindFishingEquipmentColor ) then
begin
Writeln(Players[CurrentPlayer].Name + ' is Out of Nets');
Players[CurrentPlayer].Loc :='No-Nets';
Logout;
Exit;
end;
end else begin
Writeln(Players[CurrentPlayer].Name + ' is Lost to Bank Booth');
Players[CurrentPlayer].Loc :='Lost';
logout;
exit;
end;
end;
//----------------------------------------------------------------------------//
// Progress Reports
//----------------------------------------------------------------------------//
procedure PlayerStats;
var Active: string;
var I : Integer;
begin
WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
WriteLn (' Name : '+ Players[CurrentPlayer].Name);
WriteLn (' Number : '+ IntToStr (CurrentPlayer));
WriteLn (' Fishing Level : '+ IntToStr (Players[CurrentPlayer].MiningLevel));
if (Players[CurrentPlayer].MiningLevel > Players[CurrentPlayer].AttackLevel) then
WriteLn (' Levels Gained : '+ IntToStr (Players[CurrentPlayer].MiningLevel - Players[CurrentPlayer].AttackLevel) );
if (Players[CurrentPlayer].Worked > 0 ) then
WriteLn (' Worked for : '+ IntToStr (Players[CurrentPlayer].Worked)+' minutes.');
WriteLn (' Banked : '+ IntToStr (Players[CurrentPlayer].Banked) + ' times.');
WriteLn (' Location : '+ Players[CurrentPlayer].loc);
if ( Players[CurrentPlayer].MagicLevel > 0 ) then
WriteLn (' Shrimp Fished : '+ IntToStr ( Players[CurrentPlayer].MagicLevel ));
if ( Players[CurrentPlayer].CraftingLevel > 0 ) then
WriteLn (' Anchovys Fished : '+ IntToStr ( Players[CurrentPlayer].CraftingLevel ));
if ( Players[CurrentPlayer].StrengthLevel > 0 ) then
WriteLn (' Salmon Fished : '+ IntToStr ( Players[CurrentPlayer].StrengthLevel ));
if ( Players[CurrentPlayer].DefenceLevel > 0 ) then
WriteLn (' Trout Fished : '+ IntToStr ( Players[CurrentPlayer].DefenceLevel ));
I := ( ( Players[CurrentPlayer].CraftingLevel * 40 ) + ( Players[CurrentPlayer].MagicLevel * 10 ));
I := I + (( Players[CurrentPlayer].DefenceLevel * 50 ) + ( Players[CurrentPlayer].StrengthLevel * 70 ));
if ( I > 0 ) then
WriteLn (' Exp Gained : '+ IntToStr ( I ));
WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
for i := 0 to HowManyPlayers-1 do
begin
if Players[I].Active=True then Active := 'True' else Active := 'False';
WriteLn ( ( IntToStr ( I )) + ' : '+ Players[I].Name + ' = ' + Active + '. - Lvl : ' + IntToStr ( Players[I].MiningLevel)+
'. - B :'+IntToStr (Players[i].Banked)+' Times.'+
' - : '+IntToStr (Players[i].Worked)+' mins.'+' - Loc: '+Players[i].loc);
end;
WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
end;
function ReportInStyle ( Number : Integer ) : String;
var T : string;
begin
if ( Number > 10 ) then T := ' |' else T := ' |';
Result := InttoStr ( Number ) + T;
end;
procedure RandomsReport;
begin
ChangeReportWidth ( 240 );
ClearReport;
AddtoReport ( '/~~~~~~~~~~~~~~~~~~~~~~~~~\');
AddToReport ( '| Draynor Netter |');
AddtoReport ( '|~~~~~~~~~~~~~~~~~~~~~~~~~|');
if ( Fights > 0 ) then AddtoReport ( '| Fight Random[s] : ' + ReportInStyle ( Fights ) );
if ( Talks > 0) then AddtoReport ( '| Talking Random[s] : ' + ReportInStyle ( Talks ) );
if ( Lamps > 0) then AddtoReport ( '| Lamp[s] Solved : ' + ReportInStyle ( Lamps ) );
if ( Frogs > 0 ) then AddtoReport ( '| Frog[s] Solved : ' + ReportInStyle ( Frogs ) );
if ( Certers > 0 ) then AddtoReport( '| Certer[s] Solved : ' + ReportInStyle ( Certers ) );
if (WhirlPools > 0 ) then AddtoReport('| Whirlpool[s] : ' + ReportInStyle ( WhirlPools ) );
if ( Logs > 0 ) then AddtoReport ( '| Logged in : ' + ReportInStyle ( Logs ) );
if ( Demons > 0 ) then AddtoReport ( '| Demon[s] Solved : ' + ReportInStyle ( Demons ) );
if ( NewBoxes > 0 ) then AddtoReport ( '| New Box[s] Solved : ' + ReportInStyle ( NewBoxes ) );
if ( Trades > 0 ) then AddtoReport ( '| Trade[s] Made : ' + ReportInStyle ( Trades ) );
if ( Deaths > 0 ) then AddtoReport ( '| Death[s] : ' + ReportInStyle ( Deaths ) );
AddtoReport ( '\~~~~~~~~~~~~~~~~~~~~~~~~~/' );
end;
procedure ProgressReport;
var TotalRandoms : Integer;
begin
WriteLn ('/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\');
Writeln ('| Draynor Netter '+ Ver +' Progress Report --> by Dankness |');
Writeln ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
WriteLn (' Worked for '+ TimeRunning);
WriteLn (' Banked '+IntToStr ( Banks ) + ' Total Loads[s].');
if ( TotalShrimp > 0 ) then
WriteLn (' Fished ' + InttoStr ( TotalShrimp ) + ' Total Shrimp[s] so far.');
if ( TotalAnchovies > 0 ) then
WriteLn (' Fished ' + InttoStr ( TotalAnchovies ) + ' Total Anchovie[s] so far.');
if ( TotalSalmons > 0 ) then
WriteLn (' Fished ' + InttoStr ( TotalSalmons ) + ' Total Salmon[s] so far.');
if ( TotalTrouts > 0 ) then
WriteLn (' Fished ' + InttoStr ( TotalTrouts ) + ' Total Trout[s] so far.');
TotalRandoms := ( TotalShrimp * 10 ) + ( TotalAnchovies * 40 ) + ( TotalTrouts * 50 ) + ( TotalSalmons * 70 );
WriteLn (' Gained Aprox. ' + Inttostr(TotalRandoms)+' Total XP so far.');
TotalRandoms := ( Fights + Talks + Lamps + Frogs + Certers + Whirlpools + Logs + Demons + NewBoxes + Trades );
if ( TotalRandoms > 0 ) then RandomsReport;
PlayerStats;
end;
//----------------------------------------------------------------------------//
procedure CheckStuff;
var FishingItemText : String;
begin
Face ( 'N');
SetFishingStyle;
Gametab( 2 );
if Players[CurrentPlayer].AttackLevel = 0 then Players[CurrentPlayer].AttackLevel:=GetSkillLevel ('fishing');
Players[CurrentPlayer].MiningLevel := GetSkillLevel ('fishing');
if ( Players[CurrentPlayer].Skill = 'lure' ) and ( Players[CurrentPlayer].MiningLevel < 20 ) then
begin
WriteLn ( Players[CurrentPlayer].Name + ' Needs Atleast 20 Fishing to Fly Fish');
Logout;
Exit;
end;
Status ( 'Checking for Fishing Equipment');
GameTab ( 4 );
if ( FindInvDTM ( X, Y, NetDTM )) then
FindFishingEquipmentColor
else
Begin
OpenBank;
Wait ( 1500 + Random ( 500 ));
FixBank;
WithDrawNet;
if ( Players[CurrentPlayer].Skill = 'lure' ) then FishingItemText := 'Fly Fishing Rod';
if ( Players[CurrentPlayer].Skill = 'net' ) then FishingItemText := 'Small Fishing Net';
if ( FindInvDTM ( X, Y, NetDTM )) then
if (FindFishingEquipmentColor) then Exit;
Players[CurrentPlayer].Loc := 'Bank - No '+FishingItemText;
WriteLn ('Cant fish without a '+FishingItemText);
Logout;
Exit;
end;
if ( Players[CurrentPlayer].Skill = 'lure' ) and
( not ( FindInvDTM ( X, Y, FeatherDTM ))) then
begin
OpenBank;
Wait ( 1500 + Random ( 500 ));
FixBank;
WithDrawFeathers;
Wait ( 500 + Random ( 1000 ));
if ( FindInvDTM ( X, Y, FeatherDTM )) then Exit;
Players[CurrentPlayer].Loc := 'Bank - No Feathers';
WriteLn ('Cant fish without a Feathers');
Logout;
Exit;
end;
end;
//----------------------------------------------------------------------------//
// Main Loop
//----------------------------------------------------------------------------//
procedure SetUp;
begin
SetUpSRL;
SetUpVars;
LoadSRLFishingBitMaps;
Intro;
LoadDtms;
if ( UseGUI) then
SetupPlayers
else
LoadUS;
SetColorsHere;
end;
begin
SetUp;
LoginPlayer;
SetColorsIfNeeded;
repeat
CheckStuff;
if ( LoggedIn ) then
if WeAreAtBank then WalkToFish;
FindRandoms;
repeat
if ( DoneFishing ) then Break;
FindFishingSpot;
MarkTime ( Mark );
if ( DoneFishing ) then Break;
repeat
FindRandoms;
if ( DoneFishing ) then Break;
Status( 'Fishing' );
if ( DoneFishing ) then Break;
Wait ( 500 + Random ( 1000 ));
HandleWhirlPool;
until ( TimeFromMark ( Mark ) > FishingWaitTime + Random ( FishingWaitTime / 2 ));
if ( not( LoggedIn )) then Break;
Wait ( 500 + Random ( 500 ));
until ( DoneFishing );
if ( LoggedIn ) then
if WeAreAtFish then WalktoBank;
if ( LoggedIn ) then
Bank;
ProgressReport;
if ( Trips >= TripsToDo + Random ( 3 ) + 1) then begin
Status ( Players[CurrentPlayer].Name + ' has Completed '+IntToStr ( Trips ) + ' Trips Now Switching Players.');
repeat
Wait ( 1000 );
FindRandoms;
until ( not ( LoggedIn ));
Trips := 0;
NextPlayer ( true );
repeat
Wait ( 2000 );
until ( LoggedIn );
end;
if ( not ( LoggedIn )) then NextPlayer ( False );
until ( False);
end.
{-----> Version History <------
--> v1.25 --> ???????? --> First Public Release
--> v1.50 --> 03.29.06 --> Major Rewrite of 90% of Procedures
Added Check for Net After Bank
Fixed Bug with Not Banking after FullInventory
Added Skill Level Counters to Progress Report
Added Masquraders PlayerForm
Added Total Shrimp,Anchovy Counter and Exp Gained to Report
--> v2.00 --> 04.02.06 --> Added Lure Fishing in Lumbridge and Many Many Things
Should be 95% Bug Free Now
--> v2.10 --> 04.15.06 --> Fixed some of the Bugs with Lumbridge Walking
--> v2.25 --> 04.25.06 --> Now Compatble with SRL 1.1
Fixed Some Bugs Fawki Found.
}
{ Script name: Ram Pwner v2 by c0de (lupiga@gmail.com)
Instructions:
- SETUP LINES 33-38
- Use Low Detail client
- 32 bit colors
- Very Bright
- Highest angle
- Stand in the most North-West corner of lumby sheep pen.
- Wear 3 items only
- Hit run and have fun.
Credits:
- SRL Community ([url]http://www.villavu.com/forums/index.php[/url])
- WT-Fakawi (OpenGate procedure)
Note:
I'm not responsible for any loss you may occur while using this script.
This script is for educational purposes. Use at your own risk!
}
program RamPwner;
{.include SRL/SRL.scar}
const
HornColor1 = 922990;
HornColor2 = 923765;
GreenStatusColor = 65280;
GateColor = 2840954;
// ----- Setup ----- //
Username = ''; // Username
Password = ''; // Password
TotalRams = 100; // total rams we are going to kill.
FightInterface = 1; // 1 - attack , 2 - strength , 3 - controlled , 4 - defensive
ReportTime = 120; // how often to print out progress report. (in seconds).
DeathWalk = 1; // 1 for do lumby deathwalk, 0 to disable deathwalking
// - End Of Setup - //
//----------- I suggest you not to edit code below ---------- //
var
KillCount : integer;
RamsKilled : integer;
WeDied : integer;
procedure Findc0deRandoms; // ripped out from SRL anti randoms findnormalrandom (modded)
var
i : Integer;
begin
for i:=1 to 11 do
begin
case I of
1: CloseWindow;
2: begin
if(Findname)Then
FindTalk;
end;
3: FindSandwich;
4: FindLamp('Mining');
5: FindMime;
6: FindMaze;
7: FindQuiz;
8: FindFrog;
9: FindDemon;
10: FindScapeRune;
11: begin
If(FindNewBox)then
begin
if not GambleNewBox then Logout;
Exit;
end;
end;
end;
wait(1);
end;
// SetTimeout(5,'Findc0deRandoms');
end;
procedure LogBack; //log back after death
begin
MMouse(450,284,3,3);
Mouse(450,284,3,3,True);
Wait(2000+Random(500));
SendText(Username);
SendText(chr(13));
SendText(Password);
Wait(1000+Random(500));
MMouse(294,321,3,3);
Mouse(294,321,3,3,True);
Wait(4500+Random(500));
MMouse(495,341,3,3);
Mouse(495,341,3,3,True);
end;
function CheckAreWeDead : Boolean; //my way for checking death=p
begin
if(IsChatMessage('Oh dear you are dead!')) then
begin
Result := True;
end;
end;
procedure CheckStatus; //checks if we're in fight...
var
x,y : integer;
begin
repeat
Findc0deRandoms;
wait(2000+random(500));
until(not(FindColorSpiral(x,y,GreenStatusColor,240,140,290,175)));
end;
procedure FightRam; //finds ram and clicks on it.
var
x,y : integer;
begin
repeat;
if(FindObj(x,y,'tta',HornColor2,30)) then
begin
MMouse(x,y,2,2);
Mouse(x,y,2,2,true);
Flag;
CheckStatus;
KillCount := KillCount+1;
end;
until(CheckAreWeDead);
end;
// Ripped out of WT-Fakawi's CowKiller and modded by c0de. All credits goes to him!
function OpenGate : boolean;
var
eks,vaj : integer;
begin
Result := False;
repeat;
if(FindObjMultiText(eks,vaj,'pen','lose','pen', GateColor, 20)) then
begin
if IsUpText('lose') then
begin
Result := True;
exit;
end;
if IsUpText('pen') then
begin
Mouse(eks, vaj, 0, 0, True);
Result := True;
exit;
end;
end;
until(OpenGate);
end;
procedure DoDeathWalk; //walks back to pen (amazing, it works :D)
var
x, y : array[1..6] of integer;
i : integer;
begin
SetRun(true);
//declaring path to sheep pen
x[1] := 679;
y[1] := 42;
x[2] := 621;
y[2] := 36;
x[3] := 628;
y[3] := 47;
x[4] := 632;
y[4] := 28;
x[5] := 605;
y[5] := 58;
x[6] := 621;
y[6] := 64;
i := 1
repeat
MMouse(x[i],y[i],0,0);
Mouse(x[i],y[i],0,0,true);
i := i+1;
Flag;
Wait(50);
until(i=5);
Flag;
ClickMMColorTol(243,1);
Flag;
repeat
wait(100);
until(OpenGate);
i := 5;
repeat
MMouse(x[i],y[i],0,0);
Mouse(x[i],y[i],0,0,true);
i := i+1;
Flag;
until(i=7);
end;
procedure CheckDeath;
begin
if((DeathWalk = 1) and (CheckAreWeDead)) then
begin
WeDied := WeDied + 1;
LogOut;
Wait(1000+Random(300000)); // ''little'' 2 minute pause just to get glass of water or something
LogBack;
Wait(3000+Random(400)); //screen thingy, let's wait a lil for rs to load.. stupid jagex
if (ExistsItem(1)) then
UseItem(1);
if (ExistsItem(2)) then
UseItem(2);
if (ExistsItem(3)) then
UseItem(3);
DoDeathWalk;
end;
end;
procedure ProgressReport; //progress report
begin
SetTimeout(ReportTime,'ProgressReport');
RamsKilled := KillCount;
Writeln('.-----[ Ram Pwner v2 by c0de ]------->');
Writeln('|');
Writeln('| -> Killed '+inttostr(RamsKilled)+' out of '+inttostr(TotalRams)+' rams.');
Writeln('| -> Total time spent: '+TimeRunning);
Writeln('| -> Died '+inttostr(WeDied)+' times');
Writeln('|');
Writeln('`--------------------------------->');
Writeln('');
end;
// ---- Main loop ---- //
begin
SetupSRL;
BenMouse := True; // :) works good for meh :S
MouseSpeed:= 5;
SetupDemon;
DisguiseScar(':: SRL :: Ram Pwner by c0de');
ActivateClient;
SetRun(true);
WeDied := 0;
KillCount := 0;
Face('N');
GameTab(1);
SetFightMode(FightInterface);
SetTimeout(ReportTime,'ProgressReport');
RotateEvery(5);
LeaveScreenEvery(3);
HoverEvery(6,'random');
Writeln('--> Using Ram Pwner by c0de <--');
repeat
Findc0deRandoms;
wait(500);
FightRam;
CheckStatus;
CheckDeath;
until(KillCount = TotalRams);
CheckStatus;
Writeln('Job done. Have fun ('+inttostr(KillCount)+'/'+inttostr(TotalRams)+' Rams killed)');
Wait(9000+random(1000));
Logout;
end.{==========================================================================]
[ Dankness Barbarian FlyFisher ]
[ ]
[ NAME : Barbarian Village FlyFisher ]
[ WRITER : Dankness ]
[ DESCRIPTION : Fishes in Barb Village and Banks in Edgeville ]
[ AUTOCOLOR : Yes ]
[ VERSION : 1.25 ]
[ ]
[==========================================================================]
[ Start script in Edgeville Bank, Fly Fishing Rod in first slot, ]
[ 26 feathers in second inventory slot, more feathers in first bank slot ]
[ more fly fishing rods in second bank slot. Setup Vars and Players ]
[==========================================================================]
[ Instructions. ]
[==========================================================================]
[ 1. USE Runescape with Low Detail, Very Bright. ]
[ 2. Set your Screen to 32 bit TRUE color. ]
[ 3. Set Playernames and Passwords in DeclarePlayers. ]
[ 4. Set Colors and other Varables in SetupVars ]
[ 5. Start script Logged In! ]
[==========================================================================]
[ Major Credits to the Following People : ]
[ --> Thanks to WT-Fakawi for his leet mapwalking procedures that I edited]
[ --> Thanks to Stupid3000 for SSI2 and his great Scripts ]
[ --> Thanks to the Entire SRL Development team for the Best Include! ]
[==========================================================================}
program BarbFlyFisher;
{.include srl.scar}
{.include srl\srl\skill\fishing.scar}
{.include srl\srl\misc\certerbreaker.scar}
var WaterColorDTM, FeatherDTM, FishSpotDTM,
SalmonDTM, TroutDTM, WaterDropDTM, FishColor,
TripsToDo, StartPlayer, Salmons, Trouts : Integer;
UseAntiBan : Boolean;
procedure SetUpVars;
begin
StartPlayer := 0; //** First Player to Use
HowManyPlayers := 2; //** Compliant with Dynamic Array;
TripsToDo := 12; //** Amount of Trips to Do before Switching Chars plus a random 5
UseAntiBan := True; //** Will Chat, Rotate Screen, Check Exp and other humanlike behavors
BankColor := 0; //** Bank Color on MiniMap Leave at Zero to Autoset
WaterColor := 0; //** Water Color on MiniMap Leave at Zero to autoset
FishColor := 0; //** Color of the Fish Logo on Minimap same as Waterdrop in Edgeville Leave at Zero to autoset
end;
Procedure DeclarePlayers;
begin
NumberOfPlayers(HowManyPlayers); // Set the Players Array Length;
CurrentPlayer:=StartPlayer; // CurrentPlayer = internal counter
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Loc :='At-Bank';
Players[0].Skill:='Fishing';
Players[0].Active:=True;
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Loc :='At-Bank';
Players[1].Skill:='Fishing';
Players[1].Active:=True;
Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].Loc :='Loc1';
Players[2].Skill:='';
Players[2].Active:=True;
Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].Loc :='Loc1';
Players[3].Skill:='';
Players[3].Active:=True;
Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].Loc :='Loc1';
Players[4].Skill:='';
Players[4].Active:=True;
Players[5].Name :='';
Players[5].Pass :='';
Players[5].Nick :='';
Players[5].Loc :='Loc1';
Players[5].Skill:='';
Players[5].Active:=True;
writeln(inttostr(HowManyPlayers)+' Players');
end;
procedure CouldNotFindColors;
begin
WriteLn('ERROR, script could not find colors, please run the script again'
+' or set your own colors.');
TerminateScript;
end;
procedure TagLine1;
var I : Integer; A : string;
begin
WriteLn ( ' __________ ___. .__');
WriteLn ( ' \______ \_____ ______\_ |__ _____ _______|__|____ ____');
WriteLn ( ' | | _/\__ \\_ __ \ __ \\__ \\_ __ \ \__ \ / \');
WriteLn ( ' | | \ / __ \| | \/ \_\ \/ __ \| | \/ |/ __ \| | \');
WriteLn ( ' |______ /(____ /__| |___ (____ /__| |__(____ /___| /');
WriteLn ( ' \/ \/ \/ \/ \/ \/');
WriteLn ( ' ___________.__');
WriteLn ( ' \_ _____/| | ___.__. ___________');
WriteLn ( ' | __) | |< | |/ __ \_ __ \');
WriteLn ( ' | \ | |_\___ \ ___/| | \/');
WriteLn ( ' \___ / |____/ ____|\___ >__|');
WriteLn ( ' \/ \/ \/');
for I := 1 to 35 do A := A + Chr ( 32 );
WriteLn ( A + '--> Version 1.25 --> by Dankness <-- 3.11.06');
Wait ( 800 ) ;
A:='';
for I := 1 to 35 do A := A + Chr ( 32 );
A := A + '/';
for I:=1 to 42 do A := A + '~';
A := A + '\'
Writeln ( A );
A:='';
for I := 1 to 35 do A := A + Chr ( 32 );
A := A + '|';
for I:=1 to 5 do A := A + Chr ( 32 );
A := A + 'Please Vist The SRL Community At';
for i:=1 to 5 do A := A + Chr ( 32 );
A := A + '|';
WriteLn ( A );
A := '';
for I := 1 to 35 do A := A + Chr ( 32 );
A := A + '|';
for I:=1 to 6 do A := A + Chr ( 32 );
A := A + 'http://www.villavu.com/forums/';
for I:=1 to 6 do A := A + Chr ( 32 );
A := A + '|';
writeln( A );
A := '';
for I := 1 to 35 do A := A + Chr ( 32 );
A := A + '<';
for I:=36 to 77 do A := A + '~';
A := A+ '>';
WriteLn(A);
wait( 500 + Random (500));
end;
const Ver = '1.25';
procedure Setcolorsifneeded;
var C : Integer;
begin
if ( FindSymbol ( x, y, 'bank' ) ) then begin
if ( BankColor = 0 ) then begin
Status('Finding bank color please Wait...');
while ( BankColor = 0 ) do
begin
C := C + 1;
if ( BankColor = 0 ) then BankColor := GetSymbolColor ( x, y, 'bank' );
if ( c > 20 ) then CouldNotFindColors;
Wait( Random ( 50 ) + 500);
end;
end;
if ( WaterColor = 0 ) then begin
Status ( 'Finding water color please wait...' );
if ( FindMmDtm ( WaterColorDtm ) ) then WaterColor := GetColor ( x, y ) else CouldNotFindColors;
end;
if ( FishColor = 0 ) then begin
Status('Finding fish logo color please wait...');
if ( FindMMDtm ( WaterDropDtm ) ) then FishColor := GetColor ( x, y ) else CouldNotFindColors;
end;
Writeln( 'Bank Color MM...' + IntToStr ( BankColor ) );
Writeln( 'Water Color MM...' + IntToStr ( WaterColor ) );
Writeln( 'Fish Color MM...' + IntToStr ( FishColor ) );
end;
end;
procedure loaddtms;
begin
FeatherDTM := DTMFromString('78DA632C65626078CC800276AC5BCB2002A41' +
'9A17CC642A09A67A86A0EEFDE85AAA61CA8E61EAA1A060D064C73' +
'9E1350530654F304BF7B0074B60DDD');
WaterColorDTM := DTMFromString('78DA633CC0C4C010CB8002B26AE632D800694' +
'6289FB10CA8261A554D715616AA9A2EA09A2A5435360622A86A16' +
'01D578A3AAC968554255B310A8C614BF1A006B790B5E');
WaterDropDTM := DTMFromString('78DA634C606260D06640018CD667186C40348' +
'C1F0754A389AA66EBA15BA86A92816AD450D5ACDFB506554D3450' +
'8D3A7E3500CFE00AA1');
SalmonDTM := DTMFromString('78DA639CCDC4C0F08C0105CC4E0E671001D28' +
'C503EE30CA09A57A86A0ED7E6A3AA590854F31455CDFEAA1C5435' +
'73806A1EA1AA4977B242510300BD7E0BF4');
TroutDTM := DTMFromString('78DA632C626260E0616440067B366D621001D' +
'23051C61CA01A7E543547F7ED4355530E54C381AA66DDA245A86A' +
'4076B1A3AAA92C2C4051030009CD0A03');
FishSpotDTM := DTMFromstring('78DA63FCC4C0C070910105CC38F086410E483' +
'342F98C1F31D5E4B52C4255F399083520BB2E10A1E6127E3500EE' +
'831204');
end;
procedure CheckLost;
begin
if ( not ( FindColor ( x, y, FishColor, 627, 67, 670, 100 ) ) ) and
(FindMMColor ( x, y, FishColor ) ) then Mouse ( x, y, 3, 3, True );
Flag;
end;
Procedure HandleFight;
begin
if ( FindFight ) then begin
SetRun ( True );
RunAwayDirection ( 'W' );
Wait ( 5000 + Random ( 1000 ) );
RunBack;
end;
end;
procedure FindRandoms;
begin
CloseWindow;
ClickToContinue;
if (Findname) Then FindTalk;
FindLamp('fishing');
FindDead;
FindMod;
FindMime;
FindMaze;
FindQuiz;
// FindFrog;
FindCerter;
FindDoctor;
FindDemon;
if (FindNewBox) then Logout;
if (UseAntiBan) then begin
hoverevery(15+random(3),'fishing');
LogOutEvery(2+random(2),5+random(5));
RandomChatEvery(10+random(5));
RotateEvery(10+random(10));
LeaveScreenEvery(5+random(5));
end;
if(KillScriptTime>0)then KillScript(KillScriptTime);
end;
function GotoBank : Boolean;
begin
Result := False;
if ( InventoryCount >= 27 ) then Result := true;
If not( FindFishingEquipment ) then Result := True;
if not ( FindInvDTM ( FeatherDTM ) ) then Result := True;
end;
procedure WalkToBank;
var I:Integer;
begin
if ( FindMMColor ( x, y, FishColor ) ) then
Mouse ( x, y, 3, 2, True );
Flag;
Status ( 'Walking to Bank' );
Mouse (607 , 49, 3, 1, True );
Flag;
Players[CurrentPlayer].Loc :='Walk-Bank';
MarkTime ( Mark );
I := 0;
Repeat
HandleFight;
I := I + 1;
if not ( LoggedIn ) then Exit;
if ( TimeFromMark ( Mark ) > 240000 ) then begin Logout; Exit; end;
FindRandoms;
//RadialWalk(WaterColor, 420, 325, 55, -5, 0)
RadialWalk ( WaterColor, 0, 80, 25, -5, 0);
if ( I > 50 ) and
( FindColor ( x, y, WaterColor, 636, 19, 700, 98) ) then begin
Mouse ( x - 10 , y, 0, 6, True);
Flag;
I := 0;
end;
Until ( FindMMColor ( X, Y, BankColor ) );
Mouse ( x, y, 5, 5, True);
Flag;
ToBankers ( BankColor, -5, 12 );
end;
procedure WaitOnFlag;
var C : Integer;
begin
C := 0;
repeat
if ( not ( LoggedIn ) ) then Exit;
Wait ( 25 );
C := C + 1;
until (FlagPresent) or (C = 100);
end;
procedure WalkToFish;
var I : Integer;
begin
PerfectNorth;
Players[CurrentPlayer].Loc :='Walk-Fish';
Status ( 'Walking to Fish' );
Mouse ( 683, 107, 5, 5, True );
Wait ( 500 + Random ( 250) ); // fixes top bank booth bug hopefully
WaitOnFlag;
if ( not ( LoggedIn ) ) then exit;
Flag;
MarkTime ( Mark );
I := 0;
Repeat
I := I + 1;
Status( 'Walking to Fish Step #' + InttoStr ( I ) );
if ( I > 20 ) then begin
if ( FindColor (x, y, Watercolor, 640, 121, 716, 159) ) then
Mouse ( x-10, y, 2, 6,True);
Flag;
I := 0;
end;
if not ( Loggedin ) then Exit;
if ( TimeFromMark ( Mark ) > 240000 ) then begin Logout; Exit; end;
FindRandoms;
if ( FindMMColor ( x, y, Fishcolor ) ) then Break;
RadialWalk ( WaterColor, 180, 90, 40, -5, 0 );
Until ( FindMMColor (x ,y , FishColor ) );
if ( FindMMColor (x ,y , FishColor) ) then
Mouse ( x, y, 4, 4, True);
Flag;
end;
function FindHole : Boolean;
begin
Result := False;
If ( FindMsDTM ( FishSpotDTM ) ) then
MMouse (x ,y ,5 ,5 );
Result := Option2('Lure');
end;
procedure DoFishing;
var C : Integer;
begin
FindRandoms;
if ( GotoBank ) then Exit;
C := 0;
repeat
CheckLost;
HoverEvery ( 3 + Random ( 3 ) ,'fishing' );
Status('Waiting til fishing spot appears');
Wait( 300 + Random ( 300 ) );
FindRandoms;
if ( C <= 3 ) and ( not ( LoggedIn ) ) then
Loginplayer;
if ( C >= 3) and ( not ( LoggedIn ) ) then Exit;
if ( GotoBank ) then Exit;
until ( FindHole );
if ( FindHole ) then Mouse (x ,y ,3 ,3 , True);
MarkTime ( Mark );
if ( GotoBank ) or ( InventoryCount >= 27 ) then exit;
repeat
if ( GotoBank ) or ( InventoryCount >= 27 ) then exit;
Status('Fishing');
if( TimeFromMark ( Mark ) > 6000 + Random ( 2000 ) ) then
DoFishing;
if ( not ( LoggedIn ) ) then Exit;
Wait ( 500 + Random ( 500 ) );
FindRandoms;
HandleWhirlPool;
TalkToRand;
until ( GotoBank ) or ( InventoryCount >= 27 );
end;
procedure DepositFish;
var TempCounter,TempCount,TroutCount,SalmonCount : Integer;
begin
TempCount := InventoryCount;
if ( FindInvDTM ( SalmonDTM ) ) then begin
Mouse (x, y, 5, 5, False);
ChooseOption ( x, y, 'Store All' );
TempCounter := InventoryCount;
salmoncount := TempCount - TempCounter;
Salmons := Salmons + SalmonCount;
Status('Caught ' + IntToStr ( Salmons ) + ' Salmon[s] so far.');
end;
TempCount := InventoryCount;
if ( FindInvDTM ( TroutDTM ) ) then begin
Mouse ( x, y, 5, 5, False );
ChooseOption ( x, y, 'Store All' );
TempCounter := InventoryCount;
TroutCount := TempCount - TempCounter;
Trouts := Trouts + TroutCount;
Status ('Caught ' + IntToStr ( Trouts ) + ' Trout[s] so far.');
end;
end;
procedure WithdrawFeathers;
begin
if ( FindMsDTM ( FeatherDTM ) ) then begin
Mouse ( x, y, 5, 5, False );
ChooseOption ( x, y, 'Withdraw X' );
repeat
Wait ( 100 );
if ( not ( LoggedIn ) ) then Exit;
until ( not ( GetColor ( 145, 434 ) = 0 ) );
Wait ( 150 + Random ( 100) );
TypeSend ( '26' + Chr ( 13 ) );
end;
end;
procedure AreWeTrippingYet;
begin
if ( Banks >= TripsToDo + Random ( 5 ) ) then begin
Writeln(Players[CurrentPlayer].Name+' Has Completed The TripsToDo Now Switching Chars');
repeat
Wait(1000);
FindRandoms;
until ( not ( LoggedIn ) );
NextPlayer ( True );
end;
end;
procedure Bank;
begin
Openbank3;
Status('Finding bank');
if ( BankScreen ) then begin
Players[CurrentPlayer].Loc := 'At-Bank';
Status( 'Depositing Fishes' );
DepositFish;
if ( not ( FindColor ( x, y, FishingEquipmentColor, 547, 191, 694, 429) ) ) then
begin
Deposit(1,28,2);
Withdraw(2,1,1);
end else
Deposit(2,28,2);
Status ( 'Withdrawing Feathers' );
WithdrawFeathers;
Wait ( 1000 + Random ( 500 ) );
if not ( FindInvDTM ( FeatherDTM ) ) then begin
Players[CurrentPlayer].Loc :='Bank-No Feathers';
Writeln ( 'Out of feathers' );
LogOut;
Exit;
end;
Banks := Banks + 1;
Players[CurrentPlayer].Banked := Players[CurrentPlayer].Banked + 1;
Closewindow;
AreWeTrippingYet;
end else begin
Writeln(Players[CurrentPlayer].Name+' is Lost to Bank Booth');
Players[CurrentPlayer].Loc :='Lost';
Logout;
Exit;
end;
end;
procedure setup;
begin
SetUpSRL;
SetupVars;
LoadDtms;
TagLine1;
Wait(750);
Reincarnate := False;
LoadSRLFishingBitMaps;
DeclarePlayers;
end;
procedure PlayerStats;
var Active: string;
var i: Integer;
begin
PlayerCurTime := (GetSystemTime div 1000);
Players[CurrentPlayer].Worked := Players[CurrentPlayer].Worked + ((PlayerCurTime - PlayerStartTime) / 60);
if Players[CurrentPlayer].Active=True then Active:='True' else Active:='False';
WriteLn('<==================================================================>');
writeln('Name : '+ Players[CurrentPlayer].Name);
writeln('Number : '+ inttostr(CurrentPlayer));
writeln('Fishin Level : '+ inttostr(Players[CurrentPlayer].MiningLevel));
writeln('Worked for : '+ inttostr(Players[CurrentPlayer].Worked)+' minutes.');
writeln('Banked : '+ inttostr(Players[CurrentPlayer].Banked) + ' times.');
writeln('Active : '+ Active);
writeln('Location : '+ Players[CurrentPlayer].loc);
WriteLn('<==================================================================>');
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active=True then Active:='True' else Active:='False';
writeln( (inttostr(i))+' : '+Players[i].name+ ' = '+Active+'. - Lvl : '+inttostr(Players[i].MiningLevel)+
'. - B :'+inttostr(Players[i].Banked)+' Times.'+
' - : '+IntToStr(Players[i].Worked)+' mins.'+' - Loc: '+Players[i].loc);
end
WriteLn('<==================================================================>');
end;
function ReportInStyle ( Number : Integer ) : String;
var T : string;
begin
if ( Number > 10 ) then T := ' |' else T := ' |';
Result := InttoStr ( Number ) + T;
end;
procedure RandomsReport;
begin
ChangeReportWidth ( 240 );
ClearReport;
AddtoReport ( '/=========================\');
AddToReport ( '| Barbarian Flyer |');
AddtoReport ( '|=========================|');
if ( Fights > 0 ) then AddtoReport ( '| Fight Random[s] : ' + ReportInStyle ( Fights ) );
if ( Talks > 0) then AddtoReport ( '| Talking Random[s] : ' + ReportInStyle ( Talks ) );
if ( Lamps > 0) then AddtoReport ( '| Lamp[s] Solved : ' + ReportInStyle ( Lamps ) );
if ( Frogs > 0 ) then AddtoReport ( '| Frog[s] Solved : ' + ReportInStyle ( Frogs ) );
if ( Certers > 0 ) then AddtoReport( '| Certer[s] Solved : ' + ReportInStyle ( Certers ) );
if (WhirlPools > 0 ) then AddtoReport('| Whirlpool[s] : ' + ReportInStyle ( WhirlPools ) );
if ( Logs > 0 ) then AddtoReport ( '| Logged in : ' + ReportInStyle ( Logs ) );
if ( Demons > 0 ) then AddtoReport ( '| Demon[s] Solved : ' + ReportInStyle ( Demons ) );
AddtoReport ( '\=========================/' );
end;
procedure ProgressReport;
var RandomCount, Seconds, AVTime, TotalFish, TotalExp : LongInt;
begin
Seconds := ( ( GetSystemTime - ST ) div 1000 );
If ( Banks > 0 ) and ( Seconds > 0 ) then
AvTime := ( Seconds / Banks ) else AvTime := 1;
RandomCount := ( Fights + Talks + Lamps + Frogs + Certers + Whirlpools + Logs + Demons );
TotalFish := Trouts + Salmons;
TotalExp := ( Salmons * 70 ) + ( Trouts * 50 );
Writeln('--------------> Barbarian Flyer ' + Ver + ' Progress Report <--------------');
writeln('Worked for ' + TimeRunning);
WriteLn('Banked ' + IntToStr ( Banks ) + ' loads[s].');
writeln('Used ' + IntToStr ( Banks * 26 ) + ' feather[s] so far.');
writeln('Fished ' + InttoStr ( Trouts ) + ' trouts so far.');
writeln('Fished ' + InttoStr ( Salmons ) + ' salmons so far.');
writeln('Gained Aprox. '+Inttostr(Salmons*70+Trouts*50)+' Xp so far.');
WriteLn('Currently Averaging about ' + IntToStr ( 3600 / AVTime * ( TotalFish / Banks ) ) +
' Fish and ' + FloattoStr ( Round ( 3600 / AVTime * ( TotalExp / Totalfish * ( TotalFish / Banks ) ) ) ) + ' xp an hour.' );
WriteLn('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>');
if ( RandomCount > 0 ) then RandomsReport;
PlayerStats;
end;
function WeAreAtBank : Boolean;
begin
Result := False;
if ( FindSymbol ( x, y, 'bank' ) ) or ( FindMMColor ( x, y, BankColor)) then
Result := true;
if ( Result ) then Players[CurrentPlayer].Loc:='At-Bank';
end;
function WeAreAtFish : Boolean;
begin
Result := False;
if ( FindSymbol (x ,y , 'fish' ) ) or ( FindMMColor ( x, y, FishColor ) ) then
Result := True;
if ( Result ) then Players[CurrentPlayer].Loc:='At-Fish';
end;
procedure mainloop;
begin
repeat
SetRun ( True );
if WeAreAtBank then WalkToFish;
if ( not ( LoggedIn ) ) then Exit;
if WeAreAtfish then DoFishing;
if ( not ( LoggedIn ) ) then Exit;
WalkToBank;
if ( not ( LoggedIn ) ) then Exit;
if WeAreAtBank then Bank;
ProgressReport;
if ( not ( LoggedIn ) ) then Exit;
until ( True = False );
writeln('Well the impossible has happened... please look outside for a hole in the universe... (H)!');
end;
procedure CheckStuff;
var Failed : Boolean;
begin
Gametab ( 4 );
Failed:=false;
if Not ( FindFishingEquipmentColor ) then begin
Writeln('Cant fish without a Rod');
Failed := true;
end;
if ( Not( FindInvDTM ( FeatherDTM ) ) ) then begin
Openbank;
if ( Bankscreen ) then begin
Withdrawfeathers;
Closewindow;
end;
if (not( FindInvDTM ( FeatherDTM ) ) ) then begin
Writeln('Cant fish without feathers');
Failed := true;
end;
end;
if ( Failed ) then begin
Logout;
Nextplayer ( False );
end;
end;
begin
Setup;
LoginPlayer;
SetColorsIfNeeded;
repeat
if WeAreAtBank then CheckStuff;
MainLoop;
Writeln('Starting script over');
if ( not( LoggedIn ) ) then
NextPlayer ( False );
until ( False );
end.
{ Version History
--> 2.24.06 --> 1.00 --> First Version
--> 2.25.06 --> 1.01 --> Fixed Bugs
--> 2.26.06 --> 1.02 --> Fixed Banking Bug, Now Feathers can be anywhere in bank
Fixed walking to Fish spot bug because dtm got covered by people
Added Checklost counters to Walking.
Hopefully Fixed Died Problems
--> 3.01.06 --> 1.03 --> Rewrote FishFinder with DTMs
--> 3.11.06 --> 1.10 --> Fixed alot of Minor Bugs, SuperCleaned Code
--> 3.12.06 --> 1.25 --> First Public Release
}
{=========================================================================]
[ SRL Guildminer 0.22. ]
[ ]
[ NAME : SRL Guildminer 0.22 ]
[ WRITER : Stupid3ooo, modded by WT-Fakawi ]
[ CATEGORY : Miner ]
[ DESCRIPTION : See below. ]
[ USAGE : Miner/banker for coal ]
[ AUTOCOLOR : NO. SET LADDER AND STATUE COLOR ]
[ SRL REV. : #220+ ]
[ NOTES : New RS update has changed some colors ]
[ Set manual MM Statue and Ladder color ]
[=========================================================================]
| Description: |
| A macro that mines a full load of coal in the miner's guild, |
| and if chosen, mithril, then banks it in the east Falador bank. | |
| Instructions: |
| 1.Set the Runescape brightness to V-bright, and your computer's |
| resolution to 32bit resolution. |
| 2.Need SCAR version 2.0.3. |
| 3.Start script in the Falador eastern bank. |
| 4.Start with a pickaxe in your fist inventory slot or equiped. |
| 5.Recomended to have extra pickaxes in your first bank slot. |
| 6.Click and drag the crosshair over the Runescape client. |
Then press the green arrow. |
| 7.You may set your own colors lines 35-45 (optional). |
[=========================================================================}
program SRLGuildMiner;
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/Mining.scar}
{.include SRL/SRL/misc/FaladorColorFinder.scar}
const
//=//===============Colors(Leave as 0 to let script find)==============\=\\
RockColor1 = 0;
RockColor2 = 0;
RockColor3 = 0;
MithColor1 = 0;
MithColor2 = 0;
MithColor3 = 0;
MMLadderColor = 1129331; // NEEDS TO BE SET MANUALLY
MMPickColor = 0;
MMOreColor = 0;
MMStatueColor = 9803426; // NEEDS TO BE SET MANUALLY TOO
MMBankColor = 0;
Const StartPlayer = 0;
Const Loads = 100; // Number of loads before switching user.
Const MSGasColor1 = 8101281; // New gas color.
Const MSGasColor2 = 9218480; // New gas color.
Const MSGasColor3 = 4417137; // New gas color.
//*************************************************************************//
Const VersionNumber = '0.18';
//*************************************************************************//
var MapPickColor,MapOreColor,StatueColor,LadderColor,
TotalOres,OreCol1,OreCol2,OreCol3,MaxWait:integer;
var FirstgRun,NoRocks,Look4Gas,MineMith:boolean;
var FB1,FB2,FB3: Integer; // BankerDTMs (Yellow dots at three angles)
//*************************************************************************//
Procedure DeclarePlayers;
begin
HowManyPlayers:=6;
NumberOfPlayers(HowManyPlayers); // set arraylength
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Loc :='Falador';
Players[0].Active:=True;
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Loc :='Falador';
Players[1].Active:=False;
Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].Loc :='Falador';
Players[2].Active:=True;
Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].Loc :='Falador';
Players[3].Active:=True;
Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].Loc :='Falador';
Players[4].Active:=True;
Players[5].Name :='';
Players[5].Pass :='';
Players[5].Nick :='';
Players[5].Loc :='Falador';
Players[5].Active:=False;
end;
//*************************************************************************//
Procedure FillMem;
begin
FB1 := DTMFromString('78DA636C66626008634001972E5E66F80FA41' +
'981F83F1030B601D5C4A0AAF9F38789810BAA0604189B8850D345' +
'580D00CA7B110D');
FB2 := DTMFromString('78DA63EC61626008614001478F1E65F80FA41' +
'981F83F1030F602D544A1AAF9F38789810BAA0604182712A1662A' +
'504D247E3500C2961107');
FB3 := DTMFromString('78DA636C646260086140038C0CFFC12403C37' +
'F206004A9894255F1E70F130317540D58472B504D3401359D4035' +
'31F8D50000978B0E8E');
end;
//*************************************************************************//
procedure PlayerStats;
var Active: string;
var i: Integer;
begin
WriteLn(' ');
WriteLn(' ');
WriteLn(' ');
writeln('**********************************************');
writeln('Name : '+ Players[CurrentPlayer].Name);
writeln('Number : '+inttostr(CurrentPlayer));
writeln('Mining Level : '+ inttostr(Players[CurrentPlayer].MiningLevel));
writeln('Worked for : '+IntToStr(Players[CurrentPlayer].Worked)+' minutes.');
writeln('Banked : '+ inttostr(Players[CurrentPlayer].Banked) + ' times.');
if Players[CurrentPlayer].Active=True then Active:='True' else Active:='False';
writeln('Active : '+ Active);
writeln('Location : '+ Players[CurrentPlayer].loc);
writeln('**********************************************');
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active=True then Active:='True' else Active:='False';
writeln( (inttostr(i))+' : '+Players[i].name+ ' = '+Active+
'.- Lvl : '+inttostr(Players[i].MiningLevel)+
'.- B :'+inttostr(Players[i].Banked)+' Times.'+
'.- A: '+IntToStr(Players[i].Worked)+' mins.'+
'.- Loc: '+Players[i].loc);
end
writeln('**********************************************');
end;
//*************************************************************************//
procedure ProgressReport;
begin
WriteLn(' ');
WriteLn(' ');
WriteLn(' ');
WriteLn('<============== -'+VersionNumber+'- Progress Report ===============>');
writeln('Worked for '+ TimeRunning);
WriteLn('Banked '+IntToStr(banks)+' loads[s].');
WriteLn('Banked '+IntToStr(TotalOres)+' Ores.');
WriteLn('Random Event Report:');
if(fights>0)then WriteLn(' Fought '+IntToStr(fights)+' Time[s].');
if(talks>0)then WriteLn(' Talked to '+IntToStr(talks)+' Random event[s].');
if(lamps>0)then WriteLn(' Used lamps '+IntToStr(lamps)+' Time[s].');
if(doctors>0)then WriteLn(' Solved '+IntToStr(doctors)+' Fords[s].');
if(frogs>0)then WriteLn(' Solved '+IntToStr(frogs)+' Frog[s].');
if(Attaches>0)then WriteLn(' Attached '+IntToStr(Attaches)+' Pickaxe[s].');
if(boxes>0)then WriteLn(' Solved '+IntToStr(boxes)+' Box[es].');
if(Demons>0)then WriteLn(' Solved '+IntToStr(Demons)+' Demon[s].');
if(logs>0)then WriteLn(' Logged in '+IntToStr(logs)+' Time[s].');
WriteLn('<=====================================================>');
PlayerStats;
end;
//===========================Color Finding procedures=========================\\
procedure SetColors;
begin
StatueColor :=MMStatueColor;
BankColor :=MMBankColor;
LadderColor :=MMLadderColor;
MapOreColor :=MMOreColor;
MapPickColor:=MMPickColor;
OreColor1 :=RockColor1;
OreColor2 :=RockColor2;
OreColor3 :=RockColor3;
end;
//*************************************************************************//
procedure Setup;
begin
SetupSRL;
SetUpSRLMining;
FillMem;
EquipPick:= True; // Wielding.
PickUpItems:=True; // to pick up random items when pickhead is gone.
DeclarePlayers;
CurrentPlayer:=StartPlayer;
LoginPlayer; // logs in the first player.
FirstgRun:=True;
Look4Gas:= true; // Set to false if you are having trouble with it constantly finding gas.
MaxWait:= 10; // Maximum time in seconds to wait while mining a rock.
SetColors;
GasColor:= 8166047; //Reference color of gas.
end;
//*************************************************************************//
function FindStatueColor:integer;
var
c,a,b:integer;
begin
while c<65 do
begin
c:=c+5;
if(FindColorSpiralTolerance(a,b,256,570,50,725,162,1))then
begin
if(FindColorSpiralTolerance(x,y,8684686,a,b-5,a+20,b+5,c))then
begin
Result:=GetColor(x,y);
Break;
end;
end;
end;
end;
//*************************************************************************//
function FindLadderColor:integer;
var
c,a,Color,TrueCount:integer;
begin
while c<50 do
begin
c:=c+5;
if(FindColorSpiralTolerance(x,y,256,570,50,725,162,1))then
begin
if(TrueCount=0)or(TrueCount=1)then a:=1;
if(TrueCount=2)or(TrueCount=3)then a:=-1;
repeat
if(TrueCount=0)or(TrueCount=2)then x:=x+a;
if(TrueCount=1)or(TrueCount=3)then y:=y+a;
if(TrueCount=0)and((SimilarColors(865635,GetColor(x,y),c)=true)or
(SimilarColors(5961,GetColor(x,y),c)=true))then
begin
TrueCount:=TrueCount+1;
Color:=GetColor(x,y);
Break;
end;
if(TrueCount>0)and(GetColor(x,y)=Color)then
begin
TrueCount:=TrueCount+1;
Break;
end;
until(y<5)or(x<570)or(x>725)or(y>160)
end;
if(TrueCount>=3)then
begin
Result:=Color;
Break;
end;
end;
end;
//*************************************************************************//
function FindMapOreColor:integer;
var
MapOre,MapOre2:integer;
begin
MapOre := BitmapFromString(3, 3,
'3D2C345948546D5D624A39416D5D626D5D625948546D5D626D5D62' +
'');
MapOre2 := BitmapFromString(3, 3,
'061115222D35364243131E22364243364243222D35364243364243' +
'');
if(FindBitmapsProgressiveTol(MapOre,MapOre2,0,0,0,65,5,587,41,705,118))then
Result:=GetColor(x+1,y+1);
Freebitmap(MapOre);
Freebitmap(MapOre2);
end;
//*************************************************************************//
procedure CouldNotFindColors;
begin
WriteLn('ERROR, script could not find colors, please run the script again'
+' or set your own colors.');
TerminateScript;
end;
//*************************************************************************//
procedure FindBottomColorsIfNeeded;
var
c:integer;
begin
if((MapOreColor=0)or(MapPickColor=0))then
begin
WriteLn('Finding bottom colors please Wait...');
MouseFindFlag(700,90,0,1);
Flag;
while(MapOreColor=0)or(MapPickColor=0)do
begin
c:=c+1;
if(MapOreColor=0)then
MapOreColor:=FindMapOreColor;;
if(MapPickColor=0)then
MapPickColor:=GetSymbolColor(x,y,'mining spot');;
if(c>20)then
CouldNotFindColors;
Wait(500+Random(100));
end;
c:=0;
repeat
if not(Loggedin) then break;
if(FindMMColor(x,y,MapPickColor))then
begin
Mouse(x-20,y-20,40,40,true);
Flag;
Wait(1500+Random(500));
if(FindOreColors(2702910,5,15))then
Break;
end;
if(c>20)then
CouldNotFindColors;
until(false)
WriteLn('MapPickColor:'+IntToStr(MapPickColor)+
' MapOreColor:'+IntToStr(MapOreColor));
end;
end;
//*************************************************************************//
procedure FindTopColorsIfNeeded;
var
c:integer;
begin
if((StatueColor=0)or(BankColor=0)or(LadderColor=0))then
begin
WriteLn('Finding top colors please Wait...');
while(StatueColor=0)or(BankColor=0)or(LadderColor=0)do
begin
c:=c+1;
if(StatueColor=0)then
StatueColor:=FindStatueColor;
if(BankColor=0)then
BankColor:=GetSymbolColor(x,y,'bank');
if(LadderColor=0)then
LadderColor:=FindLadderColor;
if(c>20)then
CouldNotFindColors;
Wait(Random(50)+500);
end;
WriteLn('StatueColor:'+IntToStr(StatueColor)+
' BankColor:'+IntToStr(BankColor)+
' LadderColor:'+IntToStr(LadderColor));
end;
end;
//========================Map Walking procedures==============================\\
function Underground:boolean;
begin
if((FindColoredAreaTolerance(x,y,256,570,5,725,162,50,1)))then
begin
Result:=true;
end;
end;
//*************************************************************************//
function FindSillyGas(gx,gy: integer): boolean;
begin
if( (FindColorSpiralTolerance(gx,gy,MSGasColor1,gx-50,gy-50,gx+50,gx+50,5)) or
(FindColorSpiralTolerance(gx,gy,MSGasColor2,gx-50,gy-50,gx+50,gx+50,5)) or
(FindColorSpiralTolerance(gx,gy,MSGasColor3,gx-50,gy-50,gx+50,gx+50,5)))
then
result:=True
else
result:=False;
end;
//*************************************************************************//
procedure ToCenter;
begin
if(FindColorSpiral(x,y,MapPickColor,570,63,725,160))then
begin
Mouse(x-10,y-10,20,20,true);
FFlag(20);
Wait(1000+Random(100));
end else
begin
RoadWalk(MapOreColor,'S');
if(FindColorSpiral(x,y,MapPickColor,570,63,725,160))then
begin
Mouse(x-10,y-10,20,20,true);
FFlag(20);
Wait(1000+Random(100));
end;
end;
end;
//==========================Random Event procedures===========================\\
procedure RunAway;
begin
if(UnderGround)then
begin
RoadWalk(MapOreColor,'W');
ClickMMColor(LadderColor);
FFlag(10);
RoadWalk(MapOreColor,'E');
end else
begin
SetRun(true);
Mouse(648,35,5,5,true);
FFlag(10);
Wait(5000+Random(2000));
Mouse(648,135,5,5,true);
FFlag(10);
end;
end;
//*************************************************************************//
procedure FindRandoms;
begin
FindNormalRandoms;
Respond;
if FindName then FindTalk;
if(FindFight)then RunAway;
FindDoctor;
FindBox;
if(UnderGround)then
begin
if (FindGas(x,y)) then ToCenter;
FindPick;
if(FindColorSpiral(x,y,OreColor,210,130,300,220))then
begin
if(Look4Gas)then
begin
if(FindGas(x,y))then
ToCenter;
end;
end;
end;
end;
//*************************************************************************//
procedure GasChecker;
var temptime:LongInt;
begin
if FindSillyGas(MSCX,MSCY) then
begin
Mouse(252,174,0,0,True);
Writeln('SILLYGAS FOUND. HOLDING ALL ACTIVITIES FOR 15 SECONDS!!!');
MarkTime(temptime);
repeat
FindRandoms;
Wait(1000);
until(TimeFromMark(temptime)>=15000);
end
if GasCheck(MSCX,MSCY)then
begin
Mouse(252,174,0,0,True);
Writeln('GAS FOUND. HOLDING ALL ACTIVITIES FOR 15 SECONDS!!!');
MarkTime(temptime);
repeat
FindRandoms;
Wait(1000);
until(TimeFromMark(temptime)>=15000);
end
end;
//*************************************************************************//
procedure ClimbLadder;
var
c,cc:integer;
Under:boolean;
begin
for c:=1 to 10 do
begin
if(not(Underground))then
FindObj(x,y,'Climb',0,1);
if(Underground)then
FindObj(x,y,'Climb',7212,21);
if(IsUpText('Climb'))then
begin
Wait(100);
Mouse(x,y,0,0,false);
if(UnderGround)then
Under:=true;
if(ChooseOption(x,y,'Climb'))then
begin
repeat
cc:=cc+1;
if(under)and(not(UnderGround))then
Break;
if(under=false)and(UnderGround)then
Break;
Wait(Random(50)+1000);
until(cc>50)
Break;
end;
end;
end;
end;
//*************************************************************************//
procedure BankToGuild;
begin
if(not(UnderGround))then
begin
PerfectNorth;
if FirstgRun = True then
begin
MouseFindFlag(690,110,1,-1);
Flag;
FindTopColorsIfNeeded;
FindMMColor(x,y,StatueColor);
FirstgRun:=False;
end
else
begin
MarkTime(Mark);
repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>120000) then begin Logout; Exit; end;
RadialWalk(RoadColor,170,270,50,0,-1);
FindRandoms;
Wait(1000);
until(FindMMColor(x,y,StatueColor));
end;
Mouse(x-5,y+10,0,0,true);
Flag;
Wait(500+Random(500));
ClimbLadder;
Players[CurrentPlayer].loc:='Guild';
end;
end;
//*************************************************************************//
procedure GuildToBank; // improved walking. Stable now.
var
c:integer;
begin
if(UnderGround)then
begin
repeat
c:=c+1
RadialWalk(MapOreColor,210,270,70,-1,0);
until(FindMMColor(x, y, LadderColor))or(c>50)
ClickMMColor(LadderColor);
Flag;
Wait(500+Random(500));
ClimbLadder;
PerfectNorth;
MouseFindFlag(666,45,-1,-1);
Wait(2000+Random(1000));
Flag;
MarkTime(Mark);
Repeat
if not(Loggedin) then break;
if(TimeFromMark(Mark)>120000) then begin Logout; Exit; end;
Wait(1000);
FindRandoms;
LinearWalk(RoadColor,320,60,-1,1);
Until ((DTM3Flag(FB1,FB2,FB3,True)) or (TimeFromMark(Mark)>120000));
Flag;
Players[CurrentPlayer].loc:='Falador';
end;
end;
//*************************************************************************//
procedure Bank;
var LocalOres:integer;
begin
FindBox;
if (NoPick=true) and (EquipPick=true) then
begin
if InventoryFull then
begin
if(FindBitmapSpiralTolerance(Ore,x,y,559,210,735,460,25))then
begin
Mouse(x,y,5,5,false);
ChooseOption(x,y,'Drop');
end;
end;
GameTab(5);
Mouse(593,303,0,0,true);
Wait(Random(1000)+2000);
GameTab(4);
end;
LocalOres:=CountItemBmpTol(Ore,50);
MarkTime(Mark);
repeat
if (not(Loggedin)) then break;
OpenBank;
until(BankScreen or (TimeFromMark(Mark)>60000));
if(BankScreen)then
begin
Wait(Random(1000)+2000);
FixBank;
if(NoPick=true)then
begin
ClickAllItemsColorWait('All',65536,1000+Random(100));
Wait(Random(1000)+2000);
Withdraw(1,1,1);
Wait(Random(1000)+2000);
end else
begin
if(EquipPick=false)then
Deposit(2,28,2);
Wait(Random(1000)+2000);
if(EquipPick=true)then
begin
ClickAllItemsColorWait('All',65536,1000+Random(100));
Wait(Random(1000)+2000);
end;
end;
CloseWindow;
if(NoPick=true)and(EquipPick=true)then
begin
FindPickHeadColor;
Wait(Random(1000)+2000);
ClickItemColor(hc1,true);
end;
Banks:=Banks+1;
TotalOres:=TotalOres+LocalOres;
Players[CurrentPlayer].Banked:=Players[CurrentPlayer].Banked+1;
NoPick:=false
end;
end;
//*************************************************************************//
procedure SetMithColors;
begin
if(MineMith=true)then
begin
if(FindMSColor(x, y, MithColor1))or(FindMSColor(x, y, MithColor2))or
(FindMSColor(x, y, MithColor3))then
begin
OreCol1:=OreColor1;
OreCol2:=OreColor2;
OreCol3:=OreColor3;
OreColor1:=MithColor1;
OreColor2:=MithColor2;
OreColor3:=MithColor1;
end;
end;
end;
//*************************************************************************//
procedure UnsetMithColors;
begin
if(MineMith=true)and(OreCol1>0)then
begin
OreColor1:=OreCol1;
OreColor2:=OreCol2;
OreColor3:=OreCol3;
end;
end;
//*************************************************************************//
procedure Mine;
var
SysTime:integer;
begin
SetMithColors;
SetRandomOreColor;
if(FindObj(x,y,'Mine',OreColor,5))then
begin
if(not(FindGas(x,y)))then
begin
GasChecker;
Mouse(x,y,0,0,true);
if(FlagPresent)then
begin
Flag;
Wait(500+Random(500));
end;
MarkTime(SysTime);
repeat
if(not(FindColorSpiral(x,y,OreColor,210,130,300,220)))then Break;
FindRandoms;
Wait(500+Random(500));
Respond;
if (not(Loggedin)) then break;
until(not(GetColor(109,430)=0)and(not(GetColor(195,426)=0)))or
(TimeFromMark(SysTime)>=MaxWait*1000)
end;
end else
NoRocks:=true;
UnsetMithColors;
end;
//*************************************************************************//
//************************ Main Loop***************************************//
//*************************************************************************//
begin
Setup;
FindFaladorBasicColors;
repeat
Players[CurrentPlayer].MiningLevel:=GetSkilllevel('mine');
FindPickHeadColor;
NickNameBMP:=CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,UpChars)
SetChat('on',1);
SetChat('off',2);
SetChat('off',3);
SetChat('on',1);
FixChat;
FindRandoms;
if Players[CurrentPlayer].loc='Falador' then
begin
SetRun(true);
BankToGuild;
end
if Players[CurrentPlayer].loc='Guild' then
begin
FindBottomColorsIfNeeded;
if(not(FindMMColor(x, y, LadderColor)))then
RoadWalk(MapOreColor,'E');
MarkTime(Mark);
repeat
FindRandoms;
Mine;
if(NoRocks=true)then
begin
ToCenter;
NoRocks:=false;
end;
if (not(Loggedin)) then break;
until(InventoryFull)or(NoPick=true)or(TimeFromMark(Mark)>1800000)
SetRun(false);
GuildToBank;
Bank;
ProgressReport;
end;
if ((LoggedIn) and (Players[CurrentPlayer].Banked mod Loads = 0) ) then
begin
SetChat('off',1);
MarkTime(Mark);
repeat
Wait(1000);
FindRandoms;
if(TimeFromMark(Mark)>120000) then begin Logout; Break; end;
until(not(LoggedIn));
NextPlayer(True);
end;
if (not (Loggedin)) then NextPlayer(False);
until(false)
end.