Главная » Статьи » SDK

Изменение мелких визуальных эффектов в Serious Sam
Изменение мелких визуальных эффектов в Serious Sam


Статья предусматривает то, что вы умеете
создавать директории для модов, а также что у вас имеется 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;


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) | Автор: Егор Иванов E W
Просмотров: 584 | Комментарии: 4 | Теги: sdk, Heming, Изменяем/Создаем мелкие визуальные
Всего комментариев: 4
3 Molodec   (28.04.2011 00:52)
Крутая статья. Молодец. У тебя большое будущее smile

4 Heming   (14.05.2011 20:29)
Спасибо!

2 Heming   (22.04.2011 17:32)
Сейчас все работает happy

1 Cofein   (19.04.2011 22:56)
афтар где скриншоты?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]