Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 19 из 19 ПерваяПервая ... 9 17 18 19
Показано с 181 по 189 из 189
  1. #181
    Аватар для ihNNNNNify
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2018
    Сообщений
    15
    Репутация:
    0 ±
    Цитата Сообщение от Pro_Coder Посмотреть сообщение
    Вы не думали, почему бы не сделать двумерный массив для enum ?

    https://pro-pawn.ru/showthread.php?1...ll=1#post61896

    Например, я хотел хранить несколько имен в p_Name[4][MAX_PLAYER_NAME + 1] , но мне выдает ошибка
    PHP код:
    enum e_pInfo {
        
    p_ID,
        
    p_Password[64 1],
        
    p_Salt[64 1],
        
    p_Name[4][MAX_PLAYER_NAME 1]
    };
    new 
    pInfo[MAX_PLAYERS][e_pInfo]; 
    Код HTML:
    error 001: expected token: "}", but found "["
    error 010: invalid function or declaration
    Покажи строки на которые указывают ошибки

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

    Статус
    Оффлайн
    Регистрация
    11.10.2020
    Сообщений
    9
    Репутация:
    0 ±
    PHP код:
    p_Name[4][MAX_PLAYER_NAME 1
    pawn не поддерживает двумерный массив в enum

  3. #183
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,441
    Репутация:
    1921 ±
    Цитата Сообщение от Pro_Coder Посмотреть сообщение
    Вы не думали, почему бы не сделать двумерный массив для enum ?

    https://pro-pawn.ru/showthread.php?1...ll=1#post61896

    Например, я хотел хранить несколько имен в p_Name[4][MAX_PLAYER_NAME + 1] , но мне выдает ошибка
    PHP код:
    enum e_pInfo {
        
    p_ID,
        
    p_Password[64 1],
        
    p_Salt[64 1],
        
    p_Name[4][MAX_PLAYER_NAME 1]
    };
    new 
    pInfo[MAX_PLAYERS][e_pInfo]; 
    Код HTML:
    error 001: expected token: "}", but found "["
    error 010: invalid function or declaration
    А ты не думал разобраться в том, что из себя на самом деле представляет enum?

    Да и зачем хранить сразу 4 ника? Если это именно разные ники и использоваться при игре будет только один - логично хранить только его в памяти сервера, а остальные оставить в БД. Если же это просто несколько разновидностей одного и того же ника, то пихать их в такой "массив" - самая неудачная идея из всех возможных, ибо сам через пару месяцев будешь с трудом вспоминать какой именно индекс такого массива к какому нику относится. Гораздо лучше под каждый ник выделить свою константу, дав ей нормальное информативное имя, и работать с ней.

    Ну и если всё же очень хочется извращений, то можно сделать так:
    1. enum e_PLAYER_NAMES
    2. {
    3. PLAYER_NAME_1[MAX_PLAYER_NAME],
    4. PLAYER_NAME_2[MAX_PLAYER_NAME],
    5. PLAYER_NAME_3[MAX_PLAYER_NAME],
    6. PLAYER_NAME_4[MAX_PLAYER_NAME],
    7. };
    8.  
    9. enum e_pInfo {
    10. p_ID,
    11. p_Password[64 + 1],
    12. p_Salt[64 + 1],
    13. p_Name[e_PLAYER_NAMES]
    14. };
    15. new pInfo[MAX_PLAYERS][e_pInfo];
    Связаться со мной в VK можно через личные сообщения этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. Пользователь сказал cпасибо:
    Pro_Coder (16.10.2020)
  5. #184
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,144
    Репутация:
    2517 ±
    Цитата Сообщение от Pro_Coder Посмотреть сообщение
    Вы не думали, почему бы не сделать двумерный массив для enum ?
    Вы даже не представляете, сколько раз этот вопрос задавали разработчикам компилятора...

    Ответ на самом деле предельно простой: enum - это не аналог struct из C/C++, это просто enum с расширенным синтаксисом в сравнение с теми же C и C++.
    Например, такой код:
    1. enum pInfo
    2. {
    3. pPassHash[64 + 1],
    4. pLevel
    5. };

    - это всего лишь синтаксический сахар для
    1. enum pInfo
    2. {
    3. pPassHash,
    4. pLevel = pPassHash + pInfo:(64 + 1)
    5. };

    Единственная разница лишь в том, что для первого варианта "sizeof(player_info[pPassHash])" вернёт 65, а для 2-го - 1. Насколько знаю, это единственный случай, когда sizeof возвращает "размер" для чего-то, что на самом деле не является массивом.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    Pro_Coder (16.10.2020)
  7. #185
    Аватар для Pro_Coder
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.10.2020
    Сообщений
    9
    Репутация:
    0 ±
    У меня тут вопрос возник

    PHP код:
    new test_1[MAX_PLAYERS char] = {3, ...}; 
    Почему такой метод не работает, если {3, ...} должно заполнять все ячейки?
    Или у вашего компилятора такой баг исправлен?

  8. #186
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,441
    Репутация:
    1921 ±
    Цитата Сообщение от Pro_Coder Посмотреть сообщение
    У меня тут вопрос возник

    PHP код:
    new test_1[MAX_PLAYERS char] = {3, ...}; 
    Почему такой метод не работает, если {3, ...} должно заполнять все ячейки?
    Или у вашего компилятора такой баг исправлен?
    Почему же не работает?
    Связаться со мной в VK можно через личные сообщения этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #187
    Аватар для Pro_Coder
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.10.2020
    Сообщений
    9
    Репутация:
    0 ±
    А в чем тогда отличие от фигурных скобках ?
    PHP код:
    test_1{0
    https://ibb.co/8r2Tp6J

    PHP код:
    new test_1[MAX_PLAYERS char] = {123, ...};
    new 
    test_2[MAX_PLAYERS char];

    main() {
        
    test_2{0} = 123;

        print(
    "\n\n\n\n\n");
        
    printf("%i"test_1{0});
        
    printf("%i"test_2{0});
        print(
    "\n\n\n\n\n");

    Последний раз редактировалось Pro_Coder; 23.10.2020 в 12:52.

  10. #188
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,441
    Репутация:
    1921 ±
    А, извиняюсь. Ты же с битами хочешь работать. Тупанул.

    Лучше пусть тебе Daniel_Cortez ответит, чтоб я чего-нибудь лишнего не сморозил.
    Связаться со мной в VK можно через личные сообщения этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  11. Пользователь сказал cпасибо:
    Pro_Coder (23.10.2020)
  12. #189
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,144
    Репутация:
    2517 ±
    Цитата Сообщение от Pro_Coder Посмотреть сообщение
    А в чем тогда отличие от фигурных скобках ?
    В том, что с фигурными скобками производится доступ не к ячейкам, а к отдельным байтам массива.
    Если нужно определённым значением инициализировать не ячейки, а все байты массива, то в Pawn это напрямую не сделать. Разве что можно попробовать изловчиться с чем-то вроде такого:
    1. new test[MAX_PLAYERS char] = { 0x03030303, ... }; // 0x03030303 = (3 << 24) | (3 << 16) | (3 << 8) | 3

    , либо вручную проинициализировать циклом.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  13. Пользователь сказал cпасибо:
    Pro_Coder (24.10.2020)
 

 
Страница 19 из 19 ПерваяПервая ... 9 17 18 19

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

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

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

Метки этой темы

Ваши права

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