[CS: GO] Плагин/скрипт на большое окно очков всегда.

Тема в разделе "Требуется", создана пользователем Dreizehnt, 5 июл 2016.

  1. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Вообщем, существует ошибка, когда происходит смена сторон на сервере (mp_halftime 1), то рушится таблица очков ("scoreboard"), т.е. 5 игроков отображает, а остальные наплывают на само окно. Расширяется окно, когда много игроков на сервере и то не всегда. Возможно удастся создать плагин, который бы сообщал окну, что на сервере много игроков и давай расширяться, даже при нескольких, например.
     
  2. Drumanid

    Drumanid Дилетант

    Сообщения:
    568
    Симпатии:
    194
    Сделай обычный режим, но тогда и mp_halftime не будет работать...
    Оффтоп
     
  3. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Ставил обычный там тоже ломается... Вэлв же рассчитало так, что их сервера забиваются битком всегда, а на обычные сервера не подумали...
     
  4. Drumanid

    Drumanid Дилетант

    Сообщения:
    568
    Симпатии:
    194
    Выключи mp_halftime и все будет нормально, сам с этим долго мучался.
     
  5. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Я то выключил, про это знаю, но смена сторон нужна вообще)
    --- Добавлено позже ---
    Может есть плагин на смену сторон, без "халфтайм"?
     
  6. 666pro

    666pro

    Сообщения:
    152
    Симпатии:
    14
    Поддерживаю , такая же проблема.
    Нужна смена сторон как-бы.
     
  7. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.721
    Симпатии:
    461
    В чём проблема пройтись циклом по всем игрокам и просто изменить им команду в конце N-го раунда?
    --- Добавлено позже ---
    PHP:
    #include <cstrike>

    public Plugin:myinfo =
    {
        
    name "HalfTime Replacer",
        
    author "Danyas"
    }

    new 
    iNumRound;

    public 
    OnPluginStart()
    {
        
    HookEvent("round_end"Event_Round_EndEventHookMode_PostNoCopy);
    }

    public 
    Event_Round_End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        if (++
    iNumRound == 10)
        {
            
    iNumRound 0;
            for(new 
    1<= MaxClientsi++)
            {
                new 
    team GetClientTeam(i);
                if(
    IsClientInGame(i) && team == 3)
                {
                    
    CS_SwitchTeam(i2);
                }
                else if(
    IsClientInGame(i) && team == 2)
                {
                    
    CS_SwitchTeam(i3);
                }
            }
        }
    }
     
  8. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Так смена команд будет каждые 10 раундов. Оффтоп А если так и нужно, то при более ранней смене карты (rtv или админом) счёт нарушится и замена наступит куда раньше.
    Оффтоп
     
  9. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.721
    Симпатии:
    461
    Слепое написание подьехало
    PHP:


    #include <cstrike>

    public Plugin:myinfo 
    {
        
    name "HalfTime Replacer",
        
    author "Danyas"
    }

    new 
    iNumRound;
    new 
    iTargRound;
    new 
    Handle:hRounds;

    public 
    OnPluginStart()
    {
        
    HookEvent("round_end"Event_Round_EndEventHookMode_PostNoCopy);
        
    hRounds FindConVar("mp_maxrounds");
        if (
    hRounds == INVALID_HANDLESetFailState("somethink wrong");
        else 
        {
            
    iTargRound GetConVarInt(hRounds) / ;
        }
    }

    public 
    Event_Round_End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        if (++
    iNumRound == iTargRound)
        {
            
    iNumRound 0;
            for(new 
    1<= MaxClientsi++)
            {
                if(
    IsClientInGame(i))
                {
                    new 
    team GetClientTeam(i);
                    if(
    team == 3)
                    {
                        
    CS_SwitchTeam(i2);
                    }
                    else if(
    team == 2)
                    {
                        
    CS_SwitchTeam(i3);
                    }
                }
            }
        }
    }
     
  10. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Проверил первый вариант сейчас, работает, спасибо)) Только происходит молниеносно, могу попросить добавить сообщение в чат о смене сторон, может паузу маленькую или это осложнит?
     
  11. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.721
    Симпатии:
    461
    Перед iNumRound = 0;
    добавляешь одно из (а можешь и всё сразу)
    PrintToChatAll("Смена сторон"); // Вывод в чате
    PrintCenterTextAll("Смена сторон"); // Вывод в окне снизу
     
  12. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Спасибо)) Ещё такой вопросик, команды сменились, а очки команд остались на месте, это уже не сменить, да?
     
  13. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.721
    Симпатии:
    461
    PHP:


    #include <cstrike>

    public Plugin:myinfo 
    {
        
    name "HalfTime Replacer",
        
    author "Danyas"
    }

    new 
    iNumRound;
    new 
    iTargRound;
    new 
    Handle:hRounds;

    public 
    OnPluginStart()
    {
        
    HookEvent("round_end"Event_Round_EndEventHookMode_PostNoCopy);
        
    hRounds FindConVar("mp_maxrounds");
        if (
    hRounds == INVALID_HANDLESetFailState("somethink wrong");
        else 
        {
            
    iTargRound GetConVarInt(hRounds) / ;
        }
    }

    public 
    Event_Round_End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        if (++
    iNumRound == iTargRound)
        {
            new 
    tempscoret GetTeamScore(2);
            new 
    tempscorect GetTeamScore(3);
           
            
    SetTeamScore(3tempscoret);
            
    SetTeamScore(2tempscorect);
           
            
    PrintToChatAll("Смена сторон");
            
    PrintCenterTextAll("Смена сторон");       
            
    iNumRound 0;
            for(new 
    1<= MaxClientsi++)
            {
                if(
    IsClientInGame(i))
                {
                    new 
    team GetClientTeam(i);
                    if(
    team == 3)
                    {
                        
    CS_SwitchTeam(i2);
                    }
                    else if(
    team == 2)
                    {
                        
    CS_SwitchTeam(i3);
                    }
                }
            }
        }
    }
     
    Dreizehnt нравится это.
  14. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Благодарю, вроде бы всё что хотел :D
    --- Добавлено позже ---
    Теперь с ошибкой компилируется.. Возможно с ошибкой написаны функции?
    Оффтоп
     
    Последнее редактирование: 10 июл 2016
  15. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Ничего так не выйдет. Очки сбросятся на обычные уже в следующем раунде.
    А в том же цикле, где стороны меняешь - никак сделать?)
     
  16. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.721
    Симпатии:
    461
    Сделал что бы было понятней.

    А почему через SetTeamScore ничего не выйдет? Из-за особенностей кысыго?
     
  17. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Вроде того. Игра сохраняет их и устанавливает заново. Поэтому, лучше тогда просто:
    PHP:
    #include <cstrike>

    public Plugin:myinfo =
    {
        
    name "HalfTime Replacer",
        
    author "Danyas"
    }

    new 
    iNumRound;
    new 
    iTargRound;

    public 
    OnPluginStart()
    {
        
    decl Handle:hRounds;
        if ((
    hRounds FindConVar("mp_maxrounds")) == INVALID_HANDLESetFailState("somethink wrong");
        
    HookEvent("round_end"Event_Round_EndEventHookMode_PostNoCopy);
        
    iTargRound GetConVarInt(hRounds) / 2;
        
    HookConVarChange(hRoundsChange_CvarRounds);
    }

    public 
    Change_CvarRounds(Handle:hRoundsString:oldValue[], String:newValue[]) iTargRound GetConVarInt(hRounds) / 2;

    public 
    OnConfigsExecuted() iNumRound 0;

    public 
    Event_Round_End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        if (++
    iNumRound == iTargRound)
        {
            for (new 
    1<= MaxClients; ++i)
            {
                if (
    IsClientInGame(i))
                {
                    switch (
    GetClientTeam(i))
                    {
                        case 
    3:
                        {
                            
    CS_SwitchTeam(i2);
                            
    //PrintToChat(i, "Вы перемещены за команду Т.");
                        
    }
                        case 
    2:
                        {
                            
    CS_SwitchTeam(i3);
                            
    //PrintToChat(i, "Вы перемещены за команду КТ.");
                        
    }
                    }
                    
    PrintCenterText(i"Смена сторон!");
                    
    PrintToChat(i"Смена сторон!");
                }
            }
        }
    }
    В этом варианте есть особенность (в плюс или минус): если смена сторон уже была, а квар изменился в большую сторону, то смена сторон может произойти ещё раз по новому значению. Оффтоп
     
  18. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Теперь с ошибкой компилируется.. Возможно с ошибкой написаны
    Оффтоп
    Спасибо в очередной раз, работает как мне показалось, надо только убедиться, но у меня на 15 раунде смена, не скоро это)))
     
  19. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.566
    Симпатии:
    1.988
    Вбей квар mp_maxrounds в консоль сервера на маленькое значение и плагин сработает. Потом на обычное - опять сработает. В отличии от варианта @Danyas, этот будет слушаться квара в "онлайн"-режиме.
     
  20. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    627
    Симпатии:
    204
    Сейчас ничего не менял, так же на 15 отследил, но теперь счет команд не перенесся.