uses SysUtils;
const
ITEM_ID: 21735; // ID предмета, который мы хотим ломать на кристалы (21735=Тарбар)
ITEM_PRICE = 1540000; // цена покупки этого предмета в магазине
// https://adrenalinebot.com/ru/api/example/counting-the-number-of-items-in-the-inventory
function ItemCount(id: integer): int64; overload; // подсчет кол-ва итемов по ID
var i: integer;
begin
result:= 0;
for i:= 0 to Inventory.User.Count-1 do begin // пробегаемся по инвентарю юзера
if (Inventory.User.Items(i).ID = id) then // если id совпали, то
Inc(result, Inventory.User.Items(i).Count); // увеличиваем результат на кол-во предметов в стаке
end;
end;
// функция обертка для покупки итемов у торговца с npc_id, items - массив того что нужно купить
procedure BuyItemsFromNPC(npc_id: integer; items: array of integer);
begin
Engine.SetTarget(npc_id); // берем в таргет торговца
Engine.DlgOpen; // открываем диалог с торговцем
Engine.DlgSel(2); // жмем на строку покупки (порядковый номер строки)
Engine.NpcTrade(false, items); // первый аргумент false означает покупку, второй - список покупок
end;
begin
if (User.CanCryst) then begin // если наш персонаж умеет кристаллизовать предметы
// тут можно сделать подбег к NPC, если требуется
// Engine.MoveTo(....);
while (ItemCount(57) > ITEM_PRICE) do begin // если у нас хватает адены на покупку итема, то
BuyItemsFromNPC(30084, [ITEM_ID, 1]); // покупаем у NPC (Грэхам в Гиране) нужный итем
if Engine.CrystalItem(ITEM_ID) then delay(999); // разбиваем его на кристалы, и если удалось, то ждем немного
end;
end else Print('Наш персонаж не умеет ломать предметы!');
end.