Не работает функция

Hund dev.

Участник
Автор темы
47
2
Всем привет! Использую мультипоточную функцию mysql_tquery для запроса в паблике OnPlayerConnect
Код:
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, Player[playerid][pNick], 24);
    
     format(text, sizeof(text), "SELECT * FROM `accounts` WHERE `nick` = `%s`", Player[playerid][pNick]);
     mysql_tquery(sqlHandler, text, "CheckDBUser");
    
     return 1;
}[
/CODE]
Однако, мой кастомный паблик CheckDBUser не вызывается мультипотоком. Что делать?
Он объявлен, если изменить код на такой:
[CODE]
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, Player[playerid][pNick], 24);
    
     format(text, sizeof(text), "SELECT * FROM `accounts` WHERE `nick` = `%s`", Player[playerid][pNick]);
     mysql_query(sqlHandler, text);
     CheckDBUser();

     return 1;
}[
/CODE]
То все будет работать, однако будет постоянно выдаваться диалог регистрации
[CODE]
forward CheckDBUser(playerid);
public CheckDBUser(playerid)
{
    new rows;
    
    cache_get_row_count(rows);
    
    if (rows) {
        format(text, sizeof(text), "Ïðèâåòñòâóåì Âàñ íà \"%s\"!\nÂâåäèòå ïàðîëü äëÿ àâòîðèçàöèè.", SERVER_NAME);
        ShowPlayerDialog(playerid, d_login, DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", text, "Äàëåå", "");
    } else {
        format(text, sizeof(text), "Ïðèâåòñòâóåì Âàñ íà \"%s\"!\nÂâåäèòå ïàðîëü äëÿ ðåãèñòðàöèè.", SERVER_NAME);
        ShowPlayerDialog(playerid, d_register, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", text, "Äàëåå", "");
    }
    
    return 1;
}
/CODE]
 
  • Злость
Реакции: qdIbp

savvin

Известный
407
140
Нарушена целостность параметров коллбэка.

C:
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, Player[playerid][pNick], 24);
    
     format(text, sizeof(text),
            "SELECT * FROM `accounts` WHERE `nick` = `%s`",
            Player[playerid][pNick]
     );
     mysql_tquery(sqlHandler, text, "CheckDBUser", "d", playerid);
    
     return 1;
}