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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 21.10.2007, 04:49   #1
Новичок
 
Регистрация: 18.10.2007
Адрес: Москва
Сообщений: 22
Сказал Спасибо: 0
Имеет 8 спасибок в 2 сообщенях
Юля
Сообщение Работаем с сообшениями чата в игре напрямую

Простой и эффективный способ работы с сообшениями чата напрямую в игре - это перехват функции которая эти самые сообшения в чате и размешает. Приведенный пример разукрашивает все сообшения в красный цвет.

Код:
...
var old_chat: procedure;
    lib_NWindow: cardinal;

procedure do_chat(data: pointer); stdcall;
begin
  cardinal(pointer(cardinal(data) + $0C)^) := $FF0000FF; // старший байт задает альфа канал

  {по смешению 0х10 расположено значение определяюшее тип сообшения, к примеру сообшение в групповом чате имеет код 3, а голос героя - 17;
   по смешению 0x08 находится указатель на сам текст сообшения (unicode) }
end;

procedure InterceptFuncChat; stdcall;
asm
  push ebp
  mov ebp, esp
  pushad    
  push ebp
  call do_chat
  popad
  pop ebp
  push ebp // оригинальный загрузчик
  mov ebp, [esp + 10h]
  jmp old_chat
end;

...
var p: pointer;
    OldProtect, lib: cardinal;
...
      lib_NWindow := LoadLibrary('NWindow.dll');

      lib := lib_NWindow + $52F40;
      old_chat := pointer(lib + 5);

      VirtualProtect(pointer(lib), 5, PAGE_EXECUTE_READWRITE, OldProtect);      

      addr := dword(@InterceptFuncChat) - lib - 5

      p := pointer(lib);
      byte(p^) := $e9;
      dword(pointer(dword(p) + 1)^) := addr;
      
      VirtualProtect(pointer(lib), 5, PAGE_EXECUTE_READWRITE, OldProtect);
...  (c) puella
Юля вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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