И так, код придумывал не Я скажу Вам сразу, это то-же триггер как и в Оп4, тоесть пользоваться им также как и там. НАЧНЁМ!!! В конце файла triggers.cpp добавте :
Code
class CTriggerPlayerFreeze : public CBaseDelay
{
public:
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
int ObjectCaps( void ) { return CBaseDelay::ObjectCaps() & ~FCAP_ACROSS_TRANSITION; }
};
LINK_ENTITY_TO_CLASS( trigger_playerfreeze, CTriggerPlayerFreeze );
void CTriggerPlayerFreeze::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
{
if ( !pActivator || !pActivator->IsPlayer() )
pActivator = CBaseEntity::Instance(g_engfuncs.pfnPEntityOfEntIndex( 1 ));
if (pActivator->pev->flags & FL_FROZEN)
((CBasePlayer *)((CBaseEntity *)pActivator))->EnableControl(TRUE);
else ((CBasePlayer *)((CBaseEntity *)pActivator))->EnableControl(FALSE);
}
Компилируем проект. Добавляем это в ФГД Вашего мода :
Code
@PointClass base(Targetx, Targetname) = trigger_playerfreeze : "Trigger Player Freeze"
[
freeze(integer) : "Freeze Player" : 1
]
freeze(integer) : "Freeze Player" : 1 - в чём смысл сей строчки, для нас осталось загадкой.
Вот и всё он готов к работе, отключение и включение происходит с помощью мультименеджера или как вам угодно.