Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Премиум версия Магии для бомжей v1.0
- // for DRW. By Unholy
- // Ставим чара в магазине с реагентами в ГЗ
- // Опционально надеваем на него брас маны.
- //
- // Бот будет скупать реги и кастовать на себя заклинания
- // отличия от той версии, что лежит на форуме:
- // 1. Заклинания кастуются пока у чара есть мана
- // 2. В зависимости от наличия реагентов в паке кастуется
- // MagicArrow, NightSight и Cure. Связанно это с тем,
- // что реагенты для стрелки у НПС не успевают появится.
- //
- // Ходят слухи, что в некоторых магазинах работает криво.
- // В случае ошибок - поменяйте магазин и сообщите мне, в
- // каком магазине наблюдаются проблемы.
- Program Magery;
- const
- // можно увеличить, если чар подходит не ко всем NPC
- // можно уменьшить, если чар выходит из магазина
- NPCSearchDistance = 10;
- //при достижении этого кол-ва реагентов, они больше не будут покупаться
- //для Magic Arrow
- NSMaxCount = 1000;
- BPMaxCount = 1000;
- //для Night Sight
- SSMaxCount = 500;
- SAMaxCount = 500;
- //для Cure
- GAMaxCount = 500;
- GSMaxCount = 500;
- procedure initWalker;
- begin
- ClearBadLocationList;
- ClearBadObjectList;
- MoveBetweenTwoCorners := false;
- MoveThroughCorner := false;
- MoveOpenDoor := true;
- MoveThroughNPC := 20;
- end;
- procedure useMeditation;
- begin
- if WarMode = true then SetWarMode(false);
- if (GetMaxMana(self) > GetMana(self)) then useskill('Meditation');
- end;
- Function NextVendor2(Dist:Integer; var X,Y:Integer; var vName:String):Boolean;
- var
- Cur_Vend:Cardinal;
- begin
- Ignore(Self);
- X:=0;
- Y:=0;
- vName:='';
- Result:=false;
- FindDistance:=Dist;
- Cur_Vend:=FindType($0190,Ground);
- Ignore(FindItem);
- if Cur_Vend > 0 then begin
- X:=GetX(Cur_Vend);
- Y:=GetY(Cur_Vend);
- vName:=GetName(Cur_Vend);
- Result:=True;
- end else begin
- Cur_Vend:=FindType($0191,Ground);
- Ignore(FindItem);
- if Cur_Vend > 0 then begin
- X:=GetX(Cur_Vend);
- Y:=GetY(Cur_Vend);
- vName:=GetName(Cur_Vend);
- Result:=True;
- end;
- end;
- end;
- procedure BuyReg;
- var
- vendor_X,vendor_Y:Integer;
- vendor_Name:String;
- buyDelaySec, i: integer;
- begin
- buyDelaySec := 0;
- ClearShopList();
- if (NSCount < NSMaxCount) then
- begin
- AutoBuy(NS, $0000, 200);
- buyDelaySec := buyDelaySec + 1;
- end;
- if (BPCount < BPMaxCount) then
- begin
- AutoBuy(BP, $0000, 200);
- buyDelaySec := buyDelaySec + 1;
- end;
- if (SSCount < SSMaxCount) then
- begin
- AutoBuy(SS, $0000, 200);
- buyDelaySec := buyDelaySec + 1;
- end;
- if (SACount < SAMaxCount) then
- begin
- AutoBuy(SA, $0000, 200);
- buyDelaySec := buyDelaySec + 1;
- end;
- if (GACount < GAMaxCount) then
- begin
- AutoBuy(GA, $0000, 200);
- buyDelaySec := buyDelaySec + 1;
- end;
- if (GSCount < GSMaxCount) then
- begin
- AutoBuy(GS, $0000, 200);
- buyDelaySec := buyDelaySec + 1;
- end;
- SetAutoBuyDelay(buyDelaySec * 1000);
- FindVertical:=100;
- while NextVendor2(NPCSearchDistance,vendor_X,vendor_Y,vendor_Name) do
- begin
- NewMoveXY(vendor_X,vendor_Y,false,2,false);
- UOSay('Bye '+vendor_Name+' Buy guards');
- CheckLag(15000);
- for i:= 0 to buyDelaySec do
- begin
- wait(1000);
- useMeditation;
- end;
- end;
- IgnoreReset;
- ClearShopList();
- AutoBuy(NS, $0000, 0);
- AutoBuy(BP, $0000, 0);
- AutoBuy(SS, $0000, 0);
- AutoBuy(SA, $0000, 0);
- AutoBuy(GA, $0000, 0);
- AutoBuy(GS, $0000, 0);
- end;
- procedure CastMagicArrows;
- var checker: boolean;
- begin
- While (Mana >= 10) and (NSCount > 0) and (BPCount > 0) do
- begin
- WaitTargetObject(self);
- Cast('Magic Arrow');
- CheckLag(15000);
- Wait(1550);
- checker := not checker;
- if (checker = true) then UOSay('guards');
- end;
- end;
- procedure CastNightSight;
- var checker: boolean;
- begin
- While (Mana >= 12) and (SSCount > 0) and (SACount > 0) do
- begin
- WaitTargetObject(self);
- Cast('Night Sight');
- CheckLag(15000);
- Wait(1850);
- checker := not checker;
- if (checker = true) then UOSay('guards');
- end;
- end;
- procedure CastCure;
- var checker: boolean;
- begin
- While (Mana >= 16) and (GACount > 0) and (GSCount > 0) do
- begin
- WaitTargetObject(self);
- Cast('Cure');
- CheckLag(15000);
- Wait(2450);
- checker := not checker;
- if (checker = true) then UOSay('guards');
- end;
- end;
- procedure Meditation;
- begin
- While GetMaxMana(self) > GetMana(self) do
- begin
- useMeditation;
- Wait(1000);
- CheckLag(15000);
- UOSay('guards');
- end;
- end;
- begin
- initWalker;
- repeat
- CastMagicArrows;
- CastNightSight;
- CastCure;
- if ((NSMaxCount > NSCount) or (BPMaxCount > BPCount) or (SSMaxCount > SSCount) or (SAMaxCount > SACount) or (GAMaxCount > GACount) or (GSMaxCount > GSCount)) then
- BuyReg;
- Meditation();
- until GetSkillValue('Magery') > 100
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement