Mysql
Авторы: Stolen
Версия: 1.0
Описание:
Плагин позволяет организовать на сервере выдачу подарков за активность на форуме.
Установка:
IPB:
[spoiler]Заходит в АЦ форума > Пользователи > Дополнительные поля > Дополнительные поля профиля
Создаём поле Steam_id. Тип поля - Текст (одна строка), Поле может быть изменено пользователем? - Да, Сделать это поле личным? - Да.
После того как создали поле, нужно узнать его id. Для этого просто заходит в редактирование поля и в адресной строке увидим его id. У меня это выглядит так:
Вы должны зарегистрироваться, чтобы видеть ссылки.
Теперь открываем исходник ipb_system.sma и настраиваем его:
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "db_user"
#define MYSQL_PASS "db_pass"
#define MYSQL_DB "db_name"
#define MYSQL_STEAM_FILED "field_11" // Вот тут нужно изменить id на свой. Если у вас id будет 15, то должно быть написано field_15[/spoiler]
XenForo:
[spoiler]Заходит в АЦ форума > Пользователи > Дополнительные поля пользователя
Создаём поле:
ID поля - steam_id
Заголовок - какой хотите
Место отображения - персональная информация
На вкладке "Основные настройки" снимите галку "Видимо на страницах профиля"
Теперь открываем исходник ipb_system.sma и настраиваем его:
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "db_user"
#define MYSQL_PASS "db_pass"
#define MYSQL_DB "db_name"
#define MYSQL_STEAM_FILED "steam_id" // Вот тут нужно на ID поля(в примере я написал steam_id, вы можете написать любой)
Теперь открываем исходник плагина и на 63 строке меняем запрос на:
- Код: Выделить всё
formatex(mysqlCache, 1023, "SELECT `xf_user`.`user_id`, `xf_user`.`username`, \
`xf_user`.`message_count`, (SELECT COUNT(*) FROM `xf_thread` WHERE `xf_thread`.`user_id` = `xf_user`.`user_id`) AS topics, \
`xf_user`.`custom_title`, `xf_user`.`last_activity` FROM `xf_user_field_value`, `xf_user` \
WHERE `xf_user`.`user_id` = `xf_user_field_value`.`user_id` AND `xf_user_field_value`.`field_id` = '%s' AND `xf_user_field_value`.`field_value` = '%s' LIMIT 1;", MYSQL_STEAM_FILED, steamID);
Всё. С установкой закончили, можно компилировать и ставить на сервер.
Для получения бонуса игроку нужно зайти в настройки профиля и указать свой стим_ид:
Вы должны зарегистрироваться, чтобы видеть ссылки.
Пример плагина подарков:
[pawn]
- #include <amxmodx>
- #include <WPMGPrintChatColor>
- #pragma semicolon 1
- forward ipb_core(id, MemberID, const Name[], Posts, Topics, const Status[], LastVisit);
- enum ipb_profile {
- active,
- member_id,
- name[64],
- posts,
- topics,
- status[64],
- last_visit
- };
- new ipb_data[33][ipb_profile];
- public plugin_init() {
- register_plugin("[Public]Presents for ipb system", "0.1", "Stolen");
- }
- public client_putinserver(id)
- {
- set_task(10.0, "PrintStatus", id);
- }
- public PrintStatus(id)
- {
- if(is_user_connected(id) && ipb_data[id][active])
- PrintChatColor(id, _, "!g[SERVER] !yЗдравствуй !g%s! !yБонус будет выдаваться !tкаждый раунд !g;)", ipb_data[id][name]);
- else
- PrintChatColor(id, _, "!g[SERVER] !yЧтобы получать !gбонус - !tзарегистрируйтесь на форуме");
- }
- public ipb_core(id, MemberID, const Name[], Posts, Topics, const Status[], LastVisit)
- {
- if(is_user_connected(id) && MemberID != 0)
- {
- ipb_data[id][active] = true;
- ipb_data[id][member_id] = MemberID;
- ipb_data[id][posts] = Posts;
- ipb_data[id][topics] = Topics;
- copy(ipb_data[id][status], 63, Status);
- ipb_data[id][last_visit] = LastVisit;
- copy(ipb_data[id][name], 63, Name);
- }
- }
Плагину доступна следующая информация о профиле игрока:
member_id, // Ид на форуме
name[64], // Ник на форуме
posts, // Кол-во сообщений
topics, // Кол-во тем
status[64], // Статус профиля
last_visit // Дата последнего посещения форума
Скачать:
Благодарности:
kes за тестовый форум xenforo