Нужна помощь с freeze time

leon97leon

Участник
Сообщения
75
Реакции
9
Мне нужно в if проверить условие freeze time. Сразу скажу я не силен в sourcepawn. Спасибо.
C-подобный:
public Action OnPlayerRunCmd(int iClient, int &iButtons, int &iImpulse)
{
    if (!IsPlayerAlive(iClient) || !IsClientInGame(iClient) || g_bDelay[iClient] || !g_bInUse[iClient] || !iButtons || (GetEntityMoveType(iClient) & MOVETYPE_LADDER))
        return Plugin_Continue;
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980

leon97leon

Участник
Сообщения
75
Реакции
9
Что за такое условие "freeze time"?
И проверять IsPlayerAlive() лучше после IsClientInGame(): Хотя далеко не факт, то эта проверка вообще нужна в OnPlayerRunCmd()
Freeze time это замарозки перед началом раунда
Сообщения автоматически склеены:

mp_freezetime которая
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
тогда примерно так:
C-подобный:
bool bFreezeTime;

public void OnPluginStart()
{
    HookEvent("round_start", Event_Round, EventHookMode_PostNoCopy);
    HookEvent("round_freeze_end", Event_Round, EventHookMode_PostNoCopy);
}

public void Event_Round(Event event, const char[] name, bool dontBroadcast)
{
    bFreezeTime = name[6] == 's'
}

public Action OnPlayerRunCmd(int iClient, int &iButtons, int &iImpulse)
{
    if(bFreezeTime || !iButtons || !IsPlayerAlive(iClient) || g_bDelay[iClient] || !g_bInUse[iClient] || GetEntityMoveType(iClient) & MOVETYPE_LADDER)
        return Plugin_Continue;
}
 

leon97leon

Участник
Сообщения
75
Реакции
9
тогда примерно так:
C-подобный:
bool bFreezeTime;

public void OnPluginStart()
{
    HookEvent("round_start", Event_Round, EventHookMode_PostNoCopy);
    HookEvent("round_freeze_end", Event_Round, EventHookMode_PostNoCopy);
}

public void Event_Round(Event event, const char[] name, bool dontBroadcast)
{
    bFreezeTime = name[6] == 's'
}

public Action OnPlayerRunCmd(int iClient, int &iButtons, int &iImpulse)
{
    if(bFreezeTime || !iButtons || !IsPlayerAlive(iClient) || g_bDelay[iClient] || !g_bInUse[iClient] || GetEntityMoveType(iClient) & MOVETYPE_LADDER)
        return Plugin_Continue;
}
Мне надо чтобы return Plugin_Continue; выполняется после конца freezetime
Сообщения автоматически склеены:

тогда примерно так:
C-подобный:
bool bFreezeTime;

public void OnPluginStart()
{
    HookEvent("round_start", Event_Round, EventHookMode_PostNoCopy);
    HookEvent("round_freeze_end", Event_Round, EventHookMode_PostNoCopy);
}

public void Event_Round(Event event, const char[] name, bool dontBroadcast)
{
    bFreezeTime = name[6] == 's'
}

public Action OnPlayerRunCmd(int iClient, int &iButtons, int &iImpulse)
{
    if(bFreezeTime || !iButtons || !IsPlayerAlive(iClient) || g_bDelay[iClient] || !g_bInUse[iClient] || GetEntityMoveType(iClient) & MOVETYPE_LADDER)
        return Plugin_Continue;
}
Спасибо большое.
 
Сверху Снизу