Allied Modders en español
sacar native a los rangos solucionado - Versión para impresión

+- Allied Modders en español (https://amxmodx-es.com)
+-- Foro: AMX Mod X - Plugins (/Forum-AMX-Mod-X-Plugins)
+--- Foro: Pedido de plugins (/Forum-Pedido-de-plugins)
+--- Tema: sacar native a los rangos solucionado (/Thread-sacar-native-a-los-rangos-solucionado)



sacar native a los rangos solucionado - Forever123 - 09/09/2019 02:51 AM

buenas alguien me podria ayudar a como le puedo sacar la native a esto
Código PHP:
Rangos[g_rango[id]][NOMBRE
para poder llamar el rango en otro plugin

Código PHP:
/*

ChangeLog:

1.0 = Version inicial
2.0 = 
    * Correccion de errores
    * Cambio deathmsg por ham killed
    * Reescritura parcial de codigo
    * Soporte AMX 1.8.2 hasta 1.9.0
    * Cvar para activar/desactivar la modificacion del chat

*/

#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <adv_vault>


#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect

    #define print_team_default 0

    
stock client_print_color(indexfakevar, const input[], any:...)
    {
        
#pragma unused fakevar
        
static szMsg[191], g_iMsgSayText;
        if(!
g_iMsgSayTextg_iMsgSayText get_user_msgid("SayText");

        
vformat(szMsg190input3);

        
message_begin(index MSG_ONE_UNRELIABLE MSG_BROADCASTg_iMsgSayText, .player index);
        
write_byte(index index 33);
        
write_string(szMsg);
        
message_end();
    }
#endif


#define VERSION "2.0"

new const Web[] = "HTTPS://KIKIZON.XYZ/";      // Se Muestra en HUD
new const Prefijo[] = "^4[CS:GO] ^1";     // Prefijo en say
new const Sonido[] = "rango/up.wav";    // Sonido Rango UP
new const DataBase[] = "csgoranks";        // Nombre de la base de datos
new const CHAT_FLAG ADMIN_KICK;        // Acceso requerido para el chat de admins

enum _:DATA
{
    
NOMBRE[30],
    
FRAGS
}

new const 
Rangos[][DATA] =
{
    { 
"Sin Rango"100 },
    { 
"Silver I"200 },
    { 
"Silver II"300 },
    { 
"Silver III"500 },
    { 
"Silver IV"700 },
    { 
"Silver Elite"800 },
    { 
"Silver Elite Master"900 },
    { 
"Gold Nova I"1000 },
    { 
"Gold Nova II"1200 },
    { 
"Gold Nova III"1300 },
    { 
"Gold Nova Master"1400 },
    { 
"Master Guardian I",1500 },
    { 
"Master Guardian II"1700 },
    { 
"Master Guardian Elite"1800 },
    { 
"Distinguished Master Guardian"1900 },
    { 
"Legendary Eagle"2000 },
    { 
"Legendary Eagle Master"2100 },
    { 
"Supreme Master First Class"2200 },
    { 
"The Global Elite"2500 }
}

new 
g_rango[33], g_frags[33];
new 
SyncHUDg_maxplayersg_playername[33][32];

#define TASK_HUD 67521
#define ID_HUD (taskid - TASK_HUD)
#define is_valid_player(%0) is_user_connected(%0) || !is_user_bot(%0) || !is_user_hltv(%0)

new g_vaultg_iField_Rankg_iField_Frags;
new 
cvar_Hudcvar_knifex2cvar_hsx2cvar_hooksay;

public 
plugin_init()
{
    
register_plugin("Rangos CS:GO"VERSION"kikizon / HTTPS://KIKIZON.XYZ/");
    
    
RegisterHam(Ham_Killed"player""ham_PlayerKilledPost"true);
    
register_logevent("logevent_round_end"2"1=Round_End");
    
    
register_clcmd("say""message_saytext");
    
register_clcmd("say_team""message_sayteam");
    
    
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
    
cvar_hooksay register_cvar("rangos_hooksay""1");    // 1 - Modifica el say | 0 ÑO :v
    
    
SyncHUD CreateHudSyncObj();
    
g_maxplayers get_maxplayers();
    
    
g_vault adv_vault_open(DataBasefalse);
    
g_iField_Rank adv_vault_register_field(g_vault"RANGOS");
    
g_iField_Frags adv_vault_register_field(g_vault"FRAGS");
    
adv_vault_init(g_vault);
}

public 
plugin_precache() 
{
    
precache_sound(Sonido);
}

public 
HUD(taskid)
{
    new 
id ID_HUD;
    
    if (!
is_user_alive(id))    
        
id pev(idpev_iuser2);
   
    if(
id != ID_HUD)
    {
        
set_hudmessage(2552552550.600.6716.01.0);
        
ShowSyncHudMsg(ID_HUDSyncHUD"Frags: %d  ||  Rango: %s"g_frags[id], Rangos[g_rango[id]][NOMBRE])
    }
    else
    {
        
set_hudmessage(025500.00.2016.01.0);

        if(
g_rango[id] == charsmax(Rangos))
        {
            
ShowSyncHudMsg(
            
ID_HUD,
            
SyncHUD,
            
"=======================^n\
            Frags: %d^n\
            Rango: %s^n\
            =======================^n\
            TIENES EL RANGO MAXIMO!!!^n\
            =======================^n\
            %s"
,
            
g_frags[id],
            
Rangos[g_rango[id]][NOMBRE],            
            
Web
            
);
        }
        else 
        {
            
ShowSyncHudMsg(
            
ID_HUD,
            
SyncHUD,
            
"=======================^n\
            Frags: %d^n\
            Rango: %s^n\
            =======================^n\
            Sig. Rango: %s^n\
            Frags Restantes: %d^n\
            =======================^n\
            %s"

            
g_frags[id],
            
Rangos[g_rango[id]][NOMBRE],
            
Rangos[g_rango[id]+1][NOMBRE],
            
Rangos[g_rango[id]][FRAGS] - g_frags[id],
            
Web
            
);
        }
    }
    
}

public 
client_putinserver(id)
{
    
get_user_name(idg_playername[id], 31);
    
g_rango[id] = g_frags[id] = 0;
    
    
Cargar(id);
    
    if(
get_pcvar_num(cvar_Hud)) 
        
set_task(1.0"HUD"id+TASK_HUD__"b");
}

public 
client_disconnected(id)
{
    if(
is_valid_player(id))
        
Guardar(id);
        
    
remove_task(id+TASK_HUD)
}

public 
logevent_round_end()
{
    static 
id;
    for(
id 1id <= g_maxplayers; ++id)
    {
        if(
is_valid_player(id))
            
Guardar(id);
    }
}

public 
ham_PlayerKilledPost(victimattackersg)
{
    if(!
is_user_connected(victim) || !is_user_connected(attacker) || !attacker || attacker == victim)
        return 
HAM_IGNORED;

    
SetFrags(attacker1);

    if(
get_pcvar_num(cvar_knifex2) == && get_user_weapon(attacker) == CSW_KNIFE)
        
SetFrags(attacker1);

    if(
get_pcvar_num(cvar_hsx2) == && get_pdata_int(victim755) == HIT_HEAD)
        
SetFrags(attacker1);

    return 
HAM_IGNORED;
}

SetFrags(indexfrags)
{
    
g_frags[index] += frags;

    static 
iRankiRank g_rango[index];
    while( 
g_frags[index] >= Rangos[g_rango[index]][FRAGS] && g_rango[index] < charsmax(Rangos))
        ++
g_rango[index];

    if(
iRank g_rango[index])
    {
        
client_print_color(indexprint_team_default"%s Felicidades subiste al rango: ^4%s"PrefijoRangos[g_rango[index]][NOMBRE]);
        
client_cmd(index"spk ^"%s^""Sonido);
    }
}

public 
message_saytext(id)
{
    if(!
get_pcvar_num(cvar_hooksay))    
        return 
PLUGIN_CONTINUE;

    static 
said[192]; read_args(saidcharsmax(said)); remove_quotes(said);
    
    if (
said[0] == '@' || said[0] == '%' || said[0] == '/' || said[0] == '.' || said[0] == '!' || equal (said""))
        return 
PLUGIN_HANDLED;

    if (!
ValidMessage(said1)) return PLUGIN_CONTINUE;
    
    static 
color[11], iteam[11];
    
get_user_team(id,color,charsmax(color));
    
    if(
get_user_flags(id) & CHAT_FLAG)
    {
        
format(saidcharsmax(said), "^x01%s^x04%s ^x03%s ^x01: ^x04%s",
        
is_user_alive(id) ? "" "[MUERTO]",
        
Rangos[g_rango[id]][NOMBRE],
        
g_playername[id],
        
said);
    }
    else
    {
        
format(saidcharsmax(said), "^x01%s^04%s ^x03%s ^x01: %s",
        
is_user_alive(id) ? "" "[MUERTO]",
        
Rangos[g_rango[id]][NOMBRE],
        
g_playername[id],
        
said);
    }
    
    for (
1<= g_maxplayersi++)
    {
        if (!
is_user_connected(i)) continue;
        
        if(
get_user_flags(i) & CHAT_FLAG || 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)
{
    if(!
get_pcvar_num(cvar_hooksay))    
        return 
PLUGIN_CONTINUE;

    static 
said[192]; read_args(saidcharsmax(said)); remove_quotes(said);
    
    if (
said[0] == '@' || said[0] == '%' || 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], iteam[11];
    
get_user_team(id,color,charsmax(color));

    if (
get_user_flags(id) & CHAT_FLAG)
    {
        
format(saidcharsmax(said), "^x01%s [ %s ] ^x04%s ^x03%s ^x01: ^x04%s",
        
is_user_alive(id) ? "" "[MUERTO]",
        
playerTeam,
        
Rangos[g_rango[id]],
        
g_playername[id],
        
said);
    }
    else
    {
        
format(saidcharsmax(said), "^x01%s [ %s ] ^04%s ^x03%s ^x01: %s",
        
is_user_alive(id) ? "" "[MUERTO]",
        
playerTeam,
        
Rangos[g_rango[id]],
        
g_playername[id],
        
said);
    }

    for (
1<= g_maxplayersi++)
    {
        if (!
is_user_connected(i)) continue;
        
        if (
get_user_team(i) == playerTeam || get_user_flags(i) & CHAT_FLAG)
        {
            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[])
{
    static 
g_msgTeamInfo;
    if(!
g_msgTeamInfog_msgTeamInfo get_user_msgid("TeamInfo");

    
message_begin(MSG_ONEg_msgTeamInfo_player);
    
write_byte(player);
    
write_string(team);
    
message_end();
}

public 
writeMessage(playermessage[])
{
    static 
g_msgSayText;
    if(!
g_msgSayTextg_msgSayText get_user_msgid("SayText");
    
    
message_begin(MSG_ONEg_msgSayText, {000}, player);
    
write_byte(player);
    
write_string(message);
    
message_end();
}

Guardar(id)
{    
    
adv_vault_set_start(g_vault);

    
adv_vault_set_field(g_vaultg_iField_Rankg_rango[id]);
    
adv_vault_set_field(g_vaultg_iField_Fragsg_frags[id]);
    
    
adv_vault_set_end(g_vault0g_playername[id]);
}

Cargar(id)
{
    if(!
adv_vault_get_prepare(g_vault_g_playername[id])) 
        return;
    
    
g_rango[id] = adv_vault_get_field(g_vaultg_iField_Rank);
    
g_frags[id] = adv_vault_get_field(g_vaultg_iField_Frags);


stock ValidMessage(text[], maxcount)
{
    static 
lenicountlen strlen(text);count 0;
    if (!
len) return false;
    
    for (
0leni++)
    {
        if (
text[i] != ' ')
        {
            
count++;
            if (
count >= maxcount) return true;
        }
    }
    return 
false;




RE: sacar native a los rangos - kikizon2 - 09/09/2019 03:02 AM

Código PHP:
public plugin_natives() register_native("csgo_get_rankname""native_get_rankname"1);

public 
native_get_rankname(index, const szRank[], len)
{
    if(!
is_user_connected(index)) return 0;

    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);
    return 
1;




RE: sacar native a los rangos - Forever123 - 09/09/2019 03:06 AM

(09/09/2019 03:02 AM)kikizon2 escribió:  
Código PHP:
public plugin_natives() register_native("csgo_get_rankname""native_get_rankname"1);

public 
native_get_rankname(index, const szRank[], len)
{
    if(!
is_user_connected(index)) return 0;

    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);
    return 
1;


me tira este error al copilar
Cita:error 035: argument type mismatch (argument 1)
Código PHP:
formatex(szRanklenRangos[g_rango[index]][NOMBRE]); 

cree la variable dentro del a funcion y me dejo copilar no se si sea esa la forma de arreglarlo
Código PHP:
public native_get_rankname(index, const szRank[], len)
{
    new 
szRank[33]
    if(!
is_user_connected(index)) return 0;

    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);
    return 
1;


tengo un problema en el menu donde pongo para que salga el rango me sale otra cosa hay subire una imagen


RE: sacar native a los rangos - kikizon2 - 09/09/2019 04:03 AM

(09/09/2019 03:02 AM)kikizon2 escribió:  
Código PHP:
public plugin_natives() register_native("csgo_get_rankname""native_get_rankname"1);

public 
native_get_rankname(indexszRank[], len)
{
    if(!
is_user_connected(index)) return 0;

    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);
    return 
1;


se usa:

Código PHP:
new szRank[32];
csgo_get_rankname(indexszRankcharsmax(szRank)); 



RE: sacar native a los rangos - Forever123 - 09/09/2019 09:58 AM

(09/09/2019 04:03 AM)kikizon2 escribió:  
(09/09/2019 03:02 AM)kikizon2 escribió:  
Código PHP:
public plugin_natives() register_native("csgo_get_rankname""native_get_rankname"1);

public 
native_get_rankname(indexszRank[], len)
{
    if(!
is_user_connected(index)) return 0;

    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);
    return 
1;


se usa:

Código PHP:
new szRank[32];
csgo_get_rankname(indexszRankcharsmax(szRank)); 

no entiendo que tengo que hacer con esto
Código PHP:
new szRank[32];
csgo_get_rankname(indexszRankcharsmax(szRank)); 
me puedes explicar


RE: sacar native a los rangos - kikizon2 - 09/09/2019 12:18 PM

Se usa como get_user_name o get_user_authid

Whatever


RE: sacar native a los rangos - Forever123 - 09/09/2019 06:35 PM

lo coloque a si
Código PHP:
    new szRank[32];
    
csgo_get_rankname(idszRankcharsmax(szRank)); 

    new 
menu menu_create(fmt("\y[\rTEST\y] \wMenu Principal^n\r• \wTu Rango: \y[\r%s\y]"szRank), "ctf_handler"

pero en el menu no me sale el rango no sale nada hay dejo la foto


RE: sacar native a los rangos - kikizon2 - 09/09/2019 06:50 PM

Código PHP:
public plugin_natives() register_native("csgo_get_rankname""native_get_rankname"1);

public 
native_get_rankname(indexszRank[], len)
{
    if(!
is_user_connected(index)) return;

    
param_convert(2);
    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);


se usa:

Código PHP:
new szRank[32];
csgo_get_rankname(indexszRankcharsmax(szRank)); 


Prueba ahi, tiene rato que no toco amx


RE: sacar native a los rangos - Forever123 - 09/09/2019 07:02 PM

(09/09/2019 06:50 PM)kikizon2 escribió:  
Código PHP:
public plugin_natives() register_native("csgo_get_rankname""native_get_rankname"1);

public 
native_get_rankname(indexszRank[], len)
{
    if(!
is_user_connected(index)) return;

    
param_convert(2);
    
formatex(szRanklenRangos[g_rango[index]][NOMBRE]);


se usa:

Código PHP:
new szRank[32];
csgo_get_rankname(indexszRankcharsmax(szRank)); 


Prueba ahi, tiene rato que no toco amx

ya muchas gracias