{.Script Info: # ScriptName = Squig 4.04 # Author = Squigglyo # Description = Include Created by Squigglyo # Version = 4.04 # Date = 26 / 09 / 05 # Comments = Created To handle random eventsCheckSkill(Skill : String); also does alot Of other things. Check the manual out. Any questions pm me, me user is Squigglyo at www.kaitnieks.com/scr /Script Info} {= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ] Squig Version 4.04 by Squigglyo [= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ] Huge thanks To Benland100 who has contributed his password saver And FindTextArcSpiral among other things Special Thanks: poppa68 = > Huge help getting bitmaps And broken picks And axes For V2 Odie5583 = > Some Of my original procedures are based loosly on his in Osi Akumara = > My box solver is based loosly on his BoxBreaker2 just reprogrammed piv = > Contributed his gas finder pups = > Contributed his maze detector Stupid3ooo = > Allowed me To use his Frog Solver Zup = > Helped update MouseC KnightStreak = > Allowed me to use his Dr. Ford Solver VG_Kobra = > Got me pictures of the Evil Bob random event jiakhang = > Helped fix up the GasFinding procedures Driger1592 = > Updated SetChat for me among other various things. Goldec = > Looked thru Squig for me People who suggested things And got them put into Squig. JayJay = > Bank/Drop Item Color SilentWolf = > Faster FindObject Procedure Qwerty = > Easy Map Walking, Random Talker, Faster DropAll Monkie = > Drop Item by Name The Saint = > FindObjectIn Abyssal = > WorkedFor, ClearDebug Moparisthebest = > DepositAll2 Theino = > MapFlaggingH Freddy1990 = > MouseR, MouseBox, DragFromTo Smitty = > MapCompass('R'); Version 2 Testers: BrokenSkateboard Version 3 Testers: Sdouble Philodespotos = >Special thanks To Phil, he has helped test alot Mysteryman Milk JayJay Seifer225 Quilto33 Hemnet Abyssal Deadlydragon Version 4 Testers/ProofReaders: Idiota MoparistheBest Bebemycat2 Pwnd xxKanexx Abyssal = > Returning Tester, Yay for Abyssal Driger1592 [= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = } {Squig should only be downloaded on Kaitnieks' forum Or using Scar} {No other site has my permission To have it on their site} {But since i cannot patrol the internet, If you Do download Squig from somewhere Else, by careful.} {To learn how To use it, use the guide that is found here http://www.kaitnieks.com/scr/showthread.php?p=31137#post31137} {You are not allowed To edit And/Or change this in any way. You are not allowed To take any piece(s) from/out Of Squig, all parts must be left in And the only way To use it's procedures is To include Squig in your script(s). All procedures And/Or functions in Squig were created by Squigglyo. All items in this script are Copyrighted To Squigglyo. This script may not be sold, traded, exchanged, And / Or distributed unless you have been given direct written consent To Do so by me And me only.} {= = = = = = = = = = = = = = = = = = = = = = = = = = = = = Versions Version 1.0, First Release Version 1.1, Bank Opener Version 2.0, Alot Of new procedures, including a Box opener Also updated alot Of things including Global variables And a Lamp Decider. Version 2.1, Added a ScreenShot Taker, And all random events will be screenshotted And placed in the script folder. Version 2.2, Updated the Coding, Updated MouseC, Added ClickHuman Added BuyItemColor And SellItemColor Version 2.2.1, Updated some things Version 2.2.2, Updated the Find Text random event finder Procedure And the login Procedure. Version 2.3, Updated all text finding procedures And the MapFlagging Procedure Version 2.4, Updated the Mapflagging Procedure again Version 2.4.1, Updated all procedures that look For text. Version 2.4.2, Updated the random event talked a little bit. Version 3.0, Fixed the random event talker, added all the other random events i missed, updated the sendkeyshuman2 Procedure, added the GetStat Procedure, added the randomtalk Procedure, added a disease, poison And fight checker, updated the fightfound Procedure, slotfilled Function added, itemcount Function added, fullbag Function added, dropitemcolor Procedure added, bankitemcolor Procedure added, Death checker, Axefound added, pickfound added, findgas added, findnets added, mapcolor Function added, mapwalk Procedure added, dropitemname added, emote Procedure updated. FindObjectIn Added, DragItem Added And alot Of other things updated. Version 3.1, Fixed a little bug in FindObject where it didnt wait long enough To check the text. Fixed a little bug in the FindFight Procedure, fixed a bug where the dropitem Procedure would drink beer, And, fixed a bug in the FullBag Function. Version 3.2, Added documentation, Updated some stuff, Added Dist, FlagPresent Added, GetHp Added, DropItem2 Added, MapFlaggingR Added, FlagPresent Added, MapCompass Added, ClickText Added Version 3.3, Updated procedures that use Istextat2 To IsTextAtEx, Added MapFlaggingH, Added MapFlaggingHR, Added WorkedFor, Added DepositAll2, Added FindGasArea, Added ClearDebug, Updated the RandomTalk Procedure To include 2 things about Farming. Version 4.0, IsTextUp Updated, MouseC Updated, WorkedFor Fixed, OpenBag Updated, OpenCombat Updated, OpenQuests Updated, OpenStats Updated, OpenEquip Updated, OpenPrayer Updated, OpenMagic Updated, OpenFriends Updated, OpenIgnore Updated, Logout Updated, OpenOptions Updated, OpenControls Updated, OpenMusic Updated, SetChat Updated, LogIn Updated, IsTextAt3 Added, IsTextIn3 Added, KillScript Added, LogOutFor Added, FindDtmIn Added, IDHerbs Added, UseItemWith Added, Enchant Added, LowAlch Added, HighAlch Added, FletchAll Added, ThieveNPC Added, WaitR Added, FindColorM Added, Smelt Added, CannonBalls Added, UseSpecial Added, Smith Added, FindFish Added, FindTree Added, EntFound Altered, FindRange Added, IsTextInString Added, RandomLogout Added, DropAllRow Added, DropAllCol Added, DepositAllRow Added, DepositAllCol, MineRock Added, OpenChest Added, FindTextArcSpiral Added, PassSaver Added, Enter Added, CheckSkill Added, BankTop Added, BankBottom Added, Updated all bitmaps LampPresent Added, BoxPresent Added, FindBob Added, FindForester Added, SolveFord Added, FindQuiz Added, SolveFrog Added, FindCerters Added, IsBank Added Version 4.01, Updated the MineRock procedure to handle the new rocks out at the time. Version 4.02, Fixed a small big in DropItem Version 4.03, Small update in GetStat, and bug fix in IsBank Version 4.04, Fixed a small problem with the MineRock and FindObjectIn procedures Added 'R' to Mapcompass = = = = = = = = = = = = = = = = = = = = = = = = = = = = = } Var //Variables used for character sets and times chrChatChars, chrCharsNormal, GSquigTime, gSquigTime2 : Integer; //Variables left unchanged For functionality For older scripts YellowTextTotal, AttacksTotal, TotalBoxes, FordTotal, TotalFrogs : Integer; TotalLamps, TotalEnts, AxeTotal, PickTotal, PlantTotal, GasTotal : Integer; BankID : Integer; User, Pass, Direction, LampSkill : String; randomtalked, fightfound, tradeb, screenshots, checkford, CheckForester : Boolean; checktext, checkfights, checkboxes, checklamps, checkmods, CheckCerters : Boolean; checkplant, checkmime, checkmaze, runback, checkquiz, CheckFrog : Boolean; CheckBob : Boolean; //Variables For the pass saver AccessCode, CName, CPass: String; User2, Pass2: Array Of String; UID: Integer; V: TVariantArray; Main: TForm; Label1: TLabel; Names: TComboBox; Button1, Button2, Delete: TButton; Const {S1, S2, S3 And S4 are the size Of the actual game, Starting at the top right And finishing in the bottom left before they reach the inventory Or chat} S1 = 5; S2 = 5; S3 = 515; S4 = 340; {M1, M2, M3 And M4 are the minimap} M1 = 565; M2 = 5; M3 = 725; M4 = 160; {I1, I2, I3 And I4 are the inventory} I1 = 560; I2 = 210; I3 = 740; I4 = 460; {C1, C2, C3 And C4 are the chat log} c1 = 1; c2 = 340; c3 = 495; c4 = 455; {GameCenterA And GameCenterB are the middle Of the game} GameCenterA = 257; GameCenterB = 168; {MapCenterA And MapCenterB are the middle Of the minimap} MapCenterA = 647; MapCenterB = 83; gSquigMessage = 'Squig 4.04 - Created by Squigglyo'; {^^^^^^^^^^^^^^^^^ CLEARDEBUG ^^^^^^^^^^^^^^^^^^} {This will clear the area where text appears in scar} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure ClearDebug; Var i : Integer; Begin i:= 0; Repeat writeln(''); i:= i + 1; Until(i= 15); End; {^^^^^^^^^^^^^^^^^ FLAGPRESENT ^^^^^^^^^^^^^^^^} {Returns true If the flag is in the minimap And false If it isnt} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function FlagPresent : Boolean; Var a, b, runescapeflag, runescapeflag2 : Integer; Begin result:= false; runescapeflag := BitmapFromstring(7, 7, '000000000000000000000000000000000000FF0000000000000000' + '000000000000000000FF0000FF0000000000000000000000000000' + 'FF0000FF0000FF0000000000000000000000FF0000FF0000FF0000' + 'FF0000000000000000FF0000FF0000FF0000FF0000FF0000000000' + 'FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000' + 'FF0000FF0000FF0000FF0000'); runescapeflag2 := BitmapFromstring(2, 4, 'C656045D3311C656045D3311C656045D3311C656045D3311'); If(findbitmapin(runescapeflag, a, b, 555, 5, 735, 160)) Or(findbitmapin(runescapeflag2, a, b, 555, 5, 735, 160))Then Begin wait(50); If(findbitmapin(runescapeflag, a, b, 555, 5, 735, 160)) Or(findbitmapin(runescapeflag2, a, b, 555, 5, 735, 160))Then result:=true; End; FreeBitmap(runescapeflag); FreeBitmap(runescapeflag2); End; {^^^^^^^^^^^^^^^^^ MAPFLAGGING ^^^^^^^^^^^^^^^^^} {Waits Until the Runescape Flag is not in the minimap} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure MapFlagging; Var color1, color2, color3, x1 : Integer; Begin x1:= 0; If(flagpresent=false)Then exit; Repeat wait(100); x1:= x1 + 1; If(FlagPresent=False)Then wait(1000); If(FlagPresent=False)Then Begin color1:= getcolor(70, 185); color2:= getcolor(436, 68); color3:= getcolor(45, 52); wait(500); If(getcolor(45, 52) = color3)Or(getcolor(70, 185) = color1) Or(getcolor(436, 68) = color2)Then If(flagPresent=False)Then break; End; Until(x1= 150); End; {^^^^^^^^^^^^^^^^^ MAPCOMPASS ^^^^^^^^^^^^^^^^^} {Moves the minimap compass To the desired Direction (N, E, S, W)} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure MapCompass(Compass : String); Var a : Extended; Begin Compass:= Uppercase(Compass); If(Compass = 'R')Or(Compass = 'RANDOM')Then begin SendArrowSilentWait(3, random(5500) + 500); exit; End; Case Compass Of 'N', 'NORTH' : a:= 6.283185307180; 'E', 'EAST' : a:= 4.909784540235; 'S', 'SOUTH' : a:= 3.338988213440; 'W', 'WEST' : a:= 1.570796326795; Else exit; End; While(DetectRS2MinimapCompassAngle<(a - 0.001)) Or(DetectRS2MinimapCompassAngle>(a + 0.001))Do SendArrowSilentWait(3, random(25) + 5); End; {^^^^^^^^^^^^^^^^^ ISTEXTAT3 ^^^^^^^^^^^^^^^^^^} {Works just like Istextat3 but is more acurate, and uses IsTextAtEx} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function IsTextAt3(x, y : Integer; S : String; Tolerance : Integer) : Boolean; Begin result:= IsTextAtEx(x, y, S, Tolerance, ChrCharsNormal, True, False, 0, 1, -1); If(result=False)Then result:= IsTextAtEx(x - 2, y - 2, S, Tolerance, ChrCharsNormal, True, False, 0, 1, -1); If(Result=false)Then result:= IsTextAtEx(x, y - 2, S, Tolerance, ChrCharsNormal, True, False, 0, 1, -1); If(Result=False)Then result:= IsTextAtEx(x - 2, y, S, Tolerance, ChrCharsNormal, True, False, 0, 1, -1); End; {^^^^^^^^^^^^^^^^^ CHECKCHATMSG ^^^^^^^^^^^^^^^} {Checks the last sentence in the chat box and returns true if it matchets the one its looking for} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function CheckChatMsg(Text: String) : Boolean; Begin Result:= IsTextAtEx(20, 415, Text, 40, ChrChatChars, False, True, 0, 1, 0); End; {^^^^^^^^^^^^^^^^^ ISTEXTIN3 ^^^^^^^^^^^^^^^^^^} {Works just like IsTextInArea but is more acurate, and uses IsTextinAreaEx} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function IsTextIn3(x1, y1, x2, y2 : Integer; Var x, y : integer; S : String) : Boolean; Begin result:= IsTextInAreaEx(x1 , y1, x2, y2, x, y, S, 100, ChrCharsNormal, True, True, 0, 1, -1); End; {^^^^^^^^^^^^^^^^^ ISTEXTUP ^^^^^^^^^^^^^^^^^^^} {Returns true If the text is found at 9, 9} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function IsTextUp(text : String) : Boolean; Begin If(IsTextAt3(9, 9, text, 100))Then result:= true Else result:= false; End; {^^^^^^^^^^^^^^^^^ CLICKHUMAN ^^^^^^^^^^^^^^^^^} {Clicks the mouse like a human would} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure ClickHuman(x, y : Integer; left : Boolean); Begin holdmouse(x, y, left); wait(random(20) + 15); releasemouse(x, y, left); End; {^^^^^^^^^^^^^^^^^^ DIST ^^^^^^^^^^^^^^^^^} {Returns the amount Of pixels between a1, b1 And a2, b2} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function Dist(a1, b1, a2, b2 : Integer) : Integer; Var aa, bb : Extended; Begin If(a1>a2)Then aa:= (a1 - a2) * (a1 - a2) Else aa:= (a2 - a1) * (a2 - a1); If(b1>b2)Then bb:= (b1 - b2) * (b1 - b2) Else bb:= (b2 - b1) * (b2 - b1); result:= trunc(Sqrt(aa + bb)) + 1; End; {^^^^^^^^^^^^^^^^^ MOUSEC ^^^^^^^^^^^^^^^^^} {Moves the mouse To the location given by x And y Left clicks If click is 1, right clicks If its 2, 0 For no click.} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure MouseC(x, y, click : Integer); // New MouseC with the help of Zup Var a, b : Integer; step : Extended; Begin step:= 5; GetMousePos(a, b); Repeat If(Dist(a, b, x, y)<100)Then Begin If(not(Dist(a, b, x, y)= 1))Then step:= step - (10 / Dist(a, b, x, y)); End; If(step<1)Then step:= 1; a:= a + Round((x - a) / step); b:= b + Round((y - b) / step); MoveMouseSmoothEx(a, b, 1, 6, 15, 20, 20); wait(9 + random(4)); Until(Dist(a, b, x, y)= 1); wait(random(19) + 7); Case click Of 1 : Clickhuman(a, b, true); 2 : Clickhuman(a, b, false); End; End; {^^^^^^^^^^^^^^^^^ MOUSER ^^^^^^^^^^^^^^^^^} {Moves the mouse To the location given by x + random(x2) And y + random(y2). Left clicks If click is 1, right clicks If its 2, 0 For no click.} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure MouseR(x, y, xx, yy, click : Integer); Begin MouseC(x + random(xx), y + random(yy), click); End; {^^^^^^^^^^^^^^^^^ MOUSEBOX ^^^^^^^^^^^^^^^} {Moves the mouse inside the location given by x1, y1, x2, y2 Left clicks If click is 1, right clicks If its 2, 0 For no click.} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure MouseBox(x1, y1, x2, y2, click : Integer); Var xx, yy : Integer; Begin if(x1 < x2)then xx:= x1 + random(x2 - x1) else xx:= x1 - random(x1 - x2); if(y1 < y2)then yy:= y1 + random(y2 - y1) else yy:= y1 - random(y1 - y2); MouseC(xx, yy, click); End; {^^^^^^^^^^^^^^^^^ CLICKTEXT ^^^^^^^^^^^^^^^^^^} {Looks For text inside the given area And If found, clicks on it} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function ClickText(text : String; x1, y1, x2, y2 : Integer; left : Boolean) : Boolean; Var a, b : Integer; Begin result:= false; If(IsTextIn3(x1, y1, x2, y2, a, b, Text))Then Begin If(left= true)Then MouseC(a + random(3), b + random(2) + 4, 1) Else MouseC(a + random(3), b + random(2) + 4, 2); result:= true; End; End; {^^^^^^^^^^^^^^^^^ TIMERUNNINGMILI ^^^^^^^^^^^^^^^^^} {Returns the number Of miliseconds the script has been running} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function TimeRunningMili : Integer; Begin result:= GetSystemtime - GSquigTime; End; {^^^^^^^^^^^^^^^^^ TIMERUNNINGSEC ^^^^^^^^^^^^^^^^^} {Returns the number Of seconds the script has been running} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function TimeRunningSec : Integer; Begin result:= (GetSystemtime - GSquigTime) / 1000; End; {^^^^^^^^^^^^^^^^^ TIMERUNNINGMIN ^^^^^^^^^^^^^^^^^} {Returns the number Of minits the script has been running} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function TimeRunningMin : Integer; Begin result:= ((GetSystemtime - GSquigTime) / 1000) / 60; End; {^^^^^^^^^^^^^^^^^ TIMERUNNINGHOUR ^^^^^^^^^^^^^^^^^} {Returns the number Of hours the script has been running} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function TimeRunningHour : Integer; Begin result:= (((GetSystemTime - GSquigTime) / 1000) / 60) / 60; End; {^^^^^^^^^^^^^^^^^ WORKEDFOR ^^^^^^^^^^^^^^^^^^^} {Returns the amount Of time the script has been running For} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function WorkedFor : String; Var int1, int2, int3 : Integer; str1, str2, str3 : String; Begin int1:= TimeRunningHour; int2:= TimeRunningMin; int3:= TimeRunningSec; While(int2>59)Do int2:= int2 - 60; While(int3>59)Do int3:= int3 - 60; If(int1<10)Then str1:= '0' + inttostr(int1 ) Else str1:= inttostr(int1); If(int2<10)Then str2:= '0' + inttostr(int2) Else str2:= inttostr(int2); If(int3<10)Then str3:= '0' + inttostr(int3) Else str3:= inttostr(int3); result:= ('Worked For: ' + str1 + ':' + str2 + ':' + str3); End; {^^^^^^^^^^^^^^^^^ SELLITEMCOLOR ^^^^^^^^^^^^^^^^^^^} {Sells an item that has the color in it defined by ItemColor, Sells the amount defined by Ammount (1, 5, 10 Or 0 For all), And the item name needs To match the variable defined as Name} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure SellItemColor(ItemColor, Ammount : Integer; name : String); Var a, b, x1, y1, x2, y2, txt1, col : Integer; Begin x1:= 570; y1:= 210; x2:= 610; y2:= 245; col:= 1; If(findcolor(a, b, ItemColor, 555, 200, 735, 465))Then Repeat txt1:= 40; If(findcolor(a, b, ItemColor, x1, y1, x2, y2))Then Begin MouseC(a + random(3), b + random(3), 0); While(IsTextAt3(9, 9, 'Value', 100))Do Begin txt1:= txt1 + 1; If(istextat3(txt1, 7, name, 100)) Or(txt1= 130)Then break; End; If(txt1<>130)Then Begin MouseC(a, b, 2); wait(random(300) + 600); If(ammount= 1)Then ClickText('1', I1, I2, I3, I4, true); If(ammount= 5)Then ClickText('5', I1, I2, I3, I4, true); If(ammount<>1)And(ammount<>5)Then ClickText('10', I1, I2, I3, I4, true); Exit; End; End; If(col= 1)Or(col= 3)Or(col= 7)Or(col= 4)Or(col= 5)Then Begin y1:= y1 + 35; y2:= y2 + 35; End Else If(col= 6)Then Begin y1:= y1 + 45; y2:= y2 + 45; End Else If(col= 2)Then Begin y1:= y1 + 40; y2:= y2 + 40; End; col:= col + 1; wait(random(100) + 50); If(col= 8)Then Begin x1:= x1 + 40; x2:= x2 + 40; y1:= 210; y2:= 245; col:= 1; End; wait(random(100) + 100); Until(x1>720); End; {^^^^^^^^^^^^^^^^^ BUYITEMCOLOR ^^^^^^^^^^^^^^^^^^^^} {Buys an item that has the color in it defined by ItemColor, Buys the amount defined by Ammount (1, 5, 10 Or 0 For all), And the item name needs To match the variable defined as Name} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure BuyItemColor(ItemColor, ammount : Integer; name : String); Var a, b, x1, y1, x2, y2, txt1 : Integer; Begin x1:= 75; y1:= 60; x2:= 110; y2:= 100; If(findcolor(a, b, ItemColor, 75, 60, 475, 290))Then Repeat txt1:= 40 If(findcolor(a, b, ItemColor, x1, y1, x2, y2))Then Begin MouseC(a + random(3), b + random(3), 0); While(istextat3(9, 9, 'Value', 100))Do Begin txt1:= txt1 + 1; If(istextat3(txt1, 9, name, 100)) Or(txt1= 130)Then break; End; If(txt1<>130)Then Begin MouseC(a, b, 2); wait(random(300) + 600); If(ammount= 1)Then ClickText('1', I1, I2, I3, I4, true); If(ammount= 5)Then ClickText('5', I1, I2, I3, I4, true); If(ammount<>1)And(ammount<>5)Then ClickText('10', I1, I2, I3, I4, true); Exit; End; End; x1:= x1 + 50; x2:= x2 + 50; wait(random(100) + 50); If(x1>445)Then Begin x1:= 75; x2:= 110; y1:= y1 + 55; y2:= y2 + 55; End; Until(y1>290) End; {^^^^^^^^^^^^^^^^^ LAMPPRESENT ^^^^^^^^^^^^^^^^^} {Returns true if you have a lamp in your bag} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} function LampPresent : Boolean; Var bmpTheLamp, a, b : Integer; begin bmpTheLamp := BitmapFromstring(29, 8, '000000000000000000000000000000000000000000000000000000' + '000000000000000000000000000000939212A7A516000000000000' + '000000000000000000000000000000000000000000000000000000' + '000000000000000000000000000000D4D21C000000000000000000' + '000000000000000000000000000000000000B9B716C0BF19B3B116' + 'A7A5169D9C12939212000000000000000000000000000000000000' + '000000000000000000000000000000000000D1CF19C0BF19C0BF19' + 'C0BF19C0BF19000000000000000000000000000000BBB916B3B116' + 'B0AE16ACAB169D9C129392128D8B1276750E000000000000000000' + '000000000000000000000000000000000000000000D1CF19C0BF19' + 'B0AE16B6B416BEBC19C6C519C6C519D1CF19CCCA19C9C719C6C519' + 'C6C519C0BF19BBB916B6B416ACAB16A4A2129A981293921286840E' + '7A790E6B6A095D5C09A7A516000000000000000000000000000000' + '000000000000000000000000000000CCCA19CCCA19CECC19C6C519' + 'C3C219C0BF19BEBC19BBB916B9B716B6B416B3B116A9A816A4A212' + '9D9C12979612908F1282810E9A9812B0AE1689880E000000000000' + '000000000000000000000000000000000000000000000000D4D21C' + 'CECC19CCCA19C0BF19BEBC19BBB916B6B416B3B116B0AE16A9A816' + 'A4A212A19F129A981289880E86840E8D8B129392129D9C12B9B716' + '666509000000000000000000000000000000000000000000000000' + '000000000000000000CCCA19CCCA19BBB916B9B716B6B416B3B116' + 'B0AE16A9A816A4A2129D9C1297961282810E7A790E86840E000000' + '000000000000C3C219A9A816000000000000000000000000000000' + '000000000000000000000000000000CCCA19CCCA19C0BF19B9B716' + 'B3B116B0AE16ACAB16A7A516A19F129A98128D8B127A790E76750E' + '000000000000C3C219B6B416A7A516000000000000'); If(FindBitmaptolerancein(bmpTheLamp, a, b, 560, 215, 730, 455, 20))Or FindBitmaptolerancein(bmpTheLamp, a, b, 95, 65, 440, 255, 20)Then Result:= true; FreeBitmap(bmpTheLamp); end; {^^^^^^^^^^^^^^^^^ TAKESCREENSHOT ^^^^^^^^^^^^^^^^^^} {Takes a screenshot Of the runescape client And saves it in the script folder, the name Of the file is defined in the reason variable And the number variable} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeScreenShot(reason:String; number:Integer); Begin If(screenshots= true)Then Begin SaveScreenshot(apppath + 'scripts\' + reason + inttostr(number) + '.bmp'); writeln('Screenshot taken: ' + reason + ' #' + inttostr(number)); End; End; {^^^^^^^^^^^^^^^^^ OPENEQUIP ^^^^^^^^^^^^^^^^^^^^^^^} {Opens the Equipment tab} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure OpenEquip; Begin If(getcolor(680, 173) = 5531511)Then MouseC(random(10) + 675, random(10) + 175, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFSWORD ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your weapon} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffSword; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 580, random(10) + 300, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFHELM ^^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your helmet} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffHelm; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 640, random(10) + 215, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFCAPE ^^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your cape} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffCape; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 595, random(10) + 255, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFNECKLACE ^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your necklace} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffNecklace; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 640, random(10) + 255, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFARROWS ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your arrows} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffArrows; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 680, random(10) + 255, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFBODY ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your body armor} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffBody; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 650, random(10) + 300, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFSHIELD ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your shield} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffShield; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 695, random(10) + 300, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFLEGS ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your leg armor} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffLegs; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 635, random(10) + 335, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFGLOVES ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your gloves} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffGloves; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 580, random(10) + 375, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFBOOTS ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your boots} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffBoots; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 640, random(10) + 375, 1); End; {^^^^^^^^^^^^^^^^^ TAKEOFFRING ^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And unequips your ring} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TakeOffRing; Begin OpenEquip; wait(random(300) + 300); MouseC(random(10) + 695, random(10) + 375, 1); End; {^^^^^^^^^^^^^^^^^ WEARINGRING ^^^^^^^^^^^^^^^^^^^^} {Opens the equipment tab If needed And returns true If your wearing a ring And false If your not} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function WearingRing : Boolean; Begin OpenEquip; wait(random(300) + 300); If(getcolor(705, 384)<>2304814)Then Result:= true Else result:= false; End; {^^^^^^^^^^^^^^^^^ SENDKEYSHUMAN ^^^^^^^^^^^^^^^^^^} {Types in whatever is in the variable text at the speed a human does} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure SendKeysHuman(text:String); Var a1 : Integer; Begin a1:= 1; Repeat wait(random(220) + 15); sendkeys(copy(text, a1, 1)); a1:= a1 + 1; Until a1 > length(text); End; {^^^^^^^^^^^^^^^^^ SENDKEYSHUMAN2 ^^^^^^^^^^^^^^^^^} {Types whatever is in the vaariable text at the speed a human does And also has the chance To make human-like mistakes} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure SendKeysHuman2(text:String); Var a1, a2, a3 : Integer; char1, char2 : String; mistake : Boolean; Begin a1:= 1; a3:= random(4) + 1 mistake:= false; Repeat a2:= random(50); If(a2<>5)Or(mistake= true)Then Begin wait(random(220) + 15); sendkeys(copy(text, a1, 1)); End Else Begin mistake:= true; char1:= (copy(text, a1, 1)); char1:= Lowercase(char1); char2:= char1; a2:= random(2); If(a2= 0)Then Case char1 Of '`' : char2:= '`'; '1' : char2:= '`'; '2' : char2:= '1'; '3' : char2:= '2'; '4' : char2:= '3'; '5' : char2:= '4'; '6' : char2:= '5'; '7' : char2:= '6'; '8' : char2:= '7'; '9' : char2:= '8'; '0' : char2:= '9'; '-' : char2:= '0'; '=' : char2:= '-'; '~' : char2:= '~'; '!' : char2:= '~'; '@' : char2:= '!'; '#' : char2:= '@'; '$' : char2:= '#'; '%' : char2:= '$'; '^' : char2:= '%'; '&' : char2:= '^'; '*' : char2:= '&'; '(' : char2:= '*'; ')' : char2:= '('; '_' : char2:= ')'; '+' : char2:= '_'; 'q' : char2:= 'q'; 'w' : char2:= 'q'; 'e' : char2:= 'w'; 'r' : char2:= 'e'; 't' : char2:= 'r'; 'y' : char2:= 't'; 'u' : char2:= 'y'; 'i' : char2:= 'u'; 'o' : char2:= 'i'; 'p' : char2:= 'o'; '[' : char2:= 'p'; '{' : char2:= 'P'; ']' : char2:= '['; '}' : char2:= '{'; '\' : char2:= ']'; '|' : char2:= '}'; 'a' : char2:= 'a'; 's' : char2:= 'a'; 'd' : char2:= 's'; 'f' : char2:= 'd'; 'g' : char2:= 'f'; 'h' : char2:= 'g'; 'j' : char2:= 'h'; 'k' : char2:= 'j'; 'l' : char2:= 'k'; ';' : char2:= 'l'; ':' : char2:= 'L'; chr(39) : char2:= ';'; '"' : char2:= ':'; 'z' : char2:= 'z'; 'x' : char2:= 'z'; 'c' : char2:= 'x'; 'v' : char2:= 'c'; 'b' : char2:= 'v'; 'n' : char2:= 'b'; 'm' : char2:= 'n'; ',' : char2:= 'm'; '<' : char2:= 'M'; '.' : char2:= ','; '>' : char2:= '<'; ' / ' : char2:= '.'; '?' : char2:= '>'; End; If(a2= 1)Then Case char1 Of '`' : char2:= '1'; '1' : char2:= '2'; '2' : char2:= '3'; '3' : char2:= '4'; '4' : char2:= '5'; '5' : char2:= '6'; '6' : char2:= '7'; '7' : char2:= '8'; '8' : char2:= '9'; '9' : char2:= '0'; '0' : char2:= '-'; '-' : char2:= '='; '=' : char2:= '='; '~' : char2:= '!'; '!' : char2:= '@'; '@' : char2:= '#'; '#' : char2:= '$'; '$' : char2:= '%'; '%' : char2:= '^'; '^' : char2:= '&'; '&' : char2:= '*'; '*' : char2:= '('; '(' : char2:= ')'; ')' : char2:= '_'; '_' : char2:= '+'; '+' : char2:= '+'; 'q' : char2:= 'w'; 'w' : char2:= 'e'; 'e' : char2:= 'r'; 'r' : char2:= 't'; 't' : char2:= 'y'; 'y' : char2:= 'u'; 'u' : char2:= 'i'; 'i' : char2:= 'o'; 'o' : char2:= 'p'; 'p' : char2:= '['; '[' : char2:= ']'; '{' : char2:= '}'; ']' : char2:= '\'; '}' : char2:= '|'; '\' : char2:= '\'; '|' : char2:= '|'; 'a' : char2:= 's'; 's' : char2:= 'd'; 'd' : char2:= 'f'; 'f' : char2:= 'g'; 'g' : char2:= 'h'; 'h' : char2:= 'j'; 'j' : char2:= 'k'; 'k' : char2:= 'l'; 'l' : char2:= ';'; ';' : char2:= chr(39); ':' : char2:= '"'; chr(39) : char2:= chr(39); '"' : char2:= '"'; 'z' : char2:= 'x'; 'x' : char2:= 'c'; 'c' : char2:= 'v'; 'v' : char2:= 'b'; 'b' : char2:= 'n'; 'n' : char2:= 'm'; 'm' : char2:= ','; ', ' : char2:= '.'; '<' : char2:= '>'; '.' : char2:= '/'; '>' : char2:= '?'; '/' : char2:= '/'; '?' : char2:= '?'; End; sendkeys(char2); End; a1:= a1 + 1; Until a1 > length(text); End; {^^^^^^^^^^^^^^^^^ RANDOM1 ^^^^^^^^^^^^^^^^^^^^^^^^} {Used in the random talking Procedure} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function Random1 : String; Var a : Integer; Begin a:= random(4) + 1; Case a Of 1 : result:= 'man,'; 2 : result:= 'jeez,'; 3 : result:= 'woo,'; 4 : result:= 'cmon,'; End; End; {^^^^^^^^^^^^^^^^^ RANDOMARMOR ^^^^^^^^^^^^^^^^^^^^} {Used in the random talking Procedure, returns a random piece Of armor Or a weapon} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function RandomArmor : String; Var a : Integer; Begin a:= random(77) + 1; Case a Of 1 : result:= 'bronze armor'; 2 : result:= 'iron armor'; 3 : result:= 'steel armor'; 4 : result:= 'mithril armor'; 5 : result:= 'adamite armor'; 6 : result:= 'adam armor'; 7 : result:= 'adamantite armor'; 8 : result:= 'rune armor'; 9 : result:= 'dragon armor'; 10 : result:= 'drag armor'; 11 : result:= 'barrow armor'; 12 : result:= 'green dragon'; 13 : result:= 'green drag'; 14 : result:= 'green ranger'; 15 : result:= 'blue dragon'; 16 : result:= 'blue drag'; 17 : result:= 'blue ranger'; 18 : result:= 'red dragon'; 19 : result:= 'red drag'; 20 : result:= 'red ranger'; 21 : result:= 'black dragon'; 22 : result:= 'black drag'; 23 : result:= 'black ranger'; 24 : result:= 'splitbark armor'; 25 : result:= 'trimmed armor'; 26 : result:= 'god armor'; 27 : result:= 'guthix armor'; 28 : result:= 'sara armor'; 29 : result:= 'saradomin armor'; 30 : result:= 'zammy armor'; 31 : result:= 'zamarok armor'; 32 : result:= 'black trimmed armor'; 33 : result:= 'adam trimmed armor'; 34 : result:= 'rune trimmed armor'; 35 : result:= 'gold trimmed armor'; 36 : result:= 'mystic robes'; 37 : result:= 'ahrim armor'; 38 : result:= 'dharok armor'; 39 : result:= 'guthan armor'; 40 : result:= 'karil armor'; 41 : result:= 'torag armor'; 42 : result:= 'verac armor'; 43 : result:= 'bronze weapons'; 44 : result:= 'iron weapons'; 45 : result:= 'steel weapons'; 46 : result:= 'mithril weapons'; 47 : result:= 'mith weapons'; 48 : result:= 'adam weapons'; 49 : result:= 'adamantite weapons'; 50 : result:= 'rune weapons'; 51 : result:= 'dragon weapons'; 52 : result:= 'crystal shields'; 53 : result:= 'crystal bows'; 54 : result:= 'longbows'; 55 : result:= 'shortbows'; 56 : result:= 'oak longbows'; 57 : result:= 'oak shortbows'; 58 : result:= 'willow shortbows'; 59 : result:= 'willow longbows'; 60 : result:= 'maple longbows'; 61 : result:= 'maple shortbows'; 62 : result:= 'yew longbows'; 63 : result:= 'yew shortbows'; 64 : result:= 'magic longbows'; 65 : result:= 'magic shortbows'; 66 : result:= 'staffs'; 67 : result:= 'battlestaffs'; 68 : result:= 'mystic staffs'; 69 : result:= 'cannons'; 70 : result:= 'ahrims staff'; 71 : result:= 'dharoks greataxe'; 72 : result:= 'guthans warspear'; 73 : result:= 'crossbows'; 74 : result:= 'karils crossbows'; 75 : result:= 'torags hammers'; 76 : result:= 'veracs flail'; 77 : result:= 'gilded armor'; End; End; {^^^^^^^^^^^^^^^^^ RANDOMRARE ^^^^^^^^^^^^^^^^^^^^^} {Used in the random talking Procedure, returns a random rare item} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function RandomRare : String; Var a : Integer; Begin a:= random(56) + 1; Case a Of 1 : result:= 'pumpkins'; 2 : result:= 'christmas crackers'; 3 : result:= 'crackers'; 4 : result:= 'phats'; 5 : result:= 'party hats'; 6 : result:= 'red phats'; 7 : result:= 'red partyhats'; 8 : result:= 'yellow phats'; 9 : result:= 'yellow partyhats'; 10 : result:= 'white phats'; 11 : result:= 'white partyhats'; 12 : result:= 'green phats'; 13 : result:= 'green partyhats'; 14 : result:= 'blue phats'; 15 : result:= 'blue partyhats'; 16 : result:= 'purple partyhats'; 17 : result:= 'purple phats'; 18 : result:= 'easter eggs'; 19 : result:= 'red masks'; 20 : result:= 'blue masks'; 21 : result:= 'green masks'; 22 : result:= 'santa hats'; 23 : result:= 'santas'; 24 : result:= 'dragon spears'; 25 : result:= 'dragon meduim helmets'; 26 : result:= 'dragon meds'; 27 : result:= 'dragon helms'; 28 : result:= 'dragon shields'; 29 : result:= 'dragon squares'; 30 : result:= 'dragon chains'; 31 : result:= 'dragon chainbodys'; 32 : result:= 'dragon legs'; 33 : result:= 'dragon platelegs'; 34 : result:= 'white berets'; 35 : result:= 'blue berets'; 36 : result:= 'black berets'; 37 : result:= 'highwayman masks'; 38 : result:= 'red headbands'; 39 : result:= 'black headbands'; 40 : result:= 'brown headbands'; 41 : result:= 'dragon items'; 42 : result:= 'masks'; 43 : result:= 'berets'; 44 : result:= 'headbands'; 45 : result:= 'cavaliers'; 46 : result:= 'brown cavaliers'; 47 : result:= 'black cavaliers'; 48 : result:= 'tan cavaliers'; 49 : result:= 'pirate hats'; 50 : result:= 'robins'; 51 : result:= 'robin hood hats'; 52 : result:= 'mage boots'; 53 : result:= 'ranger boots'; 54 : result:= 'disk Of returnings'; 55 : result:= 'disks'; 56 : result:= 'half wines'; 57 : result:= 'magic seeds'; End; End; {^^^^^^^^^^^^^^^^^ RANDOMSKILL ^^^^^^^^^^^^^^^^^^^^} {Used in the random talking Procedure, returns a random skill along with some other words that work create a sentence} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function RandomSkill : String; Var a, b : Integer; Begin b:= random(35) + 1; Case b Of 1 : result:= 'attack'; 2 : result:= 'strength'; 3 : result:= 'defense'; 4 : result:= 'range'; 5 : result:= 'prayer'; 6 : result:= 'magic'; 7 : result:= 'runecrafting'; 8 : result:= 'hitpoint'; 9 : result:= 'agility'; 10 : result:= 'herblore'; 11 : result:= 'thieving'; 12 : result:= 'crafting'; 13 : result:= 'fletching'; 14 : result:= 'slayer'; 15 : result:= 'mining'; 16 : result:= 'smithing'; 17 : result:= 'fishing'; 18 : result:= 'cooking'; 19 : result:= 'firemaking'; 20 : result:= 'woodcutting'; 21 : result:= 'atk'; 22 : result:= 'str'; 23 : result:= 'def'; 24 : result:= 'mage'; 25 : result:= 'rc'; 26 : result:= 'hp'; 27 : result:= 'herb'; 28 : result:= 'thiev'; 29 : result:= 'craft'; 30 : result:= 'fletch'; 31 : result:= 'smith'; 32 : result:= 'fish'; 33 : result:= 'cook'; 34 : result:= 'fire'; 35 : result:= 'wc'; 36 : result:= 'farming'; End; Case b Of 5, 8, 9, 26 : a:= random(2) + 1; Else a:= random(3) + 1; End; Case a Of 1 : result:= result + ' levels?'; 2 : result:= result + ' lvs?'; 3 : result:= random1 + ' ' + result; End; If(a= 3)Then Begin a:= random(7) + 1; Case a Of 1 : result:= result + ' is boring!'; 2 : result:= result + ' is the best'; 3 : result:= result + ' is my favourite skill'; 4 : result:= result + ' takes ages To train'; 5 : result:= result + ' makes me so much money'; 6 : result:= result + ' needs an update'; 7 : result:= result + ' is too easy'; End; End; End; {^^^^^^^^^^^^^^^^^ RANDOMMONSTER ^^^^^^^^^^^^^^^^^^} {Used in the random talking Procedure, returns a random monster} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function RandomMonster : String; Var a : Integer; Begin a:= random(30) + 1; Case a Of 1 : result:= 'chickens'; 2 : result:= 'green dragons'; 3 : result:= 'blue dragons'; 4 : result:= 'red dragons'; 5 : result:= 'black dragons'; 6 : result:= 'king black dragons'; 7 : result:= 'kalphites'; 8 : result:= 'kalphite queens'; 9 : result:= 'demons'; 10 : result:= 'dragons'; 11 : result:= 'metal dragons'; 12 : result:= 'bronze dragons'; 13 : result:= 'iron dragons'; 14 : result:= 'steel dragons'; 15 : result:= 'black demons'; 16 : result:= 'greater demons'; 17 : result:= 'lesser demons'; 18 : result:= 'golems'; 19 : result:= 'tree spirits'; 20 : result:= 'shades'; 21 : result:= 'moss giants'; 22 : result:= 'giants'; 23 : result:= 'hill giants'; 24 : result:= 'wolfs'; 25 : result:= 'baby dragons'; 26 : result:= 'spiders'; 27 : result:= 'rats'; 28 : result:= 'zombies'; 29 : result:= 'goblins'; 30 : result:= 'scorpions'; End; End; {^^^^^^^^^^^^^^^^^ RANDOMTALK ^^^^^^^^^^^^^^^^^^^^^} {Returns a random sentence} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function RandomTalk: String; Var a, b : Integer; Begin b:= random(5) + 1; If(b= 1)Then result:= randomskill; If(b= 2)Then Begin a:= random(10) + 1; Case a Of 1 : result:= 'I love ' + randomarmor; 2 : result:= 'I hate ' + randomarmor; 3 : result:= randomarmor + ' are so cool'; 4 : result:= randomarmor + ' are stupid'; 5 : result:= 'I have tons Of ' + randomarmor; 6 : result:= 'I think ' + randomarmor + ' look the best'; 7 : result:= 'I think ' + randomarmor + ' look the worst'; 8 : result:= randomarmor + ' costs too much'; 9 : result:= randomarmor + ' is too cheap'; 10 : result:= 'I can afford tons Of ' + randomarmor; End; End; If(b= 3)Then Begin a:= random(10) + 1; Case a Of 1 : result:= 'I love ' + randomrare; 2 : result:= 'I hate ' + randomrare; 3 : result:= randomrare + ' look the coolest'; 4 : result:= randomrare + ' look the worst'; 5 : result:= randomrare + ' are hard To find'; 6 : result:= randomrare + ' are way too expensive'; 7 : result:= randomrare + ' are too cheap'; 8 : result:= 'I wonder how much ' + randomrare + ' alch For'; 9 : result:= 'I wonder how many ' + randomrare + ' there are'; 10 : result:= 'i wish i had tons Of ' + randomrare; End; End; If(b= 4)Then Begin a:= random(8) + 1; Case a Of 1 : result:= randommonster + ' look cool'; 2 : result:= randommonster + ' look weak'; 3 : result:= randommonster + ' are easy'; 4 : result:= randommonster + ' are a good way To make money'; 5 : result:= randommonster + ' should be harder'; 6 : result:= randommonster + ' need To be easier'; 7 : result:= randommonster + ' are the best To train on'; 8 : result:= randommonster + ' are the worst To train on'; End; End; If(b= 5)Then Begin a:= random(6) + 1; Case a Of 1 : result:= ':)'; 2 : result:= ':('; 3 : result:= '=)'; 4 : result:= '=('; 5 : result:= ';)'; 6 : result:= ';('; End; End; End; {^^^^^^^^^^^^^^^^^ WAITR ^^^^^^^^^^^^^^^^^^^^^^^^^^} {This Procedure will wait a random number Of miliseconds seconds} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure WaitR(number, RandomNumber : Integer); Begin wait(number + random(RandomNumber) + 1); End; {^^^^^^^^^^^^^^^^^ SETCHAT ^^^^^^^^^^^^^^^^^^^^^^^^} {If applicable, turns off the Public chat, private chat And trade options} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure SetChat; Var x, y : integer; Begin If(GetColor(46, 488)<>255)then Begin repeat MouseC(random(15)+20, random(10)+480, 1); WaitR(150,100); until(FindColor(x,y,255,45,487,47,489)) end; If(GetColor(175, 486)<>255)then Begin repeat MouseC(random(15)+150, random(10)+480, 1); WaitR(150,100); until(FindColor(x,y,255,174,485,176,487)) end; If(GetColor(315, 488)<>255)then Begin repeat MouseC(random(15)+290, random(10)+480, 1); WaitR(150,100); until(FindColor(x,y,255,314,487,316,489)) end; End; {^^^^^^^^^^^^^^^^^ LOGOUT ^^^^^^^^^^^^^^^^^^^^^^^^^} {Logs your character out} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure LogOut; Begin If(getcolor( 632, 483) = 4543586)Then MouseC(random(10) + 635, random(10) + 475, 1); wait(random(300) + 300); MouseC(random(30) + 600, random(5) + 370, 1); End; {^^^^^^^^^^^^^^^^^ OPENBAG ^^^^^^^^^^^^^^^^^^^^^^^^} {Opens your inventory} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure OpenBag; Begin If(getcolor(634, 174) = 5531511)Then MouseC(random(10) + 635, random(10) + 175, 1); End; {^^^^^^^^^^^^^^^^^ OPENCONTROLS ^^^^^^^^^^^^^^^^^^^} {Opens the controls panel} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure OpenControls; Begin If(getcolor(704, 483) = 4543586)Then MouseC(random(10) + 700, random(10) + 470, 1); End; {^^^^^^^^^^^^^^^^^ SETRUNON ^^^^^^^^^^^^^^^^^^^^^^^} {Turns run on} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure SetRunOn; Begin OpenControls; MouseC(random(10) + 615, random(10) + 275, 1); wait(random(200) + 200); End; {^^^^^^^^^^^^^^^^^ SETRUNOFF ^^^^^^^^^^^^^^^^^^^^^^} {Turns run off} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure SetRunOff; Begin OpenControls; MouseC(random(10) + 565, random(10) + 275, 1); wait(random(100) + 250); End; {^^^^^^^^^^^^^^^^^ TALKTORAND ^^^^^^^^^^^^^^^^^^^^^} {Handles Talking To a random event} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure TalkToRand; Var c : Integer; Begin Repeat wait(1); Until(getcolor(234, 441)= 16711680); YellowTextTotal:= YellowTextTotal + 1; TakeScreenShot('Talked To Random', YellowTextTotal); Status('Talking To Random Event'); Repeat If(getcolor(232, 443)= 16711680)Then Begin MouseC(253 + random(20), 442 + random(3), 1); wait(2000 + random(1000)); randomtalked:= true; End; wait(1); c:= c + 1; If(c= 5000)Then exit; Until(GetColor(240, 434)= 0); End; {^^^^^^^^^^^^^^^^^ DISEASED ^^^^^^^^^^^^^^^^^^^^^^^} {Returns true If your character is diseased And false is it isnt} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function Diseased : Boolean; Var a, b : Integer; Begin result:= false; wait(1); If(findcolorspiral(a, b, 1226748, 215, 115, 330, 185))Then result:= true; End; {^^^^^^^^^^^^^^^^^ POISONED ^^^^^^^^^^^^^^^^^^^^^^^} {Returns true If your character is poisoned And false is it isnt} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function Poisoned : Boolean; Var a, b : Integer; Begin result:= false; wait(1); If(findcolorspiral(a, b, 49152, 215, 115, 330, 185))Then result:= true; End; {^^^^^^^^^^^^^^^^^ INFIGHT ^^^^^^^^^^^^^^^^^^^^^^^^} {Returns true If your character is in a fight And false is it isnt} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function InFight : Boolean; Var a, b : Integer; Begin result:= false; wait(1); If(findcolorspiral(a, b, 16728128, 215, 115, 330, 185)) Or(findcolorspiral(a, b, 192, 215, 115, 330, 185))Then If(Poisoned= false)And(diseased= false)Then result:= true; End; {^^^^^^^^^^^^^^^^^ FINDFIGHT ^^^^^^^^^^^^^^^^^^^^^^} {Checks To see If you are in a fight, And If so you will run away} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure FindFight; Var leaveloop, placecheck, a, b, d, c : Integer; Begin d:= 0; c:= 0; If(Findcolorspiral(a, b, 65280, 215, 115, 330, 185))Then wait(1000); If(FindColorSpiral(a, b, 65280, 215, 115, 330, 185))Then Begin Repeat If(c= 100)Then Begin wait(1); c:= 0; End; c:= c + 1; d:= d + 1; If(diseased= true)Or(Poisoned= true)Then exit; Until(d= 4000)Or(InFight= true); AttacksTotal:= AttacksTotal + 1; TakeScreenShot('Fight Found', AttacksTotal); SetRunon; wait(random(10) + 50); a:= 0; Case Direction Of 'NE','' : Repeat a:= a + 3; MouseC(random(5) + 680 - a, random(5) + 35 + a, 1); wait(random(200) + 300); Until(flagpresent=true); 'N' : Repeat a:= a + 3; MouseC(random(5) + 640, random(5) + 20 + a, 1); wait(random(200) + 300); Until(flagpresent=true); 'NW' : Repeat a:= a + 3; MouseC(random(5) + 620 + a, random(5) + 25 + a, 1); wait(random(200) + 300); Until(flagpresent=true); 'W' : Repeat a:= a + 3; MouseC(random(5) + 600 + a, random(5) + 85, 1); wait(random(200) + 300); Until(flagpresent=true); 'SW' : Repeat a:= a + 3; MouseC(random(5) + 620 + a, random(5) + 130 - a, 1); wait(random(200) + 300); Until(flagpresent=true); 'S' : Repeat a:= a + 3; MouseC(random(5) + 645, random(5) + 145 - a, 1); wait(random(200) + 300); Until(flagpresent=true); 'SE' : Repeat a:= a + 3; MouseC(random(5) + 688 - a, random(5) + 124 - a, 1); wait(random(200) + 300); Until(flagpresent=true); 'E' : Repeat a:= a + 3; MouseC(random(5) + 703 - a, random(5) + 74, 1); wait(random(200) + 300); Until(flagpresent=true); End; wait(100); MapFlagging; wait(random(1000) + 1000); If(RunBack=true)Then Case Direction Of 'NE' : Repeat a:= a + 3; MouseC(random(5) + 620 + a, random(5) + 130 - a, 1); wait(random(200) + 300); Until(FlagPresent); 'E' : Repeat a:= a + 3; MouseC(random(5) + 600 + a, random(5) + 85, 1); wait(random(200) + 300); Until(FlagPresent); 'SE' : Repeat a:= a + 3; MouseC(random(5) + 620 + a, random(5) + 25 + a, 1); wait(random(200) + 300); Until(FlagPresent); 'S' : Repeat a:= a + 3; MouseC(random(5) + 640, random(5) + 20 + a, 1); wait(random(200) + 300); Until(FlagPresent); 'SW' : Repeat a:= a + 3; MouseC(random(5) + 680 - a, random(5) + 35 + a, 1); wait(random(200) + 300); Until(FlagPresent); 'W' : Repeat a:= a + 3; MouseC(random(5) + 703 - a, random(5) + 74, 1); wait(random(200) + 300); Until(FlagPresent); 'NW' : Repeat a:= a + 3; MouseC(random(5) + 688 - a, random(5) + 124 - a, 1); wait(random(200) + 300); Until(FlagPresent); 'N' : Repeat a:= a + 3; MouseC(random(5) + 645, random(5) + 145 - a, 1); wait(random(200) + 300); Until(FlagPresent); End; SetRunOff; wait(random(200)+300); OpenBag; leaveloop:= 0; fightfound:= true; Repeat placecheck:= getcolor(27, 36); wait(100); If(getcolor(27, 36) = placecheck)Then Leaveloop:= 1; Until(Leaveloop= 1); End; End; {^^^^^^^^^^^^^^^^^ FINDTEXT ^^^^^^^^^^^^^^^^^^^^^^^} {Checks For Yellow text, And If some are found it will look For a random event To talk too} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure FindText; Var counter, a, b, a1, b1, c, d : Integer; Begin counter:= 0 If(findcolor(a, b, 65535, 10, 20, 515, 338)) Or(Istextat3(185, 36, 'The Bank', 100))Then wait(200) If(findcolor(a, b, 65535, 10, 20, 515, 338)) And(Istextat3(185, 36, 'The Bank', 100)= false)Then Begin Repeat counter:= counter + 2 + random(1); MoveMouseSmoothEx(a + counter, b + 15 + random(3), 1, 6, 15, 20, 20); wait(1) If(istextat3(9, 9, 'Talk', 100))Then Begin getmousepos(a1, b1); MouseC(a1, b1, 2); Repeat wait(random(100) + 200); Until(findcolor(a, b, 0, a1 - 30, b1 - 30, a1 + 30, b1 + 30)); If(IsTextIn3(S1, S2, S3, S4, c, d, 'Talk'))Then Begin MouseC(c + random(10), d + random(3), 1); TalkToRand; MapFlagging; exit; End; End; Until(counter>= 150); End; End; {^^^^^^^^^^^^^^^^^ LOGGEDIN ^^^^^^^^^^^^^^^^^^^^^^^} {Returns true If you are logged in And false If your not} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function LoggedIn:Boolean; Begin result:= true; If(getcolor(249, 99)= 2071708)And (getcolor(637,50)=4872025)And (getcolor(547,383)=4212289)And (getcolor(356,47)=6115406)And (IsTextUp('Walk')=false)Then result:= false; End; {^^^^^^^^^^^^^^^^^ CHECKINTRO ^^^^^^^^^^^^^^^^^^^^^} {Checks For the intro screen And closes it If it finds it} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure CheckIntro; Begin If(Getcolor(595, 25) <> 8239317)Then exit; MouseBox(435, 307, 590, 360, 1); repeat wait(random(300) + 500); until(getcolor(648, 83) = 16777215); End; {^^^^^^^^^^^^^^^^^ KILLSCRIPT ^^^^^^^^^^^^^^^^^^^^^} {This Procedure will enter a continues loop, making the script which is running stop} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure KillScript; Begin Repeat Status('Script Killed, please restart'); wait(500); Status('Script Killed, please restart.'); wait(500); Status('Script Killed, please restart..'); wait(500); Status('Script Killed, please restart...'); wait(500); Until(false); End; {^^^^^^^^^^^^^^^^^ LOGIN ^^^^^^^^^^^^^^^^^^^^^^^} {Logs your character in If your logged out} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure LogIn; var x : integer; Begin If(loggedin= false)Then Begin if(Istextat3(309, 241, 'Welcome',100))then begin MouseC(random(5) + 465, random(5) + 275, 1); wait(random(500) + 1000); end; MouseC(random(20) + 370, random(3) + 251, 1); wait(random(100) + 100); sendkeyshuman(User); wait(random(30)+120); sendkeyshuman(chr(13)); wait(random(100) + 100); sendkeyshuman(Pass); MouseC(random(10) + 255, random(20) + 305, 1); Repeat wait(100); x:= x + 1; if(x = 100)Then begin writeln('Error logging in'); KillScript; end; Until(getcolor(602, 20)= 8041938); End; wait(random(300) + 500); CheckIntro; End; {^^^^^^^^^^^^^^^^^ LOGOUTFOR ^^^^^^^^^^^^^^^^^^^^^^} {This procedure will log you out for the amount of minits given} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure LogOutFor(Minutes : Integer); Var x : integer; Begin Logout; Minutes:= Minutes + random(Minutes / 10); writeln('Logging out for ' + inttostr(Minutes) + ' minuets'); Minutes:= (Minutes * 60) * 1000; repeat x:= x + random(300) + 1000; wait(x); until(x > Minutes); writeln('Logging back in'); Login; End; {^^^^^^^^^^^^^^^^^ CHECKFORMODS ^^^^^^^^^^^^^^^^^^^} {Looks For a mod Or admin And If it finds one, you will get logged out} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Procedure CheckForMods; Var a, b, bmpModCrown, bmpStaffCrown : Integer; Begin bmpModcrown := BitmapFromstring(13, 11, '979797000000000000000000000000000000979797000000000000' + '000000000000000000979797E0E0E0979797000000000000000000' + 'E0E0E0A2A2A2979797000000000000000000E0E0E0979797E0E0E0' + '979797000000000000000000E0E0E0A2A2A2979797000000000000' + '000000E0E0E0979797E0E0E0A2A2A2979797000000E0E0E0A2A2A2' + 'A2A2A2A2A2A2979797000000E0E0E0A2A2A2979797E0E0E0A2A2A2' + '979797000000E0E0E0A2A2A2A2A2A2A2A2A2979797000000E0E0E0' + 'A2A2A2979797000000E0E0E0A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2' + 'A2A2A2A2A2A2A2A2A2A2A2A2979797000000000000E0E0E0A2A2A2' + 'A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2979797' + '000000000000000000E0E0E0sA2A2A2000000000000A2A2A2000000' + '000000A2A2A2979797000000000000000000000000E0E0E0A2A2A2' + '000000A2A2A2000000A2A2A2000000A2A2A2979797000000000000' + '000000000000E0E0E0A2A2A2000000A2A2A2000000A2A2A2000000' + 'A2A2A2979797000000000000000000000000979797979797979797' + '979797979797979797979797979797979797000000000000'); bmpStaffcrown := BitmapFromstring(13, 11, 'D69E21000000000000000000000000000000D69E21000000000000' + '000000000000000000D69E21FFFF84D69E21000000000000000000' + 'FFFF84F7FF08D69E21000000000000000000FFFF84D69E21FFFF84' + 'D69E21000000000000000000FFFF84F7FF08D69E21000000000000' + '000000FFFF84D69E21FFFF84F7FF08D69E21000000FFFF84F7FF08' + 'F7FF08F7FF08D69E21000000FFFF84F7FF08D69E21FFFF84F7FF08' + 'D69E21000000FFFF84F7FF08F7FF08F7FF08D69E21000000FFFF84' + 'F7FF08D69E21000000FFFF84F7FF08F7FF08F7FF08F7FF08F7FF08' + 'F7FF08F7FF08F7FF08F7FF08D69E21000000000000FFFF84F7FF08' + 'F7FF08F7FF08F7FF08F7FF08F7FF08F7FF08F7FF08F7FF08D69E21' + '000000000000000000FFFF84F7FF08000000000000F7FF08000000' + '000000F7FF08D69E21000000000000000000000000FFFF84F7FF08' + '000000F7FF08000000F7FF08000000F7FF08D69E21000000000000' + '000000000000FFFF84F7FF08000000F7FF08000000F7FF08000000' + 'F7FF08D69E21000000000000000000000000D69E21D69E21D69E21' + 'D69E21D69E21D69E21D69E21D69E21D69E21000000000000'); If (findbitmaptolerancein(bmpStaffcrown, a, b, 1, 345, 110, 430, 50)) Or(findbitmaptolerancein(bmpModcrown, a, b, 1, 345, 110, 430, 50))Then Begin TakeScreenShot('Staff Found', 1); writeln('Staff / Mod Found, logged out And will log in later'); a:= 0; LogOutFor(15); End; FreeBitmap(bmpStaffCrown); FreeBitmap(bmpModCrown); End; {^^^^^^^^^^^^^^^^^ GETQUESTION ^^^^^^^^^^^^^^^^^^^^} {Used with the box breaker} {^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^} Function GetQuestion : Integer; Begin result:= 0 ; If(istextat3(194, 260, 'Which shape is Y', 100))Then result:= 1; // Color Yellow If(istextat3(200, 260, 'Which shape is B', 100))Then result:= 2; // Color Blue If(istextat3(202, 260, 'Which shape is R', 100))Then result:= 3; // Color Red If(istextat3(185, 260, 'What colour is