Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. // Премиум версия Магии для бомжей v1.0
  2. // for DRW. By Unholy
  3. // Ставим чара в магазине с реагентами в ГЗ
  4. // Опционально надеваем на него брас маны.
  5. //
  6. // Бот будет скупать реги и кастовать на себя заклинания
  7. // отличия от той версии, что лежит на форуме:
  8. // 1. Заклинания кастуются пока у чара есть мана
  9. // 2. В зависимости от наличия реагентов в паке кастуется
  10. // MagicArrow, NightSight и Cure. Связанно это с тем,
  11. // что реагенты для стрелки у НПС не успевают появится.
  12. //
  13. // Ходят слухи, что в некоторых магазинах работает криво.
  14. // В случае ошибок - поменяйте магазин и сообщите мне, в
  15. // каком магазине наблюдаются проблемы.
  16.  
  17. Program Magery;
  18. const
  19. // можно увеличить, если чар подходит не ко всем NPC
  20. // можно уменьшить, если чар выходит из магазина
  21. NPCSearchDistance = 10;
  22.  
  23. //при достижении этого кол-ва реагентов, они больше не будут покупаться
  24. //для Magic Arrow
  25. NSMaxCount = 1000;
  26. BPMaxCount = 1000;
  27. //для Night Sight
  28. SSMaxCount = 500;
  29. SAMaxCount = 500;
  30. //для Cure
  31. GAMaxCount = 500;
  32. GSMaxCount = 500;
  33.  
  34. procedure initWalker;
  35. begin
  36. ClearBadLocationList;
  37. ClearBadObjectList;
  38. MoveBetweenTwoCorners := false;
  39. MoveThroughCorner := false;
  40. MoveOpenDoor := true;
  41. MoveThroughNPC := 20;
  42. end;
  43.  
  44. procedure useMeditation;
  45. begin
  46. if WarMode = true then SetWarMode(false);
  47. if (GetMaxMana(self) > GetMana(self)) then useskill('Meditation');
  48. end;
  49.  
  50. Function NextVendor2(Dist:Integer; var X,Y:Integer; var vName:String):Boolean;
  51. var
  52. Cur_Vend:Cardinal;
  53. begin
  54. Ignore(Self);
  55. X:=0;
  56. Y:=0;
  57. vName:='';
  58. Result:=false;
  59. FindDistance:=Dist;
  60. Cur_Vend:=FindType($0190,Ground);
  61. Ignore(FindItem);
  62. if Cur_Vend > 0 then begin
  63. X:=GetX(Cur_Vend);
  64. Y:=GetY(Cur_Vend);
  65. vName:=GetName(Cur_Vend);
  66. Result:=True;
  67. end else begin
  68. Cur_Vend:=FindType($0191,Ground);
  69. Ignore(FindItem);
  70. if Cur_Vend > 0 then begin
  71. X:=GetX(Cur_Vend);
  72. Y:=GetY(Cur_Vend);
  73. vName:=GetName(Cur_Vend);
  74. Result:=True;
  75. end;
  76. end;
  77. end;
  78.  
  79. procedure BuyReg;
  80. var
  81. vendor_X,vendor_Y:Integer;
  82. vendor_Name:String;
  83. buyDelaySec, i: integer;
  84. begin
  85. buyDelaySec := 0;
  86. ClearShopList();
  87. if (NSCount < NSMaxCount) then
  88. begin
  89. AutoBuy(NS, $0000, 200);
  90. buyDelaySec := buyDelaySec + 1;
  91. end;
  92. if (BPCount < BPMaxCount) then
  93. begin
  94. AutoBuy(BP, $0000, 200);
  95. buyDelaySec := buyDelaySec + 1;
  96. end;
  97. if (SSCount < SSMaxCount) then
  98. begin
  99. AutoBuy(SS, $0000, 200);
  100. buyDelaySec := buyDelaySec + 1;
  101. end;
  102. if (SACount < SAMaxCount) then
  103. begin
  104. AutoBuy(SA, $0000, 200);
  105. buyDelaySec := buyDelaySec + 1;
  106. end;
  107. if (GACount < GAMaxCount) then
  108. begin
  109. AutoBuy(GA, $0000, 200);
  110. buyDelaySec := buyDelaySec + 1;
  111. end;
  112. if (GSCount < GSMaxCount) then
  113. begin
  114. AutoBuy(GS, $0000, 200);
  115. buyDelaySec := buyDelaySec + 1;
  116. end;
  117.  
  118. SetAutoBuyDelay(buyDelaySec * 1000);
  119. FindVertical:=100;
  120. while NextVendor2(NPCSearchDistance,vendor_X,vendor_Y,vendor_Name) do
  121. begin
  122. NewMoveXY(vendor_X,vendor_Y,false,2,false);
  123. UOSay('Bye '+vendor_Name+' Buy guards');
  124. CheckLag(15000);
  125. for i:= 0 to buyDelaySec do
  126. begin
  127. wait(1000);
  128. useMeditation;
  129. end;
  130. end;
  131. IgnoreReset;
  132. ClearShopList();
  133. AutoBuy(NS, $0000, 0);
  134. AutoBuy(BP, $0000, 0);
  135. AutoBuy(SS, $0000, 0);
  136. AutoBuy(SA, $0000, 0);
  137. AutoBuy(GA, $0000, 0);
  138. AutoBuy(GS, $0000, 0);
  139. end;
  140.  
  141.  
  142.  
  143. procedure CastMagicArrows;
  144. var checker: boolean;
  145. begin
  146. While (Mana >= 10) and (NSCount > 0) and (BPCount > 0) do
  147. begin
  148. WaitTargetObject(self);
  149. Cast('Magic Arrow');
  150. CheckLag(15000);
  151. Wait(1550);
  152. checker := not checker;
  153. if (checker = true) then UOSay('guards');
  154. end;
  155. end;
  156.  
  157. procedure CastNightSight;
  158. var checker: boolean;
  159. begin
  160. While (Mana >= 12) and (SSCount > 0) and (SACount > 0) do
  161. begin
  162. WaitTargetObject(self);
  163. Cast('Night Sight');
  164. CheckLag(15000);
  165. Wait(1850);
  166. checker := not checker;
  167. if (checker = true) then UOSay('guards');
  168. end;
  169. end;
  170.  
  171. procedure CastCure;
  172. var checker: boolean;
  173. begin
  174. While (Mana >= 16) and (GACount > 0) and (GSCount > 0) do
  175. begin
  176. WaitTargetObject(self);
  177. Cast('Cure');
  178. CheckLag(15000);
  179. Wait(2450);
  180. checker := not checker;
  181. if (checker = true) then UOSay('guards');
  182. end;
  183. end;
  184.  
  185. procedure Meditation;
  186. begin
  187. While GetMaxMana(self) > GetMana(self) do
  188. begin
  189. useMeditation;
  190. Wait(1000);
  191. CheckLag(15000);
  192. UOSay('guards');
  193. end;
  194. end;
  195.  
  196. begin
  197. initWalker;
  198. repeat
  199. CastMagicArrows;
  200. CastNightSight;
  201. CastCure;
  202. if ((NSMaxCount > NSCount) or (BPMaxCount > BPCount) or (SSMaxCount > SSCount) or (SAMaxCount > SACount) or (GAMaxCount > GACount) or (GSMaxCount > GSCount)) then
  203. BuyReg;
  204. Meditation();
  205. until GetSkillValue('Magery') > 100
  206. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement