Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 7 из 7
  1. #1
    Аватар для DiFix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±

    Передача двухмерного массива в качестве параметров стока

    имеется сток
    PHP код:
    stock GetVehicleA(playeridarr[])
    {
        new 
    vehicleid GetPlayerVehicleID(playerid);
        for(new 
    ii<sizeof(arr); i++)
            if(
    vehicleid == arr[i][carid]) return i;
        return -
    1;

    вызываю
    PHP код:
    new vehA GetVehicleA(playerid,Tagach); 
    Код:
    D:\GAMES\GTA_SA\SERVER_NEW\gamemodes\new.pwn(1487) : error 048: array dimensions do not match
    Напомню, массив двухмерный, может это играет роль?

    PHP код:
    enum Tagach_prm{carid,pricepid,tmr};
    new 
    Tagach[MAX_TAGACH][Tagach_prm]; 

  2. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    PHP код:
    stock GetVehicleA(playeridarr[]) 
    [] - одномерный;
    [][] - двумерный
    Замените на:
    PHP код:
    stock GetVehicleA(playeridarr[][]) 

  3. #3
    Аватар для DiFix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±
    Код:
    D:\GAMES\GTA_SA\SERVER_NEW\gamemodes\new.pwn(1487) : warning 229: index tag mismatch (symbol "Tagach")

  4. #4
    Аватар для DiFix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±
    вопрос так и остается в силе
    подскажите почему я не могу использовать массив, построенный по структуре enum'a, в качестве параметра функции?

  5. #5
    Аватар для DiFix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±
    Ну где же профессионалы, сказали бы уже можно или нет?
    а то не хочется делать так
    PHP код:
    new tagach_car_id[MAX_TAGACH];  
    new 
    tagach_trailer_id[MAX_TAGACH];  
    new 
    tagach_timer[MAX_TAGACH]; 

  6. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DiFix Посмотреть сообщение
    почему я не могу использовать массив, построенный по структуре enum'a, в качестве параметра функции?
    Потому, что в объявлении размером 2-го измерения массива указано название enum'a.
    И при объявлении параметров функции его тоже нужно указывать:
    PHP код:
    stock GetVehicleA(playeridarr[][Tagach_prm]) 
    Впрочем, после указания размера вся универсальность функции теряется: она будет работать только с массивами, у которых размером 2-го измерения указано Tagach_prm. Поэтому, если в Вашем моде всего один такой массив, проще будет вообще не передавать его в функцию и работать напрямую с глобальным масивом.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. Пользователь сказал cпасибо:
    DiFix (05.12.2014)
  8. #7
    Аватар для DiFix
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±
    Впрочем, после указания размера вся универсальность функции теряется: она будет работать только с массивами, у которых размером 2-го измерения указано Tagach_prm.
    Жаль что без объявления enum'a ничего не выйдет, хотел сделать универсальный паблик, что бы работал с многими массивами.
    Прийдется отказываться от enum'a..\
    я просто хотел сделать удобную функцию, для перебора массива, и обнаружения нужной записи, возвращая при этом значение а. К примеру из Tagach[а][]

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •