[PEDIDO] Plugin Admin Player
#1
Lo que busco es el plugin que cuando pones /trajes siendo administrador te aparezca un menu con varios tipos de models asi puedas cambiar tu traje
Responder
#2
Aqui lo tienes. Cuando lo inicies por primera vez te creará un archivo de configuración (MenuDeModels.ini) en tu directorio de configs de AMXX (Por defecto: addons/amxmodx/configs). Dentro configuras los models.
Si deseas que solo admins puedan usar los models, descomenta la línea de #define NIVEL_DE_ADMIN.

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

// Remueve el '//' de la siguiente linea si deseas que solo admins con el acceso puedan usar models.
// #define NIVEL_DE_ADMIN    ADMIN_RESERVATION

#define PLUGIN "Menu de models"
#define VERSION "0.3"

#pragma semicolon 1

new g_menug_size, Array:g_models;

public 
plugin_precache()
{
    
register_plugin(PLUGINVERSION"Mario AR.");
    
    
g_models ArrayCreate(321);
    
g_menu menu_create("Menu de Models\r""menu_models");
    
    new 
szBuffer[192], FileszModel[32], szName[64];
    
get_localinfo("amxx_configsdir"szBuffercharsmax(szBuffer));
    
    
format(szBuffercharsmax(szBuffer), "%s/MenuDeModels.ini"szBuffer);
    
    if (!
file_exists(szBuffer))
    {
        
File fopen(szBuffer"wt");
        
        
fprintf(File"; Comando de chat para abrir el menu.^nCOMANDO = /models^n^n; Aqui van los models junto a su respectivo nombre.^n^"vip^" ^"Model VIP^"");
        
        
fclose(File);
    }
    
    
File fopen(szBuffer"rt");
    
    while (!
feof(File))
    {
        
fgets(FileszBuffercharsmax(szBuffer));
        
        if (!
szBuffer[0] || szBuffer[0] == ';' || szBuffer[0] == '^n')
            continue;
        
        
trim(szBuffer);
        
        if (
szBuffer[0] == 'C'// Registrando el comando
        
{
            
format(szBuffercharsmax(szBuffer), "say %s"szBuffer[10]);
            
register_clcmd(szBuffer"show_menu_models");
            
            
format(szBuffercharsmax(szBuffer), "say_team %s"szBuffer[4]);
            
register_clcmd(szBuffer"show_menu_models");
            
            continue;
        }
        
        
parse(szBufferszModelcharsmax(szModel), szNamecharsmax(szName));
        
remove_quotes(szModel); remove_quotes(szName);
        
        
formatex(szBuffercharsmax(szBuffer), "models/player/%s/%s.mdl"szModelszModel);
        
        if (
file_exists(szBuffer))
            
precache_model(szBuffer);
        else
        {
            
// El archivo no existe. Si intentamos cargarlo, el servidor se caera.
            // Mejor me desactivo para no causar problemas :(
            
ArrayDestroy(g_models);
            
menu_destroy(g_menu);
            
fclose(File);
            
            
log_amx("No se encontro %s"szBuffer);
            
set_fail_state("Error al cargar los models.");
            return;
        }
        
        
// Si el model incluye las texturas aparte (modelT.mdl) cargar tambien
        
copy(szBuffer[strlen(szBuffer)-4], charsmax(szBuffer), "T.mdl");
        
        if (
file_exists(szBuffer))
            
precache_model(szBuffer);
        
        
ArrayPushString(g_modelsszModel);
        
menu_additem(g_menuszName);
    }
    
    
fclose(File);
    
    
g_size ArraySize(g_models);
    
    if (!
g_size)
    {
        
ArrayDestroy(g_models);
        
menu_destroy(g_menu);
        
set_fail_state("No se cargaron models.");
        return;
    }

    
menu_additem(g_menu"Ninguno \r(Model normal)");
    
    
menu_setprop(g_menuMPROP_EXITNAME"\ySalir^n");
    
menu_setprop(g_menuMPROP_BACKNAME"Anterior");
    
menu_setprop(g_menuMPROP_NEXTNAME"Siguiente^n");
    
menu_setprop(g_menuMPROP_NUMBER_COLOR"\r");
}

public 
show_menu_models(id)
{
#if defined NIVEL_DE_ADMIN
    
if (~get_user_flags(id) & NIVEL_DE_ADMIN)
        return 
PLUGIN_CONTINUE;
#endif
    
    
menu_display(idg_menu);
    
    return 
PLUGIN_HANDLED;
}

public 
menu_models(idmenuitem)
{
    if(!(
<= item <= g_size) || !is_user_connected(id))
        return 
PLUGIN_HANDLED;
    
    if (
item == g_size)
    {
        
cs_reset_user_model(id);
        
client_print(idprint_chat"Has elegido usar el model normal.");
    }
    else
    {
        new 
szModel[32];
        
ArrayGetString(g_modelsitemszModelcharsmax(szModel));
        
cs_set_user_model(idszModel);
        
client_print(idprint_chat"Ahora llevas un model personalizado.");
    }
    
    return 
PLUGIN_HANDLED;


EDIT: Posteé el código y removí la fuente adjunta.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)