Изменяем мелкие визуальные эффекты
(Автор : SeriousHeming)
Статья предусматривает то, что вы умеете
создавать директории для модов, а также что у вас имеется Visual C++ 6.0
он полностью настроен на работу с SDK. Также данная статья
предусматривает, что Вы разобрались с редактированием классов Serious
Sam: TSE. ©
создавать директории для модов, а также что у вас имеется Visual C++ 6.0
он полностью настроен на работу с SDK. Также данная статья
предусматривает, что Вы разобрались с редактированием классов Serious
Sam: TSE. ©
Ну что-ж статья посвящена следующему:
- Изменять окружающие частицы в оружии, аммо, аммо-паках и т.д.
- Изменить положение патронов или брони (лежащие патроны).
- Изменить окружающий свет при выстреле из оружия. (color, Fall-off, Hot-spot и т.п)
Ну, чтож, приступим.
Начнем с окружающих частиц в оружии или аммо.
Найдем файл 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;
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. Найдем строки кода..
Посмотрите на "ITEMHOLDER_ANIM_MEDIUMOSCILATION". Здесь указывается анимация парящего в воздухе объекта. Тоже самое мы можем увидеть и у других "итемов".Например, у брони:
Но это еще далеко не все. Мы забыли про частицы. Частицы придется удалить.
Полностью удаляем вот этот код:
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;
}
Ну вот и все, теперь наше аммо лежит на земле..
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
Вообще, сам итемхолдер содержит следующие анимации :
#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" наше аммо будет бешено крутиться в воздухе.
При "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 и найдем строку :
Статью создал Heming специально для новичков. Happy Coding! ©
Под игроком, при выстреле из дробовика, томмигана и т.д, имеется небольшой Light от оружия. В хоррор модах, я думаю, он бы пригодился для освещения местности (Извините меня, я снова наигрался в Zombie Plague 4.3)
Сейчас мы откроем наш Player.es и найдем строку :
// Setup light source
void SetupLightSource(void)
{
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);
};
Вот и все. Не переборщите.
// 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! ©
Комментарии
А де? У мя пусто в С++
создавать директории для модов, а также что у вас имеется Visual C++ 6.0
он полностью настроен на работу с SDK. Также данная статья
предусматривает, что Вы разобрались с редактированием классов Serious
Sam: TSE. ©