![](/zhyk/misc/quotes/quot-top-left.gif) |
Цитата: |
![](/zhyk/misc/quotes/quot-top-right.gif) |
|
|
|
|
|
|
|
Вопрос первый: Администрация игры вообще это каким либо образом "палит"? К ним приходит отчет о неправильных пакетах пришедших на сервер? Или всем пофиг? |
|
![](/zhyk/misc/quotes/quot-bot-left.gif) |
|
![](/zhyk/misc/quotes/quot-bot-right.gif) |
|
В оригинальном ядре не предусмотрено никаких "отчетов" о неправильных пакетах, иначе это было бы огромной нагрузкой на сервер, да и отключало бы от сервера в таких случаях.
![](/zhyk/misc/quotes/quot-top-left.gif) |
Цитата: |
![](/zhyk/misc/quotes/quot-top-right.gif) |
|
|
|
|
|
|
|
Вопрос второй: существует ли связь между инжектами, пакетами и GUI?
Или вся троица работает параллельно? То есть опять таки видит ли сервер что на момент отправки пакета на открытие диалога в GUI он уже был открыт(диалог с НПС)? |
|
![](/zhyk/misc/quotes/quot-bot-left.gif) |
|
![](/zhyk/misc/quotes/quot-bot-right.gif) |
|
Инжекты - это исполнение кода в чужом процессе, приводящее к вызову определенных функций.
Пакеты - это частный случай инжекта - вызывается функция отправки пакета.
О GUI ниже.
Сервер не знает ничего об интерфейсе, так как это лишь рисунок, который клиент генерирует по данным, полученным с сервера, и некоторой локальной информации.
![](/zhyk/misc/quotes/quot-top-left.gif) |
Цитата: |
![](/zhyk/misc/quotes/quot-top-right.gif) |
|
|
|
|
|
|
|
И собственно вопрос о самом GUI: Что есть "контрол"? Как к ним обращаться? Или у каждого окна как и у окна ПВ есть свои свойства?
Есть ли у них handle? И если да, то я могу получив этот handle использовать функции WinApi для активации и прочего? |
|
![](/zhyk/misc/quotes/quot-bot-left.gif) |
|
![](/zhyk/misc/quotes/quot-bot-right.gif) |
|
GUI - графический интерфейс - это набор структур кнопок/фреймов/диалогов/чекбоксов и т.д., которые и называются контролами. GUI имеет как минимум свой обработчик событий и рендерер (отрисовщик). Грубо говоря, можно изменить состояние чекбокса с "выкл" на "вкл", а рендерер на следующий кадр узнает это и отрисует нажатый чекбокс. Каждый элемент, в зависимости от типа (кнопка/скролл/editbox) имеет свои свойства. Например, кнопка может быть нажатой или отжатой, у скролла есть текущая позиция относительно нулевого значения, у editbox'а есть какой-то текст и может быть свойство read-only.
GUI система специфична для игрового движка, на котором написано PW. Конечно, к WinApi она никакого отношения не имеет. Чтобы использовать GUI, нужно в первую очередь знать структуры контролов и адреса функций для инжекта.
Зачем нужны функции? Пусть стоит задача "вбить логин и пароль в соответствующие EditBox'ы".
Вариант 1: явно вбить текст в конкретное свойство требуемый текст и радоваться жизни.
Вариант 2: найти функцию AUIEditBox::SetText и вызывать её с двумя параметрами: ecx = указатель на контрол и текст 1-м аргументом.
Второй вариант лучше. Почему? Потому что внутри этой функции совершается множество других действий, которые нужны, чтобы изменение текста контрола было правильно обработано.
Я советую разобраться с пакетами и инжектами (assembler мастхэв), а потом заниматься GUI'ем. Еще для GUI пригодится знание работы виртуальных функций в C++. Если он очень уж нужен, можно бездумно пользоваться цепочками оффсетов, которые есть в соседних темках, ничего страшного в этом нет.