Пятница, 28.07.2017, 10:05
 
Приветствую Вас Guest | RSS
Главная страница | [Hl2]Делаем лазерное оружие(тутор) - Форум | Регистрация | Вход
[Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Игровая мастерская » Программирование » [Hl2]Делаем лазерное оружие(тутор)
[Hl2]Делаем лазерное оружие(тутор)
Dark_AlexДата: Воскресенье, 19.06.2011, 20:52 | Сообщение # 1
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
Доброго времени суток друзья,сегодня я расскажу вам как сделать пистолет(например) который будет стрелять лазером,при котором так же имеется эффект исчезновения нпс как от выстрела энергетическим шаром(незнаю как по-другому объяснить) =)
Итак приступим,для примера как раз таки возьмём пистолет.
На сервере откроем файл weapon_pistol.cpp
И под includes gamestat.h
Добавим
Code
#include "beam_shared.h"
    #include "ammodef.h"
    #define PHYSCANNON_BEAM_SPRITE "sprites/orangelight1.vmt"


Далее в public(под DECLARE_ACTTABLE();) добавим

Code
int  m_nBulletType;


Теперь после BEGIN_DATADESC( CWeaponPistol ) добавим

Code
DEFINE_FIELD( m_nBulletType,   FIELD_INTEGER ),


И поменяем

Code
void    PrimaryAttack( void );


На

Code
void    PrimaryAttack( trace_t &tr, int nDamageType, CBaseCombatCharacter *pOperator );


Теперь идём к

Code
CWeaponPistol::CWeaponPistol( void )


И добавляем

Code
m_nBulletType  = -1;


Далее спускаемся до

Code
void CWeaponPistol::PrimaryAttack( void )


И меняем на

Code
void CWeaponPistol::PrimaryAttack( trace_t &tr, int nDamageType, CBaseCombatCharacter *pOperator )


Теперь после

Code
m_iPrimaryAttacks++;
gamestats->Event_WeaponFired( pOwner, true, GetClassname() );


Добавляем

Code
    Vector vecShootOrigin, vecShootDir;
    vecShootOrigin = pOperator->Weapon_ShootPosition();
    DrawBeam( vecShootOrigin, tr.endpos, 15.5 );


И теперь в самом конце файла добавляем
Code

//-----------------------------------------------------------------------------
// Purpose:    
// Input  : &startPos -    
//   &endPos -    
//   width -    
//   useMuzzle -    
//-----------------------------------------------------------------------------
void CWeaponPistol::DrawBeam( const Vector &startPos, const Vector &endPos, float width )
{
    //Tracer down the middle
    UTIL_Tracer( startPos, endPos, 0, TRACER_DONT_USE_ATTACHMENT, 6500, false, "GaussTracer" );
    //Draw the main beam shaft
    CBeam *pBeam = CBeam::BeamCreate( PHYSCANNON_BEAM_SPRITE, 15.5 );
    pBeam->SetStartPos( startPos );
    pBeam->PointEntInit( endPos, this );
    pBeam->SetEndAttachment( LookupAttachment("Muzzle") );
    pBeam->SetWidth( width );
//    pBeam->SetEndWidth( 0.05f );
    pBeam->SetBrightness( 255 );
    pBeam->SetColor( 255, 185+random->RandomInt( -16, 16 ), 40 );
    pBeam->RelinkBeam();
    pBeam->LiveForTime( 0.1f );
}
//-----------------------------------------------------------------------------
// Purpose:    
// Input  : &tr -    
//   nDamageType -    
//-----------------------------------------------------------------------------
void CWeaponPistol::DoImpactEffect( trace_t &tr, int nDamageType )
{
    //Draw our beam
    DrawBeam( tr.startpos, tr.endpos, 15.5 );
    if ( (tr.surface.flags & SURF_SKY) == false )
    {
     CPVSFilter filter( tr.endpos );
     te->GaussExplosion( filter, 0.0f, tr.endpos, tr.plane.normal, 0 );
     m_nBulletType = GetAmmoDef()->Index("GaussEnergy");
     UTIL_ImpactTrace( &tr, m_nBulletType );
    }
}


Далее ищём файл hl2_gamerules.cpp и меняем

Code
def.AddAmmoType("Pistol",    DMG_BULLET,    TRACER_LINE_AND_WHIZ,    "sk_plr_dmg_pistol",    "sk_npc_dmg_pistol",    "sk_max_pistol",    BUL LET_IMPULSE(200, 1225), 0 );


На

Code
def.AddAmmoType("Pistol",    DMG_DISSOLVE,    TRACER_NONE,  "sk_plr_dmg_pistol",    "sk_npc_dmg_pistol",    "sk_max_pistol",    BULLET_IMPUL SE(200, 1225), 0 );

Всё готово,теперь можете открывать skills.cfg и менять как вам хочется дамаг от оружия.
 
AndreazzzДата: Понедельник, 20.06.2011, 13:41 | Сообщение # 2
Spy
Группа: Проверенные
Сообщений: 996
Репутация: 55
Статус: Offline
Копи-паста с ModDB xD

 
Dark_AlexДата: Понедельник, 20.06.2011, 15:32 | Сообщение # 3
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
Andreazzz,
А там есть туторы? Надо глянуть =)
Я лично переводил просто,малоли кому надо.
 
StriderДата: Понедельник, 20.06.2011, 15:47 | Сообщение # 4
Spy
Группа: Проверенные
Сообщений: 1465
Репутация: 51
Статус: Offline
Видел, да..

*думает* Может сделать туториал по гранатомёту?



Ох и сложная эта работа, из болота тащить два вмода...
 
Dark_AlexДата: Понедельник, 20.06.2011, 20:33 | Сообщение # 5
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
Strider,
Вообще можно копи-пастить smg,и вторичную атаку присобачить на первичную,заменить модель,сделать основными патронами гранаты от подствола и воаля.По идее.
 
AndreyДата: Воскресенье, 05.02.2012, 18:18 | Сообщение # 6
Soldier
Группа: Заблокированные
Сообщений: 347
Репутация: 10
Статус: Offline
Strider, а слабо на правую руку сделать? biggrin



Кароч отличу.
 
Dark_AlexДата: Пятница, 10.02.2012, 11:29 | Сообщение # 7
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
Andrey, Поверь, не это в кодинге главное =)
 
HitmenДата: Пятница, 10.02.2012, 23:31 | Сообщение # 8
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Quote (Andreazzz)
Копи-паста с ModDB xD

C Valve Dev Wiki wink

Andrey, 1 строка cool


Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
Dark_AlexДата: Суббота, 11.02.2012, 15:51 | Сообщение # 9
Combat medic
Группа: Проверенные
Сообщений: 36
Репутация: 16
Статус: Offline
Hitmen, Я же говорил что только перевёл cool Есть же люди в англ. языке не бум-бум.
 
HitmenДата: Вторник, 14.02.2012, 15:09 | Сообщение # 10
Spy
Группа: Проверенные
Сообщений: 2104
Репутация: 84
Статус: Offline
Dark_Alex, неее, люди ещё более менее, не то что Prompt! biggrin Он же "Лесной болван". happy

Туториалы по программированию, мои и слегка изменённые чужие. :)

Sp@ce Project Blog
Sp@ce Project Web-Site

I'm in spaaace!
Я в контакте
Я в Facebook'е

 
Форум » Игровая мастерская » Программирование » [Hl2]Делаем лазерное оружие(тутор)
Страница 1 из 11
Поиск:

Помощь в разработке форума: HOMiE7