SCAR Code:
program HideTannerAndCrafter;
{.include srl/srl.scar}
var
CactusColor, Thread, Needle, SoftLeather, THaLeather, CowHide, HideText, Loads, Load, Coin, HardLeather, EndSkill, StartSkill, Cash, AlKharidDTM, x, y, XItem, YItem: Integer;
AlKharidMP: TDTMPointDef;
AlKharidSP: array[0..4] of TDTMPointDef;
AlKharidDTMSkel: TDTM;
const
///////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////COLOR SET-UP//////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
RockColor = 4088977; //the red/brown rock outside bank(north)(for accurety:)) ////
RoadColor1 = 7581646; //road color the yellow(sandcolor one ////
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
//////// CRAFTING/TANNING SET-UP(LET THEBANKAT('AKB'); IF YOU CRAFT AT ALKHARID ///////
///////////////////////////////////////////////////////////////////////////////////////
CraftLeather = True; //is in testing stage
TanCowhides = True; //if you not wanna run the tanning procedure
Whichleather = 'softleather'; //you can choose on off: hardleather,softleather.
thebankat = 'akb'; //the bank your crafting at
ItemToCraft = 'auto'; //if you using softleather you can choose which item to craft you can set auto, gloves, boots, cowl, vambraces, body, chaps
///////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////// //////
////////////////////////////////PLAYER SET-UP ////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
procedure DeclarePlayers;
begin
HowManyPlayers := 6; // Set Number of Players here.
NumberOfPlayers(HowManyPlayers); // Sets the Players Array Length;
CurrentPlayer := 0; // CurrentPlayer - Player That Will Login First
Players[0].Name := 'username'; //Player Username.
Players[0].Pass := 'password'; //Player Password.
Players[0].Nick := 'nick'; //3 or 4 Letters From The Username Of This Player.
Players[0].Active := True; //Will You Be Using This Player?
Players[0].Integers[0] := 5; //How Much Loads To Do?
Players[1].Name := 'username'; //Player Username.
Players[1].Pass := 'password'; //Player Password.
Players[1].Nick := 'nick'; //3 or 4 Letters From The Username Of This Player.
Players[1].Active := True; //Will You Be Using This Player?
Players[1].Integers[0] := 5; //How Much Loads To Do?
Players[2].Name := 'username'; //Player Username.
Players[2].Pass := 'password'; //Player Password.
Players[2].Nick := 'nick'; //3 or 4 Letters From The Username Of This Player.
Players[2].Active := True; //Will You Be Using This Player?
Players[2].Integers[0] := 5; //How Much Loads To Do?
Players[3].Name := 'username'; //Player Username.
Players[3].Pass := 'password'; //Player Password.
Players[3].Nick := 'nick'; //3 or 4 Letters From The Username Of This Player.
Players[3].Active := True; //Will You Be Using This Player?
Players[3].Integers[0] := 5; //How Much Loads To Do?
Players[4].Name := 'username'; //Player Username.
Players[4].Pass := 'password'; //Player Password.
Players[4].Nick := 'nick'; //3 or 4 Letters From The Username Of This Player.
Players[4].Active := True; //Will You Be Using This Player?
Players[4].Integers[0] := 5; //How Much Loads To Do?
Players[5].Name := 'username'; //Player Username.
Players[5].Pass := 'password'; //Player Password.
Players[5].Nick := 'nick'; //3 or 4 Letters From The Username Of This Player.
Players[5].Active := True; //Will You Be Using This Player?
Players[5].Integers[0] := 5; //How Much Loads To Do?
writeln(inttostr(HowManyPlayers) + ' Players');
end;
{=====================================================================================]
DONT TOUCH THIS BELOW IF YOU DONT KNOW WHAT YOUR DOING!
[=====================================================================================}
{===============================================]
this function finds randoms by:wt-fawaki
[===============================================}
function FindFastRandoms: Boolean;
var
i: Integer;
begin
for i := 1 to 9 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
end;
8: begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
end;
9: begin
if FindFight then
begin
RunTo('N', False);
end;
end;
end;
end;
end;
{======================================================================]
MY OWN(first) DDTM MADE WITH YOHOHO'S TUT THANKS YOU YOHOHO by: me
[======================================================================}
procedure LoadRoadDDtms;
var
Tol: integer;
begin
Tol := 30;
AlKharidMP.x := 675;
AlKharidMP.y := 123;
AlKharidMP.areasize := 1;
AlKharidMP.areashape := 0;
AlKharidMP.color := RoadColor1;
AlKharidMP.tolerance := 255;
AlKharidSP[0].x := 671;
AlKharidSP[0].y := 122;
AlKharidSP[0].areasize := 1;
AlKharidSP[0].areashape := 0;
AlKharidSP[0].color := RoadColor1;
AlKharidSP[0].tolerance := Tol;
AlKharidSP[1].x := 681;
AlKharidSP[1].y := 121;
AlKharidSP[1].areasize := 1;
AlKharidSP[1].areashape := 0;
AlKharidSP[1].color := RoadColor1;
AlKharidSP[1].tolerance := Tol;
AlKharidSP[2].x := 674;
AlKharidSP[2].y := 125;
AlKharidSP[2].areasize := 1;
AlKharidSP[2].areashape := 0;
AlKharidSP[2].color := RoadColor1;
AlKharidSP[2].tolerance := Tol;
AlKharidSP[3].x := 680;
AlKharidSP[3].y := 124;
AlKharidSP[3].areasize := 1;
AlKharidSP[3].areashape := 0;
AlKharidSP[3].color := RoadColor1;
AlKharidSP[3].tolerance := Tol;
AlKharidDTMSkel.MainPoint := AlKharidMP;
AlKharidDTMSkel.SubPoints := AlKharidSP;
AlKharidDTM := AddDTM(AlKharidDTMSkel);
end;
{===============================================]
the dtm's by:me
[===============================================}
procedure LoadDTMs;
begin
{HideText := DTMFromString('78DA633CCFC8C0D00CC458004C94F10890D54' +
'4849A3A026A761261CE7620AB910835AD04D4DC24C29C9744B8E7' +
'19116A1E03590DA86A7EA0ABD90B64F51350738C08351731D560B' +
'8E73A903599809A0340D624026AF6629A83E19EF544F87D139055' +
'4F40CD6622D2CF66C2691500FDE0200E'); }
Thread := DTMFromString('78DA63CC63666068656440061B972E65F80FA' +
'441A2FF81803111A86622AA1A882C8C04D22073A6105053095453' +
'4D404D2E504D250135A9986EC650530A54D349404D01504D1F11E' +
'634E157030022330FD3');
HardLeather := DTMFromString('78DA63F4626260F8C08002CC0D6419B880342' +
'310FF0702C620A09ABF0C6880118904D20E40353F08A8B103AA79' +
'47404D2850CD73026AC231DD8CA1C61DA8E60F01357E40354F08A' +
'8B105AAF948408D2F50CD3FFC6A0056DD111A');
Needle := DTMFromString('78DA638C666460F8C1800296CD9AC5F01F480' +
'36518FE0301632890F587010D302291403A02C8FA47404D3C90F5' +
'05B71A26109D0E643D22A02603C87A4C404D2290F58A801A907BD' +
'E12501381193E186AC281AC9F04D480C2F92F01357140D677FC6A' +
'0022B416DC');
SoftLeather := DTMFromString('78DA6394666260F8C880027C3C3819B880342' +
'310FF0702460D4C3510591809A465816AFE1150C30F54F38D801A' +
'41A09A3704D42803D53C23A04613A8E6250135AA4035BF09A8112' +
'1428D1450CD63FC6A00167F0F5E');
HideText := DTMFromString('78DA63DCCBC0C0B08101159CF8C1C005A4188' +
'1F83F103082D4AC63C00A1861F47E20B19E801A90395B8930670B' +
'7E350056450CFC');
HardLeather := DTMFromString('78DA633CCCCCC07098910119EC5ABF8EE13F9' +
'00689FE0702C61D4035BB51D540646124903E0954B393809AB340' +
'352708A8D909547396809A2D40354708A8390E547311BF1A001AC' +
'D11E9');
CowHide := DTMFromString('78DA63E4656060006124B06BE346062E20CD0' +
'8C4FF81809119C8606740038C48249006A91121A0860F48481150' +
'2301249809A891041202F8D50000C82E06DB');
end;
{=====================================================================================]
used to get the cactuscolor outside the bank by: me(thanks for the tut nielsie)
[=====================================================================================}
procedure GetCactusColor;
var
Cactus: Integer;
begin
if not LoggedIn then Exit;
Cactus := BitmapFromString2(False, 'aB199078DA1DCCC911C0200' +
'C43D1960C5E732404FA2F297C2E6F3492C722225F3F488D830E74' +
'5B18E4F0C208349A5EC6EA13F7EDEF034B2567C3879C2F97391D0' +
'78DA85F97564C6D3F568');
CactusColor := AutoColorThis(Cactus, 200, MMX1, MMY1, MMX2, MMY2);
WriteLn('//CactusColor: ' + IntToStr(CactusColor));
FreeBitmap(Cactus);
end;
{===============================================]
auto chooses wich SOFTleather to craft by:me
[===============================================}
procedure Choose;
begin
if ItemToCraft = 'auto' then
begin
case EndSkill of
1, 2, 3, 4, 5, 6: ItemToCraft := 'gloves';
7, 8: ItemToCraft := 'boots';
9, 10: ItemToCraft := 'cowl';
11, 12, 13: ItemToCraft := 'vambraces';
14, 15, 16, 17: ItemToCraft := 'body';
18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50: ItemToCraft := 'chaps';
end;
end;
end;
procedure PickXandY;
begin
case ItemTocraft of
'gloves': XItem := 191;
Yitem := 117;
'boots': XItem := 316;
Yitem := 114;
'cowl': XItem := 382;
Yitem := 234;
'vambraces': XItem := 445;
Yitem := 247;
'body': XItem := 72;
Yitem := 109;
'chaps': XItem := 126;
Yitem := 247;
end;
end;
{===============================================]
still in progess of making a crafter by:me
[===============================================}
procedure WithDrawCraftStuff;
begin
if not LoggedIn then Exit;
if craftleather then
begin
LoadDtms;
writeln('//going to craft tha leather')
if (bankscreen = false) then
begin
openbankfast(thebankat);
deposit(3, 28, 2);
end else
depositall;
end;
if (FindDTM(Needle, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 5, 5, false);
if (ChooseOption('1')) then
writeln('//whitdrawing needle');
else
writeln('//could find needle');
end;
if (FindDTM(Thread, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 5, 5, false);
if (ChooseOption('ll')) then
writeln('//whitdrawing Thread');
else
writeln('//could find thread');
end;
case Lowercase(WhichLeather) of
'hardleather': THaLeather := HardLeather;
'softleather': THaLeather := SoftLeather;
end;
if (FindDTM(THaLeather, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 5, 5, false);
if (ChooseOption('ll')) then
writeln('//whitdrawing ' + WhichLeather);
else
writeln('//could find ' + WhichLeather);
end;
FreeDTM(THaLeather);
wait(100 + random(((((50))))));
closebank;
end;
{===============================================]
still in progess of making a crafter by:me
[===============================================}
procedure BankAndWithdraw;
begin
if not LoggedIn then Exit;
loaddtms;
openbankfast(thebankat);
deposit(3, 28, 2);
case Lowercase(WhichLeather) of
'hardleather': THaLeather := HardLeather;
'softleather': THaLeather := SoftLeather;
end;
if (FindDTM(THaLeather, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 5, 5, false);
if (ChooseOption('ll')) then
begin
writeln('//whitdrawing ' + WhichLeather);
end else
writeln('//could find ' + WhichLeather);
end;
FreeDTM(THaLeather);
wait(100 + random(((((50))))));
closebank;
end;
{===============================================]
still in progess of making a crafter by:me
[===============================================}
procedure CraftingLeather;
begin
if not LoggedIn then Exit;
GameTab(4);
WithdrawCraftStuff;
LoadDTMs;
case Lowercase(WhichLeather) of
'hardleather': ThaLeather := HardLeather;
'softleather': ThaLeather := SoftLeather;
end;
if (FindDTM(Needle, x, y, MIX1, MIY1, MIX2, MIY2)) then
Mouse(x, y, 3, 2, True);
if (FindDTM(ThaLeather, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(x, y, 3, 2, false);
if chooseoption('eather') then
begin
writeln('//crafting ' + (whichleather));
end;
end;
end;
{======================================================================================================]
this uses getskill out of the srl include by: mat_the_b and me(its not so big so it doesnt matter)
[======================================================================================================}
function GetSkillStartEnd(Skill: string; Option: boolean): integer;
begin
if not LoggedIn then Exit;
if (Option = True) then
begin
GameTab(2);
StartSkill := GetSkillLevel(Skill);
end else
begin
GameTab(2);
EndSkill := GetSkillLevel(Skill);
end;
end;
{===============================================]
this is my proggy by: me
[===============================================}
procedure proggy;
begin
WriteLn('//////////////////////////////////////////////////////////////');
WriteLn('// Thanks for using my HideTanner and Leathercrafter. //');
WriteLn('// post Proggy,s and bugs. //');
WriteLn('//////////////////////////////////////////////////////////////');
WriteLn('// Ran for ' + (timerunning) + ' ');
WriteLn('// Did ' + inttostr(load) + ' load(s) out of ' + inttostr(Players[CurrentPlayer].Integers[0]) + ' loads set on this player ');
WriteLn('// You started with crafting level : ' + inttostr(startskill) + '');
WriteLn('// You ended with crafting level : ' + inttostr(startskill) + '');
WriteLn('//////////////////////////////////////////////////////////////');
end;
{==============================================================]
clicks the tanroom the scar noob reminded me of this by:me
[===============================================================}//i tried findsymbol before didnt work out and
function ToTanRoom: boolean; //the scar noob reminded me of this so i tried again(works)
begin
if not LoggedIn then Exit;
if findsymbol(x, y, 'tanner') then
begin
result := true
Mouse(x + 10, y + 5, 6, 6, True);
Flag;
end else
logout;
exit;
end;
{===================================================]
clicks the bank used in tobank; look down. by:me
[===================================================}
procedure bankclick;
begin
if not LoggedIn then Exit;
GetCactusColor;
RadialRoadWalk(CactusColor, 150, 270, 65, -30, +10);
Flag;
end;
{==========================================================================]
clicks-down towards the bank and uses bankclick to click the bank bye:me
[==========================================================================}
procedure ToBank;
begin
if not loggedin then exit;
setrun(true);
LoadRoadDDtms;
if (FindDTM(AlKharidDTM, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
MouseFlag(x - 17, y + 12, 2, 3);
Writeln('//Walking to bank 1.');
bankclick;
end;
FreeDTM(AlKharidDTM);
end;
{===============================================================]
this finds the dtm used to tan the hides by: me
[==============================================================}
function FindHideText: Boolean;
var
LoopInteger: Integer;
begin
if not LoggedIn then Exit;
loaddtms;
LoopInteger := 0;
repeat
Wait(50 + Random(50));
LoopInteger := LoopInteger + 1
if (FindDTM(HideText, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y - 10, 0, 0, False);
Result := True;
break;
end;
until (LoopInteger >= 15)
FreeDTM(HideText);
end;
{===============================================]
takes the hides from the bank by:me
[===============================================}
procedure GetHides;
var
LoopInteger: Integer;
begin
if not LoggedIn then Exit;
loaddtms;
MakeCompass('N')
HighestAngle;
GetSkillStartEnd('crafting', True);
Wait(1 + random(2));
OpenBankFast('akb');
Wait(10 + random(5));
FixBank;
Deposit(2, 28, 2);
LoopInteger := 0;
repeat
Wait(50 + Random(50));
LoopInteger := LoopInteger + 1;
if (FindDTM(CowHide, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 5, 5, false);
if (ChooseOption('ll')) then
begin
WriteLn('//Taking Hides from Bank.');
CloseBank;
findtalk;
Wait(500 + Random(100));
Load := load + 1
break;
end;
end;
until (LoopInteger >= 10)
if (LoopInteger >= 10) then
begin
Logout;
exit;
end;
makecompass('N')
FreeDTM(CowHide);
end;
{===============================================================================================================]
when the player logs in it only need 1 time coins so i made this to use it 1 time each player by:me
[===============================================================================================================}
procedure GetCoinsAndHides;
var
LoopInteger: Integer;
begin
if not LoggedIn then Exit;
LoadDTMs;
HighestAngle;
Cash := ((Players[CurrentPlayer].Integers[0]) * 81);
Wait(1 + random(2));
OpenBankFast('akb');
Wait(10 + random(5));
FixBank;
depositall;
LoopInteger := 0;
Coin := DTMFromString('78DA637CC5C0C0709001057C3B21CBF01F483' +
'302F17F2060BC0B64EC6140038C482490BE03244E1250F31348EC' +
'2742CD19FC6A0078830F4B');
repeat
LoopInteger := LoopInteger + 1
if (FindDTM(Coin, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Wait(100 + Random(50));
Mouse(x, y, 0, 0, False);
Wait(100 + Random(50));
end;
if (ChooseOption('X')) then
begin
Wait(1000 + random(100));
WriteLn('//taking money from bank');
TypeSend(inttostr(cash));
break;
end;
Wait(1000 + random(500));
until (LoopInteger >= 10)
if (LoopInteger >= 10) then
begin
Logout;
Exit;
end;
LoopInteger := 0;
repeat
Wait(50 + Random(50));
LoopInteger := LoopInteger + 1;
if (FindDTM(CowHide, x, y, MSX1, MSY1, MSX2, MSY2)) then
begin
Mouse(x, y, 5, 5, false);
if (ChooseOption('ll')) then
begin
WriteLn('//Taking Hides from Bank.');
CloseBank;
findtalk;
break;
Wait(500 + Random(100))
end;
end;
until (LoopInteger >= 10)
if (LoopInteger >= 10) then
begin
Logout;
exit;
end;
FreeDTM(Coin);
FreeDTM(Cowhide);
MakeCompass('N');
end;
{===============================================]
one of the walkings to the hidetanner
[===============================================}
procedure WalkingOne;
begin
if not LoggedIn then Exit;
WriteLn('//To Hide Tanner Walking 1');
SetRun(True);
GetCactusColor;
RadialRoadWalk(CactusColor, 50, 120, 60, 1, -30);
Flag;
ToTanRoom;
end;
{===============================================]
one of the walkings to the hidetanner
[===============================================}
procedure WalkingTwo;
begin
if not LoggedIn then Exit;
WriteLn('//To Hide Tanner Walking 2');
SetRun(True);
if FindColorTolerance(x, y, RockColor, MMX1, MMY1, MMX2, MMY2, 25) then
begin
Mouse(x + 20, y - 12, 0, 0, true);
flag;
wait(1000);
ToTanRoom;
end;
end;
{===============================================]
one of the walkings to the hidetanner
[===============================================}
procedure WalkingThree;
begin
if not LoggedIn then Exit;
WriteLn('//To Hide Tanner Walking 3');
SetRun(True);
GetCactusColor;
RadialWalk(CactusColor, 50, 120, 60, 2, -30);
Flag;
ToTanRoom;
end;
{===============================================]
chooses one of the walkings above by:me
[===============================================}
procedure ToHideTanner;
begin
if not LoggedIn then Exit;
case Random(3) of
0: WalkingOne;
1: WalkingTwo;
2: WalkingThree;
end;
end;
{===============================================]
talks to ellis and tans teh hides bye:Me
[===============================================}
procedure TalkToEllis;
begin
repeat
FindTalk;
Wait(50 + Random(50));
if FindObjCustom(x, y, ['llis', 'alk'], [5076433, 4285618], 10) then
begin
Mouse(x, y, 1, 1, false);
if ChooseOption('ade') then
begin
WriteLn('//Trading To Ellis');
Wait(3000 + Random(1000));
end;
end;
until (FindHideText)
if ChooseOption('ll') then
closebank;
end;
{===============================================]
this does all the normal stuff :) by:me
[===============================================}
procedure SetupClient;
begin
ActivateClient;
wait(1);
DeclarePlayers;
wait(1);
LoginPlayer;
wait(1 + random(50))
end;
{====================]
Main-Loop
[====================}
begin
SetUpSRL;
SetUpClient;
loaddtms;
CraftingLeather;
if TanCowhides then
begin
repeat
GetCoinsAndHides;
repeat
ToHideTanner;
TalkToEllis;
ToBank;
Gethides;
proggy;
until ((Load >= Players[CurrentPlayer].Integers[0]) or (not (LoggedIn)))
Loads := 0;
if CraftLeather then
begin
CraftingLeather;
end;
if (Load >= Players[CurrentPlayer].Integers[0]) then
begin
logout;
NextPlayer(True);
end else
begin
logout;
NextPlayer(False);
end;
until (CurrentPlayer >= HowManyPlayers - 1)
end;
end.
THANKS YOU!