Версия 1.1
Code: Select all
Program AlchemyDRW; 
// (c) v26RuS (Galiano{ASTARTA} DRW) v1.1
{$Include 'all.inc'}
var
 STime: TDateTime;
 q: integer;
 AlchemyFlag : Boolean;  
const 
WhatYouDo = 'Total Mana'; // Что делаем
TypBottles = $0F0E;  // Тип пустых бутылок
TypPotion = $0F0A;   // Тип готовых бутылок
ColPotion = $0F0A;   // Цвет готовых бутылок
TypReag= $0F87;  // Тип реагентов из которых делаем
CountRegs = 10; // Какое количество реагентов брать
CountBottles = 5; // Какое количество пустых бутылок брать
Sunduk_reags_bottels = $40053D27; // ИД сундука с которого берем бутылки и реагенты
Sunduk_craft = $40053D27;  // ИД сундука в который кладем готовый продукт
procedure check_reag; 
 begin 
  FindType(TypReag,Backpack); 
  if (FindCount=0) OR (Count(TypReag)<10) then 
    begin 
      UseObject(Sunduk_reags_bottels); 
      wait(250); 
      FindType(TypReag,Sunduk_reags_bottels); 
      if (FindCount>0) and (CountEx(TypReag,$0000,Sunduk_reags_bottels)>100) then 
        begin 
          MoveItem(FindItem,CountRegs,Backpack,0,0,0); 
          wait(250); 
          AddToSystemJournal('Добрали '+IntToStr(CountRegs)+' реагентов. На данный момент имеем '+IntToStr(Count(TypReag))+' штук. Осталось ещё '+IntToStr(CountEx(TypReag,$0000,Sunduk_reags_bottels))+' реагентов.'); 
        end 
      else 
        AddToSystemJournal('Ошибка во время добора реагентов.'); 
	AlchemyFlag := false;
    end 
 end; 
procedure check_bootle; 
 begin 
  FindTypeEx(TypBottles,$0000,Backpack,false); 
  if (FindCount=0) OR (Count(TypBottles)<10) then 
    begin 
      UseObject(Sunduk_reags_bottels); 
      wait(250); 
      FindTypeEX(TypBottles,$0000,Sunduk_reags_bottels,false); 
      if (FindCount>0) and (CountEx(TypBottles,$0000,Sunduk_reags_bottels)>100) then 
        begin 
          MoveItem(FindItem,CountBottles,Backpack,0,0,0); 
          wait(250); 
          AddToSystemJournal('Добрали '+IntToStr(CountBottles)+' бутылок. На данный момент имеем '+IntToStr(CountEx(TypBottles,$0000,backpack))+' штук. Осталось ещё '+IntToStr(CountEx(TypBottles,$0000,Sunduk_reags_bottels))+' бутылок.'); 
        end 
      else 
        AddToSystemJournal('Ошибка во время добора реагентов.'); 
	AlchemyFlag := false;
    end 
 end; 
procedure craft_bottle; 
 begin 
      FindTypeEx(TypPotion,ColPotion,Backpack,false); 
      if (FindCount>0) AND (CountEx(TypPotion,ColPotion,backpack) > 9) then 
        begin 
          MoveItem(FindItem,1,Sunduk_craft,0,0,0); 
          wait(800); 
      end; 
 end; 
Begin
AlchemyFlag := true;
CancelMenu;
wait(500)
Automenu('What',WhatYouDo);
repeat
check_reag;
check_bootle;
UseObject(FindType(TypReag,Backpack))
Wait(500);
STime := Now;
	repeat
	wait(500)
	q := q+1;
	checksave;
	until (InJournalBetweenTimes('You put', STime, Now)<>-1) or (InJournalBetweenTimes('You toss', STime, Now)<>-1) or (AlchemyFlag = false) or (q > 300);
craft_bottle;
until (AlchemyFlag = false) or Dead;
FullDisconnect;
End.


 
 
