Эффекты гранат.
С чего мы начнём?
Конечно, с создания файла для нашего мода. Один из способов мной уже был описан. Выделяем мышкой localized_english_iw09, копируем, и вставляем в эту же папку. Создастся файл Копия localized_english_iw09.
Переименуем его в zz_grenade. В файле находится папка localizedstrings. Её удалять пока нельзя. Если удалить из файла IWD все папки - он самоуничтожится. Поэтому папку localizedstrings пока оставим и создадим ещё одну - maps.
Из файла iw_07.iwd/maps достаем файл _loadout и переносим в нашу папку maps. Открываем. Ищем следующий отрывок:
Code
if(level.script == "elalamein")
{
thread setup_british_africa();
level.campaign = "british";
level.player setnormalhealth (1);
if(game["gaveweapons"] == 1)
{
thread refill_ammo();
// weapons carry over but are REFILLED
return;
}
level.player giveWeapon("enfield_scope");
level.player giveWeapon("thompson");
level.player giveWeapon("MK1britishfrag");
level.player giveWeapon("smoke_grenade_american");
level.player switchToWeapon("thompson");
level.player switchToOffhand("MK1britishfrag");
game["gaveweapons"] = 1;
return;
}
Это - "Операция суперудар". Там можно удобно испытывать гранаты.
("smoke_grenade_american") мы исправим на ("smoke_grenade_british")
Терерь создаем в нашем моде папку weapons, а в ней - sp. В неё помещаем оружейный файл британской дымовой гранаты, который находится в игре: iw_13.iwd/weapons/sp/
Открываем, смотрим. Ищем строки:
Code
projExplosionEffect\fx/props/brit_smoke_grenade.efx\
brit_smoke_grenade.efx - это эффект, который назначен этой гранате.
\fx/props/ - это место, где он "лежит".
Создадим в нашем моде точно такое же место: папку fx, а в ней - props. Берём "родной" файл эффекта по адресу: iw_07.iwd/fx/props/ и тащим в созданную нами папку.
Открываем - начинаем изучать. Оказывается этот файл нас перенаправляет на эффект smoke_grenade
О чем говорят следующие строчки:
Code
playfx
[
/fx/explosions/smoke_grenade
]
Откроем файл smoke_grenade, который находится: iw_07.iwd/fx/explosions/.
Создаем точно такое же "место" и такой же файл в нашем моде. Я больше не буду "разжевывать" подобные вещи, потому что, если до сих пор непонятно - значит я плохо объясняю и читать дальше не имеет смысла. Для тех кто удерживает "нить" - пишу дальше.
Итак, с этим файлом мы и будем работать.
Во-первых мы можем поменять цвет. За это несет ответственность значение rgb и rgbRand. Цвета можно найти в iw_07.iwd/fx/smoke/. В файлах цветных гранат.
Ну, чтобы не заблудились приведу некоторые цветовые коды. Нужно просто заменить родные на выбранные.
Оранжевый:
Code
rgb
{
curve
[
0 1 0.502 0
1 1 0.502 0
]
}
rgbRand
{
curve
[
0 1 0.7569 0.5176
1 1 0.7333 0.4667
]
}
Зелёный:
Code
rgb
{
curve
[
0 0.4 0.7765 0.3569
1 0.4 0.7765 0.3569
]
}
rgbRand
{
curve
[
0 0.5412 0.5412 0.5412
1 0.5412 0.5412 0.5412
]
}
Черный:
Code
rgb
{
curve
[
0 0.1804 0.2 0.2353
1 0.1804 0.2 0.2353
]
}
rgbRand
{
curve
[
0 1 1 1
1 0 0 0
]
}
Черный:
Code
rgb
{
curve
[
0 0.2251 0.2565 0.2618
1 0.2618 0.2723 0.267
]
}
rgbRand
{
curve
[
0 0.349 0.349 0.349
1 0.3451 0.3451 0.3451
]
}
Цвет вина:
Code
rgb
{
curve
[
0 0.1412 0 0.1412
1 0.1569 0 0.1569
]
}
rgbRand
{
curve
[
0 0.251 0 0.251
1 0.251 0 0.251
]
}
Синий:
Code
rgb
{
curve
[
0 1 1 1
1 0 0 0
]
}
rgbRand
{
curve
[
0 1 1 1
1 0 0 0
]
}
Розовый:
Code
rgb
{
curve
[
0 0.5 0.3 0.3
1 0.5 0.3 0.3
]
}
rgbRand
{
curve
[
0 0.5 0.3 0.3
1 0.5 0.3 0.3
]
}
Красный:
Code
rgb
{
curve
[
0 0.4 0 0
1 0.4 0 0
]
}
rgbRand
{
curve
[
0 0.4 0 0
1 0.4 0 0
]
}
Грязно-желтый:
Code
rgb
{
curve
[
0 0.4 0.4 0
1 0.4 0.4 0
]
}
rgbRand
{
curve
[
0 0.4 0.4 0
1 0.4 0.4 0
]
}
Ну и пожалуй, хватит.
Естественно, их можно комбинировать.
Дым делится на части.(Particle)
Первая часть - это центр дыма
(name center_volume)
Вторая - собственно сама дымовая завеса
(name mist_volume)
Третья - вспышка
(name flash)
Четвертая - дымовой поток
(name smoke_stream)
Ну и так далее...
Каждая часть Заключена в фигурные скобки {}, которые определяют начало и конец части. Можно всем назначить разный цвет.
Ничто нам не мешает добавить и свою часть.
Можно просто соединить два или больше эффекта. Чтобы потом не искать не понравившийся дополнительный эффект - нарисуем сначала внизу строчку из, например, слешей, вот так:
//////////////////////////////////////////////////////////////////////////////////
Затем найдем эффект spitfire_bomb_dirt по адресу iw_07.iwd\fx\explosions
Откроем и просто скопирум всё содержимое файла в наш smoke_grenade. То есть допишем снизу, после строчки со слешами. Получим мощный вздымающий песок взрыв, помимо дыма.
Смотрим дальше. Видим такие строчки:
Code
shaders
[
gfx_dark_smoke_atlas_bg
]
}
Этот параметр определяет какие используются шейдеры. "Подглядеть" какие в игре есть шейдеры можно из других эффектов.
На всякий случай напишу, какие мне удалось "нарыть" за десять минут.
Код:
gfx_whisp_spiral
gfx_smokepuff_atlas
gfx_fire_atlas
gfx_exp_fireball_atlas
gfx_dark_smoke_atlas_bg
gfx_dirtchunks
gfx_mist
gfx_whisp_spiral_no_zfeather
gfx_distortion_noise
gfx_distortion_ring_light
gfx_distortion_ring_heavy
gfx_rockdebri_01
gfx_rockdebri_02
gfx_rockdebri_03
gfx_rockdebri_04
gfx_rockychunks01
gfx_rockychunks02
gfx_rockychunks03
gfx_spark_atlas
gfx_crater_blacktop
gfx_explosion_flash
gfx_snow_sheet
gfx_mud_splash01
gfx_mud_splash02
gfx_bullethit_wood1
gfx_bullethit_wood2
gfx_wood_splinter_atlas
gfx/effects/explosion/dirtplume_model2
gfx/effects/explosion/dirtplume_modelf
Не все подойдут и будут работать. Например, при использовании последних двух вы, скорее всего, увидите пустые квадраты. Можно прописать несколько шейдеров сразу.
С этими параметрами тоже можно поиграть:
Code
count 7 12
life 3e+004 3.5e+004
delay 3000 6000
radius 150
rotation -45 45
gravity 0 -1
count - количество
delay - как бы время затухания
gravity - степень притяжения к земле.
Про остальные, думаю понятно.
Можно сделать совсем забавные гранаты, при взрыве которых будут появляться различные предметы, уходить под землю и даже улетать в небо.
Для этого допишите в файле следующие строки:
Code
Emitter
{
name gluk
flags useModel useBBox usePhysics
spawnFlags orgOnCylinder
count 1
life 600000
delay 0 600
bounce 0.1 0.5
min -6 -6 -6
max 6 6 6
origin 30 -10 -10 30 10 0
radius 1
height 1
angle 90 360 0 90 0 0
angleDelta 50 50 0 -80 -80 0
gravity -50 -100
/*rgb
{
start 0.6824 0.6431 0.02
end .6 0.5843 0.1
flags linear
}*/
rgb
{
curve
[
//.6 .5 .4 .1
1 1 .784313725 0
]
}
rgbRand
{
curve
[
//0 .5 .4 .1
1 1 .784313725 0
]
}
alpha
{
curve
[
0 1 1 0
1 0 2.755e-040 2.498e-038
]
}
alphaRand
{
curve
[
0 1 1 0
1 0 2.755e-040 2.498e-038
]
}
length
{
curve
[
0 1 1 0
1 0 2.755e-040 2.498e-038
]
}
lengthRand
{
curve
[
0 1 1 0
1 0 2.755e-040 2.498e-038
]
}
rotationDelta
{
curve
[
0 0 1 0
1 0 2.755e-040 2.498e-038
]
scale 0
}
rotationDeltaRand
{
curve
[
0 0 1 0
1 0 2.755e-040 2.498e-038
]
}
models
[
xmodel\dome_01
xmodel\egypt_bunker_tanker
xmodel\german_artillery_flak88_aa_nm_d_static
xmodel\prop_traincar01_opendoor
xmodel\prop_traincar_flatfullbox
xmodel\prop_trollycar_d
xmodel\prop_tractor
xmodel\vehicle_cargoship_crates
xmodel\silo02
xmodel\vehicle_tiger_righttread_d
xmodel\vehicle_uni_carrier_gr_static
xmodel\vehicle_uni_carrier_yw_static
xmodel\prop_rail_fuelcar
xmodel\prop_dept_sign
xmodel\egypt_prop_well1
xmodel\bunker01
xmodel\prop_hotel_sign
xmodel\silo03
xmodel\vehicle_spitfire_flying
xmodel\vehicle_stuka_flying
xmodel\silo01
xmodel\vehicle_p51_mustang
xmodel\vehicle_crusader2
xmodel\prop_doghouse2
xmodel\egypt_prop_well2
xmodel\eldaba_tower_explode
xmodel\vehicle_cargoship_d
]
}
Модели, конечно можно заменить на свои.