3D Via Virtools

Здравствуйте!Я в первые на форуме,но с zlibом знаком.В не безизвестной серии консольных игр(а именно в
  1. Оффлайн

    Автор темы

    DenielX

    Звание: Прибывший

    Участники

    Сообщений: 16

    Создано тем: 1

    Рейтинг: 1

    Репа: 0

    Баллы: 51

    Страна: не указана!

    Был: 2023-01-01 20:43

    Вот чего я не могу понять-используется crc64,а у меня даже не получается получить контрольную сумму оригинального(запакованного) файла именно такую,какая должна быть.Можешь объяснить в какой проге ты crc вычислял?И ещё-я вычислял предварительно вырезав контролку из файла.
    Сообщение отредактировал DenielX 22 августа 2014 - 01:28
    22 августа 2014 - 01:28 / #21
  2. Оффлайн

    Nexus

    Забанен

    Сообщений: 611

    Создано тем: 20

    Репа: 0

    Баллы: 0

    Был: 2022-07-03 23:07

    Лайков: 7

    Короче, поубирал с кода экзешника нафиг все проверки Zlib архивов и их шифрование. Вот сам экзешник и распакованный языковый файл - ссыль
    Теперь сам языковый файл будет не запаковван и не зашифрован, а будет в обычном текстовом представлении, только расширение у него будет старое - .nlp. Можно сразу его править и тут же тестировать сам перевод.
    Самое прикольное, что для всего этого облегчения понадобилось заNOPить(обнулить) всего 2 байтаbiggrin ...

    Но у меня интерфейс проги все равно в кракозябликах, может у тебя нормально будет отображаться. Если нет, то будем решать что делать дальше. Возможно, что нудно где-то сменить кодировку. Ну это уже завтра...
    22 августа 2014 - 01:47 / #22
  3. Оффлайн

    Автор темы

    DenielX

    Звание: Прибывший

    Участники

    Сообщений: 16

    Создано тем: 1

    Рейтинг: 1

    Репа: 0

    Баллы: 51

    Страна: не указана!

    Был: 2023-01-01 20:43

    Круто!Ты и проверку названия убрал?Т.е. теперь прога в папке ищет только по расширению,я переименовал в russian.nlp,а english.nlp убрал,а так же в заголовке вписал Language:Russian и прога поняла этот файл(кракозябры видел).И что самое странное-твой exe"шник понимает оригинальный заксоренный и запакованный в zlib english.nlp happy или ты алгоритмы дешифровки оставил,а проверку убрал?На счёт кракозябр я тебе уже говорил,что это из-за шрифтов,простой пример:



    Видишь-русским символам соответствуют кракозябры-так практически в любой проге или игре.Решение-перерисовать кракозябры на русские символы,либо переназначить английские на русские,а потом перерисовать английские на русские,но при этом в проге не будет поддерживаться английский.Я за первый вариант.Есть ещё вариант,что своих шрифтов у проги нет и она берёт их из винды по ID шрифтов,В таком случае надо найти идентификатор русских шрифтов и вставить ID заместо старого ID"а.Ещё надо найти таблицу ширин шрифтов,её назначение примерно такое:есть изображение шрифтов 512х512,символ "A" храниться с 0 по 32 пиксель по оси X и с 0 по 32 пиксель по оси Y.То бишь вводишь символ,а таблица ширин определяет его координаты в изображении шрифтов.Прилагаю таблицы шрифтов в бинарном виде от неких игр в качестве примера,что бы тебе было легче найти её в exe"шнике.
    https://yadi.sk/d/T5Lb4us6aDPcv
    Сообщение отредактировал 22 января 2023 - 20:27
    22 августа 2014 - 12:14 / #23
  4. Оффлайн

    mishem

    Звание: Бывалый

    Проверенные

    Сообщений: 159

    Создано тем: 1

    Рейтинг: 4

    Репа: (1|1|0)

    Баллы: 61

    Страна: не указана!

    Был: 2024-04-25 07:13

    Лайков: 3

    DenielX, вам сюда http://www.angelcode.com/products/bmfont/
    или сюда http://www.gamedev.ru/projects/forum/?id=152527
    Или в гугль с запросом Bitmap Генератор шрифта
    Сообщение отредактировал mishem 22 августа 2014 - 13:12
    22 августа 2014 - 13:06 / #24
  5. Оффлайн

    Автор темы

    DenielX

    Звание: Прибывший

    Участники

    Сообщений: 16

    Создано тем: 1

    Рейтинг: 1

    Репа: 0

    Баллы: 51

    Страна: не указана!

    Был: 2023-01-01 20:43

    Создание шрифтов-дело то плёвое.Но сначала надо найти где прога инициализирует шрифты,где они хранятся и где находится таблица ширин-вот самое сложное,а создание уже на втором плане,я рисую шрифты в ручную в GIMP.
    22 августа 2014 - 13:16 / #25
  6. Оффлайн

    Nexus

    Забанен

    Сообщений: 611

    Создано тем: 20

    Репа: 0

    Баллы: 0

    Был: 2022-07-03 23:07

    Лайков: 7

    Круто!Ты и проверку названия убрал?Т.е. теперь прога в папке ищет только по расширению,я переименовал в russian.nlp,а english.nlp убрал,а так же в заголовке вписал Language:Russian и прога поняла этот файл(кракозябры видел).И что самое странное-твой exe"шник понимает оригинальный заксоренный и запакованный в zlib english.nlp или ты алгоритмы дешифровки оставил,а проверку убрал?

    Программе теперь все равно, зашифрован языковый файл или нет.

    На счёт кракозябр я тебе уже говорил,что это из-за шрифтов,

    Не нужно путать графические фигурные шрифты с Windows-приложением. Обычному Windows приложению незачем рисовать отдельные шрифты для своих нужд, если можно уже брать готовые системные шифты. Вот туда и нужно рыть, займусь этим на досуге.
    22 августа 2014 - 19:11 / #26
  7. Оффлайн

    Автор темы

    DenielX

    Звание: Прибывший

    Участники

    Сообщений: 16

    Создано тем: 1

    Рейтинг: 1

    Репа: 0

    Баллы: 51

    Страна: не указана!

    Был: 2023-01-01 20:43

    Не важно фигурные-не фигурные,дочитай и поймёшь,что все практически все английские шрифты(включая windows'кие)по русским кодам используют кракозябры,тут именно этот случай(я ж всё подробно в предыдущим посте расписал),но раз ты говоришь что приложение не использует своих шрифтов,значит таблицу ширин и сами шрифты нам искать не надо.Получается надо просто подрубить стандартные русские шрифты windows.Но опять же вытекает вопрос-можно ли к проге подключить и английские и русские шрифты(просто некоторые слова лучше оставить на английском)?
    22 августа 2014 - 21:25 / #27
  8. Оффлайн

    Nexus

    Забанен

    Сообщений: 611

    Создано тем: 20

    Репа: 0

    Баллы: 0

    Был: 2022-07-03 23:07

    Лайков: 7

    Не нужно искать никаких шрифтов! Вся проблема опять в экзешнике. Вот пример нормального отображения:

    ]

    Это я изменил значение реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl
    lsCodePage
    с 1252 на 1251.
    Если ты переводишь для личного пользования, то достаточно этой манипуляции, чтобы исчезли крякозябли. Ну а если перевод будет выкладываться на паблик, то мне придется опять подправлять экзешник.
    Сообщение отредактировал 19 марта 2017 - 00:19
    22 августа 2014 - 22:08 / #28
  9. Оффлайн

    Автор темы

    DenielX

    Звание: Прибывший

    Участники

    Сообщений: 16

    Создано тем: 1

    Рейтинг: 1

    Репа: 0

    Баллы: 51

    Страна: не указана!

    Был: 2023-01-01 20:43

    но раз ты говоришь что приложение не использует своих шрифтов,значит таблицу ширин и сами шрифты нам искать не надо.Получается надо просто подрубить стандартные русские шрифты windows.Но опять же вытекает вопрос-можно ли к проге подключить и английские и русские шрифты(просто некоторые слова лучше оставить на английском)?
    Ну так я про это и говорю,что если прога парсит стандартные шрифты windows,то все что я говорил до этого-можно забыть.И да-русик будит выложен в паблик. Реверс: Nexus.Перевод:DenielX.Но если даже просто надо править реестр,то почему бы не написать .reg файл для изменений в нём и не встроить в русик?Ты изменил кодировку с латиницы на кирилицу,но как осталась латиница?Ты смог объеденить две кодировки в одной проге-как ты это сделал?Ведь в реестре вроде бы 1 параметр?Или можно из реестра несколько подрубать?
    23 августа 2014 - 00:16 / #29
  10. Оффлайн

    Nexus

    Забанен

    Сообщений: 611

    Создано тем: 20

    Репа: 0

    Баллы: 0

    Был: 2022-07-03 23:07

    Лайков: 7

    И да-русик будит выложен в паблик

    Ну тогда мне придется еще повозиться с программой, но с ходу не удалось найти место в коде, где задается нужная кодовая страница. Скорее всего задержусь на некоторый срок с решением проблемы.

    Но если даже просто надо править реестр,то почему бы не написать .reg файл для изменений в нём и не встроить в русик?

    Создай файл с расширением .reg и внеси это:
    Windows Registry Editor Version 5.00 
    
     [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsCodePage] 
     "1252"="c_1251.nls"

    Хотя, конечно, это не вариант издеваться над реестром конечного пользователя, но на крайняк это может быть единственное решение.

    Ты изменил кодировку с латиницы на кирилицу,но как осталась латиница? Ты смог объеденить две кодировки в одной проге-как ты это сделал?

    Да я там перевел всего-то пару строк для примера, остальное осталось на инглише. И ничего я не объединял. Просто программа для интерфейса использует 1252 кодировку, т.е. латинскую, и где-то у себя задает этот параметр. Ну а я в реестре подменяю значение 1252 на 1251, т.е. на кириллицу, потом перезагружаюсь и система подсовывает вместо латинской кодировки кириллическую.
    Сообщение отредактировал 22 января 2023 - 20:27
    23 августа 2014 - 00:42 / #30

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1179
Всего сообщений
15388
Пользователей
17860
Новый участник
danya8308