Техническое задание: Разработка мода для онлайн-игры
Цель проекта
Создание программного мода, который автоматизирует взаимодействие с игровым клиентом: выполняет авторизацию и отправляет сообщения другим игрокам по команде с внешнего сервера.
Архитектура и протокол
- Мод должен запускаться одновременно с игровым клиентом.
- Установка TCP-соединения с локальным сервером по адресу
localhost:7273. - Все входящие и исходящие сообщения обязаны быть в формате JSON с кодировкой UTF-8.
Логика работы (Finite State Machine)
Статус I: Ожидание авторизации
- При старте игры мод переводит интерфейс на экран авторизации (если это необходимо).
- Отправляет на сервер статусное сообщение:
{"status": "ready_to_auth"}. - Ожидает от сервера учетные данные в формате:
{"auth": {"login": "...", "password": "..."}}. - Автоматически вводит полученные логин и пароль в игровой клиент, пропускает обучение (при его наличии).
- После успешного входа отправляет серверу подтверждение:
{"status": "ready_to_spam"}.
Статус II: Готов к отправке сообщений
- В этом состоянии мод ожидает от сервера команды на отправку сообщения. Формат команды:
{"spam": {"u_id": 123, "content": "Текст сообщения"}}. - Получив команду, мод находит в игровом интерфейсе чата пользователя с указанным ID (
u_id) и отправляет ему сообщение с заданным текстом (content). - После выполнения отправляет серверу статус:
{"status": "ready_to_spam"}, возвращаясь в состояние ожидания новой команды.
Смена аккаунта
При получении от сервера команды {"auth": {"logout": ...}} мод должен корректно завершить текущую сессию, выйти из аккаунта и вернуться в Статус I: Ожидание авторизации для начала цикла с новыми учетными данными.
Требования к реализации
- Код должен быть стабильным, не вызывать падений игрового клиента.
- Обработка ошибок сетевого соединения и некорректного JSON.
- Мод не должен нарушать лицензионное соглашение игры (на усмотрение исполнителя, с оговоркой о потенциальных рисках).
- Четкое следование описанной машине состояний (Status I -> Status II).