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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А чем тебя наши варианты не устраивают?
    перечитай:

    быть может я не смогу поставить свой перехват последним

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

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

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

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    С чего вдруг? Если ты про тот return - то он обрывает действия только в той функции, в которой используется, но не в тех, в которых эта функция вызывается. Всё прекрасно работает в общем
    Нет, ты не понял, вот если я перехвачу OnPlayerConnect с такими условиями, далее еще раз в другом месте но чуть ниже будет перехват с обычными проверками, то уже мой перехват не будет выполняться последним?

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

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

    У нас есть, к примеру, такой код
    Код:
    //=============[1]=============
    #if defined _inc_y_hooks || defined _INC_y_hooks
    	hook OnGameModeInit()
    #else
    	public OnGameModeInit()
    #endif
    {
    	new a = 1;
    	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
    		&& defined h_OnGameModeInit
    		a = h_OnGameModeInit();
    	#endif
    	print("Include 1 loaded!");
    	return a;
    }
    
    #if !defined _inc_y_hooks && !defined _INC_y_hooks
    	#if defined _ALS_OnGameModeInit
    		#undef OnGameModeInit
    	#else
    		#define _ALS_OnGameModeInit
    	#endif
    	#define OnGameModeInit h_OnGameModeInit
    	#if defined h_OnGameModeInit
    		forward h_OnGameModeInit();
    	#endif
    #endif
    
    //=============[2]=============
    #if defined _inc_y_hooks || defined _INC_y_hooks
    	hook OnGameModeInit()
    #else
    	public OnGameModeInit()
    #endif
    {
    	print("Include 2 loaded!");
    	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
    		&& defined hh_OnGameModeInit
    		return hh_OnGameModeInit();
    	#else
    		return 1;
    	#endif
    }
    
    #if !defined _inc_y_hooks && !defined _INC_y_hooks
    	#if defined _ALS_OnGameModeInit
    		#undef OnGameModeInit
    	#else
    		#define _ALS_OnGameModeInit
    	#endif
    	#define OnGameModeInit hh_OnGameModeInit
    	#if defined hh_OnGameModeInit
    		forward hh_OnGameModeInit();
    	#endif
    #endif
    
    //=============[3]=============
    #if defined _inc_y_hooks || defined _INC_y_hooks
    	hook OnGameModeInit()
    #else
    	public OnGameModeInit()
    #endif
    {
    	print("Include 3 loaded!");
    	#if !defined _inc_y_hooks && !defined _INC_y_hooks\
    		&& defined hhh_OnGameModeInit
    		return hhh_OnGameModeInit();
    	#else
    		return 1;
    	#endif
    }
    
    #if !defined _inc_y_hooks && !defined _INC_y_hooks
    	#if defined _ALS_OnGameModeInit
    		#undef OnGameModeInit
    	#else
    		#define _ALS_OnGameModeInit
    	#endif
    	#define OnGameModeInit hhh_OnGameModeInit
    	#if defined hhh_OnGameModeInit
    		forward hhh_OnGameModeInit();
    	#endif
    #endif
    А теперь представим этот как некое количество спойлеров друг в друге:

     Include 1 loaded!
    //=============[1]=============
    #if defined _inc_y_hooks || defined _INC_y_hooks
    hook OnGameModeInit()
    #else
    public OnGameModeInit()
    #endif
    {
    new a = 1;
    #if !defined _inc_y_hooks && !defined _INC_y_hooks\
    && defined h_OnGameModeInit
    a =
     Include 2 loaded!
    //=============[2]=============
    #if defined _inc_y_hooks || defined _INC_y_hooks
    hook OnGameModeInit()
    #else
    public OnGameModeInit()
    #endif
    {
    print("Include 2 loaded!");
    #if !defined _inc_y_hooks && !defined _INC_y_hooks\
    && defined hh_OnGameModeInit
    return
     Include 3 loaded!
    //=============[3]=============
    #if defined _inc_y_hooks || defined _INC_y_hooks
    hook OnGameModeInit()
    #else
    public OnGameModeInit()
    #endif
    {
    print("Include 3 loaded!");
    #if !defined _inc_y_hooks && !defined _INC_y_hooks\
    && defined hhh_OnGameModeInit
    return hhh_OnGameModeInit(); //Оригинальная функция
    #else
    return 1;
    #endif
    }

    #if !defined _inc_y_hooks && !defined _INC_y_hooks
    #if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
    #else
    #define _ALS_OnGameModeInit
    #endif
    #define OnGameModeInit hhh_OnGameModeInit
    #if defined hhh_OnGameModeInit
    forward hhh_OnGameModeInit();
    #endif
    #endif

    ;
    #else
    return 1;
    #endif
    }

    #if !defined _inc_y_hooks && !defined _INC_y_hooks
    #if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
    #else
    #define _ALS_OnGameModeInit
    #endif
    #define OnGameModeInit hh_OnGameModeInit
    #if defined hh_OnGameModeInit
    forward hh_OnGameModeInit();
    #endif
    #endif

    ;
    #endif
    print("Include 1 loaded!");
    return a;
    }

    #if !defined _inc_y_hooks && !defined _INC_y_hooks
    #if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
    #else
    #define _ALS_OnGameModeInit
    #endif
    #define OnGameModeInit h_OnGameModeInit
    #if defined h_OnGameModeInit
    forward h_OnGameModeInit();
    #endif
    #endif


    Результаты:
    PHP код:
    Include 2 loaded!
    Include 
    3 loaded!
    Include 
    1 loaded
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

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

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    Нет, ты не понял, вот если я перехвачу OnPlayerConnect с такими условиями, далее еще раз в другом месте но чуть ниже будет перехват с обычными проверками, то уже мой перехват не будет выполняться последним?
    Что тебе мешает просто взять и проверить, если наши слова ты понять не можешь? =\
      Открыть/закрыть
    PHP код:
    main()
    {
        
    TestFunc();
    }


    public 
    TestFunc()
    {
        print(
    "Перехват #1");
        
    #if defined test1_TestFunc
            
    return test1_TestFunc();
        
    #else
            
    return 1;
        
    #endif
    }
    #if defined _ALS_TestFunc
        #undef TestFunc
    #else
        #define _ALS_TestFunc
    #endif

    #define TestFunc test1_TestFunc
    #if defined test1_TestFunc
        
    forward test1_TestFunc();
    #endif


    public TestFunc()
    {
        print(
    "Перехват #2");
        
    #if defined test2_TestFunc
            
    return test2_TestFunc();
        
    #else
            
    return 1;
        
    #endif
    }
    #if defined _ALS_TestFunc
        #undef TestFunc
    #else
        #define _ALS_TestFunc
    #endif

    #define TestFunc test2_TestFunc
    #if defined test2_TestFunc
        
    forward test2_TestFunc();
    #endif


    public TestFunc()
    {
        
    #if defined test3_TestFunc
            
    test3_TestFunc();
        
    #endif
        
    print("Перехват #3");

        return 
    1;
    }
    #if defined _ALS_TestFunc
        #undef TestFunc
    #else
        #define _ALS_TestFunc
    #endif

    #define TestFunc test3_TestFunc
    #if defined test3_TestFunc
        
    forward test3_TestFunc();
    #endif


    public TestFunc()
    {
        print(
    "Перехват #4");
        
    #if defined test4_TestFunc
            
    return test4_TestFunc();
        
    #else
            
    return 1;
        
    #endif
    }
    #if defined _ALS_TestFunc
        #undef TestFunc
    #else
        #define _ALS_TestFunc
    #endif

    #define TestFunc test4_TestFunc
    #if defined test4_TestFunc
        
    forward test4_TestFunc();
    #endif    



    forward TestFunc();
    public 
    TestFunc()
    {
        print(
    "Оригинальная функция");
        return 
    1;



    Вызов прекратится на каком-то из перехватов только в том случае, если ты вернёшь, например, единицу, а не вызовешь перехваченную функцию:
    PHP код:
    return test4_TestFunc(); 
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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