Поиск ищу плагин баланс

Сообщения
149
Реакции
6
Помог
1 раз(а)
Всем привет.Ищу плагин для балансировки команд на rehlds ,для сервера gungame.
За ранее спасибо.
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
С таким описанием вам вряд ли помогут. Каких команд: команд клиента, команд игроков (Т, КТ) и т.д.
 
Сообщения
149
Реакции
6
Помог
1 раз(а)
примерно как у радиуса только не его аналог.

// Включена (1) или отключена (0) балансировка по количеству игроков
tb_balance_by_playersnum "1"

// Включена (1) или отключена (0) балансировка по уровню умений
tb_balance_by_skill "0"

// Разница в счете команд после превышения которой будет произведена балансировка по уровню имений
tb_skill_score_diff "5"

// Сколько раундов или минут (для режима без раундов) нужно пропустить балансировку по скилу
tb_skill_skip_times "5"

// Минимальное количество игроков, необходимое для балансировки команд по уровню умений
tb_skill_min_players "10"

// Тип меню выбора команды. Допустимые значения: 0 - стандартное, 1 - новое с возможностью выбора команды, 2 - новое с автовыбором
tb_select_team_menu_type "0"

// Максимально допустимая разница в количестве игроков, для свободного выбора команды, иначе выбор ограничен
tb_max_players_num_diff "99"

// Сколько раундов или минут (для режима без раундов) однажды переведенный игрок должен игнорироваться при любом типе балансировки
tb_immunity_skip_times "5"

// На какое количество раундов или минут (для режима без раундов) переведенному плагином в другую команду игроку будет заблокирована возможность ручной смены команды
tb_changeteam_block_times "99"

// Включает режим работы рассчитанный на сервера с постоянным возрождением (CSDM и ему подобные)
tb_no_rounds "1"

// Время через которое после выбора команды игрок будет принудительно возрожден (на случай проблем с возрождением на серверах типа CSDM и ему подобных)
tb_forced_respawn_delay "0.0"

// Флаги доступа необходимые для получения иммунитета от автобаланса
tb_immunity_flags "a"
 

d3m37r4

111111
Сообщения
1,425
Реакции
1,166
Помог
10 раз(а)
dogi2827, используй стандартный, тем более в regamedll его подправили. Проблем меньше будет с балансом.
 
Сообщения
149
Реакции
6
Помог
1 раз(а)
Pokemoshka, он же не допилен?
21 Дек 2017
d3m37r4, это вы про тот что в server.cfg идет?
 
Сообщения
264
Реакции
79
Помог
1 раз(а)
Код:
// Auto balancing of teams
// 0 - disabled
// 1 - on after next round (default behaviour)
// 2 - on next round
//
// Default value: "1"
mp_autoteambalance 2
 
Сообщения
149
Реакции
6
Помог
1 раз(а)
рREVO, REVO, что то не особо балансирует на гангейме играет 11/7.
 
Сообщения
2,491
Реакции
2,790
Помог
61 раз(а)
dogi2827, и не будет балансировать, так как в ГГ только один раунд. К сожалению, я не могу вам порекомендовать конкретный плагин баланса, так как не пользуюсь ими
 
Сообщения
2,288
Реакции
1,737
Помог
31 раз(а)
fantom, тогда наверно ему лучше mp_limitteams 1 прописать, что при заходе все не прыгали на одну сторону + mp_auto_join_team 1 можно что б их сразу кидало в команды
 
Сообщения
23
Реакции
-37
Pokemoshka, Вариант хороший, но после того как игроки выйдут допусти из команды тт то по прежнему будет дизбаланс
 

met

Сообщения
171
Реакции
42
на гг использую балансер от ZeroCool. Переводит лучшего игрока из команды в другую, если разница по кол-ву игроков больше 1. С худом и аудио оповещением. Меня вполне устраивает
 
Сообщения
332
Реакции
75
Предупреждения
9
Помог
1 раз(а)
met, а если двоих разом кикает из за пинга и двое выйдут с сервера. Разница уже в 4 игрока за секунду. Сразу 4 сильных перебросит? ты наверное это не замечаешь потому что постоянный приток игроков идет на сервер. А представь что никто не заходит и 4 человека из одной команды вышли с сервера.
 

met

Сообщения
171
Реакции
42
GALAXY, если разница в 4 игрока, то перекинет 2. Случаи разные бывают, но пока ни на один из них игроки не жалуются
 
Сообщения
460
Реакции
68
Помог
7 раз(а)
Сообщения
185
Реакции
43
Помог
4 раз(а)
вот есть альтернатива давно его юзаю
Код:
#include <amxmodx>
#include <reapi>
              
#define ACCESS_IMMUNITY ADMIN_IMMUNITY    // Иммунитет для админов при балансе              
#define DIFF_PLAYERS     2                // разница в количестве игроков в командах    
#define IGNORE_CHECKS    10               // сколько раз пропускать игрока при балансе (маленькое значение не ставьте. игроки ваш сервер нах..й пошлют =)))
#define REPLACED_MENU                     // Кастомное меню с 2-мя пунктами.

#if !defined MAX_PLAYERS
    #define MAX_PLAYERS 32
#endif
#if AMXX_VERSION_NUM < 183
    new MaxClients;
#endif

enum _:Teams { TT = 1, CT }
new g_iNewTeam[MAX_PLAYERS+1];
new g_iIgnoreChecks[MAX_PLAYERS+1];

#define msgSayText 76
#define msgTeamInfo     86
#define msgShowOldMenu     96
#define msgShowVGUIMenu 114
                                                                            
public plugin_init()
{
    register_plugin("NoRound Balancer", "1.3", "neygomon");
    
    RegisterHookChain(RG_CBasePlayer_Spawn,  "fwdPlayerSpawnPre",  true);
    RegisterHookChain(RG_CBasePlayer_Killed, "fwdPlayerKilledPost", true);
#if defined REPLACED_MENU    
    register_clcmd("chooseteam",     "ShowMenu");
    
    register_menucmd(register_menuid("Team Menu"), MENU_KEY_0|MENU_KEY_1|MENU_KEY_6, "TeamMenuHandler");
    register_message(msgShowOldMenu, "mShowMenu");
    register_message(msgShowVGUIMenu, "mShowMenu");
#endif
#if AMXX_VERSION_NUM < 183
    MaxClients = get_maxplayers();
#endif
}

public client_putinserver(id)
    g_iNewTeam[id] = g_iIgnoreChecks[id] = 0;

public fwdPlayerSpawnPre(const ClientIndex)
{
    if(g_iNewTeam[ClientIndex]-- && ~get_user_flags(ClientIndex) & ACCESS_IMMUNITY)
    {
        //rg_set_user_team(ClientIndex, g_iNewTeam[ClientIndex]);
        client_printc(ClientIndex, "^1[^4Баланс^1] ^4Вы перемещены в команду ^3%s", g_iNewTeam[ClientIndex] == TT ? "террористов" : "контр-террористов");
        g_iNewTeam[ClientIndex] = 0;
    }
}

public fwdPlayerKilledPost(const VictimIndex)
{
    if(!(1 <= VictimIndex <= MaxClients))
        return;
    
    static iCachedTime, iCurrentTime;                             
    static iPlayersNum[Teams];
    
    if((iCurrentTime = get_systime()) >= iCachedTime)
    {
        GetPlayersTeam(iPlayersNum[TT], iPlayersNum[CT]);
        iCachedTime = iCurrentTime + 2;
    }
    if(abs(iPlayersNum[TT] - iPlayersNum[CT]) >= DIFF_PLAYERS)
    {
        if(iPlayersNum[TT] > iPlayersNum[CT])
        {
            if(get_member(VictimIndex, m_iTeam) == TT && !g_iIgnoreChecks[VictimIndex]--)
            {
                g_iNewTeam[VictimIndex] = CT;
                g_iIgnoreChecks[VictimIndex] = IGNORE_CHECKS;
                rg_set_user_team(VictimIndex, g_iNewTeam[VictimIndex]);
            }
        }
        else if(iPlayersNum[CT] > iPlayersNum[TT]) 
        {
            if(get_member(VictimIndex, m_iTeam) == CT && !g_iIgnoreChecks[VictimIndex]--)
            {
                g_iNewTeam[VictimIndex] = TT;
                g_iIgnoreChecks[VictimIndex] = IGNORE_CHECKS;
                rg_set_user_team(VictimIndex, g_iNewTeam[VictimIndex]);
            }
        }
    }    
}
#if defined REPLACED_MENU
public mShowMenu(msgId, msgDest, msgEnt)
{
    if(msgId == msgShowOldMenu)
    {
        static szArg4[20]; get_msg_arg_string(4, szArg4, charsmax(szArg4));
        if(contain(szArg4, "Team_Select") == -1)
            return PLUGIN_CONTINUE;
    }
    else if(get_msg_arg_int(1) != 2)
        return PLUGIN_CONTINUE;
    
    set_member(msgEnt, m_iMenu, Menu_OFF);
    ShowMenu(msgEnt);
    return PLUGIN_HANDLED;
}

public ShowMenu(id)
    return show_menu(id, MENU_KEY_0|MENU_KEY_1|MENU_KEY_6, "\d[\rCSDM\d] \yВыберите действие:^n^n\y1. \rВойти в игру^n\y6. \wНаблюдение^n^n\y0. \wВыход", -1, "Team Menu");

public TeamMenuHandler(id, iKey)
{
    switch(iKey)
    {
        case 0:
        {
            static tt, ct; GetPlayersTeam(tt, ct);
            set_member(id, m_bTeamChanged, false);
            engclient_cmd(id, "jointeam", (tt > ct) ? "2" : "1");
        }                                                   
        case 5: user_silentkill(id), engclient_cmd(id, "jointeam", "6");
    }
    return PLUGIN_HANDLED;
}
#endif                                  
stock GetPlayersTeam(&tt, &ct, players[32]="", pnum=0)
{
    tt = ct = 0; 
    get_players(players, pnum);
    
    for(new i; i < pnum; i++)
    {
        switch(get_member(players[i], m_iTeam))
        {
            case 1: tt++;
            case 2: ct++;
        }
    }
}

stock client_printc(const ClientIndex, const szMessage[], any:...)
{
    static szMsg[190]; vformat(szMsg, charsmax(szMsg), szMessage, 3);

    message_begin(MSG_ONE_UNRELIABLE, msgSayText, .player = ClientIndex);
    write_byte(ClientIndex);
    write_string(szMsg);
    message_end();
}
 

d3m37r4

111111
Сообщения
1,425
Реакции
1,166
Помог
10 раз(а)

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу