Если вдруг кому не понравился режущий глаза розовый цвет, которым заполняются стены (мне он тоже не нравится), то можно воспользоваться функцией [glClearColor].
Что она делает? Делает одну простую вещь - очищает буфер цвета. Новый цвет задаётся в аргументах, синтаксис вот такой:
Red, Green, Blue - цвет в формате RGB (от 0 до 255 на каждый цветовой канал, 0-0-255 - синий), alpha - прозрачность, которую мы не трогаем и всегда выставляем в 255.
В случае с квейком всё просто - открываем W32Dasm (или любимый дизассемблер), ищем текст glClearColor, находим, чуть ниже ищем махинации с регистром еах (помня, что в еах помещается указатель для вызова функции). Находим два адреса, методом тыка выясняем рабочий. Дальше изменяем наш скрипт в Cheat Engine - перед вызовом функции DrawWorld вызываем glClearColor с нужными аргументами, примерно вот так:
glClearColor(0.0, 0.5, 0.75, 1);
Аргументы тут имеют тип float, так что не забываем перевести из float в hex (шестнадцатиричную систему счисления). Сделать это можно например [тут], ещё есть замечательный аналог Cheat Engine со встроенным конвертером - [TSearch].
Что она делает? Делает одну простую вещь - очищает буфер цвета. Новый цвет задаётся в аргументах, синтаксис вот такой:
glClearColor
(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
;
Red, Green, Blue - цвет в формате RGB (от 0 до 255 на каждый цветовой канал, 0-0-255 - синий), alpha - прозрачность, которую мы не трогаем и всегда выставляем в 255.
В случае с квейком всё просто - открываем W32Dasm (или любимый дизассемблер), ищем текст glClearColor, находим, чуть ниже ищем махинации с регистром еах (помня, что в еах помещается указатель для вызова функции). Находим два адреса, методом тыка выясняем рабочий. Дальше изменяем наш скрипт в Cheat Engine - перед вызовом функции DrawWorld вызываем glClearColor с нужными аргументами, примерно вот так:
push 1B01 //GL_LINESАргументы запихиваем в обратном порядке (читаем про стек и работу с ним!). На С это выглядело бы примерно так:
push 408 //GL_FRONT_AND_BACK
call dword ptr [10055CC4] //glPolygonMode
push 3F80 //1
push 3F40 //0.75
push 3F //0.5
push 3F80 //0
call dword ptr [100551BC] //call glClearColor
call 1000C080 //call drawworld original
push 1B02 //GL_FILL
push 408 //GL_FRONT_AND_BACK
call dword ptr [10055CC4] //glPolygonMode
ret
glClearColor(0.0, 0.5, 0.75, 1);
Аргументы тут имеют тип float, так что не забываем перевести из float в hex (шестнадцатиричную систему счисления). Сделать это можно например [тут], ещё есть замечательный аналог Cheat Engine со встроенным конвертером - [TSearch].
Комментариев нет:
Отправить комментарий
Не люблю мат и низкий уровень грамотности. Чем конкретнее поставите свой вопрос и чем лучше он будет выглядеть - тем большая вероятность на мой ответ. :)