Question

Как сделать рандомный админ пародь с буквами и цифрами? Чтобы было по типу "Ваш пароль к админ.доступу: (2 рандомные маленькие английские буквы.), (4 рандомные цифры).

Share this post


Link to post

17 answers to this question

  • 0

@R0m4ik, ничего вставлять не нужно.

 

Вы немного неправильно вставили то, что Вам было дано. Код генерации пароля вставьте туда, где вам нужно получить случайный пароль администратора:

new randPassword[7] = "";
randPassword[0] = getLowerLatinLetter();
randPassword[1] = getLowerLatinLetter();
randPassword[2] = getDigit();
randPassword[3] = getDigit();
randPassword[4] = getDigit();
randPassword[5] = getDigit();

А функции вставьте, например, в конец в начало игрового мода:

stock getLowerLatinLetter()
{
	return 97 + random(26);
}

stock getUpperLatinLetter()
{
	return 65 + random(26);
}

stock getDigit()
{
	return 48 + random(10);
}

Все остальное Вам было дано лишь в пример - можете удалить.

Share this post


Link to post
  • 0

@R0m4ik просто 2 массива с хаглавными буквами и числами, и рандомная генерация индекса.

Share this post


Link to post
  • 0
22 минуты назад, keyl сказал:

@R0m4ik просто 2 массива с хаглавными буквами и числами, и рандомная генерация индекса.

А как? Я просто не умею

Если что вот моя команда выдачи админки 

CMD:madmin(playerid, params[])
{
    new string[256];
        if(PlayerLogged[playerid] == 0) return 1;
        if(PlayerInfo[playerid][pAdmin] < 10 || AdminLogged[playerid] == false) return 1;
        new admin[MAX_PLAYER_NAME];
        GetPlayerName(playerid, admin, sizeof(admin));
        {
        if(sscanf(params, "ud", params[0],params[1])) return SendMes(playerid, COLOR_WHITE, "Ââåäèòå: /madmin [playerid] [level(1-7)]");
            if(params[1] > 13 || params[1] < 0) return SendClientMessage(playerid, COLOR_GREY, "Óðîâåíü àäìèíêè äîëæåí áûòü îò 1 äî 10.");
            if(params[1] == 0) return PlayerInfo[params[0]][pAdmin] = params[1],AdminLogged[params[0]] = false,SendMes(playerid,0x3bd1d1ff, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0.", sendername(params[0])),SendMes(params[0],0x3bd1d1ff, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0");
                format(string, 128, "%s íàçíà÷èë íîâîãî àäìèíèñòðàòîðà %s", sendername(playerid), PlayerInfo[playerid][pSendername]);
                SendAdminMessage(COLOR_YELLOW, string);
        format(totalstring, 100, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d.", sendername(params[0]), params[1]);
                SendClientMessage(playerid,0x3BD1D1FF, totalstring);
                format(totalstring, 100, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d",params[1]);
                SendClientMessage(params[0],0x3BD1D1FF, totalstring);
                PlayerInfo[params[0]][pAdmin] = params[1];
                SendMes(params[0], 0xF272DDFF, " Âàø ïàðîëü ê àäìèí.äîñòóïó: {FFFFFF}%s",PlayerInfo[playerid][pDostup]);
        }
        if(!strcmp(admin, "", true))
        {
        if(sscanf(params, "ud", params[0],params[1])) return SendMes(playerid, COLOR_WHITE, "");
            if(params[1] == 0) return PlayerInfo[params[0]][pAdmin] = params[1],AdminLogged[params[0]] = false,SendMes(playerid,0x3bd1d1ff, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0.", sendername(params[0])),SendMes(params[0],0x3bd1d1ff, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0");
                format(string, 128, "%s íàçíà÷èë íîâîãî àäìèíèñòðàòîðà %s", sendername(playerid), PlayerInfo[playerid][pSendername]);
                SendAdminMessage(COLOR_YELLOW, string);
                format(totalstring, 100, " {3bd1d1}Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d.", sendername(params[0]), params[1]);
                SendClientMessage(playerid,0x3BD1D1FF, totalstring);
                format(totalstring, 100, " {3bd1d1}Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d",params[1]);
                SendClientMessage(params[0],0x3BD1D1FF, totalstring);
                PlayerInfo[params[0]][pAdmin] = params[1];
                SendMes(params[0], 0xF272DDFF, " Âàø ïàðîëü ê àäìèí.äîñòóïó: {FFFFFF}%s",PlayerInfo[playerid][pDostup]);
        }
        if(!strcmp(admin, "", true))
        {
        if(sscanf(params, "ud", params[0],params[1])) return SendMes(playerid, COLOR_WHITE, "");
            if(params[1] == 0) return PlayerInfo[params[0]][pAdmin] = params[1],AdminLogged[params[0]] = false,SendMes(playerid,COLOR_WHITE, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0.", sendername(params[0])),SendMes(params[0],0x3bd1d1ff, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}0");
                format(string, 128, "%s íàçíà÷èë íîâîãî àäìèíèñòðàòîðà %s", sendername(playerid), PlayerInfo[playerid][pSendername]);
                SendAdminMessage(COLOR_YELLOW, string);
                format(totalstring, 100, " Âû íàçíà÷èëè %s àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d.", sendername(params[0]), params[1]);
                SendClientMessage(playerid,0x3BD1D1FF, totalstring);
                format(totalstring, 100, " Âû áûëè íàçíà÷åíû àäìèíèñòðàòîðîì óðîâíÿ {FF0000}%d",params[1]);
                SendClientMessage(params[0],0x3BD1D1FF, totalstring);
                PlayerInfo[params[0]][pAdmin] = params[1];
                SendMes(params[0], 0xF272DDFF, " Âàø ïàðîëü ê àäìèí.äîñòóïó: {FFFFFF}%s",PlayerInfo[playerid][pDostup]);
        }
        return 1;
}

Share this post


Link to post
  • 0

Ребят ну помогите кто нибудь

 

Share this post


Link to post
  • 0
17 минут назад, R0m4ik сказал:

Ребят ну помогите кто нибудь

 

https://pawno-rus.ru/topic/645-generator-paroley/

Share this post


Link to post
  • 0

К чему такие сложности? Открываем таблицу ASCII символов. Строчные буквы латинского алфавита имеют номера 97 - 122 (26 букв). Цифры имеют номера 48-57 (10 цифр). Соответственно...

  1. Для того, чтобы сгенерировать случайную букву, достаточно получить случайное число из диапазона 0 - 25 функцией random и прибавить к нему 97, что даст случайное число из диапазона 97 - 122.
  2. Для того, чтобы сгенерировать случайную цифру, достаточно получить случайное число из диапазона 0 - 9 функцией random и прибавить к нему 48, что даст случайное число из диапазона 48 - 57.

Теперь ближе к практике. Вам необходимо видеть строку из 4 случайных латинских строчных букв и 2 цифр. Создаем массив на 7 ячеек (первые 4 - под буквы, 2 - под цифры и последняя ячейка под хранение символа конца строки).

new randPassword[7] = "";

Далее начинаем заполнять на основе информации из нумерованного списка.

new randPassword[7];
randPassword[0] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[1] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[2] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[3] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[4] = 48 + random(10); // цифра из диапазона 48 .. (48 + 9)
randPassword[5] = 48 + random(10); // цифра из диапазона 48 .. (48 + 9)

Ну, и используйте теперь randPassword как строку с паролем. Например,

new string[29 + (-2+7) + 1];
format(string, sizeof string, "Ваш пароль администратора: %s", randPassword);
SendClientMessage(playerid, -1, string);

Для удобства понимания можно создать функции, которые будут возвращать символ цифры или латинской буквы.

stock getLowerLatinLetter() { // возврат строчного латинского символа
	return 97 + random(26);
}

stock getUpperLatinLetter() { // возврат прописного латинского символа
	return 65 + random(26);
}

stock getDigit() { // возврат символа цифры
	return 48 + random(10);
}

Это позволит в дальнейшем использовать следующий вариант формирования пароля:

new randPassword[7];
randPassword[0] = getLowerLatinLetter();
randPassword[1] = getLowerLatinLetter();
randPassword[2] = getLowerLatinLetter();
randPassword[3] = getLowerLatinLetter();
randPassword[4] = getDigit();
randPassword[5] = getDigit();

* Все случайные числа - псевдослучайны.

** Строчные буквы - это маленькие, а прописные - большие.

Share this post


Link to post
  • 0
23 минуты назад, Снеговик сказал:

К чему такие сложности? Открываем таблицу ASCII символов. Строчные буквы латинского алфавита имеют номера 97 - 122 (26 букв). Цифры имеют номера 48-57 (10 цифр). Соответственно...

  1. Для того, чтобы сгенерировать случайную букву, достаточно получить случайное число из диапазона 0 - 25 функцией random и прибавить к нему 97, что даст случайное число из диапазона 97 - 122.
  2. Для того, чтобы сгенерировать случайную цифру, достаточно получить случайное число из диапазона 0 - 9 функцией random и прибавить к нему 48, что даст случайное число из диапазона 48 - 57.

Теперь ближе к практике. Вам необходимо видеть строку из 4 случайных латинских строчных букв и 2 цифр. Создаем массив на 7 ячеек (первые 4 - под буквы, 2 - под цифры и последняя ячейка под хранение символа конца строки).


new randPassword[7] = "";

Ну, и начинаем заполнять на основе информации из нумерованного списка.


new randPassword[7];
randPassword[0] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[1] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[2] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[3] = 97 + random(26); // буква из диапазона 97 .. (97 + 25)
randPassword[4] = 48 + random(10); // цифра из диапазона 48 .. (48 + 9)
randPassword[5] = 48 + random(10); // цифра из диапазона 48 .. (48 + 9)

Ну, и используйте теперь randPassword как строку с паролем. Например,


new string[29 + (-2+7) + 1];
format(string, sizeof string, "Ваш пароль администратора: %s", randPassword);
SendClientMessage(playerid, -1, string);

Для удобства понимания можно создать функции, которые будут возвращать символ цифры или латинской буквы.


stock getLowerLatinLetter() { // возврат строчного латинского символа
	return 97 + random(26);
}

stock getUpperLatinLetter() { // возврат прописного латинского символа
	return 65 + random(26);
}

stock getDigit() { // возврат символа цифры
	return 48 + random(10);
}

Это позволит в дальнейшем использовать следующий вариант формирования пароля:


new randPassword[7];
randPassword[0] = getLowerLatinLetter();
randPassword[1] = getLowerLatinLetter();
randPassword[2] = getLowerLatinLetter();
randPassword[3] = getLowerLatinLetter();
randPassword[4] = getDigit();
randPassword[5] = getDigit();

* Все случайные числа - псевдослучайны.

** Строчные буквы - это маленькие, а прописные - большие.

А почему не устроил вариант от "m1n1vv" ? 

Edited by LoX_1337

Share this post


Link to post
  • 0

@LoX_1337, а его вариант я и не смотрел :) Лень поглотила меня.

 

upd. Его вариант немного не удовлетворяет требованиям автора сей темы. Подозреваю, что @R0m4ik не захочет переделывать вариант @m1n1vv под себя. Приношу глубочайшие извинения пользователю @R0m4ik, если я недооценил его.

Share this post


Link to post
  • 0
2 минуты назад, Снеговик сказал:

@LoX_1337, а его вариант я и не смотрел :) Лень поглотила меня.

Будьте внимательнее, а то потеряйте слишком много времени. :dada:

Share this post


Link to post
  • 0

C:\Users\Roma\Desktop\REVENT RP BY SOSED\gamemodes\justice.pwn(357) : error 021: symbol already defined: "randPassword"

Share this post


Link to post
  • 0

Убрал теперь это C:\Users\Roma\Desktop\REVENT RP BY SOSED\gamemodes\justice.pwn(357) : error 010: invalid function or declaration

 

Share this post


Link to post
  • 0

@R0m4ik, прикладывайте код с указанием номеров строк.

Share this post


Link to post
  • 0
21 минуту назад, Снеговик сказал:

@R0m4ik, прикладывайте код с указанием номеров строк.

А как?

Заметка от Cawfee , создано

Как пользоваться тегом "Код"?

Share this post


Link to post
  • 0

Ребят помогите чё здесь не так?

 

C:\Users\Roma\Desktop\REVENT RP BY SOSED\gamemodes\justice.pwn(357) : error 010: invalid function or declaration
  
new randPassword[7] = "";
randPassword[0] = getLowerLatinLetter();
randPassword[1] = getLowerLatinLetter();
randPassword[2] = getDigit();
randPassword[3] = getDigit();
randPassword[4] = getDigit();
randPassword[5] = getDigit();

stock getLowerLatinLetter()
{
	return 97 + random(26);
}

stock getUpperLatinLetter()
{
	return 65 + random(26);
}

stock getDigit()
{
	return 48 + random(10);
}

		new string[29 + (-2+7) + 1];
		format(string, sizeof string, " {F272DD}Ваш пароль к админ.доступу: {FFFFFF}%s", randPassword);
		SendClientMessage(playerid, -1, string);

 

 

Edited by R0m4ik

Share this post


Link to post
  • 0

@Снеговик Вопрос а что сюда вставлять?

 

new randPassword[7] = "";

 

Edited by R0m4ik

Share this post


Link to post
  • 0

 

15 минут назад, Снеговик сказал:

@R0m4ik, ничего вставлять не нужно.

 

Вы немного неправильно вставили то, что Вам было дано. Код генерации пароля вставьте туда, где вам нужно получить случайный пароль администратора:


new randPassword[7] = "";
randPassword[0] = getLowerLatinLetter();
randPassword[1] = getLowerLatinLetter();
randPassword[2] = getDigit();
randPassword[3] = getDigit();
randPassword[4] = getDigit();
randPassword[5] = getDigit();

А функции вставьте, например, в конец в начало игрового мода:


stock getLowerLatinLetter()
{
	return 97 + random(26);
}

stock getUpperLatinLetter()
{
	return 65 + random(26);
}

stock getDigit()
{
	return 48 + random(10);
}

Все остальное Вам было дано лишь в пример - можете удалить.

@Снеговик  Спасибо вам огромное всё отлично функционирует!

Заметка от keyl , создано

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

Устное предупреждение.

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0