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

Tinkering_Necklace. Dragon World

Only working scripts
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Попробуйте вот эту версию. Переписал систему подсчёта,-в итоге работал стабильно.

Code: Select all

Program Tinker_Necklace;

const
Sunduk_With_Iron_and_Tools=$402DE2C4;
Sunduk_With_Empty_Bags=$402DE2C4;
Sunduk_With_Full_Bags=$404CAA07;
Bag=$0E76;
Tools=$1EBC;
Ingot=$1BEF;
Pig=$09BB;
Necklace=$1085;

var
k, l : integer;
TimeStart : TDateTime;
Neck_Bag : Cardinal;


procedure Check_Necklace;
 begin
   FindType(Necklace,Backpack);
   if FindCount>0 then
     begin
       while FindCount <> 0 do
         begin
           l:=l+1;
           MoveItem(FindItem,1,Neck_Bag,0,0,0);
           wait(500);
           FindType(Necklace,Backpack);
         end
     end
 end;


procedure Get_Bag;
 begin
   FindType(Bag,Backpack);
   if FindCount=0 then
     begin
       UseObject(Sunduk_With_Empty_Bags); 
       wait(1000);
       FindType(Bag,Sunduk_With_Empty_Bags);
       if FindCount>0 then
         begin
           MoveItem(FindItem,1,Backpack,0,0,0);
           wait(1000);
           UseObject(FindItem);
           wait(1000);
         end
     end   
   Neck_Bag:=FindType(Bag,Backpack);
 end; 


procedure Out_Bag;
 begin
   FindType(Bag,Backpack);
   if FindCount>0 then
     begin
       MoveItem(FindItem,1,Sunduk_With_Full_Bags,0,0,0); 
       wait(1000)
     end
 end;


procedure Check_World_Save;
 begin
  if InJournal('saving')<>-1 then
   begin 
    ClearJournal;
    k:=0;
    repeat
      wait(10000)
      k:=k+1;
      AddToSystemJournal('World is saving more than '+IntToStr(k*10)+' seconds.');
    until (InJournal('data')<>-1) or (k>10)
   end
 end;


procedure Check_Connect;
 begin
  if not Connected then 
    while not Connected do 
      begin
        Connect;
        wait(1000);
      end 
 end;


procedure Check_Iron;
 begin
  FindTypeEx(Ingot,$0000,Backpack,False);
  if (FindCount=0) OR (GetQuantity(FindItem)<5) then
    begin
      AddToSystemJournal('Добираем инги.')
      UseObject(Sunduk_With_Iron_and_Tools);
      wait(1000);
      FindTypeEx(Ingot,$0000,Sunduk_With_Iron_and_Tools,False);
      if (FindCount>0) and (GetQuantity(FindItem)>100) then
        begin
          MoveItem(FindItem,100,Backpack,0,0,0);
          wait(1000);
          AddToSystemJournal('Добрали 100 iron ingots. На данный момент имеем '+IntToStr(Count(Ingot))+' штук. Осталось ещё '+IntToStr(CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools))+' iron ingots. l='+IntToStr(l)+'; Count='+IntToStr(Count(Necklace))+';');
        end
      else
        AddToSystemJournal('Ошибка во время добора Iron Ignots.');
        exit;
    end
   FindType(Ingot,Ground);
   if FindCount>0 then
     begin
       MoveItem(FindItem,0,Sunduk_With_Iron_and_Tools,0,0,0);
       wait(500);
     end
 end;


procedure Check_Food;
 begin
  UseObject(Sunduk_With_Iron_and_Tools)
  wait(250);
  FindType(Pig,Sunduk_With_Iron_and_Tools);
  if FindCount>0 then
    begin
      MoveItem(FindItem,1,Backpack,0,0,0);
      wait(250);
      UseObject(FindItem);
      FindType(Pig,Backpack);
      if FindCount=0 then AddToSystemJournal('Покушали.');
      if FindCount>0 then MoveItem(FindItem,1,Sunduk_With_Iron_and_Tools,0,0,0);
    end
  else
    AddToSystemJournal('a Pig не был найден в сундуке.');
 end;


procedure Check_Last_Bag;
  begin
    FindType(Bag,Backpack);
    if FindCount>0 then
      begin
        UseObject(FindItem);
        wait(500)
        Neck_Bag:=FindType(Bag,Backpack);  
        FindType(Necklace,Neck_Bag);
        l:=FindCount;
        AddToSystemJournal('В мешке '+IntToStr(l)+' necklace.');
      end
  end;  


Begin
 UseObject(Sunduk_With_Iron_and_Tools);
 wait(1000);
 ClearJournal;
 CancelMenu;
 AutoMenu( 'Tinkering' , 'Jew' );
 AutoMenu( 'Jew' , 'neck' );
 while not Dead do
   begin
     Check_Last_Bag;
     Get_Bag;
     repeat
       if Weight>500 then exit; 
       Check_Iron;
       k:=0;
       TimeStart:=Now;
       UseObject(FindType(Tools,Backpack));
       repeat 
         wait(100); 
         k := k + 1; 
         Check_World_Save;
       until (InJournalBetweenTimes('You put|failed', TimeStart, Now)<>-1) or (k > 300);
       wait(100);
       if InJournal('put')<>-1 then 
         begin
           Check_Necklace; 
         end
       ClearJournal;
     until l>=254  
     if l>=254 then 
       begin
         l:=0;
         Out_Bag;
       end
   end    
End.

Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Там ещё начинается после долго крафта такая кривизна, что он крафтит barell *что-то* вообще непонятно откуда взяв это. Изменил ловушку на меню на Auto и вроде проблема пропала.
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

а почему в системном журнале больше не выводится сколько никласов в мешочке? было очень удобно) хоть было видно работает ли скрипт)
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

хотя даренаму каню в зубы не сморят) ыы
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

а мона етот скрипт переделать что бы чар бутылки делал)) и в мешочки не скидывал а просто в сундук ботлы кидал))
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

Scripts Writer wrote:Попробуйте вот эту версию. Переписал систему подсчёта,-в итоге работал стабильно.
Спасибо. Шас посмотрим... иза каментов людей изменил автоменю на

Code: Select all

 AutoMenu( 'Tinkering' , 'Jewelry' );
 AutoMenu( 'Jewelry' , 'necklace' );
НА всяк пожарный!
Шас поглядим как он будет работать)
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

Unholy wrote:
Scripts Writer wrote:Попробуйте вот эту версию. Переписал систему подсчёта,-в итоге работал стабильно.
Спасибо. Шас посмотрим... иза каментов людей изменил автоменю на

Code: Select all

 AutoMenu( 'Tinkering' , 'Jewelry' );
 AutoMenu( 'Jewelry' , 'necklace' );
НА всяк пожарный!
Шас поглядим как он будет работать)
серавно не показывает)
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

А можно сделать что бы скрипт еще в хайд уходил, если чар не в хайде?)
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Nasty Nay wrote:А можно сделать что бы скрипт еще в хайд уходил, если чар не в хайде?)
1. По поводу вывода в системный журнал,-найди где это в первом скрипте, и вставь во второй,-а не нужный вывод убери.

2. По поводу хайда:

Code: Select all

procedure Check_Hidden;
begin
 if not Hidden then
  begin
   while not Hidden do
    begin
      SetWarMode(False);
      useskill('Hiding');
      wait(3600);
    end
    AddToSystemJournal('Спрятались.');
  end
end;
Вызов этой процедуры вставь в соответствующем месте

3. Вот в этой строке помоему я контролировал. l для перехода к следующему мешку, Count- кол-во неклейсов в мешке(помоему даже бпаке):

Code: Select all

AddToSystemJournal('Добрали 100 iron ingots. На данный момент имеем '+IntToStr(Count(Ingot))+' штук. Осталось ещё '+IntToStr(CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools))+' iron ingots. l='+IntToStr(l)+'; Count='+IntToStr(Count(Necklace))+';');
4. Исправьте Check_World_Save, как кто-то исправил ранее чтоб более 90 секунд ждал

5. Если после крафта остался мешок в котором неклейсы, то он автоматически при начале работы скрипта его находит и начинает отсчёт l от кол-во неклейсов в нём.
Last edited by Scripts Writer on 10.07.2008 13:08, edited 1 time in total.
-=JoKeR=-
Novice
Novice
Posts: 153
Joined: 10.02.2008 11:19
Location: [Forest Wars] Ode$$a

Post by -=JoKeR=- »

Можно =)
В скрипте не досчитался многих ; , добавил.

Code: Select all

Program Tinker_Necklace; 

const 
Sunduk_With_Iron_and_Tools=$402DE2C4; 
Sunduk_With_Empty_Bags=$402DE2C4; 
Sunduk_With_Full_Bags=$404CAA07; 
Bag=$0E76; 
Tools=$1EBC; 
Ingot=$1BEF; 
Pig=$09BB; 
Necklace=$1085; 

var 
k, l : integer; 
TimeStart : TDateTime; 
Neck_Bag : Cardinal; 


procedure Check_Necklace; 
 begin 
   FindType(Necklace,Backpack); 
   if FindCount>0 then 
     begin 
       while FindCount <> 0 do 
         begin 
           l:=l+1; 
           MoveItem(FindItem,1,Neck_Bag,0,0,0); 
           wait(500); 
           FindType(Necklace,Backpack); 
         end; 
     end; 
 end; 


procedure Get_Bag; 
 begin 
   FindType(Bag,Backpack); 
   if FindCount=0 then 
     begin 
       UseObject(Sunduk_With_Empty_Bags); 
       wait(1000); 
       FindType(Bag,Sunduk_With_Empty_Bags); 
       if FindCount>0 then 
         begin 
           MoveItem(FindItem,1,Backpack,0,0,0); 
           wait(1000); 
           UseObject(FindItem); 
           wait(1000); 
         end; 
     end;    
   Neck_Bag:=FindType(Bag,Backpack); 
 end; 


procedure Out_Bag; 
 begin 
   FindType(Bag,Backpack); 
   if FindCount>0 then 
     begin 
       MoveItem(FindItem,1,Sunduk_With_Full_Bags,0,0,0); 
       wait(1000) 
     end; 
 end; 


procedure Check_World_Save; 
 begin 
  if InJournal('saving')<>-1 then 
   begin 
    ClearJournal; 
    k:=0; 
    repeat 
      wait(10000) 
      k:=k+1; 
      AddToSystemJournal('World is saving more than '+IntToStr(k*10)+' seconds.'); 
    until (InJournal('data')<>-1) or (k>10) 
   end;
 end; 


procedure Check_Connect; 
 begin 
  if not Connected then 
    while not Connected do 
      begin 
        Connect; 
        wait(1000); 
      end; 
 end; 


procedure Check_Iron; 
 begin 
  FindTypeEx(Ingot,$0000,Backpack,False); 
  if (FindCount=0) OR (GetQuantity(FindItem)<5) then 
    begin 
      AddToSystemJournal('Добираем инги.') 
      UseObject(Sunduk_With_Iron_and_Tools); 
      wait(1000); 
      FindTypeEx(Ingot,$0000,Sunduk_With_Iron_and_Tools,False); 
      if (FindCount>0) and (GetQuantity(FindItem)>100) then 
        begin 
          MoveItem(FindItem,100,Backpack,0,0,0); 
          wait(1000); 
          AddToSystemJournal('Добрали 100 iron ingots. На данный момент имеем '+IntToStr(Count(Ingot))+' штук. Осталось ещё '+IntToStr(CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools))+' iron ingots. l='+IntToStr(l)+'; Count='+IntToStr(Count(Necklace))+';'); 
        end 
      else 
        AddToSystemJournal('Ошибка во время добора Iron Ignots.'); 
        exit; 
    end; 
   FindType(Ingot,Ground); 
   if FindCount>0 then 
     begin 
       MoveItem(FindItem,0,Sunduk_With_Iron_and_Tools,0,0,0); 
       wait(500); 
     end ;
 end; 


procedure Check_Food; 
 begin 
  UseObject(Sunduk_With_Iron_and_Tools) 
  wait(250); 
  FindType(Pig,Sunduk_With_Iron_and_Tools); 
  if FindCount>0 then 
    begin 
      MoveItem(FindItem,1,Backpack,0,0,0); 
      wait(250); 
      UseObject(FindItem); 
      FindType(Pig,Backpack); 
      if FindCount=0 then AddToSystemJournal('Покушали.'); 
      if FindCount>0 then MoveItem(FindItem,1,Sunduk_With_Iron_and_Tools,0,0,0); 
    end 
  else 
    AddToSystemJournal('a Pig не был найден в сундуке.'); 
 end; 


procedure Check_Last_Bag; 
  begin 
    FindType(Bag,Backpack); 
    if FindCount>0 then 
      begin 
        UseObject(FindItem); 
        wait(500) 
        Neck_Bag:=FindType(Bag,Backpack);  
        FindType(Necklace,Neck_Bag); 
        l:=FindCount; 
        AddToSystemJournal('В мешке '+IntToStr(l)+' necklace.'); 
      end ;
  end;  

procedure CheckHide; 
begin 
 if not Hidden then 
  begin 
   while not Hidden do 
    begin 
      SetWarMode(False); 
      useskill('Hiding'); 
      wait(3600); 
    end;
    AddToSystemJournal('Спрятались.'); 
  end; 
end;


Begin 
 UseObject(Sunduk_With_Iron_and_Tools); 
 wait(1000); 
 ClearJournal; 
 CancelMenu; 
 AutoMenu( 'Tinkering' , 'Jew' ); 
 AutoMenu( 'Jew' , 'neck' ); 
 while not Dead do 
   begin 
     CheckHide;
     Check_Last_Bag; 
     Get_Bag; 
     repeat 
       if Weight>500 then exit; 
       Check_Iron; 
       k:=0; 
       TimeStart:=Now; 
       UseObject(FindType(Tools,Backpack)); 
       repeat 
         wait(100); 
         k := k + 1; 
         Check_World_Save; 
       until (InJournalBetweenTimes('You put|failed', TimeStart, Now)<>-1) or (k > 300); 
       wait(100); 
       if InJournal('put')<>-1 then 
         begin 
           Check_Necklace; 
         end; 
       ClearJournal; 
     until l>=254  
     if l>=254 then 
       begin 
         l:=0; 
         Out_Bag; 
       end; 
   end;    
End.
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

Scripts Writer wrote:Попробуйте вот эту версию. Переписал систему подсчёта,-в итоге работал стабильно.

Code: Select all

Program Tinker_Necklace;

const
Sunduk_With_Iron_and_Tools=$402DE2C4;
Sunduk_With_Empty_Bags=$402DE2C4;
Sunduk_With_Full_Bags=$404CAA07;
Bag=$0E76;
Tools=$1EBC;
Ingot=$1BEF;
Pig=$09BB;
Necklace=$1085;

var
k, l : integer;
TimeStart : TDateTime;
Neck_Bag : Cardinal;


procedure Check_Necklace;
 begin
   FindType(Necklace,Backpack);
   if FindCount>0 then
     begin
       while FindCount <> 0 do
         begin
           l:=l+1;
           MoveItem(FindItem,1,Neck_Bag,0,0,0);
           wait(500);
           FindType(Necklace,Backpack);
         end
     end
 end;


procedure Get_Bag;
 begin
   FindType(Bag,Backpack);
   if FindCount=0 then
     begin
       UseObject(Sunduk_With_Empty_Bags); 
       wait(1000);
       FindType(Bag,Sunduk_With_Empty_Bags);
       if FindCount>0 then
         begin
           MoveItem(FindItem,1,Backpack,0,0,0);
           wait(1000);
           UseObject(FindItem);
           wait(1000);
         end
     end   
   Neck_Bag:=FindType(Bag,Backpack);
 end; 


procedure Out_Bag;
 begin
   FindType(Bag,Backpack);
   if FindCount>0 then
     begin
       MoveItem(FindItem,1,Sunduk_With_Full_Bags,0,0,0); 
       wait(1000)
     end
 end;


procedure Check_World_Save;
 begin
  if InJournal('saving')<>-1 then
   begin 
    ClearJournal;
    k:=0;
    repeat
      wait(10000)
      k:=k+1;
      AddToSystemJournal('World is saving more than '+IntToStr(k*10)+' seconds.');
    until (InJournal('data')<>-1) or (k>10)
   end
 end;


procedure Check_Connect;
 begin
  if not Connected then 
    while not Connected do 
      begin
        Connect;
        wait(1000);
      end 
 end;


procedure Check_Iron;
 begin
  FindTypeEx(Ingot,$0000,Backpack,False);
  if (FindCount=0) OR (GetQuantity(FindItem)<5) then
    begin
      AddToSystemJournal('Добираем инги.')
      UseObject(Sunduk_With_Iron_and_Tools);
      wait(1000);
      FindTypeEx(Ingot,$0000,Sunduk_With_Iron_and_Tools,False);
      if (FindCount>0) and (GetQuantity(FindItem)>100) then
        begin
          MoveItem(FindItem,100,Backpack,0,0,0);
          wait(1000);
          AddToSystemJournal('Добрали 100 iron ingots. На данный момент имеем '+IntToStr(Count(Ingot))+' штук. Осталось ещё '+IntToStr(CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools))+' iron ingots. l='+IntToStr(l)+'; Count='+IntToStr(Count(Necklace))+';');
        end
      else
        AddToSystemJournal('Ошибка во время добора Iron Ignots.');
        exit;
    end
   FindType(Ingot,Ground);
   if FindCount>0 then
     begin
       MoveItem(FindItem,0,Sunduk_With_Iron_and_Tools,0,0,0);
       wait(500);
     end
 end;


procedure Check_Food;
 begin
  UseObject(Sunduk_With_Iron_and_Tools)
  wait(250);
  FindType(Pig,Sunduk_With_Iron_and_Tools);
  if FindCount>0 then
    begin
      MoveItem(FindItem,1,Backpack,0,0,0);
      wait(250);
      UseObject(FindItem);
      FindType(Pig,Backpack);
      if FindCount=0 then AddToSystemJournal('Покушали.');
      if FindCount>0 then MoveItem(FindItem,1,Sunduk_With_Iron_and_Tools,0,0,0);
    end
  else
    AddToSystemJournal('a Pig не был найден в сундуке.');
 end;


procedure Check_Last_Bag;
  begin
    FindType(Bag,Backpack);
    if FindCount>0 then
      begin
        UseObject(FindItem);
        wait(500)
        Neck_Bag:=FindType(Bag,Backpack);  
        FindType(Necklace,Neck_Bag);
        l:=FindCount;
        AddToSystemJournal('В мешке '+IntToStr(l)+' necklace.');
      end
  end;  


Begin
 UseObject(Sunduk_With_Iron_and_Tools);
 wait(1000);
 ClearJournal;
 CancelMenu;
 AutoMenu( 'Tinkering' , 'Jew' );
 AutoMenu( 'Jew' , 'neck' );
 while not Dead do
   begin
     Check_Last_Bag;
     Get_Bag;
     repeat
       if Weight>500 then exit; 
       Check_Iron;
       k:=0;
       TimeStart:=Now;
       UseObject(FindType(Tools,Backpack));
       repeat 
         wait(100); 
         k := k + 1; 
         Check_World_Save;
       until (InJournalBetweenTimes('You put|failed', TimeStart, Now)<>-1) or (k > 300);
       wait(100);
       if InJournal('put')<>-1 then 
         begin
           Check_Necklace; 
         end
       ClearJournal;
     until l>=254  
     if l>=254 then 
       begin
         l:=0;
         Out_Bag;
       end
   end    
End.

Всю ночь на єтом скрипте стоял! Бомба! Все работает, ничего не выпадает! Но есть 1 минус - Я не нашол практически ни одного мешка с 255 некласами (из 70)... все 254-238... С чем может быть связанно?

на этом скрипте стояло сразу 2 чара, и у одного из них тинкеринга было не ГМ. Может изза того? но у второго то ГМ было, и все-равно мишков Полных было очень мало!
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

и еще 1! Для игроков ДРВ (и любого другого сервака, с сейвом более 100 сек) Лучше поменять процедуру ожидания сейва на

Code: Select all

procedure Check_World_Save;
 begin
  if InJournal('saving')<>-1 then
   begin
    ClearJournal;
    k:=0;
    repeat
      wait(10000)
      k:=k+1;
      AddToSystemJournal('World is saving more than '+IntToStr(k*10)+' seconds.');
    until (InJournal('data')<>-1) or (k>30)
   end
 end;
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

А так в принципе Скрипт можно смело назвать ПОЛНОСТЬЮ РАБОТОСПОСОБНЫМ и не слетающим!
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

Конечно можно немного извенить вот эту строчку

Code: Select all

   until l>=254  
     if l>=254 then
на

Code: Select all

    until l=255  
     if l=255 then
А так скрипт норм работает без ошибок и вообще Респект.
Невозможное возможнО!
Nasty Nay
Neophyte
Neophyte
Posts: 27
Joined: 02.07.2008 19:07

Post by Nasty Nay »

мужики!!!!! огромное вам спасибо)
Post Reply