Оружие Игрока
By SeriousHeming..
By SeriousHeming..
Статья предусматривает то, что вы умеете создавать директории для модов, а также что у вас имеется Visual C++ 6.0 он полностью настроен на работу с SDK. Также данная статья предусматривает, что Вы разобрались с редактированием классов Serious Sam: TSE. ©
Ну что-ж статья посвящена следующему:
PS:Калаш(работа -JD- )
Здесь калаш "играет" в роли Томмигана
Полный размер :
http://st-games.ucoz.net/Heming/SDK_Screen_3-weapon_ak-.jpg
PS:MP5 mini(работа VITEK )
Здесь MP5 "играют" в роли пистолетов
Полный размер :
http://st-games.ucoz.net/Heming/Screen_4-SDK-MP5_Mini-.jpg
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]
И, далее вставляйте свои значения.Удачи!
Далее мы хотим научится..
Научиться изменять урон оружия в игре.
Для этого нам потребуется:
Итак, находим строку
Далее, ищем там же строку:
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
- Научиться изменять положение оружия от первого лица.
- Научиться изменять поворот оружия от первого лица.
- Научиться изменять урон оружия в игре.
PS:Калаш(работа -JD- )
Здесь калаш "играет" в роли Томмигана
Полный размер :
http://st-games.ucoz.net/Heming/SDK_Screen_3-weapon_ak-.jpg
PS:MP5 mini(работа VITEK )
Здесь 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
Что нам для этого потребуется?
wpn_fP // меняет наклон оружия вверх - вниз.Или сделать по хитроманчески : 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
Видим параметры:
Итак, приступим, как бэ.
Начнем с простого - научимся изменять наклон оружия от первого лица :
Сейчас мы заходим в вашу workspace - Sources и ищем там файл EntitiesMP/Header Files/Common Headers/weaponspositions.h
Видим параметры:
wpn_fH // меняет наклон оружия вправо-влево.
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 на ваше значение и радуйтесь
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.
Ищем строки:
О, здесь можно изменить множество интересных параметров в рокете. Рассмотрим, чтож..
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. Кстати, я так и не пойму, почему их не включили туда. Намного проще было бы сделать стреляющего ядрами биомеханоида..
Мы хотим изменить урон ядра. Заходим в CannonBall.es и ищем строку:
#define IRON_DAMAGE_MIN
Видим рядом:
#define IRON_DAMAGE_MIN 400.0f // здесь указано минимальное повреждение от ядра
#define IRON_DAMAGE_MAX 750.0f // а здесь максимальное
Ничего трудного нет.
Итак, находим строку:
// ***************** FIRE SINGLESHOTGUN *****************
Далее, ищем там же:
500.0f, 10.0f, 14, afSingleShotgunPellets, 0.2f, 0.03f); // значение 10 - искомое.
Вот так все просто.
Редактировать урон двустволки и снайперки будет вашим "домашним заданием", а сейчас мы зациклимся немного на других оружиях. Например, таких как, например, огнемет, или скажем, рокетница.
Ранее мы регулировали мощность пули, теперь же мы регулируем мощность "видимых" частиц.
Начнем с рокетницы.
Регулируем урон рокетницы.
Player Weapons уже нам не понадобится, так как там хранится код, чем и как будет стрелять рокетница. Сейчас мы будем изменять урон от рокетницы и поэтому мы обратимся к файлу Projectile.es.
Ищем строки:
/************************************************************
* PLAYER ROCKET / GRENADE *
************************************************************/
* 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
Что-ж, изменяем урон огня.
Итак, используя файл Flame.es ищем строки :
#define DAMAGE_AMMOUNT 30.0f
Ну, изменяем значение, и радуемся :D
Комментарии
Хотя на 5+ идёт
P.S. Там кстати на рукояти красными японскими иероглифами написано "Silent Hill"
Только я досих пор не пойму как так сделали?!
Очень интересный материал.
Молодец, модостроитель!