Иконка ресурса

Special Team Balancer 0.6.0

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #1
Последнее редактирование:

CR966

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #3
Не работает исключение админ-флагов из баланса
Проблема известная у всех, кто прописал себя в SourceBans'е, а также ещё где-либо криво, не по стандартам SM. Тут я не помощник - у кого работает, у кого нет. Оффтоп
 

Junkie

Участник
Сообщения
18
Реакции
0
А можно написать подробней в чем нестандартность этой балансировки?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #5
в чем нестандартность этой балансировки
На данный момент: балансировка только мёртвых игроков, если их не хватает - первых попавшихся живых (т.е. не так уж часто одних и тех же будет балансировать), фильтрация админов (по квару) и собственно адекватная (качественная) балансировка под самый конец раунда.
 

Junkie

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

strange_night

Участник
Сообщения
5
Реакции
0
L 06/27/2016 - 21:42:29: [AutoBalans.smx] Mode simplified balancing (ConVar "mp_round_restart_delay" not found).
 

strange_night

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #10
негде не прописан этот квар, и ошибок нету
Потому что он существует.
на 34 также негде не прописан квар, а ошибки есть
Mode simplified balancing (ConVar "mp_round_restart_delay" not found)
Потому что его не существует, но плагин может работать и без него в упрощённом режиме.
 

gibs

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

Вложения

  • balance.sp
    3.1 КБ · Просмотры: 65
  • balance.smx
    5.6 КБ · Просмотры: 23

AlmazON

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #15
что по моему вопросу?
Ответ уже был дан:
его не существует, но плагин может работать и без него в упрощённом режиме
прописал в sourcemod.cfg
mp_round_restart_delay 1
Самого квара не существует в CS:S v34! Хоть везде пропиши - от этого он не появится, значение "пустоте" не установить.
Всё же ясно написано: ошибка - просто предупреждение, что переброс будет выполняться заранее. Это упрощённый режим, предусмотренный плагином.
 

strange_night

Участник
Сообщения
5
Реакции
0
просто после каждой смены карты, будет эроррить
 

gibs

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

gibs

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
  • Автор ресурса
  • #19
писался на скорую руку по-твоему плагину
Тогда почему автор только ты?)
был направлен лишь на то, чтобы изобразить читаемость кода
Зачем оправдываться, если все мои замечания "нелепы"? Всё-таки поддело, что огрехи реальны?)
как просядет sv сервера от такой моей халтуры
Видишь, признался. А если напишем тяжёлый мод и посмотрим, как от тысячи строк и сотни таких халтур в нём, сервер дойдёт до заметных фризов на слабом оборудовании? А если плагинов с халтурой ещё сотня? Так каждая "капля" делает лужу, в которую и вляпаешься.
Оффтоп
В общем, давай по делу. То, как объявлены переменные и вызовы - личное дело каждого, просто стиль. Можешь перейти на личности, назвав это - стиль написания плагинов "AlmazON". :ab:
 

gibs

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