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
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

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

Code: Select all

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

Code: Select all

    until l=255  
     if l=255 then
А так скрипт норм работает без ошибок и вообще Респект.
ХМ... а как ты отнесешься к тому факту что в половине мешков по 243-250 никлассов. В принципе для персонажей с ГМ тинкеринга - это не такая уж и большая проблема! А вот если я сейчас только докачался до 64...

На сколько я понимаю оно не понимает физлов...
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Всё оно понимает.

Code: Select all

       if InJournal('put')<>-1 then 
         begin 
           Check_Necklace; 
         end
Смотри содержимое процедуры
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

о_О Опять особая уличная магия...

Ночью стоял одним чаром но скрипте с переписанным подсчетом... И опять под ногами 40 некласов...

Сейчас попытаюсь написать свой скрипт. (не в обиду автору скрипта)
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Тема изначально создавалась с вопросом почему такое происходит
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

Блин уже месец делаю и не один неклас не упал.
Вот юзаю этот скрипт

Code: Select all

Program Tinker_Necklace;

const
Sunduk_With_Iron_and_Tools=$403EDF62;                                                           
Sunduk_With_Empty_Bags=$403EDEEB;
Sunduk_With_Full_Bags=$403EDF66;
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
       MoveItem(FindItem,1,Neck_Bag,0,0,0);
       wait(500);
     end
 end;
 
 procedure Check_Hidden;
begin
 if not Hidden then
  begin
   while not Hidden do
    begin
      SetWarMode(False);
      useskill('Hiding');
      wait(3600);
    end
    AddToSystemJournal('Спрятались.');
  end
end;


procedure Get_Bag;
 begin
   FindType(Bag,Backpack);
   if FindCount=0 then
     begin
     AddToSystemJournal('Мешок не найден в backpacke. Берём новый');
       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
 AddToSystemJournal('Мешок заполнен берём новый');
   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
  FindType(Ingot,Backpack);
  if (FindCount=0) OR (Count(Ingot)<5) then
    begin
      UseObject(Sunduk_With_Iron_and_Tools);
      wait(1000);
      FindType(Ingot,Sunduk_With_Iron_and_Tools);
      if (FindCount>0) and (CountEx(Ingot,$0000,Sunduk_With_Iron_and_Tools)>100) then
        begin
          MoveItem(FindType(Ingot,Sunduk_With_Iron_and_Tools),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
 ClearJournal;
 CancelMenu;
 AutoMenu( 'Tinkering' , 'Jew' );
 AutoMenu( 'Jew' , 'neck' );
 while not Dead do
   begin
     Check_Last_Bag;
     Get_Bag;
     repeat
       if Weight>700 then exit;
       Check_Iron;
       k:=0;
       TimeStart:=Now;
       UseObject(FindType(Tools,Backpack));
       repeat 
         wait(100); 
         k := k + 1; 
         Check_World_Save;
         Check_Hidden;
       until (InJournalBetweenTimes('You put|failed', TimeStart, Now)<>-1) or (k > 300);
       wait(100);
    if InJournal('put')<>-1 then 
         begin
           AddToSystemJournal(IntToStr(CountEx(Necklace,$0000,Neck_Bag))+' necklaces на данный момент в мешке.');
           l:=l+1;
           Check_Necklace; 
         end
       ClearJournal;
     until l>=201  
     if l>=201 then 
       begin
         l:=0;
         Out_Bag;
       end
   end    
End.
Last edited by RaTaMaHaTTa on 11.07.2008 16:13, edited 1 time in total.
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

Code: Select all

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); [i]< -- 800[/i]
           FindType(Necklace,Backpack); 
         end; 
     end; 
 end;
Еще может оставаться из за низкой задержки после перемещения, так называемый фастлут... можно попробовать ее увеличить до 800 и думаю все будет норм.
Невозможное возможнО!
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

v26RuS wrote:

Code: Select all

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); [i]< -- 800[/i]
           FindType(Necklace,Backpack); 
         end; 
     end; 
 end;
Еще может оставаться из за низкой задержки после перемещения, так называемый фастлут... можно попробовать ее увеличить до 800 и думаю все будет норм.
По идеи при срабатавание фаст лута должно падать назад в баг.
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

Есть еще один вариант

Code: Select all

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(800);
           FindType(Necklace,Backpack); 
         end; 
     end; 
   FindType(Necklace,ground); 
   if FindCount>0 then 
     begin 
       while FindCount <> 0 do 
         begin 
           l:=l+1; 
           MoveItem(FindItem,1,Neck_Bag,0,0,0); 
           wait(800);
           FindType(Necklace,ground); 
         end; 
     end; 

 end;
Я думаю на данный момент это будет самое оптимальное решение.
Невозможное возможнО!
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

В данный момент 3 моих чара стоят на этом скрипте

Code: Select all


Program Tinker_Necklace;

const
Sunduk_With_Iron_and_Tools=$4025603E;
Sunduk_With_Empty_Bags=$4025603E;
Sunduk_With_Full_Bags=$403C2EA6;
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>30);
   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' , 'Jewelry' );
 AutoMenu( 'Jewelry' , 'necklace' );
 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>=255 
     if l>=255 then
       begin
         l:=0;
         Out_Bag;
       end;
   end;
End.
Все замечательно работает!
v26RuS
Novice
Novice
Posts: 61
Joined: 18.05.2008 16:07
Location: DRW
Contact:

Post by v26RuS »

У тебя есть одна логическая ошибочка в нем хотя от нее ничего не зависит но всетаки

Code: Select all

     until l>=255 // В мешке максимум 255 итемов больше не будет)
     if l>=255 then // Тут тоже самое
Невозможное возможнО!
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

v26RuS wrote:У тебя есть одна логическая ошибочка в нем хотя от нее ничего не зависит но всетаки

Code: Select all

     until l>=255 // В мешке максимум 255 итемов больше не будет)
     if l>=255 then // Тут тоже самое
Это вторая версия скрипта Scripts Writer'а Поэтому ниче не знаю :D
Единственное что я с этим скриптом сделал - подобовлял ; там где это было нужно :roll:
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

Unholy wrote:
v26RuS wrote:У тебя есть одна логическая ошибочка в нем хотя от нее ничего не зависит но всетаки

Code: Select all

     until l>=255 // В мешке максимум 255 итемов больше не будет)
     if l>=255 then // Тут тоже самое
Это вторая версия скрипта Scripts Writer'а Поэтому ниче не знаю :D
Единственное что я с этим скриптом сделал - подобовлял ; там где это было нужно :roll:
У меня тоже вторая версия немного доведёная до ума, и я уже месец делаю некласы и не разу нечего не падала )
Scripts Writer
Novice
Novice
Posts: 130
Joined: 06.05.2008 18:03

Post by Scripts Writer »

Поповоду добора- у никлейса, если не ошибаюсь, как и у кирки существует несколько типов, и при падении он изменяется, так что искать по одному и тому же типу в паке и на земле- ошибка.
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

Scripts Writer wrote:Поповоду добора- у никлейса, если не ошибаюсь, как и у кирки существует несколько типов, и при падении он изменяется, так что искать по одному и тому же типу в паке и на земле- ошибка.
уху
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Post by Unholy »

Scripts Writer wrote:Поповоду добора- у никлейса, если не ошибаюсь, как и у кирки существует несколько типов, и при падении он изменяется, так что искать по одному и тому же типу в паке и на земле- ошибка.
0_0
Теперь я понял розгадку фокуса.
Короче фокус.
В скрипт добавлен подем никласа. Он у него падает, он его н поднимает. Но если я левачем переместить на 1-2 клетки он сразу все найдет, и поднимет.
Post Reply