Question

R0m4ik
Новичок в PAWN

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

Share this post


Link to post

17 answers to this question

  • 0
Cawfee
Великий Гуру

@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
keyl
Великий Гуру

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

Share this post


Link to post
  • 0
R0m4ik
Новичок в PAWN
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
Cawfee
Великий Гуру

К чему такие сложности? Открываем таблицу 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
LoX_1337
Активный
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
Cawfee
Великий Гуру

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

 

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

Share this post


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

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

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

Share this post


Link to post
  • 0
R0m4ik
Новичок в PAWN

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
R0m4ik
Новичок в PAWN

Убрал теперь это 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
Новичок в PAWN

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

 

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
R0m4ik
Новичок в PAWN

 

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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • тимормо
      By тимормо
      Копия Diamond RP (основа State 99)
      Скачать файл Мод DIAMOND RP (ver. 1.0)
      Основа: State 99
      Автор мода: #TomSnow
      Вопросы/Баги: https://vk.com/etalon_dev
       
      Приветствую всех! На связи #TomSnow
       
      Я принял решение начать поэтапную разработку и восстановление легендарного мода Diamond RolePlay образца 2015–2017 годов, взяв за основу мод State 99 (оригинальная основа DRP).
       
      Каждая новая версия разрабатываемого мода будет публиковаться в открытом доступе для всех участников и подписчиков сообщества (https://vk.com/etalon_dev). Это позволит вам не только следить за процессом разработки, но и принимать непосредственное участие в развитии проекта: тестировать обновления, находить баги, сообщать о недоработках и помогать делать мод максимально качественным и стабильным.
       
      Если вам интересна данная тематика и вы хотите наблюдать за ходом разработки, подписывайтесь на нашу группу ВКонтакте (https://vk.com/etalon_dev) и ожидайте публикацию версий проекта.
       
      Спасибо всем за поддержку! Впереди нас ждёт много интересной работы и возвращение атмосферы классического Diamond RolePlay. 
       
      Информация о моде:
       
      Версия MySQL R 39-6
      Античит Nex-AC (Доработанный)
      Стример Streamer Plugin v2.9.4
      Командный процессор Pawn CMD
       
      Список обновлений мода
       
       
      Добавил тимормо Добавлено 07/15/26 Категория Моды Автор #TomSnow  
    • тимормо
      By тимормо
      Мод DIAMOND RP (ver. 1.0)
      Основа: State 99
      Автор мода: #TomSnow
      Вопросы/Баги: https://vk.com/etalon_dev
       
      Приветствую всех! На связи #TomSnow
       
      Я принял решение начать поэтапную разработку и восстановление легендарного мода Diamond RolePlay образца 2015–2017 годов, взяв за основу мод State 99 (оригинальная основа DRP).
       
      Каждая новая версия разрабатываемого мода будет публиковаться в открытом доступе для всех участников и подписчиков сообщества (https://vk.com/etalon_dev). Это позволит вам не только следить за процессом разработки, но и принимать непосредственное участие в развитии проекта: тестировать обновления, находить баги, сообщать о недоработках и помогать делать мод максимально качественным и стабильным.
       
      Если вам интересна данная тематика и вы хотите наблюдать за ходом разработки, подписывайтесь на нашу группу ВКонтакте (https://vk.com/etalon_dev) и ожидайте публикацию версий проекта.
       
      Спасибо всем за поддержку! Впереди нас ждёт много интересной работы и возвращение атмосферы классического Diamond RolePlay. 
       
      Информация о моде:
       
      Версия MySQL R 39-6
      Античит Nex-AC (Доработанный)
      Стример Streamer Plugin v2.9.4
      Командный процессор Pawn CMD
       
      Список обновлений мода
       
       
    • x4reo
      By x4reo
      EPOCH ROLE PLAY | ВОЗВРАЩЕНИЕ В 90-Е Создаем атмосферный Full RP проект без «фарма» и лишней «дичи»     О ПРОЕКТЕ Epoch Role Play — это площадка для тех, кто ценит качество, а не статистику. Мы строим живой мир, где каждое действие имеет последствия, а экономика строится на социальном взаимодействии.   КОГО МЫ ИЩЕМ? • Lead Developer (Pawn/C#/JS): Создание ядра мода, БД, оптимизация. • Mapper/Level Designer: Создание аутентичных интерьеров 90-х. • Game Designer: Проработка ролевых правил и сценариев. • SMM-менеджер: Ведение соцсетей, создание контента. • Дизайнер: Оформление медиа и UI проекта. • Discord-архитектор: Настройка каналов и безопасности. • Web-разработчик: Сайт и форум проекта. • Bot-developer (VK/TG): Безопасность: 2FA, привязка аккаунтов.   НАШИ УСЛОВИЯ 1. Энтузиазм: Проект стартует без бюджета. Мы ищем единомышленников. 2. Соавторство: Каждый участник — полноценный совладелец проекта. 3. Партнерство: Вся прибыль от монетизации распределяется пропорционально вкладу.     КОНТАКТЫ ДЛЯ СВЯЗИ Telegram: x4reoo  
    • Gabriel C
      By Gabriel C
      Всем привет. Ищу клиентскую сборку Flin RP для ПК.
      Нужна полноценная версия клиента со всеми необходимыми файлами для запуска игры и подключения к серверу.
      Желательно сборку примерно 2023 года, так как по имеющимся файлам видно, что обновления клиента и систем Real Cars / Real Skins были сделаны в начале 2023 года.
      Нужна именно ПК-сборка/клиент Flin RP:
      лаунчер (если был); папка с игрой; ASI/плагины; cache/modpack с моделями. Если у кого-то осталась рабочая сборка или архив клиента — буду благодарен за помощь.