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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±

    Можно ли сделать так, чтоб перехват срабатывал после обработки функции, а не до?

    Можно ли сделать так, что бы мой перехват срабатывал после всех остальных, а если их нет, то после самого колбека/функции?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    public Function(Args)
    {
        
    #if defined Prefix_Function
            
    Prefix_Function(Args);
        
    #endif

        //Тут твой код
        
    return 1;
    }
    #if defined _ALS_Function
        #undef Function
    #else
        #define _ALS_Function
    #endif

    #define Function Prefix_Function
    #if defined Prefix_Function
        
    forward Prefix_Function(Args);
    #endif 
    Но и перехват должен быть самым последним среди всех.

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Если не секрет, для чего вообще может понадобиться делать перехват именно самым последним? Просто интересно, ибо ни разу не встречал таких ситуаций. Вполне возможно, что и в вашем случае можно сделать так, чтобы перехват не зависел от всей остальной цепочки вызовов.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. Пользователь сказал cпасибо:
    VVWVV (28.11.2016)
  5. #4
    Аватар для Geebrox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    PHP код:
    public Function(Args)
    {
        
    #if defined Prefix_Function
            
    Prefix_Function(Args);
        
    #endif

        //Тут твой код
        
    return 1;
    }
    #if defined _ALS_Function
        #undef Function
    #else
        #define _ALS_Function
    #endif

    #define Function Prefix_Function
    #if defined Prefix_Function
        
    forward Prefix_Function(Args);
    #endif 
    Но и перехват должен быть самым последним среди всех.

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

      Открыть/закрыть


    Но не был уверен, а если в самом колбеке или в других перехватах стоит завершение кода (return), мой код ниже сработает?


    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если не секрет, для чего вообще может понадобиться делать перехват именно самым последним? Просто интересно, ибо ни разу не встречал таких ситуаций. Вполне возможно, что и в вашем случае можно сделать так, чтобы перехват не зависел от всей остальной цепочки вызовов.
    Мне нужно чтобы определенная функция вызывалась после OnPlayerConnect (точнее в конце). Доступ к самому колбеку не имею.

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

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

      Открыть/закрыть


    Но не был уверен, а если в самом колбеке или в других перехватах стоит завершение кода (return), мой код ниже сработает?
    Ну так return Обычно вызывает следующий перехват. Для чего в перехватах есть такие строки, по-твоему?
    PHP код:
    #if defined Prefix_Function
        
    return Prefix_Function(Args);
    #else
        
    return 1;
    #endif 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Понятно, а есть ещё другие варианты, быть может я не смогу поставить свой перехват последним? Или никаких выходов больше нет? (Кроме таймеров)

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

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

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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Элементарно. Чуть более года назад что-то подобное делал. Понадобилось лично мне для того, чтобы выводить сообщения при загрузке и выгрузке всех инклуд независимо от порядка подключения последним (варнинг о несовпадении версии при загрузке и статистика при выгрузке).
    и чем же твой вариант отличается от нашего? Кроме проверок на подключение y_hooks?

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

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

  12. Пользователь сказал cпасибо:
    Geebrox (29.11.2016)
  13. #10
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    Понятно, а есть ещё другие варианты, быть может я не смогу поставить свой перехват последним? Или никаких выходов больше нет? (Кроме таймеров)
    А чем тебя наши варианты не устраивают?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

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

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

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

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

Ваши права

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