View Single Post
administratora
Member
Join Date: Mar 2015
Old 02-20-2017 , 13:21   Re: [Request] Army Ranks Plugin
Reply With Quote #3

This for example but when i use it, no one has team chat and chat commands which start with "/" are visible in chat. If someone can edit it so the hud message is under the radar and the same color as the picture. Also to have XP:0/50 for example. The other thing is that it gives me 2 or 3 XP for knife kill, I have done it to 1 cuz I wanna use it for knife respawn server.
PHP Code:
#include <amxmodx>
#include <amxmisc>  
#include <cstrike>
#include <chatcolor>
#include <fvault>

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

#define ADMIN1 "Owner"
#define ADMIN1_ACCESS ADMIN_IMMUNITY

#define ADMIN2 "Head Admin"
#define ADMIN2_ACCESS ADMIN_BAN

#define ADMIN3 "Server Admin"
#define ADMIN3_ACCESS ADMIN_KICK

#define ADMIN4 "Test Admin"
#define ADMIN4_ACCESS ADMIN_SLAY

#define ADMIN5 "Sms Admin"
#define ADMIN5_ACCESS ADMIN_VOTE

new gMaxPlayersgMsgSayTextsyncObjLevel[33], eXP[33]
new 
ranks_hudknife_xphe_xphs_xpkill_xpkill_msg

new const g_vault_name[] = "levelsz";

new const 
Levels[MaxLevels] = 
{
    
100,
    
300
    
500
    
750
    
1000
    
1250,
    
1500,
    
1850,
    
2100,
    
2200,
    
2650,
    
2950,
    
3300,
    
3700,
    
4200,
    
4600,
    
5600
}

new const 
Prefix[MaxLevels +1][] =
{
    
"Silver I"
    
"Silver II",
    
"Silver II"
    
"Silver IV",
    
"Silver IElite"
    
"Silver Elite Master",
    
"Gold Nova I",
    
"Gold Nova II"
    
"Gold Nova III"
    
"Gold Nova Master",
    
"Master Guardian I",
    
"Master Guardian II",
    
"Master Guardian Elite",
    
"Distinguished Master Guardian",
    
"Legendary Eagle",
    
"Legendary Eagle Master",
    
"Supreme Master First Class",
    
"The Global Elite",
    
""
    
}

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 /ranks""cmdRank")
    
register_clcmd("say_team /ranks""cmdRank")
    
    
register_clcmd("say /resrank""reset_xp")
    
register_clcmd("say_team /resrank""reset_xp")
    
    
ranks_hud register_cvar("ranks_hud""1")     // Дали да се появява хъд при влизане в сървъра. Включено 1/0 Изключено
    
knife_xp register_cvar("knife_xp""1")     // Колко ХР да дава за убийство с нож.
    
he_xp register_cvar("he_xp""1")        // Колко ХР да дава за убийство с Granata (HE).
    
hs_xp register_cvar("hs_xp""1")        // Колко ХР да дава за убийство с Headshot.
    
kill_xp register_cvar("kill_xp""0")        // Колко ХР да дава за нормално убийство.    
    
kill_msg register_cvar("kill_msg""0")    // Дали да показва кой сте убили и колко ХР сте получили. Включено 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(14223939, -1.00.0106.01.00.00.0, -1)
    
ShowSyncHudMsg(idsyncObj,"Rank: %s ^nXP: %i ^nLevel: %i"Prefix[Level[id]], eXP[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] += 
}

public 
client_death(killervictimweaponhitgroupTK)
{        
    if(
killer == victim)
        return 
PLUGIN_HANDLED
        
    
new Name[20]
    
get_user_name(victimName19)
    new 
headshot = (hitgroup == HIT_HEAD) ? 0
    
    
if(get_user_team(killer) == && 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(killerprint_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(killerprint_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(killerprint_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(killerprint_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] += 
}

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(idprint_chat"^4[Ranks]^1 Successfully restarted your^4 XP^1 i ^4Level^1.")
    }
    else
        
client_print_color(idprint_chat"^4[Ranks]^1 Your^4 XP^1 i ^4Level^1 is now restarted.")
}
        
public 
cmdRank(id)
{
    if(
is_user_connected(id))
        
client_print_color(idprint_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 (iPlayerlevelcid)
{
    if(!
cmd_access(iPlayerlevelcid3)) return PLUGIN_HANDLED;
        
    new 
arg [32]
    
read_argv (1arg31
 
    new 
AddXP [32]
    
read_argv (2AddXPcharsmax (AddXP))
 
    new 
XPtoGive str_to_num (AddXP)
        
    new 
AdminName [32]
    new 
TargetName [32]
    
get_user_name (iPlayerAdminNamecharsmax (AdminName))
        
    if(
arg[0]=='@')
    { 
        if(
equali(arg[1],"All") || equali(arg[1],"ALL"))
        {
            new 
players[32], totalplayersAll
            get_players
(playerstotalplayers)
             
            for (new 
0totalplayersi++)
            {
                
All players[i]
                        
                
eXP[All] += XPtoGive
            
}
            
            
CheckLevel(All)
            
client_print_color(0print_chat"^4[Ranks]^1 ^3%s^1 gave^3 %i^1 XP to all ^3players^1!"AdminNameXPtoGive)
        }
        else if(
equali(arg[1],"T") || equali(arg[1],"t"))
        {
            new 
players[32], totalplayersT
            get_players
(playerstotalplayers)
             
            for (new 
0totalplayersi++)
            {
                if (
get_user_team(players[i]) == 1)
                {
                    
players[i]
                            
                    
eXP[T] += XPtoGive
                
}
            }
            
            
CheckLevel(T)
            
client_print_color(0print_chat"^4[Ranks]^1 ^3%s^1 gave^3 %i^1 XP to all ^3 Terrorists^1."AdminNameXPtoGive)
        }
        else if(
equali(arg[1],"CT") || equali(arg[1],"ct"))
        {
            new 
players[32], totalplayersCT
            get_players
(playerstotalplayers)
             
            for(new 
0totalplayersi++)
            {
                if(
get_user_team(players[i]) == 2)
                {
                    
CT players[i]
                            
                    
eXP[CT] += XPtoGive
                
}
            }
            
            
CheckLevel(CT)
            
client_print_color(0print_chat"^4[Ranks]^1 ^3%s^1 gave^3 %i^1 XP to all ^3 Counter-Terrorists^1!"AdminNameXPtoGive)
        }
    }
    else
    {
        new 
iTarget cmd_target(iPlayerarg3)
        
get_user_name (iTargetTargetNamecharsmax (TargetName))
        
        if(
iTarget)
        {
            
eXP[iTarget] += XPtoGive
            
            CheckLevel
(iTarget)
            
client_print_color(0print_chat"^4[Ranks]^1 ^3%s^1 gave^3 %i^1 XP to^3 %s^1."AdminNameXPtoGiveTargetName)
        }
    }
    return 
PLUGIN_HANDLED
}

bool:IsValidMessageszMessage[ ], iLen )
{
    
read_argsszMessageiLen )
    
remove_quotesszMessage )
   
    new 
iPoscChar
    
while( <= ( cChar szMessageiPos++ ] ) <= 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(szArgscharsmax(szArgs))) 
        return 
PLUGIN_HANDLED_MAIN

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

    
    
new szName[32]
    
get_user_name(idszNamesizeof szName-1)

    new 
alive is_user_alive(id)

    if(
contain(szArgs,"@") >= 0
    return  
PLUGIN_HANDLED_MAIN
 
    
if(get_user_flags(id) & ADMIN1_ACCESS
    
format(szArgs191,"^x04[%s] [%s] ^x03%s^x01 :^x04  %s"ADMIN1Prefix[Level[id]], szNameszArgs)
    
    else if(
get_user_flags(id) & ADMIN2_ACCESS
    
format(szArgs191"^x04[%s] [%s] ^x03%s^x01 :^x04  %s"ADMIN2Prefix[Level[id]], szNameszArgs)
    
    else if(
get_user_flags(id) & ADMIN3_ACCESS
    
format(szArgs191"^x04[%s] [%s] ^x03%s^x01 :^x04  %s"ADMIN3Prefix[Level[id]], szNameszArgs)
    
    else if(
get_user_flags(id) & ADMIN4_ACCESS
    
format(szArgs191"^x04[%s] [%s] ^x03%s^x01 :^x04  %s"ADMIN4Prefix[Level[id]], szNameszArgs)

    else if(
get_user_flags(id) & ADMIN5_ACCESS
    
format(szArgs191"^x04[%s] [%s] ^x03%s^x01 :^x04  %s"ADMIN5Prefix[Level[id]], szNameszArgs)
    
    
    else 
    
format(szArgs191"^x04{%s} ^x03%s^x01 :  %s",  Prefix[Level[id]], szNameszArgs)

    for(new 
1<= gMaxPlayersi++)
    {
        if(!
is_user_connected(i))
            continue
    
        if(
alive && is_user_alive(i))
        {
            
message_begin(MSG_ONEgMsgSayText, {000}, 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_ONEgMsgSayText, {000}, 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(vaultdata255"#"" ");
    new 
playerxp[32], playerlevel[32];
    
parse(vaultdataplayerxp31playerlevel31);
    
    
eXP[id] = str_to_num(playerxp);
    
Level[id] = str_to_num(playerlevel);
    
    return 
PLUGIN_CONTINUE;


Last edited by administratora; 02-20-2017 at 13:22.
administratora is offline