О русификации QuickMUD-lua

С подачи товарища Пацифиста начал русифицировать QuickMUD+lua (Авраам породил Иакова, ROM породил QuickMUD, а потом товарищ Odoth добавил туда lua). В общем, все делается примерно по тому же шаблону, что и ранее слегка русифицированный tbaMUD. Русские команды лучше и проще реализовывать не в общей таблице, а отдельным обработчиком, вызываемым до основного. А то всякие глюки выползают из-за UTF-8

Всё здесь:

https://bitbucket.org/prool/quickmud-lua-russian

А вот взгляд на проблему с другой стороны: http://muder.ru/blog/172.html

tbaMUD+prool

Ну чо, я практически русифицировал tbaMUD. С падежами я решил не заморачиваться и сообщения не переводил, но сделал главное: теперь муд нормально воспринимает символы из старшей половины таблицы ASCII, кириллица внутри мада хранится в UTF-8, а снаружи в UTF-8 или koi8-r. Добавить кодировки win, alt, lat проще простого. (В Винде хороший клиент Tortilla, который умеет UTF-8) Пока кодировки переключает флаг summonable (команда toggle summonable on или off). Можно делать русские команды, русских мобов и предметы (без падежей!) И украинских! И белорусских! И болгарских! И сербских! (Или братушки сербы уже перешли на латиницу?)

Всё на гитхабе https://github.com/prool/tbamud

И описанный в предыдущем посте баг нейтрализован

Обращаю также ваше внимание на то, что на гитхабе tbaMUD+prool сделан в виде форка и работы в этом муде не отображаются на гитхабовском календарике квадратегами. Негодую на эту политику Гитхаба!

И снова о русификации английских кодовых баз, основанных на Circle

Я только о том, чтобы мад воспринимал символы из второй половины таблицы ASCII. И строго говоря это не русификация и даже не кириллизация, а интернационализация и UTFизация

Возьмем, к примеру TBAMUD

Файл comm.c, в функции perform_socket_read

ищем строку с проверкой isascii(*ptr)&&isprint(*ptr)

и меняем ее на ((unsigned char)*ptr)>=32U

Почему так коряво, да потому что по умолчанию *ptr – это signed *char

Я там и единицу ставил (то есть всегда true), тоже работало, но лучше от символов, меньших пробела, защититься 😉

Возможно есть и другие места, где придется слегка модифицировать код, чтобы нормально проходили старшие символы (>127). И не надо забывать, что char signed!

UPDATE. 01-Apr-2017. То же касается и русификации ROM и вообще всех детей Diku

UPDATE. 03-Dec-2017. И не надо забывать, от командах протокола telnet, которые могут появиться, например в начале строки и испортить картину. Например, испортится ввод пароля или ввод команд. Вот пример таких последовательностей FF FD 01 и FF FE 01