// // Исходник для ОСИ. Работает и на ран Уо // gloomia@gmail.com // // Автоквесты В Хертвуде. Карпа с отменой килл-квестов. // Добываем руники. // program HertwoodCarpRenicTools; uses allinc; 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[i] = '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.