Путь Вора/Пландера

Умные люди стремятся владеть информацией, мудрые - результатом её обработки!

В данном разделе находятся ответы на часто задаваемые вопросы и иная наиболее важная информация нашего шарда
  • Автор
  • Сообщение
Не в сети
Novice
Novice
Сообщения: 34
Зарегистрирован: 04 сен 2021, 15:27
Репутация: 3
Откуда: Одесса

Путь Вора/Пландера

Сообщение TheRush »

Detecting Hidden

Детект качаем до 100 на обычных трапленных сумках от мага 5-6й лвл - это для вора чистого
Для Пландера - этот скилл не доступен пока вы не выполните условия классового вора

после 100 , качаем до 150 на трапленных шкатулках от кравта тинкером , болты

Код: Выделить всё

program Detect;
var t:Integer;

{$Include 'all.inc'}

Begin
SetARStatus(true);
Hungry(1,ground);
while not dead do
begin
if connected then
begin
for t:= 0 to 30 do
begin
CheckSave;
UseSkill('Detect Hidden');
Wait(11000);
end;
CheckSave;
Hungry(1,ground);
end;
end;
End.

Hiding

просто встаем в хайд - ничего сверх естественного

Код: Выделить всё

program Hiding;
var t:Integer;

{$Include 'all.inc'}

Begin
SetARStatus(true);
Hungry(1,ground);
while not dead do
begin
if connected then
begin
for t:= 0 to 30 do
begin
CheckSave;
UseSkill('Hiding');
Wait(10000);
end;
CheckSave;
Hungry(1,ground);
end;
end;
End.
Stealth
тут лучше качать только стелс когда у вас уже есть 130-140 хайда , потому что профитнее если вы будете качать только один скилл или хайд или стелс

Код: Выделить всё

program Stealth;

var
t: integer;

{$Include 'all.inc'}

begin
  SetARStatus(True);
  Hungry(1, -1);
  while not Dead do
  begin
    if connected then
    begin
      for t := 0 to 10 do
      begin
        while not hidden do
        begin
          UseSkill('Hiding');
          wait(11000);
        end;
        UseSkill('Stealth');
        wait(11000);
      end;
      Hungry(1, -1);
    end;
  end;
end.
Lockpicking

в данном скилле нам понадобится помощ Кравта , накравтить нам шкатулки от 30-150 или выше (если у вас имеются плюса на локпикинг и тинкеринг )
для профитного роста скилла - Локпикинг Вора должен быть ниже на 5-10 скиллов - тоесть , у нашего вора 110 Локпикинга - , значить берем шкатулку равную 115-120 шкатулке сделанной тинкерингом
кравтим шкатулки при 30 , 40 , 50 , 60 , 70 , 80 , 90 , 100 , 110 , 120 , 130 , 140 , 150 и так далее равному скиллу тинкеринг кравта

Код: Выделить всё

program asd; 
var 
PouchID : cardinal; 
KeyID : cardinal; 
a,b,c : integer; 
stime : tdatetime; 

{$Include 'all.inc'} 

begin 
setarstatus(true); 
{-----------------------------------------} 
PouchID := $4D8E302A; 
KeyID := $7387E7FC; 
{-----------------------------------------} 
hungry(1,ground); 
while true do 
begin 
checksave; 
waitconnection(5000); 
findtype($14FB,ground); 
if findfullquantity > 5 then 
begin 
 if targetpresent then canceltarget; 
 waittargetobject(PouchID); 
 useobject(finditem); 
 stime := now; 
 repeat 
 wait(500); 
 waitconnection(5000); 
 checksave; 
 a := injournalbetweentimes('fail',stime,now); 
 b := injournalbetweentimes('Unlocked|not locked',stime,now); 
 until (a >= 0) or (b >= 0) or (now > stime + (0.5/1440)); 
 if (b >= 0) then 
  begin 
  stime := now; 
  if targetpresent then canceltarget; 
  waittargetobject(PouchID); 
  useobject(KeyID); 
   repeat 
   checksave; 
   wait(500); 
   waitconnection(5000); 
   a := injournalbetweentimes('lock',stime,now); 
   until (a >= 0) or (now > stime + (0.5/1440)); 
  end; 
 end 
 else begin wait(40000); uosay('.online'); end; 
 c := c + 1; 
 if c > 30 then 
 begin 
 c := 0; 
 hungry(1,ground); 
 end; 
end; 
end.
Remove Trap

качается в паре с Кравтом (Тинкеринг ) исрользуем ловушки с Болтами (для арбалета) , Ремув трап вора для профитного роста скилла - должен быть ниже на 5-10 скиллов - чем тинкеринг кравта ( напарника )
снимаем ловушку качаем Ремув Трап
в скрипте используется Тип шкатулки , в радиусе не должно быть лишних шкатулок
Инструменты/болты/металл под себя в радиусе 2ух клеток , в скрипте используются Тотэмы (Тотэмов тоже ставить в радиусе досягаемости - что бы мог хилить) , в место лечущих воинов
Крафт

Код: Выделить всё

Program Trap;
var
i:Integer;
a: Integer;
b: Integer;
cyndyk:  cardinal;
stime:TDatetime;

{$Include 'all.inc'}

procedure Trap;
begin
  If TargetPresent then CancelTarget;
  CheckSave;
  If GetQuantity(FindType($1BFB,backpack))>0 then
  begin
    Finddistance:=2;
    CheckSave;
    WaitGump('4402');
    waittargetobject(findtype($1BF2,ground));
    waitconnection(1000);
    If (FindCount=0) and Connected then
    begin
      FullDisconnect;
    end;
    useobject(findtype($1EB9,ground));
    stime := Now;
    repeat
      waitconnection(1000);
      CheckSave;
      a := InJournalBetweenTimes('select the', stime, Now);
      b := InJournalBetweenTimes('I am already|You must wait|canceled|You can"t|failed|You fail', stime, Now);
      wait(100);
    until (a >= 0) or (b >= 0) or (Now > stime + (1.0/1440));
    if (b > 0) then
    begin
    waitconnection(500); 
    if(hp < 110) then begin 
    uosay('heal');                
    end; 
      CheckSave;
      wait(1020);
      trap;
    end;
    CheckSave;
    waittargetobject(findtype(cyndyk,ground));
    stime := Now;
    repeat
      waitconnection(500);
      CheckSave;
      a := InJournalBetweenTimes('The carefully|That chest', stime, Now);
      b := InJournalBetweenTimes('I am already|You must wait|canceled|You can"t|You fail', stime, Now);
      wait(500);
    until (a >= 0) or (b >= 0) or (Now > stime + (1.0/1440));
    if (b > 0) then
    begin
    waitconnection(500); 
    if(hp < 110) then begin 
    uosay('heal');                
    end; 
      CheckSave;
      wait(1020);
      trap;
    end;
  end
  else
  begin
    findtype($1BFB,ground);
    If (FindCount=0) and Connected then
    begin
      FullDisconnect;
    end;
    grab(finditem,500);
  end
end;

Begin
  {==========================}
  cyndyk:=$09AA;      {wooden chest}
  {==========================}
  SetARStatus(true);
  waitconnection(3000);
  Finddistance:=2;
  ClearJournal;
  Hungry(1,ground);
  UOSay ('Trap!');
  while not dead do
  begin
    for i:=1 to 8 do
    begin
      If Connected then
      begin
        trap;
        CheckSave;
        UOSay ('Trap!');
        stime:=Now;
        repeat
          waitconnection(3000);
          CheckSave;
          InJournalBetweenTimes('Untrap!', stime, Now);
          wait(500);
        until (LineCount >= 1) or (Now > stime + (0.5/1440));
      end;
    end;
    If Connected then
    Hungry(1,ground);
  end;
End.
Вор

Код: Выделить всё

Program RemoveTrap;
var
i: Integer;
a: Integer;
b: Integer;
cyndyk:  cardinal;
stime: TDatetime;

{$Include 'all.inc'}

procedure remove;
begin
  waitconnection(3000);
  CheckTargetError(2,10000);
  waittargetobject(findtype(cyndyk,ground));
  useskill('Remove Trap');
  stime:=Now;
  repeat
    waitconnection(3000);
    CheckSave;
    a := InJournalBetweenTimes('You sucessfully|That may|You set off', stime, Now);
    b:= InJournalBetweenTimes('You failed|You narrowly|I am already|You must wait', stime, Now);
  until (a >= 0) or (b >= 0) or (Now > stime + (1.0/1440));
if (b > 0) then 
  begin 
    waitconnection(3000); 
    if(hp < 90) then begin 
       uosay('heal');                
    end; 
    CheckSave; 
    wait(10000); 
    remove; 
  end;
end;

Begin
  {==========================}
  cyndyk:=$09AA; {wooden chest}
  {==========================}
  Finddistance:=1;
  SetARStatus(true);
  Hungry(1,ground);
  UOSay ('Untrap!');
  while not dead do
  begin
    for i:=1 to 10 do
    begin
      If Connected then begin
        CheckSave;
        remove;
        CheckSave;
        wait(1000);
        UOSay ('Untrap!');
        stime:=Now;
        repeat
          waitconnection(3000);
          CheckSave;
          InJournalBetweenTimes('Trap!', stime, Now);
          wait(3000);
        until (LineCount >= 1) or (Now > stime + (0.5/1440));
      end;
    end;
    If Connected then Hungry(1,ground);
  end;
End.
Stealing

данный скил влияет на то - сколько веса вы можете своровать у жертвы ( тут еще влияет СТР )
Чем больше мы на вора наденем СТР тем больше веса будет воровать
Жертву выбираем с наименьшим показателем дексы - но с наибольшим показателем СТР - что бы жертва могла как можно больше веса взять в свой пак - для прокачки
И так - идеально что бы жертва с 10 дексы - но в плюсах на СТР брала как можно больше сырых Фиш Стейков , что бы вор мог как можно больше своровать

Жертва

Код: Выделить всё

Program StealingPartner;
var
j, SSize, fCount, MaxItem : integer;
Const
ItemType = $097A; // Рыбные котлеты


{$Include 'all.inc'}

Begin
FindDistance := 2; // Радиус поиска
WaitConnection(3000); // Ожидаем соединения
CheckSave;              // Проверка на сохранение мира
SetARStatus(true); // Включаем реконектор
Stack($097A, $0000);
SSize := 1150; // Количество в кучке
MaxItem := 1; // Количество кучек


while not dead do       // Пока жив
begin
if Connected then
Begin
Hungry(1,Ground);  // Поедим
CheckSave;              // Проверка на сохранение мира
FindType(ItemType,backpack); // Поищем стейки в паке
fCount := FindCount;
if fCount < MaxItem then
Begin
fCount := MaxItem - fCount;
for j := 1 to fCount do  // Добросим в пак до MaxItem стопок
Begin
 MoveItem (FindType(ItemType,ground), SSize, backpack, j*40,0,0);
 Wait(4000);
End;
End;
wait(4000);
end
else wait(30000);  // Подождем конекта
end;
AddToSystemJournal('I am dead');  // Запишем  в журнал, что умерли
Disconnect;    // Если умерли - то завершаем работу
End.
Вор

Код: Выделить всё

program stiling;
var c: integer;
stime : TDateTime;
Const
victim = $00398F22; // ID жертвы
item = $097A; // Итем того что воруем
{$Include 'all.inc'}

Begin
CheckSave;
SetARStatus(true);
Waitconnection(3000);
While not dead do
begin
for c:= 0 to 5 do
begin
CheckSave;
WaitTargetObject(victim);
UseSkill('Stealing');
WaitJournalLine(Now,'opened|fail|need to stay close|cannot be stolen|perform|noticed',10000);
WaitTargetObject(findtype(item,lastcontainer));
UseSkill('Stealing');
WaitJournalLine(Now,'cannot be stolen|successfully stolen|perform|noticed',10000);
findtype(item,backpack);
if findfullquantity > 0 then stack(item,$0000);
wait(1000);
NewMoveXY(2214,794,True,0,True);;// координаты за 3 клетки от жертвы
wait(1000);
NewMoveXY(2217,794,True,0,True);;// координаты возле жертвы
wait(4000);
end;
Hungry(1,ground);
end
End.
Snooping

Данный скил отвечает за то , что - можем ли мы заглянуть в пак жертве , просто заглянуть
У вора всегда Декса + снупинг должно быть на 10 больше - чем Снупинг+Декса жертвы
Можно надеть вора в минус дексу , а жертву в пдюс дексу

Вор

Код: Выделить всё

// отдельным потоком можно запустить музицирование для накачки дексы и инты
// заглядывание в карманы, цель должна стоять на расстоянии 1 от рабочей точки
// должен быть свободный проход длиной в три клетки на юг от рабочей точки
// еда в пределах доступности из рабочей точки
// Снупинг+декса вора < снупинг+декса цели+10 = 100% фейл снупинга.
// Снупинг+декса вора >= снупинг+декса цели+10 = 100% успех снупинга, но кач идёт.
// Снупинг+декса вора = снупинг+декса цели+31 = навык уже не качается.
// минус дексы от плейта работает, по крайней мере на неклассовом воре...
Program Snooping_v_0_02;
{$Include 'all.inc'}

Const
Maneken		= $001EF73F;	// ID цели
WorkX		= 2224;		// X координата рабочей точки
WorkY		= 787;		// Y координата рабочей точки

Var
Eat : TDateTime;		// таймер еды

Begin
Eat := Now;
CheckStability;
Wait(3000);
MoveXY(WorkX, WorkY, True, 0, True);
Hungry(1,-1);
Wait(500);
While True Do Begin // скрипт не будет выключаться при разрыве связи или смерти перса
While Connected AND Not Dead Do // при разрыве связи или смерти перса скрипт ставится на паузу
	Begin
	If TargetPresent Then CancelTarget;
	WaitTargetObject(Maneken);
	UseSkill('Stealing');
	WaitJournalLine(Now, 'backpack opened', 10000);
	MoveXY(WorkX -3 , WorkY , True, 0, True);
	Wait(3000);
	MoveXY(WorkX, WorkY, True, 0, True);
	If Now > (Eat + 7.0/1440)  Then
		Begin
		Hungry(1,-1);
		Eat := Now;
		Wait(500);
		End;
	End;
End;
End.
Жертва

просто режет труп и кушает

Код: Выделить всё

program CutCorpse;

{$Include 'all.inc'}

begin
  while True do
  begin
    waitconnection(2000);
    Hungry(1, ground);
    if findtype($2006, ground) > 0 then
    begin
    	WaitTargetObject(finditem);
      usetype($0F51, $ffff);
    end;
    wait(10000);
  end;
end.
Poisoning

Относительно сложный скилл , тут понадобится маги - те кто вам будут варить Яд , уровень скилла и мага влияет на все - в табличке приведен пример , кем варить , при каком скилле алхимии
Настраиваем желательно дагер нюбайный в паке , отравляем его и тд.... , тем самым прокачиваем пойзан , ставим воина что бы вас хилил

Poisoning

Код: Выделить всё

Program Poisoning;
var 
syndyk1,syndyk2,orywie :cardinal;
me : TDateTime;
e,o,b,t,m,q,w,h : Integer;

{$Include 'all.inc'}

{Function HealSelf() : boolean;
Var bandage : Cardinal;
Begin
bandage := FindType($0E21,ground); // Ищем бинты
if (bandage > 0) and Connected and (Life < Str) then
Begin
 if TargetPresent then CancelTarget; 
 WaitTargetSelf;
 UseObject(bandage); 
 WaitJournalline(Now,'successfully|completely|full|could',30000);
 Wait( 4000 );
end;
Result := false;
end;}


Begin
SetARStatus(true);
Hungry(1,ground); 

{=Требуется настройка ! ! !=}
syndyk1 := $58CF9F75; {Указать ID сундука с полными кегами}
syndyk2 := $50301792; {Указать ID сундука с пустыми кегами}
orywie := $5B741DB9; {Указать ID какого либо оружия, которое находится у себя в сумке, например даггер}
{=Требуется настройка ! ! !=}

while not Dead do 
       begin
 waitconnection(3000);
 Hungry(1,ground);
 for t:=1 to 100 do 
 begin
  if (not dead) and (connected) then 
  begin
   CheckSave;
   FindType($1940,backpack);
   if FindCount <= 0 then 
   begin
    if (GetDistance(syndyk1)> 2) or (GetDistance(syndyk1)< 0) then 
    begin
     AddToSystemJournal('Your chest #1 far lays or does not exist! Disconnecting...');
     disconnect;
    end;

    useobject(syndyk1); 
    wait(3000);
    FindType($1940,syndyk1);

    if (FindCount <= 0) and (connected) then 
    begin
     AddToSystemJournal('Your chest is empty! Disconnecting...');
     disconnect;
    end;
 
    if FindCount > 0 then 
    begin
     Grab(finditem,0);
     q := 1;
     repeat {ждать пока в паке найдеться кег или пройдет 10000 сек}
      wait(500);
      q := q + 1;
     until (findtype($1940,backpack) > 0) or (q > 20)
    end;
   end;
   me := Now;
   wait(500);
   UseObject(finditem);
   //me := Now;
   h := 1;
   repeat 
    e := InJournalBetweenTimes('That keg is empty.', me, Now); 
    if (e >= 0) then
    begin
     wait(3000);
     me := Now;
     CheckSave;
     if (GetDistance(syndyk2)> 2) or (GetDistance(syndyk2)< 0) then
     begin
      AddToSystemJournal('Your chest #2 far lays or does not exist! Disconnecting...');
      disconnect;
     end;
   
     FindType($1940,backpack);
     if FindCount > 0 then 
      MoveItem(finditem,0,syndyk2,0,0,0);
 
     CheckSave;
   
     if (GetDistance(syndyk1)> 2) or (GetDistance(syndyk1)< 0) then 
     begin
      AddToSystemJournal('Your chest #1 far lays or does not exist! Disconnecting...');
      disconnect;
     end;

     useobject(syndyk1); 
     wait(3000);
     FindType($1940,syndyk1);

     if (FindCount <= 0) and (connected) then 
     begin
      AddToSystemJournal('Your chest is empty! Disconnecting...');
      disconnect;
     end;

     if FindCount > 0 then 
     begin
      Grab(finditem,0);
      m := 1;
      repeat {ждать пока в паке найдеться кег или пройдет 10000 сек}
       wait(500);
       m := m + 1;
      until (findtype($1940,backpack) > 0) or (m > 20)

      UOSay('The new keg is taken!');
     end;
    end;

    w := InJournalBetweenTimes('The new keg', me, Now);
    b := InJournalBetweenTimes('You fill a bottle', me, Now); 
    o := InJournalBetweenTimes('You are out', me, Now); 
    wait(200); 
    h := h +1;
   until (h > 250) or (b >= 0) or (o >= 0) or (w >= 0);

   {Часть с пойзоном}
   FindType($0F0A,backpack);    // Ищем бутылку с ядом
   if FindCount > 0 then     // если нашли
   begin
    checksave;
    if targetpresent then canceltarget;  // Если есть таргет курсор - отменяем его
    useskill('Poisoning');    // Используем скилл пойзонинг
    waitfortarget(5000);    // ждем появления курсора

    if targetpresent then    // Если он есть
    begin
     TargetToObject(finditem);  // щелкаем по найденой бутылке
     Wait(1000);

     waitfortarget(5000);   // ждем появления курсора
     if targetpresent then targettoobject(Orywie); // щелкаем по оружию

     waitjournalline(Now,'You fail to apply|You have successfully|You fail and poison',15000);
     wait(8000);
     while Life < Str do
     Begin
//      HealSelf();
//       UOSay('Heal');
//       wait(10000);
     End;
    end;
   end;
  end;
 end;
end;
End.

Код: Выделить всё

4лвл маг 120 алхимии

lesser poison  -   3  =   22,5 пойзона
poison         -   6  =   45   пойзона
greater poison -   9  =   67,5 пойзона
deadly poison   - 12  =   90   пойзона
 

4лвл маг 150 алхимии

lesser poison  -   3  =   22,5 пойзона
poison         -   7  =   52,5 пойзона
greater poison -  10  =   75   пойзона
deadly poison   - 14  =   105  пойзона 


5лвл маг 135 алхимии

lesser poison  -  4  =   30   пойзона
poison         -  8  =   60   пойзона
greater poison -  12 =   90   пойзона
deadly poison   - 16 =   120  пойзона


5лвл маг 150 алхимии

lesser poison  -  4  =   30   пойзона
poison         -  9  =   67,5 пойзона
greater poison -  13 =   97,5 пойзона
deadly poison   - 18 =   135  пойзона 


6лвл маг 150 алхимии

lesser poison  -   5  =   37,5 пойзона
poison         -  10 =   75   пойзона
greater poison -  15 =   112  пойзона
deadly poison   - 20 =   150  пойзона
Пландер
может качать все выше упомянутого - кроме Пойзонинга и Детект Хайда , пока не станет классовым Пландером (1 лвл вор)
Когда детектит - получает ловушку на себя , а когда качает пойзан - ломает бутылки и все время фэйлит
Последний раз редактировалось TheRush 11 окт 2023, 16:11, всего редактировалось 5 раз.

Не в сети
Аватара пользователя
Apprentice
Apprentice
Сообщения: 54
Зарегистрирован: 18 фев 2021, 13:10
Репутация: 0
Откуда: ODS

Re: Путь Вора/Пландера

Сообщение Nightwolf »

Спасибо. Попробую выкачать ворика по твоему мануалу ;)

Не в сети
Neophyte
Сообщения: 2
Зарегистрирован: 18 мар 2023, 11:40
Репутация: 0

Re: Путь Вора/Пландера

Сообщение ochep »

Remove Trap

качается в паре с Кравтом (Тинкеринг ) исрользуем ловушки с Болтами (для арбалета) , Ремув трап вора для профитного роста скилла - должен быть ниже на 5-10 скиллов - чем тинкеринг кравта ( напарника )
снимаем ловушку качаем Ремув Трап
поставил 2 пары.




Пара вор (1) 104,9 (на момент написания+сколько прибавилось за засекаемое время) (+3,2), крафт (5) 137.4 (+1.4)

Пара вор (2) 101.7+шмот 3= 104,7 (+1,2) , крафт (5) 116-шмот 1= 116 (+2,0)


Это кач за Одно и тоже время Около 12 часов ...

Пары стоят одновременно.


поэтому утверждение что Крафт нужен +5+10 спорное

Не в сети
Аватара пользователя
Novice
Novice
Сообщения: 29
Зарегистрирован: 28 фев 2021, 13:48
Репутация: 0
Откуда: Київ

Re: Путь Вора/Пландера

Сообщение giga »

ochep писал(а): 10 фев 2024, 20:02
Remove Trap

качается в паре с Кравтом (Тинкеринг ) исрользуем ловушки с Болтами (для арбалета) , Ремув трап вора для профитного роста скилла - должен быть ниже на 5-10 скиллов - чем тинкеринг кравта ( напарника )
снимаем ловушку качаем Ремув Трап
поставил 2 пары.




Пара вор (1) 104,9 (на момент написания+сколько прибавилось за засекаемое время) (+3,2), крафт (5) 137.4 (+1.4)

Пара вор (2) 101.7+шмот 3= 104,7 (+1,2) , крафт (5) 116-шмот 1= 116 (+2,0)


Это кач за Одно и тоже время Около 12 часов ...

Пары стоят одновременно.


поэтому утверждение что Крафт нужен +5+10 спорное
Это утверждение было актуально давно. Сейчас ремув растет лучше, если у крафта тинкер на 40, а то и более пунктов больше чем ремув у вора.
Более того ремув это страшная тагомотина. Нужно запастись терпением, чтобы его выкачать.
_________________
На початку шляху впевнись, що зможеш повернутись додому.

Не в сети
Neophyte
Сообщения: 6
Зарегистрирован: 03 июл 2022, 06:14
Репутация: 1

Re: Путь Вора/Пландера

Сообщение Noble »

Разрешите чутка вмешаться в начало кача на Разминировании до сотки. Это там где вкачать чутка магии и самому вешать трапы, чтобы разминировать... Вкачали магию, но затарка огромным количеством реагентов, или слежение за вором каждые полтора часа для перезарядки реагентов (а их три вида) долговато. Заранее извиняюсь, но я чутка додедал полезностей -
Книжка в Бекпак, Хавку, реагенты, и КАМЕНЬ ЭЛЕМЕНТАЛЯ!!! под ноги. (прописываем Вид Ядра элементаля для зарядки магией, прописываем сундук, который будем вешать на меджик трап, и разминировать)
Что получится по итогу : поднимает по 15 реагентов, ЕСТ с пола, вешает трап, разминирует, повторяет пока есть магия. Когда магии меньше 10 - медитирует от камня элементаля.

Код: Выделить всё

Program Inscript;
var
Eat : TDateTime;        // таймер еды
CastTi : TDateTime;        // таймер заклинани¤
RemTi : TDateTime;        // таймер навыка
Trapped : Boolean;        // есть ли ловушка на контейнере
i : Integer;
t: Integer;
regs : Array[1..3] of word;
stime :TDateTime;

Const
CurCont        = $4522E6F5;    // ID контейнера на котором тренируемс¤, pounch подойдЄт
{$Include 'all.inc'}




procedure checkregs;
begin
If Connected then begin
for i:= 1 to 3 do
begin
Findtype (regs[i],backpack);
If (FindCount=0) then begin
Findtype(regs[i],ground);
If (FindCount>0) then begin Grab(finditem,15);end
else AddToSystemJournal('Dai Regov!!!');
end;
end;
end;
end;


Begin
CancelMenu;
SetARStatus(true);
regs[1]:=$0F8C; // Sulphorous Ash
regs[2]:=$0F84;      {Garlic}
regs[3]:=$0F8D;  {Spiders Silk}
FindDistance:=3;
While not Dead do
begin
Hungry(1,Ground);
wait(200);
waitconnection(3000);
If Connected then begin
For t:= 1 to 5 do begin
checkregs;
//CheckBlanks;
wait(200);
stime:=Now;
CancelMenu
Begin
SetARStatus(true);
Wait(5000);
//CheckStability;
Eat := Now;
Trapped := False;
While Connected AND Not Dead Do Begin // в случае обрыва св¤зи или смерти персонажа скрипт отключаетс¤
    While Mana < 10 Do // если вдруг мало маны - стоим ждЄм восполнени¤
        Begin  
        useobject(findtype($1869,Ground));  // Use Elemental Core  (УКАЗАТЬ ВИД!!!!!)
        Wait(10000);
        If Dead Then Break;
        End;
    Repeat // вешаем ловушку
    If (GACount = 0) OR (SSCount = 0) OR (SACount = 0) Then // если реагенты закончились - выключаем скрипт
        Begin
        AddToSystemJournal('Reload Regs');
        checkregs;
        End;
    CastTi := Now;
    If TargetPresent Then CancelTarget;
    WaitTargetObject(CurCont);
    Cast('Magic Trap');
        WaitJournalLine(Now, 'have enough|spell fizzles|That is already trapped', 4000);
    Trapped := True; // при 45 магии, если заклинание успешно - ловушка по¤витс¤ и персонаж не станет серым
    If InJournalBetweenTimes('spell fizzles', CastTi, Now) >= 0 Then Trapped := False; // если заклинание провалилось - ловушки нет
    Wait(500);
    If Dead Then Break;
    Until Trapped; // ловушка есть
    // теперь обезвреживаем
    Repeat
    If Dead Then Break;
    RemTi := Now;
    If TargetPresent Then CancelTarget;
    WaitTargetObject(CurCont);
    UseSkill('Remove Trap');
        WaitJournalLine(Now, 'That may not be trapped|You narrowly avoid|You failed to disarm|You sucessfully disarmed', 1000);
    If InJournalBetweenTimes('You narrowly avoid|You failed to disarm', RemTi, Now) >= 0 Then Wait(11500);
    If InJournalBetweenTimes('That may not be trapped|You sucessfully disarmed', RemTi, Now) >= 0 Then
        Begin
        Trapped := False; // ловушки нет
        Wait(7500);
        End;
    Until Not Trapped; // ловушка сн¤та
    // иногда кушаем
    If Now > (Eat + 7.0/1440) Then
        Begin
        Hungry(1,-1);
        Wait(500);
        Eat := Now;
        End;
End;
End;
End;
End;
End;
End.