Shadow762 |
14.12.2022 20:02 |
trigger_player_freeze
Находил тутор когда-то давно, оказался нерабочий
в общем, пришлось порыться и поправить пару моментов
годится на HL SDK 2.3, на 2.4 не проверял и не собираюсь :)
Собственно, ничего особенного
в конец triggers.cpp на сервере копипастим
C / C++:
class CTriggerPlayerFreeze : public CBaseDelay
{
public:
void Spawn() override;
void Use(CBaseEntity* pActivator, CBaseEntity* pCaller, USE_TYPE useType, float value) override;
public:
BOOL m_bUnFrozen;
};
LINK_ENTITY_TO_CLASS(trigger_playerfreeze, CTriggerPlayerFreeze);
void CTriggerPlayerFreeze::Spawn()
{
if (g_pGameRules->IsDeathmatch())
REMOVE_ENTITY(edict());
else
m_bUnFrozen = true;
}
void CTriggerPlayerFreeze::Use(CBaseEntity* pActivator, CBaseEntity* pCaller, USE_TYPE useType, float value)
{
m_bUnFrozen = !m_bUnFrozen;
//TODO: not made for multiplayer
CBaseEntity* pPlayer = static_cast<CBasePlayer*>(CBaseEntity::Instance(g_engfuncs.pfnPEntityOfEntIndex(1)));
if (!pPlayer)
{
return;
}
((CBasePlayer*)pPlayer) ->EnableControl(m_bUnFrozen);
}
Ну и в FGD -
Код:
@PointClass base(Targetx, Targetname) = trigger_playerfreeze : "Trigger Player Freeze" []
Применение - спавн на карту самой энтити, ее активация и деактивация любым триггером или мультименеджером.
|