Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.46 KB | None | 0 0
  1. {*
  2. *VidyaScape Tutorial Island Bot
  3. *STATUS: IN PROGRESS
  4. *}
  5.  
  6. //Config
  7. //Brand new account
  8. //Not logged in yet
  9. //Client loaded
  10.  
  11. program AutoTutorialIsland;
  12. {$I srl-6/srl.simba}
  13.  
  14. //SRL-6 RSPS CLIENT OVERRIDE
  15. function waitClientReady(): boolean;override;begin result:= true;end
  16.  
  17.  
  18. var
  19. X, Y:Integer;
  20. user:= 'io' + IntToStr(RandomRange(0, 9999999))
  21. + 'y' + IntToStr(RandomRange(0, 11));
  22. pass:= '$' + IntToStr(RandomRange(0, 100001));
  23.  
  24. loginScreenDetected:Boolean:= false;
  25. clientStable:Boolean:= false;
  26. log1Chopped:Boolean:= false;
  27. fishCaught:Boolean:= false;
  28. oreMined:Boolean:= false;
  29.  
  30. //DTMs
  31. cookExit:Integer;
  32.  
  33. const
  34. //INTERFACES
  35. clientArea:= IntToBox(5, 30, 519, 365);
  36. invyArea:= IntToBox(522, 193, 764, 525);
  37. chatboxArea:= IntToBox(6, 367, 518, 503);
  38. minimapArea:= IntToBox(569, 30, 719, 181);
  39.  
  40. //essentials
  41.  
  42. procedure setAppearance;
  43. var
  44. i:Integer;
  45. Female:Boolean:= True;
  46. //male is default so its ur a girl or not
  47.  
  48. begin
  49. wait(100 + Random(51));
  50. writeln('Setting player appearance.');
  51.  
  52. if (Female = True) then
  53. begin
  54. //set female
  55. MoveMouse(450, 320);
  56. wait(250 + Random(51));
  57. ClickMouse(450, 320, 1);
  58. wait(250 + Random(51));
  59.  
  60. //set hair
  61. MoveMouse(170, 120);
  62. wait(250 + Random(51));
  63. ClickMouse(170, 120, 1);
  64. wait(100 + Random(51));
  65.  
  66. //set hair color
  67. MoveMouse(470, 120);
  68. wait(250 + Random(51));
  69. ClickMouse(470, 120, 1);
  70. wait(100 + Random(51));
  71. for i := 0 to 3 do //clicks 5 times
  72. begin
  73. ClickMouse(470, 120, 1);
  74. wait(100 + Random(51));
  75. end
  76.  
  77. //set torso
  78. MoveMouse(170, 190);
  79. wait(250 + Random(51));
  80. ClickMouse(170, 190, 1);
  81. wait(100 + Random(51));
  82. for i := 0 to 0 do //clicks 2 times
  83. begin
  84. ClickMouse(170, 190, 1);
  85. wait(100 + Random(51));
  86. end;
  87.  
  88. //set torso color
  89. MoveMouse(470, 150);
  90. wait(250 + Random(51));
  91. ClickMouse(470, 150, 1);
  92. wait(100 + Random(51));
  93. for i := 0 to 0 do //clicks 2 times
  94. begin
  95. ClickMouse(470, 150, 1);
  96. wait(100 + Random(51));
  97. end;
  98.  
  99. //set hands
  100. MoveMouse(170, 260);
  101. wait(250 + Random(51));
  102. ClickMouse(170, 260, 1);
  103. wait(100 + Random(51));
  104.  
  105. //set leg color
  106. MoveMouse(470, 190);
  107. wait(250 + Random(51));
  108. ClickMouse(470, 190, 1);
  109. wait(100 + Random(51));
  110. for i := 0 to 0 do //clicks 2 times
  111. begin
  112. ClickMouse(470, 190, 1);
  113. wait(100 + Random(51));
  114. end;
  115.  
  116. //set feet color
  117. MoveMouse(470, 225);
  118. wait(250 + Random(51));
  119. ClickMouse(470, 225, 1);
  120. wait(100 + Random(51));
  121. for i := 0 to 0 do //clicks 2 times
  122. begin
  123. ClickMouse(470, 225, 1);
  124. wait(100 + Random(51));
  125. end;
  126.  
  127. //set skin color
  128. MoveMouse(470, 260);
  129. wait(250 + Random(51));
  130. ClickMouse(470, 260, 1);
  131. wait(100 + Random(51));
  132.  
  133. end
  134. wait(500 + Random(551));
  135. end;
  136.  
  137. {*
  138. *Procedure: setCamera;
  139. *Used to set north & up key camera.
  140. *Also to give the program a fixed starting position.
  141. *}
  142. procedure setCamera;
  143. begin
  144. wait(100 + Random(51));
  145. writeln('Setting camera...');
  146.  
  147. //Click compass
  148. MoveMouse(563, 42);
  149. wait(100 + Random(51));
  150. ClickMouse(563, 42, 1);
  151. wait(250 + Random(51));
  152.  
  153. //Up key camera
  154. KeyDown(38);
  155. wait(2900 + Random(151));
  156. KeyUp(38);
  157. wait(250 + Random(51));
  158.  
  159. //fixed point check
  160. end;
  161.  
  162. {*
  163. *Procedure: loginCheck;
  164. *Used in the loginPlayer function to make sure the player
  165. *is fully logged in and client is stable.
  166. *Repeats every 1-1.25 seconds until client returns stable
  167. *-else terminates the script
  168. *TO DO:
  169. *-Make sure fps stabilizes before continuing
  170. *}
  171. procedure loginCheck;
  172. var
  173. count:Integer = 0; //procedure run count
  174.  
  175. begin
  176. wait(750 + Random(51));
  177. if FindColorTolerance(X, Y, 14610138, 551, 114, 568, 129, 5) then
  178. begin
  179. writeln('Client stable');
  180. clientStable:= true;
  181. end else
  182. if (clientStable = false) then
  183. begin
  184. writeln('Client not stable yet');
  185. Inc(count); //increases count by 1
  186. if (count >= 99) then //if procedure run >= 99
  187. begin
  188. terminateScript; //completely shut down script
  189. end
  190. if (count >= 1) then //if procedure has to run >= 1
  191. begin
  192. writeln('Procedure loginCheck; repeated ' + IntToStr(count) + ' time(s).');
  193. end
  194. end
  195. end;
  196.  
  197. {*
  198. *Procedure: clearText;
  199. *Used to clear text where needed.
  200. *}
  201. procedure clearText;
  202. var
  203. count:Integer:= 0;
  204. begin
  205. wait(100 + Random(51));
  206. writeln('Clearing text...');
  207.  
  208. repeat
  209. PressKey(vk_delete);
  210. Inc(count);
  211. until(count >= 15);
  212.  
  213. wait(1000 + Random(51));
  214. end;
  215.  
  216. {*
  217. *Procedure loginPlayer;
  218. *Used to log in the player.
  219. *Makes sure is fully logged in and stable client.
  220. *}
  221. procedure loginPlayer;
  222. var
  223. loginScreen:= DTMFromString('mWAAAAHicY2FgYFjFyMDQC8THgHgpEDcCxeqgOAaIGZw4GJx1GRimVQYznJ2nw4AOGNEwCAAA4YsIOw==');
  224.  
  225. begin
  226. if FindDTM(loginScreen, X, Y, 218, 47, 554, 151) then
  227. begin
  228. wait(100 + Random(51));
  229. writeln('Logging in player...');
  230.  
  231. //click username box
  232. MoveMouse(379, 227);
  233. wait(250 + Random(51));
  234. ClickMouse(379, 227, 1);
  235. wait(100 + Random(151));
  236. ClickMouse(379, 227, 1); //2x click to make sure
  237. wait(250 + Random(51));
  238.  
  239. //if text in user box then
  240. //begin
  241. //clear user box
  242. clearText;
  243. //end;
  244.  
  245. //write username
  246. SendKeys(user, 50+Random(51), 30+Random(30));
  247. wait(100 + Random(51));
  248.  
  249. //press enter to pass box
  250. PressKey(13);
  251. wait(100 + Random(51));
  252.  
  253. //if text in pass box then
  254. //begin
  255. //clear pass box
  256. clearText;
  257. //end;
  258.  
  259. //enter pass
  260. SendKeys(pass, 50+Random(51), 30+Random(30));
  261. wait(100 + Random(51));
  262.  
  263. //click log in
  264. MoveMouse(382, 325);
  265. wait(200 + Random(51));
  266. ClickMouse(382, 325, 1);
  267. wait(100 + Random(51));
  268.  
  269. //wait a normal amount of time to log
  270. wait(5000 + Random(551));
  271.  
  272. //wait until fully logged in
  273. repeat
  274. loginCheck;
  275. until (clientStable:= true);
  276.  
  277. loginScreenDetected:= true;
  278.  
  279. FreeDTM(loginScreen);
  280. end else
  281. writeln('Waiting for client to load...');
  282.  
  283. end;
  284.  
  285. procedure logoutPlayer;
  286. begin
  287. //click logout tab
  288. MoveMouse(645, 511);
  289. wait(250 + Random(51));
  290. ClickMouse(645, 511, 1);
  291. wait(500 + Random(51));
  292.  
  293. //click here to log out
  294. MoveMouse(643, 402);
  295. wait(250 + Random(51));
  296. ClickMouse(643, 402, 1);
  297. wait(500 + Random(51));
  298. end;
  299.  
  300. procedure chatboxCheck;
  301. var
  302. chatboxChecker := BitmapFromString(50, 10, 'meJydkzEOAjEMBPP0vIQCaOAbSA' +
  303. 'gBJQ2I4p5COINvtbuXE0hbJI7jjO24llJL2Z2fc9qeHk1tsb8OaMT' +
  304. 'TFB4txuyojlQZU1Ud9kR1Gd7qkmA6lKklzEfJiO8ilZ4Glb6r/LZQ' +
  305. '0/abHdYKnSkdomK3MdpiZdJuO/5BclRZNNtB6iMabfsyMvmQERnQb' +
  306. 't3woTzaHO/aU/vr0G5/C/0czFoJSQ0DxyG2lkqHhWL209G1BWsAoa' +
  307. 'SKNTW9MwsYMIrcuThHpXFC68NNgX+lyl/9B9VKmhVUCRYXI3E7AjR' +
  308. '06mNHwNK+AIJ5fBM=');
  309.  
  310. begin
  311. if FindBitmapToleranceIn(chatboxChecker, X, Y, chatboxArea, 5) then
  312. begin
  313. MoveMouse(X, Y);
  314. wait(250 + Random(51));
  315. ClickMouse(X, Y, 1);
  316. wait(500 + Random(51));
  317. end;
  318. FreeBitmap(chatboxChecker);
  319. end;
  320.  
  321. procedure clickHereToContinue;
  322. begin
  323. MoveMouse(300, 475);
  324. wait(250 + Random(51));
  325. ClickMouse(300, 475, 1);
  326. wait(750 + Random(51));
  327. end;
  328.  
  329. //first time using cases :)
  330.  
  331. procedure ClickTab(Tab: String);
  332. begin
  333. case (Tab) of
  334. 'playerControls':
  335. begin
  336. MoveMouse(680, 510);
  337. wait(250 + Random(51));
  338. ClickMouse(680, 510, 1);
  339. wait(750 + Random(51));
  340. end;
  341.  
  342. 'inventory':
  343. begin
  344. MoveMouse(650, 210);
  345. wait(250 + Random(51));
  346. ClickMouse(650, 210, 1);
  347. wait(750 + Random(51));
  348. end;
  349.  
  350. 'skills':
  351. begin
  352. MoveMouse(580, 212);
  353. wait(500 + Random(51));
  354. ClickMouse(580, 212, 1);
  355. wait(1000 + Random(51));
  356. end;
  357.  
  358. 'questTab':
  359. begin
  360. MoveMouse(612, 210);
  361. wait(250 + Random(51));
  362. ClickMouse(612, 210, 1);
  363. wait(2000 + Random(51));
  364. end;
  365.  
  366. else
  367. WriteLn('"' + Tab + '" tab does not exist.');
  368. end;
  369. end;
  370.  
  371. procedure ClickNPC(NPC: String);
  372. var
  373. //master chef
  374. chefFound:Boolean:= False;
  375. chefDialogueFound:Boolean:= False;
  376. chefDialogue := BitmapFromString(22, 6, 'meJxtkEEKgFAIRD16Z6kWdY7gE61' +
  377. 'bVHSYhh4N9gtcqDxn1Igm7hiXs5+PoWxd2eNp5pwQIzLeU2DKKcGq' +
  378. 'RIzEK8C51YTZAoAOpRR+lZmlaQXBX6OvLyMs76sri3ZaFVnBn8kLe' +
  379. 'w2f6aeh4Km8huMC9ZnRxg==');
  380.  
  381. questGuideFound:Boolean:= False;
  382. miningInstructorFound:Boolean:= False;
  383.  
  384. begin
  385. case (NPC) of
  386. 'RuneScape Guide':
  387. begin
  388. if FindColorTolerance(X, Y, 462720, clientArea, 5) then
  389. begin
  390. MoveMouse(X, Y);
  391. wait(100 + Random(51));
  392. ClickMouse(X, Y, 1);
  393. wait(2000 + Random(51));
  394. end;
  395. end;
  396.  
  397. 'Survival Expert':
  398. begin
  399. if FindColorTolerance(X, Y, 2895710, clientArea, 5) then
  400. begin
  401. MoveMouse(X, Y);
  402. wait(100 + Random(51));
  403. ClickMouse(X, Y, 1);
  404. wait(2000 + Random(51));
  405. end;
  406. end;
  407.  
  408. 'Master Chef':
  409. begin
  410. repeat
  411. if FindColorTolerance(X, Y, 3562038, clientArea, 5) then
  412. begin
  413. writeln('Master chef found!');
  414. MoveMouse(X, Y);
  415. wait(50 + Random(51));
  416. ClickMouse(X, Y, 1);
  417. wait(2500 + Random(51));
  418.  
  419. //find until dialogue pops up
  420. if FindBitmapToleranceIn(chefDialogue, X, Y, chatboxArea, 5) then
  421. begin
  422. wait(50 + Random(51));
  423. chefDialogueFound:= True;
  424. end else
  425. begin
  426. repeat
  427. ClickNPC('Master Chef');
  428. until(chefDialogueFound = True);
  429. end;
  430.  
  431. chefFound:= True;
  432. end;
  433. until(chefFound = True);
  434. chefFound = False;
  435. chefDialogueFound = False;
  436. FreeBitmap(chefDialogue);
  437. end;
  438.  
  439. 'Quest Guide':
  440. begin
  441. repeat
  442. if FindColorTolerance(X, Y, 1717772, clientArea, 5) then
  443. begin
  444. writeln('Quest guide found!');
  445. MoveMouse(X, Y);
  446. wait(250 + Random(51));
  447. ClickMouse(X, Y, 1);
  448. wait(2000 + Random(51));
  449. questGuideFound:= True;
  450. end;
  451. until(questGuideFound = True);
  452. questGuideFound = False;
  453. end;
  454.  
  455. 'Mining Instructor':
  456. begin
  457. repeat
  458. if FindColorTolerance(X, Y, 4462657, clientArea, 5) then
  459. begin
  460. writeln('Mining instructor found!');
  461. MoveMouse(X, Y);
  462. wait(250 + Random(51));
  463. ClickMouse(X, Y, 1);
  464. wait(2500 + Random(51));
  465. miningInstructorFound:= True;
  466. end;
  467. until(miningInstructorFound = True);
  468. miningInstructorFound = False;
  469. end;
  470.  
  471. else
  472. WriteLn('"' + NPC + '" NPC does not exist.');
  473. end;
  474.  
  475. end;
  476.  
  477. //loops
  478.  
  479. procedure logCheck;
  480. begin
  481. wait(5000);
  482. if FindColorTolerance(X, Y, 2443624, 657, 245, 674, 259, 5) then
  483. begin
  484. //"the tree has run out of logs"
  485. chatboxCheck;
  486.  
  487. //click log
  488. MoveMouse(X, Y);
  489. wait(250 + Random(51));
  490. ClickMouse(X, Y, 1);
  491. wait(500 + Random(51));
  492. log1Chopped:= true;
  493. end else
  494. repeat
  495. logCheck;
  496. until(log1Chopped:= true);
  497.  
  498. end;
  499.  
  500. procedure fishCheck;
  501. begin
  502. wait(5000);
  503. chatboxCheck;
  504.  
  505. if FindColorTolerance(X, Y, 7179721, invyArea, 5) then
  506. begin
  507. //click fish
  508. MoveMouse(X, Y);
  509. wait(250 + Random(51));
  510. ClickMouse(X, Y, 1);
  511. wait(500 + Random(51));
  512. fishCaught:= true;
  513. end else
  514.  
  515. repeat
  516. fishCheck;
  517. until(fishCaught:= true);
  518. end;
  519.  
  520. procedure tinOreCheck;
  521. var
  522. tinOre := DTMFromString('mWAAAAHicY2FgYChiYmAoAeJ0IM4FYndGBgY7IHYDYn8gLkxPY8iMj2cIc1BniHTSYkAHjGgYBACEAwbQ');
  523.  
  524. begin
  525. wait(5000);
  526. if FindDTM(tinOre, X, Y, invyArea) then
  527. begin
  528. oreMined:= true;
  529. end else
  530. repeat
  531. tinOreCheck;
  532. until(oreMined:= true);
  533.  
  534. FreeDTM(tinOre);
  535. end;
  536.  
  537. procedure copperOreCheck;
  538. var
  539. copperOre := DTMFromString('mWAAAAHicY2FgYJjNxMAwF4h7gXg6ELsyMjDYMkLoACA+HifPsC5YmkFbUYQh0kmLAR0womEQAAClLwcN');
  540.  
  541. begin
  542. wait(5000);
  543. if FindDTM(copperOre, X, Y, invyArea) then
  544. begin
  545. oreMined:= true;
  546. end else
  547. repeat
  548. copperOreCheck;
  549. until(oreMined:= true);
  550.  
  551. FreeDTM(copperOre);
  552. end;
  553.  
  554.  
  555. //main blocks
  556.  
  557. procedure RuneScapeGuide;
  558. var
  559. i:Integer;
  560.  
  561. begin
  562. ClickNPC('RuneScape Guide');
  563.  
  564. for i := 0 to 4 do //repeat 6 times
  565. clickHereToContinue;
  566.  
  567. ClickTab('playerControls');
  568.  
  569. ClickNPC('RuneScape Guide');
  570.  
  571. for i := 0 to 0 do //repeat 2 times
  572. clickHereToContinue;
  573.  
  574. //click door
  575. MoveMouse(397, 193);
  576. wait(100 + Random(51));
  577. ClickMouse(397, 193, 1);
  578. wait(3750 + Random(551));
  579.  
  580. //walk south
  581. MoveMouse(665, 151);
  582. wait(100 + Random(51));
  583. ClickMouse(665, 151, 1);
  584. wait(8000 + Random(2001));
  585. end;
  586.  
  587. procedure SurvivalExpert;
  588. var
  589. i:Integer;
  590.  
  591. begin
  592.  
  593. ClickNPC('Survival Expert');
  594.  
  595. for i := 0 to 0 do //repeat 2 times
  596. clickHereToContinue;
  597.  
  598. ClickTab('inventory');
  599.  
  600. //Click indicated tree
  601. MoveMouse(90, 200);
  602. wait(250 + Random(51));
  603. ClickMouse(90, 200, 1);
  604. wait(2000 + Random(51));
  605.  
  606. logCheck;
  607.  
  608. //select logs
  609. MoveMouse(667, 252);
  610. wait(500 + Random(51));
  611. ClickMouse(667, 252, 1);
  612. wait(250 + Random(51));
  613.  
  614. //use logs with tinderbox
  615. MoveMouse(581, 252);
  616. wait(500 + Random(51));
  617. ClickMouse(581, 252, 1);
  618. wait(6500 + Random(51));
  619.  
  620. chatboxCheck;
  621.  
  622. ClickTab('skills');
  623.  
  624. ClickNPC('Survival Expert');
  625.  
  626. for i := 0 to 0 do //repeat 2 times
  627. clickHereToContinue;
  628.  
  629. ClickTab('inventory');
  630.  
  631. //Click net fishing spot
  632. MoveMouse(189, 320);
  633. wait(250 + Random(51));
  634. ClickMouse(189, 320, 1);
  635. wait(2000 + Random(51));
  636.  
  637. fishCheck;
  638.  
  639. //use shrimp with fire
  640. MoveMouse(267, 97);
  641. wait(250 + Random(51));
  642. ClickMouse(267, 97, 1);
  643. wait(7000 + Random(51));
  644.  
  645. chatboxCheck;
  646.  
  647. //1st shrimp always burns
  648. //>=2nd shrimp always cooks
  649.  
  650. //click net fishing spot
  651. MoveMouse(256, 313);
  652. wait(2000 + Random(51));
  653. ClickMouse(256, 313, 1);
  654. wait(500 + Random(51));
  655.  
  656. fishCheck;
  657.  
  658. //use shrimp with fire
  659. MoveMouse(267, 97);
  660. wait(250 + Random(51));
  661. ClickMouse(267, 97, 1);
  662. wait(5000 + Random(51));
  663.  
  664. chatboxCheck;
  665.  
  666. //click by west fence
  667. MoveMouse(597, 122);
  668. wait(250 + Random(51));
  669. ClickMouse(597, 122, 1);
  670. wait(10000 + Random(51));
  671.  
  672. //click fence
  673. MoveMouse(238, 174);
  674. wait(250 + Random(51));
  675. ClickMouse(238, 174, 1);
  676. wait(2000 + Random(51));
  677.  
  678. //click by cook house entrance
  679. MoveMouse(605, 137);
  680. wait(250 + Random(51));
  681. ClickMouse(605, 137, 1);
  682. wait(12000 + Random(51));
  683.  
  684. end;
  685.  
  686. procedure MasterChef;
  687. var
  688. i:Integer;
  689.  
  690. begin
  691. //open door
  692. MoveMouse(239, 194);
  693. wait(250 + Random(51));
  694. ClickMouse(239, 194, 1);
  695. wait(2000 + Random(51));
  696.  
  697. ClickNPC('Master Chef');
  698.  
  699. for i := 0 to 3 do //repeat 5 times
  700. clickHereToContinue;
  701.  
  702. //click pot of flour
  703. MoveMouse(666, 291);
  704. wait(250 + Random(51));
  705. ClickMouse(666, 291, 1);
  706. wait(750 + Random(51));
  707.  
  708. //click water
  709. MoveMouse(625, 291);
  710. wait(250 + Random(51));
  711. ClickMouse(625, 291, 1);
  712. wait(750 + Random(51));
  713.  
  714. //click dough
  715. MoveMouse(623, 289);
  716. wait(250 + Random(51));
  717. ClickMouse(623, 289, 1);
  718. wait(750 + Random(51));
  719.  
  720. //use dough with range
  721. if FindColorTolerance(X, Y, 726705, clientArea, 5) then
  722. begin
  723. MoveMouse(X, Y);
  724. wait(250 + Random(51));
  725. ClickMouse(X, Y, 1);
  726. wait(3500 + Random(51));
  727. end
  728.  
  729. chatboxCheck;
  730.  
  731. //click music tab
  732. MoveMouse(742, 506);
  733. wait(250 + Random(51));
  734. ClickMouse(742, 506, 1);
  735. wait(2000 + Random(51));
  736.  
  737. //walk to cook exit
  738. //we can just use color here
  739. //because we know you are on either 2 spots
  740. //in front of the range
  741. if FindColorTolerance(X, Y, 238, 624, 70, 646, 82, 5) then
  742. begin
  743. MoveMouse(X, Y);
  744. wait(250 + Random(51));
  745. ClickMouse(X, Y, 1);
  746. wait(7000 + random(51));
  747. end;
  748.  
  749. //click exit door
  750. MoveMouse(241, 182);
  751. wait(250 + Random(51));
  752. ClickMouse(241, 182, 1);
  753. wait(2500 + Random(51));
  754.  
  755. ClickTab('playerControls');
  756.  
  757. //click run
  758. MoveMouse(618, 469);
  759. wait(250 + Random(51));
  760. ClickMouse(618, 469, 1);
  761. wait(750 + Random(51));
  762.  
  763. //run north
  764. MoveMouse(636, 41);
  765. wait(250 + Random(51));
  766. ClickMouse(636, 41, 1);
  767. wait(7000 + Random(51));
  768.  
  769. //run north
  770. MoveMouse(666, 43);
  771. wait(250 + Random(51));
  772. ClickMouse(666, 43, 1);
  773. wait(7000 + Random(51));
  774.  
  775. //run east
  776. MoveMouse(689, 103);
  777. wait(250 + Random(51));
  778. ClickMouse(689, 103, 1);
  779. wait(7000 + Random(51));
  780.  
  781. end;
  782.  
  783. procedure QuestGuide;
  784. var
  785. i:Integer;
  786.  
  787. begin
  788. //click entrance door
  789. MoveMouse(268, 184);
  790. wait(250 + Random(51));
  791. ClickMouse(268, 184, 1);
  792. wait(2000 + Random(51));
  793.  
  794. //move south to show entire walkabe area of npc
  795. MoveMouse(645, 120);
  796. wait(250 + Random(51));
  797. ClickMouse(645, 120, 1);
  798. wait(2000 + Random(51));
  799.  
  800. ClickNPC('Quest Guide');
  801.  
  802. ClickTab('questTab');
  803.  
  804. ClickNPC('Quest Guide');
  805.  
  806. for i := 0 to 3 do //repeat 5 times
  807. clickHereToContinue;
  808.  
  809. //Find ladder, click close to
  810. if FindColorTolerance(X, Y, 8022, 640, 107, 671, 138, 5) then
  811. begin
  812. MoveMouse(X, Y);
  813. wait(250 + Random(51));
  814. ClickMouse(X, Y, 1);
  815. wait(5000 + Random(51));
  816. end;
  817.  
  818. //click ladder
  819. MoveMouse(275, 230);
  820. wait(250 + Random(51));
  821. ClickMouse(275, 230, 1);
  822. wait(2500 + Random(51));
  823. end;
  824.  
  825. procedure MiningInstructor;
  826. var
  827. i:Integer;
  828. prospect := BitmapFromString(29, 11, 'meJy1kcENgEAIBOnOBvzafxmnkW' +
  829. 'QlA+gHyT1gSJaDXeuJbT+mngua2ayyZJX/JOv57BHsDnH8v4Tg3oq' +
  830. 'lNCPHIC+jcuQKwLwFBpXnylt098z83QVsMSXbOfUp2xkBv8RxVexV' +
  831. 'QrTg10VOIuu3lw==');
  832.  
  833. begin
  834. //walk south
  835. MoveMouse(616, 157);
  836. wait(250 + Random(51));
  837. ClickMouse(616, 157, 1);
  838. wait(5000 + Random(51));
  839.  
  840. //click yellow in minimap to get closer to npc
  841. if FindColorTolerance(X, Y, 60909, minimapArea, 0) then
  842. begin
  843. writeln('Moving closer to NPC');
  844. MoveMouse(X + 1, Y + 1);
  845. wait(250 + Random(51));
  846. ClickMouse(X + 1, Y + 1, 1);
  847. wait(5000 + Random(51));
  848. end;
  849.  
  850. ClickNPC('Mining Instructor');
  851.  
  852. for i := 0 to 1 do //repeat 3 times
  853. clickHereToContinue;
  854.  
  855. chatboxCheck;
  856.  
  857. ClickTab('playerControls');
  858.  
  859. //up the brightness
  860. //color finding here is harder
  861. MoveMouse(711, 305);
  862. wait(250 + Random(51));
  863. ClickMouse(711, 305, 1);
  864. wait(500 + Random(51));
  865.  
  866. //right-click tin rock
  867. if FindColorTolerance(X, Y, 8092806, clientArea, 5) then
  868. begin
  869. MoveMouse(X, Y);
  870. wait(250 + Random(51));
  871. ClickMouse(X, Y, 0);
  872. wait(500 + Random(51));
  873. end;
  874.  
  875. //click prospect
  876. if FindBitmapToleranceIn(prospect, X, Y, clientArea, 5) then
  877. begin
  878. MoveMouse(X, Y);
  879. wait(250 + Random(51));
  880. ClickMouse(X, Y, 1);
  881. wait(10000 + Random(51));
  882. end;
  883.  
  884. //walk east; closer to detect copper rock
  885. MoveMouse(680, 115);
  886. wait(250 + Random(51));
  887. ClickMouse(680, 115, 1);
  888. wait(5000 + Random(51));
  889.  
  890. //right-click copper rock
  891. if FindColorTolerance(X, Y, 4216690, clientArea, 5) then
  892. begin
  893. MoveMouse(X, Y);
  894. wait(250 + Random(51));
  895. ClickMouse(X, Y, 0);
  896. wait(500 + Random(51));
  897. end;
  898.  
  899. //click prospect
  900. if FindBitmapToleranceIn(prospect, X, Y, clientArea, 5) then
  901. begin
  902. MoveMouse(X, Y);
  903. wait(250 + Random(51));
  904. ClickMouse(X, Y, 1);
  905. wait(10000 + Random(51));
  906. end;
  907.  
  908. FreeBitmap(prospect);
  909.  
  910. //click yellow in minimap to get closer to npc
  911. if FindColorTolerance(X, Y, 60909, minimapArea, 0) then
  912. begin
  913. writeln('Moving closer to NPC');
  914. MoveMouse(X, Y);
  915. wait(250 + Random(51));
  916. ClickMouse(X, Y, 1);
  917. wait(5000 + Random(51));
  918. end;
  919.  
  920. ClickNPC('Mining Instructor');
  921.  
  922. for i := 0 to 2 do //repeat 4 times
  923. clickHereToContinue;
  924.  
  925. //left-click tin rock
  926. if FindColorTolerance(X, Y, 8092806, clientArea, 5) then
  927. begin
  928. MoveMouse(X, Y);
  929. wait(250 + Random(51));
  930. ClickMouse(X, Y, 1);
  931. wait(500 + Random(51));
  932. end;
  933.  
  934. tinOreCheck;
  935. oreMined:= false;
  936.  
  937. //walk east; closer to detect copper rock
  938. MoveMouse(680, 115);
  939. wait(250 + Random(51));
  940. ClickMouse(680, 115, 1);
  941. wait(5000 + Random(51));
  942.  
  943. //left-click copper rock
  944. if FindColorTolerance(X, Y, 4216690, clientArea, 5) then
  945. begin
  946. MoveMouse(X, Y);
  947. wait(250 + Random(51));
  948. ClickMouse(X, Y, 1);
  949. wait(500 + Random(51));
  950. end;
  951.  
  952. copperOreCheck;
  953. end;
  954.  
  955.  
  956. //main procedure
  957.  
  958. procedure startBot;
  959. begin
  960. if FindColorTolerance(X, Y, 14610138, 551, 114, 568, 129, 5) then
  961. begin
  962. wait(38 + Random(372));
  963. logoutPlayer;
  964. end;
  965.  
  966. wait(2000 + Random(51));
  967. writeln('Starting VidyaScape Tutorial Island Bot');
  968.  
  969. repeat
  970. wait(5000 + Random(51));
  971. loginPlayer;
  972. until(loginScreenDetected = true);
  973. loginScreenDetected = false;
  974.  
  975. setCamera;
  976.  
  977. //char design pops up on first login
  978. //click "accept" or later make randomized deisigns
  979.  
  980. setAppearance;
  981.  
  982. //accept char design interface
  983. if FindColorTolerance(X, Y, 49152, clientArea, 0) then
  984. begin
  985. MoveMouse(X, Y);
  986. wait(100 + Random(51));
  987. ClickMouse(X, Y, 1);
  988. wait(2000 + Random(51));
  989. end;
  990.  
  991. RuneScapeGuide;
  992. SurvivalExpert;
  993. MasterChef;
  994. QuestGuide;
  995. MiningInstructor;
  996.  
  997. end
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004. begin
  1005. setupSRL();
  1006.  
  1007. writeln('Username: ' + user);
  1008. writeln('Password: ' + pass);
  1009.  
  1010. startBot;
  1011. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement