[2.8] Lite Translit

Денис3

Заблокированные
Пользователь
Только чтение
Регистрация
3 Июл 2017
Сообщения
175
Симпатии
39
не всем таки нужен и русский язык,иногда игрокам легче вообще без транслита им так удобней,а все эти префиксы и прочее тупая ненужная нагрузка на серв и минус фпс
что плять минус FPS? LOL:bayan::bayan:
 

Евгений

Пользователь
Регистрация
9 Июн 2017
Сообщения
209
Симпатии
42
Пол
Мужской
Ну грузит у него серв и фпс минус от тегов этих, чт вы ребята так. А то что у него два худ сообщения друг на друга заходят, фпс только прибавляет.
 

pavelblack

Пользователь
Регистрация
25 Дек 2017
Сообщения
4
Симпатии
0
1514316620771.png
я почистил и стало вообще так вот весь plugins.ini
fresh_bans.amxx ; Система бана [Настройки: configs/fb/...]
;admin_sql.amxx
;adminhelp.amxx
admin.amxx
antiflood.amxx
admincmd.amxx
adminhelp.amxx
adminslots.amxx
adminvote.amxx
cmdmenu.amxx
imessage.amxx
mapsmenu.amxx
menufront.amxx
miscstats.amxx
multilingual.amxx
nextmap.amxx
pausecfg.amxx
plmenu.amxx
restmenu.amxx
scrollmsg.amxx
stats_logging.amxx
statscfg.amxx
statsx.amxx
telemenu.amxx
timeleft.amxx
Renelmaxl_zp_prefix.amxx
pluginmenu.amxx
;amxmod_compat.amxx
;admin_sql.amxx

;=======[ Нестандартные плагины ]=======
mapmanager.amxx ; Менеджер карт [настройки: configs/amxx.cfg]
yet_another_voteban.amxx ; Голосование за бан игрок [настройки: configs/amxx.cfg]
steam_prefix.amxx ; Приствка [STEAM] у Steam игроков.
resetscore.amxx ; Обнуление счета.
bhpk.amxx ; Кик за высокий пинг [настройки: configs/amxx.cfg]
bullet_damage.amxx
afkbombtransfer.amxx
amx_gore_ultimate.amxx
bsp.amxx
killa_hp.amxx
freeammo.amxx
chat_block.amxx
admin_vgk.amxx
multijump.amxx
rds.amxx
pdm.amxx
advanced_tracers.amxx
vampire.amxx
admin_freelook.amxx
admin_cheat.amxx
info_rank.amxx
speclist_rus.amxx
knife_round.amxx
timelimitvote.amxx
automatic_knife_duel.amxx
admin_spec_esp.amxx
ad_manager.amxx
join_leave.amxx
amx_parachute.amxx
vip_sustem.amxx ; само меню
vip_sustem_m4a1.amxx ; золота¤ м4а1
vip_sustem_ak47.amxx ; золота¤ ak47
vip_sustem_awp.amxx ; золота¤ авп
vip_sustem_dgl.amxx ; золотой дгл
gold.amxx
hud_message_manager.amxx
EvilLifebar.amxx
EvilArmy.amxx
AdminPrefixes.amxx
gold.amxx
opengl32_detector.amxx
lite_translit_183.amxx
lite_translit_182.amxx
 
Последнее редактирование модератором:

Анатолий

Пользователь
Регистрация
8 Июн 2017
Сообщения
304
Симпатии
81
Пол
Мужской
Посмотреть вложение 4428 я почистил и стало вообще так вот весь plugins.ini
fresh_bans.amxx ; Система бана [Настройки: configs/fb/...]


;admin_sql.amxx
;adminhelp.amxx

admin.amxx
antiflood.amxx
admincmd.amxx
adminhelp.amxx
adminslots.amxx
adminvote.amxx
cmdmenu.amxx
imessage.amxx
mapsmenu.amxx
menufront.amxx
miscstats.amxx
multilingual.amxx
nextmap.amxx
pausecfg.amxx
plmenu.amxx
restmenu.amxx
scrollmsg.amxx
stats_logging.amxx
statscfg.amxx
statsx.amxx
telemenu.amxx
timeleft.amxx
Renelmaxl_zp_prefix.amxx
pluginmenu.amxx
;amxmod_compat.amxx
;admin_sql.amxx

;=======[ Нестандартные плагины ]=======
mapmanager.amxx ; Менеджер карт [настройки: configs/amxx.cfg]
yet_another_voteban.amxx ; Голосование за бан игрок [настройки: configs/amxx.cfg]
steam_prefix.amxx ; Приствка [STEAM] у Steam игроков.
resetscore.amxx ; Обнуление счета.
bhpk.amxx ; Кик за высокий пинг [настройки: configs/amxx.cfg]


bullet_damage.amxx


afkbombtransfer.amxx


amx_gore_ultimate.amxx


bsp.amxx


killa_hp.amxx


freeammo.amxx


chat_block.amxx


admin_vgk.amxx


multijump.amxx






rds.amxx


pdm.amxx


advanced_tracers.amxx


vampire.amxx


admin_freelook.amxx


admin_cheat.amxx


info_rank.amxx


speclist_rus.amxx


knife_round.amxx


timelimitvote.amxx


automatic_knife_duel.amxx


admin_spec_esp.amxx


ad_manager.amxx


join_leave.amxx

amx_parachute.amxx
vip_sustem.amxx ; само меню
vip_sustem_m4a1.amxx ; золота¤ м4а1
vip_sustem_ak47.amxx ; золота¤ ak47
vip_sustem_awp.amxx ; золота¤ авп
vip_sustem_dgl.amxx ; золотой дгл
gold.amxx
hud_message_manager.amxx
EvilLifebar.amxx
EvilArmy.amxx
AdminPrefixes.amxx
gold.amxx
opengl32_detector.amxx
lite_translit_183.amxx
lite_translit_182.amxx
Ты дурак шоль??? 2 одинаковых сука плагина!

lite_translit_183.amxx
lite_translit_182.amxx

Убери все плгины которые заменяют чат или делают приставки в чате!!!!!!!!!!!!!!!! оставь сука только lite_translit!!!!!!!!!!!!
 

pavel_a

Пользователь
Регистрация
30 Авг 2017
Сообщения
339
Симпатии
49
Пол
Мужской

pavelblack

Пользователь
Регистрация
25 Дек 2017
Сообщения
4
Симпатии
0
Ты дурак шоль??? 2 одинаковых сука плагина!

lite_translit_183.amxx
lite_translit_182.amxx

Убери все плгины которые заменяют чат или делают приставки в чате!!!!!!!!!!!!!!!! оставь сука только lite_translit!!!!!!!!!!!!
мдааа почитай тут на форме тут чел фикс выкладывал на префиксы у меня и без этого фикса также
 

Дима ахмедов

Пользователь
Регистрация
16 Ноя 2017
Сообщения
12
Симпатии
0
А что делать, если сам плагин работает но зеленый чат и префиксы не работают? в логах такие ошибки
 

Вложения

  • 205,5 KB 33
  • 70,7 KB 32

newtramp

Пользователь
Регистрация
9 Июн 2017
Сообщения
53
Симпатии
2
Пол
Мужской
При включенном #define LT_PREFIXES не работают префиксы.
Дело в руках или в amx mod x 1.8.2?
 

SiJey

Пользователь
Регистрация
2 Янв 2018
Сообщения
1
Симпатии
0
Мужики компилирую а ошибок до задницы в чём проблема?
 

Вложения

  • 214,9 KB 13

pavel_a

Пользователь
Регистрация
30 Авг 2017
Сообщения
339
Симпатии
49
Пол
Мужской
Мужики компилирую а ошибок до задницы в чём проблема?
ну это вы уже сами что то напортачили,данная версия компилит без ошибок
12 Янв 2018
исходник в студию :Cherna24:
 

Raptor X

Пользователь
Регистрация
31 Дек 2017
Сообщения
19
Симпатии
1
Народ, а можно ли как то сделать, что бы приставка [VIP] в чате давалась автоматически совместно с плагином top_awards? Т.е. плаг top_awards назначает топ игрокам флаг "t". Далее Lite translit дает этим же игрокам префикс [VIP].
Команда amx_who показывает, что мне все таки назначен флаг "t", но Lite translit не видит это, соответственно, не дает никакой приставки к нику.

amx_who

Сейчас на сервере:
# nick authid userid и с права
1 Raptor X STEAM_0:0:316247397 1 Не Не tz

;; Конфиг для плагина Lite Translit
;; Автор: neygomon | Сайт: Neugomon Game Community
;; Официальная тема поддержки: [2.8] Lite Translit
;; Синтаксис настройки: "Тип авторизации" "Авторизация" "Префикс"
;; Кавычки обязательны
;; Типы авторицации: f, i, s. f - флаг доступа; i - IP; s - steamid
;; Авторизация по IP и Steamid и Флагу доступа.
;; Цвета: !n - желтый; !g - зеленый; !t - цвет команды
;; Ставится первый префикс, который подходит по условию, то есть:
; Играет девушка, у нее есть админка.
; В чате надо чтобы писало Девушка, для этого префикс Девушка надо прописать выше чем префикс Администратор
;; Лимит префиксов - 64 байта или 32 символа в русской раскладке.

;; Примеры:
; "s" "STEAM_0:1:12345678" "Префикс по SteamId"
; "i" "123.123.123.123" "Префикс по IP"
; "f" "b" "Префикс по флагу"

;"f" "l" "!n[!gГл.Админ!n]"
;"f" "du" "!n[!gАдмин!n][!gVIP!n]"
;"f" "u" "!n[!gАдмин!n]"
"f" "t" "!n[!gVIP!n]"

C++:
#include <amxmodx>
#include <csstats>

#define IGNORE_FLAG ADMIN_LEVEL_A    /* flag "m" */

new pRanks, pFlags

public plugin_init() {
    register_plugin( "Top Awards", "0.11c", "Safety1st" )
    register_dictionary( "topawards.txt" )
    pRanks = register_cvar( "top_ranks", "3" )
    pFlags = register_cvar( "top_flags", "t" )
}

public client_putinserver(id) {
    set_task( 0.3, "CheckStats", id )    // we need to use delay otherwise we will get rank = 0
}

public CheckStats(id) {
    new iFlags = get_user_flags(id)
    new szAddFlags[16]
    get_pcvar_string( pFlags, szAddFlags, 15 )
    new iAddFlags  = read_flags(szAddFlags)

    if ( iFlags & IGNORE_FLAG || iFlags & iAddFlags == iAddFlags )
        // ignore player with IGNORE_FLAG or having all additional flags
        return

    new iRanks = get_pcvar_num(pRanks)
    if ( !iRanks )
        return

    new szStats[8], szBodyHits[8]
    new iRank = get_user_stats( id, szStats, szBodyHits )

    if ( iRank && iRank <= iRanks ) {
        // 1st check for safety. may be player not ranked at all yet
        set_user_flags( id, iFlags | iAddFlags )
        new data[2]
        data[0] = id
        data[1] = iRanks
        set_task( 5.0, "PrintMessage", _, data, 2 )
    }
}

public PrintMessage( data[2] ) {
    if ( !is_user_connected(data[0]) )
        return

    ColorPrint( data[0], "%L", data[0], "TOP_AWARDS", data[1] )
}

ColorPrint( iReceiver, const szRawMessage[ ], any:... ) {
    static iMsgSayText = 0
    if( !iMsgSayText )
        iMsgSayText = get_user_msgid( "SayText" )

    new szMessage[192]
    vformat( szMessage, charsmax(szMessage) - 1, szRawMessage, 3 )
    replace_all( szMessage, charsmax(szMessage) - 1, "!n", "^1" )
    replace_all( szMessage, charsmax(szMessage) - 1, "!t", "^3" )
    replace_all( szMessage, charsmax(szMessage) - 1, "!g", "^4" )
    if ( szMessage[0] != '^1' || szMessage[0] != '^3' || szMessage[0] != '^4' )
        format( szMessage, charsmax(szMessage) - 1, "^1%s", szMessage )    // we must set initial default color if it is not provided explicitly

    message_begin( MSG_ONE_UNRELIABLE, iMsgSayText, _, iReceiver )
    write_byte(iReceiver)    // use target player as sender to see colors at all (and his own team color for ^3)
    write_string(szMessage)
    message_end()
}
 
Последнее редактирование: Raptor X

Raptor X

Пользователь
Регистрация
31 Дек 2017
Сообщения
19
Симпатии
1
Raptor X, а настройки Lite translit покажите.
C++:
// *************************************************************************************//
// Плагин загружен с  www.neugomon.ru                                                   //
// Автор: Neygomon  [ https://neugomon.ru/members/1/ ]                                  //
// Официальная тема поддержки: https://neugomon.ru/threads/110/                         //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА!                //
// *************************************************************************************//
#include <amxmodx>
#include <ColorChat>
#if AMXX_VERSION_NUM < 183
    #include <colorchat>
#endif

/*
    Спасибо PRoSToTeM@ за новый способ транслитерации
*/

#define TAGS                    // Теги в чате Гл. Админ | Админ | VIP  [ По умолчанию включен ]
#if defined TAGS
#define LT_PREFIXES                // Свои префиксы. Файл addons/amxmodx/configs/lt_prefixes.ini [ По умолчанию выключен ]
#endif
#define STEAM                    // Тег стим игрока [ По умолчанию выключен ]
//#define GREEN_MSG                // Зеленый цвет чата админов и випов [ По умолчанию выключен ]
#define AES                        // Поддержка системы армейских званий - AES ( http://c-s.net.ua/forum/topic56564.html ) [ По умолчанию выключен ]
//#define DEF_RUS                    // Русский язык по умолчанию [ По умолчанию английский ]
#define GL_ADMIN     ADMIN_RCON    // Флаг доступа для тега "Гл. Админ" в чате
#define ADMIN         ADMIN_BAN    // Флаг доступа для тега "Админ" в чате
#define VIP        ADMIN_LEVEL_H    // Флаг доступа для тега "VIP" в чате
//#define ANTIFLOOD                // Замена стандартного плагина antiflood.amxx [ По умолчанию выключен ]
//#define AD_TIME        0.75    // Время между сообщениями, когда сработает антифлуд система
//#define ADMIN_ALLCHAT            // Показывать весь чат админам [ По умолчанию включен ]
//#define DEFAULT_CS_CHAT        // Cтандартный чат кс  [ По умолчанию выключен ]. Живые общаются только с живыми, мертвые с мертвыми. Админ видит весь чат, если ADMIN_ALLCHAT


#if defined AES
enum _:
{
    AES_ST_EXP,
    AES_ST_LEVEL,
    AES_ST_BONUSES,
    AES_ST_NEXTEXP,
    AES_ST_END
};
native aes_get_player_stats(id, data[4]);
native aes_get_level_name(lvlnum, level[], len, idLang = 0);

public plugin_natives()
    set_native_filter("native_filter");
    
public native_filter(const name[], index, trap)
    return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
#endif   

new const g_chConvert[94 * 2 char] =
{
    0x2100D0AD, 0x2300D0B6, 0x25003F00, 0xD18D2800, 0x29002A00, 0x2B00D0B1, 0x2D00D18E, 0x2E003000,
    0x31003200, 0x33003400, 0x35003600, 0x37003800, 0x3900D096, 0xD0B6D091, 0x3D00D0AE, 0x2C002200,
    0xD0A4D098, 0xD0A1D092, 0xD0A3D090, 0xD09FD0A0, 0xD0A8D09E, 0xD09BD094, 0xD0ACD0A2, 0xD0A9D097,
    0xD099D09A, 0xD0ABD095, 0xD093D09C, 0xD0A6D0A7, 0xD09DD0AF, 0xD1855C00, 0xD18A3A00, 0x5F00D191,
    0xD184D0B8, 0xD181D0B2, 0xD183D0B0, 0xD0BFD180, 0xD188D0BE, 0xD0BBD0B4, 0xD18CD182, 0xD189D0B7,
    0xD0B9D0BA, 0xD18BD0B5, 0xD0B3D0BC, 0xD186D187, 0xD0BDD18F, 0xD0A52F00, 0xD0AAD081
};

new bool:g_bUseRus[33];
#if defined STEAM
new bool:g_bIsSteam[33];
#endif
#if defined LT_PREFIXES
enum _:DATA
{
    TYPE[2],
    AUTH[32],
    PREFIX[64]
};
new Array:g_aData, g_PlayerData[DATA];
new g_szPrefix[33][64];
#endif

#define    GetBit(%1,%2)        (%1 & (1 << (%2 & 31)))
#define    SetBit(%1,%2)        %1 |= (1 << (%2 & 31))
#define    ResetBit(%1,%2)        %1 &= ~(1 << (%2 & 31))
#if defined ADMIN_ALLCHAT
new g_bitAdmin;
#endif
new g_bitAlive;

public plugin_init()
{
#define VERSION "2.8"
    register_plugin("Lite Translit", VERSION, "neygomon");
    register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
    
    register_clcmd("say /rus", "LangCtrlRus");
    register_clcmd("say /eng", "LangCtrlEng");
    
    register_clcmd("say", "HandlerSay");
    register_clcmd("say_team", "HandlerSayTeam");
    
    register_event("ResetHUD", "eResetHUD", "be");
    register_event("DeathMsg", "eDeathMsg", "a", "1>0");
    
    TeamInfo = get_user_msgid("TeamInfo");
    SayText = get_user_msgid("SayText");

}

#if defined LT_PREFIXES
public plugin_cfg()
{
    g_aData = ArrayCreate(DATA);

    new buff[256], fp = fopen("addons/amxmodx/configs/lt_prefixes.ini", "rt");
    if(!fp) return set_fail_state("File ^"addons/amxmodx/configs/lt_prefixes.ini^" not found");

    while(!feof(fp))
    {
        fgets(fp, buff, charsmax(buff));
        if(buff[0] && buff[0] != ';' && parse(buff, g_PlayerData[TYPE], charsmax(g_PlayerData[TYPE]), g_PlayerData[AUTH], charsmax(g_PlayerData[AUTH]), g_PlayerData[PREFIX], charsmax(g_PlayerData[PREFIX])))
            ArrayPushArray(g_aData, g_PlayerData);
    }
    return fclose(fp);
}
#endif
public client_putinserver(id)
{
#if defined LT_PREFIXES
    SearchClient(id);
#endif   
#if defined DEF_RUS
    g_bUseRus[id] = true;
#else
    g_bUseRus[id] = false;
#endif
#if defined STEAM
    g_bIsSteam[id] = is_user_steam(id) ? true : false;
#endif
#if defined ADMIN_ALLCHAT
    if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id);
    else ResetBit(g_bitAdmin, id);
#endif
}

public client_disconnected(id)     ResetBit(g_bitAlive, id);
public eResetHUD(id)         SetBit(g_bitAlive, id);
public eDeathMsg()         ResetBit(g_bitAlive, read_data(2));   

public HandlerSay(id) return FormatMsg(id, false);
public HandlerSayTeam(id) return FormatMsg(id, true);

public LangCtrlRus(id)
{
    if(g_bUseRus[id])
        ColorChat(id, NORMAL, "^1[^4Сервер^1] Русский язык УЖЕ включен!");
    else
    {
        ColorChat(id, NORMAL, "^1[^4Сервер^1] Русский язык активирован!");
        g_bUseRus[id] = true;
        client_cmd(id, "spk buttons/blip1.wav");
    }
}

public LangCtrlEng(id)
{
    if(!g_bUseRus[id])
        ColorChat(id, NORMAL, "^1[^4Сервер^1] Английский язык УЖЕ включен!");
    else
    {
        ColorChat(id, NORMAL, "^1[^4Сервер^1] Английский язык активирован!");
        g_bUseRus[id] = false;
        client_cmd(id, "spk buttons/blip1.wav");
    }
}

FormatMsg(id, bool:IsTeam)
{
#define MAX_BYTES 180
    static sMessage[MAX_BYTES], sConvertStr[charsmax(sMessage) * 2 + 1];
    read_args(sMessage, charsmax(sMessage));
    remove_quotes(sMessage); trim(sMessage);

    if(sMessage[0] == EOS || sMessage[0] == '/')
        return PLUGIN_HANDLED_MAIN;
#if defined ANTIFLOOD
    static Float:fTimeFlood[33], Float:fGameTime, iFloodWarn[33];
        
    if(fTimeFlood[id] > (fGameTime = get_gametime()))
    {
        if(++iFloodWarn[id] > 2)
        {           
            ColorChat(id, NORMAL, "^1[^4Сервер^1] Прекрати флудить!");
            fTimeFlood[id] = fGameTime + AD_TIME + 3.0;
            return PLUGIN_HANDLED;
        }
    }
    else if(iFloodWarn[id]) iFloodWarn[id]--;
    fTimeFlood[id] = fGameTime + AD_TIME;
#endif
    static iLen, sTags[MAX_BYTES], idTeam, sTeam[16];
    idTeam  = get_user_team(id, sTeam, charsmax(sTeam));

    switch(idTeam)
    {
        case 1: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3TT^1] ": "");
        case 2: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3CT^1] ": "");
        default:iLen = formatex(sTags, charsmax(sTags), "^1*^3Spec^1* ");
    }
#if defined GREEN_MSG || (defined TAGS && !defined LT_PREFIXES)
    static IsAccess; IsAccess = CheckFlags(id);
#endif   

#if defined STEAM
    if(g_bIsSteam[id])
        iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4Steam^1] ");
#endif
#if defined AES
    static AESLvl[33][64], aStats[AES_ST_END];
    aes_get_player_stats(id, aStats); aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], charsmax(AESLvl[]), LANG_SERVER);
    iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4%s^1] ", AESLvl[id]);
#endif

#if defined TAGS   
    #if defined LT_PREFIXES
    if(g_szPrefix[id][0])
    {
        replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1");
        replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3");
        replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4");
        iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s ", g_szPrefix[id]);
    }   
    #else
    static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " };
    iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s", szAdminPrefix[IsAccess]);
    #endif
#endif   
    static sName[32];
    get_user_name(id, sName, charsmax(sName));
#if defined GREEN_MSG
    iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%s^1 :  %s", sName, IsAccess ? "^4" : "");
#else
    iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%s^1 :  ", sName);
#endif
    if(g_bUseRus[id])
    {
        new nLen;
        for(new n; sMessage[n] != EOS; n++)
        {
            if('!' <= sMessage[n] <= '~')
            {
                sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2};
                if(g_chConvert{(sMessage[n] - '!') * 2 + 1} != EOS)
                    sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2 + 1};
            }
            else sConvertStr[nLen++] = sMessage[n];
        }
        sConvertStr[nLen] = EOS;
    }
    else sConvertStr = sMessage;
    
    static iByteLimit; iByteLimit = MAX_BYTES;
    while(iLen + strlen(sConvertStr) > MAX_BYTES)
        sConvertStr[iByteLimit -= 10] = 0;
    
    iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, sConvertStr);
    
    static players[32], pcount; get_players(players, pcount, "c");
    switch(IsTeam)
    {
        case true:
        {
            for(new i; i < pcount; i++)
            {
#if defined ADMIN_ALLCHAT               
                if(GetBit(g_bitAdmin, players[i]) || (GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i])))
#else
                if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i]))
#endif
                    SendMsgChat(players[i], idTeam, sTags);
            }                               
        }
        case false:
        {   
            for(new i; i < pcount; i++)
#if defined DEFAULT_CS_CHAT           
    #if defined ADMIN_ALLCHAT           
                if(GetBit(g_bitAdmin, players[i]) || GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]))
    #else
                if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]))
    #endif               
                    SendMsgChat(players[i], idTeam, sTags);
#else
                SendMsgChat(players[i], idTeam, sTags);
#endif   
        }
    }
    static sAuthId[25]; get_user_authid(id, sAuthId, charsmax(sAuthId));
    log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, IsTeam ? "say_team" : "say" , sConvertStr);   
    return PLUGIN_HANDLED;
}

stock SendMsgChat(player, team, msg[])
{
    switch(team)
    {
        case 1: client_print_color(player, print_team_red, msg);
        case 2: client_print_color(player, print_team_blue, msg);
        default:client_print_color(player, print_team_grey, msg);
    }
}

stock SearchClient(const id)
{
    for(new i; i < ArraySize(g_aData); i++)
    {
        ArrayGetArray(g_aData, i, g_PlayerData);
        switch(g_PlayerData[TYPE])
        {
            case 'f':
            {
                if(get_user_flags(id) & read_flags(g_PlayerData[AUTH]))
                    return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
            }   
            case 'i':
            {
                static sIP[16]; get_user_ip(id, sIP, charsmax(sIP), 1);
                if(!strcmp(g_PlayerData[AUTH], sIP))
                    return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
            }       
            case 's':
            {
                static sAuthid[25]; get_user_authid(id, sAuthid, charsmax(sAuthid));
                if(!strcmp(g_PlayerData[AUTH], sAuthid))
                    return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
            }       
        }
    }
    return g_szPrefix[id][0] = 0;
}

stock CheckFlags(id)
{
    static iFlags; iFlags = get_user_flags(id);
    if(iFlags & GL_ADMIN)     return 1;
    else if(iFlags & ADMIN) return 2;
    else if(iFlags & VIP)     return 3;
    return 0;
}

stock bool:is_user_steam(id)
{
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}