Кто был сегодня в 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)