Menú de Skins, cómo seteo la skin.
#1
Buenas, tengo este menú de skins que lo hice a partir del sistema "weapon_data" del Zombie Plague v6 de Kiske.
Hago este post porque no sé como seteo las skins que elejí de cada arma, sé que se puede hacer con una variable (g_weaponmodel), pero ni idea de como hacerlo. Igualmente este código queda como aporte para el que lo quiera utilizar.

Solo le faltan algunas cosas, que no lo hice ya que es obvio y fácil de hacer.
    - Precacheo de models, en caso de no ser "deafult".
    - Nombres para las skins.
    - Crear variable junto a su enum. (g_page[PAGE_STRUCT])

Código PHP:
enum _:STRUCT_DATA_WEAPON
{
    
WEAPON_DATA_NAME[32],
    
WEAPON_DATA_ID
};

new const 
WEAPON_DATA[20][STRUCT_DATA_WEAPON] =
{
    { 
"Cuchillo"CSW_KNIFE },

    { 
"Glock 18C"CSW_GLOCK18 },
    { 
"USP .45 ACP Tactical"CSW_USP },
    { 
"Desert Eagle .50 AE"CSW_DEAGLE },
    { 
"P228 Compact"CSW_P228 },
    { 
"FiveseveN"CSW_FIVESEVEN },
    { 
"Dual Elite Berettas"CSW_ELITE },

    { 
"M3 Super 90"CSW_M3 },
    { 
"XM1014 M4"CSW_XM1014 },

    { 
"Schmidt TMP"CSW_TMP },
    { 
"Ingram MAC-10"CSW_MAC10 },
    { 
"UMP 45"CSW_UMP45 },
    { 
"MP5 Navy"CSW_MP5NAVY },
    { 
"ES P90"CSW_P90 },

    { 
"IMI Galil"CSW_GALIL },
    { 
"Famas"CSW_FAMAS },
    { 
"Steyr AUG A1"CSW_AUG },
    { 
"SG-552 Commando"CSW_SG552 },
    { 
"M4A1 Carbine"CSW_M4A1 },
    { 
"AK-47 Kalashnikov"CSW_AK47 }
};

enum _:WEAPONS_SKINS_STRUCT
{
    
SKIN_NAME[32],
    
SKIN_MODEL[64],
    
WEAPON_ID
};

new const 
WEAPON_SKINS[][WEAPONS_SKINS_STRUCT] =
{
    { 
"Default""default"CSW_KNIFE },
    { 
"Faka #1""default"CSW_KNIFE },
    { 
"Faka #2""default"CSW_KNIFE },
    { 
"Faka #3""default"CSW_KNIFE },
    { 
"Faka #4""default"CSW_KNIFE },
    { 
"Faka #5""default"CSW_KNIFE },

    { 
"Default""default"CSW_GLOCK18 },
    { 
"Glock #1""default"CSW_GLOCK18 },
    { 
"Glock #2""default"CSW_GLOCK18 },

    { 
"Default""default"CSW_USP },
    { 
"USP #1""default"CSW_USP },
    { 
"USP #2""default"CSW_USP },

    { 
"Default""default"CSW_DEAGLE },
    { 
"Deagle #1""default"CSW_DEAGLE },
    { 
"Deagle #2""default"CSW_DEAGLE },

    { 
"Default""default"CSW_P228 },
    { 
"P228 #1""default"CSW_P228 },
    { 
"P228 #2""default"CSW_P228 },

    { 
"Default""default"CSW_FIVESEVEN },
    { 
"FiveseveN #1""default"CSW_FIVESEVEN },
    { 
"FiveseveN #2""default"CSW_FIVESEVEN },

    { 
"Default""default"CSW_ELITE },
    { 
"Dual Elite #1""default"CSW_ELITE },
    { 
"Dual Elite #2""default"CSW_ELITE },

    { 
"Default""default"CSW_M3 },
    { 
"M3 #1""default"CSW_M3 },
    { 
"M3 #2""default"CSW_M3 },

    { 
"Default""default"CSW_XM1014 },
    { 
"XM1014 #1""default"CSW_XM1014 },
    { 
"XM1014 #2""default"CSW_XM1014 },

    { 
"Default""default"CSW_TMP },
    { 
"TMP #1""default"CSW_TMP },
    { 
"TMP #2""default"CSW_TMP },

    { 
"Default""default"CSW_MAC10 },
    { 
"MAC #1""default"CSW_MAC10 },
    { 
"MAC #2""default"CSW_MAC10 },

    { 
"Default""default"CSW_UMP45 },
    { 
"UMP #1""default"CSW_UMP45 },
    { 
"UMP #2""default"CSW_UMP45 },

    { 
"Default""default"CSW_MP5NAVY },
    { 
"MP5 #1""default"CSW_MP5NAVY },
    { 
"MP5 #2""default"CSW_MP5NAVY },

    { 
"Default""default"CSW_P90 },
    { 
"P90 #1""default"CSW_P90 },
    { 
"P90 #2""default"CSW_P90 },

    { 
"Default""default"CSW_GALIL },
    { 
"Galil #1""default"CSW_GALIL },
    { 
"Galil #2""default"CSW_GALIL },

    { 
"Default""default"CSW_FAMAS },
    { 
"Famas #1""default"CSW_FAMAS },
    { 
"Famas #2""default"CSW_FAMAS },

    { 
"Default""default"CSW_AUG },
    { 
"AUG #1""default"CSW_AUG },
    { 
"AUG #2""default"CSW_AUG },

    { 
"Default""default"CSW_SG552 },
    { 
"SG #1""default"CSW_SG552 },
    { 
"SG #2""default"CSW_SG552 },

    { 
"Default""default"CSW_M4A1 },
    { 
"M4A1 #1""default"CSW_M4A1 },
    { 
"M4A1 #2""default"CSW_M4A1 },

    { 
"Default""default"CSW_AK47 },
    { 
"AK #1""default"CSW_AK47 },
    { 
"AK #2""default"CSW_AK47 }
};

public 
show_menu_skins_weapon(const id, const weapon_id, const weapon_data_id)
{
    if (!
weapon_id)
    {
        static 
text[64];
        static 
num[3];
        static 
menu;
        static 
i;
        
        
menu menu_create("ARMAS\R""handled_menu_data_weapons");
        
        for (
020; ++i)
        {
            
num[0] = WEAPON_DATA[i][WEAPON_DATA_ID];
            
num[1] = i;
            
num[2] = 0;
            
            
formatex(textcharsmax(text), "%s"WEAPON_DATA[i][WEAPON_DATA_NAME]);
            
            
menu_additem(menutextnum);
        }
        
        
menu_setprop(menuMPROP_BACKNAME"Atrás");
        
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
        
menu_setprop(menuMPROP_EXITNAME"Volver");

        
g_page[id][PAGE_WEAPON_STATS] = min(g_page[id][PAGE_WEAPON_STATS], menu_pages(menu) - 1);
        
        
menu_display(idmenug_page[id][PAGE_WEAPON_STATS]);
    }
    else
    {
        static 
text[64];
        static 
num[3];
        static 
menu;
        static 
i;

        
formatex(textcharsmax(text), "MODELOS PARA %s\R"WEAPON_DATA[weapon_data_id][WEAPON_DATA_NAME]);
        
        
menu menu_create(text"handled_menu_skins_weapon");
        
        for (
0sizeof(WEAPON_SKINS); ++i)
        {
            if (
weapon_id != WEAPON_SKINS[i][WEAPON_ID])
                continue;

            
formatex(textcharsmax(text), "%s"WEAPON_SKINS[i][SKIN_NAME]);
            
            
menu_additem(menutextnum);
        }
        
        
menu_setprop(menuMPROP_BACKNAME"Atrás");
        
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
        
menu_setprop(menuMPROP_EXITNAME"Volver");

        
g_page[id][PAGE_WEAPON_STATS_IN] = weapon_id;
        
g_page[id][PAGE_WEAPON_STATS_ID] = weapon_data_id;

        
menu_display(idmenu0);
    }
}

public 
handled_menu_data_weapons(const id, const menuid, const item)
{
    if (!
g_connected[id])
    {
        
menu_destroy(menuid);
        return 
PLUGIN_HANDLED;
    }
    
    static 
iNothing;
    
player_menu_info(idiNothingiNothingg_page[id][PAGE_WEAPON_STATS]);
    
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menuid);
        return 
PLUGIN_HANDLED;
    }
    
    static 
sItem[3];
    
menu_item_getinfo(menuiditemiNothingsItemcharsmax(sItem), __iNothing);
    
    
menu_destroy(menuid);
    
    
show_menu_skins_weapon(id, .weapon_id sItem[0], .weapon_data_id sItem[1]);
    return 
PLUGIN_HANDLED;
}

public 
handled_menu_skins_weapon(const id, const menuid, const item)
{
    if (!
g_connected[id])
    {
        
menu_destroy(menuid);
        return 
PLUGIN_HANDLED;
    }
    
    static 
iNothing;
    
player_menu_info(idiNothingiNothingg_page[id][PAGE_WEAPON_STATS]);
    
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menuid);
        return 
PLUGIN_HANDLED;
    }
    
    static 
sItem[3];
    
menu_item_getinfo(menuiditemiNothingsItemcharsmax(sItem), __iNothing);
    
    
menu_destroy(menuid);
    
    
show_menu_skins_weapon(id, .weapon_id sItem[0], .weapon_data_id sItem[1]);
    return 
PLUGIN_HANDLED;

Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)