Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11
  1. #1
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Архитектура павн от зигги, вопрос

    Прочитал следующую тему про архитекуру в павн от зигги https://ziggi.org/arhitektura-pawn-proekta-dlya-sa-mp/, довольно интересный подход, но у меня возник вопрос. Во допустим делаю работу таксиста, и допустим мне надо задействовать стандартный паблик OnPlayerConnect, как быть, если он допустим будет использоваться и в другом pwn файле (например в работе механика)? Ведь в таком случае компилятор выдаст ошибку, что паблик уже используется

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Либо хуки, либо в каждом файле делать каждый паблик со своим тегом перед ним, а из главного файла из оригинального паблика вызывать их в нужной последовательности.

    - - - Добавлено - - -

    А, ну ещё y_hooks как альтернатива первому варианту
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    А, ну ещё y_hooks как альтернатива первому варианту
    В чём смысл подключать весь комплекс YSI, только ради одних хуков? (Ну, только если автор его не использует)
    Следовательно, тогда и все остальные перехваты придётся перестраивать.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    В чём смысл подключать весь комплекс YSI, только ради одних хуков? (Ну, только если автор его не использует)
    Следовательно, тогда и все остальные перехваты придётся перестраивать.
    Кому-то может быть так удобнее, это ж один из вариантов
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Кому-то может быть так удобнее, это ж один из вариантов
    Не хочется использовать библиотеку YSI, не знаю почему))

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

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

    Только названия я бы делал более говорящими, а не просто название коллбэка и префикс. И в одну функцию помещал одно конкретное действие. Тогда будет гораздо проще понять что происходит в том или ином коллбэке, не прибегая к просмотру исходного кода инклудов.

    Вот пример того, как я строю архитектуру проекта
    PHP код:
    .../gamemode/new.pwn
    _
    .../pawno/pawncc.exe
    _
    .../pawno/include/стандартные инклуды
    _
    .../pawno/source/lib/все сторонние инклуды (streamer и т.п.)
    _
    .../pawno/source/core/dialog_handler.inc
    _
    .../pawno/source/player/commands.inc
    .../pawno/source/player/account/account_system.inc
    .../pawno/source/player/account/ban_system.inc
    .../pawno/source/player/message/chat_system.inc
    _
    .../pawno/source/admin/commands.inc
    .../pawno/source/admin/admin_system.inc//Всё, что связано с авторизацией админов
    .../pawno/source/admin/message/chat_system.inc 
    Подключение стандартных инклудов происходит обычным образом:
    PHP код:
    #include "a_samp.inc" 
    //или 
    #include <a_samp.inc> 
    А подключение всего остального уже идёт так:
    PHP код:
    #include "../source/account/account_system.inc" 
    Но это, кстати, не реальная структура, а лишь наброски того, как можно всё разделять, не ломая, при этом, стандартную структуру SA-MP

    UPD: И да, эта архитектура основана на архитектуре Ziggi. Просто слегка переработана под собственные нужды
    Последний раз редактировалось DeimoS; 28.04.2017 в 16:26.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  7. #7
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Вот лучший вариант.

    Только названия я бы делал более говорящими, а не просто название коллбэка и префикс. И в одну функцию помещал одно конкретное действие. Тогда будет гораздо проще понять что происходит в том или ином коллбэке, не прибегая к просмотру исходного кода инклудов.

    Вот пример того, как я строю архитектуру проекта


    Но это, кстати, не реальная структура, а лишь наброски того, как можно всё разделять, не ломая, при этом, стандартную структуру SA-MP

    UPD: И да, эта архитектура основана на архитектуре Ziggi. Просто слегка переработана под собственные нужды
    Спасибо, ведь по сути, например при коннекте, каждый раз будешь вызываться этот самый сток из файла, не затратно ли это?

  8. #8
    Аватар для SooBad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2017
    Адрес
    Краснодар
    Сообщений
    83
    Репутация:
    20 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Спасибо, ведь по сути, например при коннекте, каждый раз будешь вызываться этот самый сток из файла, не затратно ли это?
    Это же инклюд...
    Не путай с вызовом коллбеков из фс.

  9. #9
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Спасибо, ведь по сути, например при коннекте, каждый раз будешь вызываться этот самый сток из файла, не затратно ли это?
    Это на столько незначительная трата, что ей можно пренебречь. Думай об оптимизации алгоритмов, а не языковых конструкций.

  10. 2 пользователя(ей) сказали cпасибо:
    Nexius_Tailer (28.04.2017) StevenH (28.04.2017)
  11. #10
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от SooBad Посмотреть сообщение
    Это же инклюд...
    Не путай с вызовом коллбеков из фс.
    Кто сказал что это все я буду делать в инклуде? Это будут pwn файлы, подключаемые из главного pwn файла.

    - - - Добавлено - - -

    Цитата Сообщение от ziggi Посмотреть сообщение
    Это на столько незначительная трата, что ей можно пренебречь. Думай об оптимизации алгоритмов, а не языковых конструкций.
    Спасибо, буду пробовать такую конструкцию)

    - - - Добавлено - - -

    Цитата Сообщение от ziggi Посмотреть сообщение
    Это на столько незначительная трата, что ей можно пренебречь. Думай об оптимизации алгоритмов, а не языковых конструкций.
    И еще один вопрос, например если краш детект покажет что где то происходит выход за пределы массива, каким образом он покажет строку ошибки (где происходит выход за пределы массива)?

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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