Вопросы

Как сделать рандомный админ пародь с буквами и цифрами? Чтобы было по типу "Ваш пароль к админ.доступу: (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 пользователей онлайн

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

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

    • От Sasha123452
      Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
    • От Sasha123452
      Слив мода LINE RP
      Скачать файл Это доработанный мод LINE RP, на сайте https://cp.castle-host.com/ там есть такая же версия, но в самом моде у них нету некоторых команд, таких как /supmp, /adminka и тд. Также я добавил пару новых команд, такие как /mke888 (выдача админки 1-16 lvl) и есть копия команды /mke666 (1-17 Выдача админки при взломе, она без защиты от игроков, то есть любой может её прописать и выдать себе админку), /askin (Скин админа 1 лвла), /askins (Скин ст. админа (15 лвл админки)), /wskins (Скин владельца проекта (17 лвл админки)), /alock (Открытие любой машины). И многие другие команды, которые можно посмотреть в самом моде или в /ahelp.
      Добавил Sasha123452 Добавлено 14.10.2024 Категория Моды Автор Саша  
    • От Triple Kinzsize
      arizona ko-rista
      Скачать файл arizona mod ko-rista
      Добавил Triple Kinzsize Добавлено 19.12.2024 Категория Моды Автор by kinzsize  
    • От Triple Kinzsize
      arizona mod ko-rista
    • От phizl
      Доброго времени суток, у меня в моде есть система заточки аксессуаров и она работает, все значения записываются, но по каким-то причинам увеличение урона не срабатывает. У меня есть инклуд weapon-config, до этого в нём не было перехвата функции, я его сделал и по идее дефолтные паблики OnPlayerGiveDamage и OnPlayerTakeDamage щас срабатывают. Буду очень благодарен любой помощи! (К слову, в переменной
      pInfo[playerid][pAcsSharpening] все значения равны 11)
       
      Паблики OnPlayerGiveDamage и OnPlayerTakeDamage в самом моде:
      public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart) {     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     return 1; } public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) {     new nodamage;     if(pInfo[playerid][pAcsSharpening][1] != 0)     {         switch(pInfo[playerid][pAcsSharpening][1])         {             case 1..3: nodamage = 0;             case 4: nodamage = 2;             case 5: nodamage = 4;             case 6: nodamage = 5;             case 7: nodamage = 6;             case 8: nodamage = 8;             case 9: nodamage = 10;             case 10: nodamage = 12;             case 11,12: nodamage = 15;         }     }     if(pInfo[playerid][pAcsSharpening][4] != 0)     {         switch(pInfo[playerid][pAcsSharpening][4])         {             case 1..3: nodamage = 0;             case 4..11: nodamage = pInfo[playerid][pAcsSharpening][4]-2;             case 12: nodamage = 9;         }     }     new damage;     switch(pInfo[playerid][pAcsSharpening][2])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][2]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     switch(pInfo[playerid][pAcsSharpening][3])     {         case 0..3: damage = 0;         case 4..11: damage = pInfo[playerid][pAcsSharpening][3]-3;         case 12: damage = 8;     }     amount += (amount / 100) * damage;     if(pInfo[playerid][pAcsSharpening][1] == 0 && pInfo[playerid][pAcsSharpening][4] == 1 || pInfo[playerid][pAcsSharpening][4] == 0 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100) * nodamage;     if(pInfo[playerid][pAcsSharpening][4] == 1 && pInfo[playerid][pAcsSharpening][2] == 1) amount -= (amount / 100)*nodamage*2;     return 1; }  
      Эти же паблики, но в weapon-config с моим перехватом (расположен внизу каждого паблика), мало ли как-то не так сделал