// Simba script, go here if u need help http://villavu.com/forum/showthread.php?t=103209 // // *-- Script by: Ryutoh --* // // *-- 5/24/2013 --* // // *-- Barrows Fighter V1 --* // // // program barrowsfighter; {$DEFINE SMART} {$I SRL-OSR/SRL.Simba} {$i SRL-OSR\SRL\misc\SmartGraphics.simba} //Please fill in the configuration below. //*I also recommend that you kill the barrows brothers before starting const //Email or Username username = ''; //Password password = ''; //HP to eat food at hpToEat = 60; //Teleport out when out of food or if hp drops too low? (Use any teletab) teleportOut = 'false'; //(True/False) //HP to teleport out at if almost dead? hpToTeleAt = 15; //Avalible pre-set food types: trout, salmon, tuna, lobster, monkfish, shark. foodName = 'shark'; //*Recommend monkfish or sharks. //1 top left box, 2 top right, 3 bottom left, 4 bottom right trainingmode = 2; //Spec weapons avalible: excalibur, dba(dragon battle axe) specWeapon = 'excalibur'; //Leave empty if none //If you're using spec, fill in main weapon info mainWeaponName = 'cimitar'; //Use short part of weapon name mainWepColor1 = 858228; //Color info mainWepColor2 = 858748; //Only right click monsters? Might prevent misclicks of opening doors //but averages about 3 - 5k less exp/hour rightClickOnly = 'false'; //(True/False) //How fast to move the mouse? customMouseSpeed = 16; //1-10 slow, 11-20 med, 20+ very fast //Use a faster but less accurate method of fighting? //Can improve exp rates by about 3 - 5k exp/hour //(Works best with fast attacking weapons) newFightMethod = 'true'; //(True/False) ////////////////////////////////////////////////////////////////// var X, Y, T, Clicked, teletab, skillwindow, changeSpecTime, blueHitSplat, redHitSplat, dbaDTM, KC, KillsPerHour, TimeGone, lost, totalExp, hitcount, counter, excalDTM : integer; detectHitSplat : boolean; npcToKill : string; procedure declarePlayers; begin HowManyPlayers := 1; NumberOfPlayers(HowManyPlayers); CurrentPlayer := 0; with Players[0] do begin Name := username; Pass := password; Active := True; end; end; procedure proggy; begin if not (KC < 1) then begin SMART_ClearCanvas; TimeGone := GetTimeRunning / 1000; KillsPerHour := 3600 * KC / TimeGone; SMART_DrawText(8, 23, LoginChars, 'Barrows Fighter by Ryutoh', clwhite); SMART_DrawText(8, 40, UpChars07, 'Kills per hour around:', clwhite); SMART_DrawText(154, 40, UpChars07, '' + IntToStr(KillsPerHour) + ', or ' + IntToStr(KillsPerHour * 180) +' experience/hr', clyellow); if (specWeapon = 'excalibur') or (specWeapon = 'dba') then begin SMART_DrawText(8, 54, UpChars07, 'Spec timer: ', clwhite); SMART_DrawText(87, 54, UpChars07, '' + inttostr(TimeFromMark(T) / 1000) + ' / ' + IntToStr(changeSpecTime / 1000) + ' seconds.', clyellow); end end else exit; end; procedure findMonster; begin writeln('Monsters lost, looking around.'); if lost > 10 then begin sleep(7000 + random(4000)); logout; if (LoggedIn) then begin RunAway('e', True, 2, 3000); sleep(3000 + random(1000)) logout; end; writeln('Unable to find monsters after 10 tries, logging out.'); writeln('Ran for: ' + TimeRunning); totalExp := KC * 180; writeln('Killcount: ' + IntToStr(KC) + ', thats ' + IntToStr(totalExp) + ' experience!'); terminatescript; end else begin writeln('No monsters found, spinning.'); SetAngle(SRL_ANGLE_HIGH); makecompass(randomrange(0, 360)) wait(200 + random(300)) Inc(lost) end; end; procedure spec; begin if (specWeapon = 'excalibur') or (specWeapon = 'dba') then begin excalDTM := DTMFromString('mWAAAAHicY2FgYEhlYmDIB+JsIM4B4k9AsUdA/ACIHzOAACMc9zY3MyADLhRZCAYBAKQ4BvM='); dbaDTM := DTMFromString('mggAAAHicY2NgYFADYikglgRiHiAWA2IZIE4C4kAgdgPiICAOBmJfBhBgxMAFEjwMXEAWOpbEqhqCIQAAKTMDcw=='); if (TimeFromMark(T) >= changeSpecTime) then begin gametab(tab_inv) writeln('Time for spec!') case (specWeapon) of 'excalibur': if FindDTM(excalDTM, X, Y, MIX1, MIY1, MIX2, MIY2) then begin MarkTime(T) Mouse(X + random(2), Y + random(2), 2, 2, 1); wait(500 + random(300)) end; 'dba': if FindDTM(dbaDTM, X, Y, MIX1, MIY1, MIX2, MIY2) then begin MarkTime(T) Mouse(X + random(2), Y + random(2), 2, 2, 1); wait(500 + random(300)) end; end; gametab(tab_Combat) wait(300) if FindColorTolerance(X, Y, 4229183, 700, 417, 712, 427, 20) then begin wait(100) Mouse(647 + random(2), 423 + random(2), 2, 2, 1); wait(200 + random(100)) changeSpecTime := 340000 + random(40000); end else begin writeln('Not ready for spec yet, waiting longer.') changeSpecTime := 60000; end; gametab(tab_inv) wait(500) if FindObjEx(X, Y, ['ield', mainWeaponName], [mainWepColor1, mainWepColor2], 12, 50, MIX1, MIY1, MIX2, MIY2) then begin writeln('Wielding main weapon back.') Mouse(X + random(2), Y + random(2), 2, 2, 1); end else begin writeln('Something is wrong with main weapon color or name.') writeln('Please fix this, or dont use spec.') sleep(15000) terminatescript; end end; FreeDTM(excalDTM) FreeDTM(dbaDTM) end end; Function attackLeft : boolean; var MonsterTPA, GreenHpTPA : TPointArray; MonsterATPA : T2DPointArray; MonsterBox : TBox; r, i : integer; begin case (npcToKill) of 'bloodworms': begin if not FindObjEx(X, Y, ['ttak', 'loodwor'], [1000804, 4103847, 674403, 1206922, 1144980, 1596800], 12, 50, MSX1, MSY1, MSX2, MSY2) then begin findMonster; exit; end end; 'rats': //Not done yet begin if FindColorsTolerance(MonsterTPA, 7178348, MSX1, MSY1, MSX2, MSY2, 10) then begin MonsterATPA := SplitTPAEx(MonsterTPA, 10, 10); SortATPASize(MonsterATPA, True); for i := 0 to high(MonsterATPA) do begin MonsterBox := GetTPABounds(MonsterATPA[i]); if not FindColor(X, Y, 255, MonsterTPA[i].x-12, MonsterTPA[i].y-17, MonsterTPA[i].x+12, MonsterTPA[i].y+17) or not FindColor(X, Y, 65280, MonsterTPA[i].x-12, MonsterTPA[i].y-17, MonsterTPA[i].x+12, MonsterTPA[i].y+17) THEN writeln('hp box not found'); if i = high(MonsterATPA) then begin writeln('None found'); end; end; r := random(length(MonsterTPA)); end else begin findMonster; exit; end end; 'skeletons': begin end; end; Clicked := DTMFromString('mWAAAAHicY2FgYNBhZGAwhWIQ+xgDBJ+H4v9oGB0womEQAAC5ewf1'); writeln('Monster found at: ' + IntToStr(x) + ', ' + IntToStr(y)); if not IsUpText('oor') then begin ClickMouse(X, Y, mouse_left); wait(50); if FindDTM(Clicked, X, Y, MSX1, MSY1, MSX2, MSY2) then begin makecompass(randomrange(0, 360)) wait(2500 + random(1050)) Inc(KC) lost := 0; FreeDTM(Clicked); end else begin writeln('Miss clicked, attempting to click again.'); wait(250 + random(50)) FreeDTM(Clicked); attackLeft; end; end else attackLeft; end; procedure attackRight; begin case (npcToKill) of 'bloodworms': begin if not FindObjEx(X, Y, ['ttak', 'loodwor'], [1000804, 4103847, 674403, 1206922, 1144980, 1596800], 12, 50, MSX1, MSY1, MSX2, MSY2) then begin findMonster; exit; end; end; 'rats': begin if not FindObjEx(X, Y, ['ttak', 'iant', 'rypt', 'at'], [8358276, 6975078, 8358271, 6058844, 7244398, 6190685, 7371120, 9278344, 5136973, 4738632], 3, 50, MSX1, MSY1, MSX2, MSY2) then begin findMonster; exit; end; end; 'skeletons': begin end; end; ClickMouse(X, Y, mouse_right); wait(200+random(100)); if ChooseOptionMulti(['tta']) then begin ChooseOptionMulti(['tta']); makecompass(randomrange(0, 360)) wait(2500 + random(1050)) Inc(KC) lost := 0; end else begin writeln('Miss clicked, attempting to click again.'); attackRight; end end; procedure attackMonster; begin if not LoggedIn then LoginPlayer; if (rightClickOnly = 'true') then begin attackRight; end else begin case random(5) of 0..3 : begin attackLeft; end; 4 : begin attackLeft; end; //right end end end; procedure antiBan; begin case random(160) of 0..20: begin hoverskill(skill_strength, false) sleep(random(300)) end; 21..30: begin hoverskill(skill_hitpoints, false) sleep(random(300)) end; 31..40: begin hoverskill(skill_attack, false) sleep(random(300)) end; 41..50: begin hoverskill(skill_defence, false) sleep(random(300)) end; 51..53: begin hoverskill(skill_range, false) sleep(random(300)) end; 54..56: begin hoverskill(skill_prayer, false) sleep(random(300)) end; 57: begin hoverskill(skill_slayer, false) sleep(random(300)) end; 58: begin hoverskill(skill_woodcutting, false) sleep(random(300)) end; 59: begin hoverskill(skill_cooking, false) sleep(random(300)) end; 60: begin hoverskill(skill_fishing, false) sleep(random(300)) end; 61: begin hoverskill(skill_firemaking, false) sleep(random(300)) end; 62: begin hoverskill(skill_mining, false) sleep(random(300)) end; 63..65: begin HoverOnlineFriend; sleep(100 + random(100)) end; 66: begin case random(3) of 1: begin writeln('Taking short 20 - 50 second break.'); wait(20000 + random(30000)) end; end end; //67: begin adjustmousespeed(2, 10, 20) sleep(random(300)) end; 67..69: begin randomRClick; sleep(random(300)) end; 70..71: begin hovermovingobject; sleep(random(300)) end; 72..75: begin MMouseOffClient('top'); sleep(random(300)) end; 76..79: begin MMouseOffClient('left'); sleep(random(300)) end; 80..83: begin MMouseOffClient('right'); sleep(random(300)) end; 84..87:begin MMouseOffClient('bottom'); sleep(random(300)) end; 88..89: begin if FindObjEx(X, Y, ['ttak', 'loodwor'], [1000804, 4103847, 674403, 1206922, 1144980, 1596800], 8, 50, MSX1, MSY1, MSX2, MSY2) then Mouse(X, Y, 5, 5, 0); wait(500 + random(500)) ChooseOptionMulti(['xamine']); sleep(random(100)) end; 90..100: begin RandomTab(True); makecompass(randomrange(0, 360)) wait(500 + random(300)) end; 101..110: begin RandomMovement; sleep(random(500)) end; 111..145: begin makecompass(randomrange(0, 360)) wait(300 + random(100)) end; 146..147: begin BoredHuman; end; 148: begin ExamineInv; end; 149: begin RandomFKeys(True); end; 150: begin DragRandomInvSlot; end; 151..160: begin makecompass(randomrange(0, 360)) wait(300 + random(300)) end; end end; procedure terminate(logoutMessage:string); begin if (logoutMessage = 'food') then begin writeln('No food found, attempting to logout.'); end else if (logoutMessage = 'teletab') then begin writeln('Low hp found, attempting to logout.'); end; sleep(7000 + random(4000)) logout; if (LoggedIn) then begin RunAway('e', True, 2, 3000); sleep(3000 + random(1000)) logout; end; writeln('Ran for: ' + TimeRunning); totalExp := KC * 180; writeln('Killcount: ' + IntToStr(KC) + ', thats ' + IntToStr(totalExp) + ' experience!'); terminatescript; end; procedure teleport; begin gametab(tab_inv) wait(300 + random (200)) if gametab(tab_inv) then begin teletab := DTMFromString('mlwAAAHicY2dgYLBnYmDwA+IAKO0IxGZAbArE14Hyt4D4CRB/AOJPUPopAwgw4sG4ARG6AKj+CEc='); if FindDTM(teletab, X, Y, MIX1, MIY1, MIX2, MIY2) then begin writeln('Teleporting.'); MouseBox(X, Y, X, Y, mouse_right); if ChooseOptionMulti(['rea']) then begin ChooseOptionMulti(['rea']) wait(500) FreeDTM(teletab); end else FreeDTM(teletab); teleport; end else writeln('No teletab found.'); end end; procedure checkHealth; begin if GetSkillInfo('hitpoints', true) <= hpToTeleAt then begin if (teleportOut = 'true') then begin teleport; terminate('teletab') end end; if GetSkillInfo('hitpoints', true) > hpToEat then begin case random(6) of 0: begin writeln('Random antiban.'); antiBan; end; end end else begin gametab(tab_inv) wait(300 + random (200)) if gametab(tab_inv) then begin case (foodName) of 'trout': if FindObjEx(X, Y, ['at', 'rout'], [7304076, 8949164, 5593195], 10, 50, MIX1, MIY1, MIX2, MIY2) THEN begin writeln('Eatting trout.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); sleep(2000 + random(500)) end else begin if (teleportOut = 'true') then begin teleport; end; terminate('food'); end; 'salmon': if FindObjEx(X, Y, ['at', 'almon'], [1459962, 6912203, 864166], 10, 50, MIX1, MIY1, MIX2, MIY2) THEN begin writeln('Eatting salmon.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); sleep(2000 + random(500)) end else begin if (teleportOut = 'true') then begin teleport; end; terminate('food'); end; 'tuna': if FindObjEx(X, Y, ['at', 'una'], [7238282, 8686246, 5527401], 10, 50, MIX1, MIY1, MIX2, MIY2) THEN begin writeln('Eatting tuna.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); sleep(2000 + random(500)) end else begin if (teleportOut = 'true') then begin teleport; end; terminate('food'); end; 'lobster': if FindObjEx(X, Y, ['at', 'obster'], [1664960, 1467065, 1200019], 10, 50, MIX1, MIY1, MIX2, MIY2) THEN begin writeln('Eatting lobster.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); sleep(2000 + random(500)) end else begin if (teleportOut = 'true') then begin teleport; end; terminate('food'); end; 'monkfish': if FindObjEx(X, Y, ['at', 'onkfish'], [4478822, 2436663, 3293259], 10, 50, MIX1, MIY1, MIX2, MIY2) THEN begin writeln('Eatting monkfish.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); sleep(2000 + random(500)) end else begin if (teleportOut = 'true') then begin teleport; end; terminate('food'); end; 'shark': if FindObjEx(X, Y, ['at', 'hark'], [5860483, 7375014, 6584980], 10, 50, MIX1, MIY1, MIX2, MIY2) THEN begin writeln('Eatting shark.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); sleep(2000 + random(500)) end else begin if (teleportOut = 'true') then begin teleport; end; terminate('food'); end; end; end; end; end; procedure isInCombat; begin if newFightMethod = ('true') then begin repeat blueHitSplat := DTMFromString('mQwAAAHicY2ZgYOBkZGBgAeL/QPZuID4JxHuAmJm1FI6RASMSBgIA1cUEzA=='); redHitSplat := DTMFromString('mQwAAAHicY2ZgYPgIxC+A+B0QrwHidUC8C4izGRnhGBkwImEgAAAzRQYp'); if FindDTM(blueHitSplat, X, Y, 179, 126, 345, 255) or FindDTM(redHitSplat, X, Y, 179, 126, 345, 255) THEN begin Inc(hitcount) Inc(counter) //writeln('combat: true '+inttostr(counter)+'');//checking for combat detectHitSplat := true; wait(200) FreeDTM(blueHitSplat) FreeDTM(redHitSplat) end else begin Inc(hitcount) Dec(counter) wait(200) //writeln('combat: false '+inttostr(counter)+'');//checking for combat FreeDTM(blueHitSplat) FreeDTM(redHitSplat) end; until(hitcount = 4) if not (counter <= -1) then begin proggy; checkHealth; wait(700 + random(300)) end else if (counter <= -1) then begin attackmonster; end; detectHitSplat := false; hitcount := 0; counter := 0; end else if FindColor(X, Y, 255, 213, 117, 305, 185) or FindColor(X, Y, 65280, 213, 117, 305, 185) THEN begin proggy; checkHealth; wait(1200 + random(500)) end else begin attackmonster; end; end; procedure failsafes; begin skillwindow := DTMFromString('mWAAAAHicY2FgYHjByMDwF4pBbG6gmDwDgn6wowoFowNGNAwCALUWDHM='); if FindDTM(skillwindow, X, Y, MSX1, MSY1, MSX2, MSY2) then begin writeln('Skill window found open, attempting to close.'); MouseBox(X + 3, Y + 3, X + 3, Y + 3, mouse_left); FreeDTM(skillwindow) end; FreeDTM(skillwindow) end; begin declarePlayers; SetupSRL(); ActivateClient; writeln('Barrows Fighter by Ryutoh') writeln('Currently V1, please report bugs and errors on forum.') MarkTime(T) changeSpecTime := 1; npcToKill := 'bloodworms'; //Still not complete, keep as bloodworms repeat if (not LoggedIn) then begin writeln('Logging player in.'); LogInPlayer; setangle(0) setrun(true) setfightmode(trainingmode) gametab(tab_stats) writeln('Starting.'); MouseSpeed := customMouseSpeed; end; if (LoggedIn) then begin failsafes; spec; isInCombat; end; until(false) end.