whale
/proger/
Здравствуйте, ув. пользователи p-i.
Решив написать команду /makeadmin, столкнулся с проблемой.
1) При регистрации админ пароля, вместо админ пароля пишет кол-во символов, которое было введено в диалог(используются только цифры), и пароль в файлике аккаунта - не меняется:
2) При авторизации (даже если пароль введён правильно) снова выкидывает диалог авторизации:
Сама команда:
С меня причитается! ^_^
Решив написать команду /makeadmin, столкнулся с проблемой.
1) При регистрации админ пароля, вместо админ пароля пишет кол-во символов, которое было введено в диалог(используются только цифры), и пароль в файлике аккаунта - не меняется:
PHP:
case 9:
{
if(response)
{
if(!strlen(inputtext)) return SPD(playerid, 9, DSI, "Пароль администратора", "{FFFFFF}Используйте только цифры. Не менее 6 символов:", "Готово", "Отмена");
for(new i = strlen(inputtext); i != 0; --i)
switch(inputtext[i])
{
case 'А'..'Я', 'а'..'я', 'A'..'Z', 'a'..'z': return SPD(playerid, 9, DSI, "Пароль администратора", "{FFFFFF}Установите себе пароль администратора:\nДанный пароль нельзя будет изменить!", "Готово", "Отмена");
}
if(strlen(inputtext) > 16) return SPD(playerid, 9, DSI, "Пароль администратора", "Вы ввели более 16-ти цифр!\nПароль должен содержать от {FFFF00}6-ти {FFFFFF}до {FFFF00}16-ти {FFFFFF} цифр!", "Готово", "Отмена");
if(strlen(inputtext) < 6) return SPD(playerid, 9, DSI, "Пароль администратора", "Вы ввели менее 6-ти цифр!\nПароль должен содержать от {FFFF00}6-ти {FFFFFF}до {FFFF00}16-ти {FFFFFF} цифр!", "Готово", "Отмена");
f("Users/%s.ini", GN(playerid));
ini_setString(ini_openFile(string), "AdmPass", inputtext);
ini_closeFile(ini_openFile(string));
format(string, sizeof(string), "Пароль администратора установлен: %d", strlen(inputtext));
SCM(playerid, -1, string);
SCM(playerid, -1, "Пароль администратора нужно использовать после входа на сервер!");
}
else
{
Player[playerid][pAdmin] = 0;
SCM(playerid, COLOR_RED, "Вы были аннулированы в правах администратора, причина: отказ регистрации админ-пароля!");
Kickk
}
}
PHP:
case 10:
{
if(response)
{
if(!strlen(inputtext)) return SPD(playerid, 10, DSI, "Авторизация администратора", "Введите свой пароль администратора:", "Готово", "Отмена");
if(strlen(inputtext) == Player[playerid][pAdmPass])
{
format(string, sizeof(string), "Вы успешно авторизовались как администратор %d уровня!", Player[playerid][pAdmin]);
SCM(playerid, -1, string);
}
else return SPD(playerid, 10, DSI, "Авторизация администратора", "Вы неверно ввели свой пароль администратора!\nВведите свой пароль администратора:", "Готово", "Отмена");
}
else
{
SCM(playerid, COLOR_RED, "Вы отказались вводить пароль администратора!");
Kickk
}
}
PHP:
CMD:makeadmin(playerid, params[])
{
if(Player[playerid][pAdmin] < 1) return true;
new giveplayerid, admlvl, string[64];
if(sscanf(params,"dd",giveplayerid,admlvl)) return SCM(playerid, COLOR_WHITE, "Используйте: /makeadmin [ID] [lvl(0-3)]");
if(!IsPlayerConnected(giveplayerid)) return SCM(playerid,COLOR_WHITE,"Данный игрок не подключен к серверу!");
if(admlvl > 1 || admlvl < 0) return SCM(playerid,COLOR_WHITE,"Нельзя больше 1 и меньше 0!");
GetPlayerName(playerid, sn, sizeof(sn));
GetPlayerName(giveplayerid, gp, sizeof(gp));
Player[giveplayerid][pAdmin] = admlvl;
format(string, sizeof(string), "Администратор %s назначил Вас администратором %d уровня.", sn, admlvl);
SCM(giveplayerid, -1, string);
format(string, sizeof(string), "Вы назначили %s администратором %d уровня.", gp, admlvl);
SCM(playerid, -1, string);
SPD(giveplayerid, 9, DSI, "Пароль администратора", "{FFFFFF}Установите себе пароль администратора:\nДанный пароль нельзя будет изменить!\nПароль должен состоять из цифр (от {FFFF00}6-ти {FFFFFF}до {FFFF00}16-ти)!", "Готово", "Отмена");
return 1;
}
