Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Прокачка Tinkering, шард ДРВ

Only working scripts
Post Reply
Kynep
Neophyte
Neophyte
Posts: 40
Joined: 29.05.2008 6:41

Прокачка Tinkering, шард ДРВ

Post by Kynep »

Всем привет, еще один скрипт, на этот раз Тинкер.
Изготавливаем Clock Parts.
Эта деталь изготавливается с 30.5 Тинкера! Если у вас меньше, докупите или качайте на gears.
Скрипт переделать, дело пяти минут.

Удачи!

Файл my_func.inc необходимо скачать отсюда http://coop.myftp.org/files/UO/Stealth/my_func.inc и положить в папку Include.

Без него скрипт работать не будет!!!

Code: Select all

program Tinkering_Parts;
//©Kynep

{$Include 'my_func.inc'}

 const
   Sunduk_ID = $4040DCA6;    //ID Основной сундук, с едой и рюкзаком
   ResPack_ID = $4040DCA6;   //ID Рюкзак в сундуке c металлом, инструментом и пустым мешком

   tIzdPack = $0E76;         //Тип мешка для готовых изделий, лежит в паке с железом
   
   IsSpirit = 1;             //Качем спирит

   Skill_Val = 110;          //Максимальное значение скилла,
                             //Если больше 100, то работает безконечно.

   food = $09BB;             //Тип еды

   nItemName = 'clock parts';      //Имя предмета, последний пункт в меню

   tTinkTools = $1EBC;       //Тип инструмента
   tIzdelie = $104F;         //Тип готового изделия
   tIng = $1BEF;             //Тип слитка железа

   IngKolvo = 200;           //Сколько берем железа
   Min_kolvo = 10;           //Нижний порог железа

   Make_Kolvo = 10;          //Сколько делать за раз
   Drop_KolVo = 50;          //Кол-во изделий, после которого начинаем выбрасывать

 var
   IzdPack_ID: cardinal;
   TTools_ID: cardinal;
   bool_exit: boolean;
   a: integer;

procedure Init_Menu;
 begin
   CancelMenu;
   automenu('Tinkering','Parts');
   automenu('Parts',nItemName);
 end;

function Drop_Grab_Iron(to_drop: integer; to_grab: integer): boolean;
 var
   id1: cardinal;
   id_cnt, id_grb: integer;

 begin
   AddToSystemJournal('*Проверка железа*');
   Wait(100);
   id1 := FindType(TIng, Backpack);
   id_cnt := GetQuantity(id1);
   wait(100);
   if (id1 <> 0) AND (id_cnt > to_drop) then
     begin
       AddToSystemJournal('*В рюкзаке ' +inttostr(id_cnt)+ ' железа*');
       result := true;
     end;
   if (id1 <> 0) AND (id_cnt = to_drop) then
     begin
       AddToSystemJournal('*В рюкзаке ' +inttostr(id_cnt)+ ' железа*');
       result := true;
     end;
   if (id1 <> 0) AND (id_cnt < to_drop) then
     begin
       id_cnt := GetQuantity(id1);       
       AddToSystemJournal('*В рюкзаке ' +inttostr(id_cnt)+ ' железа, маловато, беру из сундука*');
       Wait(100);
       CheckLag;
       MoveItem(id1, id_cnt, ResPack_ID, 0,0,0);
       wait(500);
       id1 := FindType(tIng, ResPack_ID);
       wait(100);
       id_cnt := GetQuantity(id1);
       if (id_cnt > to_drop) AND (id_cnt > to_grab) then
         begin
           id_grb := to_grab;
         end;
       if (id_cnt > to_drop) AND (id_cnt < to_grab) then
         begin
           id_grb := id_cnt;
         end;
       if (id_cnt < to_drop) then
         begin
           AddToSystemJournal('--->!!!*В сундуке мало железа*!!!');
           AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
           result := false;
           exit;
         end;       
       AddToSystemJournal('*В сундуке ' +inttostr(id_cnt)+ ' железа, беру ' +inttostr(id_grb)+ ' штук*');
       wait(100);
       if Grab(tIng, id_grb, ResPack_ID, Min_kolvo) = true then
         begin
           AddToSystemJournal('*Добрал ' + inttostr(to_grab) + ' железа*');
           wait(100);
           result := true;
         end
       else
         begin
           AddToSystemJournal('--->!!!*В сундуке закончилось железо*!!!');
           AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
           result := false;
           exit;
         end;
     end;
   if (id1 < 0) OR (id1 = 0) then
     begin
       AddToSystemJournal('*В рюкзаке железа нет, ищу в сундуке*');
       wait(100);
       id1 := FindType(tIng, ResPack_ID);
       id_cnt := GetQuantity(id1);
       if (id1 <> 0) AND (id_cnt > to_drop) then
         begin
           id_cnt := GetQuantity(id1);
           if (id_cnt > to_drop) AND (id_cnt > to_grab) then
             begin
               id_grb := to_grab;
             end;
           if (id_cnt > to_drop) AND (id_cnt < to_grab) then
             begin
               id_grb := id_cnt;
             end;
           if (id_cnt < to_drop) then
             begin
               AddToSystemJournal('--->!!!*В сундуке мало железа*!!!');
               AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
               result := false;
               exit;
             end;       
           AddToSystemJournal('*В сундуке ' +inttostr(id_cnt)+ ' железа, беру ' +inttostr(id_grb)+ ' штук*');
           wait(100);
           if Grab(tIng, id_grb, ResPack_ID, Min_kolvo) = true then
             begin
               AddToSystemJournal('*Добрал ' + inttostr(id_grb) + ' железа*');
               wait(100);
               result := true;
             end
           else
             begin
               AddToSystemJournal('--->!!!*В сундуке закончилось железо*!!!');
               AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
               result := false;
               exit;
             end;
         end
       else
         begin
           AddToSystemJournal('--->!!!*В сундуке закончилось железо*!!!');
           AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
           result := false;
           exit;
         end;
     end;
 end;

procedure Init;
 begin
  Init_Menu;
  AddToSystemJournal('*Ищу набор ювелира*');
  wait(100);
  TTools_ID := Check_and_Grab(tTinkTools, ResPack_ID);
  if TTools_ID <> 0 then
    begin
      AddToSystemJournal('*Набор найден*');
      wait(100);
      bool_exit := false;
    end
  else
    begin
      AddToSystemJournal('--->!!!*Набор не найден*!!!');
      bool_exit := true;
      exit;
    end;

  AddToSystemJournal('*Ищу мешочек для изделий*');
  wait(100);
  IzdPack_ID := FindType(tIzdPack, ResPack_ID);
  if IzdPack_ID <> 0 then
    begin
      AddToSystemJournal('*Мешочек для изделий найден*');
      wait(100);
      bool_exit := false;
    end
  else
    begin
      AddToSystemJournal('--->!!!*Мешочек не найден*!!!');
      bool_exit := true;
      exit;
    end;
 end;

function Tinker(idTools: cardinal; tItem: cardinal): boolean;
 var
   tmp_id2: cardinal;
   zz,ext,cnt: integer;

 begin
  AddToSystemJournal('*Начинаю тинкерить*');
  Check_Connect;
  ToHide;
  wait(100);
  tmp_id2 := FindType(tItem, Backpack);
  wait(100);
  cnt := GetQuantity(tmp_id2);
  if (tmp_id2 <> 0) AND (cnt >= Min_kolvo) then
    begin
      ext := 0;
      repeat
        AddToSystemJournal('*Пытаюсь сделать...*');        
        ClearJournal;
        CheckLag;
        WaitTargetObject(tmp_id2);
        wait(100);
        UseObject(idTools); 
        zz := 0;
        repeat
          wait(200);
          zz := zz + 1;
          Check_World_Save;
          Check_Connect;
        until (InJournal('You put the') <> -1 ) OR (InJournal('Tinkering failed') <> -1 ) OR (zz > 60);
        wait(100);
        if (InJournal('Tinkering failed') <> -1 ) then
          begin
            AddToSystemJournal('*Ничего не получилось*');
            //result := false;
            wait(700);
          end;
        if (InJournal('You put the') <> -1 ) then
          begin          
            ClearJournal;
            ext := ext + 1;
            AddToSystemJournal('*Изделие готово, сделал ' +inttostr(ext)+ ' шт.*');
          end;
        tmp_id2 := FindType(tItem, Backpack);
        wait(100);
        cnt := GetQuantity(tmp_id2);
      until (ext >= Make_Kolvo) OR (cnt < Min_kolvo);
      if ext >= Make_Kolvo then
        begin
          AddToSystemJournal('*Работа окончена, изготовил ' +inttostr(ext)+ ' штук*');
          result := true;
        end;
    end
  else
    begin
      AddToSystemJournal('--->!!!*Ошибка модуля тинкера, мало железа*!!!');
      result := false;
      exit;
    end;
 end;

procedure Count_and_drop(tIt: cardinal; idPack: cardinal; drop_kol: integer);
 var
   tmp_id4: cardinal;
   c: integer;

 begin
   Checklag;
   UseObject(Backpack);
   wait(200);
   c := Count(tIt);
   If c >= drop_kol then
     begin
       AddToSystemJournal('*Есть ' +inttostr(c)+ ' изделий, убираю все в мешок*');
       wait(100);
       tmp_id4 := FindType(tIt, Backpack);
       if tmp_id4 <> 0 then
         begin
           If Drop_Item(tIt, idPack, -1) = true then
             begin
               AddToSystemJournal('*Изделия успешно выброшены*');
               tmp_id4 := FindType(tIt, idPack);
               c := GetQuantity(tmp_id4);
               AddToSystemJournal('*В рюкзаке лежит ' +inttostr(c)+ ' изделий*');
             end
           else
             begin
               exit;
             end;
         end 
       else
         begin
           AddToSystemJournal('--->!!!*Ошибка выброса, изделие не найдено*!!!');
           wait(100);
           exit;
         end;
     end
   else
     begin
       AddToSystemJournal('*В рюкзаке всего ' +inttostr(c)+ ' изделий*');
     end;
 end;

Begin
//Основной скрипт
//©Kynep
//

 ClearJournal;
 AddToSystemJournal('*Скрипт Тинкера запущен*');
 Check_Connect;
 CheckLag;
 UseObject(backpack);
 wait(1000);
 UseObject(Sunduk_ID);
 wait(1000);
 UseObject(ResPack_ID);
 wait(1000);
 AddToSystemJournal('*Открыл сундуки*');
 wait(100);
 Init;
 if bool_exit = false then
   begin
     Check_Food(food, Sunduk_ID); 
     AddToSystemJournal('*Подготовка окончена, поехали!*');
   end;
 wait(500);
 a := 0;

 while (GetSkillValue('Tinkering') < Skill_Val) AND (not dead) do 
   begin
     if bool_exit = false then
       begin
         repeat
           Check_Connect;
           if (GetSkillValue('Tinkering') = 110) then
             begin
               repeat
                 checklag;
                 AddToSystemJournal('!!!*Скилл докачан*!!!');
                 WaitTargetObject(Self);
                 UseSkill('Anatomy');
                 wait(5000);
               until Dead;
             end;
           if Drop_Grab_Iron(Min_kolvo, IngKolvo) = false then
             begin
               bool_exit := true;
               exit;
             end;
           a := a + 1;
           if a > 100 then
             begin
               Check_Food(food, Sunduk_ID); 
               a := 0;
             end;
           if Tinker(TTools_ID, tIng) = true then
             begin
               Count_and_drop(tIzdelie, IzdPack_ID, Drop_KolVo);
               if IsSpirit = 1 then
                 begin
                   AddToSystemJournal('*Спирит Спик*');
                   UseSkill('Spirit Speak');
                   wait(3000);
                 end;
             end
           else
             begin
               wait(500);
             end;
         until (bool_exit = true);
         exit;
       end
     else
       begin
         AddToSystemJournal('!!!*Выход из скрипта*!!!');
         exit;
       end      
   end;
   if (GetSkillValue('Tinkering') = 110) then
     begin
       AddToSystemJournal('!!!*Скилл докачан*!!!');
       bool_exit := true;
       exit;
     end;
   if dead then
     begin
       AddToSystemJournal('--->!!!*Убили гады*!!!');
     end;
End.
Post Reply