Вопросы

Petr_Korneev
Новичок

error 006: must be assigned to an array

появляется такая ошибка при компиляции, помогите пожалуйста

 

new playerpassword[MAX_PLAYERS];
    if(dialogid == 1)
    {
        if(!response) return Kick(playerid);
        if(strlen(inputtext) < 5 || strlen(inputtext) > 25) return ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "{FFFFFF}Регистрация", "{FFFFFF}Пароль должен содержать от 5 до 25 символов", "Ок", "");
        playerpassword[playerid] = inputtext;
        ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "{FFFFFF}Регистрация", "{FFFFFF}Выберите пол вашего персонажа", "Мужской", "Женский");
    }

 

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

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


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0
sinvays
Завсегдатый

Ошибка возникает потому, что ты объявил playerpassword как обычный массив (new playerpassword[MAX_PLAYERS];), а пытаешься присвоить ему строку.

Чтобы исправить, нужно сделать его двумерным массивом: new playerpassword[MAX_PLAYERS][32]; (или больше, например 64/128).

После этого строка с присваиванием пароля заработает (лучше использовать strcpy или format для копирования).

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
RayanBueno
Освоившийся

Проблема здесь в том, как вы используете массив playerpassword. В PAWN (SAMP scripting) строки нельзя присвоить напрямую с помощью =. Ошибка:

error 006: must be assigned to an array

означает, что вы пытаетесь присвоить массиву строк другую строку напрямую, а это запрещено. В PAWN строки нужно копировать функцией strcpy или format.

 

Ваш код

 

playerpassword[playerid] = inputtext;

нужно заменить на

strcpy(playerpassword[playerid], inputtext, sizeof(playerpassword[playerid]));

Итого исправленный код будет выглядеть так

 

new playerpassword[MAX_PLAYERS][25]; // убедитесь, что размер строки достаточный

if(dialogid == 1)
{
    if(!response) return Kick(playerid);
    if(strlen(inputtext) < 5 || strlen(inputtext) > 25)
        return ShowPlayerDialog(playerid, 3, DIALOG_STYLE_MSGBOX, "{FFFFFF}Регистрация""{FFFFFF}Пароль должен содержать от 5 до 25 символов""Ок""");
    
    strcpy(playerpassword[playerid], inputtext, sizeof(playerpassword[playerid])); // вот так копируем строку
    
    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_MSGBOX, "{FFFFFF}Регистрация""{FFFFFF}Выберите пол вашего персонажа""Мужской""Женский");
}

 

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

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

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

    • hunter.
      От hunter.
       Добрый день форумники, как вы знаете есть в сети слитый мод Fury у которого UCP-рега, и мне нужен человек который сделает регу с созданием логина, и разумеется персонажей к нему.
      Касательно же цены - договоримся, сочтёмся на той сумме которую запросит кодер. В целом бы я мог и сам написать самую обычную регу, но чёт быдлокодить и ковырять малоизвестный мне мод мне не особо хочется. 
      Пример регистрации с возможностью выбора роли "Заключенный" или же "Обычный Житель"







    • Доберман
      От Доберман
      Кароч у меня мод Russia Rp добавлял аксы есть они в моде когда перезахожу они удаляются как сохранение их сделать чтобы после рестарта они не пропали и где это делать?