Круть, жаль на C++.
Для таких же, как я - другой способ:
через extracolours. Основное отличие от способа, представлено xanser-ом выше - в том, что так можно сделать вообще что угодно,
к примеру - мод ночного видения(BLUR тут тоже заменяется):
1) Открываем timecyc.dat
заменяем 18й extracolour на мой
// Extra Colour 18----------*NIGHT VISION*----------
0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 0 255 0 1.0 1.0 1.0 200 100 0 800.0 100.0 1.0 0 255 0 0 255 0 0 255 0 000 255 000 0 255 0 0
- выделенные цвета - цвета BLUR-а. Остальные цвета - как в любом часе погоды. В моде на ночное видение - всё зеленое.
2)Активация на кнопку 'N', когда целишься из снайперской винтовки:
:SNIPERN
thread 'SNIPERN'
:SNIPERN_10
wait 10
if
Player.Defined($PLAYER_CHAR)
else_goto @SNIPERN_10
if and
Player.Controllable($PLAYER_CHAR)
02D7: player $PLAYER_CHAR currentweapon == 29
80E0: not player $PLAYER_CHAR driving
029F: player $PLAYER_CHAR stopped
else_goto @SNIPERN_10
if
00E1: player 0 pressed_button 6
else_goto @SNIPERN_10
03E5: text_box 'ASM1_1' // ~t~Press ~h~N ~t~to use Night Vision
:SNIPERN_90
wait 10
if and
Player.Controllable($PLAYER_CHAR)
02D7: player $PLAYER_CHAR currentweapon == 29
80E0: not player $PLAYER_CHAR driving
029F: player $PLAYER_CHAR stopped
else_goto @SNIPERN_10
if
00E1: player 0 pressed_button 6
else_goto @SNIPERN_10
if
05EE: key_pressed 78 //VK_...
else_goto @SNIPERN_90
unload_wav 1
load_wav 'ASS_6' 1
:SNIPERN_175
wait 0
if and
85EE: not key_pressed 78 //VK_...
has_wav_loaded 1
else_goto @SNIPERN_175
if and
Player.Controllable($PLAYER_CHAR)
02D7: player $PLAYER_CHAR currentweapon == 29
80E0: not player $PLAYER_CHAR driving
029F: player $PLAYER_CHAR stopped
else_goto @SNIPERN_427
if
00E1: player 0 pressed_button 6
else_goto @SNIPERN_427
play_wav 1
wait 200
05E0: 0@ = read_memory 10553902 size 2 virtual_protect 0
wait 10
04F9: set_extracolors 18 fade 0
:SNIPERN_281
wait 10
if
83D2: not wav 1 ended
else_goto @SNIPERN_340
if and
Player.Controllable($PLAYER_CHAR)
02D7: player $PLAYER_CHAR currentweapon == 29
00E1: player 0 pressed_button 6
85EE: not key_pressed 78 //VK_...
else_goto @SNIPERN_388
jump @SNIPERN_281
:SNIPERN_340
unload_wav 1
:SNIPERN_344
wait 10
if and
Player.Controllable($PLAYER_CHAR)
02D7: player $PLAYER_CHAR currentweapon == 29
00E1: player 0 pressed_button 6
85EE: not key_pressed 78 //VK_...
else_goto @SNIPERN_388
jump @SNIPERN_344
:SNIPERN_388
04FA: reset_sky_colors_with_fade 0
set_weather 0@
wait 10
:SNIPERN_401
wait 0
if
85EE: not key_pressed 78 //VK_...
else_goto @SNIPERN_401
jump @SNIPERN_90
:SNIPERN_427
unload_wav 1
jump @SNIPERN_10
- там еще звук используется, но это мелочи. Фишка в частях:
05E0: 0@ = read_memory 10553902 size 2 virtual_protect 0 // - узнаем id текущей погоды
04F9: set_extracolors 18 fade 0 // - ставим экстракалор
и потом:
04FA: reset_sky_colors_with_fade 0 // вырубаем экстракалор
set_weather 0@ // возвращаем погоду(без этого ничего не убирается, т.к. по дефолту экстракалоры используются только в интерьерах и заставках, а не в игре)
--------------------------------------------------------------------------------------
Т.е. можно по-дефолту в timecyc для всех погод выставить нулевой(или пости нулевой) blur, а экстракалорами задавать его интенсивность и цвет.
Минус этого способа в том, что изобращение сменится мгновенно, а потому - для плавного эффекта нужно сделать несколько extracolours, и применять в скрипте их по-очереди. Ну.. такие извращенцы и быдлокодеры, как я - это любят
P.S. Ну и... есть еще пара мелочей
Учите короче C++ и не будьте как я