Respawn игроков после смерти

Ponimau

Участник
Сообщения
101
Реакции
2
Приветствую, как можно реализовать , чтобы игроки после смерти возрождались ещё 1 раз? (CS GO)
Если где-то и есть плагин, то найти не смог. Также, нашёл тему, где говорится о mp_respawn_on_death_t 1 и mp_respawn_on_death_ct 1 , но мне нужен лимит для возрождений.
 

RudikS

Участник
Сообщения
130
Реакции
61
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);
    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RespawnPlayer(any userId)
{
    int iClient = GetClientOfUserId(userId);
    if(iClient == 0)
    {
        return;
    }
   
    CS_RespawnPlayer(iClient);
}
 
Последнее редактирование:

Ponimau

Участник
Сообщения
101
Реакции
2
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);
    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RespawnPlayer(any userId)
{
    int iClient = GetClientOfUserId(userId);
    if(iClient == 0)
    {
        return;
    }
 
    CS_RespawnPlayer(iClient);
}
Не работает, версия игры CS GO.
 

.endme

/exit
Сообщения
243
Реакции
24
Добрый день, если я правильно Вас понял, то поиск в гугле дал результат и вот ответ на Ваш вопрос.
Чуть расширенная версия, может пригодится:

  • sm_ar_timer Время от начала раунда. Если 0, то бесконечно. [60]
  • sm_ar_team Возрождаемая команда. 1 - Все | 2 - T | 3 - CT. [1]
  • sm_ar_count Кол-во возрождений. Если 0, то бесконечно. [0]

P.S Автор не я, ответ копипаст от @Someone
 

Вложения

  • AutoRespawn.smx
    5.2 КБ · Просмотры: 8
  • AutoRespawn.sp
    2.8 КБ · Просмотры: 18

RudikS

Участник
Сообщения
130
Реакции
61
Не работает, версия игры CS GO.
Вот так будет. Но лучше взять предложенный плагин выше.
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
    HookEvent("player_death", PlayerDeath_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);

    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RespawnPlayer(any userId)
{
    int iClient = GetClientOfUserId(userId);
    if(iClient == 0)
    {
        return;
    }

    CS_RespawnPlayer(iClient);
}
 

Ponimau

Участник
Сообщения
101
Реакции
2
Добрый день, если я правильно Вас понял, то поиск в гугле дал результат и вот ответ на Ваш вопрос.


P.S Автор не я, ответ копипаст от @Someone
На cs go не работает данный плагин
Сообщения автоматически склеены:

Вот так будет. Но лучше взять предложенный плагин выше.
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
    HookEvent("player_death", PlayerDeath_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);

    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RespawnPlayer(any userId)
{
    int iClient = GetClientOfUserId(userId);
    if(iClient == 0)
    {
        return;
    }

    CS_RespawnPlayer(iClient);
}
А вот это работает, мерси
Сообщения автоматически склеены:

Вот так будет. Но лучше взять предложенный плагин выше.
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
    HookEvent("player_death", PlayerDeath_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);

    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RespawnPlayer(any userId)
{
    int iClient = GetClientOfUserId(userId);
    if(iClient == 0)
    {
        return;
    }

    CS_RespawnPlayer(iClient);
}
Только можно как-то реализовать, чтобы когда раунд закончился , то человека не воскрешало после окончания раунда?
 
Последнее редактирование:

RudikS

Участник
Сообщения
130
Реакции
61
На cs go не работает данный плагин
Сообщения автоматически склеены:


А вот это работает, мерси
Сообщения автоматически склеены:


Только можно как-то реализовать, чтобы когда раунд закончился , то человека не воскрешало после окончания раунда?
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];
bool g_bRoundEnd;

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
    HookEvent("round_end", RoundEnd_Event);
    HookEvent("player_death", PlayerDeath_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);

    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    g_bRoundEnd = false;

    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RoundEnd_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    g_bRoundEnd = true;
}

public void RespawnPlayer(any userId)
{
    if(!g_bRoundEnd)
    {
        int iClient = GetClientOfUserId(userId);
        if(iClient == 0)
        {
            return;
        }

        CS_RespawnPlayer(iClient);
    }
    
}
 

Ponimau

Участник
Сообщения
101
Реакции
2
C-подобный:
#include <cstrike>

bool g_bRespPlayer[MAXPLAYERS+1];
bool g_bRoundEnd;

public void OnPluginStart()
{
    HookEvent("round_start", RoundStart_Event);
    HookEvent("round_end", RoundEnd_Event);
    HookEvent("player_death", PlayerDeath_Event);
}

public void PlayerDeath_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    int userId = event.GetInt("userid");
    int iClient = GetClientOfUserId(userId);

    if(!g_bRespPlayer[iClient])
    {
        RequestFrame(RespawnPlayer, userId);
        g_bRespPlayer[iClient] = true;
    }

}

public void RoundStart_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    g_bRoundEnd = false;

    for(int i = 1; i <= MaxClients; i++)
    {
        g_bRespPlayer[i] = false;
    }
}

public void RoundEnd_Event(Event event, const char[] sEvName, bool bDontBroadcast)
{
    g_bRoundEnd = true;
}

public void RespawnPlayer(any userId)
{
    if(!g_bRoundEnd)
    {
        int iClient = GetClientOfUserId(userId);
        if(iClient == 0)
        {
            return;
        }

        CS_RespawnPlayer(iClient);
    }
   
}
Спасибо, всё чётко
 
Сверху Снизу