DM TeamBalance

DM TeamBalance 1.0.0

Нет прав для скачивания
Сообщения
460
Реакции
68
Помог
7 раз(а)
Nordic Warrior, класный плугин начал пользовоца очеь понравился функцыоналом. Спасибо автору.
 
Последнее редактирование:

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
20100
i - Это тип int чи не? Почему Int, если у тебя в енуме встречаются и строки есть и float и целочисленные? Это так, для понимания венгерской нотации, которую ты используешь)
 
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
d3m37r4, точно. Спасибо. Привык писать iCvars ещё с тех времён, когда у меня в плагинах были только интовые квары. =)
 
Сообщения
58
Реакции
2
Помог
2 раз(а)
Как же тут много мусора. Зачем такой плагин на DM сервере, если решить это можно проще и эффективнее?
C++:
#include <amxmodx>
#include <cstrike>

new bool:flaged[ 33 ], g_iMaxPlayers, IsBot[ 33 ], cTransfers[ 33 ], bool:Transferring;
#define MaxDiff 1 // максимальная разрешенная разница в командах
#define ImunFlag ADMIN_LEVEL_E // флаг для имунитета от перемещений

public plugin_init( )
{
    register_plugin("AUTO BALANCE BOT & HUMANS", "0.1", "ko1dun");
    g_iMaxPlayers = get_maxplayers( );
}

public client_putinserver( id )
{
    flaged[ id ] = bool:( get_user_flags( id ) & ImunFlag );
    IsBot[ id ] = is_user_bot( id );
    cTransfers[ id ] = 0;
}

public client_death(killer, id)
{
    if( Transferring || flaged[ id ] || !is_user_connected( id ) || cTransfers[ id ] >= 3 )
        return;
    
    new CsTeams:MyTeam = cs_get_user_team( id ), iPlayers[2][CsTeams];
    for( new i=1; i <= g_iMaxPlayers; i++)
        if( is_user_connected( i ) )
            iPlayers[ IsBot[ i ] ][ cs_get_user_team( i ) ]++;
    
    MyTeam = GetTeamTransfer( id, iPlayers, MyTeam )
    if( MyTeam == CS_TEAM_UNASSIGNED )
        return;
    
    set_dhudmessage(random(255), random(255), random(255), 0.01, 0.9, 0, 6.0, 3.0, 0.1, 1.5 )
    show_dhudmessage(id, "Вы будете перекинуты!")
    Transferring = true, cTransfers[ id ]++;
    new parms[2]; parms[0] = id, parms[1] = _:MyTeam;
    set_task( 1.0, "set_newteam", 0, parms, 2 );
}

stock CsTeams:GetTeamTransfer(id, iPlayers[2][CsTeams], CsTeams:MyTeam)
{
    new diff = ( iPlayers[ IsBot[ id ] ][ CS_TEAM_T ] ) - ( iPlayers[ IsBot[ id ] ][ CS_TEAM_CT ] );
    if( diff > MaxDiff && MyTeam != CS_TEAM_CT )
        return CS_TEAM_CT;
    else if( diff < -MaxDiff && MyTeam != CS_TEAM_T )
        return CS_TEAM_T;
    
    return CS_TEAM_UNASSIGNED;
}

public set_newteam( parms[ 2 ] )
{
    if( is_user_connected( parms[ 0 ] ) )
    {
        set_dhudmessage( random(255), random(255), random(255), 0.01, 0.9, 0, 6.0, 3.0, 0.1, 1.5 )
        show_dhudmessage( parms[ 0 ], "Вас перекинуло!" )
        cs_set_user_team( parms[ 0 ], CsTeams:parms[ 1 ]);
    }
    
    Transferring = false
}

Данный код работает прекрасно на версии 1.8.1 и выше
Тестировался на 1.8.1 и 1.9.0
 
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
pro100iweb, эм, с каких пор это всё "мусор"? Я считаю нужным уведомлять игроков.

А квары почему "мусор"? :crazy:
 
Сообщения
58
Реакции
2
Помог
2 раз(а)
Уведомил 1 раз после смерти и перевел игрока, вот это нормально, а несколько сообщений и в чате ещё это перебор для DM сервера
В данном исполнении хоть с кварами хоть без, разницы нет
 
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
У меня не завязана логика на событии смерти.

перебор для DM сервера
Можно конструктивную критику, если она вообще у тебя имеется? А то всё, что ты сейчас написал является делом вкуса + потребностями отдельного сервера.
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
pro100iweb,
я бы не стал называть плагин который вы сбросили хорошым. Там много моментов которые я б лично так не делал.
 
Сообщения
17
Реакции
-5
Nordic Warrior, благодарю за обновление! Самого главного не хватает "Переводить игрока после смерти"а не убивать плагином!
Вип или админ поставил пушку, а его в наглую перевели)
 
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
Gold-cs, в этом плагине нельзя реализовать такое. Потому что я ставил для себя цель переводить случайного игрока, а не первого умершего, как в случае с "переводить после смерти".
 

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

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