Вопросы

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

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

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

    • Nythera
      От Nythera
      Здраствуйте знатоки. У меня есть базовый серверный код на ядре open.mp. Хочу начать делать клиентскую часть, но не очень понимаю, как это теперь правильно создается в профессиональных и современных реалиях.
      Хочу адаптировать карту криминальной России (КРМП) в самп 0.3.7(если это актуальный и адекватный вариант на сегодня?), чтобы потом ее переделать. В перспективе планирую делать лаунчер, но сейчас вопрос именно о базовой сборке клиентской части чтобы сервер и карта работали и была возможность заходить на сервер с картой КРМП для дальнейшей работы с ней.
      Можете ли кто-нибудь объяснить, что именно мне нужно для старта? Вопрос конкретно касаемо сборки, адаптации карты. Что это должно быть за базу, из чего она состоит, куда это все складывается и как вообще подходить к этому процессу современно. 
      Спасибо.
    • Андрей Лазарев
      От Андрей Лазарев
      ROSTOV-HOST.RU - Современный Хостинг Игровых Серверов по невероятно низким ценам и удобной панелью управления 

      — Защита от DDoS-атак 
      — Бесплатная техническая поддержка 
      — Доступ в панель управления и личный кабинет 
      — Переустановка игрового сервера в любое время суток 
      — Редактирование конфигурационных файлов игрового сервера 
      — FTP доступ к файлам игрового сервера 
      — Мониторинг процессов 
      — Изменение количества слотов игрового сервера 
      — Система управления счетами и оплаты услуг 
      — Локальная MySQL база данных 
      — Автоустановка модов
      — Смена (версии / игры) сразу в панели управления


      Цены: с помесячной оплатой
      — GTA: SAMP              - 1слот / 0.40копп.
      — GTA: CRMP              - 1слот / 0.40копп.
      — GTA: MTA                 - 1слот / 0.80копп.
      — GTA: United MP       - 1слот / 0.80копп.
      — MineCraft: PE           - 1слот / 3.00копп.
      — MineCraft                  - 1слот / 5.00копп.
      — Counter Strike 1.6    - 1слот / 4.00копп.
       
      Цены: плати один раз пользуйся до скончания веков
      — 1 200 руб / SA:MP 0.3е/ CR:MP 0.3е/ МТА /    500 слотов
      — 1 800 руб / SA:MP 0.3.7/ CR:MP 0.3.7/ МТА /    1000 слотов
       

      Сайт: https://rostov-host.ru
      Группа в VK: https://vk.com/rostov_host