Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Как вы делаете баланс команд?

Статус пользователя specific
сообщение 17.10.2013, 9:27
Сообщение #1
Стаж: 14 лет

Сообщений: 97
Благодарностей: 4
Полезность: 35

Здравствуйте. Поделитесь пожалуйста, как вы боритесь с дисбалансом команд на сервере (речь идет о пабликах).

Есть куча способов, но все они имеют недостатки, попробую перечислить лишь некоторые из них:

1. Убийство в конце раунда команды, которая не выполнила миссию (например терров, если бомбу не заложили, или кт, если не разминировали).
Здесь минусом является частая несправедливость, возможно ТТ, действительно старались, они уже почти заложили бомбу, но времени не хватило) А ставить раундтайм 3 минуты это не айс по многим причинам.
2. Система ставок.
Есть миф, что если тт например начали лажать, то они лажать будут долго, т.к. у них нет денег в новом раунде на закуп оружия, и тут якобы на помощ приходит система ставок, когда умерший игрок делает ставку, и при угадывании он получает бонус.. По мне это вобще отстойная система, которая вопервых никак не связана с балансом, во вторых умерший ТТ итак получит бонус, даже если его команда проиграла, ну и наконец в третьих - кемпаки, сколько им денег не давай будут сидеть вечно.
3. Контроль движений.
Есть система, когда сервер анализирует движения игрока, и если игрок сидит на одном месте, то ему сразу отвешиваются смачные шлепки. Весело, но тоже бывает не справедливо, зачастую это необходимость сесть и переждать какой то момент, а тут бац и тебя коцает,


Наверно здесь нужен какой то новый, оригинальный подход, или система методов.
Что вы думаете по этому поводу?

Отредактировал: specific, - 17.10.2013, 9:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя TheNega
сообщение 17.10.2013, 9:35
Сообщение #2


Стаж: 13 лет

Сообщений: 724
Благодарностей: 1396
Полезность: 1101

specific, это вечная проблема , можешь попробовать поставить плагин баланс команд так сказать по их скиллу... сейчас поищу плагины этот.


После каждого убийства плагин проверяет общее количество фрагов и игроков тем самым делает балансировку команд по силам , а не только по количеству игроков за первую и вторую команду.

Так же в описание указано что плагин для CSDM мода , возможно при желание можно переделать.

Плагин
Код
#include < amxmodx >
#include < cstrike >
#include < csdm >

#define BALANCE_IMMUNITY ADMIN_IMMUNITY

/*
    csdm_auto_balance
        - 0: Disabled
        - 1: Enabled
        - 2: Enabled, obey immunity
*/

new bool:g_bConnected[ 33 ], bool:g_bImmunity[ 33 ], CsTeams:g_iNewTeam[ 33 ];
new g_pCvar, g_iMaxPlayers, g_iMsgSayText, g_iMsgScreenFade, g_iPlayers;

public plugin_init( ) {
    register_plugin( "CSDM Auto Balance", "1.0", "xPaw" );
    
    g_pCvar = register_cvar( "csdm_auto_balance", "1" );
    
    g_iMsgScreenFade = get_user_msgid( "ScreenFade" );
    g_iMsgSayText    = get_user_msgid( "SayText" );
    g_iMaxPlayers    = get_maxplayers( );
}

public client_authorized( id )
    g_bImmunity[ id ] = bool:( get_user_flags( id ) & BALANCE_IMMUNITY );

public client_putinserver( id ) {
    g_bConnected[ id ] = true; // bool:!is_user_bot( id );
    g_iPlayers++;
}

public client_disconnect( id ) {
    g_iNewTeam[ id ]   = CS_TEAM_UNASSIGNED;
    g_bImmunity[ id ]  = false;
    g_bConnected[ id ] = false;
    g_iPlayers--;
}

public csdm_PostDeath( iKiller, id, bHeadShot, const szWeapon[ ] ) {
    if( g_iPlayers < 4 || iKiller == id || !g_bConnected[ id ] )
        return;
    
    new iCvar = get_pcvar_num( g_pCvar );
    
    if( iCvar <= 0 || iCvar == 2 && g_bImmunity[ id ] )
        return;
    
    new iPlayers[ 2 ];
    
    for( new i = 1; i <= g_iMaxPlayers; i++ ) {
        if( !g_bConnected[ i ] )
            continue;
        
        switch( cs_get_user_team( i ) ) {
            case CS_TEAM_T: iPlayers[ 0 ]++;
            case CS_TEAM_CT: iPlayers[ 1 ]++;
        }
    }
    
    new CsTeams:iCheck, iDifference = iPlayers[ 1 ] - iPlayers[ 0 ];
    
    if( iDifference > 0 )
        iCheck = CS_TEAM_T;
    else if( iDifference < 0 )
        iCheck = CS_TEAM_CT;
    else
        return;
    
    if( abs( iDifference ) < 2 || cs_get_user_team( id ) == iCheck )
        return;
    
    cs_set_user_team( id, iCheck );
    
    new szName[ 32 ];
    get_user_name( id, szName, 31 );
    
    UTIL_GreenPrintAll( id, "^4[CSDM]^3 %s^1 has been transfered to^3 %s^1.", szName,
        iCheck == CS_TEAM_T ? "Terrorists" : "Counter-Terrorists" );
    
    g_iNewTeam[ id ] = iCheck;
}

public csdm_PostSpawn( id, bool:bFake ) {
    new CsTeams:iNewTeam = g_iNewTeam[ id ];
    
    if( iNewTeam > CS_TEAM_UNASSIGNED ) {
        g_iNewTeam[ id ] = CS_TEAM_UNASSIGNED;
        
        set_hudmessage( 0, 127, 255, 0.42, 0.53, 2, 6.0, 4.0, 0.1, 0.2, -1 );
        show_hudmessage( id, "You have been transfered to %s!", iNewTeam == CS_TEAM_T ? "Terrorists" : "Counter-Terrorists" );
        
        UTIL_ScreenFade( id, iNewTeam == CS_TEAM_T ? 175 : 0, 0, iNewTeam == CS_TEAM_CT ? 175 : 0 );
    }
}

UTIL_GreenPrintAll( const iSender, const Message[ ], any:... ) {
    new szMessage[ 192 ];
    vformat( szMessage, 191, Message, 3 );
    
    message_begin( MSG_BROADCAST, g_iMsgSayText );
    write_byte( iSender );
    write_string( szMessage );
    message_end( );
}

UTIL_ScreenFade( const id, const iRed, const iGreen, const iBlue ) {
    message_begin( MSG_ONE_UNRELIABLE, g_iMsgScreenFade, _, id );
    write_short( 2000 );
    write_short( 2000 );
    write_short( 0 );
    write_byte( iRed );
    write_byte( iGreen );
    write_byte( iBlue );
    write_byte( 175 );
    message_end( );
}


Настройки:
csdm_auto_balance
0 = Выключить.
1 = Включить плагин.
2 = Включён, но повинивается иммунитету.

Флаг иммунитета меняется на линии 5 (#define BALANCE_IMMUNITY)

Отредактировал: TheNega, - 17.10.2013, 9:38
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя specific
сообщение 17.10.2013, 9:42
Сообщение #3
Стаж: 14 лет

Сообщений: 97
Благодарностей: 4
Полезность: 35

TheNega,
Спасибо, будем тестить. Однако на этом думаю обсуждение закрывать не стоит, хотелось бы послушать еще мнения.

п.с. Кстати забыл сказать про минус токого метода - это недовольство игроков что их перекидывает :))

Отредактировал: specific, - 17.10.2013, 9:50
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя noisiacs
сообщение 17.10.2013, 10:40
Сообщение #4


Стаж: 13 лет

Сообщений: 684
Благодарностей: 162
Полезность: 204

Проблема эта существует уже давно. Все зависит, так сказать, от порядочности игроков. В основном все сильные игроки заходят за одну команду и выносят слабых.
Бороться с этим почти бесполезно. Принудительно выравнивать команды - ни к чему хорошему не приведет, в основном начинается ругань в чат на админа и последующий выход с сервера. И часто плагин перекидывает 1-2 игроков за слабых, но эти 1-2 никак не смогут вытащить против 15 соперников.
Когда то на моем сервере была состоявшаяся компания игроков, все друг друга знали, сходки и т.п. - делились поровну. А так, всем наплевать что кто то не может выиграть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 17.10.2013, 10:53
Сообщение #5


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Уравниваю принудительно, плагин PTB
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
cs-portal
сообщение 17.10.2013, 11:16
Сообщение #6
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

он старый и имеет много багов, часто вообще зайти за команду нельзя ни за Теров ни за КТ . ) факт
оптимально бы перекидывать за слабых + давать немного денег потому что проигравшие без налички сидят.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dep3ku
сообщение 17.10.2013, 12:33
Сообщение #7


Стаж: 13 лет

Сообщений: 736
Благодарностей: 77
Полезность: < 0

отличный плагин балансирует после раунда сразу ,
instant_autoteambalance.amxx
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xSav
сообщение 17.10.2013, 12:59
Сообщение #8
Стаж: 16 лет

Сообщений: 1131
Благодарностей: 174
Полезность: 126

Dep3ku,
Хоть бы тему прочитал прежде чем предлагать плагин который не имеет отношения к делу
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 17.10.2013, 13:02
Сообщение #9


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(cs-portal @ 17.10.2013, 13:16) *
он старый и имеет много багов, часто вообще зайти за команду нельзя ни за Теров ни за КТ . ) факт
оптимально бы перекидывать за слабых + давать немного денег потому что проигравшие без налички сидят.

в PTB багов не стречал
Код
часто вообще зайти за команду нельзя  ни за Теров ни за КТ

плагин ptb тут не причем
за два года ни разу такого не было с этим плагином на сервере
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nsgenn
сообщение 17.10.2013, 13:13
Сообщение #10


Стаж: 13 лет

Сообщений: 885
Благодарностей: 561
Полезность: 667

Скрытый текст
amx-x.ru/viewtopic.php?f=12&t=17125
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 17.10.2013, 22:57
Сообщение #11


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Цитата(cs-portal @ 17.10.2013, 13:16) *
он старый и имеет много багов, часто вообще зайти за команду нельзя ни за Теров ни за КТ . ) факт
оптимально бы перекидывать за слабых + давать немного денег потому что проигравшие без налички сидят.

Единственное, что встречал из багов - действительно не даёт зайти за определённую команду. В таком случае надо жать автовыбор. Встречается очень редко, раз в пару дней, абсолютно все догадываются нажать. Больше багов не видел у него, да и то не факт, что виноват PTB.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
cs-portal
сообщение 17.10.2013, 23:00
Сообщение #12
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

я вчера как раз зашел на даст какой то стоял плагин PTB = он не давал мне зайти ни за теров ни за кт. игроков было 25-32. причем часть людей висела в спектрах и тоже не могла зайти
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя gudaus
сообщение 17.10.2013, 23:10
Сообщение #13


Стаж: 14 лет

Сообщений: 1571
Благодарностей: 1211
Полезность: 741

Цитата(cs-portal @ 18.10.2013, 1:00) *
я вчера как раз зашел на даст какой то стоял плагин PTB = он не давал мне зайти ни за теров ни за кт. игроков было 25-32. причем часть людей висела в спектрах и тоже не могла зайти

Это не баг, а тупизм того, кто плагин ставил на сервер. У PTB есть опция - максимум игроков в команде, и она по дефолту 12. Надо менять на 16, тогда всё будет ок.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
cs-portal
сообщение 18.10.2013, 0:28
Сообщение #14
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

ясно, тогда почему 25 игроков = 12+12-24 я был 25м наверное rofl.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Grom70
сообщение 1.6.2014, 9:33
Сообщение #15


Стаж: 13 лет

Сообщений: 159
Благодарностей: 30
Полезность: 93

Друзья а не поделитесь рабочим кфг (PTB)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя BornToBeFree
сообщение 1.6.2014, 15:30
Сообщение #16


Стаж: 12 лет

Сообщений: 741
Благодарностей: 287
Полезность: 602

Меценат Меценат

Цитата(Grom70 @ 1.6.2014, 11:33) *
Друзья а не поделитесь рабочим кфг (PTB)

Почитай тему про этот плагин и собери оптимальный конфиг


Скидка 5% при заказе сервера
Чтобы получить 5% скидку при заказе сервера на хостинге Serva4ok.ru
Необходимо ввести это кодовое слово gKUt-FENO-ZonE-aIaa
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 1.6.2014, 15:32
Сообщение #17
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Grom70, конфиг индивидуален. А настроить и правда оригинал непросто - не хватает статистической информации.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: