Принцип работы:
В сундуке лежат инготы, скрипт берет оптимальное количество, делает вещи, при перегрузе - кидает вещи в сундук. При нехватке инготов - сбрасывает вещи в сундук, берет из сундука инготы.
Пример сделан для крафта 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.