Special Team Balancer 0.6.0

Особая Балансировка Команд

  1. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    Последнее редактирование: 14 фев 2016
  2. CR966

    CR966

    Сообщения:
    3
    Симпатии:
    1
    Не работает исключение админ-флагов из баланса. У меня флаг z, я его в квар прописал, однако меня все равно перекидывает при балансировке.
     
  3. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    Проблема известная у всех, кто прописал себя в SourceBans'е, а также ещё где-либо криво, не по стандартам SM. Тут я не помощник - у кого работает, у кого нет. Оффтоп
     
  4. Junkie

    Junkie

    Сообщения:
    7
    Симпатии:
    0
    А можно написать подробней в чем нестандартность этой балансировки?
     
  5. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    На данный момент: балансировка только мёртвых игроков, если их не хватает - первых попавшихся живых (т.е. не так уж часто одних и тех же будет балансировать), фильтрация админов (по квару) и собственно адекватная (качественная) балансировка под самый конец раунда.
     
  6. Junkie

    Junkie

    Сообщения:
    7
    Симпатии:
    0
    А выбор игроков для балансировки происходит случайным образом? Если да, то можно сделать опцию чтоб в первую очередь перекидывало тех кто только недавно подключился? Так же как это сделано в плагине с резервными слотами(sm_reserve_kicktype).
     
  7. strange_night

    strange_night

    Сообщения:
    5
    Симпатии:
    0
    L 06/27/2016 - 21:42:29: [AutoBalans.smx] Mode simplified balancing (ConVar "mp_round_restart_delay" not found).
     
  8. HooLIGUN

    HooLIGUN

    Сообщения:
    748
    Симпатии:
    126
    Попробуй в конфигах указать квар mp_round_restart_delay
     
  9. strange_night

    strange_night

    Сообщения:
    5
    Симпатии:
    0
    на ксс стим негде не прописан этот квар, и ошибок нету.
    на 34 также негде не прописан квар, а ошибки есть.
     
  10. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    Потому что он существует.
    Потому что его не существует, но плагин может работать и без него в упрощённом режиме.
     
  11. strange_night

    strange_night

    Сообщения:
    5
    Симпатии:
    0
    прописал в sourcemod.cfg
    mp_round_restart_delay 1
    все равно эроррит.
     
  12. gibs

    gibs Фитиль народного волненья

    Сообщения:
    538
    Симпатии:
    137
    @AlmazON, скачал исходник и ужаснулся. Можно ведь нормально и читаемо писать, что это за безобразие? И такое грязное бельё ты показываешь людям?
    Старайся не экономить на символах, читаемость играет не мало важную роль.
    ЗЫ: ты примерно так пытался сделать?
     

    Вложения:

    • balance.sp
      Размер файла:
      3,1 КБ
      Просмотров:
      6
    • balance.smx
      Размер файла:
      5,6 КБ
      Просмотров:
      0
    Серый™ нравится это.
  13. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    Повторить чужой код в большинстве моментов и подписать чисто собой? Ну уж нет.
    PHP:
    for (int client 1client <= MaxClientsclient++)
    А пост-инкремент никак изменить на до-инкремент?
    PHP:
    for (int client 1client <= MaxClients; ++client)
    И тут же сразу:
    Код:
    for (int client = 1;
    Кто-то запрещает использовать уже созданную переменную и дальше, вместо того, чтобы плодить новые?
    Код:
    char[] szFlags = new char[32];
    Количество всех админ-флагов составляет 21. Так почему размерность массива аж 32? Сразу бы на 50-100 загнать, чего уж там - пусть время тратится на создание больших массивов, да ещё на новом синтаксисе (нет decl)!
    Да и вообще:
    Код:
    char[] szFlags = new char[32];
    g_Cvar_AdminFlags.GetString(szFlags, 32);
    int flags = ReadFlagString(szFlags);
    Зачем заранее делать столько действий, когда по условиям далее, они могут так и не пригодиться? Сокращение кода? Едва ли оно оправдано.
    Код:
    for (j = rand; j < total; j++)
                    clients[j] = clients[j + 1];
    От этого "оригинального" "перетягивания" переменных из-за свободной (использованной) ячейки я вообще "балдею". :mosking:
    Во всех попытках баланса насчитывается аж 4 цикла! Кто больше? :biggrin:
    Код:
    else
                {
                    CS_SwitchTeam(clients[rand], CS_TEAM_T);
                    to_move--;
                }
               
                total--;
                for (j = rand; j < total; j++)
                    clients[j] = clients[j + 1];
    to_move уже может быть нулевым, но нет, мы продолжаем цикл и проверим это аж после выполнения второго цикла.
    При такой то читаемости столько банальных огрехов? Нет уж, спасибо.
     
    Последнее редактирование: 28 июн 2016
  14. strange_night

    strange_night

    Сообщения:
    5
    Симпатии:
    0
    что по моему вопросу?
     
  15. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    Ответ уже был дан:
    Самого квара не существует в CS:S v34! Хоть везде пропиши - от этого он не появится, значение "пустоте" не установить.
    Всё же ясно написано: ошибка - просто предупреждение, что переброс будет выполняться заранее. Это упрощённый режим, предусмотренный плагином.
     
  16. strange_night

    strange_night

    Сообщения:
    5
    Симпатии:
    0
    просто после каждой смены карты, будет эроррить
     
  17. gibs

    gibs Фитиль народного волненья

    Сообщения:
    538
    Симпатии:
    137
    @AlmazON, эти замечания слышать просто невероятно смешно от автора плагина из шапки. Я это писал на скорую руку, а ты тот "оптимизированный код" умудрился выложить и назвать это плагином. Замечание про инкримент в третьем выражении фора вообще улыбнуло, так как нету ни малейшей разницы с какой стороны ты там ставишь плюсики. Это выражение выполняется после каждого обхода цикла, в определённый момент, и результат до и пост инкрементирования всегда будет одинаковый.
    Я создаю счётчики в теле фора, мне так больше нравится. Расскажи мне как много это жрёт оперативки и как сервер начинает от этого дымиться.
    Размер 32 потому, что поставил от фонаря, лишь бы хватило.
    На счёт перетягивания - это своебразное удаление элемента массива, так как перемещение выполняется рандомно.
    Вообще каждое "замечание" скорее нелепое, хоть и писалось с серьезным выражением лица. Эта функция выполняется один раз за раунд, она не является сверх нагруженной и тот бред, который у вас принято называть громким словом "оптимизация" в данном случае не может быть актуальным.
    Хочешь я покажу тебе грех?) Смотри))
    PHP:
    PTB()
    {
        new 
    i=MaxClientsab;
        do if(
    IsClientInGame(i)) switch(GetClientTeam(i))
        {
            case 
    CS_TEAM_T:++a;
            case 
    CS_TEAM_CT:++b;
        }while(--
    i);
        if((
    a=(a-b)/2))
        {
            
    MaxClients;
            if(
    <a)
            {
                
    decl c[a];
                do if(
    IsClientInGame(b))
                {
                    if(
    a) if(GetClientTeam(b)==CS_TEAM_T) if(bP[b]) if(IsPlayerAlive(b))
                    {
                        if(
    a>ic[i++] = b;
                    }else
                    {
                        
    CS_SwitchTeam(bCS_TEAM_CT);
                        --
    a;
                    }
    PrintToChat(b"\x01 \x04[Автобаланс] \x01Лишние игроки команды \x03Террористов \x05перемещены\x01.");
                }while(--
    b);
                while(
    a--) CS_SwitchTeam(c[a], CS_TEAM_CT);
            }else
            {
                
    decl c[a=-a];
                do if(
    IsClientInGame(b))
                {
                    if(
    a) if(GetClientTeam(b)==CS_TEAM_CT) if(bP[b]) if(IsPlayerAlive(b))
                    {
                        if(
    a>ic[i++] = b;
                    }else
                    {
                        
    CS_SwitchTeam(bCS_TEAM_T);
                        --
    a;
                    }
    PrintToChat(b"\x01 \x04[Автобаланс] \x01Лишние игроки команды \x03Контр-террористов \x05перемещены\x01.");
                }while(--
    b);
                while(
    a--) CS_SwitchTeam(c[a], CS_TEAM_T);
            }
        }
    Нет, это не грех, это банальное рукоблудие, безобразие. Тяжело подобрать слово. Так писать нельзя.
     
  18. gibs

    gibs Фитиль народного волненья

    Сообщения:
    538
    Симпатии:
    137
    @AlmazON, знаешь, я тебя немного не понимаю. По плагину реально видно, что он писался на скорую руку по-твоему плагину, и был направлен лишь на то, чтобы изобразить читаемость кода. Про инкремент я сказал конкретно для данного случая, и его выполнения в третьем выражении фора. Я даже процитирую, что я именно это имел ввиду.
    Ты мне реально рассказываешь о "нагрузке" из-за объявления переменной инт в 4 байта, которая живёт только в теле цикла? А ну давай ко подкрепи это графиками, статистикой и т.д.. Интересно как просядет sv сервера от такой моей халтуры.
    Вы вообще вкуриваете что такое оптимизация, как она проводится и когда к ней следует прибегать?
    Если вот это, что ты написал, является результатом "оптимизации", то на продакшине тебя просто забьют лопатой.
     
  19. AlmazON

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

    Сообщения:
    4.540
    Симпатии:
    1.984
    Тогда почему автор только ты?)
    Зачем оправдываться, если все мои замечания "нелепы"? Всё-таки поддело, что огрехи реальны?)
    Видишь, признался. А если напишем тяжёлый мод и посмотрим, как от тысячи строк и сотни таких халтур в нём, сервер дойдёт до заметных фризов на слабом оборудовании? А если плагинов с халтурой ещё сотня? Так каждая "капля" делает лужу, в которую и вляпаешься.
    Оффтоп
    В общем, давай по делу. То, как объявлены переменные и вызовы - личное дело каждого, просто стиль. Можешь перейти на личности, назвав это - стиль написания плагинов "AlmazON". :ab:
     
  20. gibs

    gibs Фитиль народного волненья

    Сообщения:
    538
    Симпатии:
    137
    @AlmazON, ну то, что ты меня немного потролил не отменяет того, что то, что ты называешь своим стилем больше смахивает на помойку. Оно не читаемо и убого. А по скольку ты выкладываешь это, то моё замечание уместно, и тебе следует исправляться.
    И дело не только в объявлении переменных, которые у тебя носят имена abc, а почти во всём. В составлении тела функций, отступах и тд.