Товарищ lexxda написал туториал как добавить несколько классов для стандартного зомби. Минус туториала был в том что просто указать модельку для npc_zombie было невозможно, а как вариант выбирать модель из списка который записан в коде npc, что не совсем удобно. Я решил написать свой туториал как добавить к npc_zombie выборку модельки персонажа.
Откройте файл npc_zombie.cpp (src_mod\game\server\hl2\).
Для начала нам нужно в функцию void CZombie::Precache( void ) добавить
Code
//Noxter
PrecacheModel( STRING( GetModelName() ) );
//
Прокрутите чуток ниже до функции void CZombie::SetZombieModel( void ) и замените всю функцию на
Code
void CZombie::SetZombieModel( void )
{
//Noxter
char *szModel = (char *)STRING( GetModelName() );
if (!szModel || !*szModel)
{
szModel = "models/zombie/classic.mdl";
SetModelName( AllocPooledString(szModel) );
}
Hull_t lastHull = GetHullType();
if ( m_fIsTorso )
{
SetModel( "models/zombie/classic_torso.mdl" );
SetHullType( HULL_TINY );
}
else
{
//SetModel( "models/zombie/classic.mdl" );
//Noxter
SetModel( szModel );
SetHullType( HULL_HUMAN );
}
SetBodygroup( ZOMBIE_BODYGROUP_HEADCRAB, !m_fIsHeadless );
SetHullSizeNormal( true );
SetDefaultEyeOffset();
SetActivity( ACT_IDLE );
// hull changed size, notify vphysics
// UNDONE: Solve this generally, systematically so other
// NPCs can change size
if ( lastHull != GetHullType() )
{
if ( VPhysicsGetObject() )
{
SetupVPhysicsHull();
}
}
}
С кодингом закончили, теперь переходим к FGD.
Откройте блокнотом файл halflife2.fgd (лежит в папке sourcesdk\bin\source2007\bin) и найдите строку
Code
@NPCClass base(BaseNPC) studio("models/Zombie/Classic.mdl") = npc_zombie : "Zombie"
[
]
И замените ее на
Code
@NPCClass base(BaseNPC) studio() = npc_zombie : "Zombie"
[
model(studio) : "World model" : "models/barney.mdl"
]
Проверяйте отписывайтесь.
Изображения:
Источник http://cs-mapping.com.ua/forum/showthread.php?t=29712