MENU NATIVE + LEVELS
#1
Buenas noches chicos, estoy aprendiendo pawn basico y quisiera que me ayudaran a colocarle al menu de natives de skylar que tenga niveles, osea las armas bloqueadas por levels, estuve leyendo la guia de Blackfur y intentando pero no logro entender.

Código PHP:
#include <amxmodx>
#include <cstrike>
#include <TiendaNatives>
#include <ColorChat>

#define gPlugin "Tienda[Natives]"
#define Prefix "[Preegamer]"


enum _:DATA_TIENDA {
    NOMBRE[20],
    PRECIO
}


new const 
ItemsTienda[][DATA_TIENDA] = {
    {"Gatling"4000},
    {"Plasma-Gun"5000},
    {"Balrog-III"8000},
    {"Ak47 GOLDEN"10000},
    {"Ak PALADIN"12000}, 
    {"Dual Uzi"1000}
    
}

public 
plugin_init() {
    /* = Plugin = */
    register_plugin(gPlugin"1.0""Skylar")
    
    
/* = Clcmd = */
    register_clcmd("nightvision""menu_tienda")
}

public 
menu_tienda(id) {
    new imenutext[100]
    menu menu_create("\r[\wPreegamer\r] \d-.::\wArmas Especiales\d::.""handler_tienda")
    
    
for(0sizeof(ItemsTienda); i++) {
        if(cs_get_user_money(id) < ItemsTienda[i][PRECIO]) {
            formatex(textcharsmax(text), "\d%s \r[ $%d ]"ItemsTienda[i][NOMBRE], ItemsTienda[i][PRECIO])
        } else {
            formatex(textcharsmax(text), "\w%s \y[ $%d ]"ItemsTienda[i][NOMBRE], ItemsTienda[i][PRECIO])
        }
        menu_additem(menutext__menu_makecallback("tienda_callback"))
    }
    menu_display(idmenu)
}

public 
tienda_callback(idmenuitem) {
    if(cs_get_user_money(id) < ItemsTienda[item][PRECIO])
        return ITEM_DISABLED;
        
    
return ITEM_ENABLED;
}

public 
handler_tienda(idmenuitem) {
    if(item == MENU_EXIT)
        return PLUGIN_HANDLED;
        
    
switch(item) {
        case 0tienda_gatling(id);
        case 1tienda_plasma(id);
        case 2tienda_balrog(id);
        case 3tienda_akgolden(id);
        case 4tienda_akpaladin(id);
        case 5tienda_uzi(id); 
    }
    
    cs_set_user_money
(idcs_get_user_money(id) - ItemsTienda[item][PRECIO], 1)
    ColorChat(idGREEN"%s^1 Compraste:^4 %s."PrefixItemsTienda[item][NOMBRE])
    return PLUGIN_HANDLED;


Este es el code de los rangos

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

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

#define level_up(%1) (%1 * %1 * 10)

new g_level[33]
new 
g_exp[33]
new 
g_rangos[33]

enum _:Info_Rangos 

    RangosName[33], 
    RangosNivel
}

new const 
Rangos[][Info_Rangos] = {
    "[Sin Rango]"25 },
    "[Bronce I]"70},
    "[Bronce II]"120 },
    "[Bronce III]"175 },
    "[Plata I]"250 },
    "[Plata II]"370 },
    "[Plata III]"500 },
    "[Oro I]"700 },
    "[Oro II]"750 },
    "[Oro III]"890 },
    "[Oro IV]",  980},
    "[Platino I]"1300 },
    "[Platino II]"1600 },
    "[Platino Platino III]"1900 },
    "[Platino IV]"2000},
    "[Diamante I]"2500},
    "[Diamante II]"3000},
    "[Diamante III]"3200},
    "[Diamante IV]"3500},
    "[Heroico]"4000},
    "[Gran Maestro]"5000},
}

public 
plugin_init() {
    register_plugin(PLUGINVERSIONAUTHOR)

    RegisterHam(Ham_Killed"player""fw_playerkilled_post"1)
}

public 
client_putinserver(id)
{
    set_task(2.0,"hud",id,_,_,"b")
}

public 
hud(id)
{
    new CurrentTime[9
    get_time("%H:%M:%S",CurrentTime,8
    set_hudmessage(255000.00.006.012.0)
    show_hudmessage(id"[Nivel] : %d^n[Rango] : %s^n[Experiencia] : %d^n[Hora] : %s"g_level[id], Rangos[g_rangos[id]][RangosName], g_exp[id], CurrentTime)

}

public 
fw_playerkilled_post(victimattacker)
{
if(!
is_user_connected(attacker))
    return HAM_IGNORED;
    
    
if(victim == attacker)
        return HAM_IGNORED;
    
    g_exp
[attacker] += 10
    level
(attacker)
    return HAM_IGNORED;
}

public 
level(id)
{
    while(g_exp[id] >= level_up(g_level[id]) && g_level[id] < 100)
    {
        g_level[id]++
        ChatColor(id"!g[VZG] !ySubiste al nivel %d"g_level[id])
        rangos(id)
    }
}

public 
rangos(id)
{
    if (g_level[id] >= Rangos[g_rangos[id] + 1][RangosNivel] && g_rangos[id] < 9)
    {
        g_rangos[id]++
        ChatColor(id"!g[VZG] !ySubiste al rango !g%s"Rangos[g_rangos[id]][RangosName])
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new count 1players[32]
    static msg[191]
    vformat(msg190input3)
    
    replace_all
(msg190"!g""^4"// Green Color
    replace_all(msg190"!y""^1"// Default Color
    replace_all(msg190"!team""^3"// Team Color
    replace_all(msg190"!team2""^0"// Team2 Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch")
{
    for (new 0counti++)
    {
        if (is_user_connected(players[i]))
        {
            message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
            write_byte(players[i]);
            write_string(msg);
            message_end();
        }
    }
}

Responder
#2
Código PHP:
#include <amxmodx>
#include <cstrike>
#include <TiendaNatives>
#include <ColorChat>

#define gPlugin "Tienda[Natives]"
#define Prefix "[Preegamer]"


enum _:DATA_TIENDA {
    
NOMBRE[20],
    
PRECIO,
    
NIVEL
}

new 
g_level[33// esto es asumiendo que tu variable de nivel este aqui sino usa una native


new const ItemsTienda[][DATA_TIENDA] = {
    {
"Gatling"40000},
    {
"Plasma-Gun"50001},
    {
"Balrog-III"80002},
    {
"Ak47 GOLDEN"100003},
    {
"Ak PALADIN"120004}, 
    {
"Dual Uzi"10005}
    
}

public 
plugin_init() {
    
/* = Plugin = */
    
register_plugin(gPlugin"1.0""Skylar")
    
    
/* = Clcmd = */
    
register_clcmd("nightvision""menu_tienda")
}

public 
menu_tienda(id) {
    new 
imenutext[100]
    
menu menu_create("\r[\wPreegamer\r] \d-.::\wArmas Especiales\d::.""handler_tienda")
    
    for(
0sizeof(ItemsTienda); i++) {
        if(
g_level[id] >= ItemsTienda[i][NIVEL])
        {
            
            if(
cs_get_user_money(id) < ItemsTienda[i][PRECIO]) {
                
formatex(textcharsmax(text), "\d%s \r[ $%d ] \r[Lvl: \y%d]"ItemsTienda[i][NOMBRE], ItemsTienda[i][PRECIO], ItemsTienda[i][NIVEL])
                } else {
                
formatex(textcharsmax(text), "\w%s \y[ $%d ] \r[Lvl: \y%d]"ItemsTienda[i][NOMBRE], ItemsTienda[i][PRECIO], ItemsTienda[i][NIVEL])
                }
        }else{
               
formatex(textcharsmax(text), "\w%s \r[ $%d ] \r[Lvl: \r%d] \r(LOCKED)"ItemsTienda[i][NOMBRE], ItemsTienda[i][PRECIO], ItemsTienda[i][NIVEL])
        }
            
menu_additem(menutext__menu_makecallback("tienda_callback"))
        }
    
    
menu_display(idmenu)
}

public 
tienda_callback(idmenuitem) {
    if(
cs_get_user_money(id) < ItemsTienda[item][PRECIO])
        return 
ITEM_DISABLED;
    
    if(
g_level[id] < ItemsTienda[item][NIVEL])
        return 
ITEM_DISABLED;
    
    return 
ITEM_ENABLED;
}

public 
handler_tienda(idmenuitem) {
    if(
item == MENU_EXIT)
        return 
PLUGIN_HANDLED;
    
    
    switch(
item) {
        case 
0tienda_gatling(id);
            case 
1tienda_plasma(id);
            case 
2tienda_balrog(id);
            case 
3tienda_akgolden(id);
            case 
4tienda_akpaladin(id);
            case 
5tienda_uzi(id); 
        }
    
    
cs_set_user_money(idcs_get_user_money(id) - ItemsTienda[item][PRECIO], 1)
    
ColorChat(idGREEN"%s^1 Compraste:^4 %s."PrefixItemsTienda[item][NOMBRE])
    return 
PLUGIN_HANDLED;


En caso que quieras que se yo hacerlo por natives en el code de rangos haces esto
Código PHP:
public plugin_natives()
{
    
register_native("mod_get_user_lvl""native_get_user_lvl"1)}
}

public 
native_get_user_xp(id)
{
    if (!
is_user_valid(id))
    {
        
log_error(AMX_ERR_NATIVE"[AMXX] Invalid Player (%d)"id)
        return -
1
    
}
    return 
g_exp[id]
}

/*
y en tu include pones
native mod_get_user_lvl(id) y reemplazarias la variable de nivel por esta, prueba y me dices lo hice medio rápido
*/ 
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)