Вопросы

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

Поделиться сообщением


Ссылка на сообщение

17 ответов на этот вопрос

  • 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);
}

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

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 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;
}

Поделиться сообщением


Ссылка на сообщение
  • 0

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

 

Поделиться сообщением


Ссылка на сообщение
  • 0
17 минут назад, R0m4ik сказал:

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

 

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

Поделиться сообщением


Ссылка на сообщение
  • 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();

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

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

Поделиться сообщением


Ссылка на сообщение
  • 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" ? 

Отредактировано пользователем LoX_1337

Поделиться сообщением


Ссылка на сообщение
  • 0

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

 

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

Поделиться сообщением


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

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

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

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0

@R0m4ik, удалите:

new randPassword[7];

 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0
21 минуту назад, Снеговик сказал:

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

А как?

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

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

Поделиться сообщением


Ссылка на сообщение
  • 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);

 

 

Отредактировано пользователем R0m4ik

Поделиться сообщением


Ссылка на сообщение
  • 0

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

 

new randPassword[7] = "";

 

Отредактировано пользователем R0m4ik

Поделиться сообщением


Ссылка на сообщение
  • 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. Если вы нашли ответ на свой вопрос, рекомендуется поощрить автора лучшего ответа поднятием репутации, а также обязательно пометить ответ на вопрос лучшим.  Как пометить ответ лучшим?

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

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Артём Профиков
      От Артём Профиков
      У меня есть система подсказок вот так она выглядет
      ShowNotification(playerid, тип, "текст", время, "команда через /", "текст кнопки");
      Только есть вопрос как сделать так чтоб она активировалась в определенном радиусе? Заранее спасибо