Вопросы

Приветствую всех, у меня возник такой вопрос:

 

- хочу изменить базовую регистрацию в админке в крмп, на Болле сложную то-есть, сейчас изначально пароль от админки может быть только из цифр, хотелось бы узнать как можно было бы сделать что бы можно было использовать и цифры и буквы, вот код:

 

case DIALOG_ADMIN_REG:

   {

    if(!response) return FixKick(playerid);

 

    if(strval(inputtext) < 100000 || strval(inputtext) > 999999) return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен быть из 6 цифр.\n", "Готово", "");

             SetPlayerData(playerid, P_APASS, strval(inputtext));

 

             UpdatePlayerDatabaseInt(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));

 

             AdminAuthorization(playerid);

   }

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


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

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

  • -3

@Wiggins Вы когда присылаете код GPT, пытайтесь убедиться что он рабочий.

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


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

strval убрать нужно, если не ошибаюсь

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


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

Твой код использует strval(inputtext), который преобразует строку в число. Это ограничивает пароль только цифрами. Чтобы разрешить использование букв, нужно работать со строками, а не с числами. Примерный код:

  Цитата

 

case DIALOG_ADMIN_REG:
{
    if(!response) return FixKick(playerid);

    // Проверяем длину пароля (минимум 6 символов)
    if(strlen(inputtext) < 6) 
        return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", 
        "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен содержать минимум 6 символов и включать цифры и буквы.\n", 
        "Готово", "");

    // Проверка на наличие хотя бы одной буквы и одной цифры
    new bool:hasLetter = false, bool:hasDigit = false;
    for (new i = 0; i < strlen(inputtext); i++) 
    {
        if (inputtext >= '0' && inputtext <= '9') hasDigit = true;
        if ((inputtext >= 'A' && inputtext <= 'Z') || (inputtext >= 'a' && inputtext <= 'z')) hasLetter = true;
    }

    if (!hasLetter || !hasDigit)
        return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", 
        "{FFFFFF}Пароль должен содержать минимум одну букву и одну цифру.\nПопробуйте снова.", 
        "Готово", "");

    // Сохраняем строковый пароль
    SetPlayerData(playerid, P_APASS, inputtext);
    UpdatePlayerDatabaseString(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));

    AdminAuthorization(playerid);
}

 

Читать далее...  


В примерном коде используется UpdatePlayerDatabaseString вместо UpdatePlayerDatabaseInt - так как теперь пароль не число, а строка. И пароль сохраняется как строка, а не как число.

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

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


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

@Wiggins , интересный код конечно но при использовании inputtext вместо strlen(inputtext), выдает ошибку - 033, и в setplayerdata также с inputtext выдает ошибку 006

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


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

@Dev_Persona Ошибки 033 и 006 возникают, потому что inputtext - это массив (строка), а некоторые функции требуют явного указания типа. Попробуйте этот исправленный код:
 

  Цитата

 

case DIALOG_ADMIN_REG:
{
    if(!response) return FixKick(playerid);

    // Создаем строковый массив для хранения пароля
    new password[MAX_PLAYER_NAME]; // Можно увеличить, если нужно
    format(password, sizeof(password), "%s", inputtext); // Копируем ввод в переменную

    // Проверяем длину пароля (минимум 6 символов)
    if(strlen(password) < 6) 
        return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", 
        "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен содержать минимум 6 символов и включать цифры и буквы.\n", 
        "Готово", "");

    // Проверка на наличие хотя бы одной буквы и одной цифры
    new bool:hasLetter = false, bool:hasDigit = false;
    for (new i = 0; i < strlen(password); i++) 
    {
        if (password >= '0' && password <= '9') hasDigit = true;
        if ((password >= 'A' && password <= 'Z') || (password >= 'a' && password <= 'z')) hasLetter = true;
    }

    if (!hasLetter || !hasDigit)
        return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", 
        "{FFFFFF}Пароль должен содержать минимум одну букву и одну цифру.\nПопробуйте снова.", 
        "Готово", "");

    // Сохраняем пароль в строковом формате
    SetPlayerData(playerid, P_APASS, password);
    UpdatePlayerDatabaseString(playerid, "AdminPassword", password);

    AdminAuthorization(playerid);
}

Читать далее...  

 

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

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


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

Что за мод в основе?

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


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

@angel_sinvays Первый код я взял у самого крмп мода, а второй код (ошибка 033 и 006) исправил DeepSeek, код не создал ИИ, не суй свой нос туда, где не написано твоего имени...

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


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

@Wiggins сути не изменилось, также выдает 3 ошибки:

 

- D:\BLACK RUSSIA MOD\gamemodes\blackrussia.pwn(34923) : ошибка 033: массив должен быть проиндексирован (переменная "password")

D:\BLACK RUSSIA MOD\gamemodes\blackrussia.pwn(34924) : ошибка 033: массив должен быть проиндексирован (переменная "password")

D:\BLACK RUSSIA MOD\gamemodes\blackrussia.pwn(34933) : ошибка 006: должно быть связано с массивом

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


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

@Wiggins 

  В 3/30/2025 в 11:32, Wiggins сказал:

DeepSeek , не  суй свой нос туда, где не написано твоего имени...

Читать далее...  

 

На этом Вы могли и закончить своё сообщение.

Фу, как грубо. Всего лишь подметил что код написанный с помощью нейросети :nini:

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

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


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

@angel_sinvays Еще раз говорю, код писал не ИИ, он просто исправил ошибку 033 и 006, но у меня этих ошибок нет, поэтому я попросил его исправить, код я взял из самого мода BLACK RUSSIA, а тебе то какая разница? Код тебе чтоли прислал? Если помогаю, то помогаю другому человеку, а не тебе, я выше сказал, что не суй свой нос туда, где не написано твоего имени. "Фу, как грубо" - это ты мучаешь, как дети



@Dev_Persona Не понимаю почему у тебя такие ошибки, у меня вроде всё нормально...
 

  Цитата

new password[65];
strmid(password, inputtext, 0, sizeof(password), sizeof(password));
SetPlayerData(playerid, P_APASS, password[0]);
UpdatePlayerDatabaseString(playerid, "AdminPassword", password);

Читать далее...  


Попробуй эти строки исправить.

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

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


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

@Wiggins 006 убралась, осталась 033

 

D:\BLACK RUSSIA MOD\gamemodes\blackrussia.pwn(34987) : ошибка 033: массив должен быть проиндексирован (переменная "password")

D:\BLACK RUSSIA MOD\gamemodes\blackrussia.pwn(34988) : ошибка 033: массив должен быть проиндексирован (переменная "password")  

 

может я неправильно заменил, не знаю но ошибка 033 осталась, код выглядит сейчас так:

 

case DIALOG_ADMIN_REG:

{

    if(!response) return FixKick(playerid);

 

    // Создаем строковый массив для хранения пароля

    new password[65];

    strmid(password, inputtext, 0, sizeof(password), sizeof(password)); // Копируем ввод в переменную

 

    // Проверяем длину пароля (минимум 6 символов)

    if(strlen(password) < 6) 

        return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", 

        "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен содержать минимум 6 символов и включать цифры и буквы.\n", 

        "Готово", "");

 

    // Проверка на наличие хотя бы одной буквы и одной цифры

    new bool:hasLetter = false, bool:hasDigit = false;

    for (new i = 0; i < strlen(password); i++) 

    {

        if (password >= '0' && password <= '9') hasDigit = true;

        if ((password >= 'A' && password <= 'Z') || (password >= 'a' && password <= 'z')) hasLetter = true;

    }

 

    if (!hasLetter || !hasDigit)

        return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", 

        "{FFFFFF}Пароль должен содержать минимум одну букву и одну цифру.\nПопробуйте снова.", 

        "Готово", "");

 

    // Сохраняем пароль в строковом формате

    SetPlayerData(playerid, P_APASS, password[0]);

UpdatePlayerDatabaseString(playerid, "AdminPassword", password);

 

    AdminAuthorization(playerid);

}

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

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


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

@Wiggins 

  В 3/30/2025 в 17:39, Wiggins сказал:

"Фу, как грубо" - это ты мучаешь, как дети

Читать далее...  

 

Успокойся, ты по буквам уже не попадаешь парень, кого я мучаю какие дети? :nini:

 

  В 3/30/2025 в 17:39, Wiggins сказал:

BLACK RUSSIA

Читать далее...  

 

На этом ты тоже мог закончить уже своё изложение.

 

  В 3/30/2025 в 17:39, Wiggins сказал:

код писал не ИИ, он просто исправил ошибку 033 и 006

Читать далее...  

 

Не признавая очевидное ты сам же себя закапываешь, код по сути был переписан нейросетью так как ты утверждаешь что он там "исправил" проблему.

Исходя из этого с точностью можно сказать что код который ты скинул выше был написан нейросетью.

 

@Dev_Persona Проблема в том, что ты передаешь в функции не сам пароль а только его первый символ, то есть передаешь в функции SetPlayerData и UpdatePlayerDatabaseString не сам массив, а только первый символ из этого массива. Вместо того чтобы передавать password[0], нужно передавать весь массив password, так как это строка, а не один символ. Просто убери [0] в тех строках, где ты передаешь пароль и должно заработать.

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

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


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

@angel_sinvays также, + при убирание [0] выдает ошибку 006

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


Ссылка на сообщение
  • 0
  В 3/30/2025 в 18:27, angel_sinvays сказал:

Успокойся, ты по буквам уже не попадаешь парень, кого я мучаю какие дети? :nini:

Читать далее...  


Ах, извини, я забыл, что ты не только эксперт по кодам, но еще и логопед. Дети? Да вот же один - ты, который лезет в чужой диалог, как в песочницу с кривыми куличиками.
 

  В 3/30/2025 в 18:27, angel_sinvays сказал:

На этом ты тоже мог закончить уже своё изложение.

Читать далее...  


О, господин Редактор! А можно я еще добавлю точку? Или тебе комфортнее в режиме "краткость - сестра твоей ограниченности"?
 

  В 3/30/2025 в 18:27, angel_sinvays сказал:

Не признавая очевидное ты сам же себя закапываешь, код по сути был переписан нейросетью так как ты утверждаешь что он там "исправил" проблему.

Исходя из этого с точностью можно сказать что код который ты скинул выше был написан нейросетью.

Читать далее...  


Слушай, если нейросеть для тебя - высший разум, то мне страшно представить, как ты относишься к калькулятору. Может, он у тебя и прогнозы делает? Ладно, копай дальше, только чур не ныть, когда наткнешься на свою же глупость - она там, внизу, слоями.
Ты так упорно цепляешься за мои слова, будто от этого зависит твой доступ в интернет. Расслабься, родители не узнают, что ты споришь с ИИ помощником... Или узнают? Вот это будет трагедия уровня сиськи-массиськи 006


@Dev_Persona 

  Цитата

if (password >= '0' && password <= '9') hasDigit = true;
if ((password >= 'A' && password <= 'Z') || (password >= 'a' && password <= 'z')) hasLetter = true;

Читать далее...  

 

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

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

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

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


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

@Wiggins ну также 033, так как от кода сути не меняется так как он таким и был, проблема 033, от этих двух строк

 

if (password >= '0' && password <= '9') hasDigit = true;

if ((password >= 'A' && password <= 'Z') || (password >= 'a' && password <= 'z')) hasLetter = true;

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


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

@Dev_Persona Оказывается, форум не позволяет ставить индекс i , он меняет его на курсив, только что заметил.

 

Снимок экрана (112).png

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

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

Еще как позволяет, нужно использовать только кнопку "Код", а не "Цитата" :)

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


Ссылка на сообщение
  • 0
  В 3/30/2025 в 19:21, Dev_Persona сказал:

@Wiggins ну также 033, так как от кода сути не меняется так как он таким и был, проблема 033, от этих двух строк

 

if (password >= '0' && password <= '9') hasDigit = true;

if ((password >= 'A' && password <= 'Z') || (password >= 'a' && password <= 'z')) hasLetter = true;

Читать далее...  

 

Убери их вообще

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


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

@Dev_Persona Попробуй заменить строки где ты проверяешь пароль, ты сравниваешь весь массив с символами, а нужно сравнивать каждый символ отдельно. Вместо того, чтобы писать, например, password >= '0' && password <= '9', ты должен проверять каждый символ массива через индексацию, то есть использовать

password[i]

.

И код который тебе прислали, выглядит в целом правильным, но я не могу утверждать, что он точно решит твой вопрос так как я его лично не проверял. Одно могу сказать точно — тот человек который прислал тебе выше код, сгенерировал его через нейросеть предоставив ему твой пример кода, а дальше пошло само.

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

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


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

@angel_sinvays Я просто сижу здесь и ору, что ты мне несешь...
 

  В 3/30/2025 в 21:52, angel_sinvays сказал:

ты пытаешься меня унизить текстом из нейросети

Читать далее...  


Я об этом слышу впервые, раз ты уже об этом знаешь, значит ты сам этим пользуешься, я от тебя это слышу впервые. У тебя закончился словарный запас, ты не знаешь, как ответить, ты даже мои ответы принимаешь за ответ нейросети.
 

  В 3/30/2025 в 21:52, angel_sinvays сказал:

Ладно хоть код, но вот это уже настоящий позор, неужели люди настолько неучи что уже начинают переписываться с другими через нейросеть? Так поди скоро нейросеть захватит весь разум человечества, хотя.... Она уже начала это делать судя по сообщениям от этого товарища и от других людей которые мне выписывают огромные текста в Эверест с помощью нейросети) 

Читать далее...  


Если для тебя развёрнутый ответ - признак "захвата разума", то я рад, что нейросети помогают людям формулировать свои мысли более полно и чётко. А по поводу "позора", по-моему, позорно ограничивать себя в использовании новых технологий.

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

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

2.17. Запрещено флудить, оффтопить, заниматься флеймом. 

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

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

Выясните ваши отношения в ЛС

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


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

@Wiggins О господи, ты пытаешься меня унизить текстом из нейросети, да, зря я полез на тебя, чувствую начинаю глупеть читая твоё изложение написанным "Тобою" :nini:

 

Ладно хоть код, но вот это уже настоящий позор, неужели люди настолько неучи что уже начинают переписываться с другими через нейросеть? Так поди скоро нейросеть захватит весь разум человечества, хотя.... Она уже начала это делать судя по сообщениям от этого товарища и от других людей которые мне выписывают огромные текста в Эверест с помощью нейросети) 

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

2.17. Запрещено флудить, оффтопить, заниматься флеймом. 

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

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


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

@Wiggins 

  В 3/31/2025 в 13:59, Wiggins сказал:

значит ты сам этим пользуешься

Читать далее...  

 

Нет, не пользуюсь, но изучаю и интегрирую в различные сервисы и знаю какие текста составляет сама нейросеть, она использует тупорылую формулировку которой уже никто не пользуется вот как с 2010 года :)

 

  В 3/31/2025 в 13:59, Wiggins сказал:

Если для тебя развёрнутый ответ - признак "захвата разума", то я рад, что нейросети помогают людям формулировать свои мысли более полно и чётко. А по поводу "позора", по-моему, позорно ограничивать себя в использовании новых технологий.

Читать далее...  

 

Опять же, текст был написан с горой не понятных для меня слов которые в принципе не соотносятся с темой которое я выше тебе написал, прогнал мой текст через нейросеть и он тебе выдало "аргументы" которыми как ты думаешь выигрываешь. Ты мне напоминаешь Маркелова, только как я понимаю ты более продвинутый парень. Тебе ещё долго изучать нейросеть если ты даже не знаешь как работать с формулировкой слов <3

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

Особое приглашение нужно? Дать мут чтобы прекратить сверхполезный дискус?

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

2.17. Запрещено флудить, оффтопить, заниматься флеймом. 

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

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


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

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

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

    • MetaLife Online
      От MetaLife Online
      Приветствую! Код мода не отпровляет данные на БД все правильно подключенно и написанно(копировал с phpmyadmin) но данные не отпровляет. но с БД на сервер приходит сообщение 
       
      new MySQL:dbHandle; new MySQL:dbHandle; #define Host "127.0.0.1" #define User "root" #define DataBase "metalife" #define Password_SQL "" dbHandle = mysql_connect(Host,User,Password_SQL, DataBase);     if(mysql_errno())     {         printf("Подключение к базе данных %s не удалось.",DataBase); // %s означает строку. То есть будет выводить название базы данных которое указано в #define DataBase     }     else     {         printf("Подключение к базе данных %s успешно",DataBase);     }     format(query, sizeof(query), "INSERT INTO `Users`(`Nick`, `Password`, `Gender`, `Skin`) VALUES ('%s','%s','%d','%d')",player_name, player_info[playerid][P_PASS], player_info[playerid][P_GENDER], player_info[playerid][P_SKIN]);     mysql_tquery(dbHandle, query); SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [15:34:54] weburl = "www.sa-mp.com"  (string) [15:34:54]  [15:34:54] Server Plugins [15:34:54] -------------- [15:34:54]  Loading plugin: mysql [15:34:55]  >> plugin.mysql: R41-4 successfully loaded. [15:34:55]   Loaded. [15:34:55]  Loaded 1 plugins. [15:34:55]  [15:34:55] Filterscripts [15:34:55] --------------- [15:34:55]   Loaded 0 filterscripts. [15:34:55] Подключение к базе данных metalife успешно [15:34:55]  ---------------------------------- [15:34:55]  MetaLife Online [15:34:55] ---------------------------------- [15:34:55] Number of vehicle models: 1 При Регестрации не опровляються данные (фото)
      Но если записать рукой данные (фото 2)  
      выполняеться эта эта функция(фото 3(чат) и код )
      forward CheckAccountFromMySql(playerid); public CheckAccountFromMySql(playerid) {     new str[256];     if(cache_num_rows() == 0)     {         new player_name[MAX_PLAYER_NAME + 1];         GetPlayerName(playerid, player_name, MAX_PLAYER_NAME);         format(str, sizeof(str), " {ffffff}Добро пожаловать!\n Аккаунта с таким ником %s нет\nДля Регестрации придумайте и введите пароль в поле ниже!", player_name);         SPD(playerid, DLG_REG, DSP, "Регестрация", str, "Войти", "Выйти");     }     else     {         SCM(playerid, color_green, "Вы  зарегестрырованы!");     }     return 1; } // выполняеться else  ошибу и варнинги mysql
      [15:47:39] [WARNING] mysql_connect: no password specified (C:\Project\Metalife\gamemodes\MetaLife.pwn:92) dbHandle = mysql_connect(Host,User,Password_SQL, DataBase); // 92 строка