Source SDK

Source SDK

50 평점
Использование русского алфавита при создании карт
Смайл 님이 작성
Из этого руководства вы узнаете о методе, который позволит вам использовать русские буквы при создании карт.

Примечание: Этот метод так же работает с Украинским, Белорусским и другими языками мира.
   
어워드
즐겨찾기
즐겨찾기됨
즐겨찾기 해제
Введение
Представьте себе ситуацию, вы захотели создать game_text с текстом, который выводится игроку на экран после того или иного события на карте.

Вы наверное думаете, что если просто написать русский текст в параметр text в entity: game_text, то он отобразится? Нет, вы очень сильно ошибаетесь.

Сам редактор не рассчитан на чтение символов других языков, только в некоторых случаях при вводе текста в поле ввода entity: game_text или другого entity, который выводит текст на экран игроку — может прочитать его.

Как вы знаете в базе данных Hammer Editor есть множество entity, которые умеют выводить текст на экран. Например, в Team Fortress 2 — этот вариант немного расширен, в базу данных entity игры был добавлен не только game_text, но ещё и game_text_tf.

game_text_tf — это точно такое же Entity, как и game_text, только это entity отображает текст в виде подсказки прямоугольной формы снизу, по центру экрана игроку.

Не скажу, что я открываю для вас америку, просто хотелось бы, чтобы этот метод стали применять все страны мира. По мере возможности я постараюсь перевести это руководство на другие языки мира, чтобы другие страны заполучили эту информацию и смогли так же использовать этот метод.

А пока что, приготовьтесь к получению новой информации, усаживайтесь по удобнее мы начинаем.
Подготовка инструментов
Инструменты, которые понадобятся вам для работы с созданием русского текста на карте:

Hex-редактор (шестнадцатеричный редактор) — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов.

Скачать редактор вы можете с Google Диска:
https://drive.google.com/file/d/14SCHU2K5dLgFXSNauJsr_0XUhpYBG17F/view?usp=sharing

И, конечное же, Hammer Editor — без которого не обойдётся создание карты.

Если вам лень скачивать пакет Source SDK, то напомню, что после обновления SteamPipe папка «[username]» больше не содержит игр или каких-либо файлов вообще. Весь контент с базовым пакетом редактирования перемещён в папку «common». Вам достаточно зайти в директорию любой Source игры, открыть папку bin и запустить: Hammer.exe

Для примера, когда вы скачиваете игру Counter-Strike Source через Steam, то в папочке: Steam → SteamApps → common → Counter-Strike Source → bin вы сможете найти не только Hammer Editor, но и другие инструменты SDK.

Или же приведу примеры с другими играми, куда включен Hammer Editor

Steam → SteamApps → common:
Team Fortress 2 → bin → Hammer.exe
Half-Life 2 → bin → Hammer.exe
Synergy → bin → Hammer.exe
Garry's Mod → bin → Hammer.exe
Counter-Strike Source → bin → Hammer.exe
Double Action → bin → Hammer.exe
FIREFIGHT RELOADED → bin → Hammer.exe
Fistful of Frags → bin → Hammer.exe
Insurgency2 → bin → Hammer.exe
SourceFilmmaker → game → bin → Hammer.exe
Codename CURE → bin → Hammer.exe
Half-Life 2 Deathmatch → bin → Hammer.exe

Что бы создавать карты для таких игр как Left 4 Dead 2 или Counter-Strike: Global Offensive вам потребуется навести курсор на слово Библиотека в Steam, найти похожее название SDK для игры и установить его. К примеру, для Counter-Strike: Global Offensive, вам понадобится инструмент Counter-Strike: Global Offencive – SDK. Аналогично для Left 4 Dead 2 вам понадобится инструмент под названием Left 4 Dead 2 Authoring Tools в общем я думаю вы поняли и разберётесь самостоятельно.
Практика
Теперь попробуем попрактиковаться. Следите и повторяйте за мной все действия, которые я опишу и покажу в виде скриншотов ниже.

Для начала открываем любой редактор, в базе данных которых находится entity: game_text.

Для примера я запущу редактор Team Fortress 2. Суть не изменится, так, как entity: game_text находится практически во всех Source играх.

Запускаем Hammer, нажимаем: File → New и создаём какую-нибудь маленькую комнатку.

После создания комнаты создайте где-нибудь точку возрождение игрока, а рядом расположите объект game_text. Да, и не забудьте сделать лампочку, будет не привычно проводить тесты на карте без света, согласны? Продолжаем...



Создайте на карте место появления игрока, game_text и logic_auto. Мы с вами постараемся сделать базовую проверку отображения текста при помощи game_text.

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

Перед вводом текста в параметр Message text, вам придётся создать на рабочем столе текстовый документ с любым названием и написать туда фразу, которую вы скопируете и вставите в файл карты позже.

Создайте на рабочем столе текстовый документ и напишите туда какой-нибудь текст, я решил написать: Привет мир!



Теперь вам нужно сохранить этот файл в кодировке: UTF-8. Нажмите: Файл → Сохранить как...



И укажите кодировку: UTF-8.



Откройте текстовый документ через HxD, выглядит это вот так:



Это закодированный текст, который вы написали в блокноте: Привет мир! — вот так он выглядит в шифрованном виде. Скопируйте эти символы и вставьте в блокнот, чтобы посчитать количество символов — это требуется для того, чтобы написать нужное количество символов в параметр Message text в настройках entity: game_text.

Попробую упростить мысль: При помощи блокнота вы должны написать текст, сохранить файл в UTF-8, затем проверить количество символов через HxD, запомнить количество символов и написать это количество символов в параметре Message text.

То есть, упрощаю, у нас получился вот такой текст в шифрованном виде: Привет РјРёСЂ! — количество символов: 24. В параметре Message text вы должны написать ровно 24 знака, а после чего при помощи копирования и HxD редактора — скопировать и вставить зашифрованный текст в файл карты.

Чтобы в будущем этот текст отображался на вашей карте русскими буквами.

Задайте entity вот эти параметры:

Name: text
Message text: 1111111111111111111111!

Запомните это в обязательном порядке: Символов должно быть ровно столько, сколько символов содержит ваш зашифрованный текст!



После ввода данных нажмите: Применить и закройте окошко настройки game_text.

Теперь настроим автоматическое появление текста при помощи logic_auto.

Кликните дважды левой клавишей мышки по logic_auto и откройте вкладку: Outputs, затем нажмите Add... и добавьте параметр отображения game_text через 5 секунд после появления игрока на карте.

Задайте точно такие же параметры, как на вот этой картинке:



Сохраните карту нажав: File → Save или сочетание клавиш: Ctrl + S, укажите директорию сохранения файла, придумайте название для файла карты, а затем нажмите F9 и скомпилируйте её.

Если вы не хотите долго ждать компиляции нашей тестовой карты, то рекомендую вам выбирать параметр: Fast, как показано на картинке:



Обратите внимание! Если вы поставите галочки на последний и предпоследний пункт, то игра автоматически запустится с этой картой. Так, как мы ещё не закончили редактирование, то попрошу вас снять эти галочки, сейчас они нам не нужны.

Нажмите Go! и дождитесь сборки вашей карты в *.bsp формат, а затем закройте редактор, так, как он нам больше не понадобится.

Теперь при помощи HxD открываем сам файл карты, то есть собранную Hammer-ом карту (*.bsp), выглядит это вот так:



Внимательно и аккуратно находим наши единицы, которые мы задавали в параметр Message text. Нажмите сочетание клавиш Ctrl + F, чтобы открыть поиск по тексту файла, в поле поиска напишите: 1111111111111111111111!



Затем нажмите: ОК. Программа найдёт нужные вам данные и отобразит их, смотрите скриншот:



Теперь аккуратно и ещё раз очень внимательно! Открываем текстовый документ, в который вы писали: Привет мир! и копируем оттуда набор символов. Смотрите скриншот:



И теперь аккуратно выделяем наши единицы с восклицательным знаком на конце и вставляем текст:



Вставка зашифрованного текста завершена! Поздравляю ребят, мы это сделали.

Теперь проверим русский текст через игру. Переместите или скопируйте вашу тестовую карту в директорию игры, под которую вы её создавали.

Я использовал редактор Team Fortress 2, значит мне нужно переместить файл карты в директорию игры Team Fortress 2: Steam → SteamApps → common → Team Fortress 2 → tf → maps.

Вот вам и результат:



Тайна редактирования карт с добавлением русского текста на карту была успешно открыта! Пользуйтесь на здоровье, кстати говоря этот метод работает во всех версиях игр, которые поддерживают entity с отображением текста посередине экрана игроку.

Для тех, кто думает, что это фотошоп, то можете скачать мою карту и проверить её на вашем компьютере, пожалуйста, вот вам ссылка на скачивание:
https://drive.google.com/file/d/1KITu1YmzIHNeBxljyhULoAjWUsiPPXS4/view?usp=sharing

Небольшая ремарочка для тех, кто попытается изменить текст, прописанный в entity: game_text через исходный файл карты *.vmf — друзья, можете не пытаться, я проводил тесты на эту тему, карта компилируется, но после компиляции, увы, текст не отображается.

При сборке карты редактор читает эти символы, как за непонятные для него алфавит. По этому, строго на строго, рекомендуется изменять текст только в уже собранной, то есть скомпилированной карте (*.bsp)
EntSpy тоже может!
Утилита EntSpy тоже может быть полезна!

Скачиваем EntSpy:
https://drive.google.com/file/d/1o_tX3DSzwuHKvnP1W_YTvR5S-FQT855f/view?usp=sharing

Не забудьте установить поддержку Java (www.java.com) для вашей операционной системы, чтобы EntSpy работал правильно!

Смотрите в чём суть, изначально вы использовали Hammer Editor, чтобы собрать и разобрать карту, предварительно изменив параметр сообщения на карте. Утилита EntSpy заменит Hammer Editor и вам не придётся разбирать и собирать карту.

Повторяем операцию выше

Создайте на рабочем столе текстовый документ и напишите туда какой-нибудь текст, я решил написать: Привет мир!



Теперь вам нужно сохранить этот файл в кодировке: UTF-8. Нажмите: Файл → Сохранить как...



И укажите кодировку: UTF-8.



Откройте текстовый документ через HxD, выглядит это вот так:



Скопируйте эти символы и вставьте в блокнот, чтобы посчитать количество символов — это требуется для того, чтобы написать нужное количество символов в параметр Message text в настройках entity: game_text.

Кстати по поводу блокнота и подсчёта символов. Вы можете использовать AkelPad, его вы можете скачать отсюда: game-rus.ucoz.ru/apps/AkelPad.zip

При помощи блокнота вы должны написать текст, сохранить файл в UTF-8, затем проверить количество символов через HxD, запомнить количество символов и написать это количество символов в параметре Message text.

Теперь запустите EntSpy и откройте свою карту, которую будете переводить. Я же открою свою, итак смотрим:



Мы с вами наблюдаем закодированный в UTF-8 текст в поле message.

Теперь, внимательно! Введите количество единиц вашего нового сообщения. Я введу сообщение длинной в 25 символов. То есть мне нужно написать 25 единиц в поле. Вводим 25 единиц в поле message:



Сохраните карту через EntSpy, нажмите: Save BSP и выберите папку для сохранения. И да возможно вам придётся переименовать карту, если она у вас как и у меня на рабочем столе.

Совет: Если в карте много текста для перевода, то лучше сохраняйте на рабочий стол. Не открывайте карту из папки maps. Вы можете её повредить и потом вам придётся опять скачивать карту.



Дальше всё то же самое что и в 1 пункте. Запускаем Hex редактор и изменяем единицы на наш новый текст:





Вставка зашифрованного текста завершена! Теперь запустим карту и проверим.



Как видите всё отлично работает и никаких ошибок!

Подытожим, на сегодня мы имеем 2 способа редактирования текста со стороны карты

1 способ требует Hammer Editor, декомпиляцию карты, изменение текста и компиляция.

2 способ более проще, он не требует Hammer, так как вы просто вводите количество единиц под новое количество символов вашего текст, сохраняете карту с введёнными единицами через EntSpy, затем открываете карту через Hex редактор и вставляете ваше сообщение в BSP файл.
EntSpy не работает! Что делать?
Если вдруг вы установили Java и EntSpy вылетает или просто закрывается при попытке открыть какую-либо карту, то могу предложить вам аналог. Но сразу предупрежу, на него ругаются антивирусы.

Совет: Чтобы антивирус не ругался на эту утилиту, откройте настройки вашего Антивируса и добавьте программу в исключение.

Утилита EntEd поможет заменить вам EntSpy



Скачать можно тут:
https://drive.google.com/file/d/1hHjaofkYt-B3hHaqaE9gsCsbZFpkltVR/view?usp=sharing

Принцип работы тот же, просто вместо EntSpy используйте EntEd и всё у вас получится! :)

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

댓글 23
ZV 2022년 9월 28일 오전 2시 13분 
ок
Смайл  [작성자] 2022년 9월 27일 오전 6시 42분 
С любым текстовым редактором.
ZV 2022년 9월 27일 오전 4시 10분 
А только с текстовым документом работает, или с другими тоже? (Word, PowerPoint, Notepad++)
Смайл  [작성자] 2022년 2월 20일 오후 11시 12분 
Да
андре чебуре 2022년 2월 20일 오후 2시 09분 
Работает с Point_worldtext?
Смайл  [작성자] 2021년 11월 15일 오전 6시 11분 
Я знаю)
rscreamroad 2021년 11월 15일 오전 3시 59분 
ТЫ БОГ! Я ПОСЕДЕЛ ПОКА ИСКАЛ КАК МОЖНО 'text_message' КИРИЛЛИЦЕЙ ПИСАТЬ! И ТУТ Я НАШЁЛ ЭТОТ ПОСТ!:steamthis: :steamthis: :steamthis:
Смайл  [작성자] 2021년 7월 10일 오전 7시 16분 
Дело в том, что карта (BSP файл) может в любой момент поменять кодировку, вернее разработчики могут изменить тип создания компиляции BSP файла, по этому лучше придерживаться этого метода из руководства.
Смайл  [작성자] 2021년 7월 10일 오전 7시 14분 
Да, я знаю об этом методе. Но этот метод не всегда и не у всех работает.
Ninja 2021년 7월 10일 오전 6시 36분 
А не проще вставлять зашифрованный текст прямиком в Хаммер? Так при компиляции каждый раз не нужно будет в Bsp файл лезть. У меня по крайней мере это работает. На Garry's mod. Не знаю как на других, но должно быть так же.