//
// Исходник для ОСИ. Работает и на ран Уо
//
[email protected]
//
// Автоквесты В Хертвуде. Карпа с отменой килл-квестов.
// Добываем руники.
//
program HertwoodCarpRenicTools;
uses baru2;
const
// Кнопки Квест гампа
refuseQuest = '2';
acceptQuest = '4';
continueReward = '8';
acceptReward = '5';
// Тип сумок с ревардами
rewardBagType = $0E75;
// Задержки на гамп, добавление в квест-айтемы и прочее.
gumpDelay = 1250;
itemDelay = 1250;
// Треш
RewardBox = $0005CD00; //
questGiverID = $00000697; //
LogType = $1BD7; //Тип логов (дерево)
IronType = $1BF2; // Тип инготов купера (Цвет $0000)
CraftType = $0B5E; // Тип Вещи на квест.
CraftGump = '2'; // Ид кнопки гампа - квестовая вешь
SawType = $1028 ; // Тип пилы
SawGump = '58'; // Ид кнопки гампа - пила
TinkType = $1EB8; // Тип тинка
TinkGump = '23'; // Ид кнопки гампа - тулса
MaxW = 500; // Максимальныи вес. Идет на переплавку и сброс домои.
actionDelay = 800;
var x,y,i,k,p,r,rc:integer;
ctime:TDateTime;
procedure CheckSaw;
Begin
CheckSave;
AddToSystemJournal('Tinker tools: '+ intToStr( Count( TinkType ) ) );
AddToSystemJournal('Saw: '+intToStr(Count(SawType) ) );
FindType(IronType,backpack);
Wait(actionDelay);
AddToSystemJournal('Ingots: '+intToStr(FindFullQuantity) );
FindType(LogType,Ground);
Wait(actionDelay);
AddToSystemJournal('Board: '+intToStr(FindFullQuantity) );
while ( Count(SawType) < 5) do
begin
CheckSave;
FindType(TinkType,backpack);
Wait(actionDelay);
if FindCount < 2 then
begin
CheckSave;
UseObject(FindType(TinkType,backpack));
Wait(gumpDelay);
WaitGump(TinkGump)
Wait(itemDelay);
end
else
begin
repeat
CheckSave;
UseObject(FindType(TinkType,backpack));
Wait(gumpDelay);
WaitGump(SawGump);
Wait(itemDelay);
until Count(SawType) >= 5
end;
end;
End;
procedure QuestItem;
var i : integer;
Begin
RequestContextMenu( Self );
SetContextMenuHook( Self , 5);
CheckLag(30000);
Wait(actionDelay);
while (FindTypeEx(CraftType,$0000,Backpack,False) <> 0) do
begin
FindTypeEx(CraftType,$0000,Backpack,False);
If TargetPresent then TargetToObject(finditem);
CheckLag(30000);
Wait(actionDelay);
end;
If TargetPresent then CancelTarget;
End;
procedure GetReward;
Begin
//CloseSimpleGump();
UseObject(questGiverID);
CheckLag(30000);
Wait(gumpDelay);
WaitGump(continueReward);
CheckLag(30000);
Wait(actionDelay);
WaitGump(acceptReward);
CheckLag(30000);
Wait(itemDelay);
//CheckRewards; // Скинуть в лошадь.
CheckLag(30000);
Wait(actionDelay);
End;
procedure CreateItem;
Begin
GetResFromGround(LogType, $ffff, 90, 'досок');
while ( Count(CraftType) < 10) do
begin
CheckSave;
UseObject(FindType(SawType,backpack));
Wait(gumpDelay);
CheckLag(30000);
WaitGump(CraftGump);
Wait(itemDelay);
end;
CheckLag(30000);
WaitGump('0');
Wait(itemDelay);
End;
procedure checkRewards;
Begin
FindType(rewardBagType, Backpack);
CheckLag(30000);
Wait(actionDelay);
while ( FindType(rewardBagType, Backpack) <> 0 ) do
begin
MoveItem(finditem, 1, RewardBox, 0, 0, 0);
CheckLag(30000);
Wait(actionDelay);
end;
End;
procedure QuestOn;
var accept :Boolean;
a: integer;
b : TStringList;
i : Word;
Begin
accept := True;
while ( accept ) do
Begin
UseObject(questGiverID);
CheckLag(30000);
Wait(gumpDelay);
AddToSystemJournal('Ищем квест!!!');
b := TStringList.Create;
setsilentmode(true);
for a := 0 to GetGumpsCount - 1 do
GetGumpFullLines(a,b);
//GetGumpTextLines(a,b);
{'1 XmfHTMLGumpColor: 160 108 250 16 1073882 0 0 10000 22 Arch Support'}
for i := 0 to b.Count - 1 do
if b.Strings
= '1 XmfHTMLGumpColor: 160 108 250 16 1073882 0 0 10000 22 Arch Support' then
begin
accept := false;
AddToSystemJournal('Квест найден!');
WaitGump(acceptQuest);
Wait(gumpDelay);
break;
end;
wait(actionDelay);
end;
b.free;
End;
BEGIN
finddistance := 20;
SetARStatus(true); // Поставь задержку на реконект 10 сек
while true do
begin
CheckSaw;
CreateItem;
QuestOn;
QuestItem;
GetReward;
CheckRewards;
Wait(1000);
end;
END.