Оружие Игрока.Разбираемся

Оружие Игрока.Разбираемся
By SeriousHeming..



Статья предусматривает то, что вы умеете создавать директории для модов, а также что у вас имеется Visual C++ 6.0 он полностью настроен на работу с SDK. Также данная статья предусматривает, что Вы разобрались с редактированием классов Serious Sam: TSE. ©


Ну что-ж статья посвящена следующему:
  • Научиться изменять положение оружия от первого лица.
  • Научиться изменять поворот оружия от первого лица.
  • Научиться изменять урон оружия в игре.
Результаты (уже привык писать по традиции : D) :

Ak-47 посередине
PS:Калаш(работа -JD- http://Sam4ever.do.am/)
Здесь калаш "играет" в роли Томмигана
Полный размер :
http://st-games.ucoz.net/Heming/SDK_Screen_3-weapon_ak-.jpg





PS:MP5 mini(работа VITEK http://Sam4ever.do.am/)
Здесь MP5 "играют" в роли пистолетов
Полный размер :
http://st-games.ucoz.net/Heming/Screen_4-SDK-MP5_Mini-.jpg



Так же мы можем заменить обычный ножик...

Или сделать по хитроманчески : D

PS:[Dark Dagger Model](работа $оучаснеG http://www.serioussite.ru/load/dark_dagger_model/13-1-0-677)
Полный размер :
http://st-games.ucoz.net/Heming/SDK_Screen_5-SG_Knife-.jpg


Что нам для этого потребуется?
  • EntitiesMP/PlayerWeapons.es
  • EntitiesMP/WeaponsPositions.h
  • EntitiesMP/CannonBall.es
  • EntitiesMP/Flame.es
  • EntitiesMP/Projectile.es
Только и всего.
Итак, приступим, как бэ.

Начнем с простого - научимся изменять наклон оружия от первого лица :





Сейчас мы заходим в вашу workspace - Sources и ищем там файл EntitiesMP/Header Files/Common Headers/weaponspositions.h

Видим параметры:


wpn_fH // меняет наклон оружия вправо-влево.
wpn_fP // меняет наклон оружия вверх - вниз.
wpn_fB // меняет наклоняет оружие против часовой стрелки.
wpn_fX // Перемещает оружие влево - вправо.
wpn_fY // Перемещает оружие вверх - вниз
wpn_fZ // Перемещает оружие вперед-назад.


Например, мы хотим сделать повернутый нож. Но как мы найдем его в списке? Данные по оружию вы можете взять либо отсюда, либо из файла HUD.cpp.
Итак:

   Оружие:                                Значение:
   WEAPON_NONE,                              //  [0]
   WEAPON_KNIFE,                             //  [1]
   WEAPON_COLT,                              //  [2]
   WEAPON_DOUBLECOLT,                  //  [3]
   WEAPON_SINGLESHOTGUN,            //  [4]
   WEAPON_DOUBLESHOTGUN,           // [5]
   WEAPON_TOMMYGUN,                    //  [6]
   WEAPON_MINIGUN,                        //  [7]
   WEAPON_ROCKETLAUNCHER,         //  [8]
   WEAPON_GRENADELAUNCHER,       //  [9]
   WEAPON_CHAINSAW,                     // [10]
   WEAPON_FLAMER,                        // [11]
   WEAPON_LASER,                          // [12]
   WEAPON_SNIPER                         // [13]
   WEAPON_IRONCANNON,               // [14]

И, далее вставляйте свои значения.Удачи!


Далее мы хотим научится..
Научиться изменять урон оружия в игре.

Для этого нам потребуется:
  • EntitiesMP/CannonBall.es
  • EntitiesMP/Flame.es
  • EntitiesMP/Projectile.es
  • EntitiesMP/PlayerWeapons.es
Начнем с начала - с ножа.
Регулируем урон ножа

Где регулируется урон от ножа?Естесственно, в файле PlayerWeapons.es.
Итак, находим строку

// ***************** SWING KNIFE *****************

Далее, ищем там же строку:
    m_moWeapon.PlayAnim(m_iAnim, 0);
    if (CutWithKnife(0, 0, 3.0f, 2.0f, 0.5f, ((GetSP()->sp_bCooperative) ? 100.0f : 50.0f))) { // Урон от ножа
      autowait(m_fAnimWaitTime);
    } else if (TRUE) {
      autowait(m_fAnimWaitTime/2);
      CutWithKnife(0, 0, 3.0f, 2.0f, 0.5f, ((GetSP()->sp_bCooperative) ? 100.0f : 50.0f)); // Также урон от ножа
      autowait(m_fAnimWaitTime/2);
    }

Изменяйте значения 100 и 50. И вы узнаете, насколько нож может быть серьёзен.Только не сделайте Parse error 3.0 :D


Регулируем урон кольтов.

Итак, находим строку:

// ***************** FIRE COLT *****************

Далее, ищем строку:
    FireOneBullet(wpn_fFX[WEAPON_COLT], wpn_fFY[WEAPON_COLT], 500.0f,
      ((GetSP()->sp_bCooperative) ? 10.0f : 20.0f)); // Измените параметры 10 и 20 на ваше значение и радуйтесь



Регулируем урон дробовика.

Итак, находим строку:

// ***************** FIRE SINGLESHOTGUN *****************

Далее, ищем там же:

 500.0f, 10.0f, 14, afSingleShotgunPellets, 0.2f, 0.03f); // значение 10 - искомое.

Вот так все просто.

Редактировать урон двустволки и снайперки будет вашим "домашним заданием", а сейчас мы зациклимся немного на других оружиях. Например, таких как, например, огнемет, или скажем, рокетница.
Ранее мы регулировали мощность пули, теперь же мы регулируем мощность "видимых" частиц.

Начнем с рокетницы.

Регулируем урон рокетницы.

Player Weapons уже нам не понадобится, так как там хранится код, чем и как будет стрелять рокетница. Сейчас мы будем изменять урон от рокетницы и поэтому мы обратимся к файлу Projectile.es.

Ищем строки:


/************************************************************
 *              PLAYER ROCKET / GRENADE                     *
 ************************************************************/



О, здесь можно изменить множество интересных параметров в рокете. Рассмотрим, чтож..
void PlayerRocket(void) {
  // set appearance
  InitAsModel();
  SetPhysicsFlags(EPF_PROJECTILE_FLYING);
  SetCollisionFlags(ECF_PROJECTILE_SOLID);
  SetModel(MODEL_ROCKET); /* Выбирает используемую модель. В нашем случае она находится в папке с рокетницей */
  SetModelMainTexture(TEXTURE_ROCKET); /* Выбирает используемую текстуру. В нашем случае она находится также в папке с рокетницей */
  // start moving
  LaunchAsPropelledProjectile(FLOAT3D(0.0f, 0.0f, -30.0f), (CMovableEntity*)(CEntity*)m_penLauncher);
  SetDesiredRotation(ANGLE3D(0, 0, 0)); /* Cторона, в которую полетит рокета на игрока. Тут никаких отклонений от игрока */
  // play the flying sound
  m_soEffect.Set3DParameters(20.0f, 2.0f, 1.0f, 1.0f);
  PlaySound(m_soEffect, SOUND_FLYING, SOF_3D|SOF_LOOP);
  m_fFlyTime = 30.0f;
  if( GetSP()->sp_bCooperative)
  {
    m_fDamageAmount = 600.0f; // Повреждение на цель (Ps:600.0f - я поменял параметр)
    m_fRangeDamageAmount = 100.0f; // Повреждение в округе ( Скажем, рокетджамп отнимает 50 хп)
  }
  else
  {
    m_fDamageAmount = 500.0f;
    m_fRangeDamageAmount = 100.0f;
  }
  m_fDamageHotSpotRange = 4.0f; // Насколько далеко будет взрыв( m_fRangeDamageAmount = 100.0f;)
  m_fDamageFallOffRange = 8.0f;
  m_fSoundRange = 50.0f; // Максимальное расстояние звука от чего-либо
  m_bExplode = TRUE; // Взрывается при прикосновении чего либо?
  m_bLightSource = TRUE; // Имеет свет вокруг себя?
  m_bCanHitHimself = TRUE; // Может подбить сам себя и взорваться?
  m_bCanBeDestroyed = TRUE; // Снаряд может быть уничтожен?
  m_fWaitAfterDeath = 1.125f;
  m_tmExpandBox = 0.1f;
  m_tmInvisibility = 0.05f; // Шкала невидимости
  SetHealth(50.0f); // Здоровье (m_bCanBeDestroyed)
  m_pmtMove = PMT_FLYING; /* Projectile move type - Может просто лететь, как рокета, может рикошетить, как граната (PMT_SLIDING),  и так далее..
Виды бывают:
PMT_GUIDED
PMT_GUIDED_FAST
PMT_FLYING
PMT_SLIDING
PMT_FLYING_REBOUNDING
PMT_GUIDED_SLIDING */


По тем же параметрам вы сможете изменить и другие виды Projectile.
Вот и все.

Далее у нас идут 2 интересных вида, которые вы не сможете обнаружить в файле projectile.es.
Это Cannonball и Flame. Кстати, я так и не пойму, почему их не включили туда. Намного проще было бы сделать стреляющего ядрами биомеханоида..

Регулируем урон пушки SBC.

Мы хотим изменить урон ядра. Заходим в CannonBall.es и ищем строку:

#define IRON_DAMAGE_MIN


Видим рядом:

#define IRON_DAMAGE_MIN 400.0f // здесь указано минимальное повреждение от ядра
#define IRON_DAMAGE_MAX 750.0f // а здесь максимальное


Ничего трудного нет.

Регулируем урон огнемета, а точнее огня.

Что-ж, изменяем урон огня.
Итак, используя файл Flame.es ищем строки :

#define DAMAGE_AMMOUNT 30.0f

Ну, изменяем значение, и радуемся :D





Источник: http://St-games.ucoz.net
Категория: SDK | Добавил: Heming (09.03.2011) | Автор: Егор Иванов E W
Просмотров: 2924 | Комментарии: 2 | Теги: Изменяем урон оружия, Изменяем положение оружия, EntitiesMP.dll, Оружие игрока, sdk
Всего комментариев: 2
2 альтаир   (27.05.2011 19:45) [Материал]
ага

1 Cofein   (15.03.2011 08:16) [Материал]
Вау... то что надо! smile

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