Русское сообщество по скриптингу

Lite Translit сообщения красным цветом

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Lite Translit сообщения красным цветом

Сообщение dvahitov95 » 16 сен 2017, 17:18

Всем привет. Возможно ли сделать, чтобы админы писали в чате не зеленым, а красным постоянно?

Код: Выделить всё
// *************************************************************************************//
// Плагин загружен с  www.neugomon.ru                                                   //
// Автор: Neygomon  [ https://neugomon.ru/members/1/ ]                                  //
// Официальная тема поддержки: https://neugomon.ru/threads/110/                         //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА!                //
// *************************************************************************************//
#include <amxmodx>
#if AMXX_VERSION_NUM < 183 
    #include <colorchat>
#endif

/*
    Спасибо [email protected] за новый способ транслитерации
*/

#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(iddata[4]);
native aes_get_level_name(lvlnumlevel[], lenidLang 0);

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

new const g_chConvert[94 2 char] = 
{
    
0x2100D0AD0x2300D0B60x25003F000xD18D28000x29002A000x2B00D0B10x2D00D18E0x2E003000,
    
0x310032000x330034000x350036000x370038000x3900D0960xD0B6D0910x3D00D0AE0x2C002200,
    
0xD0A4D0980xD0A1D0920xD0A3D0900xD09FD0A00xD0A8D09E0xD09BD0940xD0ACD0A20xD0A9D097,
    
0xD099D09A0xD0ABD0950xD093D09C0xD0A6D0A70xD09DD0AF0xD1855C000xD18A3A000x5F00D191,
    
0xD184D0B80xD181D0B20xD183D0B00xD0BFD1800xD188D0BE0xD0BBD0B40xD18CD1820xD189D0B7,
    
0xD0B9D0BA0xD18BD0B50xD0B3D0BC0xD186D1870xD0BDD18F0xD0A52F000xD0AAD081
};

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_aDatag_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"VERSIONFCVAR_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");
}

#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(fpbuffcharsmax(buff));
        if(
buff[0] && buff[0] != ';' && parse(buffg_PlayerData[TYPE], charsmax(g_PlayerData[TYPE]), g_PlayerData[AUTH], charsmax(g_PlayerData[AUTH]), g_PlayerData[PREFIX], charsmax(g_PlayerData[PREFIX])))
            
ArrayPushArray(g_aDatag_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_CHATSetBit(g_bitAdminid);
    else 
ResetBit(g_bitAdminid);
#endif
}

public 
client_disconnected(id)     ResetBit(g_bitAliveid);
public 
eResetHUD(id)         SetBit(g_bitAliveid);
public 
eDeathMsg()         ResetBit(g_bitAliveread_data(2));    

public 
HandlerSay(id) return FormatMsg(idfalse);
public 
HandlerSayTeam(id) return FormatMsg(idtrue);

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

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


FormatMsg(idbool:IsTeam)
{
#define MAX_BYTES 180
    
static sMessage[MAX_BYTES], sConvertStr[charsmax(sMessage) * 1]; 
    
read_args(sMessagecharsmax(sMessage));
    
remove_quotes(sMessage); trim(sMessage);

    if(
sMessage[0] == EOS || sMessage[0] == '/')
        return 
PLUGIN_HANDLED_MAIN;
#if defined ANTIFLOOD
    
static Float:fTimeFlood[33], Float:fGameTimeiFloodWarn[33];
        
    if(
fTimeFlood[id] > (fGameTime get_gametime()))
    {
        if(++
iFloodWarn[id] > 2)
        {            
            
client_print(idprint_chat"*** [LT] Прекратите флудить! ***");
            
fTimeFlood[id] = fGameTime AD_TIME 3.0;
            return 
PLUGIN_HANDLED;
        }
    }
    else if(
iFloodWarn[id]) iFloodWarn[id]--;
    
fTimeFlood[id] = fGameTime AD_TIME;
#endif
    
static iLensTags[MAX_BYTES], idTeamsTeam[16];
    
idTeam  get_user_team(idsTeamcharsmax(sTeam));

    switch(
idTeam)
    {
        case 
1iLen formatex(sTagscharsmax(sTags), "%s%s"GetBit(g_bitAliveid) ? "^1" "^1*^3Мертвый^1* "IsTeam "^1[^3TT^1]" "");
        case 
2iLen formatex(sTagscharsmax(sTags), "%s%s"GetBit(g_bitAliveid) ? "^1" "^1*^3Мертвый^1* "IsTeam "^1[^3CT^1]" "");
        default:
iLen formatex(sTagscharsmax(sTags), "^1*^3Spec^1* ");
    }
#if defined GREEN_MSG || (defined TAGS && !defined LT_PREFIXES)
    
static IsAccessIsAccess CheckFlags(id);
#endif    
#if defined AES
    
static AESLvl[33][64], aStats[AES_ST_END];
    
aes_get_player_stats(idaStats); aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], charsmax(AESLvl[]), LANG_SERVER);
    
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen"^4[%s] "AESLvl[id]);
#endif
#if defined STEAM
    
if(g_bIsSteam[id])
        
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen"^1[^4Steam^1] ");
#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(idsNamecharsmax(sName));
#if defined GREEN_MSG
    
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen"^3%s^1 :  %s"sNameIsAccess "^4" "");
#else
    
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen"^3%s^1 :  "sName);
#endif 
    
if(g_bUseRus[id])
    {
        new 
nLen;
        for(new 
nsMessage[n] != EOSn++)
        {
            if(
'!' <= sMessage[n] <= '~')
            {
                
sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2};
                if(
g_chConvert{(sMessage[n] - '!') * 1} != EOS)
                    
sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 1};
            } 
            else 
sConvertStr[nLen++] = sMessage[n];
        }
        
sConvertStr[nLen] = EOS;
    } 
    else 
sConvertStr sMessage;
    
    static 
iByteLimitiByteLimit MAX_BYTES;
    while(
iLen strlen(sConvertStr) > MAX_BYTES)
        
sConvertStr[iByteLimit -= 10] = 0;
    
    
iLen += formatex(sTags[iLen], charsmax(sTags) - iLensConvertStr);
    
    static 
players[32], pcountget_players(playerspcount"c");
    switch(
IsTeam)
    {
        case 
true:
        {
            for(new 
ipcounti++)
            {
#if defined ADMIN_ALLCHAT                
                
if(GetBit(g_bitAdminplayers[i]) || (GetBit(g_bitAliveid) == GetBit(g_bitAliveplayers[i]) && idTeam == get_user_team(players[i])))
#else
                
if(GetBit(g_bitAliveid) == GetBit(g_bitAliveplayers[i]) && idTeam == get_user_team(players[i]))
#endif
                    
SendMsgChat(players[i], idTeamsTags);
            }                                
        }
        case 
false:
        {    
            for(new 
ipcounti++)
#if defined DEFAULT_CS_CHAT            
    #if defined ADMIN_ALLCHAT            
                
if(GetBit(g_bitAdminplayers[i]) || GetBit(g_bitAliveid) == GetBit(g_bitAliveplayers[i]))
    
#else
                
if(GetBit(g_bitAliveid) == GetBit(g_bitAliveplayers[i]))
    
#endif                
                    
SendMsgChat(players[i], idTeamsTags);
#else
                
SendMsgChat(players[i], idTeamsTags);
#endif    
        
}
    }
    static 
sAuthId[25]; get_user_authid(idsAuthIdcharsmax(sAuthId));
    
log_message("^"%s<%d><%s><%s>^" %s ^"%s^""sNameget_user_userid(id), sAuthIdsTeamIsTeam "say_team" "say" sConvertStr);    
    return 
PLUGIN_HANDLED;
}

stock SendMsgChat(playerteammsg[])
{
    switch(
team)
    {
        case 
1client_print_color(playerprint_team_redmsg);
        case 
2client_print_color(playerprint_team_bluemsg);
        default:
client_print_color(playerprint_team_greymsg);
    }
}

stock SearchClient(const id)
{
    for(new 
iArraySize(g_aData); i++)
    {
        
ArrayGetArray(g_aDataig_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(idsIPcharsmax(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(idsAuthidcharsmax(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 
iFlagsiFlags 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;
}   
Аватара пользователя
dvahitov95
 
Сообщения: 133
Зарегистрирован: 07 авг 2017, 17:48
Предупреждения: 1
Благодарил (а): 16 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Lite Translit сообщения красным цветом

Сообщение Subb98 » 16 сен 2017, 17:38

1. Возможно.
2. Менять это нужно тут:

Код: Выделить всё
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%s^1 :  %s", sName, IsAccess ? "^4" : ""); 

>>

Код: Выделить всё
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%s^1 :  %s", sName, IsAccess ? "^3" : ""); 

3. Нужно менять TeamInfo админа на "TERRORIST" перед отправкой сообщения и потом возвращать обратно.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 4824
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1272 раз.
Поблагодарили: 2184 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn, PHP

Re: Lite Translit сообщения красным цветом

Сообщение dvahitov95 » 16 сен 2017, 18:17

нашёл плагин как раз с этим TeamInfo, но только не совсем понятно, что нужно из этого исходника взять для себя

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>

#define PLUGIN         "Admin Chat Colors"
#define VERSION     "2.0"
#define AUTHOR         "Arion"

#define ACCESS_LEVEL    ADMIN_CHAT
#define ADMIN_LISTEN    ADMIN_BAN

new message[192]
new 
sayText
new teamInfo
new maxPlayers

new g_MessageColor
new g_NameColor
new g_AdminListen

new strName[191]
new 
strText[191]
new 
alive[11]

public 
plugin_init()
{
    
register_plugin (PLUGINVERSIONAUTHOR)
    
    
g_MessageColor register_cvar ("amx_color""2"// Message colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red

    
g_NameColor register_cvar ("amx_namecolor""6"// Name colors: [1] Default Yellow, [2] Green, [3] White, [4] Blue, [5] Red, [6] Team-color
    
    
g_AdminListen register_cvar ("amx_listen""1"// Set whether admins see or not all messages (Alive, dead and team-only)
    
    
    
sayText get_user_msgid ("SayText")
    
teamInfo get_user_msgid ("TeamInfo")
    
maxPlayers get_maxplayers()
    
    
    
register_message (sayText"avoid_duplicated")
    
    
register_clcmd ("amx_color""set_color"ACCESS_LEVEL"<color>")
    
register_clcmd ("amx_namecolor""set_name_color"ACCESS_LEVEL"<color>")
    
register_clcmd ("amx_listen""set_listen"ACCESS_LEVEL"<1 | 0>")
    
    
register_clcmd ("say""hook_say")
    
register_clcmd ("say_team""hook_teamsay")
}


public 
avoid_duplicated (msgIdmsgDestreceiver)
{
    return 
PLUGIN_HANDLED
}


public 
hook_say(id)
{
    
read_args (message191)
    
remove_quotes (message)
    
    if (
message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message"")) // Ignores Admin Hud Messages, Admin Slash commands, 
                                                   // Gungame commands and empty messages
        
return PLUGIN_CONTINUE

        
    
new name[32]
    
get_user_name (idname31)
    
    new 
bool:admin false
    
    
if (get_user_flags(id) & ACCESS_LEVEL)
        
admin true
        
    
    
new isAlive
    
    
if (is_user_alive (id))
        {
            
isAlive 1
            alive 
"^x01"
        
}
    else
        {
            
isAlive 0
            alive 
"^x01*DEAD* "
        
}
    
    static 
color[10]
    

    
    if (
admin)
        {
            
// Name
            
switch (get_pcvar_num (g_NameColor))
                {
                    case 
1:
                        
format (strName191"%s%s"alivename)

                    case 
2:
                        
format (strName191"%s^x04%s"alivename)
                        
                    case 
3:
                        {
                            
color "SPECTATOR"
                            
format (strName191"%s^x03%s"alivename)
                        }
                        
                    case 
4:
                        {
                            
color "CT"
                            
format (strName191"%s^x03%s"alivename)
                        }

                    case 
5:
                        {
                            
color "TERRORIST"
                            
format (strName191"%s^x03%s"alivename)
                        }
                    
                    case 
6:
                        {
                            
get_user_team (idcolor9)
                                
                            
format (strName191"%s^x03%s"alivename)
                        }
                }
            
            
            
// Message
            
switch (get_pcvar_num (g_MessageColor))
                {
                    case 
1:    // Yellow
                        
format (strText191"%s"message)
                        
                    case 
2:    // Green
                        
format (strText191"^x04%s"message)
                        
                    case 
3:    // White
                        
{
                            
copy (color9"SPECTATOR")
                            
format (strText191"^x03%s"message)
                        }

                    case 
4:    // Blue
                        
{
                            
copy (color9"CT")
                            
format (strText191"^x03%s"message)
                        }
                        
                    case 
5:    // Red
                        
{
                            
copy (color9"TERRORIST")
                            
format (strText191"^x03%s"message)
                        }
                }
        }
    
    else     
// Player is not admin. Team-color name : Yellow message
        
{
            
get_user_team (idcolor9)
            
            
format (strName191"%s^x03%s"alivename)
            
            
format (strText191"%s"message)
        }

    
format (message191"%s^x01 :  %s"strNamestrText)
            
    
sendMessage (colorisAlive)    // Sends the colored message
    
    
return PLUGIN_CONTINUE
}


public 
hook_teamsay(id)
{
    new 
playerTeam get_user_team(id)
    new 
playerTeamName[19]
    
    switch (
playerTeam// Team names which appear on team-only messages
        
{
            case 
1:
                
copy (playerTeamName11"Terrorists")
                
            case 
2:
                
copy (playerTeamName18"Counter-Terrorists")
                
            default:
                
copy (playerTeamName9"Spectator")
        }
        
    
read_args (message191)
    
remove_quotes (message)
    
    if (
message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message"")) // Ignores Admin Hud Messages, Admin Slash commands, 
                                                   // Gungame commands and empty messages
        
return PLUGIN_CONTINUE

        
    
new name[32]
    
get_user_name (idname31)
    
    new 
bool:admin false
    
    
if (get_user_flags(id) & ACCESS_LEVEL)
        
admin true
        
    
    
new isAlive
    
    
if (is_user_alive (id))
        {
            
isAlive 1
            alive 
"^x01"
        
}
    else
        {
            
isAlive 0
            alive 
"^x01*DEAD* "
        
}
    
    static 
color[10]
    

    
    if (
admin)
        {
            
// Name
            
switch (get_pcvar_num (g_NameColor))
                {
                    case 
1:
                        
format (strName191"%s(%s) %s"aliveplayerTeamNamename)

                    case 
2:
                        
format (strName191"%s(%s) ^x04%s"aliveplayerTeamNamename)
                        
                    case 
3:
                        {
                            
color "SPECTATOR"
                            
format (strName191"%s(%s) ^x03%s"aliveplayerTeamNamename)
                        }
                        
                    case 
4:
                        {
                            
color "CT"
                            
format (strName191"%s(%s) ^x03%s"aliveplayerTeamNamename)
                        }

                    case 
5:
                        {
                            
color "TERRORIST"
                            
format (strName191"%s(%s) ^x03%s"aliveplayerTeamNamename)
                        }
                    
                    case 
6:
                        {
                            
get_user_team (idcolor9)
                                
                            
format (strName191"%s(%s) ^x03%s"aliveplayerTeamNamename)
                        }
                }
            
            
            
// Message
            
switch (get_pcvar_num (g_MessageColor))
                {
                    case 
1:    // Yellow
                        
format (strText191"%s"message)
                        
                    case 
2:    // Green
                        
format (strText191"^x04%s"message)
                        
                    case 
3:    // White
                        
{
                            
copy (color9"SPECTATOR")
                            
format (strText191"^x03%s"message)
                        }

                    case 
4:    // Blue
                        
{
                            
copy (color9"CT")
                            
format (strText191"^x03%s"message)
                        }
                        
                    case 
5:    // Red
                        
{
                            
copy (color9"TERRORIST")
                            
format (strText191"^x03%s"message)
                        }
                }
        }
    
    else     
// Player is not admin. Team-color name : Yellow message
        
{
            
get_user_team (idcolor9)
            
            
format (strName191"%s(%s) ^x03%s"aliveplayerTeamNamename)
            
            
format (strText191"%s"message)
        }
    
    
format (message191"%s ^x01:  %s"strNamestrText)
    
    
sendTeamMessage (colorisAliveplayerTeam)    // Sends the colored message
    
    
return PLUGIN_CONTINUE    
}


public 
set_color (idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED
        
    
new arg[1], newColor
    read_argv 
(1arg1)
    
    
newColor str_to_num (arg)
    
    if (
newColor >= && newColor <= 5)
        {
            
set_cvar_num ("amx_color"newColor)
            
set_pcvar_num (g_MessageColornewColor)
    
            if (
get_pcvar_num (g_NameColor) != &&
                   ((
newColor == &&  get_pcvar_num (g_NameColor) != 3)
                 || (
newColor == &&  get_pcvar_num (g_NameColor) != 4)
                 || (
newColor == &&  get_pcvar_num (g_NameColor) != 5)))
                {
                    
set_cvar_num ("amx_namecolor"2)
                    
set_pcvar_num (g_NameColor2)
                }
        }
        
    return 
PLUGIN_HANDLED
}


public 
set_name_color (idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED
        
    
new arg[1], newColor
    read_argv 
(1arg1)
    
    
newColor str_to_num (arg)
    
    if (
newColor >= && newColor <= 6)
        {
            
set_cvar_num ("amx_namecolor"newColor)
            
set_pcvar_num (g_NameColornewColor)
            
            if ((
get_pcvar_num (g_MessageColor) != 1
                
&& ((newColor == &&  get_pcvar_num (g_MessageColor) != 3)
                 || (
newColor == &&  get_pcvar_num (g_MessageColor) != 4)
                 || (
newColor == &&  get_pcvar_num (g_MessageColor) != 5)))
                 || 
get_pcvar_num (g_NameColor) == 6)
                {
                    
set_cvar_num ("amx_color"2)
                    
set_pcvar_num (g_MessageColor2)
                }
        }
    
    return 
PLUGIN_HANDLED
}


public 
set_listen (idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED
        
    
new arg[1], newListen
    read_argv
(1arg1)
    
    
newListen str_to_num (arg)
    
    
set_cvar_num ("amx_listen"newListen)
    
set_pcvar_num (g_AdminListennewListen)
    
    return 
PLUGIN_HANDLED
}


public 
sendMessage (color[], alive)
{
    new 
teamName[10]
    
    for (new 
player 1player maxPlayersplayer++)
        {
            if (!
is_user_connected(player))
                continue

            if (
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
                {
                    
get_user_team (playerteamName9)    // Stores user's team name to change back after sending the message
                    
                    
changeTeamInfo (playercolor)        // Changes user's team according to color choosen
                    
                    
writeMessage (playermessage)        // Writes the message on player's chat
                    
                    
changeTeamInfo (playerteamName)    // Changes user's team back to original
                
}
        }
}


public 
sendTeamMessage (color[], aliveplayerTeam)
{
    new 
teamName[10]
    
    for (new 
player 1player maxPlayersplayer++)
        {
            if (!
is_user_connected(player))
                continue

            if (
get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
                {
                    if (
alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
                        {
                            
get_user_team (playerteamName9)    // Stores user's team name to change back after sending the message
                            
                            
changeTeamInfo (playercolor)        // Changes user's team according to color choosen
                            
                            
writeMessage (playermessage)        // Writes the message on player's chat
                            
                            
changeTeamInfo (playerteamName)    // Changes user's team back to original
                        
}
                }
        }
}


public 
changeTeamInfo (playerteam[])
{
    
message_begin (MSG_ONEteamInfo_player)    // Tells to to modify teamInfo (Which is responsable for which time player is)
    
write_byte (player)                // Write byte needed
    
write_string (team)                // Changes player's team
    
message_end()                    // Also Needed
}


public 
writeMessage (playermessage[])
{
    
message_begin (MSG_ONEsayText, {000}, player)    // Tells to modify sayText (Which is responsable for writing colored messages)
    
write_byte (player)                    // Write byte needed
    
write_string (message)                    // Effectively write the message, finally, afterall
    
message_end ()                        // Needed as always
}
 
Аватара пользователя
dvahitov95
 
Сообщения: 133
Зарегистрирован: 07 авг 2017, 17:48
Предупреждения: 1
Благодарил (а): 16 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot], Google [Bot] и гости: 4