Форум Pawn.Wiki - Воплоти мечту в реальность!: Логирование игровых действий - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Логирование игровых действий + Telegram Bot уведомления
Оценка: **--- 1 Голосов

#1
Пользователь офлайн   aureliusnull 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Логирование игровых действий + Telegram Bot уведомления

Описание:
  • Система сохраняет игровые действия игрока в базу данных.
  • Доступна возможность включить уведомление о новых логах, которые будут отправлены в чат вашего телеграм бота.
  • На данный момент имеется 5 типов логов: дом, бизнес, организация, деньги, администратор.
  • Вся система реализована в виде подключаемого инклуда.
  • Для использования системы требуется только первоначальная настройка конфигурации.


Зависимости:
  • Требуется наличие плагина MySQL R41+.
  • Требуется наличие плагина tgconnector, если Вы хотите получать уведомления в чат Telegram бота.

Установка:
  • Переместите файл log_system.inc в папку с инклудами игрового мода (в большинстве случаев, это: /pawno/include).
  • Подключите инклуд в Вашем скрипте и укажите необходимые для работы настройки (см. ниже).


Конфигурация:
#include <a_mysql>
#include <tgconnector>
#include <log_system>


После установки соединения с базой данных добавьте функцию:
Log_SetMySQLConnectionHandle(/* ID подключения к БД */);


- В директиве DB_LOGS_ACCOUNTS:
  • Укажите название таблицы с аккаунтами игроков.

#define DB_LOGS_ACCOUNTS        "users"


- В директиве DB_LOGS_ACCOUNT_NAME:
  • Укажите название поля имени аккаунта игрока.

#define DB_LOGS_ACCOUNT_NAME    "name"


- В директиве DB_LOGS_ACCOUNT_ID:
  • Укажите название поля ID аккаунта игрока.

#define DB_LOGS_ACCOUNT_ID      "id"


- Объявите директивы диалогов и укажите свободный ID:
#define DIALOG_LOAD_LOGS_PAGE 4201
#define DIALOG_LOAD_LOGS_DETAIL 4202


Важно: если Вы хотите получать уведомления в чат Telegram бота:
  • Объявите директиву LOG_TELEGRAM_BOT

#define LOG_TELEGRAM_BOT


- В директиве LOG_TELEGRAM_BOT_TOKEN
  • Укажите токен Вашего бота.

#define LOG_TELEGRAM_BOT_TOKEN  "Ваш токен"

- В директиве LOG_TELEGRAM_CHAT_ID
  • Укажите ID чата между Вами и ботом.

#define LOG_TELEGRAM_CHAT_ID    (TGChatId:"Ваш чат ID")


Использование:

// Элементы перечисления действий
LOG_HOUSE_TYPE,
LOG_BUSINESS_TYPE,
LOG_FACTION_TYPE,
LOG_MONEY_TYPE,
LOG_ADMIN_TYPE

// Добавим новый лог после действия передачи денег
Log_Add(playerid, E_LOG_TYPE: LOG_MONEY_TYPE, "Admin_Admin передал $1000 игроку Admin_Test", /* идентификатор аккаунта */);

// Покажем диалог поиска логов аккаунта.
cmd:log(playerid)
{
    Log_ShowPlayerFindDialog(playerid);
    return true;
}


Установка бота:

Получение токена:
  • Найдите бота @BotFather в Telegram и начните диалог.
  • Используйте команду /newbot, чтобы создать нового бота.
  • Следуйте инструкциям для выбора имени и получения токена вашего бота.
  • Получите токен вашего бота и сохраните его для дальнейшего использования.


Получение ID чата:
  • Используйте бота, специально созданного для этого.
  • Найдите в Telegram бота @userinfobot.
  • Начните диалог с ботом и следуйте инструкциям для получения информации о своем профиле, включая идентификатор чата.
  • Получите идентификатор чата из ответа бота и сохраните его для дальнейшего использования


Скриншоты:
Скрытый текст [Показать]


Скачать:

Сообщение отредактировал aureliusnull: 09 марта 2024 - 23:41

10

#2
Пользователь офлайн   trevison 

  • Местный
  • Вставить ник
  • Раскрыть информацию
полезно, спасибо
жаль не адаптирована под R39-6
1

#3
Пользователь офлайн   trevison 

  • Местный
  • Вставить ник
  • Раскрыть информацию
warning 213: tag mismatch: expected tags "Float", or none ("_"); but found "E_LOG_TYPE"
    mysql_format(g_log_sql_handle, query_string, sizeof query_string, 
        "\
            INSERT INTO `"DB_LOGS"` \
                (type, name, account_id, log) \
            VALUES \
                (%d, '%e', %d, '%e') \
        ",
            type,

0

#4
Пользователь офлайн   aureliusnull 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Обновление v.1.1
  • Добавлена поддержка MySQL R39+
  • Исправлено предупреждение "warning 213: tag mismatch", при добавление лога в таблицу.

log_system.inc [15,89К]
2

#5
Пользователь офлайн   trevison 

  • Местный
  • Вставить ник
  • Раскрыть информацию
сообщение в телегу не приходит
ошибка в консоли: [TgConnector] [error]: Couldn't send message.APIResponse { ok: false, body: None, description: Some("Bad Request: text must be encoded in UTF-8") }
и ещё, если перелистнуть страницу логов - напишет: "Больше нет страниц с логами аккаунта", закроется окно с логами и повторно посмотреть логи уже не получится ( диалога нет )
0

#6
Пользователь офлайн   trevison 

  • Местный
  • Вставить ник
  • Раскрыть информацию
при добавлении нового лога игрока - уже не получается посмотреть лог игрока
0

#7
Пользователь офлайн   Skull116 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
При использовании инклуда без телеграмм-функций выдается ошибка:
error 017: undefined symbol "Log_InitTelegramBot"


В OnGameModeInit пропущена проверка:

#if defined LOG_TELEGRAM_BOT
    Log_InitTelegramBot();
#endif

0

#8
Пользователь офлайн   Skull116 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
- Объявите директивы диалогов и укажите свободный ID:
#define DIALOG_LOAD_LOGS_PAGE 4201
#define DIALOG_LOAD_LOGS_DETAIL 4202


DIALOG_FIND_LOGS 4200 тоже требует свободный ID?
0

#9
Пользователь офлайн   deadlove 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Подскажите что сюда вписывать пожалуйста Log_SetMySQLConnectionHandle(/* ID подключения к БД */);
0

#10
Пользователь офлайн   Hunter-Killer 

  • Проходимец
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияdeadlove (22 сентября 2024 - 23:50) писал:

Подскажите что сюда вписывать пожалуйста Log_SetMySQLConnectionHandle(/* ID подключения к БД */);

Вот твое стандартное подключение к БД:
dbHandle = mysql_connect(...);

Потом следующая строка:
Log_SetMySQLConnectionHandle(dbHandle);

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика