Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

[Инжект] Функция для работы с GUI

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 27.07.2012, 13:57   #16
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

я хочу сделать программку для чека аккаунтов по всем серверам.... тоесть чтобы проверяла какие персы на каком сервере

Добавлено через 13 минут
я заметил, что если сервер выбран уже и окно выбора сервера закрыто то в caption, что-то есть пытался посмотреть, что там увидел такое ?????, пробовал перекодировать в ansistring такой функцией utf8toansi ноль эмоций

Добавлено через 27 минут
думаю в таком случае проще пользоваться этим контролом Txt_CurrentServer

Добавлено через 36 минут
даже по этому контролу нормально не считывает( в memo передаются ???? и перекодировать никак не получается

Последний раз редактировалось vladoscom93; 27.07.2012 в 18:12. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 27.07.2012, 19:06   #17
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
я хочу сделать программку для чека аккаунтов по всем серверам.... тоесть чтобы проверяла какие персы на каком сервере

Я боюсь что ты словишь бан по IP на персонаже этак 10 . А точнее не боюсь, а уверен.
Ну я по крайней мере словил .
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------

Последний раз редактировалось krukovis; 27.07.2012 в 19:09.
  Ответить с цитированием
Старый 27.07.2012, 19:19   #18
 Разведчик
Аватар для vladoscom93
 
vladoscom93 никому не известный тип
Регистрация: 23.02.2011
Сообщений: 19
Популярность: 18
Сказал(а) спасибо: 30
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

можно ведь использовать список прокси)) как ты у себя сделал выбор сервера? перемещать выделение я могу, а вот организовать проверку не могу так как не получается считать нормально caption выделенного сервера
  Ответить с цитированием
Старый 28.07.2012, 09:02   #19
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от vladoscom93Посмотреть сообщение
я хочу сделать программку для чека аккаунтов по всем серверам.... тоесть чтобы проверяла какие персы на каком сервере

Я начал рыть структуру GUI и функции для нажатия на кнопки как раз с этой идеей - сделать поисковик персонажа на серверах.
Я знал, что оог чекеры ловят бан по IP. И думал, что ингейм чекер будет работать долго и счастливо. Но когда дошло дело до экспериментов - я схватил бан по IP очень очень быстро. И поэтому забил на эти испытания. Использовать прокси - это лишние проблемы для ингейм разработок.
Если уж хочешь делать чекер (а не просто купить его у FreePVP), то лучше воспользоваться его наработками, которые он выложил в паблик (где то рядом с этой темой) и сделать свой оог-чекер. Это и по времени быстрее в разы и есть нормальная возможность использовать прокси и вообще это со всех точек зрения будет правильнее.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------

Последний раз редактировалось krukovis; 28.07.2012 в 09:02. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 09.10.2012, 19:15   #20
 Разведчик
Аватар для крас
 
крас никому не известный тип
Регистрация: 24.11.2010
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Не работает программа, должна кликать по кнопке в окне улучшения предметов вылетает с ошибкой, пишу на lazarus
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
  StdCtrls, Win32WSControls,
  ExtCtrls, ComCtrls, Windows;

type
  TPoint = record
    x: longword;
    y: longword;
  end;

 PParams = ^TParams;
  TParams = packed record
    Packet: array [0..100] of byte;
    Param1,Param2,Param3: DWord;
    Param4: array [1..100] of widechar;
    WID: DWord;
  end;

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    ProgressBar2: TProgressBar;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private

    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  KlientWindow: HWND; //Handle клиента
  ProcessId: integer;
  hProcess: integer; //Идентификатор объекта
  HPMinValue: integer; //Минимальное значение ХП (из Edit1)
  MPMinValue: integer; //Минимальное значение МП (из Edit2)
  pt: TPoint;

implementation

{$R *.lfm}

{ TForm1 }
function Read_32(Addr: Dword): Dword;
var
  Value, rw: Dword;
begin
  ReadProcessMemory(hProcess, Pointer(addr), @Value, sizeof(Value), rw);
  Result := Value;
end;



procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;
  aParamsSize: DWord);
var
  hThread: THandle;
  lpNumberOfBytes: DWord;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    // ---- Выделяем место в памяти процесса, и записываем туда нашу функцию
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);

    // ---- Также запишем параметры к ней
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

    // ---- Создаем поток, в котором все это будет выполняться.
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);

    // ---- Ожидаем завершения функции
    WaitForSingleObject(hThread, INFINITE);

    // ---- подчищаем за собой
    CloseHandle(hThread);
    VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
  end
end;
procedure TargetCall(aPParams:PParams);Stdcall; //StdCall - обязательно, указывает что аргументы попадают в стек в обратном (стандартном) порядке
var                                         //
  P1: DWord;                                //
begin                                       //
  P1:=aPParams^.WID;                        //
  asm
    MOV EDI, P1                             // Вносим WID моба в регистр EDI
    MOV EBX, $00606A70                      // Вносим в свободный регистр адрес функции
    MOV EAX,DWORD PTR DS:[$A5B90C]          //
    PUSH EDI                                // ; /Arg1
    MOV ECX,DWORD PTR DS:[EAX+$20]          // ; |
    ADD ECX,$0EC                            // ; |
    CALL EBX                                // ; \elementc.00606A70
  end;
end;
procedure GUICommand(aParams: PParams); Stdcall;
var
  CallAddr: Pointer;
  win_struct, command_addr: Dword;
begin
  win_struct := aParams^.Param1;
  command_addr := aParams^.Param2;
  CallAddr := pointer($0063F890);
  asm
    pushad
    MOV ECX, win_struct
    push command_addr
    call CallAddr
    popad
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin

  timer1.Enabled := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
var

  WName, NoB: Dword;
  WinName: ansistring;
  par1, par2: Dword;
  bname: array [0..20] of char;
  aParams: TParams;
  resultf,buff:dword;
begin
  ReadProcessMemory(hProcess, Pointer($A59ACC), @WName, sizeof(WinName), NoB);
  ReadProcessMemory(hProcess, Pointer(WName + $18), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $08), @WName, sizeof(WName), NoB);
  //GUI
  // ReadProcessMemory (hProcess, Pointer(Wname+$4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $74), @WName, sizeof(WName), NoB);
  //окно
  // ReadProcessMemory (hProcess, Pointer(Wname+$98), @WName, sizeof(WName), NoB);
 // par1 := Wname;
    aParams.Param1 := Wname;

  ReadProcessMemory(hProcess, Pointer(Wname + $1C8), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $4), @WName, sizeof(WName), NoB);
  ReadProcessMemory(hProcess, Pointer(Wname + $8), @WName, sizeof(WName), NoB);
  //                                      17 ОК
  ReadProcessMemory(hProcess, Pointer(Wname + $1C), @WName, sizeof(Wname), NoB);
 // ReadProcessMemory(hProcess, Pointer(Wname), @bname, sizeof(bname), NoB);
  //Label1.Caption := AnsiToUtf8(bname);



  aParams.Param2 := WName;
   InjectFunc(hProcess, @GUICommand, @aParams, sizeof(aParams));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  KlientWindow := FindWindow(nil, PChar('Perfect World'));
  GetWindowThreadProcessId(KlientWindow, @ProcessId);
  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  pt.x := 300;
  pt.y := 300;
end;

//BaseAdress = 0x00A591E0
//GameAdress = 0x00A59ACC


procedure TForm1.Timer1Timer(Sender: TObject);
var
  HP, HPMax, MP, MPMax: integer;
  WHP, WHPMax, WMP, WMPMax, NoB: DWord;
begin
  try //На всякий случай заключаем в try...except, дабы в случай релога не засыпать пользователя ошибками
    ReadProcessMemory(hProcess, Pointer($A59ACC), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory(hProcess, Pointer(WHP + $34), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory(hProcess, Pointer(WHP + $494), @WHP, sizeof(WHP), NoB);
    //Читаем значение HP
    HP := integer(WHP); //Переводим Integer
    ReadProcessMemory(hProcess, Pointer($A59ACC), @WHPMax, sizeof(WHPMax), NoB);
    ReadProcessMemory(hProcess, Pointer(WHPMax + $34), @WHPMax, sizeof(WHPMax), NoB);
    ReadProcessMemory(hProcess, Pointer(WHPMax + $4DC), @WHPMax, sizeof(WHPMax), NoB);
    //Читаем значение MaxHP
    HPMax := integer(WHPMax); //Переводим Integer
    ReadProcessMemory(hProcess, Pointer($A59ACC), @WMP, sizeof(WMP), NoB);
    ReadProcessMemory(hProcess, Pointer(WMP + $34), @WMP, sizeof(WMP), NoB);
    ReadProcessMemory(hProcess, Pointer(WMP + $498), @WMP, sizeof(WMP), NoB);
    //Читаем значение MP
    MP := integer(WMP); //Переводим Integer
    ReadProcessMemory(hProcess, Pointer($A59ACC), @WMPMax, sizeof(WMPMax), NoB);
    ReadProcessMemory(hProcess, Pointer(WMPMax + $34), @WMPMax, sizeof(WMPMax), NoB);
    ReadProcessMemory(hProcess, Pointer(WMPMax + $4E0), @WMPMax, sizeof(WMPMax), NoB);
    //Читаем значение MaxMP
    MPMax := integer(WMPMax); //Переводим Integer
    ProgressBar1.Position := round(HP * 100 / HPMax);
    //Присваиваем процентное значение HP Gauge1.Progress
    ProgressBar2.Position := round(MP * 100 / MPMax);
    //Присваиваем процентное значение MP Gauge2.Progress
  except
  end;
  if ProgressBar1.Position < HPMinValue then
    //Если HP меньше минимального
  begin
    SendMessage(KlientWindow, WM_KEYDOWN, VK_F1, 0); //то нажимаем
    SendMessage(KlientWindow, WM_KEYUP, VK_F1, 0); //клавишу F1
  end;
  if ProgressBar2.Position < MPMinValue then
    //Если MP меньше минимального
  begin
    SendMessage(KlientWindow, WM_KEYDOWN, VK_F2, 0); //то нажимаем
    SendMessage(KlientWindow, WM_KEYUP, VK_F2, 0); //клавишу F2
  end;
  SetWindowPos(KlientWindow, 0, 0, 0, 0, 0, 3);


  postmessage(KlientWindow, WM_LBUTTONDOWN, 0, (Pt.x shl 16) + Pt.y);
  postmessage(KlientWindow, WM_LBUTTONUP, 0, (Pt.x shl 16) + Pt.y);
end;




end.
теперь вылетает клиент

Последний раз редактировалось крас; 10.10.2012 в 10:33.
  Ответить с цитированием
Старый 28.09.2013, 00:46   #21
 Разведчик
Аватар для pw.lancer
 
pw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известенpw.lancer скоро будет известен
Регистрация: 11.05.2011
Сообщений: 41
Популярность: 305
Сказал(а) спасибо: 43
Поблагодарили 12 раз(а) в 7 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от krukovisПосмотреть сообщение
Всем привет!
Хочу поделиться с вами функцией исполняющей команды контролов на любых формах в игре.
...

С обновлением "На перекрестке миров" можно пользоваться, с минимальной поправкой, касающейся перебора контролов окна.
В целом, офсеты GUI остались теми же, за исключением списка контролов. Раньше указатель "next ctrl struct" был по смещению 0x04, теперь по смещению 0x0C. Указатель "this ctrl struct" остался по смещению 0x08. Что касается "закрывателей" диалоговых окон с НИП - обратите внимание, что кнопка "back" в списке имеет порядковый номер 1, а не 3, как раньше. Ну и списки контролов остальныч окон лучше заново проверить, если кто пользуется порядковыми номерами и функциями WinStruct() и CtrlCommandAddr().
  Ответить с цитированием
Старый 05.10.2013, 16:45   #22
 Разведчик
Аватар для ukurenijboter
 
ukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известен
Регистрация: 19.08.2011
Сообщений: 25
Популярность: 465
Сказал(а) спасибо: 2
Поблагодарили 17 раз(а) в 9 сообщениях
Отправить сообщение для ukurenijboter с помощью Skype™
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Испробовал данную функцию. Работает. Возникла проблема, не могу залогиниться нормально. Насколько я понял, нужно записать указатель контрола (для поля логина имеет название "DEFAULT_Txt_Account") в ...+E8, затем создать строку, с логином и занести указатель на нее по адресу ...+E8+13FC. Затем, тоже самое для пароля. Все так и делаю. Результат - поле становится активным и появляется введенный логин, затем пароль, все как бы круто. Если попытаться после этого ткнуть на любую клавишу, будь то вход или выход или другую, клиент крашится(в случае, если ввести только логин или парль - аналогично)...Что я делаю не так? Сталкивался кто нибудь с подобной проблемой?

Проблема решена. Причина неполадок - неправильный формат записи текстовой строки.
________________
Skype: ScriptoZ
ЗАПРОС АВТОРИЗАЦИИ=ИГНОР

Последний раз редактировалось ukurenijboter; 06.10.2013 в 09:40.
  Ответить с цитированием
Старый 16.10.2013, 13:07   #23
 Разведчик
Аватар для ukurenijboter
 
ukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известен
Регистрация: 19.08.2011
Сообщений: 25
Популярность: 465
Сказал(а) спасибо: 2
Поблагодарили 17 раз(а) в 9 сообщениях
Отправить сообщение для ukurenijboter с помощью Skype™
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Столкнулся с проблемой: при попытке инжектировать нажатие кнопки "выйти" (в "предбаннике", со списком персонажей) всегда происходит краш клиента. Все остальные инжекты кнопок у меня проходят нормально. Хотел сделать не только "автологер", но и "авторелогер". Сталкивался кто-нибудь с подобной проблемой?
________________
Skype: ScriptoZ
ЗАПРОС АВТОРИЗАЦИИ=ИГНОР
  Ответить с цитированием
Старый 17.10.2013, 11:29   #24
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

А персонаж выбран?
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 17.10.2013, 11:47   #25
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

При крафте яшмы, нужно выбрать 2-й пункт со списка. Не подскажет кто как это сделать?
________________
backup - акт проявления трусости
  Ответить с цитированием
Старый 18.10.2013, 09:37   #26
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от pw.assistantПосмотреть сообщение
При крафте яшмы, нужно выбрать 2-й пункт со списка. Не подскажет кто как это сделать?

Крафт нужно осуществлять пакетами. А для того, чтобы что-то выбирать нужно научиться инжектить нажатия мыши.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 18.10.2013, 10:38   #27
 Разведчик
Аватар для ukurenijboter
 
ukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известен
Регистрация: 19.08.2011
Сообщений: 25
Популярность: 465
Сказал(а) спасибо: 2
Поблагодарили 17 раз(а) в 9 сообщениях
Отправить сообщение для ukurenijboter с помощью Skype™
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от krukovisПосмотреть сообщение
А персонаж выбран?
________________

эмм, а зачем нужно выбирать чара, при инжекте кнопки выход? Попробовал с выбором чара, результат аналогичный...
Пока что решаю данную проблему посредством длинного костыля: запускается в скрытом режиме котомания, на этот сервер/аккаунт, а после того, как чара выбьет, котомания кикается и инжектируется выход в "предбанник", что благополучно приводит к выходу в меню с логин паролем. Метод так себе, но работает.
________________
Skype: ScriptoZ
ЗАПРОС АВТОРИЗАЦИИ=ИГНОР

Последний раз редактировалось ukurenijboter; 18.10.2013 в 13:41.
  Ответить с цитированием
Старый 18.10.2013, 16:48   #28
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от krukovisПосмотреть сообщение
Крафт нужно осуществлять пакетами

Да я так и делаю, но вся проблема в том, что после запуска игры хотя бы раз нужно открыть окно с крафтом, неважно какое, иначе возможен краш клиента. Просто показ окна с крафтом не катит, нужно его именно вызвать выбором из списка.
________________
backup - акт проявления трусости
  Ответить с цитированием
Старый 19.10.2013, 15:09   #29
 Разведчик
Аватар для ukurenijboter
 
ukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известен
Регистрация: 19.08.2011
Сообщений: 25
Популярность: 465
Сказал(а) спасибо: 2
Поблагодарили 17 раз(а) в 9 сообщениях
Отправить сообщение для ukurenijboter с помощью Skype™
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Столкнулся с другой проблемой: как нажимать на листбокс? Как выбрать элемент листбокса понятно, а вот как нажать? Инжект просто игнорится. Не всегда возможно заменить это действие нажатием какой нибудь кнопки типа "выбрать" как при выборе сервера, просто потому что такой кнопки может не быть) и далеко за примером ходить не надо, любое действие через нпс предполагает такой листбокс...Кто и как решал подобную проблему?
________________
Skype: ScriptoZ
ЗАПРОС АВТОРИЗАЦИИ=ИГНОР
  Ответить с цитированием
Старый 23.10.2013, 11:40   #30
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от ukurenijboterПосмотреть сообщение
Столкнулся с другой проблемой: как нажимать на листбокс? Как выбрать элемент листбокса понятно, а вот как нажать? Инжект просто игнорится. Не всегда возможно заменить это действие нажатием какой нибудь кнопки типа "выбрать" как при выборе сервера, просто потому что такой кнопки может не быть) и далеко за примером ходить не надо, любое действие через нпс предполагает такой листбокс...Кто и как решал подобную проблему?

Информация есть тут http://zhyk.ru/forum/showthread.php?t=438000
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Функция Xaker-style Общение разработчиков 7 16.03.2012 20:36
[Обсуждение] Функция Магнит ˆGeFoRcEˆ Общение и обсуждение, архив Point Blank 5 07.01.2012 10:50
[Помогите!] Функция открытия Rakim Вопросы и ответы, обсуждения 1 23.07.2011 09:40
[Информация] Функция открыта Vadimka999 Общение и обсуждение, архив Point Blank 5 10.05.2010 18:58

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 03:45.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net