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

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

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

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

> Информационная доска

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

1. Во время создания новой темы аккуратно оформляйте её, не допускайте грамматических ошибок.
2. Описывая проблему старайтесь, как можно больше рассказать о ней, а так же о действиях с сервером после которых она возникла, по возможности подкрепите информацию логами.
3. Если вопрос касается проблемы в работе сервера, то обязательно прикрепляйте список плагинов (введите в консоли сервера: meta list и amxx plugins), настройки server.cfg, логи. Так же указывайте операционную систему, версию HLDS (введите к консоли сервера: version) и где хостится сервер.

Длинную информацию скрывайте под спойлер.

Баланс игроков

Статус пользователя mortalcs
сообщение 15.11.2012, 16:09
Сообщение #1
Стаж: 14 лет

Сообщений: 1145
Благодарностей: 607
Полезность: 1025

В общем стоит на сервере балансер который проверяет команды каждые n секунд.
Но если играют 15/16
То не за одно команду не пускает.
Плагин
csdm_auto_balance.sma
Код
#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( );
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя sergeymaverick
сообщение 17.11.2012, 9:17
Сообщение #2
Стаж: 13 лет

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

Дело скорее всего не в плагине, а на сервере стоит у тебя резервный слот просто.

Загляни в настройки amxx.cfg => http://aic.org.ua/publ/dlja_servera/nastro...servera/7-1-0-2

А так думаю вот:
// Количество резервируемых слотов для админов
// По умолчанию: 0
amx_reservation 0

// Скрывать резервируемые слоты
// По умолчанию: 0
amx_hideslots 0

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