Global Half-Life | Форум

Global Half-Life | Форум (http://globalhalflife.ru/forum/index.php)
-   [ Кодинг ] Туториалы (http://globalhalflife.ru/forum/forumdisplay.php?f=17)
-   -   trigger_player_freeze (http://globalhalflife.ru/forum/showthread.php?t=29)

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(CBaseEntitypActivatorCBaseEntitypCallerUSE_TYPE useTypefloat valueoverride;

public:
    
BOOL m_bUnFrozen;
};

LINK_ENTITY_TO_CLASS(trigger_playerfreezeCTriggerPlayerFreeze);

void CTriggerPlayerFreeze::Spawn()
{
    if (
g_pGameRules->IsDeathmatch())
        
REMOVE_ENTITY(edict());
    else
        
m_bUnFrozen true;
}

void CTriggerPlayerFreeze::Use(CBaseEntitypActivatorCBaseEntitypCallerUSE_TYPE useTypefloat value)
{
    
m_bUnFrozen = !m_bUnFrozen;

    
//TODO: not made for multiplayer
    
CBaseEntitypPlayer 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" []
Применение - спавн на карту самой энтити, ее активация и деактивация любым триггером или мультименеджером.


Текущее время: 11:14. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot