Если вы делаете свой мод, то наверняка многие читеры пройдут его легко. Этот тутор объяснит,
что надо делать, чтобы читерам жизнь раем не казалась.
1. Открываем void CWorld :: Spawn( void ):
Заменяем строчку:
g_flWeaponCheat = CVAR_GET_FLOAT( "sv_cheats" ); // Is the impulse 101 command allowed?
на:
g_flWeaponCheat = FALSE; // Impulse 101 command not allowed!
2. Открываем combat.cpp, в районе строчки 895 ищем:
if ( IsPlayer() )
{
if ( pevInflictor )
pev->dmg_inflictor = ENT(pevInflictor);
pev->dmg_take += flTake;
// check for godmode or invincibility
if ( pev->flags & FL_GODMODE )
{
return 0;
}
}
Удаляем следующий участок кода:
if ( pev->flags & FL_GODMODE )
{
return 0;
}
3. Открывем BOOL CBaseEntity :: FVisible ( CBaseEntity *pEntity ).
Там удаляем строчки:
if (FBitSet( pEntity->pev->flags, FL_NOTARGET ))
return FALSE;
4. Открываем CBaseMonster :: Look ( int iDistance ) там ищем строчку:
if ( IRelationship( pSightEnt ) != R_NO && FInViewCone( pSightEnt ) && !FBitSet( pSightEnt->pev->flags, FL_NOTARGET ) && FVisible( pSightEnt ) )
Заменяем на:
if ( IRelationship( pSightEnt ) != R_NO && FInViewCone( pSightEnt ) && FVisible( pSightEnt ) )
Примечание: шаг 1 запрещает не только читерские коды, но и отладочные команды. Поэтому, если вы хотите, чтобы
читерские и отладочные варианты команды impulse работали - пропустите шаг 1.
|