Возврат значения из каллбека SQL_TQuery

Tomiks

Участник
Сообщения
419
Реакции
288
Привет всем
Можно ли каким-то образом вернуть значение из каллбека в функцию, откуда его вызывали?(каллбек типа void, поэтому return же не поможет^_^)
Пришёл к такому варианту, но нет сейчас возможности проверить, если кто разбирается можете опровергнуть мой вариант и по возможности предложить решение, если оно есть, спасибо!

C++:
public int GetCurrentLevel(Handle hPlugin, int iParams)
{
    int userid = GetNativeCell(1);
    int client = GetClientOfUserId(userid)
    if(client && !IsFakeClient(client) && IsClientInGame(client))
    {
        int iLevel;
        char sQuery[256];
        FormatEx(sQuery, sizeof(sQuery), "SELECT `level` FROM `core_table` WHERE `steamid` = '%s';", aClientNum[client]);
        SQL_TQuery(g_hDatabase, CallBackSQL_GetLevel, iLevel);
    }
}

public void CallBackSQL_GetLevel(Handle db, Handle hGetLevel, const char[] error, any &iLevel)
{
    if(error[0]) LogError("CallBackSQL_GetLevel: %s", error);

    if(SQL_FetchRow(hGetLevel)) iLevel = SQL_FetchInt(hGetLevel, 0);
}

Или же оно вернёт значение позже?


Вопрос решён, спасибо за помощь @Коробка из под бананов (последнее сообщение)
 
Последнее редактирование:

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #2
Суть SQL_TQuery() в том, что запрос будет выполнен с вероятностью в 99% после того, как свое выполнение завершит функция, откуда её вызвали. В следствии, и каллбек тоже.
Зачем в оригинальную функцию что-то возвращать?
 

Tomiks

Участник
Сообщения
419
Реакции
288
Суть SQL_TQuery() в том, что запрос будет выполнен с вероятностью в 99% после того, как свое выполнение завершит функция, откуда её вызвали. В следствии, и каллбек тоже.
Зачем в оригинальную функцию что-то возвращать?
Хотел сделать натив для возврата значения параметра из бд, чтобы в модулях использовать
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
Ну, Вы можете в нативе принимать каллбек.
А ещё можете при старте плагина сразу все параметры из БД забирать и хранить в памяти плагина.
 

Tomiks

Участник
Сообщения
419
Реакции
288
Ну, Вы можете в нативе принимать каллбек.
А ещё можете при старте плагина сразу все параметры из БД забирать и хранить в памяти плагина.
В самом начале не вариант, т.к. во время выполнения данные меняются, а на счёт принятия каллбека в нативе, это как, не очень понимаю?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #6
В самом начале не вариант, т.к. во время выполнения данные меняются
Кто мешает периодически обновлять кеш?
Я так понял, что пишется какая-то статистика. Верно?
Можно level локально для всех игроков держать в кеше и обновлять вместе с отправкой запросов в СУБД.

на счёт принятия каллбека в нативе, это как
Тут Рико кое-какой пример показывал.
 
Сверху Снизу