Приветствую всех.Этот тутор покажет как сделать в своём моде расчленёнку.Примером послужит npc_zombine,т.к для новичков там будет проще разобраться.Видел много постов на эту тему,но так никто и не давал конкретный ответ.Решил исправить эту проблему
Итак,собственно открываем на сервере npc_zombine.cpp и в #include'ы добавим
В данном случае DMG_BUCKSHOT говорит нам что разлетаться на части зомби будет от выстрела(ов) из дробовика. DMG_BUCKSHOT можно менять на любой другой в соответствии от того что вам нужно.Например DMG_BLAST - говорит что нужно "разлетаться" от взрывов. Теперь что бы в игре не вылазили ошибки,и игра не вылетала,нужно в функции
Strider, особенно прикольно, что помимо гибсов можно спавнить итемы, если npc разлетается Туториалы по программированию, мои и слегка изменённые чужие. :)
Я этот тутор прикручивал к комбайнам,и прочим NPC, выглядело прикольно.
Дык там всё просто,в любом другом нпс регаем функцию Event_Killed и вс1 тоже самое =) Кстате я делаю через TraceAttack,т.к там можно указать Хитгруппы,что даёт нам интересные возможности =)
Dark_Alex, кстати, пробовал такой ironsight сделать? Пока что только Strider и Andreazzz на этом форуме смогли слепить его по туториалу нормально. Если получится, делай перевод и лучше в туториалы добавляй. Туториалы по программированию, мои и слегка изменённые чужие. :)
Hitmen, Я тож смог по тому тутору сделать,капался правда долго,но сделать смог.Ток с подключением звука не стал мараться. В туторы добавить немогу, т.к я не проверенный пользователь,прав не имею подобных.
Добавлено (29.06.2011, 15:40) --------------------------------------------- А в плане перевести тот тутор,может займусь.
Dark_Alex, у Дета попроси, что бы в VIP добавил, а то ты вроде уже 2-ой туториал написал, если не ошибаюсь (перевёл точнее на сей раз)? Туториалы по программированию, мои и слегка изменённые чужие. :)
Hitmen, Вообще третий уже =) Я просто смотрю,на всех русско-язычных сайтах одни и те же туторы практически. Ну и подумал что новичкам будет очень кстате попробовать что-нибудь новое.Да и народа у которых с англ.языком проблемы тоже много.Вот перевожу время от времени.
flIronsightFOVOffset = pSights->GetFloat( "fov", 0.0f ); } else { //note: you can set a bool here if you'd like to disable ironsights for weapons with no IronSight-key vecIronsightPosOffset = vec3_origin; angIronsightAngOffset.Init(); flIronsightFOVOffset = 0.0f; }
weapon_smg1.txt (скрипт) сразу после "item_flags" "0" вставить
if( pOwner->SetFOV( this, pOwner->GetDefaultFOV()+GetIronsightFOVOffset(), 1.0f ) ) //modify the last value to adjust how fast the fov is applied { m_bIsIronsighted = true; m_flIronsightedTime = gpGlobals->curtime; } }
if( pOwner->SetFOV( this, 0, 0.4f ) ) //modify the last value to adjust how fast the fov is applied { m_bIsIronsighted = false; m_flIronsightedTime = gpGlobals->curtime; } }
RecvPropInt( RECVINFO( m_bIsIronsighted ), 0, RecvProxy_ToggleSights ), //note: RecvPropBool is actually RecvPropInt (see its implementation), but we need a proxy RecvPropFloat( RECVINFO( m_flIronsightedTime ) ),
pos += ( newPos - pos ) * exp; ang += ( newAng - ang ) * exp; }
заменить весь
Code
void CBaseViewModel::CalcViewModelView( CBasePlayer *owner, const Vector& eyePosition, const QAngle& eyeAngles ) { // UNDONE: Calc this on the server? Disabled for now as it seems unnecessary to have this info on the server #if defined( CLIENT_DLL ) QAngle vmangoriginal = eyeAngles; QAngle vmangles = eyeAngles; Vector vmorigin = eyePosition;
CBaseCombatWeapon *pWeapon = m_hWeapon.Get(); //Allow weapon lagging if ( pWeapon != NULL ) { #if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) #endif { // add weapon-specific bob pWeapon->AddViewmodelBob( this, vmorigin, vmangles ); } } // Add model-specific bob even if no weapon associated (for head bob for off hand models) AddViewModelBob( owner, vmorigin, vmangles ); // Add lag CalcViewModelLag( vmorigin, vmangles, vmangoriginal );
#if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) { // Let the viewmodel shake at about 10% of the amplitude of the player's view vieweffects->ApplyShake( vmorigin, vmangles, 0.1 ); } #endif
void CBaseViewModel::CalcViewModelView( CBasePlayer *owner, const Vector& eyePosition, const QAngle& eyeAngles ) { // UNDONE: Calc this on the server? Disabled for now as it seems unnecessary to have this info on the server #if defined( CLIENT_DLL ) QAngle vmangoriginal = eyeAngles; QAngle vmangles = eyeAngles; Vector vmorigin = eyePosition;
CBaseCombatWeapon *pWeapon = m_hWeapon.Get(); //Allow weapon lagging //only if not in ironsight-mode if( pWeapon == NULL || !pWeapon->IsIronsighted() ) { if ( pWeapon != NULL ) { #if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) #endif { // add weapon-specific bob pWeapon->AddViewmodelBob( this, vmorigin, vmangles ); } }
// Add model-specific bob even if no weapon associated (for head bob for off hand models) AddViewModelBob( owner, vmorigin, vmangles );
// Add lag CalcViewModelLag( vmorigin, vmangles, vmangoriginal );
#if defined( CLIENT_DLL ) if ( !prediction->InPrediction() ) { // Let the viewmodel shake at about 10% of the amplitude of the player's view vieweffects->ApplyShake( vmorigin, vmangles, 0.1 ); } #endif }