[SQL] Core

[SQL] Core 1.1 BETA

Нет прав для скачивания
Сообщения
20
Реакции
0
Mittu добавил(а) новый ресурс:

[GameCMS] SQL User - Использование привилегий с сайт GameCMS (без паролей) + Авто-Ник в профиль

  • Плагин устанавливает флаги привилегий игрока полученных с сайта (IP или STEAM_ID) что позволяет обойтись без паролей к привилегии.
  • Плагин устанавливает ник игроку в профиль на сайт.
Узнать больше об этом ресурсе...
 
Сообщения
1,273
Реакции
2,255
Помог
57 раз(а)
Видеообзор нельзя посмотреть, пишет Доступ ограничен. Я не очень понимаю, если честно, в каких ситуациях требуется данный плагин.
 
Сообщения
20
Реакции
0
BlackSignature, Обновил видео.

Плагин служит для облегчение игроков с привилегиями. Т.к не использует пароли.
Несколько случаев:
  • Когда ходишь по серверам и разные пароли или ники от привилегий (частая проблема игроков).
  • Потеря пароля или забыл ник.

Основная привязка привилегии идет по айпи с сайта. Даже если он динамический сайт обновит его по последней сессии.
Привилегия сразу будет активна после захода игрока на сервер (не требует смены карты или amx_reloadadmins) что делает сервер более развитым с точки зрения игрока.

Больше информации о пользователе как минимум на данном этапе авто обновление ника в профиле, да система пока не полноценная, но дальнейшая реализация требует спроса.
 
Последнее редактирование:
Сообщения
20
Реакции
0
Видеообзор нельзя посмотреть, пишет Доступ ограничен. Я не очень понимаю, если честно, в каких ситуациях требуется данный плагин.
Служит дополнением для других плагинов: 1730261929405.png
 
Сообщения
252
Реакции
-3
Помог
5 раз(а)
Mittu, не знаю к чему это, но когда ставишь gamecms api на сервер привилегия моментально обрабатывается, то есть не надо ждать смены карты или писать amx_reloadadmins сколько раз ставил данный плагин работает безупречно
 
Сообщения
63
Реакции
130
Помог
4 раз(а)
А зачем использовать синхронную фнукцию коннекта SQL_Connect? Чтобы при отвале БД завис сервер?
Да и кодировку нужно ставить через SQL_SetCharset, иначе в SQL_ThreadQuery будет использоваться та, что по-умолчанию в БД.
 
Сообщения
20
Реакции
0
lol cek, Это структура позволяет подключать другие работы, такие как: регистрация пользователя с сервера, магазин, кто написал, топ донаторов, и многое другое. Все это будет бесплатно и с открытым кодом.
Среда в 14:00
BaHeK, В случае "отвала бд" юзаем set_fail_state() и логируем

Код:
public MySQL_connection_failed(iState, const szError[], iErrorCode, const szData[], iDataSize)
{
    log_amx("[Error] MySQL connection failed");
    log_amx("[Error] ERROR %d | %s", iErrorCode, szError);
    if(iDataSize) log_amx("Query state: %d", szData[iState == TQUERY_CONNECT_FAILED ? 0 : 1]);
    set_fail_state(szError);
    return PLUGIN_HANDLED;
}

В коде указана принудительная кодировка SQL_SetCharset(g_SqlTuple, "utf8") на 41 строке
 
Сообщения
209
Реакции
333
Помог
3 раз(а)
В обработчиках sql запросов необходимо пробрасывать не слотовый id игрока, а его userid (id сессии коннекта) и затем резолвить слотовый id игрока по userid, иначе этот плагин (и как многие другие плагины, которые имеют схожую проблему конкуретнности) будет выдавать всякие интересные результаты с подгрузкой чужих данных у игроков
 
Сообщения
20
Реакции
0
Xelson, Имеешь ввиду?:

Код:
- SQL_ThreadQuery(g_SqlTuple, "SQL_QueryConnection_Users", g_szQuery, iParams, sizeof iParams);
+ SQL_ThreadQuery(g_SqlTuple, "SQL_QueryConnection_Users", g_szQuery, g_szPlayerSteam[id], sizeof g_szPlayerSteam[]);

if(equal(szAuth, "ID_PENDING")) return PLUGIN_HANDLED;
Среда в 15:19
Xelson, За полгода реализации на 3х серверах не наблюдал подобных проблем про " интересные результаты с подгрузкой чужих данных у игроков "
 
Сообщения
3,553
Реакции
1,555
Помог
131 раз(а)
@BaHeK, В случае "отвала бд" юзаем set_fail_state() и логируем
Это не избавит сервер от зависания, пока mysql ждёт ответ на запрос.

Код:
- SQL_ThreadQuery(g_SqlTuple, "SQL_QueryConnection_Users", g_szQuery, iParams, sizeof iParams);
+ SQL_ThreadQuery(g_SqlTuple, "SQL_QueryConnection_Users", g_szQuery, g_szPlayerSteam[id], sizeof g_szPlayerSteam[]);

if(equal(szAuth, "ID_PENDING")) return PLUGIN_HANDLED;
Это не user id.
 
Сообщения
1,038
Реакции
205
Помог
6 раз(а)
Игрок может подключиться раньше чем произойдет подключение к бд

База имеет синхронность , а если сервер базы зависнет или отвал получит?

Не вижу закрытия сессии подключения
 
Сообщения
49
Реакции
8
Предупреждения
1
Зачем когда есть gamecms api ) Так же подгружает без танцев с бубном )
 
Сообщения
20
Реакции
0
@therealwh,Это основной плагин который позволит реализовывать дальнейшие цели в связке GameCMS + сервер. На данном этапе это просто получение привилегий, и автоник. В дальнейшие это послужит для продажи модели на сервере, привилегий, hud информация топиков топ 3 донатера, лучших по времени и т.д.. Также бан система которая позволит банить игроков по типу входа на сервере но и текстовых, голосовых, либо командных. Которая прекрасно работает с GameCMS. Но на ранней стадии выложить не могу т.к. проходят тесты
 
Сообщения
209
Реакции
333
Помог
3 раз(а)
BiZaJe, при асинхронных запросах соединение инициализируется с нуля, здесь в прицнипе нет необходимости в синхронном запросе, это только может затормозить поток сервера.
нет, я скорее имею ввиду использовать userid (get_user_userid), это будет чуть лучше чем получение данных по стимайди, но по стимайди тоже годится.
За полгода реализации на 3х серверах не наблюдал подобных проблем про " интересные результаты с подгрузкой чужих данных у игроков "
эта проблема явно проявляется при больших задержках выполнения запросов и если с соединением до БД все нормально, то она может и не проявляться вовсе. Еще не все игроки сообщат кому-либо, что у них это произошло
 
Сообщения
20
Реакции
0
Xelson, Для отслеживания там есть:
Код:
public SQL_QueryConnection_Users_AutoNick(iState, Handle:hQuery, const szError[], iErrorCode, const szData[], iDataSize)  {
    if(iState == TQUERY_CONNECT_FAILED || iState == TQUERY_QUERY_FAILED) return MySQL_connection_failed(iState, szError, iErrorCode, szData, iDataSize);

    if( SQL_NumResults(hQuery) > 0 ) server_print("Sql result [%d] data[%d]", SQL_NumResults(hQuery),szData[0]);
    new buffer[512];
    SQL_GetQueryString(hQuery,buffer,charsmax(buffer));
    server_print("[%s]",buffer);
    return PLUGIN_HANDLED;
}
что в принципе достаточно для отслеживания1730301553097.png
Среда в 18:23
Xelson, Единственные проблемы у меня возникали только в том случае что когда в каком то случае падает/не работает БД натив не возвращал нужные данные и другие плагины тоже падали цепочкой, ну это проблему я исправил через find_plugin_byfile и set_native_filter пока проблем больше не наблюдал.
Среда в 18:33
Xelson, За косвенную подсказку с ограничением по времени выполнении запроса спасибо. Я учту это в последующем обновлением.
при больших задержках выполнения запросов и если с соединением до БД
Думаю в SQL_ThreadQuery будет достаточно queuetime
 
Сообщения
74
Реакции
8
Блин ну тут просится регистрация на сайте через сервер. Наконец то админы начали отображаться нормально, плюс временные админы типо тестовых випов тоже адекватно подгружаются.
нашел проблему или не проблему, короче странность. Он ботов как пользователей маркирует почему то. Нужно наверно отключить обработку для ботов. У меня стоят Zbot в списке игроков сервера иногда маркирует как зарегистрированного пользователя на сервере. Но это бот.
 

Пользователи, просматривающие эту тему

Сверху Снизу