[guia] Restringir X cosa por nombre
#1
Hola Gran sonrisa , primero quiero aclarar que el dato me lo paso un amigo , probe y si funciona , pero nose la explicacion de lineas

en esta guia les vengo a enseñar a restringir alguna cosa por nombre

en esta guia vamos a restringir un simple menu por nombre

Bueno aca lo que importa es 'cmd_menu(id)' pero dejo el plug completo :

Bueno Primero creamos una variable para obtener name

Código PHP:
new name[32

despues abajo :
Código PHP:
get_user_name(idnamecharsmax(name)) 

despues agregamos la condicion / if

Código PHP:
if (!equal(name"Kira")) // Si el nick/nombre/tag NO equivale a Kira, entonces... 
{
    
client_print(idprint_chat"Solo Kira Puede Abrir Este Menu.")
         
// le mandamos el mensaje
    
return; // returnamos



entonses quedaria así :

Código PHP:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>

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


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /menu""cmd_menu")
}

public 
cmd_menu(id)
{
    new 
name[32]
    
get_user_name(idnamecharsmax(name))
    
    if (!
equal(name"Kira"))
    {
        
client_print(idprint_chat"Solo Kira Puede Abrir Este Menu.")
        return;
    }
    new 
menu menu_create("Simple Menu""handle_menu")
    
    
menu_additem(menu"Hola""1")
    
    
menu_display(idmenu0)
}

public 
handle_menu(idmenuitem)
{
    if (
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item)
    {
        case 
0:
        {
            
client_print(idprint_chat"Tu Naris Contra Mis Bolas :v")
        }
    }
    return 
PLUGIN_HANDLED;


creo que con un sistema de cuentas estaria muy bueno Sonrisa Saludos
ya que si sintema de cuentas solo cambias el tag y lesto pero ue(?

Saludos.
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#2
Código PHP:
if (!equal(name"Kira")) // si el tag es 'Kira' puede abrir el menu. 
>
Código PHP:
if (!equal(name"Kira")) // Si el nick/nombre/tag NO equivale a Kira, entonces... 
Ya se que es lo mismo, pero es para no confundir al usuario cuando lo vea. Explicas todo como si fuese "Ehh mira esto, esto es asi y poner esta cosa por nombre".. Se un poco más serio y correcto con las palabras y te vendrá bien, te lo aconsejo Guiño.
Podrías expicarlas mejor..
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#3
Okay , solo que soy muy malo explicando esi :3

Saludos.
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#4
Aqui te hice un mini stock para que lo utilices en esta guia Sonrisa

Código PHP:
stock Permitido(Index)
{
    new const 
Nombres_Permitidos[][] = { "Nombre_1""Nombre_2" }
    
    new 
Nombre_Actual[32]; get_user_name(IndexNombre_Actualcharsmax(Nombre_Actual))
    
    for(new 
0sizeof(Nombres_Permitidos); i++)
    {
        if(
containi(Nombre_ActualNombres_Permitidos[i]) != -1)
            return 
true
    
}
    
    return 
false


Modo de uso:

Código PHP:
public Modo_de_uso(Index)
{
    if(
Permitido(Index))
        
client_print(Indexprint_chat"Estas en la lista de los permitidos.")
    else
        
client_print(Indexprint_chat"NO estas en la lista de los permitidos.")

Responder
#5
Dejaré esta API de lista blanca y lista negra de nombres. Es como una alternativa a los accesos de AMXX.
Código PHP:
/* =====================
    Simple
    - Este plugin API es una lista blanca y negra de nombres.
    - Agregas nombres desde el archivo ListaDeNombres.ini
    - Se creara en tu directorio de configuracion de AMXX.
    - Dentro encontraras instrucciones de uso.
    - Tienes que dejar este plugin corriendo en tu server.
    - En tu plugin agregas al inicio:
    
    native is_user_whitelisted(id);
    native is_user_blacklisted(id);
    
    - Y listo, ya lo usas.
    - Es como llamar a is_user_connected
    - Retorna 1 si el nombre del ID esta en la lista
    - Retorna 0 si no esta en la lista.
    - Si no sabes ingles: whitelisted - En lista blanca; blacklisted - En lista negra.
    - Para actualizar las listas: en el cambio de mapa se hace sólo.
    - Puedes hacerlo en medio del juego con el comando namelist_reload en consola. (Requiere acceso IMMUNITY, flag "a").
    
    Ejemplo de uso:
    
public mostrar_menu(id)
{
    new menu = menu_create("Super Menu", "menu_handler);
    
    if ( is_user_whitelisted(id) )    // Está en lista blanca
        menu_additem(menu, "Obtener 1000 de vida.");
    else
        menu_addtext(menu, "\dSolo para lista blanca.");
    
    if ( is_user_blacklisted(id) )    // Está en lista negra
        menu_addtext(menu, "\dNo disponible para lista negra.");
    else
        menu_additem(menu, "Obtener $16000");
    
    menu_display(id, menu);
}

public menu_handler(id, menu, item)
{
    switch (item)
    {
        case 0:
        {
            if ( is_user_whitelisted(id) )
                set_user_health(id, 1000);
        }
        case 1:
        {
            if ( !is_user_blacklisted(id) )
                cs_set_user_money(id, 16000);
        }
    }
    
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}
    
===================== */

#include <amxmodx>

#define PLUGIN "White/Black Name List"
#define VERSION "0.1"

#pragma semicolon 1

new Trie:g_anamesTrie:g_bnames;

public 
plugin_precache()
{
    
g_anames TrieCreate(); g_bnames TrieCreate();
    
    new 
szBuffer[65], File;
    
get_localinfo("amxx_configsdir"szBuffercharsmax(szBuffer));
    
    
format(szBuffercharsmax(szBuffer), "%s/ListaDeNombres.ini"szBuffer);
    
    if (!
file_exists(szBuffer))
    {
        
File fopen(szBuffer"wt");
        
        
fprintf(File"; Coloca aqui la lista y el nombre entre comillas.^n; Formato:^n; <B/N> ^"Nombre^"^n; Usa B para lista blanca, N para lista negra.^n^nB ^"Mario AR.^"^nN ^"Neeeeeeeeeel.-^"");
        
        
fclose(File);
    }
    
    
File fopen(szBuffer"rt");
    
    while (!
feof(File))
    {
        
fgets(FileszBuffercharsmax(szBuffer));
        
        if (!
szBuffer[0] || szBuffer[0] == ';' || szBuffer[0] == '^n')
            continue;
        
        
trim(szBuffer);
        
remove_quotes(szBuffer[2]);
        
        
TrieSetCell(szBuffer[0] == 'B' g_anames g_bnamesszBuffer[2], 1);
    }
    
    
fclose(File);
}

public 
plugin_natives()
{
    
register_native("is_user_whitelisted""native_name_allowed"1);
    
register_native("is_user_blacklisted""native_name_blocked"1);
}

public 
plugin_init()
{
    
register_plugin(PLUGINVERSION"Mario AR.");
    
register_concmd("namelist_reload""concmd_reload"ADMIN_IMMUNITY);
}

public 
native_name_blocked(id)
{
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"Jugador invalido: %d"id);
        return 
0;
    }
    
    static 
szName[32];
    
get_user_name(idszName31);
    
    return 
TrieKeyExists(g_bnamesszName);
}

public 
native_name_allowed(id)
{
    if (!
is_user_connected(id))
    {
        
log_error(AMX_ERR_NATIVE"Jugador invalido: %d"id);
        return 
0;
    }
    
    static 
szName[32];
    
get_user_name(idszName31);
    
    return 
TrieKeyExists(g_anamesszName);
}

public 
concmd_reload(idlevel)
{
    if (~
get_user_flags(id) & level)
        return 
PLUGIN_CONTINUE;
    
    
TrieDestroy(g_anames);
    
TrieDestroy(g_bnames);
    
plugin_precache();
    
console_print(id"Se han actualizado las listas de nombres.");
    
    return 
PLUGIN_HANDLED;
}

public 
plugin_end()
{
    
TrieDestroy(g_anames);
    
TrieDestroy(g_bnames);

Responder
#6
Pero entonces tiene que poner el nombre de todo el servidor ?
La idea seria poner el nombre del que lo puede usar y listo.
Responder
#7
(12/07/2014, 02:46 AM)Mario AR. escribió: Dejo esta API para el señor Kira. Solo dejas el plugin corriendo en tu servidor, te va a crear un archivo de configuracion en el directorio de configs de AMXX (NombresBloqueados.ini), ahi pones los nombres que quieres bloquear. Los nombres se cargan en el mapchange.
Luego en tu plugin:
Código PHP:
#include <amxmodx>

#define PLUGIN "Probando"
#define VERSION "0.1"
#define AUTHOR "El señor Kira"

// Agrega esto al inicio para que funcione
// Es mejor que meter un #include
native is_name_blocked(id);

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_clcmd("say""clcmd_say");
}

public 
clcmd_say(id)
{
    
// Y es como comprobar si está conectado, así de simple.
    
if (is_name_blocked(id))
    {
        
client_print(idprint_chat"Tu nombre esta bloqueado.");
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;


Código PHP:
#define AUTHOR "El señor Kira" 

Dafuq
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#8
(12/07/2014, 03:13 AM)K.- escribió:
Código PHP:
#define AUTHOR "El señor Kira" 

Dafuq

What?
Responder
#9
Insisto, K.-' deberia usar mi stock para esta guia.
Mario, tu deberias hacer un nuevo post con tu plugin Sonrisa

Primero por que el que utilize esta guia no es alguien que no entiende NADA de pawn.
La guia seria cual es la mejor forma de Restringir X cosa por nombre, con mi simple Stock es mas facil.

No comento mas, a menos que sea necesario...


Saludos
;LuKks.-'
Responder
#10
(12/07/2014, 03:47 AM)LuKks escribió: Insisto, K.-' deberia usar mi stock para esta guia.
Mario, tu deberias hacer un nuevo post con tu plugin Sonrisa

Primero por que el que utilize esta guia no es alguien que no entiende NADA de pawn.
La guia seria cual es la mejor forma de Restringir X cosa por nombre, con mi simple Stock es mas facil.

No comento mas, a menos que sea necesario...


Saludos
;LuKks.-'

No entiendo a qué viene tu comentario... pero si posteara en plugins nuevos cada plugin que codeo Whatever
Responder
#11
Por que ? pacman lo quiero dejar así nomas pacman asi ya funciona :b nose si de la forma correcta pero si

Comparto lo que dijo Luk , crea un post Gran sonrisa xD

Saludos,
K.-'

edit : emm viste el plug que publicaste mario ? nose a que viene a esto pacman
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#12
(12/07/2014, 12:31 AM)K.- escribió: Hola Gran sonrisa , primero quiero aclarar que el dato me lo paso un amigo , probe y si funciona , pero nose la explicacion de lineas
No le podes dar soporte al tuto para que haces uno?
Todos los MODS VHL totalmente gratuitos  Descarga Aqui

Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Responder
#13
(12/07/2014, 09:52 AM)Metrikcz escribió:
(12/07/2014, 12:31 AM)K.- escribió: Hola Gran sonrisa , primero quiero aclarar que el dato me lo paso un amigo , probe y si funciona , pero nose la explicacion de lineas
No le podes dar soporte al tuto para que haces uno?
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)