Изменение мелких визуальных эффектов в Serious Sam
Изменение мелких визуальных эффектов в Serious Sam
Статья предусматривает то, что вы умеете
создавать директории для модов, а также что у вас имеется Visual C++ 6.0 он полностью настроен на работу с SDK. Также данная статья предусматривает, что Вы разобрались с редактированием классов Serious Sam: TSE. © Ну что ж, статья посвящена следующему:
Итак, приступим. Начнем с окружающих частиц в оружии или аммо. Найдем файл Ammoitem.es. Ищем следующие строки кода: Code
switch (m_EaitType) {
case AIT_SHELLS: Particles_Spiral(this, 1.0f*0.75, 1.0f*0.75, PT_STAR04, 4); break; case AIT_BULLETS: Particles_Spiral(this, 1.5f*0.75, 1.0f*0.75, PT_STAR04, 6); break; case AIT_ROCKETS: Particles_Spiral(this, 1.5f*0.75, 1.25f*0.75, PT_STAR04, 6); break; case AIT_GRENADES: Particles_Spiral(this, 2.0f*0.75, 1.25f*0.75, PT_STAR04, 6); break; case AIT_ELECTRICITY: Particles_Spiral(this, 1.5f*0.75, 1.125f*0.75, PT_STAR04, 6); break; case AIT_NUKEBALL: Particles_Spiral(this, 1.25f*0.75, 1.0f*0.75, PT_STAR04, 4); break; case AIT_IRONBALLS: Particles_Spiral(this, 2.0f*0.75, 1.25f*0.75, PT_STAR04, 8); break; case AIT_BACKPACK: Particles_Spiral(this, 3.0f*0.5, 2.5f*0.5, PT_STAR04, 10); break; case AIT_SERIOUSPACK: Particles_Spiral(this, 3.0f*0.5, 2.5f*0.5, PT_STAR04, 10); break; case AIT_NAPALM: Particles_Spiral(this, 3.0f*0.5, 2.5f*0.5, PT_STAR04, 10); break; case AIT_SNIPERBULLETS: Particles_Spiral(this, 1.5f*0.75, 1.25f*0.75, PT_STAR04, 6); break; } Здесь указывается, какая частица будет присутствовать определенному виду аммо. Разберемся на примере простых патронов: case AIT_SHELLS: Particles_Spiral(this, 1.0f*0.75, 1.0f*0.75, PT_STAR04, 4); break; Particles_spiral - это тип присутствующей частицы. Мы можем изменить ее, если будем аккуратными. Лично я, когда был совсем начинающим в SDK, брал виды частиц из итема ParticlesHolder. Их же, оказывается можно взять совсем в другом файле - Particles.cpp. Что же означают параметры, указанные в скобках? Вот что мы можем получить из Particles.cpp: void Particles_Spiral( CEntity *pen, FLOAT fSize, FLOAT fHeight,enum ParticleTexture ptTexture, INDEX ctParticles). Или, void Particles_Spiral( CEntity *pen, Размер, Высота,Текстура, кол-во частиц). Текстуры можно наглядно увидеть в редакторе : Вот и все. Собственно, ничего трудного нет. Вот как просто можно разнообразить игру. Но не перестарайтесь! Изменяем положение патронов или брони (лежащие патроны)
Возьмем на опыт тот же самый ammoitem.es. Найдем строки кода..
StartModelAnim(ITEMHOLDER_ANIM_MEDIUMOSCILATION, AOF_LOOPING|AOF_NORESTART);
Посмотрите на "ITEMHOLDER_ANIM_MEDIUMOSCILATION". Здесь указывается анимация парящего в воздухе объекта. Тоже самое мы можем увидеть и у других "итемов".Например, у брони: StartModelAnim(ITEMHOLDER_ANIM_SMALLOSCILATION, AOF_LOOPING|AOF_NORESTART);
Вообще, сам итемхолдер содержит следующие анимации : #define ITEMHOLDER_ANIM_DEFAULT_ANIMATION 0 #define ITEMHOLDER_ANIM_SMALLOSCILATION 1 #define ITEMHOLDER_ANIM_MEDIUMOSCILATION 2 #define ITEMHOLDER_ANIM_BIGOSCILATION 3 При "DEFAULT_ANIMATION" наше аммо не будет кружится в воздухе, а просто лежать на земле.
При "SMALLOSCILATION" наше аммо будет кружится так же, как кружится в воздухе броня. При "MEDIUMOSCILATION" наше аммо будет кружится как обычное аммо) При "BIGOSCILATION" наше аммо будет бешено крутиться в воздухе. Но это еще далеко не все. Мы забыли про частицы. Частицы придется удалить. Полностью удаляем вот этот код: switch (m_EaitType) { case AIT_SHELLS: Particles_Spiral(this, 1.0f*0.75, 1.0f*0.75, PT_STAR04, 4); break; case AIT_BULLETS: Particles_Spiral(this, 1.5f*0.75, 1.0f*0.75, PT_STAR04, 6); break; case AIT_ROCKETS: Particles_Spiral(this, 1.5f*0.75, 1.25f*0.75, PT_STAR04, 6); break; case AIT_GRENADES: Particles_Spiral(this, 2.0f*0.75, 1.25f*0.75, PT_STAR04, 6); break; case AIT_ELECTRICITY: Particles_Spiral(this, 1.5f*0.75, 1.125f*0.75, PT_STAR04, 6); break; case AIT_NUKEBALL: Particles_Spiral(this, 1.25f*0.75, 1.0f*0.75, PT_STAR04, 4); break; case AIT_IRONBALLS: Particles_Spiral(this, 2.0f*0.75, 1.25f*0.75, PT_STAR04, 8); break; case AIT_BACKPACK: Particles_Spiral(this, 3.0f*0.5, 2.5f*0.5, PT_STAR04, 10); break; case AIT_SERIOUSPACK: Particles_Spiral(this, 3.0f*0.5, 2.5f*0.5, PT_STAR04, 10); break; case AIT_NAPALM: Particles_Spiral(this, 3.0f*0.5, 2.5f*0.5, PT_STAR04, 10); break; case AIT_SNIPERBULLETS: Particles_Spiral(this, 1.5f*0.75, 1.25f*0.75, PT_STAR04, 6); break; } Ну вот и все, теперь наше аммо лежит на земле.. Изменяем окружающий свет при выстреле из оружия. (color, Fall-off, Hot-spot и т.п)
Если знать, как, правильно использовать этот трюк, то можно сделать свою модификацию намного круче.
Под игроком, при выстреле из дробовика, томмигана и т.д, имеется небольшой Light от оружия. В хоррор модах, я думаю, он бы пригодился для освещения местности (Извините меня, я снова наигрался в Zombie Plague 4.3) Сейчас мы откроем наш Player.es и найдем строку : // Setup light source
void SetupLightSource(void) { Далее видим:
// setup light source CLightSource lsNew; lsNew.ls_ulFlags = LSF_NONPERSISTENT|LSF_DYNAMIC; lsNew.ls_rHotSpot = 1.0f; // Лучше не изменять это, просто поставьте в 2 раза меньше чем ls_rFallOff lsNew.ls_colColor = C_WHITE; // Цвет света lsNew.ls_rFallOff = 2.5f; // Радиус действия. lsNew.ls_plftLensFlare = NULL; lsNew.ls_ubPolygonalMask = 0; lsNew.ls_paoLightAnimation = &m_aoLightAnimation; m_lsLightSource.ls_penEntity = this; m_lsLightSource.SetLightSource(lsNew); }; Вот и все. Не переборщите. Статью написал Heming специально для новичков. Happy Coding! © Источник: http://St-games.ucoz.net | |
Категория: SDK | Добавил: Heming (03.04.2011) | | |
Просмотров: 1171 | Комментарии: 4 | |
Всего комментариев: 4 | |
|