SQL Thread

truekreo

Участник
Сообщения
18
Реакции
9
Есть такой код, первый LogMessage где SCORE2 нормально выдает в логи, с числом, но второй LogMessage, где SCORE3 не пишет вообще, и дальше код не выполняется как будто, т.е. даже не выводит LogMessage("OK"); Хотя если закомментировать эти 2 строчки
PHP:
//new Score3 = GetTeamScore(GetClientTeam(client));
//LogMessage("SCORE3 %i", Score3);
То LogMessage("OK"); появляется в логах. Не могу понять в чем проблема.

Вообще, мне надо в SQL_PlayerDisconnect каким-то образом узнать GetTeamScore, либо передать его в SQL_TQuery (хз как), либо в самом SQL_PlayerDisconnect пытаться узнать, что я и пробовал сделать, но не получилось.

PHP:
public OnClientDisconnect(client)
{
    new Score2 = GetTeamScore(GetClientTeam(client));
    LogMessage("SCORE2 %i", Score2);

    decl String:myQuery[255], String:OCDsteam[24];
    GetClientAuthId(client, AuthId_Steam2, OCDsteam, 32);
    Format(myQuery, 255, "SELECT * FROM users WHERE steamid = '%s'", OCDsteam);
    SQL_TQuery(g_hDb, SQL_PlayerDisconnect, myQuery, client);
}

public SQL_PlayerDisconnect(Handle:owner, Handle:hndl, const String:error[], any:data)
{
    if(hndl == INVALID_HANDLE){LogError("MYSQL ERROR. (%s)", error);}
    else
    {
        new client = data;
    
        new Score3 = GetTeamScore(GetClientTeam(client));
        LogMessage("SCORE3 %i", Score3);
    
        if (SQL_HasResultSet(hndl) && SQL_FetchRow(hndl))
        {
            LogMessage("OK");
        }
    }
}
--- Добавлено позже ---
Или как в этой строке SQL_TQuery(g_hDb, SQL_PlayerDisconnect, myQuery, client); передать client и Score2
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
Или как в этой строке SQL_TQuery(g_hDb, SQL_PlayerDisconnect, myQuery, client); передать client и Score2
datapack

В sql запросах передавай не индекс игрока, а его юзер ид. А в каллбеке запроса (в ответе) получай обратно индекс. Если игрока уже нет на сервере то индекс станет 0.
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
@truekreo, я не пойму зачем тебе передавать клиент? Если тебе нужен лишь счёт команд? так? То передавай сам счёт или команду. Судя по коду когда ты передаёшь клиент, то в калбак уже клиента нет на сервере и ты не сможешь выполнить код
PHP:
 new Score3 = GetTeamScore(GetClientTeam(client));
и будет ошибка, по этому и не работал дальше код.
PHP:
public OnClientDisconnect(client)
{
    new iTeam = GetClientTeam(client);
    new Score2 = GetTeamScore(iTeam);
    LogMessage("SCORE2 %i", Score2);

    decl String:myQuery[255], String:OCDsteam[24];
    GetClientAuthId(client, AuthId_Steam2, OCDsteam, 32);
    Format(myQuery, 255, "SELECT * FROM users WHERE steamid = '%s'", OCDsteam);
    SQL_TQuery(g_hDb, SQL_PlayerDisconnect, myQuery, iTeam);
}

public SQL_PlayerDisconnect(Handle:owner, Handle:hndl, const String:error[], any:iTeam)
{
    if(hndl == INVALID_HANDLE){LogError("MYSQL ERROR. (%s)", error);}
    else
    {
        new Score3 = GetTeamScore(iTeam);
        LogMessage("SCORE3 %i", Score3);
  
        if (SQL_HasResultSet(hndl) && SQL_FetchRow(hndl))
        {
            LogMessage("OK");
        }
    }
}
---------------------------------------------------------------------------------------------
public OnClientDisconnect(client)
{
    new Score2 = GetTeamScore(GetClientTeam(client));
    LogMessage("SCORE2 %i", Score2);

    decl String:myQuery[255], String:OCDsteam[24];
    GetClientAuthId(client, AuthId_Steam2, OCDsteam, 32);
    Format(myQuery, 255, "SELECT * FROM users WHERE steamid = '%s'", OCDsteam);
    SQL_TQuery(g_hDb, SQL_PlayerDisconnect, myQuery, Score2);
}

public SQL_PlayerDisconnect(Handle:owner, Handle:hndl, const String:error[], any:Score3)
{
    if(hndl == INVALID_HANDLE){LogError("MYSQL ERROR. (%s)", error);}
    else
    {
        LogMessage("SCORE3 %i", Score3);
  
        if (SQL_HasResultSet(hndl) && SQL_FetchRow(hndl))
        {
            LogMessage("OK");
        }
    }
}
Для лучшего понимаю напиши, что ты хочешь сделать, то и способы их решения будут разными.
 
Последнее редактирование:

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
@R1KO, на это я вобще не смотрел, я тока пример как передать те значения:ab:
 

semjef

semjef.ru
Сообщения
993
Реакции
444
if(owner == INVALID_HANDLE)
ещё можно проверить, это будет выдаваться если mysql отвалился полностью.
 
Сверху Снизу