AutoBalance Universal Edition

AutoBalance Universal Edition 1.1.2

w0hderful

Участник
Сообщения
131
Реакции
27
добавить бы автобаланс по званиям LR (Level Ranks), было бы вообще шикардос!
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #23
добавить бы автобаланс по званиям LR (Level Ranks), было бы вообще шикардос!
Я учел ваше предложение, обещаю как только будет больше свободного времени, выпущу патч и включу не только ЛР 😉
 

Z-RAY-Z

Участник
Сообщения
775
Реакции
243
Я учел ваше предложение, обещаю как только будет больше свободного времени, выпущу патч и включу не только ЛР
Такими темпами ваш плагин станет подобием NotJustin/SkillAutoBalance
Пользуясь случаем попрошу добавить автобаланс по-уровню SMRPG peace-maker/smrpg
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #25
Такими темпами ваш плагин станет подобием NotJustin/SkillAutoBalance
Пользуясь случаем попрошу добавить автобаланс по-уровню SMRPG peace-maker/smrpg
Хм, прикольно. Ближе к Новому Году займусь этим, добавлю все возможные (невозможные) модули и сделаю полноценное ядро. Сейчас, могу только прикидывать планы и накидывать костыли ;)
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #26
DENFER обновил(а) ресурс AutoBalance Universal Edition новой записью:

UPDATE 26.11.2020 '1.1.2'

Выкатываю обновление. Фиксанул пару багов, добавил квары, смотрим ниже:

[CVARS]:
1.
Обновлен квар sm_ab_ratio, теперь он может принимать уникальное значение 0 - данное значение нужно, для следующих 3-х кваров.
2. Добавлен квар sm_ab_precise "0" - отвечает за балансирование игроков до определенного отношения, то есть...

Узнать больше об этом обновлении...
 

Felya

Array-based enum structs will be removed in 1.11
Сообщения
208
Реакции
83
Добавил поддержку VIP
Добавлен квар sm_vip_immunity "1" - отвечает за иммунитет для VIP
Так же можно отключить компиляцию строчек связанных с VIP

Параметр в groups.ini:
C-подобный:
"IMautoBalance"   "1"
 

Вложения

  • AutoBalance.smx
    73.2 КБ · Просмотры: 2
  • AutoBalance.sp
    199.8 КБ · Просмотры: 9
Последнее редактирование:

DOVE

GLite Inc.
Сообщения
296
Реакции
54
А "администратор" - это любой игрок имеющий любой флаг админа или только root?
В конфиге есть ограничения на рестарт раунда, игры и т.д. и было бы удобно добавить root флаг в исключение этим запретам
И даже доступ в меню удобно ограничивать по флагу :)
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #29
А "администратор" - это любой игрок имеющий любой флаг админа или только root?
В конфиге есть ограничения на рестарт раунда, игры и т.д. и было бы удобно добавить root флаг в исключение этим запретам
И даже доступ в меню удобно ограничивать по флагу :)
Хорошая идея и я ее учел, в следующем обновление, которое выйдет ближе к выходным на следующей неделе уже будет в деле ☺️ Разобью админ возможности на флаги доступа, т.к. изначально в логику было заложено, чтобы любой администратор имел возможность к балансированию и прочим фишкам с этим.
 

DOVE

GLite Inc.
Сообщения
296
Реакции
54
Хорошая идея и я ее учел, в следующем обновление, которое выйдет ближе к выходным на следующей неделе уже будет в деле ☺️ Разобью админ возможности на флаги доступа, т.к. изначально в логику было заложено, чтобы любой администратор имел возможность к балансированию и прочим фишкам с этим.
Еще бы добавить кулдаун для игрока. А то бывает одного и того же игрока перекидывает по командам
+баг: игрок умирает, его переносит и отменяет смерть. Были даже игроки, у которых -1 смерть
еще при выборе команды пробелом иногда не пускает в команду и пишет "Баланс не позволяет сменить команду"
еще кстати иногда перекидывает админов, хотя в конфиге прописано sm_ab_swap_filter_admin 3
 
Последнее редактирование:

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #31
Еще бы добавить кулдаун для игрока. А то бывает одного и того же игрока перекидывает по командам
+баг: игрок умирает, его переносит и отменяет смерть. Были даже игроки, у которых -1 смерть
еще при выборе команды пробелом иногда не пускает в команду и пишет "Баланс не позволяет сменить команду"
еще кстати иногда перекидывает админов, хотя в конфиге прописано sm_ab_swap_filter_admin 3
Все зависит от выставленных вами параметров в конфиг файле. Насчет КД, установите sm_ab_level = 2, данное значение решит ваши проблемы. Насчет админов гляну, пометил. Можете прикрепить свой файл cfg?
 

DOVE

GLite Inc.
Сообщения
296
Реакции
54
Все зависит от выставленных вами параметров в конфиг файле. Насчет КД, установите sm_ab_level = 2, данное значение решит ваши проблемы. Насчет админов гляну, пометил. Можете прикрепить свой файл cfg?
 

Вложения

  • AutoBalance.cfg
    18.7 КБ · Просмотры: 9

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #33
У вас вполне не плохие настройки, все ваши замечания учел, в ближайшее время выкачу патч 😇
Могу посоветовать на данный момент поставить переменную sm_ab_ratio = 0 и sm_ab_precise = 1, и выставить соответствующие настройки sm_ab_precise_t / sm_ab_precise_ct.
По сути они идентичны, только sm_ab_precise и sm_ab_ratio добавят пару приятных проверок, в отличие от просто sm_ab_ratio = 1. Но, это буквально на время, пока не выкатил обнову.
 
  • Мне нравится
Реакции: DOVE

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
лол
C-подобный:
public int RoundToMath(float number)
{
    float fraction = FloatFraction(number);

    if(fraction >= 0.5)
    {
        return RoundToCeil(number);
    }
    else
    {
        return RoundToFloor(number);
    }
}
же практически эквивалентно RoundToNearest()

C-подобный:
static const float FLOATS[] = {0.1, 0.5, 0.7, 0.0, -0.1, -0.5, -0.7};

public void OnPluginStart()
{
    PrintToServer("\n<compare>")
    for(int i = 0; i < sizeof(FLOATS); i++)
        PrintToServer("%i) %.2f: near = %i, math = %i", i+1, FLOATS[i], RoundToNearest(FLOATS[i]), RoundToMath(FLOATS[i]));
    PrintToServer("</compare>\n")
}

public int RoundToMath(float number)
{
    if(FloatFraction(number) >= 0.5)
        return RoundToCeil(number);
    else return RoundToFloor(number);
}
Выводит вот это:
C-подобный:
<compare>
1) 0.10: near = 0, math = 0
2) 0.50: near = 0, math = 1
3) 0.69: near = 1, math = 1
4) 0.00: near = 0, math = 0
5) -0.10: near = 0, math = 0
6) -0.50: near = 0, math = 0
7) -0.69: near = -1, math = -1
</compare>
Сообщения автоматически склеены:

хм, если не использовать функцию GetCmdArgInt(), то плагин можно компилить хоть на SM1.8
Сообщения автоматически склеены:

Я тут глянул код, немного почистил и код стал на 975 строк (и на 14кБ) меньше. Но там ещё работы - непочатый край
Ну и сделал код совместимым с SM более старым, чем указано в требованиях.

Кстати, у тебя в каллбэке события смены команды (Event_PlayerTeam) ошибка: int oldteam = GetClientOfUserId(GetEventInt(event, "oldteam")); вместо int oldteam = GetEventInt(event, "oldteam");

Там же у тебя сначала идёт проверка на команду игрока , а только после этого проверяется валидность индекса и в игре ли этот игрок.
Интересно, как много ошибок в логе это создаёт?

Нипонил. Как это понимать?! О_о
C-подобный:
GetClientName(i, name, sizeof(name));
FormatEx(name, sizeof(name), "%s [x]", name);
Правильнее же было
C-подобный:
FormatEx(name, sizeof(name), "%N [%s]", i, IsPlayerBannedTeam(i, 0) ? "x" : " ");
Кроме того использовать при форматировании с помощью FormatEx() строковую переменную одновременно как целевую и как параметр для форматирования нельзя, насколько мне известно.
C-подобный:
This is the same as Format(), except none of the input buffers can overlap the same memory as the output buffer. Since this security check is removed, it is slightly faster.
Ещё к чему использовать %T в форматировании, если уже сделал перед этим SetGlobalTransTarget(client);? Используй %t в этом случае.

И ещё я тебе открою страшную тайну (к сожалению, тебя придётся убить после этого, чтобы ты больше никому не рассказал): SetMenuTitle() поддерживает форматирование, в отличии от AddMenuItem(), поэтому не требуется предварительно использовать Format().
C-подобный:
void SetMenuTitle(Handle menu, const char[] fmt, any... ...)
Сообщения автоматически склеены:

И ещё: ты забыл в исходнике версию поменять.
Или залил весию 1.0.0 вместо 1.1.2
 
Последнее редактирование:

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #36
лол
C-подобный:
public int RoundToMath(float number)
{
    float fraction = FloatFraction(number);

    if(fraction >= 0.5)
    {
        return RoundToCeil(number);
    }
    else
    {
        return RoundToFloor(number);
    }
}
же практически эквивалентно RoundToNearest()

C-подобный:
static const float FLOATS[] = {0.1, 0.5, 0.7, 0.0, -0.1, -0.5, -0.7};

public void OnPluginStart()
{
    PrintToServer("\n<compare>")
    for(int i = 0; i < sizeof(FLOATS); i++)
        PrintToServer("%i) %.2f: near = %i, math = %i", i+1, FLOATS[i], RoundToNearest(FLOATS[i]), RoundToMath(FLOATS[i]));
    PrintToServer("</compare>\n")
}

public int RoundToMath(float number)
{
    if(FloatFraction(number) >= 0.5)
        return RoundToCeil(number);
    else return RoundToFloor(number);
}
Выводит вот это:
C-подобный:
<compare>
1) 0.10: near = 0, math = 0
2) 0.50: near = 0, math = 1
3) 0.69: near = 1, math = 1
4) 0.00: near = 0, math = 0
5) -0.10: near = 0, math = 0
6) -0.50: near = 0, math = 0
7) -0.69: near = -1, math = -1
</compare>
Сообщения автоматически склеены:

хм, если не использовать функцию GetCmdArgInt(), то плагин можно компилить хоть на SM1.8
Сообщения автоматически склеены:

Я тут глянул код, немного почистил и код стал на 975 строк (и на 14кБ) меньше. Но там ещё работы - непочатый край
Ну и сделал код совместимым с SM более старым, чем указано в требованиях.

Кстати, у тебя в каллбэке события смены команды (Event_PlayerTeam) ошибка: int oldteam = GetClientOfUserId(GetEventInt(event, "oldteam")); вместо int oldteam = GetEventInt(event, "oldteam");

Там же у тебя сначала идёт проверка на команду игрока , а только после этого проверяется валидность индекса и в игре ли этот игрок.
Интересно, как много ошибок в логе это создаёт?

Нипонил. Как это понимать?! О_о
C-подобный:
GetClientName(i, name, sizeof(name));
FormatEx(name, sizeof(name), "%s [x]", name);
Правильнее же было
C-подобный:
FormatEx(name, sizeof(name), "%N [%s]", i, IsPlayerBannedTeam(i, 0) ? "x" : " ");
Кроме того использовать при форматировании с помощью FormatEx() строковую переменную одновременно как целевую и как параметр для форматирования нельзя, насколько мне известно.
C-подобный:
This is the same as Format(), except none of the input buffers can overlap the same memory as the output buffer. Since this security check is removed, it is slightly faster.
Ещё к чему использовать %T в форматировании, если уже сделал перед этим SetGlobalTransTarget(client);? Используй %t в этом случае.

И ещё я тебе открою страшную тайну (к сожалению, тебя придётся убить после этого, чтобы ты больше никому не рассказал): SetMenuTitle() поддерживает форматирование, в отличии от AddMenuItem(), поэтому не требуется предварительно использовать Format().
C-подобный:
void SetMenuTitle(Handle menu, const char[] fmt, any... ...)
Сообщения автоматически склеены:

И ещё: ты забыл в исходнике версию поменять.
Или залил весию 1.0.0 вместо 1.1.2
Спасибо за такой тщательный разбор, очень приятно, кто-то из опытных ребят все -таки смогли посмотреть код и найти определенный ошибки и как минимум сэкономить мне кучу времени, так как его и так сейчас не особо много...
Все твои замечания учел, поправлю ближе к пт и выкачу патч. Некоторые моменты я действительно не знал, а в некоторых допускал ошибки по глупости, но что вы хотели от некоммерческой разработки;)
Думаю всему виной, что плагин писался не очень приятным стилем и имел большой функционал, и в итоге я просто перемешал палитру, что уже было тяжело смотреть на код и я допускал, ну вполне очевидные ошибки.
Сейчас я уже клепаю ядро этого плагина, где-то на 10% готово, код в миллион раз будет приятней и разборчив.

Что касается функции RoundToMath, я старался приблизить ее округление по всем правилам математики, но так как отрицательная часть меня совсем не интересовала, я просто проигнорировал ее в данном случае.
 

Papo4ka

Участник
Сообщения
15
Реакции
1
1606991674726.png
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
  • Автор ресурса
  • #38
Очень странно, учитывая что в архиве нет, ничего кроме исходника, либ и самого плагина. Могу предположить, что он ругается на компилятор, но это мое предположение... Попробуйте скачать по отдельности файлы с Яндекс.Диск или Гита. Возьму на заметку, что не стоит оставлять компиляторы в архивах.
 

kilroy

:clown:
Сообщения
1,065
Реакции
606
  • Команда форума
  • #39
Очень странно, учитывая что в архиве нет, ничего кроме исходника, либ и самого плагина. Могу предположить, что он ругается на компилятор, но это мое предположение... Попробуйте скачать по отдельности файлы с Яндекс.Диск или Гита. Возьму на заметку, что не стоит оставлять компиляторы в архивах.
Думаю просто не стоит доверять всяким дерьмовым антивирусам. На Virustotal'е ни одного детекта.
 

DOVE

GLite Inc.
Сообщения
296
Реакции
54
Хорошая идея и я ее учел, в следующем обновление, которое выйдет ближе к выходным на следующей неделе уже будет в деле ☺️ Разобью админ возможности на флаги доступа, т.к. изначально в логику было заложено, чтобы любой администратор имел возможность к балансированию и прочим фишкам с этим.
а следующая неделя после какой именно?)
 
Сверху Снизу