Изготавливаем Clock Parts.
Эта деталь изготавливается с 30.5 Тинкера! Если у вас меньше, докупите или качайте на gears.
Скрипт переделать, дело пяти минут.
Удачи!
Файл my_func.inc необходимо скачать отсюда http://coop.myftp.org/files/UO/Stealth/my_func.inc и положить в папку Include.
Без него скрипт работать не будет!!!
Code: Select all
program Tinkering_Parts;
//©Kynep
{$Include 'my_func.inc'}
const
Sunduk_ID = $4040DCA6; //ID Основной сундук, с едой и рюкзаком
ResPack_ID = $4040DCA6; //ID Рюкзак в сундуке c металлом, инструментом и пустым мешком
tIzdPack = $0E76; //Тип мешка для готовых изделий, лежит в паке с железом
IsSpirit = 1; //Качем спирит
Skill_Val = 110; //Максимальное значение скилла,
//Если больше 100, то работает безконечно.
food = $09BB; //Тип еды
nItemName = 'clock parts'; //Имя предмета, последний пункт в меню
tTinkTools = $1EBC; //Тип инструмента
tIzdelie = $104F; //Тип готового изделия
tIng = $1BEF; //Тип слитка железа
IngKolvo = 200; //Сколько берем железа
Min_kolvo = 10; //Нижний порог железа
Make_Kolvo = 10; //Сколько делать за раз
Drop_KolVo = 50; //Кол-во изделий, после которого начинаем выбрасывать
var
IzdPack_ID: cardinal;
TTools_ID: cardinal;
bool_exit: boolean;
a: integer;
procedure Init_Menu;
begin
CancelMenu;
automenu('Tinkering','Parts');
automenu('Parts',nItemName);
end;
function Drop_Grab_Iron(to_drop: integer; to_grab: integer): boolean;
var
id1: cardinal;
id_cnt, id_grb: integer;
begin
AddToSystemJournal('*Проверка железа*');
Wait(100);
id1 := FindType(TIng, Backpack);
id_cnt := GetQuantity(id1);
wait(100);
if (id1 <> 0) AND (id_cnt > to_drop) then
begin
AddToSystemJournal('*В рюкзаке ' +inttostr(id_cnt)+ ' железа*');
result := true;
end;
if (id1 <> 0) AND (id_cnt = to_drop) then
begin
AddToSystemJournal('*В рюкзаке ' +inttostr(id_cnt)+ ' железа*');
result := true;
end;
if (id1 <> 0) AND (id_cnt < to_drop) then
begin
id_cnt := GetQuantity(id1);
AddToSystemJournal('*В рюкзаке ' +inttostr(id_cnt)+ ' железа, маловато, беру из сундука*');
Wait(100);
CheckLag;
MoveItem(id1, id_cnt, ResPack_ID, 0,0,0);
wait(500);
id1 := FindType(tIng, ResPack_ID);
wait(100);
id_cnt := GetQuantity(id1);
if (id_cnt > to_drop) AND (id_cnt > to_grab) then
begin
id_grb := to_grab;
end;
if (id_cnt > to_drop) AND (id_cnt < to_grab) then
begin
id_grb := id_cnt;
end;
if (id_cnt < to_drop) then
begin
AddToSystemJournal('--->!!!*В сундуке мало железа*!!!');
AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
result := false;
exit;
end;
AddToSystemJournal('*В сундуке ' +inttostr(id_cnt)+ ' железа, беру ' +inttostr(id_grb)+ ' штук*');
wait(100);
if Grab(tIng, id_grb, ResPack_ID, Min_kolvo) = true then
begin
AddToSystemJournal('*Добрал ' + inttostr(to_grab) + ' железа*');
wait(100);
result := true;
end
else
begin
AddToSystemJournal('--->!!!*В сундуке закончилось железо*!!!');
AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
result := false;
exit;
end;
end;
if (id1 < 0) OR (id1 = 0) then
begin
AddToSystemJournal('*В рюкзаке железа нет, ищу в сундуке*');
wait(100);
id1 := FindType(tIng, ResPack_ID);
id_cnt := GetQuantity(id1);
if (id1 <> 0) AND (id_cnt > to_drop) then
begin
id_cnt := GetQuantity(id1);
if (id_cnt > to_drop) AND (id_cnt > to_grab) then
begin
id_grb := to_grab;
end;
if (id_cnt > to_drop) AND (id_cnt < to_grab) then
begin
id_grb := id_cnt;
end;
if (id_cnt < to_drop) then
begin
AddToSystemJournal('--->!!!*В сундуке мало железа*!!!');
AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
result := false;
exit;
end;
AddToSystemJournal('*В сундуке ' +inttostr(id_cnt)+ ' железа, беру ' +inttostr(id_grb)+ ' штук*');
wait(100);
if Grab(tIng, id_grb, ResPack_ID, Min_kolvo) = true then
begin
AddToSystemJournal('*Добрал ' + inttostr(id_grb) + ' железа*');
wait(100);
result := true;
end
else
begin
AddToSystemJournal('--->!!!*В сундуке закончилось железо*!!!');
AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
result := false;
exit;
end;
end
else
begin
AddToSystemJournal('--->!!!*В сундуке закончилось железо*!!!');
AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
result := false;
exit;
end;
end;
end;
procedure Init;
begin
Init_Menu;
AddToSystemJournal('*Ищу набор ювелира*');
wait(100);
TTools_ID := Check_and_Grab(tTinkTools, ResPack_ID);
if TTools_ID <> 0 then
begin
AddToSystemJournal('*Набор найден*');
wait(100);
bool_exit := false;
end
else
begin
AddToSystemJournal('--->!!!*Набор не найден*!!!');
bool_exit := true;
exit;
end;
AddToSystemJournal('*Ищу мешочек для изделий*');
wait(100);
IzdPack_ID := FindType(tIzdPack, ResPack_ID);
if IzdPack_ID <> 0 then
begin
AddToSystemJournal('*Мешочек для изделий найден*');
wait(100);
bool_exit := false;
end
else
begin
AddToSystemJournal('--->!!!*Мешочек не найден*!!!');
bool_exit := true;
exit;
end;
end;
function Tinker(idTools: cardinal; tItem: cardinal): boolean;
var
tmp_id2: cardinal;
zz,ext,cnt: integer;
begin
AddToSystemJournal('*Начинаю тинкерить*');
Check_Connect;
ToHide;
wait(100);
tmp_id2 := FindType(tItem, Backpack);
wait(100);
cnt := GetQuantity(tmp_id2);
if (tmp_id2 <> 0) AND (cnt >= Min_kolvo) then
begin
ext := 0;
repeat
AddToSystemJournal('*Пытаюсь сделать...*');
ClearJournal;
CheckLag;
WaitTargetObject(tmp_id2);
wait(100);
UseObject(idTools);
zz := 0;
repeat
wait(200);
zz := zz + 1;
Check_World_Save;
Check_Connect;
until (InJournal('You put the') <> -1 ) OR (InJournal('Tinkering failed') <> -1 ) OR (zz > 60);
wait(100);
if (InJournal('Tinkering failed') <> -1 ) then
begin
AddToSystemJournal('*Ничего не получилось*');
//result := false;
wait(700);
end;
if (InJournal('You put the') <> -1 ) then
begin
ClearJournal;
ext := ext + 1;
AddToSystemJournal('*Изделие готово, сделал ' +inttostr(ext)+ ' шт.*');
end;
tmp_id2 := FindType(tItem, Backpack);
wait(100);
cnt := GetQuantity(tmp_id2);
until (ext >= Make_Kolvo) OR (cnt < Min_kolvo);
if ext >= Make_Kolvo then
begin
AddToSystemJournal('*Работа окончена, изготовил ' +inttostr(ext)+ ' штук*');
result := true;
end;
end
else
begin
AddToSystemJournal('--->!!!*Ошибка модуля тинкера, мало железа*!!!');
result := false;
exit;
end;
end;
procedure Count_and_drop(tIt: cardinal; idPack: cardinal; drop_kol: integer);
var
tmp_id4: cardinal;
c: integer;
begin
Checklag;
UseObject(Backpack);
wait(200);
c := Count(tIt);
If c >= drop_kol then
begin
AddToSystemJournal('*Есть ' +inttostr(c)+ ' изделий, убираю все в мешок*');
wait(100);
tmp_id4 := FindType(tIt, Backpack);
if tmp_id4 <> 0 then
begin
If Drop_Item(tIt, idPack, -1) = true then
begin
AddToSystemJournal('*Изделия успешно выброшены*');
tmp_id4 := FindType(tIt, idPack);
c := GetQuantity(tmp_id4);
AddToSystemJournal('*В рюкзаке лежит ' +inttostr(c)+ ' изделий*');
end
else
begin
exit;
end;
end
else
begin
AddToSystemJournal('--->!!!*Ошибка выброса, изделие не найдено*!!!');
wait(100);
exit;
end;
end
else
begin
AddToSystemJournal('*В рюкзаке всего ' +inttostr(c)+ ' изделий*');
end;
end;
Begin
//Основной скрипт
//©Kynep
//
ClearJournal;
AddToSystemJournal('*Скрипт Тинкера запущен*');
Check_Connect;
CheckLag;
UseObject(backpack);
wait(1000);
UseObject(Sunduk_ID);
wait(1000);
UseObject(ResPack_ID);
wait(1000);
AddToSystemJournal('*Открыл сундуки*');
wait(100);
Init;
if bool_exit = false then
begin
Check_Food(food, Sunduk_ID);
AddToSystemJournal('*Подготовка окончена, поехали!*');
end;
wait(500);
a := 0;
while (GetSkillValue('Tinkering') < Skill_Val) AND (not dead) do
begin
if bool_exit = false then
begin
repeat
Check_Connect;
if (GetSkillValue('Tinkering') = 110) then
begin
repeat
checklag;
AddToSystemJournal('!!!*Скилл докачан*!!!');
WaitTargetObject(Self);
UseSkill('Anatomy');
wait(5000);
until Dead;
end;
if Drop_Grab_Iron(Min_kolvo, IngKolvo) = false then
begin
bool_exit := true;
exit;
end;
a := a + 1;
if a > 100 then
begin
Check_Food(food, Sunduk_ID);
a := 0;
end;
if Tinker(TTools_ID, tIng) = true then
begin
Count_and_drop(tIzdelie, IzdPack_ID, Drop_KolVo);
if IsSpirit = 1 then
begin
AddToSystemJournal('*Спирит Спик*');
UseSkill('Spirit Speak');
wait(3000);
end;
end
else
begin
wait(500);
end;
until (bool_exit = true);
exit;
end
else
begin
AddToSystemJournal('!!!*Выход из скрипта*!!!');
exit;
end
end;
if (GetSkillValue('Tinkering') = 110) then
begin
AddToSystemJournal('!!!*Скилл докачан*!!!');
bool_exit := true;
exit;
end;
if dead then
begin
AddToSystemJournal('--->!!!*Убили гады*!!!');
end;
End.