PDA

Просмотр полной версии : [Вопрос] Проблема с диалогом.



Camelot
28.06.2015, 22:45
Пишу систему бана.
В проверке на блокировку не показывается диалог. Для проверки вписал SendClientMessage, чтобы выводилось вместе с диалогом - выводится.
Может вы поможете? Голова уже завалена, может не вижу элементарного)


publics: BanListCheck(playerid)
{
cache_get_data(rows, fields);
if(!rows) return true;
new admin[MAX_PLAYER_NAME], reason[90], dateban[27], dateunban[27], str[123 - 2 + 27 - 2 + 27 - 2 + MAX_PLAYER_NAME - 2 + 11 - 2 + 90];
getstr(0, "DateBan", dateban);
getstr(0, "DateUnBan", dateunban);
getstr(0, "Admin", admin);
getstr(0, "Reason", reason);
if(gettime() < getint(0, "BanSec"))
{
format(str, sizeof(str),"\
Аккаунт заблокирован!\n\n\
Дата блокировки: %s\n\
Дата разблокировки: %s\n\
Блокировщик: %s\n\
Ваш личный ID: %d\n\
Причина блокировки: %s",
dateban, dateunban, admin, getint(0, "Acc_ID"), reason);
Dialog(playerid, 5, DIALOG_STYLE_MSGBOX, "Заблокирован", str, "Выход", "");
Message(playerid, -1, "Проверка");
return Kick(playerid);
}
mysql_format(cHandle, str, sizeof(str), "DELETE FROM `Bans` WHERE `Nick` = '%s'", Nick(playerid));
mysql_function_query(cHandle, str, false, "", "");
return SendClientMessage(playerid, cWHITE, "Вы были разбанены.");
}

$continue$
29.06.2015, 01:39
Что, такое getstr?
Стоило бы показать макрос или что у Вас там (Dialog)

Camelot
29.06.2015, 21:06
Покопался, нашёл вот такую проблему...

При коннекте игрока производится два запроса: На нахождения игрока в бане, и, собсна, на нахождение самого аккаунта:


mysql_format(cHandle, str, sizeof(str), "SELECT * FROM `Bans` WHERE `Nick` = '%s' OR `IP` = '%s'", Nick(playerid), PInfo[playerid][IP]);
mysql_function_query(cHandle, str, true, "BanListCheck", "i", playerid);

mysql_format(cHandle, str, sizeof(str), "SELECT * FROM `users` WHERE `Nick` = '%s'", Nick(playerid));
mysql_function_query(cHandle, str, true, "RegPlayerCheck", "i", playerid);

Если рассуждать логически, то сначала происходит проверка на бан аккаунта. Но когда код доходит до вывода диалога блокировки на экран(BanListCheck), почему-то выводится диалог с авторизацией/регистрацией из RegPlayerCheck.

Вот RegPlayerCheck:


publics: RegPlayerCheck(playerid)
{
cache_get_data(rows, fields);
if(!rows) return Dialog(playerid, 0, DIALOG_STYLE_INPUT, "Регистрация", "Придумайте пароль(8-18):", ">>", "Отмена");
return Dialog(playerid, 4, DIALOG_STYLE_PASSWORD, "Авторизация", "Введите пароль", "Войти", "Отмена");
}

Есть у кого предположения в чем проблема?
P.S. Если закомментировать поиск аккаунта, то диалог с блокировкой высвечивается.

- - - Добавлено - - -

Решил проблему)
Нужно было просто поменять местами запросы при коннекте :D
Тема закрыта.