Показать сообщение отдельно
Старый 16.01.2012, 21:39   #18
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 44
Сказал Спасибо: 57
Имеет 3 спасибок в 2 сообщенях
vahes пока неопределено
По умолчанию

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

форм никаких нет. Нелюблю лишние окна. У програмы свой графический оконный движок внутри клиента.
Я почти также хотел, только чуть по другому, поскольку у меня есть форма (до своего графического движка я еще не дорос) она оперирует данными с бд и тд. В отдельном потоке запустить ф-ю хука которая кладет в буффер пакеты, и еще 1 поток который будет тикать и доставать с буфера пакеты и заносить данные в бд (ф-ю тика засунуть в таймер). Вот но я не догоню как запустить таймер в отдельном потоке, ему вроде как нужна родительская форма.
Ну и тут у меня еще куча вопросов, как таймер загружает систему, вот у меня в режиме радара работает 7 таймеров и когда я их включаю куллер заметно начинает шуметь( может это параноя ), может не стоит так много таймеров использовать?
И еще как себя поведет например программа если в буфер данные одновременно будут ложится одним потоком и извлекаться другим?
И как вообще лучше организовать буфер? Я думал, например, array[50] of
DELPHI Код:
TFixPck = packed record case Integer of     0:(ch: array[Word] of Char); 1:(bt: array[Word] of Byte);     2:(size: Word; id: Byte; dbt: array[0..65532] of Byte);   end;
(спер у xkorа) или вместо массива как в клиенте указатель, но блин я не силен в выделении/освобождении памяти под указатели 100% где-то напартачу.
Звиняйте, что так много вопросов, просто говнокодствую, а потом по 20 раз переписываю. Думаю лучше все точно узнать, и сделать сразу нормально. Спасибо за помощь.

Добавлено через 8 минут
Цитата:
Сообщение от ziher Посмотреть сообщение
У меня такой вопрос: как читать из памяти клиента НПЦ и игроков? ХП МП И СР разобрался, а это ума не приложу. буду благодарен за любой ответ.
Ну смотря как ты узнаешь хп мп и цп, если по фиксированым смещениям в памяти от этого приема лучше уйти сразу. Можно перехватывать пакеты как л2пх или уже расшифрованые хукая UNetworkHandler::AddNetworkQueue(NetworkPacket *) или UNetworkHandler:ispatchNetworkQueue(NetworkPacke t * *) или хукая ф-и которые эти пакеты вызывают UNetworkHandler::OnЧего-то там ну на этом мои познания заканчиваются , а вообще здесь вот http://coderx.ru/showthread.php?t=1077 и еще в этой ветке очень много полезной инфы по этому поводу. По 20 раз перечитывая одно и тоже на 21й обычно доходит (так делал я)

Последний раз редактировалось vahes, 16.01.2012 в 21:39. Причина: Добавлено сообщение
vahes вне форума   Ответить с цитированием
За это сообщение vahes нажился спасибкой от: