Анти-Возрождение на mg картах.

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем Павел 01, 1 авг 2015.

  1. Павел 01

    Павел 01

    Сообщения:
    72
    Симпатии:
    1
    Ищу такой плагин чтобы не возможно было возродится повторно в одном раунде одному игроку. Или только можно было через отдельный плагин на возрождение.
     
  2. максимка27

    максимка27

    Сообщения:
    517
    Симпатии:
    170
    Павел 01, пробуй
     

    Вложения:

    • AntiReSpawn.zip
      Размер файла:
      4,4 КБ
      Просмотров:
      11
    Павел 01 нравится это.
  3. Павел 01

    Павел 01

    Сообщения:
    72
    Симпатии:
    1
    максимка27, работает. Но сторонними плагинами не возродить.
     
  4. -->KENT<--

    -->KENT<-- FANAT FARAONA

    Сообщения:
    145
    Симпатии:
    18
    Актуально! нужен плагин для мг чтобы при перезаходе не спавнило. Плагин Antirespawn от ws работает но не спавнит от другого плагина. У меня в начале стоит 5 минут респавн.
     
  5. ludanik

    ludanik

    Сообщения:
    59
    Симпатии:
    13
    @-->KENT<--, можно сделать к твоему плагину который воскрешает в течение 5 минут, а потом нет. Дополнение: что если игрок перезашел после того как автовоскрешение истекло, то убиваем его.

    Как достаточно нормальный пример. Суть: игрок вышел и если он перезайдет на сервер его убьет. переменная bool сбрасывается когда закончилась карта или раунд.

    Код:
    #pragma semicolon 1
    #include <sdktools_functions>
    #pragma newdecls required
    
    bool bAntiReconnect[MAXPLAYERS + 1];
    
    public void OnPluginStart() {
        HookEventEx("player_spawn", Event_PlayerSpawn, EventHookMode_Pre);
        HookEventEx("round_end", Event_RoundEnd);
    }
    
    public void OnClientDisconnect(int client) {
        bAntiReconnect[client] = false;
    }
    
    void Reset_Variable() {
        for (int i = 1; i <= MaxClients; i++) bAntiReconnect[i] = false;
    }
    
    public void OnMapEnd() {
        Reset_Variable();
    }
    
    public void Event_RoundEnd(Event event, const char[] name, bool db) {
        Reset_Variable();
    }
    
    public void Event_PlayerSpawn(Event event, const char[] name, bool db) {
        int client = GetClientOfUserId(event.GetInt("userid"));
        if (bAntiReconnect[client]) ForcePlayerSuicide(client);
    }
    --- Добавлено позже ---
    @-->KENT<--, адаптировал под тот код который ты мне скинул.
    Код:
    #pragma semicolon 1
    
    #include <cstrike>
    #include <csgo_colors>
    #include <sdktools_functions>
    
    new Handle:Respawn_Timer,
        Handle:RespawnTime,
        bool:bAntiReconnect[MAXPLAYERS + 1];
    
    public OnPluginStart()
    {
        RespawnTime = CreateConVar("minigame_time", "300", "Respawn time");
       
        HookEvent("round_start", Round_Start, EventHookMode_PostNoCopy);
        HookEvent("round_end", Round_End, EventHookMode_PostNoCopy);
        HookEvent("player_death", Player_Death);
        HookEventEx("player_spawn", Event_PlayerSpawn, EventHookMode_Pre);
    }
    public Round_Start(Handle:event, const String:name[], bool:dontBroadcast)
    {
        if (Respawn_Timer != INVALID_HANDLE) KillTimer(Respawn_Timer);
       
        Respawn_Timer = CreateTimer(float(GetConVarInt(RespawnTime)), StopTimer);
        new Var_Sec = GetConVarInt(RespawnTime);
        CGOPrintToChatAll("{RED}[MiniGame]: {GREEN}Если в умрёте в течении %i сек, вы будете возрождены!", Var_Sec);
    }
    public Player_Death(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        if (Respawn_Timer != INVALID_HANDLE && !bAntiReconnect[client]) CreateTimer(1.0, TimerRespawn, client);
    }
    public Round_End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        Reset_Variable();
       
        if (Respawn_Timer != INVALID_HANDLE)
        {
            KillTimer(Respawn_Timer);
            Respawn_Timer = INVALID_HANDLE;
        }
    }
    public Action:StopTimer(Handle:timer)
    {
        Respawn_Timer = INVALID_HANDLE;
    }
    public Action:TimerRespawn(Handle:timer, any:client)
    {
        if (IsClientInGame(client) && !IsPlayerAlive(client) && GetClientTeam(client) > 1)
        {
            CS_RespawnPlayer(client);
            CGOPrintToChat(client, "{RED}[MiniGame]: {GREEN}Вы были возрождены!");
        }
    }
    
    public OnClientDisconnect(client) {
        bAntiReconnect[client] = false;
    }
    
    stock Reset_Variable() {
        for (new i = 1; i <= MaxClients; i++) bAntiReconnect[i] = false;
    }
    
    public OnMapEnd() {
        Reset_Variable();
    }
    
    public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        if (bAntiReconnect[client]) ForcePlayerSuicide(client);
    }
     
    Последнее редактирование: 14 ноя 2016
    -->KENT<-- нравится это.
  6. -->KENT<--

    -->KENT<-- FANAT FARAONA

    Сообщения:
    145
    Симпатии:
    18
    Спасибо огромное.