Mensajes: 18
Temas: 4
Registro en: Jun 2020
Reputación:
0
Hola a todos, bueno estuve indagando un poco por el foro pero soy nueva en esto y no entendí muy bien algunas cosas y vengo a pedir ayuda o si alguien me puede agregar una restricción a este menu de models resulta que me gustaría que dentro del new const le pudiera agregar a los lado el tipo e acceso para usar el modelo y de no tenerlo dentro del menu diga bloqueado ejemplo
Menu modelo player
1. Miku acceso admin_rcon
cuando no tenga acceso le aparezca así :
Menu modelo player
1. Miku [NO TIENES PERMISO]
y si lo escoge le tire un mensaje diciendo 'No tienes acceso a este modelo solo los con flag admin rcon' les dejo el código ojala me ayuden como dije soy medio nueva y e estado leyendo las veces que puedo tutoriales pero me cuesta aprender, tan solo tengan paciencia.
Código PHP: #include <amxmodx> #include <cstrike> #include <amxmisc>
enum _:e_DataMdl { MDL_NAME[50], MDL_DRT[33] } new const g_szModels[][e_DataMdl] = { { "Model homero", "homero" } } public plugin_precache() { new szBuffer[64], i; for(i = 0; i < sizeof g_szModels; i++) { formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szModels[i][MDL_DRT], g_szModels[i][MDL_DRT]) precache_model(szBuffer) } } public plugin_init() { register_clcmd("say /models", "show_menu_models") } public show_menu_models(const id) { if(!is_user_admin(id)) return PLUGIN_HANDLED;
new szText[99], menu; menu = menu_create("Admin models menu", "hModels") for(new i = 0; i < sizeof g_szModels; i++) { formatex(szText, charsmax(szText), "\w%s", g_szModels[i][MDL_NAME]) menu_additem(menu, szText, "") } menu_setprop(menu, MPROP_BACKNAME, "Atras") menu_setprop(menu, MPROP_NEXTNAME, "Siguiente") menu_setprop(menu, MPROP_EXITNAME, "Salir") menu_display(id, menu, 0) return PLUGIN_HANDLED } public hModels(id, menu, item) { if(item == MENU_EXIT || !is_user_admin(id) || !is_user_alive(id)) { menu_destroy(menu) return PLUGIN_HANDLED; } menu_destroy(menu) cs_set_user_model(id, g_szModels[item][MDL_DRT]) return PLUGIN_HANDLED }
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
29/06/2020, 09:54 PM
(Última modificación: 29/06/2020, 09:55 PM por Valentina.. Edited 2 times in total.)
Código PHP: #include <amxmodx> #include <cstrike> #include <amxmisc>
enum _:e_DataMdl { MDL_NAME[50], MDL_DRT[33], MDL_ACCESS } new const g_szModels[][e_DataMdl] = { { "Model homero", "homero", ADMIN_BAN } } public plugin_precache() { new szBuffer[64], i; for(i = 0; i < sizeof g_szModels; i++) { formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szModels[i][MDL_DRT], g_szModels[i][MDL_DRT]) precache_model(szBuffer) } } public plugin_init() { register_clcmd("say /models", "show_menu_models") } public show_menu_models(const id) { if(!is_user_admin(id)) return PLUGIN_HANDLED;
new szText[99], menu; menu = menu_create("Admin models menu", "hModels") for(new i = 0; i < sizeof g_szModels; i++) {
if (~get_user_flags(id) & g_szModels[i][MDL_ACCESS]) formatex(szText, charsmax(szText), "\d%s \r[BLOQUEADO]", g_szModels[i][MDL_NAME]); else formatex(szText, charsmax(szText), "\w%s", g_szModels[i][MDL_NAME]);
menu_additem(menu, szText, "") } menu_setprop(menu, MPROP_BACKNAME, "Atras") menu_setprop(menu, MPROP_NEXTNAME, "Siguiente") menu_setprop(menu, MPROP_EXITNAME, "Salir") menu_display(id, menu, 0) return PLUGIN_HANDLED } public hModels(id, menu, item) { if(item == MENU_EXIT || !is_user_admin(id) || !is_user_alive(id)) { menu_destroy(menu) return PLUGIN_HANDLED; } menu_destroy(menu)
if (~get_user_flags(id) & g_szModels[item][MDL_ACCESS]) { client_print(id, print_chat, "No tienes acceso a este modelo"); return PLUGIN_HANDLED; }
cs_set_user_model(id, g_szModels[item][MDL_DRT]) return PLUGIN_HANDLED }
Mensajes: 18
Temas: 4
Registro en: Jun 2020
Reputación:
0
Muchas gracias anda genial el plugin, tengo 3 dudas.
1- por que en algunos if le hacen un espacio entre medio del paréntesis a lo que me refiero :
Código PHP: if (~get_user_flags(id) & g_szModels[item][MDL_ACCESS])
y a veces lo veo sin el espacio así :
Código PHP: if(~get_user_flags(id) & g_szModels[item][MDL_ACCESS])
2- Para que es el ~ dentro del if ?
3- Como puedo agregar una opción dentro del menú para remover el modelo ? osea que vuelva al por defecto.
Mensajes: 811
Temas: 99
Registro en: Jun 2019
Reputación:
8
29/06/2020, 11:35 PM
(Última modificación: 29/06/2020, 11:41 PM por andres_1041. Edited 1 time in total.)
(29/06/2020, 11:08 PM)pily escribió: Muchas gracias anda genial el plugin, tengo 3 dudas.
1- por que en algunos if le hacen un espacio entre medio del paréntesis a lo que me refiero :
Código PHP: if (~get_user_flags(id) & g_szModels[item][MDL_ACCESS])
y a veces lo veo sin el espacio así :
Código PHP: if(~get_user_flags(id) & g_szModels[item][MDL_ACCESS])
2- Para que es el ~ dentro del if ?
3- Como puedo agregar una opción dentro del menú para remover el modelo ? osea que vuelva al por defecto.
Lo del espacio en el if son formas de programar, y el ~ es un signo de negación, al igual que el !
Código: ! - Negación.
~ - Negación.
|| - O.
&& - Y.
< - Menor.
> - Mayor.
== - Igual.
<= Menor o igual.
>= Mayor o igual.
I dream of someday being able to have your near.
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
29/06/2020, 11:38 PM
(Última modificación: 29/06/2020, 11:39 PM por Valentina.. Edited 1 time in total.)
(29/06/2020, 11:08 PM)pily escribió: Muchas gracias anda genial el plugin, tengo 3 dudas.
1- por que en algunos if le hacen un espacio entre medio del paréntesis a lo que me refiero :
Código PHP: if (~get_user_flags(id) & g_szModels[item][MDL_ACCESS])
y a veces lo veo sin el espacio así :
Código PHP: if(~get_user_flags(id) & g_szModels[item][MDL_ACCESS])
2- Para que es el ~ dentro del if ?
3- Como puedo agregar una opción dentro del menú para remover el modelo ? osea que vuelva al por defecto.
1- Es algo que depende el programador, es por gusto nomas. No cambia nada.
2-
Código PHP: if (~get_user_flags(id) & g_szModels[item][MDL_ACCESS]) { // El simbolo significa NOT osea que si NO tiene el acceso necesario ejecutamos algo } else { // SI tiene el acceso necesario ejecutamos otra cosa... }
3- https://amxmodx-es.com/Thread-Opci%C3%B3...5#pid48455
Edit:
https://amxmodx-es.com/Thread-Programaci...ncipiantes
https://amxmodx-es.com/Thread-Bitsums
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
Quizá te podría ayudar a entender eso las proposiciones lógicas (creo que así se llamaban xd) y las tablas de verdad, ahí ves muchos casos de negación, y otros operadores.
Aunque eso va orientado un poco más a la electrónica en mi parecer.
Mensajes: 1,519
Temas: 237
Registro en: Feb 2014
Reputación:
22
(29/06/2020, 11:08 PM)pily escribió: 2- Para que es el ~ dentro del if ?
Sirve para negar una condición pero a nivel de bits, por ejemplo
Esa native solo puede devolver el valor de 1/0, por lo tanto para denegar esa condicion se utiliza el operador lógico ' ! '
Esta native devuelve un valor en bits, por lo tanto, para denegarlo se utiliza un operador logico diferente ' ~ '
EJEMPLO:
Código PHP: if(~get_user_flags(id) & ADMIN_IMMUNITY)
Aqui estoy preguntando si el jugador NO tiene acceso al flag de inmunidad "a"
en el include amxconst puedes ver el valor de cada acceso
Código PHP: #define ADMIN_ALL 0 /* everyone */ #define ADMIN_IMMUNITY (1<<0) /* flag "a" */ #define ADMIN_RESERVATION (1<<1) /* flag "b" */ #define ADMIN_KICK (1<<2) /* flag "c" */ #define ADMIN_BAN (1<<3) /* flag "d" */ #define ADMIN_SLAY (1<<4) /* flag "e" */ #define ADMIN_MAP (1<<5) /* flag "f" */ #define ADMIN_CVAR (1<<6) /* flag "g" */ #define ADMIN_CFG (1<<7) /* flag "h" */ #define ADMIN_CHAT (1<<8) /* flag "i" */ #define ADMIN_VOTE (1<<9) /* flag "j" */ #define ADMIN_PASSWORD (1<<10) /* flag "k" */ #define ADMIN_RCON (1<<11) /* flag "l" */ #define ADMIN_LEVEL_A (1<<12) /* flag "m" */ #define ADMIN_LEVEL_B (1<<13) /* flag "n" */ #define ADMIN_LEVEL_C (1<<14) /* flag "o" */ #define ADMIN_LEVEL_D (1<<15) /* flag "p" */ #define ADMIN_LEVEL_E (1<<16) /* flag "q" */ #define ADMIN_LEVEL_F (1<<17) /* flag "r" */ #define ADMIN_LEVEL_G (1<<18) /* flag "s" */ #define ADMIN_LEVEL_H (1<<19) /* flag "t" */ #define ADMIN_MENU (1<<20) /* flag "u" */ #define ADMIN_BAN_TEMP (1<<21) /* flag "v" */ #define ADMIN_ADMIN (1<<24) /* flag "y" */ #define ADMIN_USER (1<<25) /* flag "z" */
Mensajes: 22
Temas: 3
Registro en: Feb 2019
Reputación:
0
Como lo hizo chema esta perfecto
_______________________________________________
Cada día aprendiendo un poco mas, de eso se trata la vida
_______________________________________________
Mensajes: 18
Temas: 4
Registro en: Jun 2020
Reputación:
0
30/06/2020, 01:59 PM
(Última modificación: 30/06/2020, 02:07 PM por pily. Edited 1 time in total.)
Gracias a los que respondieron, poco entendí pero iré leyendo cada vez que pueda para aprender mas y muchas gracias chema.
editado : tengo otra duda xd (sera la última) si ocupo el include cs_player_models_api como sería ya que me lo recomendaron mucho por el tema del comando en consola model.
Mensajes: 811
Temas: 99
Registro en: Jun 2019
Reputación:
8
(30/06/2020, 01:59 PM)pily escribió: Gracias a los que respondieron, poco entendí pero iré leyendo cada vez que pueda para aprender mas y muchas gracias chema.
editado : tengo otra duda xd (sera la última) si ocupo el include cs_player_models_api como sería ya que me lo recomendaron mucho por el tema del comando en consola model.
Para darle el model.
Código PHP: cs_set_player_model(id, const model[])
Para removerlo.
Código PHP: cs_reset_player_model(id)
Tienes que poner el api del plugin.
Código: cs_player_models_api.amxx
tu-plugin.amxx
I dream of someday being able to have your near.
Mensajes: 18
Temas: 4
Registro en: Jun 2020
Reputación:
0
Muchisimas gracias ahora si los dejo de molestar jajja.
|