Guest User

Untitled

a guest
Jul 21st, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.38 KB | None | 0 0
  1. {$Include 'std.sinc'}
  2. {$Include 'types.sinc'}
  3. {$Include 'ptimer.sinc'}
  4. {$Include 'recall.sinc'}
  5. {$Include 'debug.sinc'}
  6. {$Include 'escape.sinc'}
  7.  
  8. function findCreatures(creatures : array of word) : cardinal;
  9. var
  10. i : integer;
  11. begin
  12. result := 0;
  13.  
  14. for i := 0 to getArrayLength(creatures) - 1 do
  15. begin
  16. result := findType(creatures[i], ground);
  17. if (result <> 0) then exit;
  18. end;
  19. end;
  20.  
  21. function returnTreesArray(x1, y1, x2, y2 : integer) : array of TFoundTile;
  22. var foundTiles : TFoundTilesArray;
  23. trees : array of TFoundTile;
  24. treeTiles : array of word;
  25. i, j, n, tilesCnt : integer;
  26.  
  27. begin
  28. treeTiles := [3230, 3277, 3280, 3283, 3286, 3289, 3291, 3294, 3296, 3299, 3302];
  29.  
  30. for i := 0 to getArrayLength(treeTiles) - 1 do
  31. begin
  32. tilesCnt := getStaticTilesArray(x1, y1, x2, y2, worldNum, treeTiles[i], foundTiles);
  33. n := getArrayLength(trees);
  34. setArrayLength(trees, n + tilesCnt);
  35.  
  36. for j := 0 to tilesCnt - 1 do
  37. trees[n + j] := foundTiles[j];
  38.  
  39. end;
  40.  
  41. result := trees;
  42. addToSystemJournal('Total ' + intToStr(getArrayLength(result)) + ' tiles');
  43. end;
  44.  
  45.  
  46. var
  47. lastHp : integer;
  48.  
  49. function checkHarm : boolean;
  50. begin
  51. result := hp < lastHp;
  52. lastHp := hp;
  53.  
  54. // èùåì ñëèìà
  55. if not result then result := findCreatures([$0033, $000E]) <> 0;
  56. end;
  57.  
  58. var
  59. lumberTimer : TTimer;
  60.  
  61. function lumber(tile : word; x, y, z : integer) : boolean;
  62. var okMsg, failMsg, stopMsg, errMsg : string;
  63. ok, fail, err, stop : integer;
  64. lastTime : TDateTime;
  65. timeout : TTimer;
  66.  
  67. begin
  68. okMsg := 'You place|I am already|A slime oozes over to';
  69. failMsg := 'You fail to get';
  70. stopMsg := 'There''s not enough|Guard Zone any more';
  71. errMsg := 'how to use|broke|stop|can''t see|far away';
  72.  
  73. scheduleTimer(timeout, 2*60*1000);
  74.  
  75. wait(randomRange(1,2)*1000);
  76.  
  77. repeat
  78. while not isTimerExpire(lumberTimer) do wait(100);
  79. if targetPresent then cancelTarget;
  80.  
  81. waitTargetTile(tile, x, y, z);
  82. useObject(ObjAtLayer(LhandLayer));
  83. lastTime := now;
  84.  
  85. repeat
  86. wait(100);
  87. result := checkHarm;
  88. ok := inJournalBetweenTimes(okMsg, lastTime, now);
  89. fail := inJournalBetweenTimes(failMsg, lastTime, now);
  90. err := inJournalBetweenTimes(errMsg, lastTime, now);
  91. stop := inJournalBetweenTimes(stopMsg, lastTime, now);
  92. until (ok >= 0) or (fail >= 0) or (err >= 0) or (stop >=0) or isTimerExpire(timeout) or result;
  93.  
  94.  
  95. if ok >= 0 then scheduleTimer(lumberTimer, 1300);
  96. if fail >= 0 then scheduleTimer(lumberTimer, 1450);
  97.  
  98. until (stop >= 0) or (err >= 0) or isTimerExpire(timeout) or result;
  99. end;
  100.  
  101. procedure RecallToForest();
  102. begin
  103. recallWithCheck(makeDestination($44C505B9, round(randomRange(8,16))), rcRegs);
  104. wait(500);
  105. end;
  106.  
  107. procedure RecallToBank();
  108. begin
  109. recallWithCheck(makeDestination($44C505B9, 2), rcRegs); //bank
  110. wait(randomRange(1, 3)*1000);
  111. end;
  112.  
  113. procedure checkRegs();
  114. begin
  115.  
  116. if ((count(reg_bm) < 10) or (count(reg_mr) < 10) or (count(reg_bp) < 10)) then
  117. _critical(getName(self) + ' ìàëî ðåãîâ');
  118. if (count(reg_bm) < 10) then get(findtype($0E75, objAtLayer(BankLayer)), backpack, reg_bm, 30 - count(reg_bm));
  119. if (count(reg_mr) < 10) then get(findtype($0E75, objAtLayer(BankLayer)), backpack, reg_mr, 30 - count(reg_mr));
  120. if (count(reg_bp) < 10) then get(findtype($0E75, objAtLayer(BankLayer)), backpack, reg_bp, 30 - count(reg_bp));
  121. end;
  122.  
  123.  
  124.  
  125. function checkWeight : boolean;
  126. var p : TPoint;
  127. begin
  128. result := Weight > 280;
  129.  
  130. if (Weight > 280) then
  131. begin
  132. addToSystemJournal('Overweight!!');
  133. RecallToBank();
  134. uoSay('bank');
  135. wait(randomRange(1, 3)*1000);
  136. get(backpack, findtype($0E75, objAtLayer(BankLayer)), log_type, count(log_type));
  137. checklag;
  138. get(backpack, findtype($0E75, objAtLayer(BankLayer)), log_type, count($0F90)); //deadwood
  139. checklag;
  140. checkRegs;
  141. wait(randomRange(1, 3)*1000);
  142.  
  143. RecallToForest();
  144. if findPassable(p, 30) then doEscape(p);
  145. wait(500);
  146. end;
  147. end;
  148.  
  149.  
  150.  
  151. var
  152. currentSquare : array of TFoundTile;
  153. t : integer;
  154. p : TPoint;
  155.  
  156. begin
  157. lastHp := hp;
  158.  
  159. moveThroughNPC := 1;
  160. scheduleTimer(lumberTimer, 7000);
  161. cancelTimer(lumberTimer);
  162.  
  163. RecallToForest();
  164.  
  165. while not Dead do
  166. begin
  167. currentSquare := returnTreesArray(getX(self) - 9, getY(self) - 9, getX(self) + 9, getY(self) + 12);
  168.  
  169. t := 0;
  170. while t < getArrayLength(currentSquare) - 1 do
  171. begin
  172. addToSystemJournal('Tile: ' + intToStr(currentSquare[t].tile) + ', X: ' + intToStr(currentSquare[t].x) + ', Y: ' + intToStr(currentSquare[t].y));
  173.  
  174. newMoveXY(currentSquare[t].x, currentSquare[t].y, true, 1, true);
  175.  
  176. if lumber(currentSquare[t].tile, currentSquare[t].x, currentSquare[t].y, 0) then
  177. begin
  178. if findPassable(p, 40) then doEscape(p);
  179.  
  180. t := 0;
  181. currentSquare := returnTreesArray(getX(self) - 9, getY(self) - 9, getX(self) + 9, getY(self) + 12);
  182. continue;
  183. end;
  184.  
  185. wait(randomRange(1,3)*1000);
  186. if checkWeight then
  187. begin
  188. t := 0;
  189. currentSquare := returnTreesArray(getX(self) - 9, getY(self) - 9, getX(self) + 9, getY(self) + 12);
  190. continue;
  191. end;
  192.  
  193. Inc(t);
  194. end;
  195.  
  196. RecallToForest();
  197. if findPassable(p, 30) then doEscape(p);
  198. end;
  199. end.
Add Comment
Please, Sign In to add comment