Selivar 10 Опубликовано 17 февраля Жалоба Поделиться Опубликовано 17 февраля (изменено) Не для кого не секрет в ИТ есть комнаты в которых мобы респаются намного быстрее чем в остальных! Ниже скрипт на фарма такой комнаты, на полном автомате и заходом после рестарта, вам нужно настроить основной баф и баф ЛС, а также выставить радиус для фарма комнаты по прибытию. Если сохранить настроенный баф под именем SuperBuff , то бот после входа в игру попытается его бафнуть. uses SysUtils, Classes; var loggedIn:boolean; RestartByTime: boolean = false; RestartTime: TDateTime = StrToDateTime('15:01:00'); RestartDelay: TDateTime = StrToDateTime('00:02:00'); function ShellExecuteW(hwnd: integer; lpOperation, lpFile, lpParameters, lpDirectory: PChar; nShowCmd: integer): integer; stdcall; external 'Shell32.dll'; function keybd_event(bVk, bScan: byte; dwFlags, dwExtraInfo: integer): integer; stdcall; external 'user32.dll'; function ShowWindow(hwnd:cardinal; action:integer):boolean; stdcall; external 'user32.dll'; procedure disconnectMonitor; const login = 'LOGIN'; //<-- между '' пишем логин password = 'PASSWORD'; //<-- пароль gamePath = 'F:\L2_Interlude_L2KOT.RU_v4.1\system\l2.exe'; //<-- полный путь до l2.exe (например D:\Lineage\system\l2.exe) begin while engine.Delay(5000) do begin if (Time > RestartTime) and (Time < RestartTime + RestartDelay) then RestartByTime:= true; if (Engine.Status = lsOffline) or (Engine.Status = lsOff) or RestartByTime then begin loggedIn:=true; print('Disconnected'); Engine.FaceControl(0, false); Delay(1000); Engine.GameClose; Delay(1000); if(RestartByTime) then begin while (Time < RestartTime + RestartDelay) do begin Delay(90000); end; RestartByTime:= false; end; ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0); Delay(20000); // тут можно увеличить, если игра не успевает прогрузиться до ввода данных enterText(login); Engine.UseKey('Tab'); Delay(300); enterText(password); Delay(300); Engine.UseKey('Enter'); Delay(2000); Engine.UseKey('Enter'); Delay(2000); Engine.UseKey('Enter'); Delay(2000); Engine.UseKey('Enter'); Delay(20000); superBuff(); Engine.FaceControl(0, true); Engine.FaceControl(1, true); end; end; end; procedure enterText(const text: string); var i: cardinal; upperCase: boolean; begin for i:= 1 to length(text) do begin if isDigit(text[i]) then Engine.UseKey(text[i]) else begin upperCase:= text[i] = UpCase(text[i]); if upperCase then begin keybd_event($A0, 0, 0, 0); end; delay(20); Engine.UseKey(text[i]); end; delay(20); keybd_event($A0, 0, 2, 0); delay(50); end; end; // Thanks to Mariko (from l2kot.ru) function isDigit(ch: char): boolean; const digits = '0123456789'; var i: cardinal; begin result:= true; for i:= 0 to length(digits)-1 do if digits[i] = ch then exit; result:= false; end; // Thanks end // Возврат на спот Procedure returnSpotIT; Var obj: TL2NPC; Item: TL2Item; Enemy: TL2Live; Begin While engine.Delay(10000) Do Begin If User.Dead Then Begin delay (5000); Engine.FaceControl(1,false); Engine.gohome; delay(1000); Engine.gohome; delay(30000); //Телепорт Alt+B/// engine.bypasstoserver('_bbsloc'); delay(2000); engine.bypasstoserver( '_bbstop;51'); delay(2000); engine.bypasstoserver('_bbstop;517'); delay(2000); engine.bypasstoserver('_bbsteleport;teleport; 147725 -56517 -2780 5000'); delay(10000); End; If user.inrange(147725, -56517, -2976, 2780, 300) Then Begin Engine.FaceControl(0,false); Engine.FaceControl(1,false); Engine.MoveTo(147936, -55368, -2760); End; If User.inrange(147944, -55224, -2712, 250, 150) Then Begin delay(500); Engine.MoveTo(147944, -55224, -2712); Engine.SetTarget(31275); Engine.DlgOpen(); delay(550); Engine.DlgSel(3) ; delay(550); Engine.DlgSel(2) ; delay(550); Engine.DlgSel(11) ; delay(15000); Engine.MoveTo(186568,-75560,-2824); Engine.MoveTo(186264,-75560,-2728); Engine.MoveTo(185176,-75640,-2728); Engine.MoveTo(184808,-76344,-2728); Engine.MoveTo(184648,-78712,-2728); Engine.MoveTo(182216,-78680,-2728); Engine.MoveTo(181416,-78264,-2728); Engine.MoveTo(181336,-75320,-2728); Engine.MoveTo(177896,-75336,-2728); Engine.MoveTo(177896,-75864,-2728); Engine.MoveTo(177912,-77720,-3376); Engine.MoveTo(177912,-78632,-3376); Engine.MoveTo(177944,-79352,-3608); Engine.MoveTo(177960,-80728,-4024); Engine.FaceControl(0,true); Engine.FaceControl(1,true); End; End; End; procedure superBuff; begin engine.bypasstoserver('_bbshome'); delay(1000); engine.bypasstoserver('_bbsbuff;restore;SuperBuff'); delay(1000); engine.bypasstoserver('_bbsbuff;heal;70'); end; procedure CheckStuckThread(sec: integer); var Timer: int64; X, Y, Z: integer; begin while (Engine.Status <> lsOnline) do delay(555); // ожидаем входа в игру X:= User.X; Y:= User.Y; Z:= User.Z; // запоминаем текущие координаты Timer:= GetTickCount + sec*1000; // запоминаем время while Engine.delay(555) do begin // запускаем бесконечный цикл if (Engine.Status = lsOnline) then begin // если мы в игре, то if (User.Cast.EndTime = 0) // если мы ничего не кастуем в данный момент and (not User.Sitting) // и не сидим регенимся and (Abs(User.X-X) < 100) // (значение 10 можно менять) and (Abs(User.Y-Y) < 100) then begin // и наши координаты почти не изменились, тогда // пишем в логи (эту строчку можно закоментировать) if (GetTickCount > Timer) then begin // если прошло больше указанного времени, то // тормозим скрипт Print('Кажется я застрял'); // пишем в логи (эту строчку можно закоментировать) if Engine.UseItem(736) then begin // используем SoE while (User.Cast.EndTime <> 0) do delay(555); // ждем окончания каста delay(5555); // и ждем еще немного, чтобы прогрузиться end; //Телепорт Alt+B/// engine.bypasstoserver('_bbsloc'); delay(2000); engine.bypasstoserver( '_bbstop;51'); delay(2000); engine.bypasstoserver('_bbstop;517'); delay(2000); engine.bypasstoserver('_bbsteleport;teleport; 147725 -56517 -2780 5000'); // Goddard delay(10000); end; end else begin // если же мы ничего не кастуем, и наши координаты поменялись, то X:= User.X; Y:= User.Y; Z:= User.Z; // запоминаем новые координаты Timer:= GetTickCount + sec*1000; // обновляем таймер end; end; end; end; begin Script.NewThread(@returnSpotIT); if engine.status <> lsonline then loggedIn:= true else loggedIn:= false; Script.NewThread(@disconnectMonitor); Script.NewThread(@CheckStuckThread(120)); end. end. Изменено 17 февраля пользователем Selivar 1 Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти