Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Автоматический логин

Moschnenky написал(а):
Эт получается при вылитании дисконекта сам обратно заходит и дальше продолжает шпилить?
Этот вариант скрипта закрывает клиент, открывает его и логинится. Ну типа так должно быть, у меня не пашет...
Вот вариант скрипта который насчитан на дисконект/дроп с сервера. Работает отлично без касяков. (скрипт где-то с форума нашел) :

Код:
const
  VK_BACK: cardinal = $8;
  VK_TAB: cardinal = $9;
  VK_RETURN: cardinal = $D;


  login: string = 'loginnnnnnnn';
  password: string = 'passsssssss';
  delayTime: cardinal = 2000;


//--
procedure clear;
var
  i: integer;
begin
  for i:=0 to 32 do
    engine.useKey(VK_BACK);
end;


//--
var
  i: integer;
begin
while true do begin //бесконечный цикл
if engine.status<>lsonline then begin  // its when user not online
  clear;


  engine.enterText(login);


  delay(delayTime);


  engine.useKey(VK_TAB);


  delay(delayTime);


  engine.enterText(password);


  for i:=0 to 3 do
  begin
    delay(delayTime);


    engine.useKey(VK_RETURN);
  end;
  end;
end;
end.
 
Moschnenky написал(а):
Эт получается при вылитании дисконекта сам обратно заходит и дальше продолжает шпилить?
Да именно так.
 
ДИВНЫЙ СКРИПТ....ОЧЕНЬ ПРОСТОЙ И СТАБИЛЬНЫЙ .РЕСПЕКТ ХОЗЯИНУ......
 
Как обьединить скрипты
Пример

uses SysUtils;

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';

procedure disconnectMonitor;
const
login = 'loginnn';
password = 'passsssss';
gamePath = 'C:\Program Files (x86)\NCsoft\Lineage II\system\l2.exe';
begin
while Delay(3000) do begin
if Engine.Status = lsOffline then begin
print('avtologin');
Engine.FaceControl(0, false);
Delay(1000);
Engine.GameClose;
Delay(10000);
ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
Delay(10000);
enterText(login);
Delay(5000);
Engine.UseKey('Tab');
Delay(5000);
enterText(password);
Delay(5000);
Engine.UseKey('Enter');
Delay(2000);
Engine.UseKey('Enter');
Delay(2000);
Engine.UseKey('Enter');
Delay(2000);
Engine.UseKey('Enter');
Delay(10000);
Engine.LoadZone('11111');
Engine.loadconfig('sdffffffff');
Engine.FaceControl(0, 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) then
Engine.UseKey(text)
else begin
upperCase:= text = UpCase(text);
if upperCase then begin
keybd_event(20, 0, 1, 0);
keybd_event(20, 0, 2, 0);
Engine.UseKey(text);
delay(10);
keybd_event(20, 0, 1, 0);
keybd_event(20, 0, 2, 0);
end else
Engine.UseKey(text);
end;
Delay(50);
end;
end;

function isDigit(ch: char): boolean;
const
digits = '013456789';
var
i: cardinal;
begin
result:= false;
for i:= 0 to length(digits) do
if digits = ch then begin
result:= true;
exit;
end;
end;

begin
Script.NewThread(@disconnectMonitor);
end.
и
Код:
var obj: TL2NPC;
obj2: TL2Effect;

Enemy: TL2Live;
Begin
while 1<>2 do begin // бесконечный цикл


if User.Dead then // умер- вырубаем интерфейс, возврат в город и пауза 15 секунд
begin
Engine.FaceControl(0,false);
Engine.gohome;
delay(15000);
end;

// это точки респа в городе viewtopic.php?f=15&t=74
//Dion
begin 
if (not User.Buffs.ById(1363, Obj))  then begin    //Если нет бафа (вика)
Engine.Facecontrol(0,False);
delay(15000);
engine.bypasstoserver('_bbshome',true);
delay(1500);
engine.bypasstoserver('_bbsbuffer',true);
delay(1500);
engine.bypasstoserver('_bbscastgroupbuff 1 Player',true);
delay(15000);
engine.bypasstoserver('_bbshome',true);
delay(1500);
engine.bypasstoserver('_cbbsteleportlist',true);
delay(1500);
engine.bypasstoserver('_bbspage:teleport/location',true);
delay(1500);
engine.bypasstoserver('_bbspage:teleport/location/teleport_town_locations_dion',true);
delay(1500);
engine.bypasstoserver('_cbbsteleport_19_2',true);
delay(1500);
Engine.UseItem(8596);
delay(1500);
end;
 end;

if User.inrange(17225, 114173, -3424, 250, 150) then begin // бежим к ГК
delay(2550);        
Engine.FaceControl(0,False); //выключаем бота

Engine.MoveTo(17277, 114165, -3466);  //бежим к ГК
Engine.SetTarget(30483); // таргет на Нужного гк
Engine.DlgOpen(); //вызываем диологовое окно 
Engine.DlgSel(1); // выбираем номер строки
delay(2550);

//Прокладываю маршрут на наш спот
Engine.MoveTo(17724, 114574, -11699);
Engine.MoveTo(17722, 115764, -11875);
Engine.MoveTo(17716, 117289, -12097);
Engine.MoveTo(16440, 117313, -12191);
Engine.MoveTo(16247, 116928, -12190);
Engine.MoveTo(15497, 116927, -12112);
Engine.MoveTo(14904, 117480, -12072);
Engine.MoveTo(14072, 118296, -12064);
Engine.MoveTo(14152, 119816, -12064);
Engine.MoveTo(15096, 119992, -12064);
Engine.MoveTo(15272, 120264, -12064);


Engine.LoadZone('********');
Engine.loadconfig('********');
Engine.FaceControl(0,true); // включается атака
end;
delay(550);
end; delay(550);
end.
 
@pashatechnique, у меня такая же проблема. Подозреваю что это на крякнутом адрике не пашет такая пунктуация.
 
Минусы:
нет проверки раскладки для окна игры
нет проверки на ошибки при подключении

Если окно уже было на боте, но его дисконектит то... Не вижу смысла в закрытии клиента, потом опять грузить и вводить логин/пасс. достаточно закрыть окно дисконекта энтером, затем подождать достаточно времени(ну 1-3 минуты думаю хватит), чтобы окно гарантированно прогрузилось до окна логин/пароля, там нас уже ждет введенный логин/пасс, остается лишь нажать TAB и войти по обычной схеме. Как вам? )
procedure disconnectMonitor;
begin
if not(Engine.Status = lsOnline) then begin
Print('ОШИБКА: Персонаж вне игры, попытка подключения...');
Engine.FaceControl(0, false); // выкл. бота
Engine.UseKey('Enter'); // Закрываем окно дисконекта
print('Ожидаю выхода на экран ввода логин/пароль...');
Delay(20000); // ждем прогрузки окна логина/пароля...
Engine.UseKey('Tab'); // переводим курсор в поле пароля
Delay(1300);
Engine.UseKey('Enter'); // жмем "подключиться"
Delay(4000);
Print('Выбор персонажа...');
Engine.UseKey('Enter'); // жмем "выбор сервера"
Delay(4000);
Engine.UseKey('Enter'); // жмем "играть" вокне выбора персонажа
Delay(4000);
//Engine.UseKey('Enter'); // на всякий случай :)
Print('Вход в игру...');
Delay(60000); // заходим в игру...
end;
end;
 
@GLaDOS, Не очень, это только на конкретный сервер подойдет далеко не везде сохраняется пароль при дисконекте, а то и логин, на некоторых серверах при нажантии ок - закрывается клиент и т.д.
 
@Ivanius, что делать, если в пароле есть заглавная буква?
на дефо и некоторых других серверах в пароле обязательно должна быть заглавная буква
а твой скрипт пишет все буквы маленькими
 
Как я понимаю эт штука не будет работать на СмартГварде ?
 
Dantello, для ввода заглавных букв надо немного переделать функцию entertext. Добавить проверку на состояние кнопки CapsLock, примерно так

if not GetKeyState(20) and 1 = 0 then begin keybd_event(20, 0, 1, 0);
keybd_event(20, 0, 2, 0);
Engine.UseKey(text);
end
Почему на серваках со смартгуардом перестали работать функции UseKey и WinAPI функции (например для иммитации нажатия клавиш)? Теперь на таких серваках автоматом не войдешь в игру. Можно как-то исправить?
 
uses SysUtils;

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';

procedure disconnectMonitor;
const
login = 'lgn';
password = 'pwd';
gamePath = 'F:\l2gf\system\l2.exe';
begin
while Delay(3000) do begin
if Engine.Status = lsOffline then begin
print('dc');
Engine.FaceControl(0, false);
Delay(1000);
Engine.GameClose;
Delay(1000);
ShellExecuteW(0, 'open', PChar(gamePath), nil, nil, 0);
Delay(10000);
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(10000);
Engine.FaceControl(0, 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) then
Engine.UseKey(text)
else begin
upperCase:= text = UpCase(text);
if upperCase then begin
keybd_event(20, 0, 1, 0);
keybd_event(20, 0, 2, 0);
Engine.UseKey(text);
delay(10);
keybd_event(20, 0, 1, 0);
keybd_event(20, 0, 2, 0);
end else
Engine.UseKey(text);
end;
Delay(50);
end;
end;

function isDigit(ch: char): boolean;
const
digits = '013456789';
var
i: cardinal;
begin
result:= false;
for i:= 0 to length(digits) do
if digits = ch then begin
result:= true;
exit;
end;
end;

begin
Script.NewThread(@disconnectMonitor);
end.
пожалуй самый полезный скрипт,но есть беда...
а собственно http://prntscr.com/aoprqe
как бороться с этим чудо-юдо-зверем?
 
Здравствуйте, можно как то изменить этот скрипт для контроля 2х окон? потому как если скрипт запускается на 1 окно все работает прекрасно, а если 2 он сходит с ума и не логинит окна. Запускается только 1но окно.
 
МаргаритА, конечно можно сделать)))
 
cravil написал(а):
const VK_BACK: cardinal = $8; VK_TAB: cardinal = $9; VK_RETURN: cardinal = $D; login: string = 'loginnnnnnnn'; password: string = 'passsssssss'; delayTime: cardinal = 2000; //-- procedure clear; var i: integer; begin for i:=0 to 32 do engine.useKey(VK_BACK); end; //-- var i: integer; begin while true do begin //бесконечный цикл if engine.status<>lsonline then begin // its when user not online clear; engine.enterText(login); delay(delayTime); engine.useKey(VK_TAB); delay(delayTime); engine.enterText(password); for i:=0 to 3 do begin delay(delayTime); engine.useKey(VK_RETURN); end; end; end; end.
работает на ура есть проблема , после входа в игру он сразу в белый чат пишит имя и пароль тем самым меня палит))) т.е после входа в игру он тупо пишит в чат данные от моего акка
 
Люди подскажите в какую сторону документации копать, что бы обойти SmartGuard. Так как с c++, знаком а вот с winApi и что блокирует sg не знаю. Спасибо.
 
Использовал скрипт из этой темы.

При входе в игру скрипт вводил логин и пароль в общий чат и отправлял) Спасла только привязка по HWID
 
saine написал(а):
работает на ура есть проблема , после входа в игру он сразу в белый чат пишит имя и пароль тем самым меня палит))) т.е после входа в игру он тупо пишит в чат данные от моего акка
Странно, у меня нет такой проблемы.
Но вот не пойму, в каком месте этого скрипта нажимается кнопка подтверждения после отвала от сервака, т.е. когда выводиться инфа что мы отключились от сервера, подскажите кто знает

uses Classes, SysUtils;
const
VK_BACK: cardinal = $8;//BackSpace
VK_TAB: cardinal = $9; //Tab
VK_RETURN: cardinal = $D;//Ener
login: string = 'login';
password: string = 'pass';
delayTime: cardinal = 5000;

var
i: integer;

procedure clear;
var
i: integer;
begin
for i:=0 to 32 do
engine.useKey(VK_BACK);
end;

begin
while true do //бесконечный цикл
begin
if engine.status<>lsonline then// its when user not online
begin
clear;
engine.enterText(login);
delay(delayTime);
engine.useKey(VK_TAB);
delay(delayTime);
engine.enterText(password);
for i:=0 to 3 do
begin
delay(delayTime);
engine.useKey(VK_RETURN);
print('for i:=0 to 3 do');
end;
end;
delay(1000);
end;
end.

Кстати изменил чуток, чтобы работал на крякнутых адр...
 
Как это нет, проверка то как раз есть, она же в скрипте присутствует. Да я уже разобрался, и понял почему иногда случается что скрипт пишет логин пароль в общий чат. Просто нужно было задержку вставить в конец тела проверки дисконекта. Скрипт этот хорош, но только тогда когда все гладко. А если скажем логин сервер отвалился, и зависаем после ввода логин и пароль, то этот скрипт споткнется на этом месте, и не произойдет больше, клиент так и останется висеть. Так же закрытие/крит клиента не предусмотренно. Но хоть что то, есть теперь от чего отталкнуться.
 
Назад
Сверху