Кто был сегодня в CS свидетелем разговора на русском языке...
Здесь уйма текста, так что каму "маногабукав" читаем тока описание (чуть ниже этой строки), смотрим скрин и премся в "ЦЕЛЬ НАПИСАНИЯ" (в самом низу).
Начало проектика: 11.01.2008 22:18
Описание:
внешнее приложение, предназначенное лишь для реализации возможности писать текст в режиме чата на русском языке.
Влияние:
на страдание таким родом деятельности повлиял русификатор, который был скачен мною с одного CS сайта. Русификатор был выполнен грамотно, переводит весь текст который встречается в кс и даже спрайты ). Но, возможность общаться в чате на русском языке не появилась. Захотелось исправить…
Метод:
предпосылкой методу стала менюшка commandmenu которая была в русификаторе. В этой менюшке был очень умный пунктик:
"4" "#Cstrike_Negative" "exec commandmenu/chat_2.cfg"
который подгружал конфиг “chat_2.cfg” в котором находилась лишь одна строка:
say_team "Не согласен!"
и вот с этой абсурдностью все же текст выводился в чат. Но чувствовалось, что где-то здесь подвох. и он нашелся...
Подвох:
оказалось, что текст сохранялся не в обычной кодировке русского текста. А в "UTF-8" который предполагает на каждую русскую загагулинку по 2 байта текста.
Тем самым, зная этот секрет можно выводить любой заранее записанный текст, и с помощью бинда выводить в чат.
Но этого было опять же мало...
Технология:
нужно было каким-либо образом научиться сохранять текст прямо из CS в файл конфига, а потом подгружать его. Но как захватить текст прямо в самой игре?! Было придумано 2 технологии:
1. Текст будет браться из консоли. т.е. человек вызывает консоль, пишет текст, нажимает заветную кнопочку и текст вида "ghbdtn" переводится и сохраняется в файл.
2. Текст захватывается посимвольно, простым перехватыванием нажатий клавиш, а затем сохраняться в файл.
Обе технологии имели место быть:
Первую - легко можно реализовать, но все время заходить в консоль для ввода очередного "бугога..." не хотелось. И методом отсеивания был выбран второй метод.
Реализация
После 2 дней писанины приблизительно по 3-4 часа в день начали появляться очертания того, что было запланировано...
Вроде...
Схема работы приложения:
"основной цикл работы" --> "цикл захвата нажатий клавиш" --> сохранение и возврат в основной цикл работы.
В "основном цикле работы":
ожидание нажатий клавиши F12 - выключение приложения
ожидание нажатий клавиши Y - переход в "цикл захвата"
слежение за нажатиями клавиш алфавита
В "цикле захвата нажатий клавиш"
перевод и сохранение в переменную по символьно, нажатий каждой клавиши.
блокировка повтора клавиши
цикл прогоняется каждые 10 ms.
Таким образом можно сформулировать основные плюсы которые есть и минусы.
ПЛЮСЫ:
1. Перехват нажатий клавиш из режима чата (Y).
2. т.к. режим чата включен, то информативная сходимсть с игрой. т.е. ничего лишнего не сделается пока далбить по клаве будите.
3. индикатор Scroll Lock на клаве показывает включен ли режим перехвата.
МИНУСЫ:
1. Необходимость стирания текста при наборе. т.к. во включеном режиме чата весь бред вида "ghbdtn" может быть отправлен.
Поэтому текст приходится набирать в слепую. Хотя толку та при наборе от видения "ghbdtn" никакого...
2. Задержка при отправке сообщения приблизительно 0,75 секунды.
3. Приложение работает не только в CS, но и в даже обычном блокноте ))
4. временно Отсутствие возможности набора английского языка и верхнего регистра.
ЦЕЛЬ НАПИСАНИЯ:
Узнать мнение...
Найти единомышленников...
Интересны как положительные так и негативные отзывы, но с обоснованием... Прошу, судите...
Отредактировано MaLiVer (15-01-2008 16:22:41)