MENU DE KENIFES (EDITAR)
#1
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];

Responder
#2
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 
Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#3
(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
Responder
#4
(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
Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#5
(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
Responder
#6
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];

Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#7
(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; } 
Responder
#8
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]);

Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#9
(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
Responder
#10
Disculpa me olvide de mencionarte. Si necesitas el plugin adv_vault
Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#11
(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
Responder
#12
A mi me funciona bien
Recuerda poner el plugin adv_vault.amxx arriba de todo

adv_vault.amxx
plugin_knife.amxx
Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#13
(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
Responder
#14
te suelta algun log en consola, cuando intentas abrir el menu??
[Imagen: b_560_95_1.png]
Responder
#15
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
Responder
#16
Ya solucione muchas gracias a todos

Yo podria diseñar algo para dar frags?
Responder
#17
claro que puedes, si tienes la imaginación para hacerlo...
[Imagen: b_560_95_1.png]
Responder
#18
xd dentro del plugin me ayudan? un cmd que diga dar_Frags
Responder
#19
ya te lo pase por privado, pero que quieres, adaptarlo??
[Imagen: b_560_95_1.png]
Responder
#20
(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]);

Plata o Plomo Usted decide


- Pablo Emilio Escobar Gaviria -
Responder
#21
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.
[Imagen: b_560_95_1.png]
Responder
#22
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;

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)