Вопросы

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 пользователей онлайн

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

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

    • Badr
      От Badr
      дратуте , решил сделать лаунчер самп на node.js , все норм сделал дизайн/стиль , но когда захожу абсолютно на любой сервер (заходил на онух рп ,и на свой сервер ) и пишет вронг сервер пароль ( мне лень на англиском писать )  скрин прикрепил 

      исходник https://disk.yandex.ru/d/D_104GFgrFO16A ( сам делал , то-есть дипсик  )
      я знаю все будут писать что (Слово удалено системой) ии-шное