I'm pretty sure theres already a few guild auto-miners there, both f2p and p2p.
Heres one of the f2p, but remember, you should ALWAYS auto suspiciously. Don't just leave it on all night. It's not about IF you get banned, its about WHEN.
SCAR Code:
{=========================================================================]
[ SRL Guildminer 0.39. ]
[ ]
[ NAME : SRL Guildminer 0.39 ]
[ WRITER : by Wizzup and WT-Fakawi (by Stupid3ooo) ]
[ CATEGORY : Miner ]
[ DESCRIPTION : See below. ]
[ USAGE : Miner/banker for coal ]
[ AUTOCOLOR : YES ]
[ SRL REV. : SRL Version 3. ]
[ NOTES : STAND @ LEFTMOST BANKSLOT ]
[ FACE MM PERFECT NORTH. ]
[=========================================================================]
| Description: |
| A macro that mines a full load of coal and mith in the miner's guild, |
| 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.START @ FALADOR EASTBANK LEFTMOST BANKSLOT FACE MM PERFECTLY NORTH |
[=========================================================================}
program SRLGuildMiner;
{.include SRL/SRL.scar}
{.include SRL/SRL/skill/Mining.scar}
{.include SRL/SRL/misc/FaladorColorFinder.scar}
{.include SRL/SRL/extended/xMapWalk.scar}
Const
Loads = 2; // Number of loads before switching user.
OreTol = 4;
StartPlayer = 0;
Const
CoalColor = 2438711; // CoalColor is a constant
MithrilColor = 7425100; // MithrilColor is a constant
//----------------------------------------------------------------------------//
Const VersionNumber = '0.39';
//----------------------------------------------------------------------------//
Var MapPickColor,MapOreColor,LadderColor,
TotalOres,SecondsToWait,H,G:integer;
Var FB1,FB2,FB3: Integer; // BankerDTMs (Yellow dots at three angles: -10,0,+10 degrees)
// For use with DTM3Flag that plants a flag when any of 3 DTM's is found
//----------------------------------------------------------------------------//
Procedure DeclarePlayers;
begin
HowManyPlayers:=6;
NumberOfPlayers(HowManyPlayers);
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Loc :='Falador';
Players[0].Boolean1 := True; // EquipPick.
Players[0].String1 := 'Coal'; // Coal = coal only. Mithril = both.
Players[0].Active := True;
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Loc :='Falador';
Players[1].Boolean1 := True; // EquipPick.
Players[1].String1 := 'Coal'; // Coal = coal only. Mithril = both.
Players[1].Active := True;
Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].Loc :='Falador';
Players[2].Boolean1 := True; // EquipPick.
Players[2].String1 := 'Coal'; // Coal = coal only. Mithril = both.
Players[2].Active := True;
Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].Loc :='Falador';
Players[3].Boolean1 := True; // EquipPick.
Players[3].String1 := 'Coal'; // Coal = coal only. Mithril = both.
Players[3].Active := True;
Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].Loc :='Falador';
Players[4].Boolean1 := True; // EquipPick.
Players[4].String1 := 'Coal'; // Coal = coal only. Mithril = both.
Players[4].Active := True;
Players[5].Name :='';
Players[5].Pass :='';
Players[5].Nick :='';
Players[5].Loc :='Falador';
Players[5].Boolean1 := True; // EquipPick.
Players[5].String1 := 'Coal'; // Coal = coal only. Mithril = both.
Players[5].Active := True;
end;
//----------------------------------------------------------------------------//
Procedure FillMem; // 3 yellow dot bankers @ different angle
begin
FB1 := DTMFromString('78DA636C66626008634001972E5E66F80FA41' +
'981F83F1030B601D5C4A0AAF9F38789810BAA0604189B8850D345' +
'580D00CA7B110D');
FB2 := DTMFromString('78DA63EC61626008614001478F1E65F80FA41' +
'981F83F1030F602D544A1AAF9F38789810BAA0604182712A1662A' +
'504D247E3500C2961107');
FB3 := DTMFromString('78DA636C646260086140038C0CFFC12403C37' +
'F206004A9894255F1E70F130317540D58472B504D3401359D4035' +
'31F8D50000978B0E8E');
end;
//----------------------------------------------------------------------------//
Procedure SetOres;
Begin
Case Lowercase(Players[CurrentPlayer].String1) Of
'coal' : Begin OreColor1 := CoalColor OreColor2 := OreColor1 End;
'mithril': Begin OreColor1 := MithrilColor ; OreColor2 :=CoalColor ; End;
End;
End;
//----------------------------------------------------------------------------//
Function FindOre(MaxTol:Integer):Boolean;
Var Tol,Ex,Ey:Integer;
Begin
H:=H+1;
For G := 1 to H do
Begin
Case G Of
1: Begin OreColor:= OreColor1; SecondsToWait := 5; End;
2: Begin OreColor:= OreColor2; SecondsToWait := 10; End;
End;
End;
While (Not (FindColorTolerance(Ex, Ey, OreColor, MSX1, MSY1, MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Do
Begin
Tol:=Tol+1;
End;
If ((FindColorTolerance(Ex, Ey, OreColor, MSX1,MSY1 ,MSX2, MSY2, Tol))
And Not (Tol > MaxTol)) Then Result:=True;
Tol:=1;
Wait(10);
End;
//----------------------------------------------------------------------------//
procedure PlayerStats;
var PSActive: string;
var i: Integer;
begin
WriteLn(' ');
WriteLn(' ');
WriteLn(' ');
writeln('**********************************************');
writeln('Name : '+ Players[CurrentPlayer].Name);
writeln('Number : '+inttostr(CurrentPlayer));
writeln('Mining Level : '+ inttostr(Players[CurrentPlayer].level[15]));
writeln('Worked for : '+IntToStr(Players[CurrentPlayer].Worked)+' minutes.');
writeln('Banked : '+ inttostr(Players[CurrentPlayer].Banked) + ' times.');
if Players[CurrentPlayer].Active=True then PSActive:='True' else PSActive:='False';
writeln('Active : '+ PSActive);
writeln('Location : '+ Players[CurrentPlayer].loc);
writeln('**********************************************');
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active=True then PSActive:='True' else PSActive:='False';
writeln( (inttostr(i))+' : '+Players[i].name+ ' = '+PSActive+
'.- Lvl : '+inttostr(Players[i].level[15])+
'.- 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('<=====================================================>');
PlayerStats;
SRLRandomsReport;
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;
//----------------------------------------------------------------------------//
Function FindFaladorLadderColor: Integer;
var C,TX,TY,FaladorLadder:integer;
begin
FaladorLadder:= BitmapFromString(2, 2, '4F1F004F1F004F1F00' +
'A4A298');
while (C<100) do
begin
C:=C+5;
If FindBitMapToleranceIn(FaladorLadder,TX,TY,650,144,664,156,C) then
begin
LadderColor:=GetColor(TX,TY);
Players[CurrentPlayer].Loc:='Falador';
Result:=LadderColor;
writeln('LadderColor = '+IntToStr(LadderColor));
break;
end
end
FreeBitMap(FaladorLadder);
if Result = 0 then begin writeln('ERROR: LadderColor NOT Found'); TerminateScript end;
end;
//----------------------------------------------------------------------------//
function Underground:boolean;
begin
if((FindColoredAreaTolerance(x,y,256,570,5,725,162,50,1)))then
begin
Result:=true;
end;
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;
//----------------------------------------------------------------------------//
procedure RunAway;
begin
if(UnderGround)then
begin
RoadWalk(MapOreColor,'W');
ClickMMColor(LadderColor);
FFlag(10);
RoadWalk(MapOreColor,'E');
end else
RunTo('N',False);
end;
//----------------------------------------------------------------------------//
function HandleGas(Gx,Gy:Integer):Boolean;
begin
if FindGas(gx,gy) then
begin
ToCenter;
Result:=True;
end;
end;
//----------------------------------------------------------------------------//
Function ClimbLadderDown:Boolean;
var
c:integer;
begin
for c:=1 to 50 do
begin
If FindColor(x,y,0,MSX1+10,MSY1+10,MSX2-10,MSY2-10) then
begin
Wait(100);
Mouse(x,y,0,0,false);
if ChooseOption(x,y,'Climb') then
begin
MarkTime(Mark);
repeat
Wait((1000)+Random(1000));
If TimeFromMark(Mark)>30000 then begin Logout; Exit; end;
until ((GetColor(580,80)=0) and (GetColor(648,142)=0));
Result:=True;
Exit;
end;
end;
c:=C+1;
SendArrowSilentWait((Random(2)*2)+1, 20 + Random(10));
if C=50 then begin Logout; exit end;
end;
end;
//----------------------------------------------------------------------------//
Function ClimbLadderUp:Boolean;
var
c:integer;
begin
for c:=1 to 50 do
begin
Wait(100);
if FindObj(x,y,'adder',2775161,21) then
begin
Wait(100);
Mouse(x,y,0,0,false);
if ChooseOption(x,y,'Climb') then
begin
MarkTime(Mark);
repeat
Wait((1000)+Random(1000));
If TimeFromMark(Mark)>30000 then begin Logout; Exit; end;
until FindColor(x,y,WaterColor,MMX1,MMY1,MMX2,MMY2);
Result:=True;
Exit;
end;
end;
c:=C+1;
if C=50 then begin Logout; exit end;
SendArrowSilentWait((Random(2)*2)+1, 20 + Random(10));
end;
end;
//----------------------------------------------------------------------------//
// -- To the Guild in Three Clicks! --//
//----------------------------------------------------------------------------//
procedure BankToGuild;
var xblack,yblack:Integer;
begin
PerfectNorth;
MouseFindFlag(690,110,1,-1);
Flag;
FindColor(xblack,yblack,0,MMX1,MMCY,MMX2,MMY2);
Mouse(xblack-5,yblack+10,0,0,true);
Flag;
ClimbLadderDown;
Players[CurrentPlayer].loc:='Guild';
end;
//----------------------------------------------------------------------------//
procedure GuildToBank;
var
c:integer;
begin
repeat
c:=c+1;
RadialWalk(MapOreColor,210,270,50,-1,0);
if FindColor(x,y,LadderColor,MMX1,MMY1,MMX2,MMY2) then break;
if c=10 then begin Logout; exit; end;
until( FindColor(x,y,LadderColor,MMX1,MMY1,MMX2,MMY2) or(c>10) )
IdleTime(3000, 1000, 1.0);
If FindColor(x,y,LadderColor,MMX1,MMY1,MMX2,MMY2) Then Mouse(x,y,2,2,True);
Wait(1500+Random(500));
FFlag(0);
ClimbLadderUp;
MouseFindFlag(666,45,-1,-1);
Flag;
MakeCompass('N');
If FindColor(x,y,BankColor,MMX1,MMY1,MMX2,MMY2) then
begin
Mouse(x,y,0,0,True);
FFlag(10);
DTM3Flag(FB1,FB2,FB3,True);
FFlag(3);
end
else
begin
DTM3Flag(FB1,FB2,FB3,True);
FFlag(3);
end;
Players[CurrentPlayer].loc:='Falador';
end;
//----------------------------------------------------------------------------//
Function SimpleBank:Boolean;
var sx,sy,dx,dy,Mark2,Tries:integer;
begin
SX:=MSCX; SY:=MSCY;
repeat
sx:=Sx+1;
sy:=sy+3;
MMouse(sx, sy, 0, 0);
if IsUpTextMulti('e Bank','Booth','ooth') then
begin
GetMousePos(Dx, Dy);
Mouse(Dx, Dy, 0, 0, False);
if ChooseOption(Dx, Dy, 'uickly') then
begin
MarkTime(Mark2);
repeat
Wait(10);
if TimeFromMark(Mark2) > 20000 then
begin
Result:=False;
Exit;
end;
until BankScreen;
if BankScreen then
begin
Result := True;
Exit;
end;
end;
end
else
begin
wait(1);
Tries:=Tries+1;
end;
until(tries >9);
end;
//----------------------------------------------------------------------------//
procedure Bank;
var LocalOres:integer;
begin
if (NoPick and EquipPick) 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);
if not BankScreen then
begin
repeat
if (not(Loggedin)) then Exit;
if not SimpleBank then OpenBankQuiet('feb');
until(BankScreen or (TimeFromMark(Mark)>60000));
end;
if(BankScreen)then
begin
Wait(Random(2000)+200);
FixBank;
if(NoPick=true)then
begin
ClickAllItemsColorWait('All',65536,1000+Random(100));
Wait(Random(2000)+200);
Withdraw(1,1,1);
Wait(Random(2000)+200);
end else
begin
if(EquipPick=false)then Deposit(2,28,2);
Wait(Random(2000)+200);
if(EquipPick=true)then
begin
ClickAllItemsColorWait('All',65536,1000+Random(100));
Wait(Random(2000)+200);
end;
end;
CloseBank;
if(NoPick=true)and(EquipPick=true)then
begin
FindPickHeadColor;
Wait(Random(1000)+200);
ClickItemColor(hc1,true);
end;
Banks:=Banks+1;
TotalOres:=TotalOres+LocalOres;
Players[CurrentPlayer].Banked:=Players[CurrentPlayer].Banked+1;
NoPick:=false
end;
end;
//----------------------------------------------------------------------------//
Procedure ChangeGasPixels(Var Gasx,GasY:Integer);
Var
TempX, TempY: Integer;
Begin
Wait(100);
If FlagPresent Then
Begin
FFlag(0);
If FindColorSpiralTolerance(x,y,OreColor,MSX1,MSY1,MSX2,MSY2,4) Then
Begin
x := TempX;
y := TempY;
If CheckOre(x,y,OreColor,4) > 2 Then
Begin
If Distance(MSCX,MSCY,TempX,Tempy) < 40 Then
Begin
GasX := x;
GasY := y;
End;
End;
End;
End;
End;
//----------------------------------------------------------------------------//
Procedure WizzupMine;
Var Dx,Dy,Ex,Ey:Integer;
Begin
If FindOre(OreTol) Then
Begin
If FindObjOre(Dx, Dy, 'Mine', OreColor, 10, 4) Then
Begin
H:=0;
If Not HandleGas(Dx, Dy) Then
Begin
If Random (9) < 7 Then Mouse(Dx, Dy, 0, 0, True)
Else
Begin
Mouse(Dx, Dy, 0, 0, False);
ChooseOption(Ex, Ey, 'ine');
End;
ChangeGasPixels(Dx,Dy);
MarkTime(Mark);
Repeat
HandleGas(Dx, Dy);
Wait(100);
FindTalk;
FindPick;
If NoPick Then Break;
If FindFight Then RunAway;
Until ((TimeFromMark(Mark) > (1000 * SecondsToWait))
Or (FindColor(X, Y, 0,51, 421, 51, 421)))
End;
End;
End
Else
Begin
If H>1 Then H:=0;
If Random(9) < 7 Then if not FindColorTolerance(x,y,CoalColor, MSX1,MSY1,MSX2,MSY2,OreTol) then ToCenter;
FindNormalRandoms;
If FindFight Then RunAway;
Wait(500+Random(500));
End;
End;
//----------------------------------------------------------------------------//
Procedure DoChats;
Begin
SetChat('On', 1);
SetChat('On', 1);
SetChat('Off', 2);
SetChat('Off', 2);
SetChat('On', 3);
SetChat('On', 3);
End;
//----------------------------------------------------------------------------//
procedure Setup;
begin
SetupSRL;
SetUpSRLMining;
FillMem;
DeclarePlayers;
CurrentPlayer:=StartPlayer;
EquipPick:= Players[CurrentPlayer].Boolean1; // Wielding.
PickUpItems:=True; // to pick up random items when pickhead is gone.
BenMouse:=False;
MouseSpeed:=10;
LoginPlayer; // logs in the first player.
SetOres;
end;
//----------------------------------------------------------------------------//
//*************************** Main Loop***************************************//
//----------------------------------------------------------------------------//
begin
Setup;
FindFaladorLadderColor;
SymbolAccuracy:=0.4; // temporarily reduce symbolaccuracy for better symbol spotting
FindFaladorBasicColors;
SymbolAccuracy:=0.8; // set symbolacc. to default
NickNameBMP:=CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,UpChars) // in case we started logged in aot logged out
repeat
GetAllLevels;
if not FindPickHeadColor then Logout;
Dochats;
if Players[CurrentPlayer].loc='Falador' then
begin
SetRun(true);
BankToGuild;
end
if Players[CurrentPlayer].loc='Guild' then
begin
if(MapOreColor=0) then MapOreColor:=FindMapOreColor;
if FindMMColor(x, y, LadderColor) then RoadWalk(MapOreColor,'E');
FFlag(10);
MarkTime(Mark);
if(MapPickColor=0) then MapPickColor:=GetSymbolColor(x,y,'mining spot');
repeat
WizzupMine;
Wait(100);
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
MarkTime(Mark);
SetChat('off',1);
repeat
Wait(1000);
FindNormalRandoms;
if(TimeFromMark(Mark)>120000) then begin Logout; Break; end;
until(not(LoggedIn));
writeln('dead and logging back in');
writeln(InttoStr(CurrentPlayer));
Wait(500+Random(501));
NextPlayer(True);
writeln(InttoStr(CurrentPlayer));
NoPick:=False;
SetOres;
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
DoChats;
end;
if (not (Loggedin)) then
Begin
NextPlayer(False);
NoPick:=False;
SetOres;
EquipPick := Players[CurrentPlayer].Boolean1;
FindPickHeadColor;
DoChats;
End;
Until(False)
end.
Heres Xcan's smelter-
SCAR Code:
{
XXXXXXX XXXXXXX
X:::::X X:::::X
X:::::X X:::::X
X::::::X X::::::X
XXX:::::X X:::::XXX cccccccccccccccc aaaaaaaaaaaaa nnnn nnnnnnnn
X:::::X X:::::X cc:::::::::::::::c a::::::::::::a n:::nn::::::::nn
X:::::X:::::X c:::::::::::::::::c aaaaaaaaa:::::an::::::::::::::nn
X:::::::::X c:::::::cccccc:::::c a::::ann:::::::::::::::n
X:::::::::X c::::::c ccccccc aaaaaaa:::::a n:::::nnnn:::::n
X:::::X:::::X c:::::c aa::::::::::::a n::::n n::::n
X:::::X X:::::X c:::::c a::::aaaa::::::a n::::n n::::n
XXX:::::X X:::::XXXc::::::c ccccccca::::a a:::::a n::::n n::::n
X::::::X X::::::Xc:::::::cccccc:::::ca::::a a:::::a n::::n n::::n
X:::::X X:::::X c:::::::::::::::::ca:::::aaaa::::::a n::::n n::::n
X:::::X X:::::X cc:::::::::::::::c a::::::::::aa:::a n::::n n::::n
XXXXXXX XXXXXXX cccccccccccccccc aaaaaaaaaa aaaa nnnnnn nnnnnn
_ _
___ _ __ ___ ___| | |_ ___ _ __
/ __| '_ ` _ \ / _ \ | __/ _ \ '__|
\__ \ | | | | | __/ | || __/ |
|___/_| |_| |_|\___|_|\__\___|_|}
{ ______________________________________________________________________
|DO NOT CHANGE ANYTHING WITHOUT ASKING ME FIRST(other than setup) |
|Please post bugs and proggys. |
|if you want more players add more of line 67-72 but change the number.|
|If you have a pin go to line 296 and take out the // and put you pin |
|between the '' |
|______________________________________________________________________|}
program AKsmelter;
{.include SRL/SRL.scar}
{.include SRL/SRL/extended/xbank.scar}
{.include SRL/SRL/extended/xsymbol.scar}
{.include SRL/SRL/Skill/Smithing.scar}
//Auto color from wizzups powerminer... i moded it. thanks wizzup
//~~~~~im not responsible if you get banned~~~~~
// ~~~~SETUP~~~~
//==============================================================================
Const furnace = 1584276; //orange part of furnace
StartPlayer = 0; // Determines who will play first
VersionNumber = 'V.1.5';
AutoColor = True; // True for autocolor...recommended.
time2 = false; //if you want start time true, if not then false
stime = 10; // 1-12am 1-12 respectivly, 1-12pm 13-24 respectivly
MSpeed = 8; //speed of the mouse...higher number slower speed, lower number higher speed
BMouse = false; //BenMouse...true or false
MySRLID = ''; // Must be a string!
MySRLPassword = ''; // Must be a string!
//==============================================================================
var
color:integer;
quest:integer;
barsmade:integer;
barmade:integer;
bar:integer;
Loads:integer;
BAmount:integer;
Barcolor:integer;
xp:integer;
BarMask:Integer;
// ~~~~set players below~~~~
//==============================================================================
Procedure DeclarePlayers;
begin
HowManyPlayers :=1; // Set Number of Players here.
NumberOfPlayers(HowManyPlayers); // Sets the Players Array Length;
CurrentPlayer:= StartPlayer; // CurrentPlayer = Array Index
Players[0].Name :='';//username
Players[0].Pass :=''; //password
Players[0].Nick :=''; //3-4 consecutive letters of your user name(NOT First letter)
Players[0].String1 :='steel'; //type of bar bronze,iron,steel,mith,addy,rune,gold,silver
Players[0].Skill :='smithing'; //skill to choose when you get a genie
Players[0].integer2:=20; //how many loads
Players[0].Active :=True; //are you going to use this player
end;
// dont change below if you dont know what your doing
//=============================================================================
Const
BronzeColor = 2902109;
IronColor = 6119013;
SilverColor = 11971242;
SteelColor = 9013650;
GoldColor = 1880792;
MithrilColor = 7491150;
AdamantColor = 5400146;
RuniteColor = 8023891;
procedure Time;
Var
Hour, Mins, Sec, MSec: Word;
begin
if (time2=true) then
repeat
DecodeTime(Now, Hour, Mins, Sec, MSec);
wait(1000);
until Hour>(stime-1);
wait(1000);
if (time2=false) then exit;
end;
Procedure AfterLogin;
begin
MakeCompass('w');
FTWait(3+ random(2));
MakeCompass('w');
SetChat('on',1);
SetChat('on',1);
SetChat('on',2);
SetChat('on',2);
SetChat('off',3);
SetChat('off',3);
HighestAngle;
end;
Procedure AutoRespond;//Credits to Charmz for this
Var Responce: String;
RandomReply: Integer;
begin
If(InChat('smithing')) or (InChat('smith')) or (InChat('s')) and (InChat('lvl')) or (InChat('lev')) or (InChat('level'))then
Begin
Responce:= IntToStr(GetSkillLevel('smithing'));
TypeSend(Responce);
GameTab(4);
End;
If(InChat('hi')) or (InChat('hello')) or (InChat('hey'))then
Begin
RandomReply:= random(7)+1;
Case RandomReply of
1 : Responce:= ('sup');
2 : Responce:= ('yo');
3 : Responce:= ('whats up everyone');
4 : Responce:= ('whats up');
5 : Responce:= ('allo allo');
6 : Responce:= ('wat up');
7 : Responce:= ('y0o');
8 : Responce:= ('what is up');
End;
TypeSend(Responce);
End;
If(InChat(Players[CurrentPlayer].Name)) or (InChat(Players[CurrentPlayer].Nick))then
Begin
RandomReply:= Random(7)+1;
Case RandomReply of
1 : Responce:= ('what');
2 : Responce:= ('yes');
3 : Responce:= ('what do you want');
4 : Responce:= ('me?');
5 : Responce:= ('Yah?');
6 : Responce:= ('who?');
7 : Responce:= ('wha?');
8 : Responce:= ('?');
End;
TypeSend(Responce);
End;
End;
Procedure BarAmount;
Begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : BAmount:=14;
'iron' : BAmount:=28;
'steel' : BAmount:=9;
'silver' : BAmount:=28;
'gold' : BAmount:=28;
'mith' : BAmount:=5;
'addy' : BAmount:=4;
'rune' : BAmount:=3;
End;
End;
Procedure SetColor;
Begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : BarColor:=BronzeColor;
'iron' : BarColor:=IronColor;
'steel' : BarColor:=SteelColor;
'silver' : BarColor:=SilverColor;
'gold' : BarColor:=GoldColor;
'mith' : BarColor:=MithrilColor;
'addy' : BarColor:=AdamantColor;
'rune' : BarColor:=RuniteColor;
End;
End;
Procedure Bitmaps;
Begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : Bar:=BronzeBar;
'iron' : Bar:=IronBar;
'steel' : Bar:=SteelBar;
'silver' : Bar:=SilverBar;
'gold' : Bar:=GoldBar;
'mith' : Bar:=MithrilBar;
'addy' : Bar:=AdamantBar;
'rune' : Bar:=RuniteBar;
End;
End;
Procedure AutoGetBarColors;
Begin
WriteLn('AutoColor:');
If FindColor(X, Y, BarColor, MCX1, MCY1, MCX2, MCY2) Then
BarColor := GetColor(X, Y);
WriteLn(Players[CurrentPlayer].String1+' color = '+IntToStr(BarColor));
End;
Function FindT:boolean;
Begin
repeat
if not LoggedIn then Exit;
wait(100+random(200));
Until (FindText(x, y, 'Enter amount:', UpChars, MCX1, MCY1, MCX2, MCY2)=true);
result:=true
End;
Function BarCount:boolean;
Begin
if (CountItemBmpTol(Bar,10)=BAmount) then
result:= true
end;
Function Door:boolean;
begin
if (FindColorTolerance(x,y,1394524,5,263,515,338,5) or
FindColorTolerance(x,y,603212,5,263,515,338,5) or
FindColorTolerance(x,y,2256012,5,263,515,338,5))then
MMouse(x,y,2,2);
if (IsUpTextMulti('lose','los','ose')) then
Result := True;
end;
procedure OpenDoor;
var cx,cy:integer;
begin
Status('finding door...');
MarkTime(mark);
Lowestangle;
Wait(100+random(50));
begin
if (Door) then
Writeln('door is open');
end;
if not (Door) then
repeat
if (IsUpText('Door')) then
FTWait(1);
if (IsUpText('Open')) then
Mouse(cx,cy,2,2,false);
ChooseOption(x,y,'Open');
begin
Flag;
repeat
Wait(100);
until (Door) or (TimeFromMark(mark)> 5000);
end;
Until (Door) or (TimeFromMark(mark)> 5000);
end;
procedure MyOpenBank;
begin
Status('Opening bank...');
if not (BankScreen) then
Lowestangle;
MarkTime(mark);
repeat
if (FindColorTolerance(x,y,8618883,2,70,515,178,5) or
FindColorTolerance(x,y,9079691,2,70,515,178,5))then
Wait(250);
MMouse(x,y,2,2);
Wait(250);
if (IsUpText('Bank booth')=true) then
Wait(250);
Mouse(x,y,2,2,false);
if (ChooseOption(x,y,'quickly')) then
begin
Flag;
wait(250);
InPin('5034'); //put your pin between ''
repeat
Wait(100);
until (BankScreen);
end;
until (BankScreen) or (TimeFromMark(mark)> 60000);
if TimeFromMark(Mark)> 60000 then Logout;
end;
Procedure WBronze;
begin
BankMouse(1, false);
ClickOption('X', 1);
Findt;
TypeSend('14');
BankMouse(2,false);
ClickOption('X', 1);
Findt;
TypeSend('14');
end;
Procedure WAll;
begin
BankMouse(1,false);
ClickOption('All',1);
end;
Procedure WSteel;
begin
BankMouse(1,false);
ClickOption('X',1);
Findt;
TypeSend('9');
BankMouse(2,false);
ClickOption('All',1);
end;
Procedure WMith;
begin
BankMouse(1,false);
ClickOption('X',1);
Findt;
TypeSend('5');
BankMouse(2,false);
ClickOption('All',1);
end;
Procedure WAddy;
begin
BankMouse(1,false);
ClickOption('X',1);
Findt;
TypeSend('4');
BankMouse(2,false);
ClickOption('All',1);
end;
Procedure WRune;
begin
BankMouse(1,false);
ClickOption('X',1);
Findt;
TypeSend('3');
BankMouse(2,false);
ClickOption('All',1);
end;
Procedure WithdrawOres;
var act:integer;
begin
Status('Withdrawing ores...');
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : act:=1;
'iron' : act:=2;
'steel' : act:=3;
'silver' : act:=2;
'gold' : act:=2;
'mith' : act:=4;
'addy' : act:=5;
'rune' : act:=6;
End;
Begin
If act=2 then WAll;
If act=1 then WBronze;
If act=3 then WSteel;
If act=4 then WMith;
If act=5 then WAddy;
If act=6 then WRune;
End;
End;
Procedure Antirandoms2;
begin
Findnormalrandoms;
FindTalk;
DwarfItem;
end;
Procedure ToBank;
begin
status('Going to bank...');
Antirandoms2;
keydown(17);
Mouse(600,95,2,2,true);
keyup(17);
Antirandoms2;
FFlag(5);
FindSymbol(x,y,'bank');
keydown(17);
Mouse(x,y,2,2,true);
keyup(17);
LowestAngle;
Antirandoms2;
Flag;
Loads:=Loads+1
ReportVars[0] := ReportVars[0]+ 1;
Players[CurrentPlayer].Integer1:=Players[CurrentPlayer].Integer1+1
Players[currentplayer].Loc:='bank'
end;
Procedure Antirandoms;
Begin
Findnormalrandoms;
FindTalk;
DwarfItem;
if(FindFight)then
begin
RunAwayDirection('S');
wait(8000+random(500));
runback;
end;
AutoRespond;
end;
Function Amount:boolean;
begin
if (FindText(x,y,'Enter amount:',UpChars,MCX1,MCY1,MCX2,MCY2)=true) then
result:=true
end;
Procedure Furn;
begin
Repeat
antirandoms;
if (FindColorRightTol(x,y,BarColor,15, 378, 494, 437,8)) then
MMouse(x-10,y,2,2);
wait(250);
if (IsUpText('melt 1')=true) then
Wait(250);
Mouse(x-10,y,2,2,false);
if (ChooseOption(x,y,'melt X')) then
begin
Flag;
FTWait(1);
repeat
Wait(100);
until (Amount);
end;
until (Amount);
TypeSend(inttostr(BAmount+1));
repeat
if not LoggedIn then Exit;
wait(1000+random(500));
antirandoms;
until (BarCount=true) or FindText(x, y, 'You have run out of',+
smallchars, MCX1, MCY1, MCX2, MCY2);
if (BarCount=true) then writeln('Found Bars');
If (FindText(x, y, 'You have run out of', smallchars, MCX1, MCY1, MCX2,+
MCY2)) then Writeln('Found Text')
end;
Procedure FindFurnace;
begin
antirandoms;
Status('Finding furnace...');
if (invfull=false) then
begin
writeln('Can''t Find Ores');
end
else
begin
Antirandoms;
repeat
if not LoggedIn then Exit;
FindMSColorTol(x,y,furnace,5);
wait(50+random(10));
MMouse(x,y,0,0);
wait(20+random(10));
until IsUpTextMulti('melt','me','lt');
begin
Mouse(x,y,0,0,true);
writeln('Found Furnace');
FTWait(2+random(1));
AntiRandoms;
end;
end;
end;
procedure whereami;
begin
quest := BitmapFromString(15, 5, 'z78DA9D90510A80201005AFB4' +
'A6D6FAB9E6DEFF4A060FEAC5524408F3213A3C46921CC7BC4B37E' +
'696347B5535DBBDF85A8781B85F4A1EE71B6FD26E7F255D273A41' +
'D8D8CF4EE6BB99B7FDE3F7CDB1093673196E023E9963672E139BB' +
'093374F7355666D');
Color:= 14312782;
if(FindMMSymbol(quest)=true) then
Players[currentplayer].Loc:='bank'
else
Players[currentplayer].Loc:='furn'
end;
procedure BankOrFurn;
begin
if ((Players[currentplayer].Loc)='bank') then
writeln('In Bank')
else
writeln('In Furnace')
end;
Procedure Bankbars;
begin
BankOrFurn;
antirandoms2;
invCount;
if (not (invcount=28)) then
begin
Status('Banking...');
MyOpenBank;
depositall;
fixbank;
Withdrawores;
end;
Players[CurrentPlayer].Banked:=Players[CurrentPlayer].Banked+1;
end;
Procedure ToFurn1;
begin
Mouse(686, 110, 2, 2, true);
FFlag(2);
FindSymbol(x, y, 'furnace');
Mouse(x, y + 10, 1, 1, true);
end;
Procedure ToFurn2;
begin
Mouse(674, 112, 2, 2, true);
FFlag(2);
Mouse(695, 99, 2 , 2, true);
FFlag(2);
FindSymbol(x, y, 'furnace');
Mouse(x, y + 10, 1, 1, true);
end;
Procedure ToFurnace;
begin
Status('Going to furnace...');
HighestAngle;
begin
case random(2) of
0: tofurn1;
1: tofurn2;
end;
antirandoms2;
FFlag(3);
writeln('In Furnace');
Players[currentplayer].Loc:='furn'
end;
end;
Procedure Rand;
begin
if (FindNormalRandoms=true) then
begin
findfurnace;
Status('Smelting...');
Furn;
begin
MakeCompass('w');
opendoor;
end;
end;
end;
Procedure Report;
Begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : ReportVars[10]:= ReportVars[10]+ 14;
'iron' : ReportVars[11]:= ReportVars[11]+ CountItemBmpTol(Bar,10);
'silver' : ReportVars[12]:= ReportVars[12]+ 28;
'steel' : ReportVars[13]:= ReportVars[13]+ 9;
'gold' : ReportVars[14]:= ReportVars[14]+ 28;
'mith' : ReportVars[15]:= ReportVars[15]+ 5;
'addy' : ReportVars[16]:= ReportVars[16]+ 4;
'rune' : ReportVars[17]:= ReportVars[17]+ 3;
End;
End;
Function Exp:integer;
Begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : xp:=91;
'iron' : xp:=12 * CountItemBmpTol(Bar,10);
'steel' : xp:=157;
'silver' : xp:=387;
'gold' : xp:=630;
'mith' : xp:=150;
'addy' : xp:=280;
'rune' : xp:=255;
End;
Begin
Result := xp;
Players[CurrentPlayer].Integer3:=Players[CurrentPlayer].Integer3 + xp;
Begin
ReportVars[3]:= ReportVars[3] + xp;
End;
End;
End;
procedure InFurnace;
begin
if (invfull=false) then
begin
Status('going to bank...');
opendoor;
end
else
begin
Status('Smelting...');
wait(200 + random (200));
Furn;
Rand;
Exp;
Report;
end;
MakeCompass('w');
Opendoor;
end;
procedure PlayerStats;
var Active: string;
var i: Integer;
begin
for i := 0 to HowManyPlayers-1 do
begin
if Players[i].Active=True then Active:='True' else Active:='False';
writeln( (inttostr(i+1))+' : '+Players[i].name+ '= '+Active+
'- Lvl: '+inttostr(Players[i].level[16])+' Loads done: '+
inttostr(Players[i].integer1)+ ' Loc: '+Players[i].loc);
end
end;
Function totalbars:integer;
begin
Case LowerCase(Players[CurrentPlayer].String1) Of
'bronze' : barsmade:=14;
'iron' : barsmade:=CountItemBmpTol(Bar,10);
'steel' : barsmade:=9;
'silver' : barsmade:=28;
'gold' : barsmade:=28;
'mith' : barsmade:=5;
'addy' : barsmade:=4
'rune' : barsmade:=3;
End;
Begin
Result := barsmade;
end;
begin
ReportVars[1] := ReportVars[1] + CountItemBmpTol(Bar,10);
BarMade:= Players[CurrentPlayer].Integer1 * BarsMade;
end;
end;
procedure ProgressReport;
begin
ClearDebug;
begin
WriteLn('<=========Progress for Smelter-'+VersionNumber+'-=========>');
Writeln(' ');
writeln('**********************************************');
writeln('Name : '+ Players[CurrentPlayer].Name);
writeln('Number : '+ inttostr(CurrentPlayer+1));
writeln('Smithing Level : '+ inttostr(Players[CurrentPlayer].Level[16]));
writeln('Done : ' + inttostr(Players[CurrentPlayer].Integer1)+' loads');
writeln('Made : ' +inttostr(barmade)+' '+(Players[CurrentPlayer].String1)+' bars');
writeln('Worked for : '+ TimeRunning);
writeln('Banked : '+ inttostr(Players[CurrentPlayer].Banked) + ' times.');
writeln('Gained Approx : '+inttostr(Players[CurrentPlayer].Integer3)+ ' exp.')
writeln('Location : '+ Players[CurrentPlayer].loc);
writeln('**********************************************');
end;
PlayerStats;
SRLRandomsReport;
end;
Procedure ClearVars;
Var
I : Integer;
Begin
For I := 1 To 19 Do
ReportVars[I] := 0;
End;
Procedure Intro;
begin
WriteLn(' __ ');
WriteLn(' __ __ (_ \');
WriteLn(' \ \/ /___ __ _ _ __ \/ ___ ');
WriteLn(' \ // __/ _` | `_ \ / __| ');
WriteLn(' / \ (_| (_| | | | | \__ \');
WriteLn(' /_/\_\___\__,_|_| |_| |___/');
Wait(1000);
WriteLn(' __ _ _ ');
WriteLn(' / _\ ___ _ __(_)_ __ | |_ ___ ');
WriteLn(' \ \ / __| ''__| | ''_ \| __/ __|');
WriteLn(' _\ \ (__| | | | |_) | |_\__ \ ');
WriteLn(' \__/\___|_| |_| .__/ \__|___/');
WriteLn(' |_| ');
Wait(1000);
WriteLn(' Brings You:');
Wait(1000);
WriteLn(' AK Smelter '+versionnumber+'');
WriteLn('')
Wait(1000);
WriteLn('Please post all Progress reports at');
WriteLn('http://www.villu-reborn.com/showthread.php?t=4915')
end;
Procedure EndReport;
begin
cleardebug;
begin
WriteLn('<=====End Progress for Smelter '+VersionNumber+'=====>');
WriteLn('Ran For: '+ timerunning)
WriteLn('Finished: '+inttostr(Loads)+' loads')
WriteLn('Made a total of: '+inttostr(barsmade)+' '+Players[CurrentPlayer].String1+' bars')
WriteLn(inttostr(HowManyPlayers)+' players played')
end;
PlayerStats;
end;
procedure Setup;
begin
SetupSRL;
ScriptID := '30';
SRLID := MySRLID;
SRLPassword := MySRLPassword;
SetUpSRLReport;
ClearDebug;
Intro;
LoadSmithingBitMaps;
ClearVars;
ReportVars[2] := 1;
MouseSpeed := (MSpeed);
BenMouse := (BMouse);
Time;
DeclarePlayers;
LoginPlayer;
Bitmaps;
SetColor;
BarAmount;
AfterLogin;
WhereAmI;
end;
////////////////////////////////Main Loop\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
begin
Setup;
repeat
if Players[CurrentPlayer].loc='furn' then
begin
MakeCompass('w')
FindFurnace;
If AutoColor Then AutoGetBarColors;
InFurnace;
ToBank;
TotalBars;
ProgressReport;
end;
if Players[CurrentPlayer].Loc='bank' then
begin
MakeCompass('w')
BankBars;
ToFurnace;
GetSkillLevel('smithing');
Players[CurrentPlayer].Level[16] :=GetSkillLevel('smithing');
TotalBars;
ProgressReport;
end;
if ((LoggedIn) and (Players[CurrentPlayer].Integer1=(Players[CurrentPlayer].Integer2))) then
begin
repeat
Wait(1000);
until(not(LoggedIn));
NextPlayer(False);
Players[CurrentPlayer].Integer1:=0
MakeCompass('w')
Whereami;
end;
If Not LoggedIn Then
Begin
NextPlayer(False);
MakeCompass('w');
SetColor;
BarAmount;
End;
until(False);
TotalBars;
EndReport;
end.
If that doesn't work for you (no smelters ever worked for me), you can use an old smelter that I edited-
SCAR Code:
//(<>)(<>)(<>)(<>)(<>)(<>)(<>)(<>)//
//(<>) Bentrims (<>)//
//(<>) Al-Kharid (<>)//
//(<>) Smelter (<>)//
//(<>) V2 (<>)//
//(<>)(with additions by (<>)//
//(<>) yesiammanu) (<>)//
//(<>)Version Log (<>)//
//(<>)V1.0-Working Well (<>)//
//(<>)V1.5-Lots of Bugs Fixed (<>)//
//(<>)V2-Just a Few Updates (<>)//
//(<>)(<>)(<>)(<>)(<>)(<>)(<>)(<>)//
//(<>)(<>)(<>)(<>)(<>)(<>)(<>)(<>)//
//(<>) Setup (<>)//
//(<>) 1.Start in Bank (<>)//
//(<>) 2.Iron in 1st Bank Slot(<>)//
//(<>) 3.Coal in Second Slot (<>)//
//(<>) 4.Have ores in inv. (<>)//
//(<>) 5.Map facing near West (<>)//
//(<>) 6.Go Make a Sandwich (<>)//
//(<>) 7.Hit Play (<>)//
//(<>) 8.Go Watch Tv. :) (<>)//
//(<>)(<>)(<>)(<>)(<>)(<>)(<>)(<>)//
program AlKararidSmelter;
{.include Si.scar}
var x,y:integer;barcount:integer;cx,cy:Integer;
const
//(<>)(<>)(<>)(<>)(<>)(<>)(<>)//
// (<>)(<>)Setup(<>)(<>) //
// All colors are minimap //
primeore=500; //All Your Iron in Bank
agilityicon=2854145; //Agility Icon (green arrow)
banksymbol=4507112; //Bank Symbol....
furnacesymbol=1468156; //Furnace Symbol (orange)...
// (<>)(<>)End(<>)(<>) //
//(<>)(<>)(<>)(<>)(<>)(<>)(<>)//
Procedure ToTheFurnace;
begin
Status('Going to Furnace')
FindColorSpiral(x,y,agilityicon,566,5,717,122)
MouseFlag(x+ random(10),y+70+ random(15),1,1)
Checkrandoms(1,'ranged','NA',false,false,[rtBox, rtLamp, rtLeveled,rtText]);
FindColorSpiral(x,y,furnacesymbol,564,9,719,156)
MouseFlag(x,y+2+ random(8),1,1)
wait(500+ random(1500));
end;
Procedure Smelting;
begin
status('Smelting...');
Checkrandoms(1,'ranged','NA',false,false,[rtBox, rtLamp, rtLeveled,rtText]);
findobj(cx,cy,'Smelt Furnace',2368550,5)
mouseflag(cx,cy,2,2);
mouse(268,401,2,2,false);
mouse(240,414,1,1,true);
repeat
wait(3000);
until(IsChatMessage('You don'))or(BeingAttacked)or (IsChatMessage ('You have run out'));
end;
Procedure Back2Bank;
begin
Status('Walking back to Bank');
FindColorSpiral(x,y,agilityicon,560,5,724,158)
MouseFlag(x- random(10),y+70+ random(15),1,1)
Checkrandoms(1,'ranged','NA',false,false,[rtBox, rtLamp, rtLeveled,rtText]);
FindColorSpiral(x,y,banksymbol,560,5,724,158)
MouseFlag(x,y,1,1);
Checkrandoms(1,'ranged','NA',false,false,[rtBox, rtLamp, rtLeveled,rtText]);
end;
Procedure Banking;
begin
status('Banking...');
Checkrandoms(1,'ranged','NA',false,false,[rtBox, rtLamp, rtLeveled,rtText]);
OpenBank;
FixBank;
DepositAll;
Withdraw(1,1,9);
Withdraw(1,2,18);
closewindow;
end;
Procedure ProgessReport;
Begin
Writeln('(<>)(<>)(<>)(<>)(<>)(<>)(<>)');
Writeln(' BentRims Al-Kharid Smelter ');
Writeln(' Smelted '+inttostr(barcount)+'Steel Bars');
Writeln(' Have Fun Lazy Kids... ');
Writeln('(<>)(<>)(<>)(<>)(<>)(<>)(<>)');
end;
begin
LoadInclude('Mozilla FireFox',False)
Checkrandoms(1,'ranged','NA',false,false,[rtBox, rtLamp, rtLeveled,rtText]);
repeat
gametab(2);
ToTheFurnace;
gametab(4);
Smelting;
Back2Bank;
Banking;
barcount:=barcount+9;
until(primeore=barcount)or(barcount>primeore);
end.
It's not great, but (for me) its the only thing I can use.
~~~~Yesiammanu