HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Кодировка titles.txt
В актуальной стим-версии Half-Life
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Ku2zoff
Хачимааан!!!

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 5737
Возраст: 30

Рейтинг



Кодировка titles.txt

Те, кто заглядывали в тред "Рандомный скрин вашего проекта" и видели последнее моё видео, должны догадаться, почему я создал новую тему. Короче говоря, дело такое: если titles.txt сохранён в кодировке ANSI, то VGUI прекрасно понимает кириллицу, и gHUD.m_TextMessage.BufferedLocaliseTextString прекрасно выполняет свою работу для VGUI. Но в этом случае gHUD.DrawHudString не рисует вообще никакого текста, адаптированного с помощью BufferedLocaliseTextString.
Дальше - интереснее. Если titles.txt сохранён в кодировке UTF-8, то VGUI рисует кракозябры вместо кириллицы, зато gHUD.DrawHudString прекрасно пишет кириллицей.
Вопрос: это движковый парсер титров виноват, или BufferedLocaliseTextString? Если решение не будет найдено, я забью на локализацию и сделаю все тексты на английском. Однако, хотелось бы, чтобы в будущем энтузиасты-собиратели Redux-ов могли перевести текст на доступные языки, которые пишутся не только латиницей.

Сообщить модератору | | IP: Записан
Сообщение: 201871

Старое сообщение 12-05-2021 17:57
- За что?
a1batross
Житель форума

Дата регистрации: May 2016
Проживает: Москва
Сообщений: 396
Возраст: 23

Рейтинг



DrawHudString в свежих голдсорсах на самом деле проходит через vgui2, у которого полная поддержка Unicode. Но в свою очередь он не знает о других кодировках.

В ANSI кириллицы нет, скорее всего речь идёт о CP1251, с которым работает vgui1, но выше упомянутый vgui2 просто не понимает.

Решением было бы перекодировать налету из CP1251 в UTF-8 где это необходимо. Или наоборот, как больше нравится.

Добавлено 12-05-2021 в 22:23:

У этого решения конечно есть обратная сторона -- оригинальный Ксаш и старые голдсорсы. Они Unicode не принимают вообще.

__________________
Xash3D FWGS форк (csm thread)
MainUI C++ (csm thread)

Сообщить модератору | | IP: Записан
Сообщение: 201873

Старое сообщение 12-05-2021 19:23
- За что?
Ku2zoff
Хачимааан!!!

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 5737
Возраст: 30

Рейтинг



Цитата:
a1batross писал:
перекодировать налету из CP1251 в UTF-8

Я нашёл в сорцах Xash3d FWGS функцию Con_UtfProcessChar. Заменил вызовы движковых pfnDrawString и pfnDrawCharacter:
C++ Source Code:
1
int pfnDrawCharacter(int x, int y, int ch, int r, int g, int b)
2
{
3
  ch = Con_UtfProcessChar(ch);
4
  return gEngfuncs.pfnDrawCharacter(x, y, ch, r, g, b);
5
}
6
 
7
int pfnDrawString(int x, int y, const char* str, int r, int g, int b)
8
{
9
  Con_UtfProcessChar(0);
10
  for (; *str != 0 && *str != '\n'; str++) x += pfnDrawCharacter(x, y, (unsigned char)*str, r, g, b);
11
  return x;
12
}
13
 
14
int CHud :: DrawHudString(int xpos, int ypos, int iMaxX, char *szIt, int r, int g, int b )
15
{
16
  return xpos + pfnDrawString(xpos, ypos, szIt, r, g, b);
17
}

Результата 0. Ну то есть не совсем. С вызовами Con_UtfProcessChar кириллицы нету, а без вызовов кракозябры. Пробовал выставлять g_codepage 1251, 1252, 0 - результат одинаковый. Пока до меня не дошло, в чём проблема.

Сообщить модератору | | IP: Записан
Сообщение: 201886

Старое сообщение 13-05-2021 09:41
- За что?
XF-Alien
Хи-хи! ^_^

Дата регистрации: Dec 2009
Проживает: Пермь
Сообщений: 513

Рейтинг



А русскую локализацию в titles.txt никак на лиц. версии не сделать, я так понимаю? Вот сам столкнулся с подобной проблемой.

__________________
What's going out on the floor?
I love this record, baby, but I can't see straight anymore.
Keep it cool, what's the name of this club?
I can't remember but it's alright, a-alright!

Отредактировано XF-Alien 13-05-2021 в 10:42

Сообщить модератору | | IP: Записан
Сообщение: 201887

Старое сообщение 13-05-2021 10:39
- За что?
Ku2zoff
Хачимааан!!!

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 5737
Возраст: 30

Рейтинг



XF-Alien в лицензионной версии даже нет парсера resource/modname_english.txt в клиентке оригинальной халфы. Какая вообще локализация? Вальва сделала это только для сраной каэсочки, точнее, для VGUI2, который в этой каэсочке используется.
Я сейчас попробую найти соответствие символов разных кодировок, и попытаюсь вручную подменять номера. Может быть получится.

Добавлено 13-05-2021 в 19:12:

Проблема решена с помощью этой таблицы. Сохраняем titles.txt в ANSI (cp1251) и приводим функции, что я выкладывал выше, к такому виду:

C++ Source Code:
1
int pfnDrawCharacter(int x, int y, int ch, int r, int g, int b)
2
{
3
  if (ch >= 192 && ch <= 255) ch += 848; // А-Я, а-я
4
    else if (ch == 168) ch = 1025; // Ё
5
      else if (ch == 184) ch = 1105; // ё
6
 
7
  return gEngfuncs.pfnDrawCharacter(x, y, ch, r, g, b);
8
}
9
 
10
int pfnDrawString(int x, int y, const char* str, int r, int g, int b)
11
{
12
  for (; *str != 0 && *str != '\n'; str++) x += pfnDrawCharacter(x, y, (unsigned char)*str, r, g, b);
13
  return x;
14
}
15
 
16
int CHud :: DrawHudString(int xpos, int ypos, int iMaxX, char *szIt, int r, int g, int b )
17
{
18
  return xpos + pfnDrawString(xpos, ypos, szIt, r, g, b);
19
}


Добавлено 13-05-2021 в 19:27:

Также, нужны хорошие русифицированные шрифты для VGUI за авторством Vit_amiN'а. Теперь кириллица есть как во VGUI, так и в CHud::DrawHudString. Способ подходит для стим-халфы, и возможно, свенкоопа.

Добавлено 13-05-2021 в 19:32:

Цитата:
XF-Alien писал:
А русскую локализацию в titles.txt никак на лиц. версии не сделать, я так понимаю?

Нужно иметь отдельную копию titles.txt под каждую локализацию. Благо, стим-версия умеет в папки modname_язык.

Сообщить модератору | | IP: Записан
Сообщение: 201888

Старое сообщение 13-05-2021 12:32
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 20:45. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Кодировка titles.txt
В актуальной стим-версии Half-Life
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2021