Code: Select all
program tinkering; { 30 марта 2006 г. }
var marker, ingot_type, item_type : Word;
menu_type, menu_item_type : String;
spirit_speak, smelt : Boolean;
my_timer, quantity : Integer;
time_begin : TDateTime;
container : Cardinal;
procedure check_res(r_type : Word; r_quantity : Integer; r_container : Cardinal);
begin
FindTypeEx(r_type,$FFFF,backpack,false)
if FindFullQuantity < r_quantity then
begin
while FindTypeEx(marker,0,r_container,false) = 0 do
begin
AddToSystemJournal('Открываю контейнер с ресурсами')
UseObject(r_container)
wait(1000)
end
FindTypeEx(r_type,$FFFF,r_container,false)
AddToSystemJournal('Кол-во ресурсов в контейнере: '+IntToStr(FindFullQuantity))
if FindQuantity <= r_quantity*10 then
begin
AddToSystemJournal('Ресурсы закончились')
SetARStatus(false)
Disconnect
Exit
end
else
begin
Grab(finditem,r_quantity*10)
wait(1000)
end
end
end;
Begin
spirit_speak := true { использовать скилл Spirit Speak }
smelt := true { true - плавить; false - складывать в container }
marker := $0E20 { bloody bandage, должны находится в container }
container := $XXXXXXXX { контейнер с ресурсами }
ingot_type := $1BF5 { тип слитков, silver ingots }
item_type := $1F0A { тип предмета, silver necklace }
menu_type := 'Jewelry' { название меню }
menu_item_type := 'silver necklace' { название предмета в меню }
quantity := 2 { min небходимое кол-во слитков для изготовления }
FindDistance := 3
ClearJournal
SetWarMode(false)
SetARStatus(true)
if not connected then connect
repeat
while (dead = false) and (connected = true) do
begin
if (Timer > my_timer) and (spirit_speak = true) then
begin
useskill('Spirit Speak')
my_timer := Timer + 60 * 1000 { Spirit Speak используется через 60 сек. }
time_begin := Now
WaitJournalLine(Now, 'netherworld|battle', 30000)
if InJournalBetweenTimes('battle', time_begin, Now) <> -1 then
begin
SetWarMode(false)
wait(1000)
end
end
check_res(ingot_type, quantity, container)
AutoMenu(menu_type, menu_item_type)
UseObject(FindType($1EBC, backpack)) { tinker tools }
wait(1500)
while FindTypeEx(item_type,0,backpack,false) <> 0 do
begin
if (FindTypeEx($1EBA, $FFFF, ground, false) <> 0) and (smelt = true) then
begin
UseObject(finditem)
WaitTargetType(item_type)
WaitJournalLine(Now, 'составляют|часто', 5000)
wait(4000)
end
else
begin
if smelt then AddToSystemJournal('Smelt device not found!')
FindTypeEx($FFFF,0,container,false)
AddToSystemJournal('Кол-во предметов в контейнере: '+IntToStr(FindCount))
if FindCount < 255 then MoveItem(FindType(item_type, backpack), 1, container, 0, 0, 0)
else
begin
AddToSystemJournal('Container is full!')
SetARStatus(false)
Disconnect
Exit
end
end
end
WaitJournalLine(Now, 'Вы успешно сделали|Ваша попытка провалилась', 30000)
{ если время производства больше 30 сек. увеличьте 30000 в предыдущей строке }
end
if dead then
begin
AddToSystemJournal('Умерли')
SetARStatus(false)
Disconnect
Exit
end
until false
End.
Заранее спасибо.