Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
api_main [2021/10/19 05:33] phaust [Расшифровка] красивый код |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Зашифрованная информация об игре ====== | ||
- | ===== Зачем?===== | ||
- | |||
- | Если необходимо передать некую информацию об игре во время игры сторонним сервисам (телеграм ботам, сторонним скриптам и т.п.) - то рекомендуется пользоваться генерацией зашифрованной строки. В этом случае даже технически подкованные игроки не смогут увидеть, какая именно информация передаётся, и подменить её самостоятельно (особенно актуально на Лонг форматах). | ||
- | |||
- | ===== Как?===== | ||
- | |||
- | ==== Генерация ключа ==== | ||
- | |||
- | В игре надо создать ключ. Для этого в редакторе игры в разделе 'API для внешних сайтов/телеграм ботов' ткнуть кнопку 'Сгенерировать'. | ||
- | |||
- | ==== Использование в задании ==== | ||
- | |||
- | В заданиях и описании игры можно использовать конструкцию !api:**данные**! | ||
- | |||
- | **данные** - нужные стороннему серверу - указываются через запятую: | ||
- | |||
- | * user_id - id юзера. В данных поле 'u'. | ||
- | * user_name - Логин юзера. В данных поле 'un' | ||
- | * team_id - Id команды. В данных поле 'tm' | ||
- | * team_name - Названия команды. В данных поле 'tmn' | ||
- | * task_n - Номер уровня. В данных поле 't' | ||
- | * task_id - Id уровня. В данных поле 'tid' | ||
- | * game_id - Id игры. В данных поле 'gid' | ||
- | |||
- | |||
- | ==== Пример ==== | ||
- | |||
- | Например: !api:user_id,task_id! | ||
- | |||
- | Сгенерирует зашифрованную строку bc1443bbb42bafc0501bc821c2fb55a987fda029d4ea6657 которую можно расшифровать в {'u':15, 'tid:32432} с помощью ключа игры. | ||
- | |||
- | [[https://qeng.org/game.php?jump_to&gid=3493&task_id=42719|Пример задания в игре]] | ||
- | |||
- | ==== Расшифровка ==== | ||
- | |||
- | Пример расшифровки на PHP: | ||
- | <code PHO> | ||
- | json_decode( | ||
- | trim( | ||
- | openssl_decrypt( | ||
- | hex2bin($data), | ||
- | 'BF-ECB', | ||
- | $key, | ||
- | OPENSSL_RAW_DATA | OPENSSL_NO_PADDING | ||
- | ) | ||
- | ), | ||
- | true | ||
- | ); | ||
- | </code> |