Allied Modders en español

Versión completa: MENU DE KENIFES (EDITAR)
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas quisiera saber como edito los frags de cada kenife que no encuentro nada que yo sepa... Porfavor.
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

new 
kKnifeSelected33 ], gFrag33 ];

enum _:KNIFE_DATA KNIFE_NAME[30], KNIFE_VMDL50 ], KNIFE_PMDL50 ], FRAGS };

new const 
Knifes[][KNIFE_DATA] ={
    
    { 
"Default",     "models/v_knife.mdl",     "models/p_knife.mdl"},
    { 
"Matirllo I",     "models/FOX_CTF/v_knife2.mdl""models/FOX_CTF/p_knife2.mdl"},
    { 
"Matirllo II",     "models/FOX_CTF/v_knife3.mdl""models/FOX_CTF/p_knife3.mdl"}
};

public 
plugin_precache() {
    for(new 
1sizeof Knifes; ++k) {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
register_event("DeathMsg""EventoM""a");
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
}

public 
ham_KnifeDeployPostwpn_ent ){
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
ShowMenuKnifesindex ){
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\d%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \nivel: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);

public 
EventoM(){
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];

Edita el ultimo parametro

Código PHP:
    //NOMBRE CUCHI -    MODEL_V                   - MODEL_P         - FRAGS
        
"Default",     "models/v_knife.mdl",     "models/p_knife.mdl"25 },
        { 
"Matirllo I""models/FOX_CTF/v_knife2.mdl""models/FOX_CTF/p_knife2.mdl"30 },
        { 
"Matirllo II""models/FOX_CTF/v_knife3.mdl""models/FOX_CTF/p_knife3.mdl"50 
(24/09/2018, 06:47 PM)Juansi Loow escribió: [ -> ]Edita el ultimo parametro

Código PHP:
    //NOMBRE CUCHI -    MODEL_V                   - MODEL_P         - FRAGS
        
"Default",     "models/v_knife.mdl",     "models/p_knife.mdl"25 },
        { 
"Matirllo I""models/FOX_CTF/v_knife2.mdl""models/FOX_CTF/p_knife2.mdl"30 },
        { 
"Matirllo II""models/FOX_CTF/v_knife3.mdl""models/FOX_CTF/p_knife3.mdl"50 

Gracias, probare... oye y ya solucione lo de mi ctf
(24/09/2018, 06:50 PM)Alejandro escribió: [ -> ]
(24/09/2018, 06:47 PM)Juansi Loow escribió: [ -> ]Edita el ultimo parametro

Código PHP:
    //NOMBRE CUCHI -    MODEL_V                   - MODEL_P         - FRAGS
        
"Default",     "models/v_knife.mdl",     "models/p_knife.mdl"25 },
        { 
"Matirllo I""models/FOX_CTF/v_knife2.mdl""models/FOX_CTF/p_knife2.mdl"30 },
        { 
"Matirllo II""models/FOX_CTF/v_knife3.mdl""models/FOX_CTF/p_knife3.mdl"50 

Gracias, probare... oye y ya solucione lo de mi ctf
Probalo, y me alegro ! Mario
(24/09/2018, 07:04 PM)Juansi Loow escribió: [ -> ]
(24/09/2018, 06:50 PM)Alejandro escribió: [ -> ]
(24/09/2018, 06:47 PM)Juansi Loow escribió: [ -> ]Edita el ultimo parametro

Código PHP:
    //NOMBRE CUCHI -    MODEL_V                   - MODEL_P         - FRAGS
        
"Default",     "models/v_knife.mdl",     "models/p_knife.mdl"25 },
        { 
"Matirllo I""models/FOX_CTF/v_knife2.mdl""models/FOX_CTF/p_knife2.mdl"30 },
        { 
"Matirllo II""models/FOX_CTF/v_knife3.mdl""models/FOX_CTF/p_knife3.mdl"50 

Gracias, probare... oye y ya solucione lo de mi ctf
Probalo, y me alegro ! Mario
esta bien, ahora pero cuando escojo un cuchillo, y quiero escojer otro no puedo :3

Miento si sirve ya probe, pero poria aumentar daño a cada una?

Bro otra cosa los nivees o frags no e guardan
El ultimo parametro es el daño de cada cuchillo

Prueba

Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

new 
kKnifeSelected33 ], gFrag33 ];

enum _:KNIFE_DATA KNIFE_NAME[30], KNIFE_VMDL50 ], KNIFE_PMDL50 ], FRAGS,  Float:DAMAGE_KNF };

new const 
Knifes[][KNIFE_DATA] =
{
    
    { 
"Default",             "models/v_knife.mdl",     "models/p_knife.mdl",     5,     1.0 },
    { 
"Matirllo I",         "models/v_knife.mdl",     "models/p_knife.mdl",     7,     2.5},
    { 
"Matirllo II",        "models/v_knife.mdl",     "models/p_knife.mdl",     10,     4.0}
};

public 
plugin_precache() 
{
    for(new 
1sizeof Knifes; ++k
    {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
RegisterHam(Ham_TakeDamage"player""Ham_Take_Damage")
    
register_event("DeathMsg""EventoM""a");
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
}

public 
ham_KnifeDeployPostwpn_ent )
{
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
Ham_Take_Damage(VictimainflictorAtacanteFloat:Daniodamage_bits)
{
    if(!
is_user_alive(Atacante)) 
        return 
HAM_IGNORED;
    
    if(
get_user_weapon(Atacante) == CSW_KNIFE )
    {
        
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
    }
    
SetHamParamFloat4Danio )
    return 
HAM_HANDLED;
}

public 
ShowMenuKnifesindex )
{
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\d%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \nivel: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);

public 
EventoM(){
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];

(24/09/2018, 08:03 PM)Juansi Loow escribió: [ -> ]El ultimo parametro es el daño de cada cuchillo

Prueba

Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

new 
kKnifeSelected33 ], gFrag33 ];

enum _:KNIFE_DATA KNIFE_NAME[30], KNIFE_VMDL50 ], KNIFE_PMDL50 ], FRAGS,  Float:DAMAGE_KNF };

new const 
Knifes[][KNIFE_DATA] =
{
    
    { 
"Default",             "models/v_knife.mdl",     "models/p_knife.mdl",     5,     1.0 },
    { 
"Matirllo I",         "models/v_knife.mdl",     "models/p_knife.mdl",     7,     2.5},
    { 
"Matirllo II",        "models/v_knife.mdl",     "models/p_knife.mdl",     10,     4.0}
};

public 
plugin_precache() 
{
    for(new 
1sizeof Knifes; ++k
    {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
RegisterHam(Ham_TakeDamage"player""Ham_Take_Damage")
    
register_event("DeathMsg""EventoM""a");
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
}

public 
ham_KnifeDeployPostwpn_ent )
{
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
Ham_Take_Damage(VictimainflictorAtacanteFloat:Daniodamage_bits)
{
    if(!
is_user_alive(Atacante)) 
        return 
HAM_IGNORED;
    
    if(
get_user_weapon(Atacante) == CSW_KNIFE )
    {
        
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
    }
    
SetHamParamFloat4Danio )
    return 
HAM_HANDLED;
}

public 
ShowMenuKnifesindex )
{
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\d%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \nivel: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);

public 
EventoM(){
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];

calidad pero el guardado es lo unico que falta osea si cambio mapa se me quita el knife

Otra pregunta esto me sirve para dar frags? o le falta algo
Código PHP:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() { 
       
register_concmd("dar_frags""cmd_frags"ADMIN_RCON" - Frags [Nombre] [Cantidad]"); } 
 public 
cmd_frag(idlevelcid) { 
    if (!
cmd_access(idlevelcid2)) 
        return 
PLUGIN_HANDLED
     
    
// Retrieve arguments 
    
static arg[32], arg2[6], playerfrag 
    read_argv
(1argsizeof arg 1
    
read_argv(2arg2sizeof arg2 1
    
player cmd_target(idargCMDTARGET_NO_BOTS CMDTARGET_ALLOW_SELF
     
    
// Invalid target 
    
if (!player) return PLUGIN_HANDLED
     
    
// Increase Points 
    
frag = (str_to_num(arg2)) 
     
    
client_print(idprint_chat"Le Diste %d Frags a %s"fragarg
    
client_print(playerprint_chat"te dieron %d De Frags"frag
     
    return 
PLUGIN_HANDLED; } 
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

enum _:KNIFE_DATA 

    
KNIFE_NAME[30], 
    
KNIFE_VMDL50 ], 
    
KNIFE_PMDL50 ],
    
FRAGS,  
    
Float:DAMAGE_KNF 
};

enum _:CAMPOS_VAULT
{
    
CAMPO_KNIFE_SELECTED
}

new const 
Knifes[][KNIFE_DATA] =
{
    { 
"Default",             "models/v_knife.mdl",     "models/p_knife.mdl",     1,     1.0 },
    { 
"Martillo I",         "models/v_knife.mdl",     "models/p_knife.mdl",     3,     2.5},
    { 
"Martillo II",        "models/v_knife.mdl",     "models/p_knife.mdl",     5,     4.0}
};
new 
kKnifeSelected[33]
new 
gFrag[33];
new 
g_Campos[CAMPOS_VAULT];
new 
g_Vault;
new 
g_MaxPlayers
new g_Nombre[33][32];

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
RegisterHam(Ham_TakeDamage"player""Ham_Take_Damage")
    
register_event("DeathMsg""Event_DeathMsg""a");
    
register_logevent("EventRoundStart"2"0=World triggered""1=Round_Start")
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
    
    
g_Vault adv_vault_open("Save_KnifeADV"false);
    
    
g_Campos[CAMPO_KNIFE_SELECTED] = adv_vault_register_field(g_Vault"knife_selected");
    
    
adv_vault_init(g_Vault);
    
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache() 
{
    for(new 
1sizeof Knifes; ++k
    {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
client_putinserver(id)
{
    
get_user_nameidg_Nombreid ], charsmaxg_Nombre[ ] ) );
    
Cargar(id)
}

public 
client_disconnect(id)
{
    
Guardar(id)
}

public 
EventRoundStart()
{
    for(new 
id 1id <= g_MaxPlayersid++)
    {
        
Guardar(id)
    }
}

public 
ham_KnifeDeployPostwpn_ent )
{
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
Ham_Take_Damage(VictimainflictorAtacanteFloat:Daniodamage_bits)
{
    if(!
is_user_alive(Atacante)) 
        return 
HAM_IGNORED;
        
    if(
get_user_weapon(Atacante) == CSW_KNIFE )
    {
        
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
    }
    
SetHamParamFloat4Danio )
    return 
HAM_HANDLED;
}

public 
Event_DeathMsg()
{
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];
}

public 
ShowMenuKnifesindex )
{
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\w%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \dFRAGS: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}

public 
Guardar(id
{
    
adv_vault_set_start(g_Vault);
    
    
adv_vault_set_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED], kKnifeSelected[id]);

    
adv_vault_set_end(g_Vault0g_Nombre[id]);
}

public 
Cargar(id
{
    if(!
adv_vault_get_prepare(g_Vault_g_Nombre[id])) 
        return;
    
    
kKnifeSelected[id] = adv_vault_get_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED]);

(24/09/2018, 08:32 PM)Juansi Loow escribió: [ -> ]
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

enum _:KNIFE_DATA 

    
KNIFE_NAME[30], 
    
KNIFE_VMDL50 ], 
    
KNIFE_PMDL50 ],
    
FRAGS,  
    
Float:DAMAGE_KNF 
};

enum _:CAMPOS_VAULT
{
    
CAMPO_KNIFE_SELECTED
}

new const 
Knifes[][KNIFE_DATA] =
{
    { 
"Default",             "models/v_knife.mdl",     "models/p_knife.mdl",     1,     1.0 },
    { 
"Martillo I",         "models/v_knife.mdl",     "models/p_knife.mdl",     3,     2.5},
    { 
"Martillo II",        "models/v_knife.mdl",     "models/p_knife.mdl",     5,     4.0}
};
new 
kKnifeSelected[33]
new 
gFrag[33];
new 
g_Campos[CAMPOS_VAULT];
new 
g_Vault;
new 
g_MaxPlayers
new g_Nombre[33][32];

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
RegisterHam(Ham_TakeDamage"player""Ham_Take_Damage")
    
register_event("DeathMsg""Event_DeathMsg""a");
    
register_logevent("EventRoundStart"2"0=World triggered""1=Round_Start")
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
    
    
g_Vault adv_vault_open("Save_KnifeADV"false);
    
    
g_Campos[CAMPO_KNIFE_SELECTED] = adv_vault_register_field(g_Vault"knife_selected");
    
    
adv_vault_init(g_Vault);
    
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache() 
{
    for(new 
1sizeof Knifes; ++k
    {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
client_putinserver(id)
{
    
get_user_nameidg_Nombreid ], charsmaxg_Nombre[ ] ) );
    
Cargar(id)
}

public 
client_disconnect(id)
{
    
Guardar(id)
}

public 
EventRoundStart()
{
    for(new 
id 1id <= g_MaxPlayersid++)
    {
        
Guardar(id)
    }
}

public 
ham_KnifeDeployPostwpn_ent )
{
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
Ham_Take_Damage(VictimainflictorAtacanteFloat:Daniodamage_bits)
{
    if(!
is_user_alive(Atacante)) 
        return 
HAM_IGNORED;
        
    if(
get_user_weapon(Atacante) == CSW_KNIFE )
    {
        
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
    }
    
SetHamParamFloat4Danio )
    return 
HAM_HANDLED;
}

public 
Event_DeathMsg()
{
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];
}

public 
ShowMenuKnifesindex )
{
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\w%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \dFRAGS: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}

public 
Guardar(id
{
    
adv_vault_set_start(g_Vault);
    
    
adv_vault_set_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED], kKnifeSelected[id]);

    
adv_vault_set_end(g_Vault0g_Nombre[id]);
}

public 
Cargar(id
{
    if(!
adv_vault_get_prepare(g_Vault_g_Nombre[id])) 
        return;
    
    
kKnifeSelected[id] = adv_vault_get_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED]);


necesito el plugin adv_vault?

(24/09/2018, 08:32 PM)Juansi Loow escribió: [ -> ]
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

enum _:KNIFE_DATA 

    
KNIFE_NAME[30], 
    
KNIFE_VMDL50 ], 
    
KNIFE_PMDL50 ],
    
FRAGS,  
    
Float:DAMAGE_KNF 
};

enum _:CAMPOS_VAULT
{
    
CAMPO_KNIFE_SELECTED
}

new const 
Knifes[][KNIFE_DATA] =
{
    { 
"Default",             "models/v_knife.mdl",     "models/p_knife.mdl",     1,     1.0 },
    { 
"Martillo I",         "models/v_knife.mdl",     "models/p_knife.mdl",     3,     2.5},
    { 
"Martillo II",        "models/v_knife.mdl",     "models/p_knife.mdl",     5,     4.0}
};
new 
kKnifeSelected[33]
new 
gFrag[33];
new 
g_Campos[CAMPOS_VAULT];
new 
g_Vault;
new 
g_MaxPlayers
new g_Nombre[33][32];

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
RegisterHam(Ham_TakeDamage"player""Ham_Take_Damage")
    
register_event("DeathMsg""Event_DeathMsg""a");
    
register_logevent("EventRoundStart"2"0=World triggered""1=Round_Start")
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
    
    
g_Vault adv_vault_open("Save_KnifeADV"false);
    
    
g_Campos[CAMPO_KNIFE_SELECTED] = adv_vault_register_field(g_Vault"knife_selected");
    
    
adv_vault_init(g_Vault);
    
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache() 
{
    for(new 
1sizeof Knifes; ++k
    {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
client_putinserver(id)
{
    
get_user_nameidg_Nombreid ], charsmaxg_Nombre[ ] ) );
    
Cargar(id)
}

public 
client_disconnect(id)
{
    
Guardar(id)
}

public 
EventRoundStart()
{
    for(new 
id 1id <= g_MaxPlayersid++)
    {
        
Guardar(id)
    }
}

public 
ham_KnifeDeployPostwpn_ent )
{
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
Ham_Take_Damage(VictimainflictorAtacanteFloat:Daniodamage_bits)
{
    if(!
is_user_alive(Atacante)) 
        return 
HAM_IGNORED;
        
    if(
get_user_weapon(Atacante) == CSW_KNIFE )
    {
        
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
    }
    
SetHamParamFloat4Danio )
    return 
HAM_HANDLED;
}

public 
Event_DeathMsg()
{
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];
}

public 
ShowMenuKnifesindex )
{
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\w%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \dFRAGS: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}

public 
Guardar(id
{
    
adv_vault_set_start(g_Vault);
    
    
adv_vault_set_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED], kKnifeSelected[id]);

    
adv_vault_set_end(g_Vault0g_Nombre[id]);
}

public 
Cargar(id
{
    if(!
adv_vault_get_prepare(g_Vault_g_Nombre[id])) 
        return;
    
    
kKnifeSelected[id] = adv_vault_get_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED]);


no me abrio el menu
Disculpa me olvide de mencionarte. Si necesitas el plugin adv_vault
(24/09/2018, 09:29 PM)Juansi Loow escribió: [ -> ]Disculpa me olvide de mencionarte. Si necesitas el plugin adv_vault

oye pero el menu no me abre
A mi me funciona bien
Recuerda poner el plugin adv_vault.amxx arriba de todo

adv_vault.amxx
plugin_knife.amxx
(24/09/2018, 09:41 PM)Juansi Loow escribió: [ -> ]A mi me funciona bien
Recuerda poner el plugin adv_vault.amxx arriba de todo

adv_vault.amxx
plugin_knife.amxx

asi mismo lo tengo alv xd que sad
te suelta algun log en consola, cuando intentas abrir el menu??
si tienes un plugin que ejecute el hook say ponlo por debajo
ejemplo

adv_vault.amxx debug
plugin_knife.amxx debug

admin_prefix.amxx debug
Ya solucione muchas gracias a todos

Yo podria diseñar algo para dar frags?
claro que puedes, si tienes la imaginación para hacerlo...
xd dentro del plugin me ayudan? un cmd que diga dar_Frags
ya te lo pase por privado, pero que quieres, adaptarlo??
(25/09/2018, 11:57 AM)Saber escribió: [ -> ]ya te lo pase por privado, pero que quieres, adaptarlo??

Por que por privado y no por aca ? a alguien mas le puede servir...


PD: alejandro aca tenes, probalo y decime

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>

new const P_INFO[][] = { "KnifeMenu""1.0""kikizon" };

enum _:KNIFE_DATA 

    
KNIFE_NAME[30], 
    
KNIFE_VMDL50 ], 
    
KNIFE_PMDL50 ],
    
FRAGS,  
    
Float:DAMAGE_KNF 
};

enum _:CAMPOS_VAULT
{
    
CAMPO_KNIFE_SELECTED
}

new const 
Knifes[][KNIFE_DATA] =
{
    { 
"Default",             "models/v_knife.mdl",     "models/p_knife.mdl",     1,     1.0 },
    { 
"Martillo I",         "models/v_knife.mdl",     "models/p_knife.mdl",     3,     2.5},
    { 
"Martillo II",        "models/v_knife.mdl",     "models/p_knife.mdl",     5,     4.0}
};
new 
kKnifeSelected[33]
new 
gFrag[33];
new 
g_Campos[CAMPOS_VAULT];
new 
g_Vault;
new 
g_MaxPlayers
new g_Nombre[33][32];

public 
plugin_init() 
{
    
register_pluginP_INFO], P_INFO], P_INFO] );
    
    
RegisterHam(Ham_Item_Deploy"weapon_knife""ham_KnifeDeployPost"true );
    
RegisterHam(Ham_TakeDamage"player""Ham_Take_Damage")
    
register_event("DeathMsg""Event_DeathMsg""a");
    
register_logevent("EventRoundStart"2"0=World triggered""1=Round_Start")
    
    
register_clcmd"say /knife""ShowMenuKnifes" );
    
register_concmd("amx_frags""Concmd_Frags"ADMIN_RCON"<Nombre o #ID> '+' | '-' | 'Cantidad' Ej: amx_frags Usuario +50 o -50 para quitar");
    
    
g_Vault adv_vault_open("Save_KnifeADV"false);
    
    
g_Campos[CAMPO_KNIFE_SELECTED] = adv_vault_register_field(g_Vault"knife_selected");
    
    
adv_vault_init(g_Vault);
    
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache() 
{
    for(new 
1sizeof Knifes; ++k
    {
        
precache_modelKnifes][ KNIFE_VMDL ]);
        
precache_modelKnifes][ KNIFE_PMDL ]);
    }
}

public 
client_putinserver(id)
{
    
get_user_nameidg_Nombreid ], charsmaxg_Nombre[ ] ) );
    
Cargar(id)
}

public 
client_disconnect(id)
{
    
Guardar(id)
}

public 
EventRoundStart()
{
    for(new 
id 1id <= g_MaxPlayersid++)
    {
        
Guardar(id)
    }
}

public 
ham_KnifeDeployPostwpn_ent )
{
    static 
kOwnerkOwner get_weapon_ent_ownerwpn_ent );
    
    if ( !
pev_valid(kOwner) || !is_user_alivekOwner ) ) return;
    
    
set_pevkOwnerpev_viewmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_VMDL ] );
    
set_pevkOwnerpev_weaponmodel2KnifeskKnifeSelected[kOwner] ][ KNIFE_PMDL ] );
}

public 
Ham_Take_Damage(VictimainflictorAtacanteFloat:Daniodamage_bits)
{
    if(!
is_user_alive(Atacante)) 
        return 
HAM_IGNORED;
        
    if(
get_user_weapon(Atacante) == CSW_KNIFE )
    {
        
Danio *= Knifes[kKnifeSelected[Atacante]][DAMAGE_KNF];
    }
    
SetHamParamFloat4Danio )
    return 
HAM_HANDLED;
}

public 
Event_DeathMsg()
{
    new 
attacker read_data(1);
    new 
victim read_data(2);
    
    if(
attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
        return ;
    
    ++
gFrag[attacker];
}

public 
ShowMenuKnifesindex )
{
    static 
kknife[40], menu
    
menu menu_create("\wMenu de Knifes""menu_knifes" );
    
    for(
0sizeof Knifes; ++)
    {
        if( 
kKnifeSelectedindex ] == )
        {
            
formatexknifecharsmax(knife), "\w%s \r[ \yACTUAL \r]"Knifes][ KNIFE_NAME ] );
            
menu_additemmenuknife"" );
        }
        else 
        {
            if( 
gFragindex ] >= Knifes][ FRAGS ] )
                
menu_additemmenuKnifes][ KNIFE_NAME ], "" );
            else {
                
formatexknifecharsmax(knife), "\d%s \r[ \dFRAGS: %d \r]"Knifes][ KNIFE_NAME ], Knifes][ FRAGS ] );
                
menu_additemmenuknife"" );
            }
        }
    }
    
    
menu_displayindexmenu );
}

public 
menu_knifesindexmenuitem )
{
    if( 
item == MENU_EXIT )
    {
        
menu_destroymenu );
        return 
PLUGIN_HANDLED;
    }
    
    if( 
kKnifeSelectedindex ] == item )
    {
        
client_printindexprint_center"Ya elegiste este knife");
        return 
PLUGIN_HANDLED;
    }
    
    if( 
gFragindex ] < Knifesitem ][ FRAGS ])
    {
        
client_printindexprint_chat"Necesitas ser nivel: %d"Knifesitem ][ FRAGS ] );
        return 
PLUGIN_HANDLED;
    }
    
    
kKnifeSelectedindex ] = item;
    
engclient_cmdindex"weapon_knife");
    
    
menu_destroymenu );
    return 
PLUGIN_HANDLED;
}

public 
Concmd_Frags(idlevelcid)
{
    if (!
cmd_access(id,level,cid,2))
    {
        
client_print(idprint_chat"** No tenes acceso para usar este comando.")//, INFOPLUGIN[3])
        
return PLUGIN_HANDLED
    
}
    
    new 
sArg1[32], NameADM[32], NamePLAYER[32], iJugador
    get_user_name
(idNameADM31)
    
    
read_argv(1sArg131)
    
iJugador cmd_target(idsArg1CMDTARGET_ALLOW_SELF);
    
    
get_user_name(iJugadorNamePLAYER31)
    
    if(!
iJugador)
        return 
PLUGIN_HANDLED;
    
    new 
sArg2[21]
    
read_argv(2sArg220)
    
    new 
iFrags
    
new iLastFrags
    
    iFrags 
str_to_num(sArg2)
    
iLastFrags gFrag[iJugador]
    
    switch(
sArg2[0])
    {
        case 
'+''-':
        {
            
gFrag[iJugador] += iFrags
            client_print
(iJugadorprint_chat"** %s te %s %d Frags (Antes tenias: %d)"NameADM, (sArg2[0] == '+') ? "dio" "saco"iFragsiLastFrags)
        }
        default:
        {
            
gFrag[iJugador] = iFrags
            client_print
(idprint_chat"** Le has editado los Frags a %s y ahora tiene %d Frags (Antes tenia: %d)"NamePLAYERiFragsiLastFrags)
            
client_print(iJugadorprint_chat"** %s te ha editado tus Frags, ahora tenes %d Frags^1 ^3(^1Antes tenias: %d)"NameADMiFragsiLastFrags)
        }
    }
    
    return 
PLUGIN_HANDLED
}

stock get_weapon_ent_owner(ent)
{
    if (
pev_valid(ent) != 2)
        return -
1;
    
    return 
get_pdata_cbase(ent414);
}

public 
Guardar(id
{
    
adv_vault_set_start(g_Vault);
    
    
adv_vault_set_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED], kKnifeSelected[id]);

    
adv_vault_set_end(g_Vault0g_Nombre[id]);
}

public 
Cargar(id
{
    if(!
adv_vault_get_prepare(g_Vault_g_Nombre[id])) 
        return;
    
    
kKnifeSelected[id] = adv_vault_get_field(g_Vaultg_Campos[CAMPO_KNIFE_SELECTED]);

Código PHP:
iLastFrags gFrag[iJugador 
------------------->
Código PHP:
iLastFrags gFrag[iJugador

FIX


Yo no le pase este plugins por privado, le di la idea del Concmd, ya que no me dijo que lo queria adaptado. pero bueno.
Oye lo de dar frags no me funciona pong +100 y nada dice solo has dado 0 frags a player
Código PHP:
/*    -----------------------------------------
Creditos: Solo para Raulitop, por el hook say :3

Version Con Guardado NFVAULT
-------------------------------            */

#include <amxmisc>
#include <fakemeta>
#include <nfvault>
#include <jctf>

new const PLUGIN[] = "Rangos CS:GO"
#define VERSION "1.0"
new const AUTHOR[] = "kikizon"

/* =============================================
|= [EMPIEZA SECCION MODIFICABLE] =|
==============================================*/
/* ====================================
*[CONSTANTES]*
=====================================*/ 
new const Web[] = "www.tunserver.com.ve"  // Se Muestra en HUD
new const Prefijo[] = "!g(!y|!g->!tFox!g<-!y|!g)!y" // Prefijo en say
new const Sonido[] = "FOXSOUND_CTF/up.wav" // Sonido Rango UP

new Flags;
new 
g_AdminTag[33][10]

enum _:Data {
    
TAG[10],
    
FLAG
}

new const 
AdminsTags[][Data] = {
    { 
"DUEÑO"ADMIN_RCON },
    { 
"SOCIO"ADMIN_IMMUNITY },
    { 
"ADMIN"ADMIN_KICK },
    { 
"SPAMERO"ADMIN_RESERVATION }
}
/* ====================================
*[CONST NOMBRES DE RANGOS]*
=====================================*/
enum _:DATA
{
    
NOMBRE[30],
    
FRAGS
}
new const 
Rangos[][DATA] = {
    { 
"Novato"100 },
    { 
"Amateur"200 },
    { 
"Amateur II"300 },
    { 
"Semi PRO"500 },
    { 
"Semi PRO II"700 },
    { 
"Semi PRO III"800 },
    { 
"PRO"900 },
    { 
"PRO II"1000 },
    { 
"PRO Gold"1200 },
    { 
"Semi FOX"1300 },
    { 
"Semi FOX II"1400 },
    { 
"FOX COMPLETE",1500 },
    { 
"FOX COMPLETE II"1700 },
    { 
"FOX LEGEDNARIO"1800 },
    { 
"FOX LEGENDARIO MASTER"1900 },
    { 
"FOX LEGENDARIO ELITE"2000 },
    { 
"OFICIAL FOX"2100 },
    { 
"OFICIAL FOX MASTER"2200 },
    { 
"GEFE GUERRILLERO FOX"2500 }
}


/* =============================================
|= [TERMINA SECCION MODIFICABLE] =|
==============================================*/

/* ====================================
*[VARIABLES]*
=====================================*/
new g_rango[33], g_frags[33]
new 
SyncHUDg_maxplayersg_msgTeamInfog_msgSayTextg_playername[33][32];
#define TASK_HUD 2100
#define ID_HUD (taskid - TASK_HUD)
#define XD is_user_connected(id) || !is_user_bot(id) || !is_user_hltv(id)
new VaultRango[128], szRangos[180], szKey[30]

/* ====================================
*[Cvars]*
=====================================*/
new cvar_Hudcvar_knifex2cvar_hsx2
/* ====================================
*[INIT]*
=====================================*/
public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("DeathMsg""Event_DeathMsg""a")
    
register_logevent("logevent_round_end"2"1=Round_End")
    
    
register_clcmd("say""message_saytext"
    
register_clcmd("say_team""message_sayteam")
    
    
    
/* =============================================
    |= [EMPIEZA SECCION MODIFICABLE] =|
    ==============================================*/
    
cvar_Hud register_cvar("rangos_hud""1")          // 1 - Mostrar HUD | 0 - No Mostrar
    
cvar_knifex2 register_cvar("rangos_knifex2""1")    // 1 - x2 frags con knife | 0 - ÑO :v
    
cvar_hsx2 register_cvar("rangos_hsx2""1")        // 1 - x2 frags de HeadShot | 0 - ÑO :v
    /* =============================================
    |= [TERMINA SECCION MODIFICABLE] =|
    ==============================================*/
    
    
    
SyncHUD CreateHudSyncObj()
    
g_maxplayers get_maxplayers()
    
g_msgTeamInfo get_user_msgid("TeamInfo")
    
g_msgSayText get_user_msgid("SayText")
    
    
nfv_file("Ranguitos"VaultRangocharsmax(VaultRango))
}
/* ====================================
*[PRECACHE]*
=====================================*/
public plugin_precache() 
    
precache_sound(Sonido)
/* ===================================
*[HUD]*
=====================================*/
public HUD(taskid) {
    new 
id ID_HUD
    
    
if (!is_user_alive(id)) {
        
id pev(idpev_iuser2)
        if (!
is_user_alive(id)) return;
    }
   
    if(
id != ID_HUD) {
        
set_hudmessage(71742420.600.6716.01.0)
        
ShowSyncHudMsg(ID_HUDSyncHUD"Frags: %d  ||  Rango: %s ||  Adrenalina: %s"g_frags[id], Rangos[g_rango[id]][NOMBRE],jctf_get_adrenaline(id))
    } else {
        
set_hudmessage(71742420.00.1516.01.0)
        
ShowSyncHudMsg(ID_HUDSyncHUD"===|COMUNIDAD FOX|===||>^n||Frags: %d^n||Rango: %s^n======================||>^n||Sig. Rango: %s^n||Frags Restantes: %d^n======================||>^n||%s^n======================||>^n||Adrenalina: %d^n======================||>"
        
g_frags[id], Rangos[g_rango[id]][NOMBRE], Rangos[g_rango[id]+1][NOMBRE], Rangos[g_rango[id]][FRAGS] -  g_frags[id], Webjctf_get_adrenaline(id))
    }
    

/* ==================================
    [PUTINSERVER]
===================================*/
public client_putinserver(id) {
    
get_user_nameidg_playernameid ], charsmaxg_playername[ ] ) );
    
g_rango[id] = 0
    g_frags
[id] = 0
    
    Cargar
(id)
    
    if(
get_pcvar_num(cvar_Hud)) 
        
set_task(1.0"HUD"id+TASK_HUD__"b")
    if(!
is_user_admin(id)) {
        
copy(g_AdminTag[id], charsmax(g_AdminTag[]), "")
        return
    }
        
    
Flags get_user_flagsid );
    
    for(new 
isizeof AdminsTagsi++) {
        if(
Flags AdminsTags[i][FLAG]) {
            
copy(g_AdminTag[id], charsmax(g_AdminTag[]), AdminsTags[i][TAG])
            break;
        }
    }
}
/* ==================================
    [DISCONNECT]
===================================*/
public client_disconnect(id) {
    if(
XDGuardar(id);
        
    
remove_task(id+TASK_HUD)
}

/* ==================================
    [ROUND END]
===================================*/
public logevent_round_end() {
    for(new 
id 1id <= g_maxplayersid++) {
        if(
XD
            
Guardar(id); 
    }
}
/* ==================================
    [DEATHMSG]
===================================*/
public Event_DeathMsg() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker)
    
    if(
victim == attacker) return;
    
    if(
is_user_alive(attacker)) {
        
g_frags[attacker]++
        
        if(
get_pcvar_num(cvar_knifex2)) {
            if(
weaponid == CSW_KNIFE
                
g_frags[attacker]++
        }
        if(
get_pcvar_num(cvar_hsx2)) {
            if(
hsg_frags[attacker]++
        }
        
AumentarRango(attacker)
    }
}
/* ================================
    [UPDATE RANGO]
=================================*/
AumentarRango(id) {    
    new 
Aumento false
    
    
while(g_frags[id] >= Rangos[g_rango[id]][FRAGS]) {
        
Aumento true
        g_rango
[id]++
    }
        
    if(
Aumento) {
        
chatcolor(id"%s Felicidades subiste al rango: !g[ %s ]"PrefijoRangos[g_rango[id]][NOMBRE])
        
client_cmd(id"spk %s"Sonido)
        
Aumento false
    
}

/*=====================================
*[SAY]*
=====================================*/
public message_saytext(id) { 
    static 
said[192
    
read_args(saidcharsmax(said)) 
    
remove_quotes(said
    
    if (
said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said""))
        return 
PLUGIN_HANDLED

    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE;
    
    static 
color[11], name[32], alive[11]
    
get_user_team(id,color,charsmax(color))
    
get_user_name(id,name,charsmax(name))

    if (
is_user_alive (id)) {
        
alive ""
    
} else {
        
alive "*Muerto*"
    
}

    if (
is_user_admin(id)) {
        if (
get_user_flags(id)) 
            
format(saidcharsmax(said), "^x01%s (^x04 %s^x01 )^x04 [^x03%s^x04]^x01->^x03%s^x01:^x04 %s"aliveRangos[g_rango[id]][NOMBRE], g_AdminTag[id], namesaid)
    } else 
    {
        
format(saidcharsmax(said), "^x01%s (^x04 %s^x01 )^x03 %s^x01: %s"aliveRangos[g_rango[id]][NOMBRE], namesaid)
    }
    
    static 
iteam[11
    for (
1<= g_maxplayersi++) {
        if (!
is_user_connected(i)) continue
        
get_user_name(id,name,charsmax(name))
        
        if (
is_user_admin(i) || is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) {
            
get_user_team(iteamcharsmax(team))
            
changeTeamInfo(icolor)
            
writeMessage(isaid)
            
changeTeamInfo(iteam)
        }
    }
    return 
PLUGIN_HANDLED_MAIN;
}

public 
message_sayteam(id)
{    
    static 
said[192
    
read_args(saidcharsmax(said)) 
    
remove_quotes(said
    
    if ( 
said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said""))
        return 
PLUGIN_HANDLED

    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE
    
    static 
playerTeamplayerTeamName[19]
    
playerTeam get_user_team(id)
    
    switch (
playerTeam) {
        case 
1copy (playerTeamName6" TE ")
        case 
2copy (playerTeamName8"CT "
        default: 
copy (playerTeamName11" SPEC "
    }

    static 
color[11], name[32], alive[11]
    
get_user_team(id,color,charsmax(color))
    
get_user_name(id,name,charsmax(name))
    
    if (
is_user_alive (id)) {
        
alive ""
    
} else {
        
alive "*MUERTO*"
    
}

    if (
is_user_admin(id)) {
        if (
get_user_flags(id) & ADMIN_RCON)
            
format(saidcharsmax(said), "^x01%s ^x03[^x01%s^x03] (^x04 %s^x01 )^x04 [^x03%s^x04]^x01->^x03%s^x01:^x04 %s"aliveplayerTeamRangos[g_rango[id]], g_AdminTag[id], namesaid)
    } else {
        
format(saidcharsmax(said), "^x01%s ^x03[^x01%s^x03] ^04%s ^x03%s ^x01: %s"aliveplayerTeamRangos[g_rango[id]],namesaid)
    }


    static 
iteam[11
    for (
1<= g_maxplayersi++) {
        if (!
is_user_connected(i)) continue;
        
get_user_name(id,name,charsmax(name))
        
        if (
get_user_team(i) == playerTeam || is_user_admin(i)) {
            if (
is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) {
                
get_user_team(iteamcharsmax(team))
                
changeTeamInfo(icolor)
                
writeMessage(isaid)
                
changeTeamInfo(iteam)
            }
        }
    }
    return 
PLUGIN_HANDLED_MAIN;
}
public 
changeTeamInfo(playerteam[]) {
    
message_begin(MSG_ONEg_msgTeamInfo_player)
    
write_byte(player)
    
write_string(team)
    
message_end()
}




public 
writeMessage(playermessage[]) {
    
message_begin(MSG_ONEg_msgSayText, {000}, player)
    
write_byte(player)
    
write_string(message)
    
message_end()
}
/* ===================================
*[GUARDADO]*
=====================================*/
Guardar(id) {
    
formatex(szKeycharsmax(szKey), "data_rangos"
    
formatex(szRangoscharsmax(szRangos), "%d %d"g_frags[id], g_rango[id])
    
    
nfv_set_data(VaultRangoszKeyg_playername[id], szRangos)
}

Cargar(id) {
    new 
g_load_c1[25], g_load_c2[25]
    
formatex(szKeycharsmax(szKey), "data_rangos"
    
    if(!
nfv_get_data(VaultRangoszKeyg_playername[id], szRangossizeof(szRangos) - 1)) return; 
   
    
parse(szRangosg_load_c1charsmax(g_load_c1), g_load_c2charsmax(g_load_c2))
    
    
g_frags[id] = str_to_num(g_load_c1)
    
g_rango[id] = str_to_num(g_load_c2)

/* ===================================
*[STOCKS]*
=====================================*/
// stock de chatcolor
stock chatcolorid, const input[], any:... )
{
    static 
szMsg191 ], msgSayText;
    
    if( !
msgSayText )
        
msgSayText get_user_msgid"SayText" );
    
    
vformatszMsg190input);

    
replace_allszMsg190"!g""^4" );
    
replace_allszMsg190"!y""^1" );
    
replace_allszMsg190"!t""^3" );
    
    
message_beginid MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id );
    
write_byteid id 33 );
    
write_stringszMsg );
    
message_end( );

// Stock para Saber Si el mensaje es valido
stock ValidMessage(text[], maxcount) {
    static 
lenicount
    len 
strlen(text)
    
count 0
    
    
if (!len)
        return 
false;
    
    for (
0leni++) {
        if (
text[i] != ' ') {
            
count++
            if (
count >= maxcount)
                return 
true;
        }
    }
    return 
false;


Hoidan editen desde este para no tener que cambiar las rutas cada rato xd aja me gustaria que Funcionara lo de dar frags y los frags aparescan tambien en la tabla de score de estadistica, y agregar que los admins puedan usar todas las skins asi no tengan la cantidad de frags pacman porfa
Código PHP:
/*    -----------------------------------------
Creditos: Solo para Raulitop, por el hook say :3

Version Con Guardado NFVAULT
-------------------------------            */

#include <amxmisc>
#include <fakemeta>
#include <nfvault>
#include <jctf>

new const PLUGIN[] = "Rangos CS:GO"
#define VERSION "1.0"
new const AUTHOR[] = "kikizon"

/* =============================================
|= [EMPIEZA SECCION MODIFICABLE] =|
==============================================*/
/* ====================================
*[CONSTANTES]*
=====================================*/ 
new const Web[] = "www.tunserver.com.ve"  // Se Muestra en HUD
new const Prefijo[] = "!g(!y|!g->!tFox!g<-!y|!g)!y" // Prefijo en say
new const Sonido[] = "FOXSOUND_CTF/up.wav" // Sonido Rango UP

new Flags;
new 
g_AdminTag[33][10]

enum _:Data {
    
TAG[10],
    
FLAG
}

new const 
AdminsTags[][Data] = {
    { 
"DUEÑO"ADMIN_RCON },
    { 
"SOCIO"ADMIN_IMMUNITY },
    { 
"ADMIN"ADMIN_KICK },
    { 
"SPAMERO"ADMIN_RESERVATION }
}
/* ====================================
*[CONST NOMBRES DE RANGOS]*
=====================================*/
enum _:DATA
{
    
NOMBRE[30],
    
FRAGS
}
new const 
Rangos[][DATA] = {
    { 
"Novato"100 },
    { 
"Amateur"200 },
    { 
"Amateur II"300 },
    { 
"Semi PRO"500 },
    { 
"Semi PRO II"700 },
    { 
"Semi PRO III"800 },
    { 
"PRO"900 },
    { 
"PRO II"1000 },
    { 
"PRO Gold"1200 },
    { 
"Semi FOX"1300 },
    { 
"Semi FOX II"1400 },
    { 
"FOX COMPLETE",1500 },
    { 
"FOX COMPLETE II"1700 },
    { 
"FOX LEGEDNARIO"1800 },
    { 
"FOX LEGENDARIO MASTER"1900 },
    { 
"FOX LEGENDARIO ELITE"2000 },
    { 
"OFICIAL FOX"2100 },
    { 
"OFICIAL FOX MASTER"2200 },
    { 
"GEFE GUERRILLERO FOX"2500 }
}


/* =============================================
|= [TERMINA SECCION MODIFICABLE] =|
==============================================*/

/* ====================================
*[VARIABLES]*
=====================================*/
new g_rango[33], g_frags[33]
new 
SyncHUDg_maxplayersg_msgTeamInfog_msgSayTextg_playername[33][32];
#define TASK_HUD 2100
#define ID_HUD (taskid - TASK_HUD)
#define XD is_user_connected(id) || !is_user_bot(id) || !is_user_hltv(id)
new VaultRango[128], szRangos[180], szKey[30]

/* ====================================
*[Cvars]*
=====================================*/
new cvar_Hudcvar_knifex2cvar_hsx2
/* ====================================
*[INIT]*
=====================================*/
public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_event("DeathMsg""Event_DeathMsg""a")
    
register_logevent("logevent_round_end"2"1=Round_End")
    
    
register_clcmd("say""message_saytext"
    
register_clcmd("say_team""message_sayteam")
    
    
    
/* =============================================
    |= [EMPIEZA SECCION MODIFICABLE] =|
    ==============================================*/
    
cvar_Hud register_cvar("rangos_hud""1")          // 1 - Mostrar HUD | 0 - No Mostrar
    
cvar_knifex2 register_cvar("rangos_knifex2""1")    // 1 - x2 frags con knife | 0 - ÑO :v
    
cvar_hsx2 register_cvar("rangos_hsx2""1")        // 1 - x2 frags de HeadShot | 0 - ÑO :v
    /* =============================================
    |= [TERMINA SECCION MODIFICABLE] =|
    ==============================================*/
    
    
    
SyncHUD CreateHudSyncObj()
    
g_maxplayers get_maxplayers()
    
g_msgTeamInfo get_user_msgid("TeamInfo")
    
g_msgSayText get_user_msgid("SayText")
    
    
nfv_file("Ranguitos"VaultRangocharsmax(VaultRango))
}
/* ====================================
*[PRECACHE]*
=====================================*/
public plugin_precache() 
    
precache_sound(Sonido)
/* ===================================
*[HUD]*
=====================================*/
public HUD(taskid) {
    new 
id ID_HUD
    
    
if (!is_user_alive(id)) {
        
id pev(idpev_iuser2)
        if (!
is_user_alive(id)) return;
    }
   
    if(
id != ID_HUD) {
        
set_hudmessage(71742420.600.6716.01.0)
        
ShowSyncHudMsg(ID_HUDSyncHUD"Frags: %d  ||  Rango: %s ||  Adrenalina: %s"g_frags[id], Rangos[g_rango[id]][NOMBRE],jctf_get_adrenaline(id))
    } else {
        
set_hudmessage(71742420.00.1516.01.0)
        
ShowSyncHudMsg(ID_HUDSyncHUD"===|COMUNIDAD FOX|===||>^n||Frags: %d^n||Rango: %s^n======================||>^n||Sig. Rango: %s^n||Frags Restantes: %d^n======================||>^n||%s^n======================||>^n||Adrenalina: %d^n======================||>"
        
g_frags[id], Rangos[g_rango[id]][NOMBRE], Rangos[g_rango[id]+1][NOMBRE], Rangos[g_rango[id]][FRAGS] -  g_frags[id], Webjctf_get_adrenaline(id))
    }
    

/* ==================================
    [PUTINSERVER]
===================================*/
public client_putinserver(id) {
    
get_user_nameidg_playernameid ], charsmaxg_playername[ ] ) );
    
g_rango[id] = 0
    g_frags
[id] = 0
    
    Cargar
(id)
    
    if(
get_pcvar_num(cvar_Hud)) 
        
set_task(1.0"HUD"id+TASK_HUD__"b")
    if(!
is_user_admin(id)) {
        
copy(g_AdminTag[id], charsmax(g_AdminTag[]), "")
        return
    }
        
    
Flags get_user_flagsid );
    
    for(new 
isizeof AdminsTagsi++) {
        if(
Flags AdminsTags[i][FLAG]) {
            
copy(g_AdminTag[id], charsmax(g_AdminTag[]), AdminsTags[i][TAG])
            break;
        }
    }
}
/* ==================================
    [DISCONNECT]
===================================*/
public client_disconnect(id) {
    if(
XDGuardar(id);
        
    
remove_task(id+TASK_HUD)
}

/* ==================================
    [ROUND END]
===================================*/
public logevent_round_end() {
    for(new 
id 1id <= g_maxplayersid++) {
        if(
XD
            
Guardar(id); 
    }
}
/* ==================================
    [DEATHMSG]
===================================*/
public Event_DeathMsg() {
    new 
attacker read_data(1)
    new 
victim read_data(2)
    new 
hs read_data(3)
    new 
weaponid get_user_weapon(attacker)
    
    if(
victim == attacker) return;
    
    if(
is_user_alive(attacker)) {
        
g_frags[attacker]++
        
        if(
get_pcvar_num(cvar_knifex2)) {
            if(
weaponid == CSW_KNIFE
                
g_frags[attacker]++
        }
        if(
get_pcvar_num(cvar_hsx2)) {
            if(
hsg_frags[attacker]++
        }
        
AumentarRango(attacker)
    }
}
/* ================================
    [UPDATE RANGO]
=================================*/
AumentarRango(id) {    
    new 
Aumento false
    
    
while(g_frags[id] >= Rangos[g_rango[id]][FRAGS]) {
        
Aumento true
        g_rango
[id]++
    }
        
    if(
Aumento) {
        
chatcolor(id"%s Felicidades subiste al rango: !g[ %s ]"PrefijoRangos[g_rango[id]][NOMBRE])
        
client_cmd(id"spk %s"Sonido)
        
Aumento false
    
}

/*=====================================
*[SAY]*
=====================================*/
public message_saytext(id) { 
    static 
said[192
    
read_args(saidcharsmax(said)) 
    
remove_quotes(said
    
    if (
said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said""))
        return 
PLUGIN_HANDLED

    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE;
    
    static 
color[11], name[32], alive[11]
    
get_user_team(id,color,charsmax(color))
    
get_user_name(id,name,charsmax(name))

    if (
is_user_alive (id)) {
        
alive ""
    
} else {
        
alive "*Muerto*"
    
}

    if (
is_user_admin(id)) {
        if (
get_user_flags(id)) 
            
format(saidcharsmax(said), "^x01%s (^x04 %s^x01 )^x04 [^x03%s^x04]^x01->^x03%s^x01:^x04 %s"aliveRangos[g_rango[id]][NOMBRE], g_AdminTag[id], namesaid)
    } else 
    {
        
format(saidcharsmax(said), "^x01%s (^x04 %s^x01 )^x03 %s^x01: %s"aliveRangos[g_rango[id]][NOMBRE], namesaid)
    }
    
    static 
iteam[11
    for (
1<= g_maxplayersi++) {
        if (!
is_user_connected(i)) continue
        
get_user_name(id,name,charsmax(name))
        
        if (
is_user_admin(i) || is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) {
            
get_user_team(iteamcharsmax(team))
            
changeTeamInfo(icolor)
            
writeMessage(isaid)
            
changeTeamInfo(iteam)
        }
    }
    return 
PLUGIN_HANDLED_MAIN;
}

public 
message_sayteam(id)
{    
    static 
said[192
    
read_args(saidcharsmax(said)) 
    
remove_quotes(said
    
    if ( 
said[0] == '%' || said[0] == '.' || said[0] == '!' || equal (said""))
        return 
PLUGIN_HANDLED

    
if (!ValidMessage(said1)) return PLUGIN_CONTINUE
    
    static 
playerTeamplayerTeamName[19]
    
playerTeam get_user_team(id)
    
    switch (
playerTeam) {
        case 
1copy (playerTeamName6" TE ")
        case 
2copy (playerTeamName8"CT "
        default: 
copy (playerTeamName11" SPEC "
    }

    static 
color[11], name[32], alive[11]
    
get_user_team(id,color,charsmax(color))
    
get_user_name(id,name,charsmax(name))
    
    if (
is_user_alive (id)) {
        
alive ""
    
} else {
        
alive "*MUERTO*"
    
}

    if (
is_user_admin(id)) {
        if (
get_user_flags(id) & ADMIN_RCON)
            
format(saidcharsmax(said), "^x01%s ^x03[^x01%s^x03] (^x04 %s^x01 )^x04 [^x03%s^x04]^x01->^x03%s^x01:^x04 %s"aliveplayerTeamRangos[g_rango[id]], g_AdminTag[id], namesaid)
    } else {
        
format(saidcharsmax(said), "^x01%s ^x03[^x01%s^x03] ^04%s ^x03%s ^x01: %s"aliveplayerTeamRangos[g_rango[id]],namesaid)
    }


    static 
iteam[11
    for (
1<= g_maxplayersi++) {
        if (!
is_user_connected(i)) continue;
        
get_user_name(id,name,charsmax(name))
        
        if (
get_user_team(i) == playerTeam || is_user_admin(i)) {
            if (
is_user_alive(id) && is_user_alive(i) || !is_user_alive(id) && !is_user_alive(i)) {
                
get_user_team(iteamcharsmax(team))
                
changeTeamInfo(icolor)
                
writeMessage(isaid)
                
changeTeamInfo(iteam)
            }
        }
    }
    return 
PLUGIN_HANDLED_MAIN;
}
public 
changeTeamInfo(playerteam[]) {
    
message_begin(MSG_ONEg_msgTeamInfo_player)
    
write_byte(player)
    
write_string(team)
    
message_end()
}




public 
writeMessage(playermessage[]) {
    
message_begin(MSG_ONEg_msgSayText, {000}, player)
    
write_byte(player)
    
write_string(message)
    
message_end()
}
/* ===================================
*[GUARDADO]*
=====================================*/
Guardar(id) {
    
formatex(szKeycharsmax(szKey), "data_rangos"
    
formatex(szRangoscharsmax(szRangos), "%d %d"g_frags[id], g_rango[id])
    
    
nfv_set_data(VaultRangoszKeyg_playername[id], szRangos)
}

Cargar(id) {
    new 
g_load_c1[25], g_load_c2[25]
    
formatex(szKeycharsmax(szKey), "data_rangos"
    
    if(!
nfv_get_data(VaultRangoszKeyg_playername[id], szRangossizeof(szRangos) - 1)) return; 
   
    
parse(szRangosg_load_c1charsmax(g_load_c1), g_load_c2charsmax(g_load_c2))
    
    
g_frags[id] = str_to_num(g_load_c1)
    
g_rango[id] = str_to_num(g_load_c2)

/* ===================================
*[STOCKS]*
=====================================*/
// stock de chatcolor
stock chatcolorid, const input[], any:... )
{
    static 
szMsg191 ], msgSayText;
    
    if( !
msgSayText )
        
msgSayText get_user_msgid"SayText" );
    
    
vformatszMsg190input);

    
replace_allszMsg190"!g""^4" );
    
replace_allszMsg190"!y""^1" );
    
replace_allszMsg190"!t""^3" );
    
    
message_beginid MSG_ONE_UNRELIABLE MSG_BROADCASTmsgSayText, .player id );
    
write_byteid id 33 );
    
write_stringszMsg );
    
message_end( );

// Stock para Saber Si el mensaje es valido
stock ValidMessage(text[], maxcount) {
    static 
lenicount
    len 
strlen(text)
    
count 0
    
    
if (!len)
        return 
false;
    
    for (
0leni++) {
        if (
text[i] != ' ') {
            
count++
            if (
count >= maxcount)
                return 
true;
        }
    }
    return 
false;