Приветствую Вас. Не буду загружать Вас большим количеством лишней информации, а сразу перейду к делу:
Столкнулся с небольшой проблемой, а именно с командой авторизации администратора (Назовём команду "/logadm").
Описание проблемы: команда выполнена не на диалоге, а просто ввод текста в чат (/logadm qwerty), но, если ты вводишь любые символы и даже превышаешь выделенное количество символов для пароля от панели, тебя всё равно авторизует, как администратора, при этом не срабатывает кик при вводе неверного пароля. Пароль от панели администратора может содержать буквы английского алфавита и цифры, кодировка в базе данных: cp1251_bin, тип varchar(12 символов) и по умолчанию установлено 0.
Сам код (не копировал из своего кода, но суть та же)
PHP код:
CMD:logadm(playerid, params[])
{
// проверка на уровень администратора.
new pass[12];
if(sscanf(params, "s[12]", pass)) return SendClientMessage(playerid, cGray, "текст использования команды");
// здесь показываем информацию о том, что пароль должен быть не больше 12 символов (если введёт больше 12)
if(strcmp(pass, info[playerid][admpass], false))
{
// выводим сообщение администрации о том, что администратор ввёл неверный пароль с помощью format.
// кикаем администратора, который неверно ввёл пароль.
}
else
{
// авторизуем администратора, даём доступ ко всем командам (назовём это "admlog[playerid] = true;")
// оповещаем администраторов о том, что игрок авторизовался с помощью format.
}
return 1;
}
Не нужно задавать вопрос "А почему нету переменной new string?" и тому подобные вопросы. Я повторюсь, что не копировал из своего кода, а написал так, как выглядит команда в нём, изменяя почти всё.
Решил я проверить свой пароль от панели администратора и сделал небольшую команду (назовём её "/daipass"). Выделил ей string размером 13 символов и сделал так, чтобы при вводе команды выводило сообщение с паролем от панели администратора в чат.
PHP код:
CMD:daipass(playerid)
{
new string[13];
format(string, sizeof(string), "%s", info[playerid][admpass]);
SendClientMessage(playerid, цвет, string);
return 1;
Но после ввода данной команды мне выводило лишь пустое сообщение, в котором вообще ничего не было написано.
Примечание: после ввода пароля от аккаунта, при загрузке аккаунта игрока, загружает пароль от панели администратора:
PHP код:
info[playerid][admpass] = cache_get_field_content_int(0, "название столбца", название переменной подключения);
(пароль сохраняется в базе данных)