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

Tinkering (DRW)

Only working scripts
Post Reply
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Tinkering (DRW)

Post by Zeppelin »

Простой, быстрый и функциональный скрипт

Принцип работы:
В сундуке лежат инготы, скрипт берет оптимальное количество, делает вещи, при перегрузе - кидает вещи в сундук. При нехватке инготов - сбрасывает вещи в сундук, берет из сундука инготы.


Пример сделан для крафта empty bottle.

Для изменения вещи для крафта, меняем нужные константы
Например, меняем на локпики:

ItemType = $14FB;
NeedIngots = 1;
MenuThird = 'lockpick';
SuccsessLine = 'You put the lockpick';


Вот и все, остальное оставляем так же, как было.

Code: Select all

const 
     Sunduk = $00000000;  //ID сундука
     FoodType = $160A;    //тип еды - legs of lamb 
     IngotType = $1BEF;   //тип инготов
     ToolsType = $1EBC;   //тип tinker's tools
     ItemType = $0F0E;    //тип вещи, которую крафтим - empty bottle
     NeedIngots = 3;      //сколько инготов для крафта 1 вещи
     IngotWeight = 0.6;   //вес одного ингота
     MenuFirst = 'Tinkering';            //основное меню 
     MenuSecond = 'Tools';               //первый выбор 
     MenuThird = 'empty bottle';         //второй выбор
     SuccsessLine = 'You put the empty'; //строка журнала при удачном крафте
      
procedure OpenContainer(Container: Cardinal); 
begin 
   UseObject(Container); 
   repeat 
      wait(50); 
   until FindType($FFFF,Container) > 0 
end; 

procedure FullMove(ItemT: Word; Quantity: Integer; BagFrom, BagTo: Cardinal); 
begin 
   if InJournal('World is saving') <> -1 then begin
      repeat 
         wait(50); 
      until InJournal('World data saved in') <> -1;
      SetJournalLine(InJournal('World is saving'),'')
   end; 
   FindType(ItemT,BagFrom); 
   if FindCount > 0 then begin 
      MoveItem(FindItem,Quantity,BagTo,0,0,0); 
      wait(700) 
   end 
end; 
        
begin 
   SetARStatus(True); 
   CancelMenu; 
   OpenContainer(BackPack); 
   OpenContainer(Sunduk);    
   AutoMenu(MenuFirst,MenuSecond); 
   AutoMenu(MenuSecond,MenuThird); 
   FindType(IngotType,Sunduk); 
   while (FindQuantity >= NeedIngots) or (Count(IngotType) >= NeedIngots) do begin 
      ClearJournal;  
      if (Count(IngotType) < NeedIngots) or (Weight > 4*Str) then begin 
         if Count(FoodType) > 0 then UseType(FoodType,$FFFF); 
         FullMove(ItemType,Count(ItemType),BackPack,Sunduk); 
         FullMove(IngotType,Round((4*Str-Weight)/(1.5*IngotWeight)),Sunduk,BackPack) 
      end;  
      UseType(ToolsType,$FFFF); 
      repeat 
         wait(50); 
      until (InJournal(SuccsessLine) <> -1) or (InJournal(' failed') <> -1); 
      FindType(IngotType,Sunduk) 
   end; 
   FullMove(ItemType,Count(ItemType),BackPack,Sunduk); 
   FullMove(IngotType,Count(IngotType),BackPack,Sunduk); 
   CancelMenu 
end.
Mr.Ripley
Posts: 7
Joined: 11.10.2010 0:40

Post by Mr.Ripley »

У меня вопрос ...
Я в скриптах не очень разбираюсь но делал всё как было сказано ... мне надо было поменять на локпики .... всё сделал поменял где надо тайп,айди и.т.д. Но проблема в том что когда я запускаю скрипт чар берёт метал из сундука ... и всё и не делает локпики просто ничего не происходит .. в чём проблема подскажите .. ?!
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

Mr.Ripley wrote:Я в скриптах не очень разбираюсь но делал всё как было сказано ...
Чудес не бывает и телепатов тут нет.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

могу предположить, что не изменил

ItemType = $0F0E; //тип вещи, которую крафтим - empty bottle


впрочем, Макс правильно сказал - телепатов нет
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Mr.Ripley
Posts: 7
Joined: 11.10.2010 0:40

Post by Mr.Ripley »

Code: Select all

const
     Sunduk = $6536867C;  //ID сундука
     FoodType = $097B;    //тип еды - legs of lamb
     IngotType = $1BF2;   //тип инготов
     ToolsType = $1EB9;   //тип tinker's tools
     ItemType = $14FB;    //тип вещи, которую крафтим - lockpick
     NeedIngots = 1;      //сколько инготов для крафта 1 вещи
     IngotWeight = 0.6;   //вес одного ингота
     MenuFirst = 'Tinkering';            //основное меню
     MenuSecond = 'Tools';               //первый выбор
     MenuThird = 'lockpick';         //второй выбор
     SuccsessLine = 'You put the lockpick'; //строка журнала при удачном крафте
     
procedure OpenContainer(Container: Cardinal);
begin
   UseObject(Container);
   repeat
      wait(50);
   until FindType($FFFF,Container) > 0
end;

procedure FullMove(ItemT: Word; Quantity: Integer; BagFrom, BagTo: Cardinal);
begin
   if InJournal('World is saving') <> -1 then begin
      repeat
         wait(50);
      until InJournal('World data saved in') <> -1;
      SetJournalLine(InJournal('World is saving'),'')
   end;
   FindType(ItemT,BagFrom);
   if FindCount > 0 then begin
      MoveItem(FindItem,Quantity,BagTo,0,0,0);
      wait(700)
   end
end;
       
begin
   SetARStatus(True);
   CancelMenu;
   OpenContainer(BackPack);
   OpenContainer(Sunduk);   
   AutoMenu(MenuFirst,MenuSecond);
   AutoMenu(MenuSecond,MenuThird);
   FindType(IngotType,Sunduk);
   while (FindQuantity >= NeedIngots) or (Count(IngotType) >= NeedIngots) do begin
      ClearJournal; 
      if (Count(IngotType) < NeedIngots) or (Weight > 4*Str) then begin
         if Count(FoodType) > 0 then UseType(FoodType,$FFFF);
         FullMove(ItemType,Count(ItemType),BackPack,Sunduk);
         FullMove(IngotType,Round((4*Str-Weight)/(1.5*IngotWeight)),Sunduk,BackPack)
      end; 
      UseType(ToolsType,$FFFF);
      repeat
         wait(50);
      until (InJournal(SuccsessLine) <> -1) or (InJournal(' failed') <> -1);
      FindType(IngotType,Sunduk)
   end;
   FullMove(ItemType,Count(ItemType),BackPack,Sunduk);
   FullMove(IngotType,Count(IngotType),BackPack,Sunduk);
   CancelMenu
end.
Вот собственно скрипт в который всё подставил ...
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

А уверены что тинертулс есть в бекпаке и бекпак открыт?

Первоначальный на бутылки работает?
Post Reply