Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 29.11.2011, 02:00   #11
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 44
Сказал Спасибо: 57
Имеет 3 спасибок в 2 сообщенях
vahes пока неопределено
По умолчанию

спасибо xkor, ты мозг )
vahes вне форума   Ответить с цитированием
Старый 29.11.2011, 10:16   #12
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

vahes, я натц)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 29.11.2011, 17:00   #13
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

- привет мозг!
- привет клтуху, орехи принес?
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 15.01.2012, 17:35   #14
Пользователь
 
Регистрация: 04.11.2009
Сообщений: 44
Сказал Спасибо: 57
Имеет 3 спасибок в 2 сообщенях
vahes пока неопределено
По умолчанию

Ребяты, я читал вы в своих программах создаете несколько потоков (для прорисовки радара, функций обработки пакетов тд.), вот и до меня дошло, что без этого никак. Использую system.BeginThread для главного потока формы, и в нем как бы все обрабатывалось. Хотел сделать, чтобы функция хука и добавления в свой буффер были в отдельном потоке, но недопру, как сделать, чтобы поток постоянно висел. Пробовал запускать в другом потоке еще 1 форму и не показывать или показывать, а потом скрывать - ошибка Canvas does not allow drawing, если показывать все нормально, но все же иногда тоже вылазит эта ошибка, и интерефейс как бы перенасыщен изобилием форм.
Будьте добры подскажите как правильно запустить поток чтобы он постоянно висел или как вы организовываете в отдельных потоках буферизацию пакетов и их дальнейшею обработку.
vahes вне форума   Ответить с цитированием
Старый 16.01.2012, 01:26   #15
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

vahes, поток завершается тогда когда завершается которую ты задал выполнять в этом потоке, соответственно чтобы он не завершился надо чтобы эта функция не завершилась)

ЗЫ VCL рассчитано на роботу только в основном потоке, из других потоков не то что создавать а даже обращаться к VCL контролам настоятельно не рекомендуется. Оно в принципе может и будет работать пока работа с контролами в разных потоках не пересекается, но никто не знает когда она может пересечься и что в этом случае произойдет...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 16.01.2012, 10:38   #16
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

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

форм никаких нет. Нелюблю лишние окна. У програмы свой графический оконный движок внутри клиента.
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
За это сообщение mira нажился спасибкой от:
Старый 16.01.2012, 19:38   #17
Новичок
 
Регистрация: 10.01.2010
Сообщений: 9
Сказал Спасибо: 11
Имеет 0 спасибок в 0 сообщенях
ziher пока неопределено
По умолчанию

У меня такой вопрос: как читать из памяти клиента НПЦ и игроков? ХП МП И СР разобрался, а это ума не приложу. буду благодарен за любой ответ.
ziher вне форума   Ответить с цитированием
Старый 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 нажился спасибкой от:
Старый 17.01.2012, 10:19   #19
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Смотря с каким периодом таймеры. Если даже 1мс не должны грузить, если ты канечно в них обсчитываеш мегабайты памяти.
Зачем в хуке поток? Хук на то и хук что выполняетса в контексте родного потока клиента.

мой совет не лезь сразу в дебри то запутаешся и ниче не выдет.
Сделай максимально просто как умееш чтоб работало. Потом неспеша оптимизируй и модифицируй. Ранняя оптимизация и начало со сложного это мертворожденная программа (c)
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
За это сообщение mira нажился 2 спасибками от:
Старый 17.01.2012, 16:16   #20
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

кстати насчёт графического движка, насколько хорошо надо знать директ3д и ваще знать всякие фишки чтобы рисование движка не снижало фпс в игре? видел пару трейнеров к играми, которые рисуют свои менюшки в игре - дык когда их активируешь фпс в 2 раза падает
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!