Раз в 5 минут юзает спирит спик, после входа в транс - продолжает качать выбранный скилл.
Когда все скиллы докачаны - качает спирит спик.
Code: Select all
//НЕ ПРОВЕРЯЕТ КОЛИЧЕСТВО ХАВКИ, ЛОЖИТЬ С ЗАПАСОМ !
program All_Skills;
Const
ItID = $0F9E; //предмет для прокачки итемайди   - ножницы
ArLr = $0F51; // предмет для прокачки армлора   - даггер для фенса
TsID = $0C77; //предмет для прокачки тейстайди  - морковка
Food = $09BB;  //тип еды чтоб не умереть от голода - кабан
SpiritTimer = (5.0/(24*60));
worldmessage = 'World is saving now...';
hungrymessage = 'You are starving';
messagetimer = (0.05/(24*60));
var timespirit,ctime : TDateTime;
Procedure CheckState;
  begin 
   if warmode then SetWarMode(false); 
    if InJournalBetweenTimes(worldmessage,now-2*messagetimer,now) > 0 then begin AddToSystemJournal('Сохранение мира. Ждем 60 секунд'); wait(60000); end;
     if InJournalBetweenTimes(hungrymessage,now-messagetimer,now) > 0 then 
      begin wait(500); UseObject(FindType(Food,backpack)); AddToSystemJournal('Перекус. Осталось еды в паке: '+IntToStr(GetQuantity(FindType(Food,backpack)))+' шт'); end; 
  end;
  
Procedure GoTrance;
  begin 
    repeat 
     CheckState; 
      ctime:=now; UseSkill('Spirit Speak'); 
       AddToSystemJournal('Вхожу в транс'); 
        wait(3000); 
    until InJournalBetweenTimes('You establish a connection to the netherworld',ctime,now) > 0;
    timespirit:= now;
  end;
   
Begin
AddToSystemJournal('Еды в паке: '+IntToStr(GetQuantity(FindType(Food,backpack)))+' шт');
  
  while not dead do
  begin
    while (GetSkillValue('Stealth') < 100.0) and (IsDead(self) = false) do
      begin GoTrance;  
       while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do
         begin CheckState; UseSkill('Stealth'); wait(3000); AddToSystemJournal('Учусь скрытно передвигаться'); end;
      end;
      
    while (GetSkillValue('Hiding') < 100.0) and (IsDead(self) = false) do
      begin GoTrance;  
       while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do
         begin CheckState; UseSkill('Hiding'); wait(3000); AddToSystemJournal('Учусь прятаться'); end;
      end;
      
    while (GetSkillValue('Peacemaking') < 100.0) and (IsDead(self) = false) do
      begin GoTrance;  
        while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do 
          begin CheckState; UseSkill('Peacemaking'); wait(3000); AddToSystemJournal('Играю на балалайке'); end;
        end;
    while (GetSkillValue('Anatomy') < 100.0) and (IsDead(self) = false) do
      begin GoTrance;
        while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do 
          begin CheckState; UseSkill('Anatomy'); WaitTargetObject(Self); wait(5000); AddToSystemJournal('Изучаю анатомию'); end;
      end;
      
    while (GetSkillValue('Arms Lore') < 100.0) and (IsDead(self) = false) and (GetQuantity(FindType(ArLr,backpack)) > 0) do 
      begin GoTrance;  
        while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do
          begin CheckState; UseSkill('Arms Lore'); WaitTargetObject(FindType(ArLr,backpack)); wait(5000); AddToSystemJournal('Качаю армслор'); end;
      end;
 
    while (GetSkillValue('Item Identification') < 100.0) and (IsDead(self) = false) and (GetQuantity(FindType(ItID,backpack)) > 0) do
      begin GoTrance;
        while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do
          begin CheckState; UseSkill('Item Identification'); WaitTargetObject(FindType(ItID,backpack)); wait(5000); AddToSystemJournal('Исследую предмет'); end;
      end;
    while (GetSkillValue('Taste Identification') < 100.0) and (IsDead(self) = false) and (GetQuantity(FindType(TsID,backpack)) > 0) do
      begin GoTrance;
        while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do
          begin CheckState; UseSkill('Taste Identification'); WaitTargetObject(FindType(TsID,backpack)); wait(5000); AddToSystemJournal('Качаю тейстайди'); end;
      end;
      
    while (GetSkillValue('Tracking') < 100.0) and (IsDead(self) = false) do
      begin GoTrance;
        while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do
          begin CheckState; CancelMenu; UseSkill('Tracking'); AutoMenu('Track','Anything'); wait(1500); AddToSystemJournal('Выслеживаю цель'); end;
      end;
      
    while (GetSkillValue('Spirit Speak') < 100.0) and (IsDead(self) = false) do 
      begin GoTrance; 
       while (IsDead(self) = false) and (timespirit+SpiritTimer > now) do wait(5000);
      end;      
                           
  end;
    
End.Если обнаружите косяки - пожалуйста сообщайте, я только учусь
