Редактиране на Rank+AdminPrefix система

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
arunbg
Извън линия
Потребител
Потребител
Мнения: 30
Регистриран на: 16 Окт 2016, 16:04

Редактиране на Rank+AdminPrefix система

Мнение от arunbg » 16 Окт 2016, 16:15

Ако може да профмените цвета на админ префиксите :
[#Rank] #Name: #text
Ако може да добавите (Teamchat)
(TeamChat) [#Rank] #Name: #text
(TeamChat) [#Rank] #Name: #text

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>  
#include <cstrike>
#include <chatcolor>
#include <fvault>

#define MaxLevels 6
#define IsPlayer(%1) (1 <= %1 <=  g_iMaxPlayers)

#define ADMIN1 "Head Admin"
#define ADMIN1_ACCESS ADMIN_LEVEL_A

#define ADMIN2 "Server Admin"
#define ADMIN2_ACCESS ADMIN_LEVEL_B

#define ADMIN3 "Global Admin"
#define ADMIN3_ACCESS ADMIN_LEVEL_C

#define ADMIN4 "V.I.P"
#define ADMIN4_ACCESS ADMIN_LEVEL_D

#define ADMIN5 "SMS Admin"
#define ADMIN5_ACCESS ADMIN_LEVEL_E

#define ADMIN6 "SMS V.I.P"
#define ADMIN6_ACCESS ADMIN_LEVEL_F

new gMaxPlayers, gMsgSayText, syncObj, Level[33], eXP[33]
new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg

new const g_vault_name[] = "levelsz";

new const Levels[MaxLevels +1] = 
{
    300,
    600, 
    1200, 
    2400, 
    4800, 
    9600,
	19200
}

new const Prefix[MaxLevels +1][] =
{
    "New Builder", 
    "Builder",
    "Killer", 
    "Legendary Killer",
    "Architect",
    "Supreme Architect", 
    "Old Builder"
}

public plugin_init() 
{
    register_plugin("Ranks & XP mod", "1.0", "alt.nick")
    
    register_event("DeathMsg","client_death","a") 
    register_clcmd("say", "hook_say")
    register_clcmd("say_team", "hook_say")
    
    register_clcmd("say /rank", "cmdRank")
    register_clcmd("say_team /rank", "cmdRank")
    
    register_clcmd("say /reset", "reset_xp")
    register_clcmd("say_team /reset", "reset_xp")
    
    ranks_hud = register_cvar("ranks_hud", "1")     // Дали да се появява хъд при влизане в сървъра. Включено 1/0 Изключено
    knife_xp = register_cvar("knife_xp", "3")     // Колко ХР да дава за убийство с нож.
    he_xp = register_cvar("he_xp", "3")        // Колко ХР да дава за убийство с Granata (HE).
    hs_xp = register_cvar("hs_xp", "2")        // Колко ХР да дава за убийство с Headshot.
    kill_xp = register_cvar("kill_xp", "1")        // Колко ХР да дава за нормално убийство.    
    kill_msg = register_cvar("kill_msg", "1")    // Дали да показва кой сте убили и колко ХР сте получили. Включено 1/0 Изключено
    
    register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_LEVEL_A, "<nick | ct | t | @all> <xp>")
    
    gMaxPlayers = get_maxplayers()
    gMsgSayText = get_user_msgid("SayText")

    syncObj     = CreateHudSyncObj()
    
    fvault_load(g_vault_name)
}

public ShowHud(id) 
{
    set_hudmessage(142, 239, -39, -1.90, 0.31, 0, 6.0, 1.0, 0.0, 0.0, -1)
    ShowSyncHudMsg(id, syncObj,"Rank: %s ^nXP: %i / %i ^nLevel: %i", Prefix[Level[id]], eXP[id], Levels[Level[id]], Level[id])
}

public client_putinserver(id)
{
    if(get_pcvar_num(ranks_hud) == 1)
        set_task(1.0, "ShowHud", id, _, _, "b")
        
    if(Level[id] < MaxLevels-1)
        while(eXP[id] >= Levels[Level[id]])
            Level[id] += 1 
}

public client_death(killer, victim, weapon, hitgroup, TK)
{        
    if(killer == victim)
        return PLUGIN_HANDLED
        
    new Name[20]
    get_user_name(victim, Name, 19)
    new headshot = (hitgroup == HIT_HEAD) ? 1 : 0
    
    if(get_user_team(killer) == 2 && killer != victim)
    {
        switch(weapon) 
        {
            case CSW_HEGRENADE:
            {
                eXP[killer] += get_pcvar_num(he_xp)
                CheckLevel(killer)
                SaveData(killer)
                if(get_pcvar_num(kill_msg) == 1)
                    client_print_color(killer, print_chat, "^4[Ranks]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1 na ^3%s^1.", get_pcvar_num(he_xp), Name)
            } 
            
            case CSW_KNIFE:
            {
                eXP[killer] += get_pcvar_num(knife_xp)
                CheckLevel(killer)
                SaveData(killer)
                if(get_pcvar_num(kill_msg) == 1)
                    client_print_color(killer, print_chat, "^4[Ranks]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1 na ^3%s^1.", get_pcvar_num(knife_xp) , Name)
            } 
        }
        
        if(headshot)
        {
            eXP[killer] += get_pcvar_num(hs_xp)
            CheckLevel(killer)
            SaveData(killer)
            if(get_pcvar_num(kill_msg) == 1)
                client_print_color(killer, print_chat, "^4[Ranks]^1 poluchihte^4 2 XP^1 poradi ubiistwoto s^4 HS^1 na ^3%s^1.",get_pcvar_num(hs_xp),  Name)
        }
        else
        {
            eXP[killer] += get_pcvar_num(kill_xp)
            CheckLevel(killer)
            SaveData(killer)
            if(get_pcvar_num(kill_msg) == 1)
                client_print_color(killer, print_chat, "^4[Ranks]^1 poluchihte^4 1 XP^1 poradi ubiistwoto na ^3%s^1.", get_pcvar_num(kill_xp), Name)
        }
    }
    CheckLevel(killer)
    SaveData(killer)
    return PLUGIN_CONTINUE
}

public CheckLevel(id)
{
    if(Level[id] < MaxLevels-1)
        while(eXP[id] >= Levels[Level[id]])
            Level[id] += 1 
}

public client_connect(id)
{
    LoadData(id)
}


public client_disconnect(id)
{
    SaveData(id)
    eXP[id] = 0
    Level[id] = 0
    remove_task(id)
}
        
public reset_xp(id)
{
    if(eXP[id] != 0)
    {
        Level[id] = 0
        eXP[id] = 0
        CheckLevel(id)
        client_print_color(id, print_chat, "^4[Ranks]^1 Yspeshno nulirani washite^4 XP^1 i ^4Level^1.")
    }
    else
        client_print_color(id, print_chat, "^4[Ranks]^1 Washite^4 XP^1 i ^4Level^1 weche sa nulirani.")
}
        
public cmdRank(id)
{
    if(is_user_connected(id))
        client_print_color(id, print_chat, "^4[Ranks]^1 Rank:^4 %s^1 | XP:^4 %d^1 | Level:^4 %d^1.", Prefix[Level[id]], eXP[id], Level[id])
}
        
public CmdAddXP (iPlayer, level, cid)
{
    if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
        
    new arg [32]
    read_argv (1, arg, 31) 
 
    new AddXP [32]
    read_argv (2, AddXP, charsmax (AddXP))
 
    new XPtoGive = str_to_num (AddXP)
        
    new AdminName [32]
    new TargetName [32]
    get_user_name (iPlayer, AdminName, charsmax (AdminName))
        
    if(arg[0]=='@')
    { 
        if(equali(arg[1],"All") || equali(arg[1],"ALL"))
        {
            new players[32], totalplayers, All
            get_players(players, totalplayers)
             
            for (new i = 0; i < totalplayers; i++)
            {
                All = players[i]
                        
                eXP[All] += XPtoGive
            }
            
            CheckLevel(All)
            client_print_color(0, print_chat, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na vsichki ^3igrachi^1!", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"T") || equali(arg[1],"t"))
        {
            new players[32], totalplayers, T
            get_players(players, totalplayers)
             
            for (new i = 0; i < totalplayers; i++)
            {
                if (get_user_team(players[i]) == 1)
                {
                    T = players[i]
                            
                    eXP[T] += XPtoGive
                }
            }
            
            CheckLevel(T)
            client_print_color(0, print_chat, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na vsichki ^3 Teroristi^1.", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
        {
            new players[32], totalplayers, CT
            get_players(players, totalplayers)
             
            for(new i = 0; i < totalplayers; i++)
            {
                if(get_user_team(players[i]) == 2)
                {
                    CT = players[i]
                            
                    eXP[CT] += XPtoGive
                }
            }
            
            CheckLevel(CT)
            client_print_color(0, print_chat, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", AdminName, XPtoGive)
        }
    }
    else
    {
        new iTarget = cmd_target(iPlayer, arg, 3)
        get_user_name (iTarget, TargetName, charsmax (TargetName))
        
        if(iTarget)
        {
            eXP[iTarget] += XPtoGive
            
            CheckLevel(iTarget)
            client_print_color(0, print_chat, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na^3 %s^1.", AdminName, XPtoGive, TargetName)
        }
    }
    return PLUGIN_HANDLED
}

bool:IsValidMessage( szMessage[ ], iLen )
{
    read_args( szMessage, iLen )
    remove_quotes( szMessage )
   
    new iPos, cChar
    while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
    {
        if( cChar != ' ' && cChar != '%' )
        {
            return true
        }
    }
   
    return false
}

public hook_say(id)
{
    if(!is_user_connected(id)) 
        return PLUGIN_HANDLED_MAIN
    
    new szArgs[192]
    
    if( !IsValidMessage(szArgs, charsmax(szArgs))) 
        return PLUGIN_HANDLED_MAIN

    if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN

    
    new szName[32]
    get_user_name(id, szName, sizeof szName-1)

    new alive = is_user_alive(id)

    if(contain(szArgs,"@") >= 0) 
    return  PLUGIN_HANDLED_MAIN
 
    if(get_user_flags(id) & ADMIN1_ACCESS) 
    format(szArgs, 191,"^4[^3%s^4] ^x03[^x04%s^x03] ^x03%s^x03 :^x04  %s", ADMIN1, Prefix[Level[id]], szName, szArgs)
    
    else if(get_user_flags(id) & ADMIN2_ACCESS) 
    format(szArgs, 191, "^4[^3%s^4] ^x03[^x04%s^x03] ^x03%s^x03 :^x04  %s", ADMIN2, Prefix[Level[id]], szName, szArgs)
    
    else if(get_user_flags(id) & ADMIN3_ACCESS) 
    format(szArgs, 191, "^4[^3%s^4] ^x03[^x04%s^x03] ^x03%s^x03 :^x04  %s", ADMIN3, Prefix[Level[id]], szName, szArgs)
    
    else if(get_user_flags(id) & ADMIN4_ACCESS) 
    format(szArgs, 191, "^4[^3%s^4] ^x03[^x04%s^x03] ^x03%s^x03 :^x04  %s", ADMIN4, Prefix[Level[id]], szName, szArgs)

    else if(get_user_flags(id) & ADMIN5_ACCESS) 
    format(szArgs, 191, "^4[^3%s^4] ^x03[^x04%s^x03] ^x03%s^x03 :^x04  %s", ADMIN5, Prefix[Level[id]], szName, szArgs)
    
    else if(get_user_flags(id) & ADMIN6_ACCESS) 
    format(szArgs, 191, "^4[^3%s^4] ^x03[^x04%s^x03] ^x03%s^x03 :^x04  %s", ADMIN6, Prefix[Level[id]], szName, szArgs)

    else 
    format(szArgs, 191, "^x01[^x04%s^x01] ^x03%s^x01 :  %s",  Prefix[Level[id]], szName, szArgs)

    for(new i = 1; i <= gMaxPlayers; i++)
    {
        if(!is_user_connected(i))
            continue
    
        if(alive && is_user_alive(i))
        {
            message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
            write_byte(id)
            write_string(szArgs)
            message_end()
        } 
        else if(!alive && !is_user_alive(i)) 
        {
            new format[192]
            formatex(format,191,"^x01* DEAD %s",szArgs)
            message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
            write_byte(id)
            write_string(format)
            message_end()
        }
    }
        
    return PLUGIN_HANDLED_MAIN
}

public SaveData(id)
{
    new name[32];
    get_user_name(id,name,31);
    new vaultkey[64],vaultdata[256];
    
    format(vaultkey,63,"%s", name);
    format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
    fvault_set_data(g_vault_name,vaultkey,vaultdata);
    
    return PLUGIN_CONTINUE;
}
public LoadData(id)
{
    new name[32];
    get_user_name(id,name,31);
    new vaultkey[64],vaultdata[256];
    
    format(vaultkey,63,"%s",name);
    format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
    fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
    
    replace_all(vaultdata, 255, "#", " ");
    new playerxp[32], playerlevel[32];
    parse(vaultdata, playerxp, 31, playerlevel, 31);
    
    eXP[id] = str_to_num(playerxp);
    Level[id] = str_to_num(playerlevel);
    
    return PLUGIN_CONTINUE;
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Редактиране на Rank+AdminPrefix система

Мнение от OciXCrom » 16 Окт 2016, 16:17

Комбинацията от цветове е невъзможна.
според отбора + червен = невъзможно
според отбора + син = невъзможно
според отбора + бял = невъзможно
червен + син = невъзможно
червен + бял = невъзможно
червен + според отбора = невъзможно
син + червен = невъзможно
син + бял = невъзможно
син + според отбора = невъзможно
бял + червен = невъзможно
бял + син = невъзможно
бял + според отбора = невъзможно

Аватар
arunbg
Извън линия
Потребител
Потребител
Мнения: 30
Регистриран на: 16 Окт 2016, 16:04

Re: Редактиране на Rank+AdminPrefix система

Мнение от arunbg » 16 Окт 2016, 16:32

Тогава предполагам,че (Teamchat)-а би могъл да си остане оранжев?

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Редактиране на Rank+AdminPrefix система

Мнение от OciXCrom » 16 Окт 2016, 21:30

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc> 
#include <cstrike>
#include <colorchat>
#include <fvault>

#define MaxLevels 6
#define IsPlayer(%1) (1 <= %1 <=  g_iMaxPlayers)

#define ADMIN1 "Head Admin"
#define ADMIN1_ACCESS ADMIN_LEVEL_A

#define ADMIN2 "Server Admin"
#define ADMIN2_ACCESS ADMIN_LEVEL_B

#define ADMIN3 "Global Admin"
#define ADMIN3_ACCESS ADMIN_LEVEL_C

#define ADMIN4 "V.I.P"
#define ADMIN4_ACCESS ADMIN_LEVEL_D

#define ADMIN5 "SMS Admin"
#define ADMIN5_ACCESS ADMIN_LEVEL_E

#define ADMIN6 "SMS V.I.P"
#define ADMIN6_ACCESS ADMIN_LEVEL_F

new gMaxPlayers, syncObj, Level[33], eXP[33]
new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg

new const g_vault_name[] = "levelsz";
new const g_szTeams[][] = { "", "Terrorist", "Counter-Terrorist", "Spectator" }

new const Levels[MaxLevels +1] =
{
    300,
    600,
    1200,
    2400,
    4800,
    9600,
   19200
}

new const Prefix[MaxLevels +1][] =
{
    "New Builder",
    "Builder",
    "Killer",
    "Legendary Killer",
    "Architect",
    "Supreme Architect",
    "Old Builder"
}

public plugin_init()
{
    register_plugin("Ranks & XP mod", "1.0 [Edit by AMXX-BG.info]", "alt.nick")
   
    register_event("DeathMsg","client_death","a")
    register_clcmd("say", "hook_say")
    register_clcmd("say_team", "hook_say")
   
    register_clcmd("say /rank", "cmdRank")
    register_clcmd("say_team /rank", "cmdRank")
   
    register_clcmd("say /reset", "reset_xp")
    register_clcmd("say_team /reset", "reset_xp")
   
    ranks_hud = register_cvar("ranks_hud", "1")     // Дали да се появява хъд при влизане в сървъра. Включено 1/0 Изключено
    knife_xp = register_cvar("knife_xp", "3")     // Колко ХР да дава за убийство с нож.
    he_xp = register_cvar("he_xp", "3")        // Колко ХР да дава за убийство с Granata (HE).
    hs_xp = register_cvar("hs_xp", "2")        // Колко ХР да дава за убийство с Headshot.
    kill_xp = register_cvar("kill_xp", "1")        // Колко ХР да дава за нормално убийство.   
    kill_msg = register_cvar("kill_msg", "1")    // Дали да показва кой сте убили и колко ХР сте получили. Включено 1/0 Изключено
   
    register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_LEVEL_A, "<nick | ct | t | @all> <xp>")
   
    gMaxPlayers = get_maxplayers()

    syncObj     = CreateHudSyncObj()
   
    fvault_load(g_vault_name)
}

public ShowHud(id)
{
    set_hudmessage(142, 239, -39, -1.90, 0.31, 0, 6.0, 1.0, 0.0, 0.0, -1)
    ShowSyncHudMsg(id, syncObj,"Rank: %s ^nXP: %i / %i ^nLevel: %i", Prefix[Level[id]], eXP[id], Levels[Level[id]], Level[id])
}

public client_putinserver(id)
{
    if(get_pcvar_num(ranks_hud) == 1)
        set_task(1.0, "ShowHud", id, _, _, "b")
       
    if(Level[id] < MaxLevels-1)
        while(eXP[id] >= Levels[Level[id]])
            Level[id] += 1
}

public client_death(killer, victim, weapon, hitgroup, TK)
{       
    if(killer == victim)
        return PLUGIN_HANDLED
       
    new Name[20]
    get_user_name(victim, Name, 19)
    new headshot = (hitgroup == HIT_HEAD) ? 1 : 0
   
    if(get_user_team(killer) == 2 && killer != victim)
    {
        switch(weapon)
        {
            case CSW_HEGRENADE:
            {
                eXP[killer] += get_pcvar_num(he_xp)
                CheckLevel(killer)
                SaveData(killer)
                if(get_pcvar_num(kill_msg) == 1)
                    ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1 na ^3%s^1.", get_pcvar_num(he_xp), Name)
            }
           
            case CSW_KNIFE:
            {
                eXP[killer] += get_pcvar_num(knife_xp)
                CheckLevel(killer)
                SaveData(killer)
                if(get_pcvar_num(kill_msg) == 1)
                    ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1 na ^3%s^1.", get_pcvar_num(knife_xp) , Name)
            }
        }
       
        if(headshot)
        {
            eXP[killer] += get_pcvar_num(hs_xp)
            CheckLevel(killer)
            SaveData(killer)
            if(get_pcvar_num(kill_msg) == 1)
                ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 2 XP^1 poradi ubiistwoto s^4 HS^1 na ^3%s^1.",get_pcvar_num(hs_xp),  Name)
        }
        else
        {
            eXP[killer] += get_pcvar_num(kill_xp)
            CheckLevel(killer)
            SaveData(killer)
            if(get_pcvar_num(kill_msg) == 1)
                ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 1 XP^1 poradi ubiistwoto na ^3%s^1.", get_pcvar_num(kill_xp), Name)
        }
    }
    CheckLevel(killer)
    SaveData(killer)
    return PLUGIN_CONTINUE
}

public CheckLevel(id)
{
    if(Level[id] < MaxLevels-1)
        while(eXP[id] >= Levels[Level[id]])
            Level[id] += 1
}

public client_connect(id)
{
    LoadData(id)
}


public client_disconnect(id)
{
    SaveData(id)
    eXP[id] = 0
    Level[id] = 0
    remove_task(id)
}
       
public reset_xp(id)
{
    if(eXP[id] != 0)
    {
        Level[id] = 0
        eXP[id] = 0
        CheckLevel(id)
        ColorChat(id, TEAM_COLOR, "^4[Ranks]^1 Yspeshno nulirani washite^4 XP^1 i ^4Level^1.")
    }
    else
        ColorChat(id, TEAM_COLOR, "^4[Ranks]^1 Washite^4 XP^1 i ^4Level^1 weche sa nulirani.")
}
       
public cmdRank(id)
{
    if(is_user_connected(id))
        ColorChat(id, TEAM_COLOR, "^4[Ranks]^1 Rank:^4 %s^1 | XP:^4 %d^1 | Level:^4 %d^1.", Prefix[Level[id]], eXP[id], Level[id])
}
       
public CmdAddXP (iPlayer, level, cid)
{
    if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
       
    new arg [32]
    read_argv (1, arg, 31)
 
    new AddXP [32]
    read_argv (2, AddXP, charsmax (AddXP))
 
    new XPtoGive = str_to_num (AddXP)
       
    new AdminName [32]
    new TargetName [32]
    get_user_name (iPlayer, AdminName, charsmax (AdminName))
       
    if(arg[0]=='@')
    {
        if(equali(arg[1],"All") || equali(arg[1],"ALL"))
        {
            new players[32], totalplayers, All
            get_players(players, totalplayers)
             
            for (new i = 0; i < totalplayers; i++)
            {
                All = players[i]
                       
                eXP[All] += XPtoGive
            }
           
            CheckLevel(All)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na vsichki ^3igrachi^1!", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"T") || equali(arg[1],"t"))
        {
            new players[32], totalplayers, T
            get_players(players, totalplayers)
             
            for (new i = 0; i < totalplayers; i++)
            {
                if (get_user_team(players[i]) == 1)
                {
                    T = players[i]
                           
                    eXP[T] += XPtoGive
                }
            }
           
            CheckLevel(T)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na vsichki ^3 Teroristi^1.", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
        {
            new players[32], totalplayers, CT
            get_players(players, totalplayers)
             
            for(new i = 0; i < totalplayers; i++)
            {
                if(get_user_team(players[i]) == 2)
                {
                    CT = players[i]
                           
                    eXP[CT] += XPtoGive
                }
            }
           
            CheckLevel(CT)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", AdminName, XPtoGive)
        }
    }
    else
    {
        new iTarget = cmd_target(iPlayer, arg, 3)
        get_user_name (iTarget, TargetName, charsmax (TargetName))
       
        if(iTarget)
        {
            eXP[iTarget] += XPtoGive
           
            CheckLevel(iTarget)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na^3 %s^1.", AdminName, XPtoGive, TargetName)
        }
    }
    return PLUGIN_HANDLED
}

bool:IsValidMessage( szMessage[ ], iLen )
{
    read_args( szMessage, iLen )
    remove_quotes( szMessage )
   
    new iPos, cChar
    while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
    {
        if( cChar != ' ' && cChar != '%' )
        {
            return true
        }
    }
   
    return false
}

public hook_say(id)
{
    if(!is_user_connected(id))
        return PLUGIN_HANDLED_MAIN
   
    new szArgs[192]
   
    if( !IsValidMessage(szArgs, charsmax(szArgs)))
        return PLUGIN_HANDLED_MAIN

    if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN

   
    new szName[32]
    get_user_name(id, szName, sizeof szName-1)

    new alive = is_user_alive(id)

    if(contain(szArgs,"@") >= 0)
    return  PLUGIN_HANDLED_MAIN
    
    new szCmd[6]
    read_argv(0, szCmd, charsmax(szCmd))
    new bool:blTeam = szCmd[4] == 't'
    new iTeam = get_user_team(id)
 
    if(get_user_flags(id) & ADMIN1_ACCESS)
    format(szArgs, 191,"^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN1, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN2_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN2, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN3_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN3, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN4_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN4, Prefix[Level[id]], szName, szArgs)

    else if(get_user_flags(id) & ADMIN5_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN5, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN6_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN6, Prefix[Level[id]], szName, szArgs)

    else
    format(szArgs, 191, "^x03[^x04%s^x03] ^x03%s^x01: %s", Prefix[Level[id]], szName, szArgs)
    
    if(blTeam)
        format(szArgs, 191, "^x01(%s) %s", g_szTeams[iTeam], szArgs)
    
    if(!alive)
        format(szArgs, 191, "^x01*DEAD* %s", szArgs)

    for(new i = 1; i <= gMaxPlayers; i++)
    {
        if(!is_user_connected(i))
            continue
        
        if(alive == is_user_alive(i) || (blTeam && iTeam == get_user_team(i)))
            ColorChat(i, GREY, szArgs)
    }
       
    return PLUGIN_HANDLED_MAIN
}

public SaveData(id)
{
    new name[32];
    get_user_name(id,name,31);
    new vaultkey[64],vaultdata[256];
   
    format(vaultkey,63,"%s", name);
    format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
    fvault_set_data(g_vault_name,vaultkey,vaultdata);
   
    return PLUGIN_CONTINUE;
}
public LoadData(id)
{
    new name[32];
    get_user_name(id,name,31);
    new vaultkey[64],vaultdata[256];
   
    format(vaultkey,63,"%s",name);
    format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
    fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
   
    replace_all(vaultdata, 255, "#", " ");
    new playerxp[32], playerlevel[32];
    parse(vaultdata, playerxp, 31, playerlevel, 31);
   
    eXP[id] = str_to_num(playerxp);
    Level[id] = str_to_num(playerlevel);
   
    return PLUGIN_CONTINUE;
} 
Отделно, кодът е катастрофа.

Аватар
arunbg
Извън линия
Потребител
Потребител
Мнения: 30
Регистриран на: 16 Окт 2016, 16:04

Re: Редактиране на Rank+AdminPrefix система

Мнение от arunbg » 16 Окт 2016, 22:24

От доста време търся подобен плъгин та...
Въпрос : Как да направя условието в if-а с Grey да оцветява в бяло само тези с флаговете на ADMIN1_ACCESS, ... ?

Код за потвърждение: Избери целия код

    for(new i = 1; i <= gMaxPlayers; i++)
    {
        if(!is_user_connected(i))
            continue
        
        if(alive == is_user_alive(i) || (blTeam && iTeam == get_user_team(i)))
            ColorChat(i, GREY, szArgs)
    }

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Re: Редактиране на Rank+AdminPrefix система

Мнение от OciXCrom » 16 Окт 2016, 22:29

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc> 
#include <cstrike>
#include <colorchat>
#include <fvault>

#define MaxLevels 6
#define IsPlayer(%1) (1 <= %1 <=  g_iMaxPlayers)

#define ADMIN1 "Head Admin"
#define ADMIN1_ACCESS ADMIN_LEVEL_A

#define ADMIN2 "Server Admin"
#define ADMIN2_ACCESS ADMIN_LEVEL_B

#define ADMIN3 "Global Admin"
#define ADMIN3_ACCESS ADMIN_LEVEL_C

#define ADMIN4 "V.I.P"
#define ADMIN4_ACCESS ADMIN_LEVEL_D

#define ADMIN5 "SMS Admin"
#define ADMIN5_ACCESS ADMIN_LEVEL_E

#define ADMIN6 "SMS V.I.P"
#define ADMIN6_ACCESS ADMIN_LEVEL_F

new gMaxPlayers, syncObj, Level[33], eXP[33]
new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg

new const g_vault_name[] = "levelsz";
new const g_szTeams[][] = { "", "Terrorist", "Counter-Terrorist", "Spectator" }

new const Levels[MaxLevels +1] =
{
    300,
    600,
    1200,
    2400,
    4800,
    9600,
   19200
}

new const Prefix[MaxLevels +1][] =
{
    "New Builder",
    "Builder",
    "Killer",
    "Legendary Killer",
    "Architect",
    "Supreme Architect",
    "Old Builder"
}

public plugin_init()
{
    register_plugin("Ranks & XP mod", "1.0 [Edit by AMXX-BG.info]", "alt.nick")
   
    register_event("DeathMsg","client_death","a")
    register_clcmd("say", "hook_say")
    register_clcmd("say_team", "hook_say")
   
    register_clcmd("say /rank", "cmdRank")
    register_clcmd("say_team /rank", "cmdRank")
   
    register_clcmd("say /reset", "reset_xp")
    register_clcmd("say_team /reset", "reset_xp")
   
    ranks_hud = register_cvar("ranks_hud", "1")     // Дали да се появява хъд при влизане в сървъра. Включено 1/0 Изключено
    knife_xp = register_cvar("knife_xp", "3")     // Колко ХР да дава за убийство с нож.
    he_xp = register_cvar("he_xp", "3")        // Колко ХР да дава за убийство с Granata (HE).
    hs_xp = register_cvar("hs_xp", "2")        // Колко ХР да дава за убийство с Headshot.
    kill_xp = register_cvar("kill_xp", "1")        // Колко ХР да дава за нормално убийство.   
    kill_msg = register_cvar("kill_msg", "1")    // Дали да показва кой сте убили и колко ХР сте получили. Включено 1/0 Изключено
   
    register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_LEVEL_A, "<nick | ct | t | @all> <xp>")
   
    gMaxPlayers = get_maxplayers()

    syncObj     = CreateHudSyncObj()
   
    fvault_load(g_vault_name)
}

public ShowHud(id)
{
    set_hudmessage(142, 239, -39, -1.90, 0.31, 0, 6.0, 1.0, 0.0, 0.0, -1)
    ShowSyncHudMsg(id, syncObj,"Rank: %s ^nXP: %i / %i ^nLevel: %i", Prefix[Level[id]], eXP[id], Levels[Level[id]], Level[id])
}

public client_putinserver(id)
{
    if(get_pcvar_num(ranks_hud) == 1)
        set_task(1.0, "ShowHud", id, _, _, "b")
       
    if(Level[id] < MaxLevels-1)
        while(eXP[id] >= Levels[Level[id]])
            Level[id] += 1
}

public client_death(killer, victim, weapon, hitgroup, TK)
{       
    if(killer == victim)
        return PLUGIN_HANDLED
       
    new Name[20]
    get_user_name(victim, Name, 19)
    new headshot = (hitgroup == HIT_HEAD) ? 1 : 0
   
    if(get_user_team(killer) == 2 && killer != victim)
    {
        switch(weapon)
        {
            case CSW_HEGRENADE:
            {
                eXP[killer] += get_pcvar_num(he_xp)
                CheckLevel(killer)
                SaveData(killer)
                if(get_pcvar_num(kill_msg) == 1)
                    ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1 na ^3%s^1.", get_pcvar_num(he_xp), Name)
            }
           
            case CSW_KNIFE:
            {
                eXP[killer] += get_pcvar_num(knife_xp)
                CheckLevel(killer)
                SaveData(killer)
                if(get_pcvar_num(kill_msg) == 1)
                    ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1 na ^3%s^1.", get_pcvar_num(knife_xp) , Name)
            }
        }
       
        if(headshot)
        {
            eXP[killer] += get_pcvar_num(hs_xp)
            CheckLevel(killer)
            SaveData(killer)
            if(get_pcvar_num(kill_msg) == 1)
                ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 2 XP^1 poradi ubiistwoto s^4 HS^1 na ^3%s^1.",get_pcvar_num(hs_xp),  Name)
        }
        else
        {
            eXP[killer] += get_pcvar_num(kill_xp)
            CheckLevel(killer)
            SaveData(killer)
            if(get_pcvar_num(kill_msg) == 1)
                ColorChat(killer, TEAM_COLOR, "^4[Ranks]^1 poluchihte^4 1 XP^1 poradi ubiistwoto na ^3%s^1.", get_pcvar_num(kill_xp), Name)
        }
    }
    CheckLevel(killer)
    SaveData(killer)
    return PLUGIN_CONTINUE
}

public CheckLevel(id)
{
    if(Level[id] < MaxLevels-1)
        while(eXP[id] >= Levels[Level[id]])
            Level[id] += 1
}

public client_connect(id)
{
    LoadData(id)
}


public client_disconnect(id)
{
    SaveData(id)
    eXP[id] = 0
    Level[id] = 0
    remove_task(id)
}
       
public reset_xp(id)
{
    if(eXP[id] != 0)
    {
        Level[id] = 0
        eXP[id] = 0
        CheckLevel(id)
        ColorChat(id, TEAM_COLOR, "^4[Ranks]^1 Yspeshno nulirani washite^4 XP^1 i ^4Level^1.")
    }
    else
        ColorChat(id, TEAM_COLOR, "^4[Ranks]^1 Washite^4 XP^1 i ^4Level^1 weche sa nulirani.")
}
       
public cmdRank(id)
{
    if(is_user_connected(id))
        ColorChat(id, TEAM_COLOR, "^4[Ranks]^1 Rank:^4 %s^1 | XP:^4 %d^1 | Level:^4 %d^1.", Prefix[Level[id]], eXP[id], Level[id])
}
       
public CmdAddXP (iPlayer, level, cid)
{
    if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED;
       
    new arg [32]
    read_argv (1, arg, 31)
 
    new AddXP [32]
    read_argv (2, AddXP, charsmax (AddXP))
 
    new XPtoGive = str_to_num (AddXP)
       
    new AdminName [32]
    new TargetName [32]
    get_user_name (iPlayer, AdminName, charsmax (AdminName))
       
    if(arg[0]=='@')
    {
        if(equali(arg[1],"All") || equali(arg[1],"ALL"))
        {
            new players[32], totalplayers, All
            get_players(players, totalplayers)
             
            for (new i = 0; i < totalplayers; i++)
            {
                All = players[i]
                       
                eXP[All] += XPtoGive
            }
           
            CheckLevel(All)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na vsichki ^3igrachi^1!", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"T") || equali(arg[1],"t"))
        {
            new players[32], totalplayers, T
            get_players(players, totalplayers)
             
            for (new i = 0; i < totalplayers; i++)
            {
                if (get_user_team(players[i]) == 1)
                {
                    T = players[i]
                           
                    eXP[T] += XPtoGive
                }
            }
           
            CheckLevel(T)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na vsichki ^3 Teroristi^1.", AdminName, XPtoGive)
        }
        else if(equali(arg[1],"CT") || equali(arg[1],"ct"))
        {
            new players[32], totalplayers, CT
            get_players(players, totalplayers)
             
            for(new i = 0; i < totalplayers; i++)
            {
                if(get_user_team(players[i]) == 2)
                {
                    CT = players[i]
                           
                    eXP[CT] += XPtoGive
                }
            }
           
            CheckLevel(CT)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", AdminName, XPtoGive)
        }
    }
    else
    {
        new iTarget = cmd_target(iPlayer, arg, 3)
        get_user_name (iTarget, TargetName, charsmax (TargetName))
       
        if(iTarget)
        {
            eXP[iTarget] += XPtoGive
           
            CheckLevel(iTarget)
            ColorChat(0, TEAM_COLOR, "^4[Ranks]^1 ^3%s^1 dade^3 %i^1 XP na^3 %s^1.", AdminName, XPtoGive, TargetName)
        }
    }
    return PLUGIN_HANDLED
}

bool:IsValidMessage( szMessage[ ], iLen )
{
    read_args( szMessage, iLen )
    remove_quotes( szMessage )
   
    new iPos, cChar
    while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
    {
        if( cChar != ' ' && cChar != '%' )
        {
            return true
        }
    }
   
    return false
}

public hook_say(id)
{
    if(!is_user_connected(id))
        return PLUGIN_HANDLED_MAIN
   
    new szArgs[192]
   
    if( !IsValidMessage(szArgs, charsmax(szArgs)))
        return PLUGIN_HANDLED_MAIN

    if(equal(szArgs,"")) return PLUGIN_HANDLED_MAIN

   
    new szName[32]
    get_user_name(id, szName, sizeof szName-1)

    new alive = is_user_alive(id)

    if(contain(szArgs,"@") >= 0)
    return  PLUGIN_HANDLED_MAIN
    
    new szCmd[6]
    read_argv(0, szCmd, charsmax(szCmd))
    new bool:blTeam = szCmd[4] == 't'
    new iTeam = get_user_team(id)
    new Color:iColor = TEAM_COLOR
 
    if(get_user_flags(id) & ADMIN1_ACCESS)
    {
        iColor = GREY
        format(szArgs, 191,"^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN1, Prefix[Level[id]], szName, szArgs)
    }
   
    else if(get_user_flags(id) & ADMIN2_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN2, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN3_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN3, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN4_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN4, Prefix[Level[id]], szName, szArgs)

    else if(get_user_flags(id) & ADMIN5_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN5, Prefix[Level[id]], szName, szArgs)
   
    else if(get_user_flags(id) & ADMIN6_ACCESS)
    format(szArgs, 191, "^x03[^x04%s^x03] [^x04%s^x03] ^x03%s^x01: ^x04%s", ADMIN6, Prefix[Level[id]], szName, szArgs)

    else
    format(szArgs, 191, "^x03[^x04%s^x03] ^x03%s^x01: %s", Prefix[Level[id]], szName, szArgs)
    
    if(blTeam)
        format(szArgs, 191, "^x01(%s) %s", g_szTeams[iTeam], szArgs)
    
    if(!alive)
        format(szArgs, 191, "^x01*DEAD* %s", szArgs)

    for(new i = 1; i <= gMaxPlayers; i++)
    {
        if(!is_user_connected(i))
            continue
        
        if(alive == is_user_alive(i) || (blTeam && iTeam == get_user_team(i)))
            ColorChat(i, iColor, szArgs)
    }
       
    return PLUGIN_HANDLED_MAIN
}

public SaveData(id)
{
    new name[32];
    get_user_name(id,name,31);
    new vaultkey[64],vaultdata[256];
   
    format(vaultkey,63,"%s", name);
    format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
    fvault_set_data(g_vault_name,vaultkey,vaultdata);
   
    return PLUGIN_CONTINUE;
}
public LoadData(id)
{
    new name[32];
    get_user_name(id,name,31);
    new vaultkey[64],vaultdata[256];
   
    format(vaultkey,63,"%s",name);
    format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
    fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
   
    replace_all(vaultdata, 255, "#", " ");
    new playerxp[32], playerlevel[32];
    parse(vaultdata, playerxp, 31, playerlevel, 31);
   
    eXP[id] = str_to_num(playerxp);
    Level[id] = str_to_num(playerlevel);
   
    return PLUGIN_CONTINUE;
}  

Аватар
arunbg
Извън линия
Потребител
Потребител
Мнения: 30
Регистриран на: 16 Окт 2016, 16:04

Re: Редактиране на Rank+AdminPrefix система

Мнение от arunbg » 16 Окт 2016, 22:40

Благодаря. Lock.

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 34 госта