Гипат.org

MODный форум - Шрифты в ПЗ: раскрась их все!

†T$† - 07 марта 2008, 11:32
Работая над новой версией интерфейса аля "Бета" (http://gipatgroup.org/forum/viewtopic.php?t=6139 - предыдущие версии), столкнулся со следующей проблемой - в демке с диска демиургов (моем идейном вдохновителе) шрифты сильно отличаются от теперешних, поэтому интерфейс с новыми текстурами и старыми шрифтами выглядит ну абсолютно непохоже. До этого я не слышал, чтобы этой проблемой кто-то занимался, в ресурсных файлах ничего про это нет, так что тем модмейкерам, которые захотят повторить мой смертельный номер: вот что я откопал.
Глава 1. Раскраска.
Метод жесткий и доисторический, ощущаю себя неандертальцем с каменным топориком.
Мне понадобился хекс редактор (я пользуюсь hiew), game.exe игры, пропатченной до версии 1.6 официальным патчем и графический редактор (Paint.NET). Сначала я зашел в игру, открыл сумку ака обоз, навел на какую-то кнопку мышь чтоб появилась подсказка и сделал скрин. Вставил в пайнт, пипеткой зачерпнул краску фона подсказки и записал её шестнадцетиричное значение. Хекс-редактором открыл game.exe и поиском нашел это значение. Записано оно было как 68 2B 1C 00. Что такое 68 хз, 2B 1C 00 заменил на 00 00 00 и запустил игру. Фон подсказки стал прозрачным (0_о). Поменял на 01 01 00 - фон стал черным, как мне и нужно было. Так и менял. Перед всеми значениями цвета стоит значение 68, так что не перепутаете (менять его не стоит, игра тогда вылетает). Пока что нарыл следующие значения (Строка - переход по goto в хекс-редакторе, значение - исходное значение, пример - где может использоваться):
Код:

Строка      Значение   Пример
0025E8C0   2B1C00      Фон подсказки
002151B0   FFB331      ?
00215260   FFB331      ?
0021BC00   FFB331      ?
0021DC10   FFB331      Список серверов      
0022C780   FFB331      ?
00233910   FFB331      Сложность игры, заголовок   
002348E0   FFB331      Обновляется сп. серв.   
00234990   FFB331      Хотите прервать игру?      
0024D7A0   FFB331      Описание зоны, заголовок   
002569A0   FFB331      ?            
0025E8D0   FFB331      Рамка на подсказке   
00393490   FFB331      Подзадания      
001EE970   FFFFFF    Заголовок Оружия и доспехов   
001EEA00   E4D7A7   "Тип" Оружия и доспехов      
001EEB30   E4D7A7   "Материал" Оружия и доспехов   
001EEB80   E4D7A7   "Вес" Оружия и доспехов      
001EEС10   E4D7A7   "Энергия" Оружия и доспехов      
001EEС50   E4D7A7   "Сложность" Оружия и доспехов   
001EEСE0   E4D7A7   "Надежность" Оружия и доспехов   
001EEDA0   E4D7A7   "Урон" Оружия   
001EEDF0   E4D7A7   "Действия" Оружия
001EEE50   E4D7A7   "Атака" Оружия
001EEEE0   E4D7A7   "Защита" Оружия
001EEFA0   E4D7A7   "Броня" Доспехов
001EF050   E4D7A7   "Уязвимость" Доспехов
001EF0С0   E4D7A7   ?
001EF0E0   E4D7A7   "Заклинание"
001EF230   E4D7A7   Описание оружия и доспехов
001EF250   E4D7A7   Нажмите CTRL

Там где вопросики - я не засек, что они меняли. Но навскидку - поменялся цвет имени говорящего в диалогах и мерцающие палочки ввода ( | )
Пример использования - имейте ввиду, что некоторые значения используются в нескольких надписях. Например, цвет надписи "обновление списка серверов" и "введите пароль" имеют одно и то же значиние.


Пример использования можете посмотреть в приложенном скриншоте. Слева направо - вариант Бета, моя переделка, оригинал.
EviL|Alpha - 07 марта 2008, 19:23
Интересная тема :up: ...
Надо добыть где-нить хекс и попробовать :) .
Sagrer - 08 марта 2008, 02:17
учитывай, что изменив game.exe ты не сможешь использовать стартёр, ибо ему нужен чистый, неизменный game.exe.

С другой стороны, если ты сделаешь патчик к game.exe - скорее всего в виде инструкции о том какие байты как надо изменить, и пришлешь это Джету - вполне возможно он включит этот патч в следующую версию стартера, и её можно будет активировать как опцию в config.reg мода.
†T$† - 08 марта 2008, 06:14
Да, я уже думал об этом. Однако надо заметить, что хоть стартер и жмется при новом экзешнике, как девушка на первом свидании, но тем не менее работает исправно. Он отказывается настраиваться, но настройки, которые я сделал до изменения экзешника, например, включение второй скорости в мультиплеере, вполне так себе работают, хотя галка "дополнение" и не думает отмечаться.
С подключением ресурсных файлов вообще никаких проблем нет, можно свободно их переключать.

Хотя конечно было бы лучше, если б .exe подцеплялся стартером как ресурсы. Проблем и волнений было бы меньше.

Кстати, на строке №00393030 указано, какой шрифт использует в игре. По желанию можно сменить Times New Roman на что-нибудь другое.

Примечательно, что по методу из моей первой мессаги нельзя найти все цвета 0_о. Например, цвет заголовка всплывающей подсказки. Граф.редактор показывает, что у него цвет такой же как и у большинства заголовков - FFB331, но хекс-редактор говорит, что в файле таких значений больше не осталось. Хз в чём тут дело.
Sagrer - 08 марта 2008, 08:07
хых, как он тебе его как ресурсы читать то будет? ))) Стартёр фактически патчит экзешник, сам ). И если там в экзешнике чего-то не совпадет с тем что стартёр от экзешника ожидает - то в результате накладывания стартёровских патчей может случиться чего угодно.
†T$† - 08 марта 2008, 08:59
Ну в смысле что сначала из мода берется .exe, а потом стартер уже над ним начинает работать.
Sagrer - 08 марта 2008, 21:28
объясняю еще раз. Непринципиально откуда берется exe. Если этот exe будет отличаться от оригинального до такой степени чтобы стартёр не смог внести в него _свои_ патчи - то ничего не будет работать _вообще_ т.к. для того чтобы игра увидела ресурсы мода - в экзешник вносятся патчи, перехватывающие обращение к этим самым ресурсам. Т.е. если эти патчи не наложатся - ресурсы мода банально будут недоступны из игры и собсно гря это будет просто оригинальная игра, к тому же с глючно пропатченным движком, вот и все.

Теоретически единственная возможность сделать так чтобы авторы мода могли вносить свои патчи в движок - научить стартёр подключать "пользовательскую" dll-ку написанную автором мода и содержащую функции, накладывающие нужные автору мода патчи. Но во-первых это надо много геммориться с написанием SDK и API для мододелов (учитывая количество геммора а также по-видимому отсутствие у Джета лишнего времени - имхо никто этим заниматься не будет), во-вторых имхо на самом деле это мало кем будет востребовано, в третьих чисто технически гораздо проще внести патч в саму addon.dll - поэтому имхо тебе стоит просто отправить Jet-у инструкцию по патчению экзешника с просьбой чтобы он это дело включил в стартёр и сделал возможность активировать это как опцию в конфиге мода.
†T$† - 09 марта 2008, 00:13
Так хз что править в экзешнике, цветов всяких много, в инструкцию все не уложишь...

Походу гиблое дело.
slayerboxer - 09 марта 2008, 01:09
жалко :(
Sagrer - 09 марта 2008, 02:54
Цитата:


Так хз что править в экзешнике, цветов всяких много, в инструкцию все не уложишь...



Объясняю еще раз. Исправляешь свой экзешник так как тебе нужно. Потом любой программкой генерящей дифы (например HexWorkshop умеет, да и вообще любой правильный HEX-редактор) сравниваешь твой измененный экзешник с оригинальным game.exe от 1.06 - получаешь список байтов которые изменились, ну и собсно то как они изменились. Отправляешь этот список изменений Джету с просьбой включить патч в стартер. Если он примет патч - то в config.reg появится возможность написать что-то вроде Enable†T$†Patch=1 чтобы активировались твои изменения, вот и все.
†T$† - 09 марта 2008, 06:42
Да я понял. Из-за каждого вшивого мода дергать Джета не годится, нужны изменения универсальные, а не какого-либо отдельного модмейкера. А если я сейчас вот сделаю цвета в сплывающих подсказках, описании предметов и заклинаний, а потом решу покрасить хар-ки персонажа? Тогда что делать?

Лучше уж экзешник в архив с модом кину.
Cheater - 09 марта 2008, 07:32
А разве содержимое этой темы не является достаточной инструкцией для Джета?
Было бы прикольно менять шрифты игры в настройках стартёра. Не в config.reg, а в насторйках, по кнопке "дополнительно".
Вместо Times New Roman. Только там глюки могут возникнуть, что с другими шрифтами тексты не поместятся в отведённые им экраны.
Джет сам выберет, чего там ещё можно настраивать, а хоть и всё сразу можно.
Снайпер - 09 марта 2008, 16:41
Цитата (Cheater):
Вместо Times New Roman. Только там глюки могут возникнуть, что с другими шрифтами тексты не поместятся в отведённые им экраны.

Ничего подобного :D Никаких глюков, если мы будем мониторить находящиеся в системе шрифты, и каждый раз при выборе копировать и сохранять нужный шрифт в папке Windows\Fonts\ под именем "Current EI Font.ttf", и в экзешнеге пропишем ессно эту же строку (длина равна длине строки "Таймс Нью Роман")
Cheater - 09 марта 2008, 17:09
Цитата (Снайпер):
... мы будем мониторить находящиеся в системе шрифты, и каждый раз при выборе копировать и сохранять нужный шрифт в папке Windows\Fonts\ под именем "Current EI Font.ttf", и в экзешнеге пропишем ессно эту же строку (длина равна длине строки "Таймс Нью Роман")
Насколько я понял, имеется ввиду, что название шрифта не совпадёт с длиной строки названия Times New Roman.
Я же говорю о том, что в самой игре с другими шрифтами надписи станут длиннее, и не влезут, куда им полагается влезать. Они там местами уже не влезают.
Кроме того, стартёр можно научить понимать название шрифта любой длины. Хотя тут Джет реально разбирается.
Снайпер - 09 марта 2008, 17:16
А... Ну уж невлезшие надписи будут на совести мододелов :D
Часовой пояс: GMT +4:00
Форумы Поселка созданы на базе phpBB2 2.0.4 © phpBB Group