#include <amxmodx>
#include <amxmisc>
#include <nvault>
 
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
 
new message[192]
new alive[11]
new strName[191]
new strText[191]
new maxPlayers
new sayText
new teamInfo
new gVault;
new vKey[ 64 ];
new vData[ 64 ];
new piname[32];
 
new kills[32];
 
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_clcmd("say", "HookSayCommands")
    register_clcmd("say_team", "HookTeamSayCommands")
 
    sayText = get_user_msgid ("SayText")
    teamInfo = get_user_msgid ("TeamInfo")
    maxPlayers = get_maxplayers()
    register_message (sayText, "avoid_duplicated")
 
    register_event( "DeathMsg", "hahahahalalhahaha", "a" );
}
 
public client_connect(id)
{
    kills[id] = 0;
    ment(id)
}
public client_disconnect(id)
    ment(id)
 
stock ment( index )
{
    /* --| Vault megnyitás */
    gVault = nvault_open( "fearpontok" );
 
    /* --| Ha vault visszateres -1, akkor hagyja abba ezt a szart */
    if( gVault == INVALID_HANDLE )
    {
        set_fail_state( "WHATTHEFUCK ERROR: =-> Invalid-Handle" );
    }
 
    /* --| Játékos név */
    get_user_name( index, piname, charsmax( piname ) );
 
    /* --| Beallitasok oszt bezaras */
    formatex( vKey, charsmax( vKey ), "%sOLES", piname );
    formatex( vData, charsmax( vData ), "%d", kills[ index ] );
    nvault_set( gVault, vKey, vData );
    nvault_close( gVault );
}
stock betolt( index )
{
    /* --| Megnyitas */
    gVault = nvault_open( "fearpontok" );
 
    /* --| Ha vault visszateres -1, akkor hagyja abba ezt a szart */
    if( gVault == INVALID_HANDLE )
    {
        set_fail_state( "WHATTHEFUCK ERROR: =-> Invalid-Handle" );
    }
 
    /* --| jatekos neve */
    get_user_name( index, piname, charsmax( piname ) );
 
    /* --| Beallitasok oszt bezaras */
    formatex( vKey, charsmax( vKey ), "%sOLES", piname );
    kills[ index ] = nvault_get( gVault, vKey );
    nvault_close( gVault );
}
 
public avoid_duplicated (msgId, msgDest, receiver)
{
    return PLUGIN_HANDLED
}
 
public hahahahalalhahaha()
{
    new killer = read_data( 1 );
    new victim = read_data( 2 );
 
    if(killer == victim)
    {
        return PLUGIN_HANDLED;
    }
 
    kills[killer]++
 
 
    return PLUGIN_CONTINUE;
}
 
public HookSayCommands(id)
{
    read_args(message, 191)
    remove_quotes(message)
    if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
        return PLUGIN_CONTINUE
 
 
    new name[32]
    get_user_name (id, name, 31)    
 
    new isAlive
 
    if (is_user_alive (id))
        {
            isAlive = 1
            alive = "^x01"
        }
    else
        {
            isAlive = 0
            alive = "^x01*HALOTT* "
        }
 
    static color[10]
 
    new rang[32];
    if(kills[id] < 10)
        rang = "Rangtalan"
    else if(kills[id] >= 10 && kills[id] < 20)
        rang = "Kezdo"
    else if(kills[id] >= 20 && kills[id] < 30)
        rang = "Halado"
    else if(kills[id] >= 30)
        rang = "Profi"
 
    //Rang+Name
    get_user_team (id, color, 9)
    format (strName, 191, "%s^x04[%s]^x03%s", alive, rang, name)
    format (strText, 191, "%s", message)
    format (message, 191, "%s^x01 :  %s", strName, strText)
    sendMessage (color, isAlive)
 
    return PLUGIN_CONTINUE
}
 
public HookTeamSayCommands(id)
{
    new playerTeam = get_user_team(id)
    new playerTeamName[19]
 
    switch (playerTeam)
        {
            case 1:
                copy (playerTeamName, 11, "Terrorista")
 
            case 2:
                copy (playerTeamName, 18, "Zsaru")
 
            default:
                copy (playerTeamName, 9, "Nezo")
        }
 
    read_args(message, 191)
    remove_quotes(message)
    if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
        return PLUGIN_CONTINUE
 
 
    new name[32]
    get_user_name (id, name, 31)    
 
    new isAlive
 
    if (is_user_alive (id))
        {
            isAlive = 1
            alive = "^x01"
        }
    else
        {
            isAlive = 0
            alive = "^x01*HALOTT* "
        }
 
    static color[10]
 
    new rang[32];
    if(kills[id] < 10)
        rang = "Rangtalan"
    else if(kills[id] >= 10 && kills[id] < 20)
        rang = "Kezdo"
    else if(kills[id] >= 20 && kills[id] < 30)
        rang = "Halado"
    else if(kills[id] >= 30)
        rang = "Profi"
 
    //Rang+Name
    get_user_team (id, color, 9)
    format (strName, 191, "%s(%s) ^x04[%s]^x03%s", alive, playerTeamName, rang, name)
    format (strText, 191, "%s", message)
    format (message, 191, "%s^x01 :  %s", strName, strText)
    sendTeamMessage (color, isAlive, playerTeam)
 
    return PLUGIN_CONTINUE
}
 
public sendMessage (color[], alive)
{
    new teamName[10]
 
    for (new player = 1; player < maxPlayers; player++)
        {
            if (!is_user_connected(player))
                continue
 
            if (alive && is_user_alive(player) || !alive && !is_user_alive(player))
                {
                    get_user_team (player, teamName, 9)    
 
                    changeTeamInfo (player, color)        
 
                    writeMessage (player, message)        
 
                    changeTeamInfo (player, teamName)    
                }
        }
}
 
 
public sendTeamMessage (color[], alive, playerTeam)
{
    new teamName[10]
 
    for (new player = 1; player < maxPlayers; player++)
        {
            if (!is_user_connected(player))
                continue
 
            if (get_user_team(player) == playerTeam)
                {
                    if (alive && is_user_alive(player) || !alive && !is_user_alive(player))
                        {
                            get_user_team (player, teamName, 9)    
 
                            changeTeamInfo (player, color)        
 
                            writeMessage (player, message)        
 
                            changeTeamInfo (player, teamName)    
                        }
                }
        }
}
 
 
public changeTeamInfo (player, team[])
{
    message_begin (MSG_ONE, teamInfo, _, player)    
    write_byte (player)                
    write_string (team)                
    message_end()                    
}
 
 
public writeMessage (player, message[])
{
    message_begin (MSG_ONE, sayText, {0, 0, 0}, player)    
    write_byte (player)                    
    write_string (message)                    
    message_end ()                        
}