Page 1 of 1

Blacksmithing_DRW

Posted: 24.05.2008 10:06
by Scripts Writer
БС на Rusty даггерах с раскладкой по мешкам в кол-ве 254 штук.

Code: Select all

Program Blakcmisthy_Dagger;

const
Sunduk_With_Ignots_and_Bags=$402DE2C3;
Sunduk_With_Full_Bags=$402DE2C4;
Bag=$0E76;
Hammer=$13E3;
Ingot=$1BEF;
Dagger=$0F51;
Pig=$09BB;

var
k : integer;
TimeStart : TDateTime;
Neck_Bag : Cardinal;
Quantity : integer;


procedure Check_Food;
 begin
  UseObject(Sunduk_With_Ignots_and_Bags)
  wait(500);
  FindType(Pig,Sunduk_With_Ignots_and_Bags);
  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_Ignots_and_Bags,0,0,0);
    end
  else
    AddToSystemJournal('a Pig не был найден в сундуке.');
 end;


procedure Check_Dagger;
 begin
  if Quantity<254 then 
    begin
      FindType(Dagger,Backpack);
      if FindCount>0 then
        begin
          MoveItem(FindItem,1,Neck_Bag,0,0,0);
          wait(250);
        end
    end
  else
    begin
      MoveItem(Neck_Bag,1,Sunduk_With_Full_Bags,0,0,0);
      wait(250);
      Quantity:=0;
    end
 end;


procedure Check_Bag;
 begin
  Neck_Bag:=FindType(Bag,Backpack);
  if FindCount>0 then
    begin
      UseObject(Neck_Bag);
      wait(250);
      FindType(Dagger,Neck_Bag);
      Quantity:=FindCount;
      if Quantity>0 then AddToSystemJournal(IntToStr(Quantity)+' daggers на данный момент в мешке.');
      if Quantity=0 then 
        begin
          AddToSystemJournal('Начинаем новую партию изделий.');
          Check_Food;
        end
    end
  else
    begin
      AddToSystemJournal('Мешок не найден в backpacke. Берём новый');
      UseObject(Sunduk_With_Ignots_and_Bags); 
      wait(500);
      FindType(Bag,Sunduk_With_Ignots_and_Bags);
      if FindCount>0 then
        begin
          MoveItem(FindItem,1,Backpack,0,0,0);
          wait(1000);
        end
    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_Ingot;
 begin
  FindType(Ingot,Backpack);
  if (FindCount=0) OR (Count(Ingot)<50) then
    begin
      UseObject(Sunduk_With_Ignots_and_Bags);
      wait(250);
      FindType(Ingot,Sunduk_With_Ignots_and_Bags);
      if (FindCount>0) and (CountEx(Ingot,$0750,Sunduk_With_Ignots_and_Bags)>200) then
        begin
          MoveItem(FindItem,200,Backpack,0,0,0);
          wait(250);
          AddToSystemJournal('Добрали 200 rusty ingots. Осталось ещё '+IntToStr(CountEx(Ingot,$0750,Sunduk_With_Ignots_and_Bags))+' rusty ingots.');
        end
      else
        AddToSystemJournal('Ошибка во время добора Rusty Ignots.');
        exit;
    end
 end;
       
 
procedure Check_Tools;
 begin
  FindType(Hammer,Backpack);
  if FindCount=0 then 
    begin
      UseObject(Sunduk_With_Ignots_and_Bags);
      wait(500);
      FindType(Hammer,Sunduk_With_Ignots_and_Bags);    
      if FindCount>0 then
        begin
          MoveItem(FindItem,1,Backpack,0,0,0);
          wait(250);
          AddToSystemJournal('Добрали молоток из сундука.');
        end
      else
        AddToSystemJournal('Ошибка во время добора молотка.');
        exit;
    end
 end;


Begin

 ClearJournal;
 while not Dead do
   begin
     Check_Connect;
     Check_Ingot;
     Check_Tools;
     Check_Bag;

     k:=0;
     TimeStart:=Now;
     WaitMenu( 'Black' , 'Colored' );
     WaitMenu( 'Colored' , 'Rusty Weapons' );
     WaitMenu( 'Rusty Weapons' , 'Rusty Swords' );
     WaitMenu( 'Rusty Swords' , 'Dagger' );
     UseObject(FindType(Ingot,Backpack));
      
     repeat 
       wait(100); 
       k := k + 1; 
       Check_World_Save;
     until (InJournalBetweenTimes('You put|failed', TimeStart, Now)<>-1) or (k > 300);
     wait(100);

     FindType(Dagger,Backpack);
     if Count(Dagger)>0 then Check_Dagger;
   end    
End.


Posted: 09.11.2008 1:51
by OnlyMe
а что за расти дагеры ? а нельзя ли его под айрон дагеры переделать? и еще с плавкой было бы в идеале :) ??

Posted: 09.11.2008 10:35
by grundick
по мешкам ты их расплавленные будешь раскладывать? :wink:

Posted: 09.11.2008 14:12
by OnlyMe
ну если плавка будет , то тогда раскладыввание не нужно , а так моно и с раскладкой .. )

Posted: 16.09.2010 10:38
by Vargul
Может уже не актуально, но напишу.
Скрипт порадовал. Один момент только, если его переписать под ковку чего-то потяжелее дагеров, например насисьников, то чар просто их не подымет и все будет валиться на пол. Если сюда добавить плавку того что сделал, цены не будет этому скрипту.

з.ы. буду пробывать дописать плавилку, если получится, выложу обязательно

Posted: 16.09.2010 10:52
by NoSilence
А почему именно по 254?

Posted: 16.09.2010 12:09
by Macks
Vargul wrote:Может уже не актуально, но напишу.
Скрипт порадовал. Один момент только, если его переписать под ковку чего-то потяжелее дагеров, например насисьников, то чар просто их не подымет и все будет валиться на пол. Если сюда добавить плавку того что сделал, цены не будет этому скрипту.

з.ы. буду пробывать дописать плавилку, если получится, выложу обязательно
Не во всех Шардах падает при перегрузе и не на всех есть переплавка.

Posted: 16.09.2010 12:10
by Macks
NoSilence wrote:А почему именно по 254?
Потому что такое ограничение есть на количество итемов в контейнере.

Posted: 16.09.2010 14:27
by Vargul
тем не менее это лучший работающий скрипт, который я видел.
Автору спасибо.

Re: Blacksmithing_DRW

Posted: 01.04.2012 13:12
by urka
Можете такой же скриптик сделать, только что бы ковал горжетки из тех металлов которые в паке.?
Буду очень признателен.