Официалният форум на iPlay.bg 

Помощ и въпроси свързани с направата/настройката на вашите сървъри, въпроси за добавянето на плъгини, настройването им и прочие.
 #400151  от cs_4ever
 нед окт 16, 2016 11:46 pm
Понеже в един друг форум ме отрязаха главните по незнайна за мен причина , защото трябва да си на тяхното ниво за да посещаваш сайта им и така на татък реших да пусна една темичка тук и се надявам някой смел рицар да ми помогне .
Код: Избери всички
#include <amxmodx>
#include <colorchat>

#define PLUGIN_VERSION "2.2 [With Personal Prefix]"
#define PREFIX_LENGTH 16
//#define USE_JAILBREAK

#if defined USE_JAILBREAK
    #define PREFIX_SIMON 5
    native is_user_simon(id)
#endif

enum
{
    INFO_PREFIX = 1,
    INFO_CLRNAME,
    INFO_CLRCHAT,
    INFO_CLRSCND
}

#define ADMIN_LISTEN "m"

new const g_szAdminPrefixes[][] = {
/*
    --------------
    Флаг     Префикс                 Цвят (ник)     Цвят (чат)     Цвят (second) */
    "",     "",                        "second",     "normal",     "team",
    "d",     "^3[Admin]",             "second",     "normal",     "team"
}

new const g_szSeparator[] = " ^1:"
new const g_szDeathPrefix[][] = { "*DEAD* ", "" }
new const g_szColors[][] = { "^1", "^3", "^4" }
new g_szAdminPrefix[33][32],
    g_szPersonalPrefix[33][PREFIX_LENGTH]
    
new const g_szCommand[] = "/pref"

new const g_szTeamPrefix[][] = {
    "",
    "^1(Terrorist)",
    "^1(Counter-Terrorist)",
    "^1(Spectator)"
}

public plugin_init()
{
    register_plugin("Chat Manager", PLUGIN_VERSION, "OciXCrom")
    register_cvar("CRXChatManager", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
    register_clcmd("say", "hookSay")
    register_clcmd("say_team", "hookSay")
}

public plugin_natives()
    register_native("GetPlayerPrefix", "_GetPlayerPrefix")
    
public _GetPlayerPrefix(iPlugin, iParams)
{
    new id = get_param(1)
    set_string(2, g_szAdminPrefix[id], get_param(3))
    return 1
}

public client_putinserver(id)
{
    g_szAdminPrefix[id][0] = EOS
    g_szPersonalPrefix[id][0] = EOS
}

public hookSay(id)
{
    new szArgs[192]
    read_args(szArgs, charsmax(szArgs))
    remove_quotes(szArgs)
    
    switch(szArgs[0])
    {
        case EOS, '@': return PLUGIN_HANDLED
    }
    
    if(equal(szArgs[0], g_szCommand, charsmax(g_szCommand)))
    {
        replace(szArgs, charsmax(szArgs), g_szCommand, "")
        trim(szArgs)
        
        if(is_blank(szArgs))
        {
            g_szPersonalPrefix[id][0] = EOS
            ColorChat(id, NORMAL, "* Your personal prefix has been ^3removed^1.")
        }
        else
        {
            format(szArgs, charsmax(szArgs), "^3[%s]", szArgs)
            copy(g_szPersonalPrefix[id], charsmax(g_szPersonalPrefix[]), szArgs)
            ColorChat(id, NORMAL, "* Your personal prefix has been set to %s", szArgs)
        }
        
        return PLUGIN_HANDLED
    }        
    
    new szMessage[192], szName[32], szDeathPrefix[32], szTeamPrefix[32], szAdminPrefix[32], szCommand[5], szNameColor[3], szChatColor[3]
    new iAlive = is_user_alive(id) ? 1 : 0, iPrefix = get_prefixnum(id), iColor = get_secondcolor(g_szAdminPrefixes[iPrefix + INFO_CLRSCND]), iTeam = get_user_team(id)
    copy(szDeathPrefix, charsmax(szDeathPrefix), g_szDeathPrefix[iAlive])
    
    if(!is_blank(g_szPersonalPrefix[id]))
        copy(szAdminPrefix, charsmax(szAdminPrefix), g_szPersonalPrefix[id])
    else
        copy(szAdminPrefix, charsmax(szAdminPrefix), g_szAdminPrefixes[iPrefix + INFO_PREFIX])
        
    if(!is_blank(szAdminPrefix)) add(szAdminPrefix, charsmax(szAdminPrefix), " ")
    copy(g_szAdminPrefix[id], charsmax(g_szAdminPrefix[]), szAdminPrefix)
    get_color(g_szAdminPrefixes[iPrefix + INFO_CLRNAME], szNameColor)
    get_color(g_szAdminPrefixes[iPrefix + INFO_CLRCHAT], szChatColor)
    read_argv(0, szCommand, charsmax(szCommand))
    get_user_name(id, szName, charsmax(szName))
    
    new bool:blTeam = szCommand[3] == '_' ? true : false
    if(blTeam) formatex(szTeamPrefix, charsmax(szTeamPrefix), "%s ", g_szTeamPrefix[iTeam])
    formatex(szMessage, charsmax(szMessage), "%s%s%s%s%s%s %s%s", szDeathPrefix, szTeamPrefix, szAdminPrefix, szNameColor, szName, g_szSeparator, szChatColor, szArgs)
    
    new iPlayers[32], iPlayer, iPlayerAlive, iPnum
    get_players(iPlayers, iPnum)
    
    for(new i; i < iPnum; i++)
    {
        iPlayer = iPlayers[i]
        iPlayerAlive = is_user_alive(iPlayer) ? 1 : 0
        
        if(iAlive == iPlayerAlive || (blTeam && iTeam == get_user_team(iPlayer)) || has_user_listen(iPlayer))
        {
            switch(iColor)
            {
                case 0:
                {
                    switch(iTeam)
                    {
                        case 1: ColorChat(iPlayer, RED, szMessage)
                        case 2: ColorChat(iPlayer, BLUE, szMessage)
                        case 3: ColorChat(iPlayer, GREY, szMessage)
                    }
                }
                case 1: ColorChat(iPlayer, RED, szMessage)
                case 2: ColorChat(iPlayer, BLUE, szMessage)
                case 3: ColorChat(iPlayer, GREY, szMessage)
            }
        }
    }
    
    logChatMessage(szMessage)
    return PLUGIN_HANDLED
}

logChatMessage(szMessage[192])
{
    for(new i; i < sizeof(g_szColors); i++)
        replace_all(szMessage, charsmax(szMessage), g_szColors[i], "")
    
    log_amx(szMessage)
}

get_prefixnum(id)
{    
    #if defined USE_JAILBREAK
        if(is_user_simon(id))
            return PREFIX_SIMON
    #endif
    
    new iPrefix
    static iFlags
    iFlags = get_user_flags(id)
    
    for(new i; i < sizeof(g_szAdminPrefixes) - 4; i += 5)
    {
        if(iFlags & read_flags(g_szAdminPrefixes[i]))
        {
            iPrefix = i
            break
        }
    }
    
    return iPrefix
}
    
get_color(szString[], szColor[3])
{
    new iColor
    
    switch(szString[0])
    {
        case 't', 's': iColor = 1
        case 'g': iColor = 2
    }
    
    copy(szColor, charsmax(szColor), g_szColors[iColor])
}

get_secondcolor(szString[])
{
    new iColor
    
    switch(szString[0])
    {
        case 'r': iColor = 1
        case 'b': iColor = 2
        case 'g': iColor = 3
    }
    
    return iColor
}

bool:is_blank(szString[])
    return szString[0] == EOS ? true : false
    
bool:has_user_listen(id)
    return get_user_flags(id) & read_flags(ADMIN_LISTEN) ? true : false
 #400153  от OciXCrom™
 пон окт 17, 2016 1:49 am
Мда, познай кой от главните там е главен и тук. Обясних ти от А до Я какво трябва да направиш, че даже и цял компилатор ти дадоха. Плъгинът съм го тествал и работи без грешка. Щом не ти харесват "главните", можеш свободно да търсиш помощ при бавните, където са на твое ниво. Както аз се помъчих да ти направя плъгина (и 10 други), така и ти ще се помъчиш да си го компилираш. За напред недей да плюеш хората от които ще търсиш помощ, научи се да бъдеш благодарен и спри да чакаш наготово.

Sent from my HTC Desire 610 using Tapatalk