N
nielsie95
Guest
nielsie95 has reported a post.
Reason:
Forum: RuneScape Scripts
Assigned Moderators: Cruel__Machine, speljohan, Town
Posted by: nielsie95
Original Content:
Reason:
Post: Nielsie95's Yew Retriever DraynorI accidentally made a double post because of server lag, requesting the duplicate thread to be deleted, please and thanks.
Forum: RuneScape Scripts
Assigned Moderators: Cruel__Machine, speljohan, Town
Posted by: nielsie95
Original Content:
Niels Yew Retriever Draynor
This script chops a load of yews above the Lumbridge Swamp and banks the logs in Draynor Bank.
Features:
- AntiBan
- AntiRandoms
- Best Axe finder in bank
- AutoColor
- MultiPlayer
- GainedLvl - counter
- 2 yews - The script will cut one untill its gone and walk to the second!
Set-up:
- Setup your Player Array. Plz set ur nick-names OK
- Start in the bank or start at one of the 2 yews
- Have more axes in bank, the script wil automaticly find the best axe. So if you have broken your only rune axe and have an addy and an iron axe in bank; the script will pick the addy axe
- Post your progress report as I want to repair any bugs
Known - bugs:
- WalkBack
Code:| {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | Nielsie95's Yew Retriever Draynor |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | | Will cut and bank from the 2 yews south from draynor | | Has Antiban - AntiRandoms - AutoColor | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | | Start at 1 of the 2 yews or in bank. | Have axe wielded or in inv. Also have more in bank. | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | | VERSION 1.3 | | SRL 3.7 and DIVI ready. | | VERSION 1.2 | | Improved Walking | | VERSION 1.1 | | Again tried to fix that stupid DirtColorFinder | | VERSION 1.0 | | A big update was done, better DirtFinding, | faster tree finding, better ent finding, new walking | procedures and a change to the Progress Report and | added some Status writing =] | | VERSION 0.75 | | Small update to DirtFinding, small banking bug | removed, little update to chopping =] | | VERSION 0.50 | | My very first version of my very first script! | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
Version 1.1
Code:{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=| | Nielsie95's Yew Retriever Draynor | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=| | | | Will cut and bank from the 2 yews south from draynor | | | | Has Antiban - AntiRandoms - AutoColor | | | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=| | | | Start at 1 of the 2 yews or in bank. | | Have axe wielded or in inv. Also have more in bank. | | Please set HumanDirtColor for safety =] | | | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=| | | | VERSION 1.1 | | | | Again tried to fix that stupid DirtColorFinder | | | | VERSION 1.0 | | | | A big update was done, better DirtFinding, | | faster tree finding, better ent finding, new walking | | procedures and a change to the Progress Report and | | added some Status writing =] | | | | VERSION 0.75 | | | | Small update to DirtFinding, small banking bug | | removed, little update to chopping =] | | | | VERSION 0.50 | | | | My very first version of my very first script! | | | |=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} program NielsYewRetrieverDraynor; {.Include SRL/SRL.SCAR} {.Include SRL/SRL/Skill/Woodcutting.Scar} //----------------------------------------------------------------------------// // --> SCRIPT SETUP <-- // //----------------------------------------------------------------------------// const Version = '1.1'; //No need to change MaxLoggedInTime = 25; //Max time the player can be logged in HumanDirtColor = 2183262; //Set this if DirtColorFinder doesn't work //----------------------------------------------------------------------------// // --> VARIABLES <-- // //----------------------------------------------------------------------------// var tx, ty, TreeX, TreeY, TempColor, DirtColor, DirtRoadColor, Slot, LoadsToDo, AxesBroke, BankDot1, BankDot2, BankDot3, TreeSymbol, Tree, TotalLogs, LogMask, AxeMask, Loads, ChangedYews, StartLvl, GainedLvl, AxeHeadTxt, BrokenAxeHeadMask, HeadDTM: integer; ColorArray: array of integer; NoAxe: Boolean; ChopMark, LogPresent, LogCheck, SST1, SST2, FindNorMalRandomsTime, FindFastRandomsTime, Report, LoggedInTime: LongInt; //----------------------------------------------------------------------------// // --> PLAYER SETUP <-- // //----------------------------------------------------------------------------// procedure DeclarePlayers; begin HowManyPlayers:=4; NumberOfPlayers(HowManyPlayers); CurrentPlayer := 0; Players[0].Name :=''; //Name Players[0].Pass :=''; //Password Players[0].Nick :=''; //3-4 letter nickname Players[0].Loc :=''; //Where is your Player? CHOOSE FROM: Bank, Yew 1 or Yew 2 Players[0].Integer1 := 2 ; //Loads to do Players[0].Active := True; //Is the Player used? Players[1].Name :=''; Players[1].Pass :=''; Players[1].Nick :=''; Players[1].Loc :=''; Players[1].Integer1 := 2 ; Players[1].Active := True; Players[2].Name :=''; Players[2].Pass :=''; Players[2].Nick :=''; Players[2].Loc :=''; Players[2].Integer1 := 2 ; Players[2].Active := True; Players[3].Name :=''; Players[3].Pass :=''; Players[3].Nick :=''; Players[3].Loc :=''; Players[3].Integer1 := 2 ; Players[3].Active := True; end; //----------------------------------------------------------------------------// // --> OVERALL PROCEDURES <-- // //----------------------------------------------------------------------------// procedure LoadVar; begin BankDot1 := DTMFromString('78DA636C67626008664001FFFFFF67F80FA41' + //By WT-Fakawi --> From Charm '921ECFF8CB54035DEA86AFEFC61621081AA0101C63A4C73B0AA09' + 'C7AF06000153117B'); BankDot2 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' + '921ECFF8C3540353EA86AFEFC61621081AA0101C63AA09A1022D4' + '44E057030001B5117D'); BankDot3 := DTMFromString('78DA63EC60626008624001FFFFFF67F80FA41' + '921ECFF8CF540359EA86AFEFC61621081AA0101C63AA09A40026A' + '6A816A42F1AB010000781176'); Tree := BitmapFromString(9, 1, '788843283020606837809046607' + '01D001000506022506022485032'); LogMask := BitmapFromString(13, 10, 'z78DA33301805E40037BC8' + //Charm '0BAB6D0C2E5F451494998D02E5471010034299979'); AxeHeadTxt := BitmapFromString(30, 10, 'z78DA7373B334303170' + '0393A62EA62626E6839374437227320901A36E1E75333124A9265' + '04B3DA9EE84005C2663AAA4AE7A5CBAF0BB16530D729A21559C98' + '10C36F0E316E26DE6DF87D4DBC1B28B197BCF0C404F8639972715' + 'AC435A9B98954F3013DD58547'); HeadDTM := DTMFromString('78DA63CC62626078C180021C2312191E02694' + '620FE0F048C694035CF18D000231209A473816A9E12A1E6150135' + 'A94035AF09A801B9F9090135994498930C54F392809A3CCCF0415' + '70300FB8311DF'); BrokenAxeHeadMask := BitmapFromString(9, 10, 'z78DA7373230D1890' + '05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307225'); AxeMask := BitmapFromString(10, 10, 'z78DA7373230D18500028316' + '130E825353470A921DE3DE499409EDB480D25FCE10000B72C7CE1' + ''); end; procedure PlayerStats; //Based on Fakawi's Progress Report var Active: string; i, PlayerTemp: Integer; begin if Players[CurrentPlayer].Loc <> 'Bank' then begin GameTab(4); PlayerTemp := Players[CurrentPlayer].Integer2; Players[CurrentPlayer].Integer2 := CountItemBmpMaskTol(LogMask, 20, 10) + PlayerTemp; end Writeln(' '); 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 +' . Loc = ' + Players[i].Loc + +' . Chopped ' + IntToStr(Players[i].Integer2) +' Logs.' +' . Lvl = ' + IntToStr(Players[i].level[20])); end WriteLn ('<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>'); Players[CurrentPlayer].Integer2 := PlayerTemp; end; procedure ProgressReport; //Based on Fakawi's Progress Report var LogTemp: Integer; begin if Players[CurrentPlayer].Loc = 'Bank' then LogTemp := TotalLogs else begin GameTab(4); LogTemp := CountItemBmpMaskTol(LogMask, 20, 10); LogTemp := LogTemp + TotalLogs; end; //Cleardebug; SRLRandomsReport; Writeln(' '); Writeln('/~~~~~~~~~~~~~~~~~~ Niels ~~~~~~~~~~~~~~~~~~~\'); Writeln('||~~~~~~~~~~~~~~~~ Draynor ~~~~~~~~~~~~~~~~~||'); Writeln('||~~~~~~~~~~~ Yew Cutter/Banker ~~~~~~~~~~~~||'); Writeln('||~~~~~~~~~~~~ Progress Report ~~~~~~~~~~~~~||'); Writeln('||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||'); Writeln('|| Worked for '+ TimeRunning); Writeln('|| Chopped '+ IntToStr(LogTemp)+(' Logs.')); Writeln('|| Banked '+ IntToStr(Banks)+' time[s].'); if ChangedYews > 0 then WriteLn('|| Changed from yew '+ IntToStr(ChangedYews)+' time[s].'); if AxesBroke > 0 then WriteLn('|| Broken '+ IntToStr(AxesBroke) +' Axe[s].'); if GainedLvl > 0 then WriteLn('|| Gained '+ IntToStr(GainedLvl) +' Lvl[s].'); WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ '); WriteLn('|| Current Colors:'); WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ '); WriteLn('|| Dirt: '+IntToStr(DirtRoadColor)); WriteLn('|| Road: '+ IntToStr(RoadColor)); WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ '); WriteLn('|| Current Player: ' + Players[CurrentPlayer].Name); WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ '); WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ '); WriteLn('|| Current Version: ' + Version); WriteLn('|| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ '); Writeln('\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/'); PlayerStats; MarkTime(Report); end; function FindFastRandoms: Boolean; //Almost Directly from Fakawi's Goblin Sheduler var i: Integer; begin for i:=1 to 10 do begin if(not(LoggedIn))then Exit; 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'; Players[CurrentPlayer].Active := False; Logout; Exit; end; end; 8: begin if InBlack then begin Result := True; Players[CurrentPlayer].loc := 'InBlack'; Players[CurrentPlayer].Active := False; Logout; Exit; end; end; 9 : if FindFight then begin Result := True; RunTo('N', True); end; 10: if FindTalk then Result := True; end; wait(1); end; end; procedure FtWaitE ( Time : Integer ); //FTWaitD without the status writing var T, I : integer; begin try T := (Time div 1000)+1; for I := 1 to T do begin Wait ( 250 ); FindTalk; end except begin if(not(LoggedIn))then Exit; Wait ( Time ); FindTalk; end; end; if(not(LoggedIn))then Exit; MarkTime(FindNorMalRandomsTime); if FindNorMalRandomsTime-SST1 >(10000+Random(5000)) then begin FindNorMalRandoms; MarkTime(SST1); end; MarkTime(FindFastRandomsTime); if FindFastRandomsTime-SST2 >(1500+Random(1500)) then begin FindFastRandoms; MarkTime(SST2); end; end; //----------------------------------------------------------------------------// // --> OVERAL CHOP PROCEDURES <-- // //----------------------------------------------------------------------------// procedure GainLvl; //Idea based on SL 'PS Willow Cutter' CheckLeveled function Var temp: Integer; begin if(not(LoggedIn))then Exit; if (Clicktocontinue) then WriteLn('We probably gained a lvl!'); Temp := (Players[CurrentPlayer].level[20] - StartLvl); if (Temp > 0) then begin StartLvl := Players[CurrentPlayer].level[20] Gainedlvl := GainedLvl + Temp; end end; procedure CountLogs; // CharmZ var LogTemp: integer; begin if(not(LoggedIn))then Exit; GameTab(4); LogTemp := CountItemBmpMaskTol(LogMask, 20, 10); TotalLogs := LogTemp + TotalLogs; Players[CurrentPlayer].Integer2 := Players[CurrentPlayer].Integer2 + LogTemp; end; procedure FirstEmptySlot; begin if(not(LoggedIn))then Exit; if (InvFull) then exit; slot := 0; repeat slot := slot + 1 until(not ExistsItem(slot)); marktime(LogCheck); end; function CheckForLogs: Boolean; //Idea from SL 'PS willow cutter' begin if(not(LoggedIn))then Exit; if (InvFull) then exit; if (TimeFromMark(LogCheck) >= (15000 + random (1000))) then begin GameTab(4); if (not ExistsItem(slot)) then begin WriteLn('No logs found since last check'); Result := True; FirstEmptySlot; end else begin FirstEmptySlot; MarkTime(LogPresent); Result := False; end end if (TimeFromMark(LogPresent) > 240000) then begin WriteLn('4 mins no logs were found, Player is set to false'); Players[CurrentPlayer].Loc := '4 mins no logs'; Players[CurrentPlayer].Active := False; Logout; end end; //----------------------------------------------------------------------------// // --> AXE PROCEDURES <-- // //----------------------------------------------------------------------------// function CharmFindAxeHeadColors: Boolean; //Charm var AX, AY: Integer; begin if(not(LoggedIn))then Exit; GameTab(4); if(FindBitmapMaskTolerance(AxeMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 10, 5))then begin Head := GetColor(AX + 5, AY + 3); Head2 := GetColor(AX + 7, AY + 2); Head3 := GetColor(AX, AY + 3); EquipAxe:= False; Result:= True; if ((Ax > 605) or (AY > 245) or (Ax < 565) or (AY < 210)) then begin MMouse(AX, AY, 1, 1); HoldMouse(AX, AY, True); Wait(150 + Random(50)); MMouseItem(1); GetMousePos(x, y); ReleaseMouse(x, y, True); Wait(100 + Random(100)); MMouse(x, y, 2, 2) end end else begin GameTab(5); Wait(1000+Random(750)); if(FindBitmapMaskTolerance(AxeMask, AX, AY, MIX1, MIY1, MIX2, MIY2, 10, 5))then begin Head := GetColor(AX + 5, AY + 3); Head2 := GetColor(AX + 7, AY + 2); Head3 := GetColor(AX, AY + 3); EquipAxe:= True; Result:= True; end GameTab(4); end if(Result= True)then begin NoAxe:= False; WriteLn('Axe head colors - '+IntToStr(Head)+', '+IntToStr(Head2)+ ', and '+IntToStr(Head3)); if EquipAxe then WriteLn('The axe is Equiped') else WriteLn('The axe not is Equiped'); end else begin WriteLn('No Axe') Players[CurrentPlayer].loc := 'No Axes'; Players[CurrentPlayer].Active := False; Logout; end end; function MyFindAxeHead: Boolean; //Mix from SRL Findhead and Charmz findaxehead procedures + walkback from RedDot var xh, yh, ex, ey, xb, yb, Tries: Integer; Start: Boolean; begin if(not(LoggedIn))then Exit; if(InChatMulti('ou do not have', 'You do no', 'o not have a')or (FindBitmapMaskTolerance(AxeHeadTxt, x, y, MCX1, MCY1, MCX2, MCY2, 10, 85))) then begin if not EquipAxe then begin GameTab(4); Wait(50+Random(50)); if(not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then Start:= True; end else if EquipAxe then begin GameTab(5); Wait(50+Random(50)); if(not(FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10)))then Start:= True; end end; if Start then begin Status('Finding the axe') WriteLn('Lost Axe Head, Finding..'); HighestAngle; if(FindBitmapMaskTolerance(BrokenAxeHeadMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))then begin AxesBroke:= AxesBroke + 1; WriteLn('Found a Broken Axe!'); NoAxe:= True; Mouse(XH,YH,0,0,false); if not ChooseOption(Ex, Ey, 'emove') then ChooseOption(ex, ey, 'Cancel'); Result:= False; Exit; end GameTab(4); FtWaitE(2000+Random(100)); if(InvFull)then begin if(FindBitmapMaskTolerance(LogMask, XH, YH, MIX1, MIY1, MIX2, MIY2, 20, 25))then begin Mouse(XH, YH, 0, 0, False); ChooseOption(x, y, 'rop'); end end repeat if not LoggedIn then Exit; if (FindDTM(HeadDTM, XH, YH, MIX1, MIY1, MIX2, MIY2)) then Break; if not (FindObjMulti('Take', Head, Head2, Head3, 5)) then begin SetRun(True); Tries := Tries + 1; WriteLn('Axe head not found. Taken ' + IntToStr(tries) + ' tries'); Status('Axe Head not found - Rotating Screen'); KeyDown(VK_LEFT); Wait(500 + Random(800)); KeyUp(VK_LEFT); Wait(400 + Random(300)); if not FindObjMulti('Take', Head, Head2, Head3, 5) then begin Status('Axe Head not found - Moving to Red Dot'); x := 648; y := 83; FindColorSpiral(x, y, 241, 615, 55, 675, 115) XB := X YB := Y Mouse(x + 3, y + 3, 2, 2, True); Flag; Wait(100 + Random(300)); Tries := Tries + 1; end; if FindObjMulti('Take', Head, Head2, Head3, 5) then begin Status('Found Axe Head'); WriteLn('Axe head was found. Picking it up'); Wait(300 + Random(400)); GetMousePos(x, y); Mouse(x, y, 0, 0, True); Flag; Wait(500 + Random(300)); XB := 648 - XB + 648 YB := 83 - YB + 83 Mouse(XB,YB,1,1,True); Flag; Wait(500 + Random(300)); Tries := Tries + 1; end else begin if (not(FindSymbol(x, y, 'Tree'))) then begin Status('Walking back from Red Dot'); FtWaitE(500 + Random(300)); XB := 648 - XB + 648 YB := 83 - YB + 83 Mouse(XB,YB,1,1,True); Flag; FtWaitE(500 + Random(300)); Tries := Tries + 1; end; end; end; until (tries > 9) or (FindDTM(HeadDTM, XH, YH, MIX1, MIY1, MIX2, MIY2)); if (tries > 9) then NoAxe := True else if (AttachHead) then begin Result := True; NoAxe := False; GameTab(4); end Setrun(False); MakeCompass('N'); Flag; Wait(500); if FindSymbol(x, y, 'tree') then begin MouseFindFlag(x, y -9, 1, 1); FFlag(0); end end; end; procedure GetBestAxe; var RuneAxeMask, AddyAxeMask, MithAxeMask, SteelAxeMask, IronAxeMask, BronzeAxeMask, x ,y: integer; begin Status('Getting the best axe from the bank'); Wait(5000); RuneAxeMask := BitmapFromString(5, 10, 'z78DA958C410E80400803BF040' + 'B6DC2D58DFEFF49EAE281E86A620F3DCC14448EA8DCFB8A37045B' + 'EDBA71C742266728247ED8FCA920B6891DFCDBD24F5E3B37B6C2D' + '09F3C6FAD4330E125FAC2650704733B67'); AddyAxeMask := BitmapFromString(5, 10, 'z78DA7D8BB10DC0200C0457B2F' + '11B899208F65F8944503C58E48A2FEE6C91179573175057282FDF' + '203990A6CF455DCA56E9EB56ADA3598F75FAFF9AF179DE5BDD7E2' + 'B1EABD113D12C06E4823B85'); MithAxeMask := BitmapFromString(5, 10, 'z78DA8D90410AC0200C04BF94B' + '08992A394FAFF27D5AAA5DB16A11BD8C34C02A2488BCADD8F6047' + 'F58D9B374D4DBD0E9E425D82EDBC6AE341567ED9CE51503CAD6CB' + '293734F3BAEDEFC7A5546767C3965F91B0716F53C9C');; SteelAxeMask := BitmapFromString(5, 10, 'z78DA758E490E80300C03BFE4' + '40EB28D7B2FCFF49A48B5028604B3E8CDB24804B30E79066EEDC6' + '2C6375A74712B4F1E34C9B047DB78FFF5D1F6992B8BFBDD36AEA0' + '55DF2D62CB5479CC3EC16F51F7CC87FC96543D6F0C921F8E0BF2C' + '73C7F'); IronAxeMask := BitmapFromString(5, 10, 'z78DA958C310E80300C03BFE40' + '863292355E9FF9F44A1194251073C78B8930DF418E68EEC1B2B6B' + 'EE97151BDBE02A26787E8895B1F0F86D1FCE934E5F59E9E6B9878' + 'DD5CC63DB5F457D798A2D382EE20F3C76'); BronzeAxeMask := BitmapFromString(5, 10, 'z78DA33300002430374120A4' + 'C9C8D1D8D8C90496435C8E2669686A6069658642D8CCD8D0CB0C8' + '82C5299135330189239310352626C626862E98E250BD48B298FEC' + '5150E1000001FB63B4E'); if ((Players[CurrentPlayer].level[20]) >= 41) and (FindBitmapToleranceIn(RuneAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then begin WriteLn('Rune Axe is found') Wait(1000); repeat Mouse(x, y, 1, 1, True); Wait(3000); until (FindBitmapToleranceIn(RuneAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20)) end else if ((Players[CurrentPlayer].level[20]) >= 31) and (FindBitmapToleranceIn(AddyAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then begin WriteLn('Addy Axe is found') Wait(1000); repeat Mouse(x, y, 1, 1, True); Wait(3000); until (FindBitmapToleranceIn(AddyAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20)) end else if ((Players[CurrentPlayer].level[20]) >= 41) and (FindBitmapToleranceIn(MithAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then begin WriteLn('Mithril Axe is found') repeat Mouse(x, y, 1, 1, True); Wait(3000); until (FindBitmapToleranceIn(MithAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20)) end else if ((Players[CurrentPlayer].level[20]) >= 6) and (FindBitmapToleranceIn(SteelAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20)) then begin WriteLn('Steel Axe is found') Wait(1000); repeat Mouse(x, y, 1, 1, True); Wait(3000); until (FindBitmapToleranceIn(SteelAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20)) end else if FindBitmapToleranceIn(IronAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20) then begin WriteLn('Iron Axe is found'); Wait(1000); repeat Mouse(x, y, 1, 1, True); Wait(3000); until (FindBitmapToleranceIn(IronAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20)) end else if FindBitmapToleranceIn(BronzeAxeMask, x, y, MSX1,MSY1,MSX2,MSY2,20) then begin WriteLn('Bronze Axe is found') Wait(1000); repeat Mouse(x, y, 1, 1, True); Wait(3000); until (FindBitmapToleranceIn(BronzeAxeMask, x, y, MIX1,MIY1,MIX2,MIY2,20)) end FreeBitmap(RuneAxeMask); FreeBitMap(AddyAxeMask); FreeBitmap(MithAxeMask); FreeBitmap(SteelAxeMask); FreeBitmap(IronAxeMask); FreeBitMap(BronzeAxeMask); end; //----------------------------------------------------------------------------// // --> BANKING PROCEDURES <-- // //----------------------------------------------------------------------------// function MyOpenBank: Boolean; var bx, by, tol: Integer; OpenBankTime: LongInt; begin Status('Opening Bank'); WriteLn('Opening Bank'); if(not(LoggedIn))then Exit; MakeCompass('W'); LowestAngle; Tol := 0 MMouse(240, 135, 1, 1); if IsUpTextMulti('e Bank', 'Booth', 'ooth') then begin GetMousePos(bx, by); Mouse(bx, by, 0, 0, False); if ChooseOption(x, y, 'uickly') then begin MarkTime(OpenBankTime); repeat if(not(LoggedIn))then Exit; Wait(10); if TimeFromMark(OpenBankTime) > 20000 then Exit; if BankScreen then Break; until BankScreen; Result := True; exit; end end else repeat Wait(200); if (FindObjectMulti(bx, by, 'se Bank', 'Bank Booth', 'nk Booth', 8026748, 1984346, 3026483, Tol, 10, True, True)) then begin if(not(LoggedIn))then Exit; Mouse(bx, by, 0, 0, False); if ChooseOption(x, y, 'uickly') then begin MarkTime(OpenBankTime); repeat if(not(LoggedIn))then Exit; Wait(10); if BankScreen then Break; if TimeFromMark(OpenBankTime) > 20000 then Exit; until BankScreen; Result := True; exit; end Wait(200); end else Tol := Tol + 10; until ((BankScreen) or (Tol >= 50)) if (Tol >= 50) then result := False; end; procedure Bank; begin Status('Banking') if(not(LoggedIn))then Exit; if (FlagPresent) then Flag; GetAllLevels; GainLvl; CountLogs; if (not(MyOpenBank)) then begin if(not(LoggedIn))then Exit; MakeCompass('N'); HighestAngle; Openbank3; end if (EquipAxe) then Deposit(1,28,2) else Deposit (2,28,2) if (NoAxe) then begin fixbank; wait(1000); DepositAll; Wait(1000) GetBestAxe; Wait(1000); Closebank; Wait(1000); if FindBitmapMaskTolerance(AxeMask, x, y, MIX1, MIY1, MIX2, MIY2, 20, 10) then Mouse(x, y, 1, 1, True); Wait(5000); CharmFindAxeHeadColors; Loads := loads +1 Banks := Banks +1 end else begin Closebank; Banks := Banks +1 Loads := Loads +1 end PerfectNorth; HighestAngle; end; //----------------------------------------------------------------------------// // --> WALKING PROCEDURES <-- // //----------------------------------------------------------------------------// Function CountArray(Color: integer):integer; //Tarajunky var n:integer; begin For n:= 0 to GetArrayLength(ColorArray)-1 do begin if ColorArray[n]= Color then result:=result+1; end; end; Function FindDirtColor: integer; var h,i,j,n,tol,Color:integer; ColorPoints: TPointArray; begin if(not(LoggedIn))then Exit; repeat if Tol > 60 then Color := DirtColor else Color := 1652808 if Tol = 10 then Color := DirtColor; FindColorsSpiralTolerance(MMCX, MMCY, ColorPoints, Color, MMX1, MMY1, MMX2 -20, MMY2, tol) For h := 0 to GetArrayLength(ColorPoints)-1 do begin TestColor := GetColor(ColorPoints[h].x, ColorPoints[h].y); SetArrayLength(ColorArray, 0); n:=0; red := (TestColor mod 256) // green := ((TestColor / 256) mod 256); // blue := ((TestColor / 256) / 256); // // this part is Tarajunky's if Tol < 60 then if FindColor(x, y, TestColor, 680, 15, MMX2, MMY2) then // if Red - Green >= 3 then if Red - Green <= 32 then // if Red - Blue >= 30 then if Red - Blue <= 62 then // if Green - Blue >= 15 then if Green - Blue <= 50 then // if GetColor(ColorPoints[h].x +5, ColorPoints[h].y) = TestColor then if GetColor(ColorPoints[h].x -9, ColorPoints[h].y) = TestColor then if GetColor(ColorPoints[h].x +3, ColorPoints[h].y +3) = TestColor then if GetColor(ColorPoints[h].x -3, ColorPoints[h].y -3) = TestColor then for i:= 0 to 15 do begin for j:= 0 to 6 do begin SetArrayLength(ColorArray, GetArrayLength(ColorArray)+1); ColorArray[n]:=GetColor(ColorPoints[h].x -9 + i, ColorPoints[h].y -3 + j); n:=n+1; end; end; if (CountArray(TestColor) > 80) then begin WriteLn('Color = '+ inttostr(testColor)+' Red: '+inttostr(Red)+' Blue: '+inttostr(Blue)+' Green: '+inttostr(Green)); WriteLn('DirtColor = ' + Inttostr(TestColor) + ' found at a Tol of ' + IntToStr(Tol)); DirtRoadColor := TestColor; Result := DirtRoadColor; DirtColor := DirtRoadColor; exit; end end; Tol := Tol + 10; if Tol > 20 then IdleTime(Tol * 30, 75, 1) else Wait(Tol * 30) //Makes sure it wont logout. until Tol > 100; WriteLn('DirtRoadColor NOT found!'); WriteLn('Terminating script..'); TerminateScript; end; procedure WalkToYews; begin if(not(LoggedIn))then Exit; Status('Walking to Yews'); FindRoadColor; RadialRoadWalk(RoadColor, 95, 58, 54, -1, 0); if not FindMMColor(x, y, RoadColor) then FindRoadColor; RadialRoadWalk(RoadColor, 140, 195, 55, -1, -1); if not FindMMColor(x, y, RoadColor) then FindRoadColor; RadialRoadWalk(RoadColor, 140, 195, 55, -1, -1); if not FindMMColor(x, y, RoadColor) then FindRoadColor; RadialRoadWalk(RoadColor, 120, 160, 55, -1, -1); Flag; FindDirtColor; RadialWalk(DirtRoadColor, 135, 75, 55, -1, 0); if not FindMMColor(x, y, DirtRoadColor) then begin Flag; FindDirtColor; end RadialWalk(DirtRoadColor, 30, 117, 55, -1, 0); if not FindMMColor(x, y, DirtRoadColor) then begin Flag; FindDirtColor; end RadialWalk(DirtRoadColor , 88, 48, 50, -1, 0); SymbolAccuracy := 0.5; if FindSymbol(tx, ty, 'tree') then Mouse(tx, ty +5, 1, 1, True) else begin if not FindMMColor(x, y, DirtRoadColor) then begin Flag; FindDirtColor; end RadialWalk(DirtRoadColor , 88, 48, 50, -1, 0); if not FindSymbol(tx, ty, 'tree') then begin if TreeSymbol <> 0 then if FindColorTolerance(tx, ty, Treesymbol, MMX1, MMY1, 785, 90, 1) then Mouse(tx, ty +9, 1, 1, True) else begin WriteLn('YewSymbol not found, maybe its an Ent, so we are waiting..'); FtWaitE(15000); MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0); FtWaitE(10000); if FindSymbol(tx, ty, 'tree') then Mouse(tx, ty +9, 1, 1, True); end else begin WriteLn('Tree not found'); Players[CurrentPlayer].Loc := 'Lost while walking to Yews'; Players[CurrentPlayer].Active := False; LogOut; SymbolAccuracy := 0.9; exit; end end end; Flag; Players[CurrentPlayer].Loc := 'Yew 1'; SymbolAccuracy := 0.9; end; procedure WalkToBank; begin if(not(LoggedIn))then Exit; Status('Walking to Bank'); FindDirtColor; RadialWalk(DirtRoadColor , 290, 245, 58, 1, 0); if not FindMMColor(x, y, DirtRoadColor) then begin Flag; FindDirtColor; end RadialWalk(DirtRoadColor , 276, 230, 58, 1, 0); if not FindMMColor(x, y, DirtRoadColor) then begin Flag; FindDirtColor; end RadialWalk(DirtRoadColor , 185, 265, 55, 1, 0); Flag; FindRoadColor; RadialRoadWalk(RoadColor, 270, 320, 65, 1, 1); if not FindMMColor(x, y, RoadColor) then FindRoadColor; RadialRoadWalk(RoadColor, 320, 365, 58, 1, 1); Flag; SymbolAccuracy := 0.3; if (DTM3Flag(BankDot1, BankDot2, BankDot3, True)) then Flag else if FindSymbol(tx, ty, 'bank') then Mouse(tx, ty, 1, 1, True) else begin if not FindMMColor(x, y, RoadColor) then FindRoadColor; RadialRoadWalk(RoadColor, 335, 390, 45, 1, 1); Flag; if (DTM3Flag(BankDot1, BankDot2, BankDot3, True)) then Flag else if FindSymbol(tx, ty, 'bank') then Mouse(tx, ty, 1, 1, True) else begin WriteLn('Bank not found'); Players[CurrentPlayer].Loc := 'Lost while walking to bank'; Players[CurrentPlayer].Active := False; LogOut; SymbolAccuracy := 0.9; exit; end end Players[CurrentPlayer].Loc := 'Bank'; SymbolAccuracy := 0.9; end; procedure Yew1to2; begin if(not(LoggedIn))then Exit; if ((TreeSymbol = 0) or (not(FindMMcolor(x, y, TreeSymbol)))) then TreeSymbol := (GetSymbolColor(x, y, 'tree')) MouseFindFlag(675, 115, 1, 1); fflag(3); if (FindColorTolerance(x, y, Treesymbol, 650, 70, 720, 155, 1)) then mouse(x, y, 1, 1, true); Flag; Players[CurrentPlayer].Loc := 'Yew 2'; Wait(500); end; procedure Yew2to1; begin if(not(LoggedIn))then Exit; if ((TreeSymbol = 0) or (not(FindMMcolor(x, y, TreeSymbol)))) then TreeSymbol := (GetSymbolColor(x, y, 'tree')) MouseFindFlag(616, 60, -1, 0) fflag(3); if (FindColorTolerance(x, y, Treesymbol, 570, 10, 650, 100, 1)) then mouse(x, y +9, 1, 1, true); Flag; Players[CurrentPlayer].Loc := 'Yew 1'; Wait(500); end; procedure ChangeYews; begin if(not(LoggedIn))then Exit; Status('Changing Yews'); if LowerCase(Players[CurrentPlayer].Loc) = 'yew 1' then begin WriteLn('Walking from the first Yew to the second.'); Yew1to2; end else if LowerCase(Players[CurrentPlayer].Loc) = 'yew 2' then begin WriteLn('Walking from the second Yew to the first.'); Yew2to1; end ChangedYews := ChangedYews +1; end; //----------------------------------------------------------------------------// // --> CHOPPING PROCEDURES <-- // //----------------------------------------------------------------------------// function EntCheck(tx, ty: integer; Move: Boolean): Boolean; begin if(not(LoggedIn))then Exit; if Move then MMouse(tx, ty, 1, 1); Wait(150 +Random(150)); if IsUpText('Yew') then if FindColorTolerance(x, y, 55769, 85, 15, 115, 15, 20) then Result := True; end; function HandleEnt(Move: Boolean): Boolean; var Ent: LongInt; begin if(not(LoggedIn))then Exit; if (FindColorCircleTolerance(x,y, 195836, 15, 648, 83, 20)) then if EntCheck(TreeX, TreeY, Move) then begin WriteLn('Handling Ent!'); Result := True; Mouse(MMCX, MMCY, 0, 0, True); MarkTime(Ent); repeat FTWaitE(1500); until ((not EntCheck(TreeX, TreeY, True)) or (TimeFromMark(Ent) > 120000)) EntsAvoided := EntsAvoided +1; end else Result := False; end; Function FindDeformedYew(Var ObjX, ObjY: Integer): Boolean; //Charmz <-- Not used for now, as it causes to much lack. Var Acc, Ref: Extended; TX, TY, Times, Tol: Integer; Begin if(not(LoggedIn))then Exit; WriteLn('Performing FindDeformedYew'); Ref:= 0.9; Tol:= 0; For Times := 1 to 10 do Begin FindTalk; Wait(50+Random(100)); Try FindDeformedBitmapToleranceIn(Tree, TX, TY, MSX1 + 50, MSY1 + 30, MSX2 - 50, MSY2 - 50, Tol, 2, True, Acc); except Result:= False; End If(Acc >= Ref)then Begin tx := tx +10 TempColor := GetColor(tx, ty); MMouse(TX, TY, 3, 3); If(IsUpTextMulti('hop down Ye', 'down Yew', 'own Y')) or (IsUpTextMulti('Yew', 'ew', 'Ye'))then Begin ObjX:= TX; ObjY:= TY; TreeX := ObjX; TreeY := ObjY; Result:= True; Exit; End End Ref:= Ref - 0.05; // Ref - 0.1 Tol:= Tol + 5; // Tol + 10 Wait(Random(50)); Wait(1); End Wait(1); End; function FindYew(var x, y: integer): Boolean; var Points: TPointArray; I, Ci, Tol: Integer; begin repeat if FindMSColorTol(x, y, 598048, Tol) then Break else Tol := Tol +2 until Tol > 15 if Tol > 15 then begin Result := False; exit; Tol := 0 end else begin FindColorsSpiralTolerance(MSCX, MSCY, Points, 598048, MSX1 + 50, MSY1 + 30, MSX2 - 50, MSY2 - 50, tol) ci := 0; for I := 1 to GetArrayLength(Points) - 1 do begin if (Distance(Points[ci].x, 0, Points[i].x, 0) >= 2) and (Distance(0, Points[ci].y, 0, Points[i].y) >= 2) then ci := I else begin Points[I].x := 0; Points[I].y := 0; end; end; for i := 0 to GetArrayLength(Points) - 1 do begin if (Points[i].x <> 0) then if FindColorTolerance(x, y, 2373688, Points[i].x -5, Points[i].y -5, Points[i].x +5, Points[i].y +5, 5 +Tol) then if FindColorTolerance(x, y, 4159600, Points[i].x -5, Points[i].y -5, Points[i].x +5, Points[i].y +5, 5 +Tol) then if FindColorTolerance(x, y, 2900024, Points[i].x -5, Points[i].y -5, Points[i].x +5, Points[i].y +5, 5 +Tol) then begin TempColor := GetColor(Points[i].x, Points[i].y); MMouse(Points[i].x, Points[i].y, 0, 0) Wait(50); if (IsUpText('Yew')) then begin Status('Yew found at a Tol of ' +IntToStr(Tol)); Result := True; Break; end; end; end; if (Result) then begin x := Points[i].x; y := Points[i].y; TreeX := x; TreeY := y; end; end; Tol := 0; end; function TreeGone(Sx, Sy: integer): Boolean; begin if(not(LoggedIn))then Exit; if ((not FindColor(x, y, TempColor, Sx -4, Sy -4, Sx +4, Sy +4)) or (TimeFromMark(ChopMark) > 120000)) then begin MMouse(TreeX, TreeY, 1, 1); Wait(100); if not IsUpText('Yew') then begin Status('Yew Gone'); Result := True; end else begin if FindObjEx(tx, ty, 'Yew', TreeX -20, TreeY -20, TreeX +20, TreeY +20, 598048, 20, 2, 2, 50, True) then begin TempColor := GetColor(tx, ty); MarkTime(ChopMark); end end end end; function ClickTree: Boolean; var Ent: LongInt; begin if(not(LoggedIn))then Exit; if FindYew(tx, ty) then begin GainLvl; if not EntCheck(TreeX, TreeY, False) then begin if(Random(20) < 15)then begin Mouse(tx, ty, 1, 1, True); end else begin Mouse(tx, ty, 0, 0, False); if not ChooseOption(x, y, 'hop down')then Mouse(tx, ty, 1, 1, True); end end else begin MarkTime(Ent); repeat FTWaitE(1500); until ((not EntCheck(TreeX, TreeY, True)) or (TimeFromMark(Ent) > 120000)); Mouse(tx, ty, 1, 1, True); end Result := True; FtWaitE(100); if FindFastRandoms then Mouse(tx, ty, 1, 1, True); GainLvl; MyFindAxeHead; end else { if FindDeformedYew(tx, ty) then begin Wait(50 +Random(150)); if not HandleEnt(False) then Mouse(tx, ty, 1, 1, True); Result := True; end else} Result := False; end; procedure WaitTillTree; var TillTreeMark: LongInt; begin if(not(LoggedIn))then Exit; if InvFull then Exit; Status('Yew not found, waiting..'); MarkTime(TillTreeMark); GetAllLevels; repeat case Random(20) of 0 : SleepAndMoveMouse(2000 +Random(1000)); 1 : MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0); 2 : IdleTime(2000 +Random(1000), 14, 2); 3 : begin RandomRClick; Wait(200); ChooseOption(x, y, 'Cancel'); end 4 : FtWaitE(1500); 5 : PickUpMouse; 6 : FtWait(50);//AlmostLogOut; 7 : GameTab(Random(13) +1); 8 : SleepAndMoveMouse(2000 +Random(1000)); 9 : WWait(3000); 10: PickUpMouse; 11: FtWait(8); 12: IdleTime(3000 +Random(1000), 14, 2); 13: WWait(2500); 14: IdleTime(2700, 11, 1); 15: GameTab(Random(13) +1); 16: WWait(2000); 17: FtWaitE(1500); 18: PickUpMouse; 19: begin RandomRClick; FtWaitE(200); ChooseOption(x, y, 'Cancel'); end end FindFastRandoms; if ClickTree then Break; FindFastRandoms; Wait(1000); if (TimeFromMark(Report) > 180000) then ProgressReport; FtWaitE(1500 +Random(2000)); if (TimeFromMark(TillTreeMark) > 450000) then begin WriteLn('No tree for 7,5 minutes'); Players[CurrentPlayer].Loc := 'No tree in 7,5 mins'; Players[CurrentPlayer].Active := False; LogOut; end until(ClickTree); end; procedure Chop; var TreeWait: LongInt; begin if(not(LoggedIn))then Exit; HighestAngle; repeat Status('Chopping'); FirstEmptySlot; if NoAxe then break; if not ClickTree then WaitTillTree; MarkTime(ChopMark); MarkTime(LogPresent); MarkTime(LogCheck); repeat Status('Chopping'); if(not(LoggedIn))then Exit; if InvFull then Break; FtWait(2); MyFindAxeHead; if NoAxe then break; if HandleEnt(True) then ClickTree; if not TreeGone(TreeX, TreeY) then case Random(20) of 0 : SleepAndMoveMouse(500 +Random(500)); 1 : MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0); 2 : IdleTime(1000 +Random(1000), 14, 2); 3 : begin RandomRClick; Wait(200); ChooseOption(x, y, 'Cancel'); end 4 : FtWait(2); 5 : PickUpMouse; 6 : SleepAndMoveMouse(500 +Random(500));//AlmostLogOut; 7 : GameTab(Random(13) +1); 8 : SleepAndMoveMouse(500 +Random(1000)); 9 : WWait(1000); 10: PickUpMouse; 11: FtWait(6); 12: IdleTime(500 +Random(1000), 14, 2); 13: WWait(500); 14: IdleTime(700, 11, 1); 15: GameTab(Random(13) +1); 16: HandleEnt(False); 17: MouseBack(Random(1100) - Random(600), Random(700) - Random (400), 8, 8, 50, 60, 0); 18: PickUpMouse; 19: begin RandomRClick; Wait(200); ChooseOption(x, y, 'Cancel'); end end if not TreeGone(TreeX, TreeY) then begin MarkTime(TreeWait); if HandleEnt(True) then ClickTree; repeat FtWaitE(500 +Random(1000)); Wait(100); if HandleEnt(False) then ClickTree; Wait(100); if NoAxe then break; if CheckForLogs then ClickTree; if TreeGone(TreeX, TreeY) then break; if InvFull then Break; if (TimeFromMark(Report) > 180000) then ProgressReport; until(TimeFromMark(TreeWait) > 30000); end until ((TreeGone(TreeX, TreeY)) or (TimeFromMark(ChopMark) > 90000)); MyFindAxeHead; if NoAxe then break; if not InvFull then ChangeYews; until ((InvFull) or (not(LoggedIn))); if LowerCase(Players[CurrentPlayer].Loc) = 'yew 2' then Yew2to1; end; //----------------------------------------------------------------------------// // --> MAIN THING <-- // //----------------------------------------------------------------------------// begin ClearDebug; WriteLn('Nielsie95 Draynor Yew Cutter / Banker version '+ Version); Status('Nielsie95 Draynor Yew Cutter / Banker version '+ Version); Wait(2500); setupsrl; activateclient; BenMouse := False; MouseSpeed := 20 + random(5); DeclarePlayers; NickNameBMP:=CreateBitmapMaskFromText(Players[CurrentPlayer].Nick,UpChars); LoadVar; DirtColor := HumanDirtColor; LoadsToDo := Players[CurrentPlayer].Integer1; LoginPlayer; CharmFindAxeHeadColors; GetAllLevels; MarkTime(LoggedInTime); repeat repeat if LowerCase(Players[CurrentPlayer].loc) = 'bank' then begin if InvCount > 10 then Bank; if (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) then Break; if (Loads >= LoadsToDo) then Break; WalkToYews; end if ((LowerCase(Players[CurrentPlayer].loc) = 'yew 1') or (LowerCase(Players[CurrentPlayer].loc) = 'yew 2')) then begin Chop; Wait(100); if (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) then Break; WalkToBank; end ProgressReport; if not LoggedIn then Break; until((Loads >= LoadsToDo) or (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) or (not(LoggedIn))); if (TimeFromMark(LoggedInTime) > MaxLoggedInTime*60*1000) then begin if not (Players[CurrentPlayer].Active) then wait(100) else Players[CurrentPlayer].loc := 'Times up'; LogOut; WriteLn('Time is up, Logging in next player'); end if Loads >= LoadsToDo then begin if not (Players[CurrentPlayer].Active) then wait(100) else Players[CurrentPlayer].loc := 'Loads Done'; LogOut; WriteLn('Loads are done, Logging in next player'); end if LoggedIn then LogOut; Loads := 0; LoadsToDo := Players[CurrentPlayer].Integer1; NextPlayer(Players[CurrentPlayer].Active); MarkTime(LoggedInTime); CharmFindAxeHeadColors; GetAllLevels; ProgressReport; until(False); end.


