Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5

Тема: Директива

  1. #1
    Аватар для Gressie
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±

    Директива

    Здравствуйте. Можно ли при помощи директив делать несколько проверок?
    Например:
    Если у мода имеется стример MidoStream то выполняем действие.
    Если у мода имеется стример Streamer от Incognito то выполняем действие.
    Если у мода не имеется вообще стример то выполняем действие

    Примечание. Я представляю что можно сделать в виде
    1. #if !defined ...
    2. #else
    3. ...
    4. #endif


    Но как тут уместить сразу три проверки?
    Последний раз редактировалось Gressie; 13.06.2019 в 16:48.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    MidoStream? Сейчас вроде бы не нулевые годы и люди давно уже пользуются стримером от Incognito, в котором куда больше функционала и меньше нагрузка на сервер.

    Но если вы всё ещё хотите поддерживать устаревший крап, используемый в не менее устаревших модах, потому что "эта жи мод Рустама Рича!",, или вы просто хотите лучше знать, как использовать условную компиляцию в Pawn (искренне надеюсь, что это именно второй вариант), то
    1. #if defined Streamer_IncludeFileVersion
    2. // Действия (1)
    3. #elseif defined MidoStreamDisconnect
    4. // Действия (2)
    5. #else
    6. // Действия (3)
    7. #endif
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Ещё хотел уточнить. Можно ли в собственных инклудах использовать вот так, для лучшей читабельности кода?
    1. #if defined Test
    2. #undef Test
    3. #endif
    4. #define Test. _Test
    5. new Test.Var[2];
    6. ...
    7. {
    8. printf("%d %d", Test.Var[0], Test.Var[1]);
    9. }


    А в основном моде использовать сразу:
    1. #include <filename>
    2. {
    3. return 1;
    4. }

    Не потеряется ли совместимость с другими перехватами?

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Нельзя потерять то, чего нет. Так, как вы это показали, ваш перехват будет несовместим с другими.
    Во-первых, обычно перехватчик вызывает перехватываемую функцию, а не наоборот. Во-вторых, не объявлен макрос "_ALS_OnGameModeInit" для совместимости (я не буду здесь углубляться в подробности о том, как это всё работает, ибо я это уже объяснял в уроках про перехваты).

    Касаемо символа ".", совершенно вас не понимаю. Каким образом использование лишнего макроса должно улучшить читаемость? Тем более, что до макроподстановки название функции отделяется одним символом ".", что после замены тоже только одним символом "_" (правда, в вашем коде этот символ ещё и зачем-то поставлен перед префиксом). Так в чём профит?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Нельзя потерять то, чего нет. Так, как вы это показали, ваш перехват будет несовместим с другими.
    Во-первых, обычно перехватчик вызывает перехватываемую функцию, а не наоборот. Во-вторых, не объявлен макрос "_ALS_OnGameModeInit" для совместимости (я не буду здесь углубляться в подробности о том, как это всё работает, ибо я это уже объяснял в уроках про перехваты).

    Касаемо символа ".", совершенно вас не понимаю. Каким образом использование лишнего макроса должно улучшить читаемость? Тем более, что до макроподстановки название функции отделяется одним символом ".", что после замены тоже только одним символом "_" (правда, в вашем коде этот символ ещё и зачем-то поставлен перед префиксом). Так в чём профит?
    Спасибо. Я понял вас. Просто я думал что так удобней при подключении инклуда в мод. Название функции отделять точкой.
    Последний раз редактировалось Gressie; 14.06.2019 в 12:41.

 

 

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

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

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

Ваши права

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