/

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Всем привет
Про то что можно изменить делей перед началом нового раунда - я знаю, меня интересует немного другое
Можно ли поставить 2 разных времени, например 7 секунд когда в двух командах есть ещё живые игроки, и 1 секунда когда есть живые игроки только в одной команде?

C-подобный:
public void OnPluginStart()
{
    HookEvent("round_end", evr, EventHookMode_Pre);
}

public void evr(Event hEv, const char[] sEv, bool bdb)
{
    int ct = 0, t = ct;
    for(int i = 1; i <= MaxClients; i++)
    {
        if(IsClientInGame(i) && !IsFakeClient(i) && IsPlayerAlive(i) && GetClientTeam(i) > 1)
            GetClientTeam(i) == 3 ? ct++ : t++;
    }
    SetConVarInt(FindConVar("mp_round_restart_delay"), (ct == 0 && t > 0 || t == 0 && ct > 0) ? 1 : 7);
}

UPD:
C-подобный:
#include <cstrike>

public Action CS_OnTerminateRound(float& delay, CSRoundEndReason& reason)
{
    int ct = 0, t = ct;
    for(int i = 1; i <= MaxClients; i++)
        if(IsClientInGame(i) && !IsFakeClient(i) && IsPlayerAlive(i) && GetClientTeam(i) > 1)
            GetClientTeam(i) == 3 ? ct++ : t++;
 
    delay = (ct == 0 && t > 0 || t == 0 && ct > 0) ? 1.0 : 7.0;
    return Plugin_Changed;
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Palonez, может было бы проще не через отлов события и квар?
1682691727756.png
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
только не delay = (ct == 0 && t > 0 || t == 0 && ct > 0) ? 1 : 7;, а delay = (!ct && t > 0 || !t && ct > 0) ? 1.0 : 7.0;, потому что delay - это float

Я бы вот примерно так сделал:
C-подобный:
#include <cstrike>

public Action CS_OnTerminateRound(float &delay, CSRoundEndReason &reason)
{
    if(reason == CSRoundEnd_GameStart)
        return Plugin_Continue;

    int ct, t;
    for(int i = 1, team; i <= MaxClients; i++)
        if(IsClientInGame(i) && !IsFakeClient(i) && (team = GetClientTeam(i)) > 1 && IsPlayerAlive(i))
        {
            team == 3 ? ct++ : t++;
            if(t && ct) break;
        }

    delay = !ct || !t ? 1.0 : 7.0;
    return Plugin_Changed;
}
 
Сверху Снизу